From 39f4c44e000d410b4f63ab1fcdc4b04273ff0a83 Mon Sep 17 00:00:00 2001 From: Jim Evins Date: Sat, 26 Sep 2009 22:46:39 -0400 Subject: [PATCH] Organized master branch to be top-level directory for glabels, instead of having a glabels2 sub-directory. --- glabels2/AUTHORS => AUTHORS | 0 glabels2/COPYING => COPYING | 0 glabels2/COPYING-DOCS => COPYING-DOCS | 0 .../COPYING-LIBGLABELS => COPYING-LIBGLABELS | 0 .../COPYING-TEMPLATES => COPYING-TEMPLATES | 0 ...PYING.README_FIRST => COPYING.README_FIRST | 0 glabels2/ChangeLog => ChangeLog | 0 glabels2/INSTALL => INSTALL | 0 glabels2/MESSAGE-OF-DOOM => MESSAGE-OF-DOOM | 0 glabels2/Makefile.am => Makefile.am | 0 glabels2/NEWS => NEWS | 0 glabels2/README => README | 0 glabels2/TODO => TODO | 0 glabels2/autogen.sh => autogen.sh | 0 .../barcode-0.98 => barcode-0.98}/COPYING | 0 .../barcode-0.98 => barcode-0.98}/ChangeLog | 0 .../barcode-0.98 => barcode-0.98}/INSTALL | 0 .../barcode-0.98 => barcode-0.98}/Makefile.am | 0 .../Makefile.in.dist | 0 .../barcode-0.98 => barcode-0.98}/README | 0 .../README.glabels | 0 {glabels1/barcode-0.98 => barcode-0.98}/TODO | 0 .../barcode-0.98 => barcode-0.98}/barcode.h | 0 .../barcode.spec | 0 .../bookland/bookland.py | 0 .../barcode-0.98 => barcode-0.98}/cmdline.c | 0 .../barcode-0.98 => barcode-0.98}/cmdline.h | 0 .../barcode-0.98 => barcode-0.98}/codabar.c | 0 .../barcode-0.98 => barcode-0.98}/code128.c | 0 .../barcode-0.98 => barcode-0.98}/code39.c | 0 .../barcode-0.98 => barcode-0.98}/code93.c | 0 .../compat/getopt.c | 0 .../compat/getopt.h | 0 .../barcode-0.98 => barcode-0.98}/configure | 0 .../configure.in.dist | 0 .../contrib/barcode-SVG.tar.gz | Bin .../contrib/barcode-SVG.tar.gz.README | 0 .../contrib/barcode-for-delphi.tar.gz | Bin .../contrib/barcode-for-delphi.tar.gz.README | 0 .../contrib/barcodeps-0.1.tgz | Bin .../contrib/barcodeps-0.1.tgz.README | 0 .../contrib/grab-0.0.4.tar.gz | Bin .../contrib/grab-0.0.4.tar.gz.README | 0 .../debian/README.debian | 0 .../debian/changelog | 0 .../debian/control | 0 .../debian/copyright | 0 .../barcode-0.98 => barcode-0.98}/debian/dirs | 0 .../barcode-0.98 => barcode-0.98}/debian/info | 0 .../debian/rules | 0 .../doc/Makefile.in | 0 .../barcode-0.98 => barcode-0.98}/doc/README | 0 .../doc/barcode.info | 0 .../doc/barcode.pdf | Bin .../doc/barcode.ps | 0 .../doc/barcodedoc.txt | 0 .../doc/doc.barcode | 0 .../doc/infofilter | 0 .../doc/manpager | 0 .../barcode-0.98 => barcode-0.98}/doc/mktxt | 0 .../doc/texi2html | 0 {glabels1/barcode-0.98 => barcode-0.98}/ean.c | 0 {glabels1/barcode-0.98 => barcode-0.98}/i25.c | 0 .../barcode-0.98 => barcode-0.98}/install-sh | 0 .../barcode-0.98 => barcode-0.98}/library.c | 0 .../barcode-0.98 => barcode-0.98}/main.c | 0 .../barcode-0.98 => barcode-0.98}/missing | 0 {glabels1 => barcode-0.98}/mkinstalldirs | 0 {glabels1/barcode-0.98 => barcode-0.98}/msi.c | 0 {glabels1/barcode-0.98 => barcode-0.98}/pcl.c | 0 .../barcode-0.98 => barcode-0.98}/plessey.c | 0 {glabels1/barcode-0.98 => barcode-0.98}/ps.c | 0 .../barcode-0.98 => barcode-0.98}/sample.c | 0 glabels2/configure.in => configure.in | 0 {glabels2/data => data}/Makefile.am | 0 {glabels2/data => data}/builder/Makefile.am | 0 .../builder/merge-properties-dialog.builder | 0 .../builder/object-editor.builder | 0 .../builder/prefs-dialog.builder | 0 .../print-op-dialog-custom-widget.builder | 0 .../builder/property-bar.builder | 0 .../builder/template-designer.builder | 0 .../builder/wdgt-media-select.builder | 0 {glabels2/data => data}/desktop/Makefile.am | 0 .../data => data}/desktop/glabels.desktop.in | 0 {glabels2/data => data}/man/Makefile.am | 0 {glabels2/data => data}/man/glabels.1 | 0 {glabels2/data => data}/mime/Makefile.am | 0 .../data => data}/mime/glabels.applications | 0 {glabels2/data => data}/mime/glabels.keys.in | 0 {glabels2/data => data}/mime/glabels.mime | 0 {glabels2/data => data}/mime/glabels.xml.in | 0 {glabels2/data => data}/pixmaps/Makefile.am | 0 .../data => data}/pixmaps/ex-1layout.png | Bin .../data => data}/pixmaps/ex-2layouts.png | Bin .../data => data}/pixmaps/ex-cd-size.png | Bin .../data => data}/pixmaps/ex-rect-size.png | Bin .../data => data}/pixmaps/ex-round-size.png | Bin .../pixmaps/glabels-about-logo.png | Bin .../pixmaps/glabels-application-x-glabels.png | Bin .../data => data}/pixmaps/glabels-splash.png | Bin {glabels2/data => data}/pixmaps/glabels.png | Bin {glabels2/docs => docs}/Makefile.am | 0 .../docs => docs}/libglabels/Makefile.am | 0 .../libglabels/libglabels-decl-list.txt | 0 .../libglabels/libglabels-docs.sgml | 0 .../libglabels/libglabels-overrides.txt | 0 .../libglabels/libglabels-sections.txt | 0 .../libglabels/libglabels-undocumented.txt | 0 .../docs => docs}/libglabels/libglabels.types | 0 .../libglabels/tmpl/category.sgml | 0 .../docs => docs}/libglabels/tmpl/db.sgml | 0 .../docs => docs}/libglabels/tmpl/enums.sgml | 0 .../libglabels/tmpl/libglabels-unused.sgml | 0 .../libglabels/tmpl/libglabels.sgml | 0 .../docs => docs}/libglabels/tmpl/paper.sgml | 0 .../docs => docs}/libglabels/tmpl/str.sgml | 0 .../libglabels/tmpl/template.sgml | 0 .../libglabels/tmpl/xml-category.sgml | 0 .../libglabels/tmpl/xml-paper.sgml | 0 .../libglabels/tmpl/xml-template.sgml | 0 .../docs => docs}/libglabels/tmpl/xml.sgml | 0 glabels2/glabels.spec.in => glabels.spec.in | 0 glabels1/ABOUT-NLS | 396 --- glabels1/AUTHORS | 69 - glabels1/COPYING | 340 --- glabels1/ChangeLog | 8 - glabels1/INSTALL | 182 -- glabels1/Makefile.am | 60 - glabels1/NEWS | 0 glabels1/README | 121 - glabels1/TODO | 5 - glabels1/acconfig.h | 10 - glabels1/aclocal.m4 | 1318 --------- glabels1/autogen.sh | 15 - glabels1/barcode-0.98/Makefile.in | 141 - glabels1/barcode-0.98/configure | 1708 ------------ glabels1/barcode-0.98/configure.in | 65 - glabels1/barcode-0.98/doc/barcode.info | 747 ------ glabels1/barcode-0.98/doc/barcode.pdf | Bin 160731 -> 0 bytes glabels1/barcode-0.98/doc/barcode.ps | 2378 ----------------- glabels1/barcode-0.98/doc/barcodedoc.txt | 734 ----- glabels1/config.h.in | 143 - glabels1/configure.in | 150 -- glabels1/data/predefined-labels.template | 830 ------ glabels1/doc/C/Makefile.am | 55 - glabels1/doc/C/Makefile.in | 304 --- glabels1/doc/C/glabels.sgml | 73 - glabels1/doc/C/glabels/index.html | 64 - glabels1/doc/C/glabels/ln7.html | 128 - glabels1/doc/C/topic.dat | 1 - glabels1/doc/Makefile.am | 3 - glabels1/doc/Makefile.in | 328 --- glabels1/glabels.desktop | 9 - glabels1/glabels.spec.in | 57 - glabels1/install-sh | 251 -- glabels1/intl/ChangeLog | 1086 -------- glabels1/intl/Makefile.in | 214 -- glabels1/intl/VERSION | 1 - glabels1/intl/bindtextdom.c | 203 -- glabels1/intl/cat-compat.c | 262 -- glabels1/intl/dcgettext.c | 624 ----- glabels1/intl/dgettext.c | 59 - glabels1/intl/explodename.c | 188 -- glabels1/intl/finddomain.c | 216 -- glabels1/intl/gettext.c | 70 - glabels1/intl/gettext.h | 105 - glabels1/intl/gettextP.h | 89 - glabels1/intl/hash-string.h | 59 - glabels1/intl/intl-compat.c | 76 - glabels1/intl/l10nflist.c | 411 --- glabels1/intl/libgettext.h | 182 -- glabels1/intl/linux-msg.sed | 100 - glabels1/intl/loadinfo.h | 76 - glabels1/intl/loadmsgcat.c | 222 -- glabels1/intl/localealias.c | 424 --- glabels1/intl/po2tbl.sed.in | 102 - glabels1/intl/textdomain.c | 108 - glabels1/intl/xopen-msg.sed | 104 - glabels1/macros/Makefile.am | 40 - glabels1/macros/Makefile.in | 283 -- glabels1/macros/aclocal-include.m4 | 16 - glabels1/macros/autogen.sh | 145 - glabels1/macros/compiler-flags.m4 | 109 - glabels1/macros/curses.m4 | 318 --- glabels1/macros/gnome-bonobo-check.m4 | 150 -- glabels1/macros/gnome-common.m4 | 14 - glabels1/macros/gnome-fileutils.m4 | 414 --- glabels1/macros/gnome-gettext.m4 | 336 --- glabels1/macros/gnome-ghttp-check.m4 | 14 - glabels1/macros/gnome-gnorba-check.m4 | 35 - glabels1/macros/gnome-guile-checks.m4 | 119 - glabels1/macros/gnome-libgtop-check.m4 | 182 -- glabels1/macros/gnome-objc-checks.m4 | 79 - glabels1/macros/gnome-orbit-check.m4 | 33 - glabels1/macros/gnome-print-check.m4 | 171 -- glabels1/macros/gnome-pthread-check.m4 | 16 - glabels1/macros/gnome-support.m4 | 68 - glabels1/macros/gnome-undelfs.m4 | 20 - glabels1/macros/gnome-vfs.m4 | 120 - glabels1/macros/gnome-x-checks.m4 | 80 - glabels1/macros/gnome-xml-check.m4 | 32 - glabels1/macros/gnome.m4 | 124 - glabels1/macros/linger.m4 | 28 - glabels1/macros/need-declaration.m4 | 42 - glabels1/missing | 190 -- glabels1/pixmaps/glabels-about-logo.png | Bin 31091 -> 0 bytes glabels1/pixmaps/glabels-icon.png | Bin 660 -> 0 bytes glabels1/pixmaps/glabels-logo.png | Bin 110598 -> 0 bytes glabels1/po/ChangeLog | 23 - glabels1/po/Makefile.in.in | 196 -- glabels1/po/POTFILES.in | 100 - glabels1/po/cat-id-tbl.c | 0 glabels1/po/de.po | 767 ------ glabels1/po/es.po | 704 ----- glabels1/po/fr.po | 1321 --------- glabels1/po/glabels.pot | 700 ----- glabels1/po/ja.po | 711 ----- glabels1/po/pl.po | 712 ----- glabels1/po/pt_BR.po | 715 ----- glabels1/po/ru.po | 714 ----- glabels1/po/stamp-cat-id | 1 - glabels1/po/zh_TW.Big5.po | 712 ----- glabels1/src/Makefile.am | 176 -- glabels1/src/bc.c | 201 -- glabels1/src/bc.h | 73 - glabels1/src/bc_gnubarcode.c | 239 -- glabels1/src/bc_gnubarcode.h | 32 - glabels1/src/bc_postnet.c | 150 -- glabels1/src/bc_postnet.h | 29 - glabels1/src/debug.h | 70 - glabels1/src/display.c | 1739 ------------ glabels1/src/display.h | 116 - glabels1/src/edit.c | 129 - glabels1/src/edit.h | 43 - glabels1/src/file.c | 415 --- glabels1/src/file.h | 35 - glabels1/src/glabels.c | 164 -- glabels1/src/glabels_batch.c | 152 -- glabels1/src/gnome-canvas-hacktext.h | 76 - glabels1/src/hack.c | 146 - glabels1/src/hack.h | 32 - glabels1/src/highlight.c | 1443 ---------- glabels1/src/highlight.h | 36 - glabels1/src/item.c | 449 ---- glabels1/src/item.h | 71 - glabels1/src/item_barcode.c | 656 ----- glabels1/src/item_barcode.h | 60 - glabels1/src/item_box.c | 489 ---- glabels1/src/item_box.h | 60 - glabels1/src/item_ellipse.c | 493 ---- glabels1/src/item_ellipse.h | 60 - glabels1/src/item_image.c | 612 ----- glabels1/src/item_image.h | 60 - glabels1/src/item_line.c | 481 ---- glabels1/src/item_line.h | 60 - glabels1/src/item_text.c | 780 ------ glabels1/src/item_text.h | 60 - glabels1/src/label.c | 1212 --------- glabels1/src/label.h | 151 -- glabels1/src/mdi.c | 746 ------ glabels1/src/mdi.h | 51 - glabels1/src/media_select.c | 457 ---- glabels1/src/media_select.h | 76 - glabels1/src/menu.c | 328 --- glabels1/src/menu.h | 32 - glabels1/src/merge.c | 460 ---- glabels1/src/merge.h | 94 - glabels1/src/merge_properties.c | 258 -- glabels1/src/merge_properties.h | 29 - glabels1/src/merge_text.c | 385 --- glabels1/src/merge_text.h | 35 - glabels1/src/merge_ui.c | 498 ---- glabels1/src/merge_ui.h | 106 - glabels1/src/merge_ui_text.c | 449 ---- glabels1/src/merge_ui_text.h | 101 - glabels1/src/mini_preview.c | 498 ---- glabels1/src/mini_preview.h | 76 - glabels1/src/pixmaps/Makefile.am | 32 - glabels1/src/pixmaps/arrow.xpm | 29 - glabels1/src/pixmaps/barcode.xpm | 29 - glabels1/src/pixmaps/box.xpm | 30 - glabels1/src/pixmaps/cursor_zoomin.xbm | 16 - glabels1/src/pixmaps/cursor_zoomin_mask.xbm | 16 - glabels1/src/pixmaps/cursor_zoomout.xbm | 16 - glabels1/src/pixmaps/cursor_zoomout_mask.xbm | 16 - glabels1/src/pixmaps/ellipse.xpm | 30 - glabels1/src/pixmaps/image.xpm | 42 - glabels1/src/pixmaps/line.xpm | 29 - glabels1/src/pixmaps/merge.xpm | 34 - glabels1/src/pixmaps/text.xpm | 29 - glabels1/src/pixmaps/zoom1to1.xpm | 30 - glabels1/src/pixmaps/zoomin.xpm | 38 - glabels1/src/pixmaps/zoomout.xpm | 37 - glabels1/src/prefs.c | 470 ---- glabels1/src/prefs.h | 48 - glabels1/src/print.c | 869 ------ glabels1/src/print.h | 53 - glabels1/src/print_copies.c | 387 --- glabels1/src/print_copies.h | 75 - glabels1/src/print_dialog.c | 288 -- glabels1/src/print_dialog.h | 30 - glabels1/src/print_merge.c | 324 --- glabels1/src/print_merge.h | 75 - glabels1/src/prop_bc.c | 249 -- glabels1/src/prop_bc.h | 67 - glabels1/src/prop_bc_data.c | 334 --- glabels1/src/prop_bc_data.h | 72 - glabels1/src/prop_bc_style.c | 460 ---- glabels1/src/prop_bc_style.h | 79 - glabels1/src/prop_fill.c | 215 -- glabels1/src/prop_fill.h | 62 - glabels1/src/prop_line.c | 244 -- glabels1/src/prop_line.h | 68 - glabels1/src/prop_position.c | 287 -- glabels1/src/prop_position.h | 67 - glabels1/src/prop_size.c | 459 ---- glabels1/src/prop_size.h | 75 - glabels1/src/prop_text.c | 426 --- glabels1/src/prop_text.h | 81 - glabels1/src/prop_text_entry.c | 286 -- glabels1/src/prop_text_entry.h | 67 - glabels1/src/prop_vector.c | 305 --- glabels1/src/prop_vector.h | 68 - glabels1/src/propertybox.c | 428 --- glabels1/src/propertybox.h | 74 - glabels1/src/rotate_select.c | 348 --- glabels1/src/rotate_select.h | 70 - glabels1/src/splash.c | 110 - glabels1/src/splash.h | 28 - glabels1/src/stock.c | 121 - glabels1/src/stock.h | 42 - glabels1/src/template.c | 584 ---- glabels1/src/template.h | 72 - glabels1/src/text_node.c | 225 -- glabels1/src/text_node.h | 46 - glabels1/src/tools.c | 221 -- glabels1/src/tools.h | 39 - glabels1/src/util.c | 110 - glabels1/src/util.h | 34 - glabels1/stamp-h.in | 1 - glabels2/barcode-0.98/COPYING | 339 --- glabels2/barcode-0.98/ChangeLog | 460 ---- glabels2/barcode-0.98/INSTALL | 31 - glabels2/barcode-0.98/README | 93 - glabels2/barcode-0.98/TODO | 23 - glabels2/barcode-0.98/barcode.h | 119 - glabels2/barcode-0.98/barcode.spec | 84 - glabels2/barcode-0.98/bookland/bookland.py | 884 ------ glabels2/barcode-0.98/cmdline.c | 177 -- glabels2/barcode-0.98/cmdline.h | 58 - glabels2/barcode-0.98/codabar.c | 182 -- glabels2/barcode-0.98/code128.c | 607 ----- glabels2/barcode-0.98/code39.c | 173 -- glabels2/barcode-0.98/code93.c | 213 -- glabels2/barcode-0.98/compat/getopt.c | 831 ------ glabels2/barcode-0.98/compat/getopt.h | 129 - .../barcode-0.98/contrib/barcode-SVG.tar.gz | Bin 2880 -> 0 bytes .../contrib/barcode-SVG.tar.gz.README | 24 - .../contrib/barcode-for-delphi.tar.gz | Bin 19010 -> 0 bytes .../contrib/barcode-for-delphi.tar.gz.README | 10 - .../barcode-0.98/contrib/barcodeps-0.1.tgz | Bin 2036 -> 0 bytes .../contrib/barcodeps-0.1.tgz.README | 25 - .../barcode-0.98/contrib/grab-0.0.4.tar.gz | Bin 28320 -> 0 bytes .../contrib/grab-0.0.4.tar.gz.README | 13 - glabels2/barcode-0.98/debian/README.debian | 9 - glabels2/barcode-0.98/debian/changelog | 27 - glabels2/barcode-0.98/debian/control | 14 - glabels2/barcode-0.98/debian/copyright | 8 - glabels2/barcode-0.98/debian/dirs | 3 - glabels2/barcode-0.98/debian/info | 15 - glabels2/barcode-0.98/debian/rules | 50 - glabels2/barcode-0.98/doc/Makefile.in | 135 - glabels2/barcode-0.98/doc/README | 5 - glabels2/barcode-0.98/doc/doc.barcode | 939 ------- glabels2/barcode-0.98/doc/infofilter | 16 - glabels2/barcode-0.98/doc/manpager | 120 - glabels2/barcode-0.98/doc/mktxt | 38 - glabels2/barcode-0.98/doc/texi2html | 2021 -------------- glabels2/barcode-0.98/ean.c | 774 ------ glabels2/barcode-0.98/i25.c | 164 -- glabels2/barcode-0.98/install-sh | 238 -- glabels2/barcode-0.98/library.c | 244 -- glabels2/barcode-0.98/main.c | 604 ----- glabels2/barcode-0.98/mkinstalldirs | 40 - glabels2/barcode-0.98/msi.c | 155 -- glabels2/barcode-0.98/pcl.c | 200 -- glabels2/barcode-0.98/plessey.c | 164 -- glabels2/barcode-0.98/ps.c | 272 -- glabels2/barcode-0.98/sample.c | 98 - glabels2/src/pixmaps/checkerboard.xpm | 29 - glabels2/src/pixmaps/collate.xpm | 34 - glabels2/src/pixmaps/cursor_barcode.xbm | 16 - glabels2/src/pixmaps/cursor_barcode_mask.xbm | 16 - glabels2/src/pixmaps/cursor_box.xbm | 16 - glabels2/src/pixmaps/cursor_box_mask.xbm | 16 - glabels2/src/pixmaps/cursor_ellipse.xbm | 16 - glabels2/src/pixmaps/cursor_ellipse_mask.xbm | 16 - glabels2/src/pixmaps/cursor_image.xbm | 16 - glabels2/src/pixmaps/cursor_image_mask.xbm | 16 - glabels2/src/pixmaps/cursor_line.xbm | 16 - glabels2/src/pixmaps/cursor_line_mask.xbm | 16 - glabels2/src/pixmaps/cursor_text.xbm | 16 - glabels2/src/pixmaps/cursor_text_mask.xbm | 16 - glabels2/src/pixmaps/nocollate.xpm | 34 - glabels2/gtk-doc.make => gtk-doc.make | 0 .../C/figures/glabels-template-cd.png | Bin .../C/figures/glabels-template-label.png | Bin .../C/figures/glabels-template-layout.png | Bin .../C/figures/main-window-empty.png | Bin .../help => help}/C/figures/merge-ex1-1.png | Bin .../help => help}/C/figures/merge-ex1-2.png | Bin .../help => help}/C/figures/merge-ex1-3.png | Bin .../help => help}/C/figures/merge-ex1-4.png | Bin .../help => help}/C/figures/merge-ex2-1.png | Bin .../help => help}/C/figures/merge-ex2-2.png | Bin .../help => help}/C/figures/merge-ex2-3.png | Bin .../help => help}/C/figures/merge-ex2-4.png | Bin .../C/figures/object-editor-sidebar.png | Bin .../help => help}/C/figures/print-copies.png | Bin .../help => help}/C/figures/print-merge.png | Bin {glabels2/help => help}/C/glabels.xml | 0 {glabels2/help => help}/C/legal.xml | 0 {glabels2/help => help}/Makefile.am | 0 {glabels2/help => help}/de/de.po | 0 .../de/figures/main-window-empty.png | Bin .../help => help}/de/figures/merge-ex1-1.png | Bin .../help => help}/de/figures/merge-ex1-2.png | Bin .../help => help}/de/figures/merge-ex1-3.png | Bin .../help => help}/de/figures/merge-ex1-4.png | Bin .../help => help}/de/figures/merge-ex2-1.png | Bin .../help => help}/de/figures/merge-ex2-2.png | Bin .../help => help}/de/figures/merge-ex2-3.png | Bin .../help => help}/de/figures/merge-ex2-4.png | Bin .../de/figures/object-editor-sidebar.png | Bin .../help => help}/de/figures/print-copies.png | Bin .../help => help}/de/figures/print-merge.png | Bin {glabels2/help => help}/glabels.omf.in | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/BUGS | 0 .../CHANGELOG | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/CREDITS | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/INSTALL | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/LICENSE | 0 .../Makefile.am | 0 .../Makefile.dist | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/README | 0 .../README.glabels | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/TODO | 0 .../iec16022.1 | 0 .../iec16022.c | 0 .../iec16022ecc200.c | 0 .../iec16022ecc200.h | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/image.c | 0 .../iec16022-0.2.1 => iec16022-0.2.1}/image.h | 0 .../reedsol.c | 0 .../reedsol.h | 0 .../test/testsuite-example.bin | 0 .../test/testsuite-example.eps | 0 .../test/testsuite-example.hex | 0 .../test/testsuite-example.png | Bin .../test/testsuite-example.text | 0 .../test/testsuite.sh | 0 .../libglabels => libglabels}/Makefile.am | 0 .../libglabels => libglabels}/category.c | 0 .../libglabels => libglabels}/category.h | 0 {glabels2/libglabels => libglabels}/db.c | 0 {glabels2/libglabels => libglabels}/db.h | 0 {glabels2/libglabels => libglabels}/enums.h | 0 .../libglabels-private.h | 0 .../libglabels => libglabels}/libglabels.h | 0 .../libglabels.pc.in | 0 {glabels2/libglabels => libglabels}/paper.c | 0 {glabels2/libglabels => libglabels}/paper.h | 0 {glabels2/libglabels => libglabels}/str.c | 0 {glabels2/libglabels => libglabels}/str.h | 0 .../libglabels => libglabels}/template.c | 0 .../libglabels => libglabels}/template.h | 0 .../libglabels => libglabels}/xml-category.c | 0 .../libglabels => libglabels}/xml-category.h | 0 .../libglabels => libglabels}/xml-paper.c | 0 .../libglabels => libglabels}/xml-paper.h | 0 .../libglabels => libglabels}/xml-template.c | 0 .../libglabels => libglabels}/xml-template.h | 0 {glabels2/libglabels => libglabels}/xml.c | 0 {glabels2/libglabels => libglabels}/xml.h | 0 {glabels2/po => po}/LINGUAS | 0 {glabels2/po => po}/POTFILES.in | 0 {glabels2/po => po}/ca.po | 0 {glabels2/po => po}/cs.po | 0 {glabels2/po => po}/de.po | 0 {glabels2/po => po}/eo.po | 0 {glabels2/po => po}/es.po | 0 {glabels2/po => po}/fr.po | 0 {glabels2/po => po}/it.po | 0 {glabels2/po => po}/ja.po | 0 {glabels2/po => po}/ko.po | 0 {glabels2/po => po}/pl.po | 0 {glabels2/po => po}/pt_BR.po | 0 {glabels2/po => po}/ru.po | 0 {glabels2/po => po}/zh_CN.po | 0 {glabels2/po => po}/zh_TW.Big5.po | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/COPYING | 0 .../ChangeLog | 0 .../Doxyfile | 0 .../Makefile.am | 0 .../Makefile.am.dist | 0 .../Makefile.in.dist | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/NEWS | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/README | 0 .../README.glabels | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/TODO | 0 .../acinclude.m4 | 0 .../aclocal.m4 | 0 .../autogen.sh | 0 .../bitstream.c | 0 .../bitstream.h | 0 .../config.h.in | 0 .../configure | 0 .../configure.ac.dist | 0 .../libqrencode.pc.in | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/mask.c | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/mask.h | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/qrenc.c | 0 .../qrencode.1.in | 0 .../qrencode.c | 0 .../qrencode.h | 0 .../qrencode.spec | 0 .../qrencode.spec.in | 0 .../qrencode_inner.h | 0 .../qrinput.c | 0 .../qrinput.h | 0 .../qrspec.c | 0 .../qrspec.h | 0 .../rscode.c | 0 .../rscode.h | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/split.c | 0 .../qrencode-3.1.0 => qrencode-3.1.0}/split.h | 0 .../tests/Makefile.am | 0 .../tests/Makefile.in | 0 .../tests/common.h | 0 .../tests/create_frame_pattern.c | 0 .../tests/frame | Bin .../tests/prof_qrencode.c | 0 .../tests/test_all.sh | 0 .../tests/test_bitstream.c | 0 .../tests/test_estimatebit.c | 0 .../tests/test_monkey.c | 0 .../tests/test_qrencode.c | 0 .../tests/test_qrinput.c | 0 .../tests/test_qrspec.c | 0 .../tests/test_rs.c | 0 .../tests/test_split.c | 0 .../tests/view_qrcode.c | 0 .../use/compile | 0 .../use/config.guess | 0 .../use/config.sub | 0 .../use/depcomp | 0 .../use/install-sh | 0 .../use/ltmain.sh | 0 .../use/missing | 0 {glabels2/src => src}/Makefile.am | 0 {glabels2/src => src}/bc-gnubarcode.c | 0 {glabels2/src => src}/bc-gnubarcode.h | 0 {glabels2/src => src}/bc-iec16022.c | 0 {glabels2/src => src}/bc-iec16022.h | 0 {glabels2/src => src}/bc-iec18004.c | 0 {glabels2/src => src}/bc-iec18004.h | 0 {glabels2/src => src}/bc-postnet.c | 0 {glabels2/src => src}/bc-postnet.h | 0 {glabels2/src => src}/bc.c | 0 {glabels2/src => src}/bc.h | 0 {glabels2/src => src}/builder-util.c | 0 {glabels2/src => src}/builder-util.h | 0 {glabels2/src => src}/cairo-ellipse-path.c | 0 {glabels2/src => src}/cairo-ellipse-path.h | 0 {glabels2/src => src}/cairo-label-path.c | 0 {glabels2/src => src}/cairo-label-path.h | 0 {glabels2/src => src}/cairo-markup-path.c | 0 {glabels2/src => src}/cairo-markup-path.h | 0 {glabels2/src => src}/color-combo-button.c | 0 {glabels2/src => src}/color-combo-button.h | 0 .../src => src}/color-combo-color-menu-item.c | 0 .../src => src}/color-combo-color-menu-item.h | 0 {glabels2/src => src}/color-combo-history.c | 0 {glabels2/src => src}/color-combo-history.h | 0 {glabels2/src => src}/color-combo-menu.c | 0 {glabels2/src => src}/color-combo-menu.h | 0 {glabels2/src => src}/color-combo.c | 0 {glabels2/src => src}/color-combo.h | 0 {glabels2/src => src}/color-swatch.c | 0 {glabels2/src => src}/color-swatch.h | 0 {glabels2/src => src}/color.c | 0 {glabels2/src => src}/color.h | 0 {glabels2/src => src}/combo-util.c | 0 {glabels2/src => src}/combo-util.h | 0 .../src => src}/critical-error-handler.c | 0 .../src => src}/critical-error-handler.h | 0 {glabels2/src => src}/debug.c | 0 {glabels2/src => src}/debug.h | 0 {glabels2/src => src}/file-util.c | 0 {glabels2/src => src}/file-util.h | 0 {glabels2/src => src}/file.c | 0 {glabels2/src => src}/file.h | 0 {glabels2/src => src}/font-combo-menu-item.c | 0 {glabels2/src => src}/font-combo-menu-item.h | 0 {glabels2/src => src}/font-combo-menu.c | 0 {glabels2/src => src}/font-combo-menu.h | 0 {glabels2/src => src}/font-combo.c | 0 {glabels2/src => src}/font-combo.h | 0 {glabels2/src => src}/font-sample.c | 0 {glabels2/src => src}/font-sample.h | 0 {glabels2/src => src}/font-util.c | 0 {glabels2/src => src}/font-util.h | 0 {glabels2/src => src}/glabels-batch.c | 0 {glabels2/src => src}/glabels.c | 0 {glabels2/src => src}/hig.h | 0 {glabels2/src => src}/label-barcode.c | 0 {glabels2/src => src}/label-barcode.h | 0 {glabels2/src => src}/label-box.c | 0 {glabels2/src => src}/label-box.h | 0 {glabels2/src => src}/label-ellipse.c | 0 {glabels2/src => src}/label-ellipse.h | 0 {glabels2/src => src}/label-image.c | 0 {glabels2/src => src}/label-image.h | 0 {glabels2/src => src}/label-line.c | 0 {glabels2/src => src}/label-line.h | 0 {glabels2/src => src}/label-object.c | 0 {glabels2/src => src}/label-object.h | 0 {glabels2/src => src}/label-text.c | 0 {glabels2/src => src}/label-text.h | 0 {glabels2/src => src}/label.c | 0 {glabels2/src => src}/label.h | 0 {glabels2/src => src}/marshal.list | 0 {glabels2/src => src}/merge-evolution.c | 0 {glabels2/src => src}/merge-evolution.h | 0 {glabels2/src => src}/merge-init.c | 0 {glabels2/src => src}/merge-init.h | 0 .../src => src}/merge-properties-dialog.c | 0 .../src => src}/merge-properties-dialog.h | 0 {glabels2/src => src}/merge-text.c | 0 {glabels2/src => src}/merge-text.h | 0 {glabels2/src => src}/merge-vcard.c | 0 {glabels2/src => src}/merge-vcard.h | 0 {glabels2/src => src}/merge.c | 0 {glabels2/src => src}/merge.h | 0 {glabels2/src => src}/mini-label-preview.c | 0 {glabels2/src => src}/mini-label-preview.h | 0 .../src => src}/mini-preview-pixbuf-cache.c | 0 .../src => src}/mini-preview-pixbuf-cache.h | 0 {glabels2/src => src}/mini-preview-pixbuf.c | 0 {glabels2/src => src}/mini-preview-pixbuf.h | 0 {glabels2/src => src}/mini-preview.c | 0 {glabels2/src => src}/mini-preview.h | 0 {glabels2/src => src}/new-label-dialog.c | 0 {glabels2/src => src}/new-label-dialog.h | 0 {glabels2/src => src}/object-editor-bc-page.c | 0 .../src => src}/object-editor-data-page.c | 0 .../src => src}/object-editor-edit-page.c | 0 .../src => src}/object-editor-fill-page.c | 0 .../src => src}/object-editor-image-page.c | 0 .../src => src}/object-editor-line-page.c | 0 .../src => src}/object-editor-lsize-page.c | 0 .../src => src}/object-editor-position-page.c | 0 {glabels2/src => src}/object-editor-private.h | 0 .../src => src}/object-editor-shadow-page.c | 0 .../src => src}/object-editor-size-page.c | 0 .../src => src}/object-editor-text-page.c | 0 {glabels2/src => src}/object-editor.c | 0 {glabels2/src => src}/object-editor.h | 0 {glabels2/src => src}/pixbuf-cache.c | 0 {glabels2/src => src}/pixbuf-cache.h | 0 {glabels2/src => src}/pixmaps/Makefile.am | 0 .../src => src}/pixmaps/checkerboard.xpm | 0 {glabels1/src => src}/pixmaps/collate.xpm | 0 .../src => src}/pixmaps/cursor_barcode.xbm | 0 .../pixmaps/cursor_barcode_mask.xbm | 0 {glabels1/src => src}/pixmaps/cursor_box.xbm | 0 .../src => src}/pixmaps/cursor_box_mask.xbm | 0 .../src => src}/pixmaps/cursor_ellipse.xbm | 0 .../pixmaps/cursor_ellipse_mask.xbm | 0 .../src => src}/pixmaps/cursor_image.xbm | 0 .../src => src}/pixmaps/cursor_image_mask.xbm | 0 {glabels1/src => src}/pixmaps/cursor_line.xbm | 0 .../src => src}/pixmaps/cursor_line_mask.xbm | 0 {glabels1/src => src}/pixmaps/cursor_text.xbm | 0 .../src => src}/pixmaps/cursor_text_mask.xbm | 0 {glabels1/src => src}/pixmaps/nocollate.xpm | 0 {glabels2/src => src}/prefs-dialog.c | 0 {glabels2/src => src}/prefs-dialog.h | 0 {glabels2/src => src}/prefs-model.c | 0 {glabels2/src => src}/prefs-model.h | 0 {glabels2/src => src}/prefs.c | 0 {glabels2/src => src}/prefs.h | 0 {glabels2/src => src}/print-op-dialog.c | 0 {glabels2/src => src}/print-op-dialog.h | 0 {glabels2/src => src}/print-op.c | 0 {glabels2/src => src}/print-op.h | 0 {glabels2/src => src}/print.c | 0 {glabels2/src => src}/print.h | 0 {glabels2/src => src}/recent.c | 0 {glabels2/src => src}/recent.h | 0 {glabels2/src => src}/rotate-label-button.c | 0 {glabels2/src => src}/rotate-label-button.h | 0 .../src => src}/stock-pixmaps/Makefile.am | 0 .../stock-pixmaps/stock_align_bottom_16.png | Bin .../stock-pixmaps/stock_align_hcenter_16.png | Bin .../stock-pixmaps/stock_align_left_16.png | Bin .../stock-pixmaps/stock_align_right_16.png | Bin .../stock-pixmaps/stock_align_top_16.png | Bin .../stock-pixmaps/stock_align_vcenter_16.png | Bin .../stock-pixmaps/stock_arrow_16.png | Bin .../stock-pixmaps/stock_arrow_24.png | Bin .../stock-pixmaps/stock_barcode_16.png | Bin .../stock-pixmaps/stock_barcode_24.png | Bin .../stock-pixmaps/stock_box_16.png | Bin .../stock-pixmaps/stock_box_24.png | Bin .../stock-pixmaps/stock_bucket_fill_16.png | Bin .../stock-pixmaps/stock_bucket_fill_24.png | Bin .../stock-pixmaps/stock_center_horiz_16.png | Bin .../stock-pixmaps/stock_center_vert_16.png | Bin .../stock-pixmaps/stock_ellipse_16.png | Bin .../stock-pixmaps/stock_ellipse_24.png | Bin .../stock-pixmaps/stock_flip_horiz_16.png | Bin .../stock-pixmaps/stock_flip_vert_16.png | Bin .../stock-pixmaps/stock_hchain_24.png | Bin .../stock-pixmaps/stock_hchain_broken_24.png | Bin .../stock-pixmaps/stock_image_16.png | Bin .../stock-pixmaps/stock_image_24.png | Bin .../stock-pixmaps/stock_line_16.png | Bin .../stock-pixmaps/stock_line_24.png | Bin .../stock-pixmaps/stock_merge_16.png | Bin .../stock-pixmaps/stock_merge_24.png | Bin .../stock-pixmaps/stock_order_bottom_16.png | Bin .../stock-pixmaps/stock_order_top_16.png | Bin .../stock-pixmaps/stock_pencil_16.png | Bin .../stock-pixmaps/stock_pencil_24.png | Bin .../stock-pixmaps/stock_properties_16.png | Bin .../stock-pixmaps/stock_properties_24.png | Bin .../stock-pixmaps/stock_rotate_left_16.png | Bin .../stock-pixmaps/stock_rotate_right_16.png | Bin .../stock-pixmaps/stock_text_16.png | Bin .../stock-pixmaps/stock_text_24.png | Bin .../stock-pixmaps/stock_vchain_24.png | Bin .../stock-pixmaps/stock_vchain_broken_24.png | Bin {glabels2/src => src}/stock.c | 0 {glabels2/src => src}/stock.h | 0 {glabels2/src => src}/str-util.c | 0 {glabels2/src => src}/str-util.h | 0 {glabels2/src => src}/template-designer.c | 0 {glabels2/src => src}/template-designer.h | 0 {glabels2/src => src}/text-node.c | 0 {glabels2/src => src}/text-node.h | 0 {glabels2/src => src}/ui-commands.c | 0 {glabels2/src => src}/ui-commands.h | 0 {glabels2/src => src}/ui-property-bar.c | 0 {glabels2/src => src}/ui-property-bar.h | 0 {glabels2/src => src}/ui-sidebar.c | 0 {glabels2/src => src}/ui-sidebar.h | 0 {glabels2/src => src}/ui-util.c | 0 {glabels2/src => src}/ui-util.h | 0 {glabels2/src => src}/ui.c | 0 {glabels2/src => src}/ui.h | 0 {glabels2/src => src}/view-barcode.c | 0 {glabels2/src => src}/view-barcode.h | 0 {glabels2/src => src}/view-box.c | 0 {glabels2/src => src}/view-box.h | 0 {glabels2/src => src}/view-ellipse.c | 0 {glabels2/src => src}/view-ellipse.h | 0 {glabels2/src => src}/view-image.c | 0 {glabels2/src => src}/view-image.h | 0 {glabels2/src => src}/view-line.c | 0 {glabels2/src => src}/view-line.h | 0 {glabels2/src => src}/view-object.c | 0 {glabels2/src => src}/view-object.h | 0 {glabels2/src => src}/view-text.c | 0 {glabels2/src => src}/view-text.h | 0 {glabels2/src => src}/view.c | 0 {glabels2/src => src}/view.h | 0 {glabels2/src => src}/warning-handler.c | 0 {glabels2/src => src}/warning-handler.h | 0 {glabels2/src => src}/wdgt-chain-button.c | 0 {glabels2/src => src}/wdgt-chain-button.h | 0 {glabels2/src => src}/wdgt-media-select.c | 0 {glabels2/src => src}/wdgt-media-select.h | 0 {glabels2/src => src}/wdgt-merge-menu.c | 0 {glabels2/src => src}/wdgt-merge-menu.h | 0 {glabels2/src => src}/window.c | 0 {glabels2/src => src}/window.h | 0 {glabels2/src => src}/xml-label-04.c | 0 {glabels2/src => src}/xml-label-04.h | 0 {glabels2/src => src}/xml-label.c | 0 {glabels2/src => src}/xml-label.h | 0 {glabels2/templates => templates}/Makefile.am | 0 .../avery-iso-templates.xml | 0 .../avery-other-templates.xml | 0 .../avery-us-templates.xml | 0 .../brother-other-templates.xml | 0 .../templates => templates}/categories.xml | 0 .../dymo-other-templates.xml | 0 .../templates => templates}/glabels-2.2.dtd | 0 .../misc-iso-templates.xml | 0 .../misc-other-templates.xml | 0 .../misc-us-templates.xml | 0 .../templates => templates}/paper-sizes.xml | 0 .../zweckform-iso-templates.xml | 0 web/common_php.inc | 255 -- web/contact/index.php | 87 - web/css/glabels.css | 388 --- web/doc/glabels-2.0.dtd.txt | 329 --- web/doc/glabels-2.2.dtd.txt | 380 --- web/doc/index.php | 38 - web/doc/install-src/index.php | 64 - web/doc/templates-2.0/glabels-template-cd.png | Bin 9930 -> 0 bytes .../templates-2.0/glabels-template-label.png | Bin 3115 -> 0 bytes .../templates-2.0/glabels-template-layout.png | Bin 6012 -> 0 bytes web/doc/templates-2.0/index.php | 291 -- web/doc/templates-2.2/glabels-template-cd.png | Bin 9930 -> 0 bytes .../templates-2.2/glabels-template-label.png | Bin 3115 -> 0 bytes .../templates-2.2/glabels-template-layout.png | Bin 6012 -> 0 bytes web/doc/templates-2.2/index.php | 328 --- web/download/index.php | 127 - web/faq/index.php | 123 - web/faq/q1.3-output.png | Bin 20139 -> 0 bytes web/faq/q1.3-screenshot.png | Bin 54708 -> 0 bytes web/images/button-bg.png | Bin 226 -> 0 bytes web/images/corner-bl.png | Bin 345 -> 0 bytes web/images/corner-br.png | Bin 347 -> 0 bytes web/images/corner-tl.png | Bin 336 -> 0 bytes web/images/corner-tr.png | Bin 373 -> 0 bytes web/images/glabels-title-140.png | Bin 7734 -> 0 bytes web/images/pixel-null.png | Bin 138 -> 0 bytes web/index.php | 467 ---- web/links/index.php | 64 - web/news/index.php | 1083 -------- .../191-screenshot-main-grid-thumb.png | Bin 22745 -> 0 bytes web/screenshots/191-screenshot-main-grid.png | Bin 76962 -> 0 bytes web/screenshots/191-screenshot-main-thumb.png | Bin 17362 -> 0 bytes web/screenshots/191-screenshot-main.png | Bin 73251 -> 0 bytes web/screenshots/191-screenshot-new-thumb.png | Bin 3957 -> 0 bytes web/screenshots/191-screenshot-new.png | Bin 21331 -> 0 bytes .../191-screenshot-print-merge-thumb.png | Bin 4489 -> 0 bytes .../191-screenshot-print-merge.png | Bin 19833 -> 0 bytes .../191-screenshot-print-simple-thumb.png | Bin 4074 -> 0 bytes .../191-screenshot-print-simple.png | Bin 18144 -> 0 bytes web/screenshots/192-screenshot-thumb.png | Bin 18687 -> 0 bytes web/screenshots/192-screenshot.png | Bin 106357 -> 0 bytes web/screenshots/193-screenshot-main-thumb.png | Bin 21705 -> 0 bytes web/screenshots/193-screenshot-main.png | Bin 144995 -> 0 bytes web/screenshots/193-screenshot-new-thumb.png | Bin 4919 -> 0 bytes web/screenshots/193-screenshot-new.png | Bin 23331 -> 0 bytes .../193-screenshot-preview-thumb.png | Bin 16462 -> 0 bytes web/screenshots/193-screenshot-preview.png | Bin 94642 -> 0 bytes .../193-screenshot-print-thumb.png | Bin 5164 -> 0 bytes web/screenshots/193-screenshot-print.png | Bin 22819 -> 0 bytes web/screenshots/220-screenshot-main-thumb.png | Bin 16406 -> 0 bytes web/screenshots/220-screenshot-main.png | Bin 97493 -> 0 bytes web/screenshots/220-screenshot-new-thumb.png | Bin 9904 -> 0 bytes web/screenshots/220-screenshot-new.png | Bin 43649 -> 0 bytes .../220-screenshot-preview-thumb.png | Bin 14340 -> 0 bytes web/screenshots/220-screenshot-preview.png | Bin 104274 -> 0 bytes .../220-screenshot-print-thumb.png | Bin 6266 -> 0 bytes web/screenshots/220-screenshot-print.png | Bin 26905 -> 0 bytes web/screenshots/glabels1-screenshot-thumb.jpg | Bin 13209 -> 0 bytes web/screenshots/glabels1-screenshot.jpg | Bin 170001 -> 0 bytes web/screenshots/glabels1-screenshot.png | Bin 382396 -> 0 bytes web/screenshots/index.php | 90 - web/source/glabels-0.1.0.tar.gz | Bin 198369 -> 0 bytes web/source/glabels-0.1.1.tar.gz | Bin 204341 -> 0 bytes web/source/glabels-0.1.2.tar.gz | Bin 207515 -> 0 bytes web/source/glabels-0.1.3.tar.gz | Bin 474123 -> 0 bytes web/source/glabels-0.1.4.tar.gz | Bin 475594 -> 0 bytes web/source/glabels-0.1.5.tar.gz | Bin 477738 -> 0 bytes web/source/glabels-0.2.0.tar.gz | Bin 484994 -> 0 bytes web/source/glabels-0.2.1.tar.gz | Bin 483041 -> 0 bytes web/source/glabels-0.2.2.tar.gz | Bin 484885 -> 0 bytes web/source/glabels-0.2.3.tar.gz | Bin 489546 -> 0 bytes web/source/glabels-0.2.4.tar.gz | Bin 496158 -> 0 bytes web/source/glabels-0.3.0.tar.gz | Bin 516759 -> 0 bytes web/source/glabels-0.3.1.tar.gz | Bin 519788 -> 0 bytes web/source/glabels-0.3.2.tar.gz | Bin 519625 -> 0 bytes web/source/glabels-0.3.3.tar.gz | Bin 524224 -> 0 bytes web/source/glabels-0.3.4.tar.gz | Bin 531232 -> 0 bytes web/source/glabels-0.4.0.tar.gz | Bin 550686 -> 0 bytes web/source/glabels-0.4.1.tar.gz | Bin 555949 -> 0 bytes web/source/glabels-0.4.2.tar.gz | Bin 560933 -> 0 bytes web/source/glabels-0.4.3.tar.gz | Bin 652492 -> 0 bytes web/source/glabels-0.4.4.tar.gz | Bin 801876 -> 0 bytes web/source/glabels-0.4.5.tar.gz | Bin 773832 -> 0 bytes web/source/glabels-0.4.6.tar.gz | Bin 774339 -> 0 bytes web/source/glabels-1.89.0.tar.gz | Bin 818264 -> 0 bytes web/source/glabels-1.89.1.tar.gz | Bin 836383 -> 0 bytes web/source/glabels-1.89.2.tar.gz | Bin 842503 -> 0 bytes web/source/glabels-1.90.0.tar.gz | Bin 826287 -> 0 bytes web/source/glabels-1.91.0.tar.gz | Bin 910764 -> 0 bytes web/source/glabels-1.91.1.tar.gz | Bin 928827 -> 0 bytes web/source/glabels-1.92.0.tar.gz | Bin 1162981 -> 0 bytes web/source/glabels-1.92.1.tar.gz | Bin 1196391 -> 0 bytes web/source/glabels-1.92.2.tar.gz | Bin 1196408 -> 0 bytes web/source/glabels-1.92.3.tar.gz | Bin 1195890 -> 0 bytes web/source/glabels-1.93.0.tar.gz | Bin 1207586 -> 0 bytes web/source/glabels-1.93.1.tar.gz | Bin 1317158 -> 0 bytes web/source/glabels-1.93.2.tar.gz | Bin 1356614 -> 0 bytes web/source/glabels-1.93.3.tar.gz | Bin 1394894 -> 0 bytes web/tango-icons/applications-development.png | Bin 5532 -> 0 bytes web/tango-icons/applications-internet.png | Bin 7048 -> 0 bytes web/tango-icons/dialog-information.png | Bin 5025 -> 0 bytes web/tango-icons/emblem-photos.png | Bin 4253 -> 0 bytes web/tango-icons/help-browser.png | Bin 5207 -> 0 bytes web/tango-icons/internet-news-reader.png | Bin 2612 -> 0 bytes web/tango-icons/package-x-generic.png | Bin 2753 -> 0 bytes web/tango-icons/system-users.png | Bin 5145 -> 0 bytes 911 files changed, 66984 deletions(-) rename glabels2/AUTHORS => AUTHORS (100%) rename glabels2/COPYING => COPYING (100%) rename glabels2/COPYING-DOCS => COPYING-DOCS (100%) rename glabels2/COPYING-LIBGLABELS => COPYING-LIBGLABELS (100%) rename glabels2/COPYING-TEMPLATES => COPYING-TEMPLATES (100%) rename glabels2/COPYING.README_FIRST => COPYING.README_FIRST (100%) rename glabels2/ChangeLog => ChangeLog (100%) rename glabels2/INSTALL => INSTALL (100%) rename glabels2/MESSAGE-OF-DOOM => MESSAGE-OF-DOOM (100%) rename glabels2/Makefile.am => Makefile.am (100%) rename glabels2/NEWS => NEWS (100%) rename glabels2/README => README (100%) rename glabels2/TODO => TODO (100%) rename glabels2/autogen.sh => autogen.sh (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/COPYING (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/ChangeLog (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/INSTALL (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/Makefile.am (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/Makefile.in.dist (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/README (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/README.glabels (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/TODO (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/barcode.h (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/barcode.spec (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/bookland/bookland.py (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/cmdline.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/cmdline.h (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/codabar.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/code128.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/code39.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/code93.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/compat/getopt.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/compat/getopt.h (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/configure (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/configure.in.dist (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/barcode-SVG.tar.gz (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/barcode-SVG.tar.gz.README (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/barcode-for-delphi.tar.gz (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/barcode-for-delphi.tar.gz.README (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/barcodeps-0.1.tgz (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/barcodeps-0.1.tgz.README (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/grab-0.0.4.tar.gz (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/contrib/grab-0.0.4.tar.gz.README (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/README.debian (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/changelog (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/control (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/copyright (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/dirs (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/info (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/debian/rules (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/Makefile.in (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/README (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/doc/barcode.info (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/doc/barcode.pdf (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/doc/barcode.ps (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/doc/barcodedoc.txt (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/doc.barcode (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/infofilter (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/manpager (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/mktxt (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/doc/texi2html (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/ean.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/i25.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/install-sh (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/library.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/main.c (100%) rename {glabels2/barcode-0.98 => barcode-0.98}/missing (100%) rename {glabels1 => barcode-0.98}/mkinstalldirs (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/msi.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/pcl.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/plessey.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/ps.c (100%) rename {glabels1/barcode-0.98 => barcode-0.98}/sample.c (100%) rename glabels2/configure.in => configure.in (100%) rename {glabels2/data => data}/Makefile.am (100%) rename {glabels2/data => data}/builder/Makefile.am (100%) rename {glabels2/data => data}/builder/merge-properties-dialog.builder (100%) rename {glabels2/data => data}/builder/object-editor.builder (100%) rename {glabels2/data => data}/builder/prefs-dialog.builder (100%) rename {glabels2/data => data}/builder/print-op-dialog-custom-widget.builder (100%) rename {glabels2/data => data}/builder/property-bar.builder (100%) rename {glabels2/data => data}/builder/template-designer.builder (100%) rename {glabels2/data => data}/builder/wdgt-media-select.builder (100%) rename {glabels2/data => data}/desktop/Makefile.am (100%) rename {glabels2/data => data}/desktop/glabels.desktop.in (100%) rename {glabels2/data => data}/man/Makefile.am (100%) rename {glabels2/data => data}/man/glabels.1 (100%) rename {glabels2/data => data}/mime/Makefile.am (100%) rename {glabels2/data => data}/mime/glabels.applications (100%) rename {glabels2/data => data}/mime/glabels.keys.in (100%) rename {glabels2/data => data}/mime/glabels.mime (100%) rename {glabels2/data => data}/mime/glabels.xml.in (100%) rename {glabels2/data => data}/pixmaps/Makefile.am (100%) rename {glabels2/data => data}/pixmaps/ex-1layout.png (100%) rename {glabels2/data => data}/pixmaps/ex-2layouts.png (100%) rename {glabels2/data => data}/pixmaps/ex-cd-size.png (100%) rename {glabels2/data => data}/pixmaps/ex-rect-size.png (100%) rename {glabels2/data => data}/pixmaps/ex-round-size.png (100%) rename {glabels2/data => data}/pixmaps/glabels-about-logo.png (100%) rename {glabels2/data => data}/pixmaps/glabels-application-x-glabels.png (100%) rename {glabels2/data => data}/pixmaps/glabels-splash.png (100%) rename {glabels2/data => data}/pixmaps/glabels.png (100%) rename {glabels2/docs => docs}/Makefile.am (100%) rename {glabels2/docs => docs}/libglabels/Makefile.am (100%) rename {glabels2/docs => docs}/libglabels/libglabels-decl-list.txt (100%) rename {glabels2/docs => docs}/libglabels/libglabels-docs.sgml (100%) rename {glabels2/docs => docs}/libglabels/libglabels-overrides.txt (100%) rename {glabels2/docs => docs}/libglabels/libglabels-sections.txt (100%) rename {glabels2/docs => docs}/libglabels/libglabels-undocumented.txt (100%) rename {glabels2/docs => docs}/libglabels/libglabels.types (100%) rename {glabels2/docs => docs}/libglabels/tmpl/category.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/db.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/enums.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/libglabels-unused.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/libglabels.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/paper.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/str.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/template.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/xml-category.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/xml-paper.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/xml-template.sgml (100%) rename {glabels2/docs => docs}/libglabels/tmpl/xml.sgml (100%) rename glabels2/glabels.spec.in => glabels.spec.in (100%) delete mode 100644 glabels1/ABOUT-NLS delete mode 100644 glabels1/AUTHORS delete mode 100644 glabels1/COPYING delete mode 100644 glabels1/ChangeLog delete mode 100644 glabels1/INSTALL delete mode 100644 glabels1/Makefile.am delete mode 100644 glabels1/NEWS delete mode 100644 glabels1/README delete mode 100644 glabels1/TODO delete mode 100644 glabels1/acconfig.h delete mode 100644 glabels1/aclocal.m4 delete mode 100755 glabels1/autogen.sh delete mode 100644 glabels1/barcode-0.98/Makefile.in delete mode 100755 glabels1/barcode-0.98/configure delete mode 100644 glabels1/barcode-0.98/configure.in delete mode 100644 glabels1/barcode-0.98/doc/barcode.info delete mode 100644 glabels1/barcode-0.98/doc/barcode.pdf delete mode 100644 glabels1/barcode-0.98/doc/barcode.ps delete mode 100644 glabels1/barcode-0.98/doc/barcodedoc.txt delete mode 100644 glabels1/config.h.in delete mode 100644 glabels1/configure.in delete mode 100644 glabels1/data/predefined-labels.template delete mode 100644 glabels1/doc/C/Makefile.am delete mode 100644 glabels1/doc/C/Makefile.in delete mode 100644 glabels1/doc/C/glabels.sgml delete mode 100644 glabels1/doc/C/glabels/index.html delete mode 100644 glabels1/doc/C/glabels/ln7.html delete mode 100644 glabels1/doc/C/topic.dat delete mode 100644 glabels1/doc/Makefile.am delete mode 100644 glabels1/doc/Makefile.in delete mode 100644 glabels1/glabels.desktop delete mode 100644 glabels1/glabels.spec.in delete mode 100755 glabels1/install-sh delete mode 100644 glabels1/intl/ChangeLog delete mode 100644 glabels1/intl/Makefile.in delete mode 100644 glabels1/intl/VERSION delete mode 100644 glabels1/intl/bindtextdom.c delete mode 100644 glabels1/intl/cat-compat.c delete mode 100644 glabels1/intl/dcgettext.c delete mode 100644 glabels1/intl/dgettext.c delete mode 100644 glabels1/intl/explodename.c delete mode 100644 glabels1/intl/finddomain.c delete mode 100644 glabels1/intl/gettext.c delete mode 100644 glabels1/intl/gettext.h delete mode 100644 glabels1/intl/gettextP.h delete mode 100644 glabels1/intl/hash-string.h delete mode 100644 glabels1/intl/intl-compat.c delete mode 100644 glabels1/intl/l10nflist.c delete mode 100644 glabels1/intl/libgettext.h delete mode 100644 glabels1/intl/linux-msg.sed delete mode 100644 glabels1/intl/loadinfo.h delete mode 100644 glabels1/intl/loadmsgcat.c delete mode 100644 glabels1/intl/localealias.c delete mode 100644 glabels1/intl/po2tbl.sed.in delete mode 100644 glabels1/intl/textdomain.c delete mode 100644 glabels1/intl/xopen-msg.sed delete mode 100644 glabels1/macros/Makefile.am delete mode 100644 glabels1/macros/Makefile.in delete mode 100644 glabels1/macros/aclocal-include.m4 delete mode 100644 glabels1/macros/autogen.sh delete mode 100644 glabels1/macros/compiler-flags.m4 delete mode 100644 glabels1/macros/curses.m4 delete mode 100644 glabels1/macros/gnome-bonobo-check.m4 delete mode 100644 glabels1/macros/gnome-common.m4 delete mode 100644 glabels1/macros/gnome-fileutils.m4 delete mode 100644 glabels1/macros/gnome-gettext.m4 delete mode 100644 glabels1/macros/gnome-ghttp-check.m4 delete mode 100644 glabels1/macros/gnome-gnorba-check.m4 delete mode 100644 glabels1/macros/gnome-guile-checks.m4 delete mode 100644 glabels1/macros/gnome-libgtop-check.m4 delete mode 100644 glabels1/macros/gnome-objc-checks.m4 delete mode 100644 glabels1/macros/gnome-orbit-check.m4 delete mode 100644 glabels1/macros/gnome-print-check.m4 delete mode 100644 glabels1/macros/gnome-pthread-check.m4 delete mode 100644 glabels1/macros/gnome-support.m4 delete mode 100644 glabels1/macros/gnome-undelfs.m4 delete mode 100644 glabels1/macros/gnome-vfs.m4 delete mode 100644 glabels1/macros/gnome-x-checks.m4 delete mode 100644 glabels1/macros/gnome-xml-check.m4 delete mode 100644 glabels1/macros/gnome.m4 delete mode 100644 glabels1/macros/linger.m4 delete mode 100644 glabels1/macros/need-declaration.m4 delete mode 100755 glabels1/missing delete mode 100644 glabels1/pixmaps/glabels-about-logo.png delete mode 100644 glabels1/pixmaps/glabels-icon.png delete mode 100644 glabels1/pixmaps/glabels-logo.png delete mode 100644 glabels1/po/ChangeLog delete mode 100644 glabels1/po/Makefile.in.in delete mode 100644 glabels1/po/POTFILES.in delete mode 100644 glabels1/po/cat-id-tbl.c delete mode 100644 glabels1/po/de.po delete mode 100644 glabels1/po/es.po delete mode 100644 glabels1/po/fr.po delete mode 100644 glabels1/po/glabels.pot delete mode 100644 glabels1/po/ja.po delete mode 100644 glabels1/po/pl.po delete mode 100644 glabels1/po/pt_BR.po delete mode 100644 glabels1/po/ru.po delete mode 100644 glabels1/po/stamp-cat-id delete mode 100644 glabels1/po/zh_TW.Big5.po delete mode 100644 glabels1/src/Makefile.am delete mode 100644 glabels1/src/bc.c delete mode 100644 glabels1/src/bc.h delete mode 100644 glabels1/src/bc_gnubarcode.c delete mode 100644 glabels1/src/bc_gnubarcode.h delete mode 100644 glabels1/src/bc_postnet.c delete mode 100644 glabels1/src/bc_postnet.h delete mode 100644 glabels1/src/debug.h delete mode 100644 glabels1/src/display.c delete mode 100644 glabels1/src/display.h delete mode 100644 glabels1/src/edit.c delete mode 100644 glabels1/src/edit.h delete mode 100644 glabels1/src/file.c delete mode 100644 glabels1/src/file.h delete mode 100644 glabels1/src/glabels.c delete mode 100644 glabels1/src/glabels_batch.c delete mode 100644 glabels1/src/gnome-canvas-hacktext.h delete mode 100644 glabels1/src/hack.c delete mode 100644 glabels1/src/hack.h delete mode 100644 glabels1/src/highlight.c delete mode 100644 glabels1/src/highlight.h delete mode 100644 glabels1/src/item.c delete mode 100644 glabels1/src/item.h delete mode 100644 glabels1/src/item_barcode.c delete mode 100644 glabels1/src/item_barcode.h delete mode 100644 glabels1/src/item_box.c delete mode 100644 glabels1/src/item_box.h delete mode 100644 glabels1/src/item_ellipse.c delete mode 100644 glabels1/src/item_ellipse.h delete mode 100644 glabels1/src/item_image.c delete mode 100644 glabels1/src/item_image.h delete mode 100644 glabels1/src/item_line.c delete mode 100644 glabels1/src/item_line.h delete mode 100644 glabels1/src/item_text.c delete mode 100644 glabels1/src/item_text.h delete mode 100644 glabels1/src/label.c delete mode 100644 glabels1/src/label.h delete mode 100644 glabels1/src/mdi.c delete mode 100644 glabels1/src/mdi.h delete mode 100644 glabels1/src/media_select.c delete mode 100644 glabels1/src/media_select.h delete mode 100644 glabels1/src/menu.c delete mode 100644 glabels1/src/menu.h delete mode 100644 glabels1/src/merge.c delete mode 100644 glabels1/src/merge.h delete mode 100644 glabels1/src/merge_properties.c delete mode 100644 glabels1/src/merge_properties.h delete mode 100644 glabels1/src/merge_text.c delete mode 100644 glabels1/src/merge_text.h delete mode 100644 glabels1/src/merge_ui.c delete mode 100644 glabels1/src/merge_ui.h delete mode 100644 glabels1/src/merge_ui_text.c delete mode 100644 glabels1/src/merge_ui_text.h delete mode 100644 glabels1/src/mini_preview.c delete mode 100644 glabels1/src/mini_preview.h delete mode 100644 glabels1/src/pixmaps/Makefile.am delete mode 100644 glabels1/src/pixmaps/arrow.xpm delete mode 100644 glabels1/src/pixmaps/barcode.xpm delete mode 100644 glabels1/src/pixmaps/box.xpm delete mode 100644 glabels1/src/pixmaps/cursor_zoomin.xbm delete mode 100644 glabels1/src/pixmaps/cursor_zoomin_mask.xbm delete mode 100644 glabels1/src/pixmaps/cursor_zoomout.xbm delete mode 100644 glabels1/src/pixmaps/cursor_zoomout_mask.xbm delete mode 100644 glabels1/src/pixmaps/ellipse.xpm delete mode 100644 glabels1/src/pixmaps/image.xpm delete mode 100644 glabels1/src/pixmaps/line.xpm delete mode 100644 glabels1/src/pixmaps/merge.xpm delete mode 100644 glabels1/src/pixmaps/text.xpm delete mode 100644 glabels1/src/pixmaps/zoom1to1.xpm delete mode 100644 glabels1/src/pixmaps/zoomin.xpm delete mode 100644 glabels1/src/pixmaps/zoomout.xpm delete mode 100644 glabels1/src/prefs.c delete mode 100644 glabels1/src/prefs.h delete mode 100644 glabels1/src/print.c delete mode 100644 glabels1/src/print.h delete mode 100644 glabels1/src/print_copies.c delete mode 100644 glabels1/src/print_copies.h delete mode 100644 glabels1/src/print_dialog.c delete mode 100644 glabels1/src/print_dialog.h delete mode 100644 glabels1/src/print_merge.c delete mode 100644 glabels1/src/print_merge.h delete mode 100644 glabels1/src/prop_bc.c delete mode 100644 glabels1/src/prop_bc.h delete mode 100644 glabels1/src/prop_bc_data.c delete mode 100644 glabels1/src/prop_bc_data.h delete mode 100644 glabels1/src/prop_bc_style.c delete mode 100644 glabels1/src/prop_bc_style.h delete mode 100644 glabels1/src/prop_fill.c delete mode 100644 glabels1/src/prop_fill.h delete mode 100644 glabels1/src/prop_line.c delete mode 100644 glabels1/src/prop_line.h delete mode 100644 glabels1/src/prop_position.c delete mode 100644 glabels1/src/prop_position.h delete mode 100644 glabels1/src/prop_size.c delete mode 100644 glabels1/src/prop_size.h delete mode 100644 glabels1/src/prop_text.c delete mode 100644 glabels1/src/prop_text.h delete mode 100644 glabels1/src/prop_text_entry.c delete mode 100644 glabels1/src/prop_text_entry.h delete mode 100644 glabels1/src/prop_vector.c delete mode 100644 glabels1/src/prop_vector.h delete mode 100644 glabels1/src/propertybox.c delete mode 100644 glabels1/src/propertybox.h delete mode 100644 glabels1/src/rotate_select.c delete mode 100644 glabels1/src/rotate_select.h delete mode 100644 glabels1/src/splash.c delete mode 100644 glabels1/src/splash.h delete mode 100644 glabels1/src/stock.c delete mode 100644 glabels1/src/stock.h delete mode 100644 glabels1/src/template.c delete mode 100644 glabels1/src/template.h delete mode 100644 glabels1/src/text_node.c delete mode 100644 glabels1/src/text_node.h delete mode 100644 glabels1/src/tools.c delete mode 100644 glabels1/src/tools.h delete mode 100644 glabels1/src/util.c delete mode 100644 glabels1/src/util.h delete mode 100644 glabels1/stamp-h.in delete mode 100644 glabels2/barcode-0.98/COPYING delete mode 100644 glabels2/barcode-0.98/ChangeLog delete mode 100644 glabels2/barcode-0.98/INSTALL delete mode 100644 glabels2/barcode-0.98/README delete mode 100644 glabels2/barcode-0.98/TODO delete mode 100644 glabels2/barcode-0.98/barcode.h delete mode 100644 glabels2/barcode-0.98/barcode.spec delete mode 100644 glabels2/barcode-0.98/bookland/bookland.py delete mode 100644 glabels2/barcode-0.98/cmdline.c delete mode 100644 glabels2/barcode-0.98/cmdline.h delete mode 100644 glabels2/barcode-0.98/codabar.c delete mode 100644 glabels2/barcode-0.98/code128.c delete mode 100644 glabels2/barcode-0.98/code39.c delete mode 100644 glabels2/barcode-0.98/code93.c delete mode 100644 glabels2/barcode-0.98/compat/getopt.c delete mode 100644 glabels2/barcode-0.98/compat/getopt.h delete mode 100644 glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz delete mode 100644 glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz.README delete mode 100644 glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz delete mode 100644 glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README delete mode 100644 glabels2/barcode-0.98/contrib/barcodeps-0.1.tgz delete mode 100644 glabels2/barcode-0.98/contrib/barcodeps-0.1.tgz.README delete mode 100644 glabels2/barcode-0.98/contrib/grab-0.0.4.tar.gz delete mode 100644 glabels2/barcode-0.98/contrib/grab-0.0.4.tar.gz.README delete mode 100644 glabels2/barcode-0.98/debian/README.debian delete mode 100644 glabels2/barcode-0.98/debian/changelog delete mode 100644 glabels2/barcode-0.98/debian/control delete mode 100644 glabels2/barcode-0.98/debian/copyright delete mode 100644 glabels2/barcode-0.98/debian/dirs delete mode 100644 glabels2/barcode-0.98/debian/info delete mode 100755 glabels2/barcode-0.98/debian/rules delete mode 100644 glabels2/barcode-0.98/doc/Makefile.in delete mode 100644 glabels2/barcode-0.98/doc/README delete mode 100644 glabels2/barcode-0.98/doc/doc.barcode delete mode 100755 glabels2/barcode-0.98/doc/infofilter delete mode 100755 glabels2/barcode-0.98/doc/manpager delete mode 100755 glabels2/barcode-0.98/doc/mktxt delete mode 100755 glabels2/barcode-0.98/doc/texi2html delete mode 100644 glabels2/barcode-0.98/ean.c delete mode 100644 glabels2/barcode-0.98/i25.c delete mode 100644 glabels2/barcode-0.98/install-sh delete mode 100644 glabels2/barcode-0.98/library.c delete mode 100644 glabels2/barcode-0.98/main.c delete mode 100755 glabels2/barcode-0.98/mkinstalldirs delete mode 100644 glabels2/barcode-0.98/msi.c delete mode 100644 glabels2/barcode-0.98/pcl.c delete mode 100644 glabels2/barcode-0.98/plessey.c delete mode 100644 glabels2/barcode-0.98/ps.c delete mode 100644 glabels2/barcode-0.98/sample.c delete mode 100644 glabels2/src/pixmaps/checkerboard.xpm delete mode 100644 glabels2/src/pixmaps/collate.xpm delete mode 100644 glabels2/src/pixmaps/cursor_barcode.xbm delete mode 100644 glabels2/src/pixmaps/cursor_barcode_mask.xbm delete mode 100644 glabels2/src/pixmaps/cursor_box.xbm delete mode 100644 glabels2/src/pixmaps/cursor_box_mask.xbm delete mode 100644 glabels2/src/pixmaps/cursor_ellipse.xbm delete mode 100644 glabels2/src/pixmaps/cursor_ellipse_mask.xbm delete mode 100644 glabels2/src/pixmaps/cursor_image.xbm delete mode 100644 glabels2/src/pixmaps/cursor_image_mask.xbm delete mode 100644 glabels2/src/pixmaps/cursor_line.xbm delete mode 100644 glabels2/src/pixmaps/cursor_line_mask.xbm delete mode 100644 glabels2/src/pixmaps/cursor_text.xbm delete mode 100644 glabels2/src/pixmaps/cursor_text_mask.xbm delete mode 100644 glabels2/src/pixmaps/nocollate.xpm rename glabels2/gtk-doc.make => gtk-doc.make (100%) rename {glabels2/help => help}/C/figures/glabels-template-cd.png (100%) rename {glabels2/help => help}/C/figures/glabels-template-label.png (100%) rename {glabels2/help => help}/C/figures/glabels-template-layout.png (100%) rename {glabels2/help => help}/C/figures/main-window-empty.png (100%) rename {glabels2/help => help}/C/figures/merge-ex1-1.png (100%) rename {glabels2/help => help}/C/figures/merge-ex1-2.png (100%) rename {glabels2/help => help}/C/figures/merge-ex1-3.png (100%) rename {glabels2/help => help}/C/figures/merge-ex1-4.png (100%) rename {glabels2/help => help}/C/figures/merge-ex2-1.png (100%) rename {glabels2/help => help}/C/figures/merge-ex2-2.png (100%) rename {glabels2/help => help}/C/figures/merge-ex2-3.png (100%) rename {glabels2/help => help}/C/figures/merge-ex2-4.png (100%) rename {glabels2/help => help}/C/figures/object-editor-sidebar.png (100%) rename {glabels2/help => help}/C/figures/print-copies.png (100%) rename {glabels2/help => help}/C/figures/print-merge.png (100%) rename {glabels2/help => help}/C/glabels.xml (100%) rename {glabels2/help => help}/C/legal.xml (100%) rename {glabels2/help => help}/Makefile.am (100%) rename {glabels2/help => help}/de/de.po (100%) rename {glabels2/help => help}/de/figures/main-window-empty.png (100%) rename {glabels2/help => help}/de/figures/merge-ex1-1.png (100%) rename {glabels2/help => help}/de/figures/merge-ex1-2.png (100%) rename {glabels2/help => help}/de/figures/merge-ex1-3.png (100%) rename {glabels2/help => help}/de/figures/merge-ex1-4.png (100%) rename {glabels2/help => help}/de/figures/merge-ex2-1.png (100%) rename {glabels2/help => help}/de/figures/merge-ex2-2.png (100%) rename {glabels2/help => help}/de/figures/merge-ex2-3.png (100%) rename {glabels2/help => help}/de/figures/merge-ex2-4.png (100%) rename {glabels2/help => help}/de/figures/object-editor-sidebar.png (100%) rename {glabels2/help => help}/de/figures/print-copies.png (100%) rename {glabels2/help => help}/de/figures/print-merge.png (100%) rename {glabels2/help => help}/glabels.omf.in (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/BUGS (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/CHANGELOG (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/CREDITS (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/INSTALL (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/LICENSE (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/Makefile.am (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/Makefile.dist (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/README (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/README.glabels (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/TODO (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/iec16022.1 (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/iec16022.c (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/iec16022ecc200.c (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/iec16022ecc200.h (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/image.c (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/image.h (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/reedsol.c (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/reedsol.h (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/test/testsuite-example.bin (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/test/testsuite-example.eps (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/test/testsuite-example.hex (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/test/testsuite-example.png (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/test/testsuite-example.text (100%) rename {glabels2/iec16022-0.2.1 => iec16022-0.2.1}/test/testsuite.sh (100%) rename {glabels2/libglabels => libglabels}/Makefile.am (100%) rename {glabels2/libglabels => libglabels}/category.c (100%) rename {glabels2/libglabels => libglabels}/category.h (100%) rename {glabels2/libglabels => libglabels}/db.c (100%) rename {glabels2/libglabels => libglabels}/db.h (100%) rename {glabels2/libglabels => libglabels}/enums.h (100%) rename {glabels2/libglabels => libglabels}/libglabels-private.h (100%) rename {glabels2/libglabels => libglabels}/libglabels.h (100%) rename {glabels2/libglabels => libglabels}/libglabels.pc.in (100%) rename {glabels2/libglabels => libglabels}/paper.c (100%) rename {glabels2/libglabels => libglabels}/paper.h (100%) rename {glabels2/libglabels => libglabels}/str.c (100%) rename {glabels2/libglabels => libglabels}/str.h (100%) rename {glabels2/libglabels => libglabels}/template.c (100%) rename {glabels2/libglabels => libglabels}/template.h (100%) rename {glabels2/libglabels => libglabels}/xml-category.c (100%) rename {glabels2/libglabels => libglabels}/xml-category.h (100%) rename {glabels2/libglabels => libglabels}/xml-paper.c (100%) rename {glabels2/libglabels => libglabels}/xml-paper.h (100%) rename {glabels2/libglabels => libglabels}/xml-template.c (100%) rename {glabels2/libglabels => libglabels}/xml-template.h (100%) rename {glabels2/libglabels => libglabels}/xml.c (100%) rename {glabels2/libglabels => libglabels}/xml.h (100%) rename {glabels2/po => po}/LINGUAS (100%) rename {glabels2/po => po}/POTFILES.in (100%) rename {glabels2/po => po}/ca.po (100%) rename {glabels2/po => po}/cs.po (100%) rename {glabels2/po => po}/de.po (100%) rename {glabels2/po => po}/eo.po (100%) rename {glabels2/po => po}/es.po (100%) rename {glabels2/po => po}/fr.po (100%) rename {glabels2/po => po}/it.po (100%) rename {glabels2/po => po}/ja.po (100%) rename {glabels2/po => po}/ko.po (100%) rename {glabels2/po => po}/pl.po (100%) rename {glabels2/po => po}/pt_BR.po (100%) rename {glabels2/po => po}/ru.po (100%) rename {glabels2/po => po}/zh_CN.po (100%) rename {glabels2/po => po}/zh_TW.Big5.po (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/COPYING (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/ChangeLog (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/Doxyfile (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/Makefile.am (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/Makefile.am.dist (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/Makefile.in.dist (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/NEWS (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/README (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/README.glabels (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/TODO (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/acinclude.m4 (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/aclocal.m4 (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/autogen.sh (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/bitstream.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/bitstream.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/config.h.in (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/configure (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/configure.ac.dist (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/libqrencode.pc.in (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/mask.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/mask.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrenc.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrencode.1.in (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrencode.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrencode.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrencode.spec (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrencode.spec.in (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrencode_inner.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrinput.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrinput.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrspec.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/qrspec.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/rscode.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/rscode.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/split.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/split.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/Makefile.am (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/Makefile.in (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/common.h (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/create_frame_pattern.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/frame (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/prof_qrencode.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_all.sh (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_bitstream.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_estimatebit.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_monkey.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_qrencode.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_qrinput.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_qrspec.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_rs.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/test_split.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/tests/view_qrcode.c (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/compile (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/config.guess (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/config.sub (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/depcomp (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/install-sh (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/ltmain.sh (100%) rename {glabels2/qrencode-3.1.0 => qrencode-3.1.0}/use/missing (100%) rename {glabels2/src => src}/Makefile.am (100%) rename {glabels2/src => src}/bc-gnubarcode.c (100%) rename {glabels2/src => src}/bc-gnubarcode.h (100%) rename {glabels2/src => src}/bc-iec16022.c (100%) rename {glabels2/src => src}/bc-iec16022.h (100%) rename {glabels2/src => src}/bc-iec18004.c (100%) rename {glabels2/src => src}/bc-iec18004.h (100%) rename {glabels2/src => src}/bc-postnet.c (100%) rename {glabels2/src => src}/bc-postnet.h (100%) rename {glabels2/src => src}/bc.c (100%) rename {glabels2/src => src}/bc.h (100%) rename {glabels2/src => src}/builder-util.c (100%) rename {glabels2/src => src}/builder-util.h (100%) rename {glabels2/src => src}/cairo-ellipse-path.c (100%) rename {glabels2/src => src}/cairo-ellipse-path.h (100%) rename {glabels2/src => src}/cairo-label-path.c (100%) rename {glabels2/src => src}/cairo-label-path.h (100%) rename {glabels2/src => src}/cairo-markup-path.c (100%) rename {glabels2/src => src}/cairo-markup-path.h (100%) rename {glabels2/src => src}/color-combo-button.c (100%) rename {glabels2/src => src}/color-combo-button.h (100%) rename {glabels2/src => src}/color-combo-color-menu-item.c (100%) rename {glabels2/src => src}/color-combo-color-menu-item.h (100%) rename {glabels2/src => src}/color-combo-history.c (100%) rename {glabels2/src => src}/color-combo-history.h (100%) rename {glabels2/src => src}/color-combo-menu.c (100%) rename {glabels2/src => src}/color-combo-menu.h (100%) rename {glabels2/src => src}/color-combo.c (100%) rename {glabels2/src => src}/color-combo.h (100%) rename {glabels2/src => src}/color-swatch.c (100%) rename {glabels2/src => src}/color-swatch.h (100%) rename {glabels2/src => src}/color.c (100%) rename {glabels2/src => src}/color.h (100%) rename {glabels2/src => src}/combo-util.c (100%) rename {glabels2/src => src}/combo-util.h (100%) rename {glabels2/src => src}/critical-error-handler.c (100%) rename {glabels2/src => src}/critical-error-handler.h (100%) rename {glabels2/src => src}/debug.c (100%) rename {glabels2/src => src}/debug.h (100%) rename {glabels2/src => src}/file-util.c (100%) rename {glabels2/src => src}/file-util.h (100%) rename {glabels2/src => src}/file.c (100%) rename {glabels2/src => src}/file.h (100%) rename {glabels2/src => src}/font-combo-menu-item.c (100%) rename {glabels2/src => src}/font-combo-menu-item.h (100%) rename {glabels2/src => src}/font-combo-menu.c (100%) rename {glabels2/src => src}/font-combo-menu.h (100%) rename {glabels2/src => src}/font-combo.c (100%) rename {glabels2/src => src}/font-combo.h (100%) rename {glabels2/src => src}/font-sample.c (100%) rename {glabels2/src => src}/font-sample.h (100%) rename {glabels2/src => src}/font-util.c (100%) rename {glabels2/src => src}/font-util.h (100%) rename {glabels2/src => src}/glabels-batch.c (100%) rename {glabels2/src => src}/glabels.c (100%) rename {glabels2/src => src}/hig.h (100%) rename {glabels2/src => src}/label-barcode.c (100%) rename {glabels2/src => src}/label-barcode.h (100%) rename {glabels2/src => src}/label-box.c (100%) rename {glabels2/src => src}/label-box.h (100%) rename {glabels2/src => src}/label-ellipse.c (100%) rename {glabels2/src => src}/label-ellipse.h (100%) rename {glabels2/src => src}/label-image.c (100%) rename {glabels2/src => src}/label-image.h (100%) rename {glabels2/src => src}/label-line.c (100%) rename {glabels2/src => src}/label-line.h (100%) rename {glabels2/src => src}/label-object.c (100%) rename {glabels2/src => src}/label-object.h (100%) rename {glabels2/src => src}/label-text.c (100%) rename {glabels2/src => src}/label-text.h (100%) rename {glabels2/src => src}/label.c (100%) rename {glabels2/src => src}/label.h (100%) rename {glabels2/src => src}/marshal.list (100%) rename {glabels2/src => src}/merge-evolution.c (100%) rename {glabels2/src => src}/merge-evolution.h (100%) rename {glabels2/src => src}/merge-init.c (100%) rename {glabels2/src => src}/merge-init.h (100%) rename {glabels2/src => src}/merge-properties-dialog.c (100%) rename {glabels2/src => src}/merge-properties-dialog.h (100%) rename {glabels2/src => src}/merge-text.c (100%) rename {glabels2/src => src}/merge-text.h (100%) rename {glabels2/src => src}/merge-vcard.c (100%) rename {glabels2/src => src}/merge-vcard.h (100%) rename {glabels2/src => src}/merge.c (100%) rename {glabels2/src => src}/merge.h (100%) rename {glabels2/src => src}/mini-label-preview.c (100%) rename {glabels2/src => src}/mini-label-preview.h (100%) rename {glabels2/src => src}/mini-preview-pixbuf-cache.c (100%) rename {glabels2/src => src}/mini-preview-pixbuf-cache.h (100%) rename {glabels2/src => src}/mini-preview-pixbuf.c (100%) rename {glabels2/src => src}/mini-preview-pixbuf.h (100%) rename {glabels2/src => src}/mini-preview.c (100%) rename {glabels2/src => src}/mini-preview.h (100%) rename {glabels2/src => src}/new-label-dialog.c (100%) rename {glabels2/src => src}/new-label-dialog.h (100%) rename {glabels2/src => src}/object-editor-bc-page.c (100%) rename {glabels2/src => src}/object-editor-data-page.c (100%) rename {glabels2/src => src}/object-editor-edit-page.c (100%) rename {glabels2/src => src}/object-editor-fill-page.c (100%) rename {glabels2/src => src}/object-editor-image-page.c (100%) rename {glabels2/src => src}/object-editor-line-page.c (100%) rename {glabels2/src => src}/object-editor-lsize-page.c (100%) rename {glabels2/src => src}/object-editor-position-page.c (100%) rename {glabels2/src => src}/object-editor-private.h (100%) rename {glabels2/src => src}/object-editor-shadow-page.c (100%) rename {glabels2/src => src}/object-editor-size-page.c (100%) rename {glabels2/src => src}/object-editor-text-page.c (100%) rename {glabels2/src => src}/object-editor.c (100%) rename {glabels2/src => src}/object-editor.h (100%) rename {glabels2/src => src}/pixbuf-cache.c (100%) rename {glabels2/src => src}/pixbuf-cache.h (100%) rename {glabels2/src => src}/pixmaps/Makefile.am (100%) rename {glabels1/src => src}/pixmaps/checkerboard.xpm (100%) rename {glabels1/src => src}/pixmaps/collate.xpm (100%) rename {glabels1/src => src}/pixmaps/cursor_barcode.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_barcode_mask.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_box.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_box_mask.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_ellipse.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_ellipse_mask.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_image.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_image_mask.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_line.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_line_mask.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_text.xbm (100%) rename {glabels1/src => src}/pixmaps/cursor_text_mask.xbm (100%) rename {glabels1/src => src}/pixmaps/nocollate.xpm (100%) rename {glabels2/src => src}/prefs-dialog.c (100%) rename {glabels2/src => src}/prefs-dialog.h (100%) rename {glabels2/src => src}/prefs-model.c (100%) rename {glabels2/src => src}/prefs-model.h (100%) rename {glabels2/src => src}/prefs.c (100%) rename {glabels2/src => src}/prefs.h (100%) rename {glabels2/src => src}/print-op-dialog.c (100%) rename {glabels2/src => src}/print-op-dialog.h (100%) rename {glabels2/src => src}/print-op.c (100%) rename {glabels2/src => src}/print-op.h (100%) rename {glabels2/src => src}/print.c (100%) rename {glabels2/src => src}/print.h (100%) rename {glabels2/src => src}/recent.c (100%) rename {glabels2/src => src}/recent.h (100%) rename {glabels2/src => src}/rotate-label-button.c (100%) rename {glabels2/src => src}/rotate-label-button.h (100%) rename {glabels2/src => src}/stock-pixmaps/Makefile.am (100%) rename {glabels2/src => src}/stock-pixmaps/stock_align_bottom_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_align_hcenter_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_align_left_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_align_right_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_align_top_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_align_vcenter_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_arrow_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_arrow_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_barcode_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_barcode_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_box_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_box_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_bucket_fill_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_bucket_fill_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_center_horiz_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_center_vert_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_ellipse_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_ellipse_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_flip_horiz_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_flip_vert_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_hchain_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_hchain_broken_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_image_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_image_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_line_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_line_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_merge_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_merge_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_order_bottom_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_order_top_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_pencil_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_pencil_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_properties_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_properties_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_rotate_left_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_rotate_right_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_text_16.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_text_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_vchain_24.png (100%) rename {glabels2/src => src}/stock-pixmaps/stock_vchain_broken_24.png (100%) rename {glabels2/src => src}/stock.c (100%) rename {glabels2/src => src}/stock.h (100%) rename {glabels2/src => src}/str-util.c (100%) rename {glabels2/src => src}/str-util.h (100%) rename {glabels2/src => src}/template-designer.c (100%) rename {glabels2/src => src}/template-designer.h (100%) rename {glabels2/src => src}/text-node.c (100%) rename {glabels2/src => src}/text-node.h (100%) rename {glabels2/src => src}/ui-commands.c (100%) rename {glabels2/src => src}/ui-commands.h (100%) rename {glabels2/src => src}/ui-property-bar.c (100%) rename {glabels2/src => src}/ui-property-bar.h (100%) rename {glabels2/src => src}/ui-sidebar.c (100%) rename {glabels2/src => src}/ui-sidebar.h (100%) rename {glabels2/src => src}/ui-util.c (100%) rename {glabels2/src => src}/ui-util.h (100%) rename {glabels2/src => src}/ui.c (100%) rename {glabels2/src => src}/ui.h (100%) rename {glabels2/src => src}/view-barcode.c (100%) rename {glabels2/src => src}/view-barcode.h (100%) rename {glabels2/src => src}/view-box.c (100%) rename {glabels2/src => src}/view-box.h (100%) rename {glabels2/src => src}/view-ellipse.c (100%) rename {glabels2/src => src}/view-ellipse.h (100%) rename {glabels2/src => src}/view-image.c (100%) rename {glabels2/src => src}/view-image.h (100%) rename {glabels2/src => src}/view-line.c (100%) rename {glabels2/src => src}/view-line.h (100%) rename {glabels2/src => src}/view-object.c (100%) rename {glabels2/src => src}/view-object.h (100%) rename {glabels2/src => src}/view-text.c (100%) rename {glabels2/src => src}/view-text.h (100%) rename {glabels2/src => src}/view.c (100%) rename {glabels2/src => src}/view.h (100%) rename {glabels2/src => src}/warning-handler.c (100%) rename {glabels2/src => src}/warning-handler.h (100%) rename {glabels2/src => src}/wdgt-chain-button.c (100%) rename {glabels2/src => src}/wdgt-chain-button.h (100%) rename {glabels2/src => src}/wdgt-media-select.c (100%) rename {glabels2/src => src}/wdgt-media-select.h (100%) rename {glabels2/src => src}/wdgt-merge-menu.c (100%) rename {glabels2/src => src}/wdgt-merge-menu.h (100%) rename {glabels2/src => src}/window.c (100%) rename {glabels2/src => src}/window.h (100%) rename {glabels2/src => src}/xml-label-04.c (100%) rename {glabels2/src => src}/xml-label-04.h (100%) rename {glabels2/src => src}/xml-label.c (100%) rename {glabels2/src => src}/xml-label.h (100%) rename {glabels2/templates => templates}/Makefile.am (100%) rename {glabels2/templates => templates}/avery-iso-templates.xml (100%) rename {glabels2/templates => templates}/avery-other-templates.xml (100%) rename {glabels2/templates => templates}/avery-us-templates.xml (100%) rename {glabels2/templates => templates}/brother-other-templates.xml (100%) rename {glabels2/templates => templates}/categories.xml (100%) rename {glabels2/templates => templates}/dymo-other-templates.xml (100%) rename {glabels2/templates => templates}/glabels-2.2.dtd (100%) rename {glabels2/templates => templates}/misc-iso-templates.xml (100%) rename {glabels2/templates => templates}/misc-other-templates.xml (100%) rename {glabels2/templates => templates}/misc-us-templates.xml (100%) rename {glabels2/templates => templates}/paper-sizes.xml (100%) rename {glabels2/templates => templates}/zweckform-iso-templates.xml (100%) delete mode 100644 web/common_php.inc delete mode 100644 web/contact/index.php delete mode 100644 web/css/glabels.css delete mode 100644 web/doc/glabels-2.0.dtd.txt delete mode 100644 web/doc/glabels-2.2.dtd.txt delete mode 100644 web/doc/index.php delete mode 100755 web/doc/install-src/index.php delete mode 100644 web/doc/templates-2.0/glabels-template-cd.png delete mode 100644 web/doc/templates-2.0/glabels-template-label.png delete mode 100644 web/doc/templates-2.0/glabels-template-layout.png delete mode 100644 web/doc/templates-2.0/index.php delete mode 100644 web/doc/templates-2.2/glabels-template-cd.png delete mode 100644 web/doc/templates-2.2/glabels-template-label.png delete mode 100644 web/doc/templates-2.2/glabels-template-layout.png delete mode 100644 web/doc/templates-2.2/index.php delete mode 100644 web/download/index.php delete mode 100644 web/faq/index.php delete mode 100644 web/faq/q1.3-output.png delete mode 100644 web/faq/q1.3-screenshot.png delete mode 100644 web/images/button-bg.png delete mode 100644 web/images/corner-bl.png delete mode 100644 web/images/corner-br.png delete mode 100644 web/images/corner-tl.png delete mode 100644 web/images/corner-tr.png delete mode 100644 web/images/glabels-title-140.png delete mode 100644 web/images/pixel-null.png delete mode 100644 web/index.php delete mode 100644 web/links/index.php delete mode 100644 web/news/index.php delete mode 100644 web/screenshots/191-screenshot-main-grid-thumb.png delete mode 100644 web/screenshots/191-screenshot-main-grid.png delete mode 100644 web/screenshots/191-screenshot-main-thumb.png delete mode 100644 web/screenshots/191-screenshot-main.png delete mode 100644 web/screenshots/191-screenshot-new-thumb.png delete mode 100644 web/screenshots/191-screenshot-new.png delete mode 100644 web/screenshots/191-screenshot-print-merge-thumb.png delete mode 100644 web/screenshots/191-screenshot-print-merge.png delete mode 100644 web/screenshots/191-screenshot-print-simple-thumb.png delete mode 100644 web/screenshots/191-screenshot-print-simple.png delete mode 100644 web/screenshots/192-screenshot-thumb.png delete mode 100644 web/screenshots/192-screenshot.png delete mode 100644 web/screenshots/193-screenshot-main-thumb.png delete mode 100644 web/screenshots/193-screenshot-main.png delete mode 100644 web/screenshots/193-screenshot-new-thumb.png delete mode 100644 web/screenshots/193-screenshot-new.png delete mode 100644 web/screenshots/193-screenshot-preview-thumb.png delete mode 100644 web/screenshots/193-screenshot-preview.png delete mode 100644 web/screenshots/193-screenshot-print-thumb.png delete mode 100644 web/screenshots/193-screenshot-print.png delete mode 100644 web/screenshots/220-screenshot-main-thumb.png delete mode 100644 web/screenshots/220-screenshot-main.png delete mode 100644 web/screenshots/220-screenshot-new-thumb.png delete mode 100644 web/screenshots/220-screenshot-new.png delete mode 100644 web/screenshots/220-screenshot-preview-thumb.png delete mode 100644 web/screenshots/220-screenshot-preview.png delete mode 100644 web/screenshots/220-screenshot-print-thumb.png delete mode 100644 web/screenshots/220-screenshot-print.png delete mode 100644 web/screenshots/glabels1-screenshot-thumb.jpg delete mode 100644 web/screenshots/glabels1-screenshot.jpg delete mode 100644 web/screenshots/glabels1-screenshot.png delete mode 100644 web/screenshots/index.php delete mode 100644 web/source/glabels-0.1.0.tar.gz delete mode 100644 web/source/glabels-0.1.1.tar.gz delete mode 100644 web/source/glabels-0.1.2.tar.gz delete mode 100644 web/source/glabels-0.1.3.tar.gz delete mode 100644 web/source/glabels-0.1.4.tar.gz delete mode 100644 web/source/glabels-0.1.5.tar.gz delete mode 100644 web/source/glabels-0.2.0.tar.gz delete mode 100644 web/source/glabels-0.2.1.tar.gz delete mode 100644 web/source/glabels-0.2.2.tar.gz delete mode 100644 web/source/glabels-0.2.3.tar.gz delete mode 100644 web/source/glabels-0.2.4.tar.gz delete mode 100644 web/source/glabels-0.3.0.tar.gz delete mode 100644 web/source/glabels-0.3.1.tar.gz delete mode 100644 web/source/glabels-0.3.2.tar.gz delete mode 100644 web/source/glabels-0.3.3.tar.gz delete mode 100644 web/source/glabels-0.3.4.tar.gz delete mode 100644 web/source/glabels-0.4.0.tar.gz delete mode 100644 web/source/glabels-0.4.1.tar.gz delete mode 100644 web/source/glabels-0.4.2.tar.gz delete mode 100644 web/source/glabels-0.4.3.tar.gz delete mode 100644 web/source/glabels-0.4.4.tar.gz delete mode 100644 web/source/glabels-0.4.5.tar.gz delete mode 100644 web/source/glabels-0.4.6.tar.gz delete mode 100644 web/source/glabels-1.89.0.tar.gz delete mode 100644 web/source/glabels-1.89.1.tar.gz delete mode 100644 web/source/glabels-1.89.2.tar.gz delete mode 100644 web/source/glabels-1.90.0.tar.gz delete mode 100644 web/source/glabels-1.91.0.tar.gz delete mode 100644 web/source/glabels-1.91.1.tar.gz delete mode 100644 web/source/glabels-1.92.0.tar.gz delete mode 100644 web/source/glabels-1.92.1.tar.gz delete mode 100644 web/source/glabels-1.92.2.tar.gz delete mode 100644 web/source/glabels-1.92.3.tar.gz delete mode 100644 web/source/glabels-1.93.0.tar.gz delete mode 100644 web/source/glabels-1.93.1.tar.gz delete mode 100644 web/source/glabels-1.93.2.tar.gz delete mode 100644 web/source/glabels-1.93.3.tar.gz delete mode 100644 web/tango-icons/applications-development.png delete mode 100644 web/tango-icons/applications-internet.png delete mode 100644 web/tango-icons/dialog-information.png delete mode 100644 web/tango-icons/emblem-photos.png delete mode 100644 web/tango-icons/help-browser.png delete mode 100644 web/tango-icons/internet-news-reader.png delete mode 100644 web/tango-icons/package-x-generic.png delete mode 100644 web/tango-icons/system-users.png diff --git a/glabels2/AUTHORS b/AUTHORS similarity index 100% rename from glabels2/AUTHORS rename to AUTHORS diff --git a/glabels2/COPYING b/COPYING similarity index 100% rename from glabels2/COPYING rename to COPYING diff --git a/glabels2/COPYING-DOCS b/COPYING-DOCS similarity index 100% rename from glabels2/COPYING-DOCS rename to COPYING-DOCS diff --git a/glabels2/COPYING-LIBGLABELS b/COPYING-LIBGLABELS similarity index 100% rename from glabels2/COPYING-LIBGLABELS rename to COPYING-LIBGLABELS diff --git a/glabels2/COPYING-TEMPLATES b/COPYING-TEMPLATES similarity index 100% rename from glabels2/COPYING-TEMPLATES rename to COPYING-TEMPLATES diff --git a/glabels2/COPYING.README_FIRST b/COPYING.README_FIRST similarity index 100% rename from glabels2/COPYING.README_FIRST rename to COPYING.README_FIRST diff --git a/glabels2/ChangeLog b/ChangeLog similarity index 100% rename from glabels2/ChangeLog rename to ChangeLog diff --git a/glabels2/INSTALL b/INSTALL similarity index 100% rename from glabels2/INSTALL rename to INSTALL diff --git a/glabels2/MESSAGE-OF-DOOM b/MESSAGE-OF-DOOM similarity index 100% rename from glabels2/MESSAGE-OF-DOOM rename to MESSAGE-OF-DOOM diff --git a/glabels2/Makefile.am b/Makefile.am similarity index 100% rename from glabels2/Makefile.am rename to Makefile.am diff --git a/glabels2/NEWS b/NEWS similarity index 100% rename from glabels2/NEWS rename to NEWS diff --git a/glabels2/README b/README similarity index 100% rename from glabels2/README rename to README diff --git a/glabels2/TODO b/TODO similarity index 100% rename from glabels2/TODO rename to TODO diff --git a/glabels2/autogen.sh b/autogen.sh similarity index 100% rename from glabels2/autogen.sh rename to autogen.sh diff --git a/glabels1/barcode-0.98/COPYING b/barcode-0.98/COPYING similarity index 100% rename from glabels1/barcode-0.98/COPYING rename to barcode-0.98/COPYING diff --git a/glabels1/barcode-0.98/ChangeLog b/barcode-0.98/ChangeLog similarity index 100% rename from glabels1/barcode-0.98/ChangeLog rename to barcode-0.98/ChangeLog diff --git a/glabels1/barcode-0.98/INSTALL b/barcode-0.98/INSTALL similarity index 100% rename from glabels1/barcode-0.98/INSTALL rename to barcode-0.98/INSTALL diff --git a/glabels2/barcode-0.98/Makefile.am b/barcode-0.98/Makefile.am similarity index 100% rename from glabels2/barcode-0.98/Makefile.am rename to barcode-0.98/Makefile.am diff --git a/glabels2/barcode-0.98/Makefile.in.dist b/barcode-0.98/Makefile.in.dist similarity index 100% rename from glabels2/barcode-0.98/Makefile.in.dist rename to barcode-0.98/Makefile.in.dist diff --git a/glabels1/barcode-0.98/README b/barcode-0.98/README similarity index 100% rename from glabels1/barcode-0.98/README rename to barcode-0.98/README diff --git a/glabels2/barcode-0.98/README.glabels b/barcode-0.98/README.glabels similarity index 100% rename from glabels2/barcode-0.98/README.glabels rename to barcode-0.98/README.glabels diff --git a/glabels1/barcode-0.98/TODO b/barcode-0.98/TODO similarity index 100% rename from glabels1/barcode-0.98/TODO rename to barcode-0.98/TODO diff --git a/glabels1/barcode-0.98/barcode.h b/barcode-0.98/barcode.h similarity index 100% rename from glabels1/barcode-0.98/barcode.h rename to barcode-0.98/barcode.h diff --git a/glabels1/barcode-0.98/barcode.spec b/barcode-0.98/barcode.spec similarity index 100% rename from glabels1/barcode-0.98/barcode.spec rename to barcode-0.98/barcode.spec diff --git a/glabels1/barcode-0.98/bookland/bookland.py b/barcode-0.98/bookland/bookland.py similarity index 100% rename from glabels1/barcode-0.98/bookland/bookland.py rename to barcode-0.98/bookland/bookland.py diff --git a/glabels1/barcode-0.98/cmdline.c b/barcode-0.98/cmdline.c similarity index 100% rename from glabels1/barcode-0.98/cmdline.c rename to barcode-0.98/cmdline.c diff --git a/glabels1/barcode-0.98/cmdline.h b/barcode-0.98/cmdline.h similarity index 100% rename from glabels1/barcode-0.98/cmdline.h rename to barcode-0.98/cmdline.h diff --git a/glabels1/barcode-0.98/codabar.c b/barcode-0.98/codabar.c similarity index 100% rename from glabels1/barcode-0.98/codabar.c rename to barcode-0.98/codabar.c diff --git a/glabels1/barcode-0.98/code128.c b/barcode-0.98/code128.c similarity index 100% rename from glabels1/barcode-0.98/code128.c rename to barcode-0.98/code128.c diff --git a/glabels1/barcode-0.98/code39.c b/barcode-0.98/code39.c similarity index 100% rename from glabels1/barcode-0.98/code39.c rename to barcode-0.98/code39.c diff --git a/glabels1/barcode-0.98/code93.c b/barcode-0.98/code93.c similarity index 100% rename from glabels1/barcode-0.98/code93.c rename to barcode-0.98/code93.c diff --git a/glabels1/barcode-0.98/compat/getopt.c b/barcode-0.98/compat/getopt.c similarity index 100% rename from glabels1/barcode-0.98/compat/getopt.c rename to barcode-0.98/compat/getopt.c diff --git a/glabels1/barcode-0.98/compat/getopt.h b/barcode-0.98/compat/getopt.h similarity index 100% rename from glabels1/barcode-0.98/compat/getopt.h rename to barcode-0.98/compat/getopt.h diff --git a/glabels2/barcode-0.98/configure b/barcode-0.98/configure similarity index 100% rename from glabels2/barcode-0.98/configure rename to barcode-0.98/configure diff --git a/glabels2/barcode-0.98/configure.in.dist b/barcode-0.98/configure.in.dist similarity index 100% rename from glabels2/barcode-0.98/configure.in.dist rename to barcode-0.98/configure.in.dist diff --git a/glabels1/barcode-0.98/contrib/barcode-SVG.tar.gz b/barcode-0.98/contrib/barcode-SVG.tar.gz similarity index 100% rename from glabels1/barcode-0.98/contrib/barcode-SVG.tar.gz rename to barcode-0.98/contrib/barcode-SVG.tar.gz diff --git a/glabels1/barcode-0.98/contrib/barcode-SVG.tar.gz.README b/barcode-0.98/contrib/barcode-SVG.tar.gz.README similarity index 100% rename from glabels1/barcode-0.98/contrib/barcode-SVG.tar.gz.README rename to barcode-0.98/contrib/barcode-SVG.tar.gz.README diff --git a/glabels1/barcode-0.98/contrib/barcode-for-delphi.tar.gz b/barcode-0.98/contrib/barcode-for-delphi.tar.gz similarity index 100% rename from glabels1/barcode-0.98/contrib/barcode-for-delphi.tar.gz rename to barcode-0.98/contrib/barcode-for-delphi.tar.gz diff --git a/glabels1/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README b/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README similarity index 100% rename from glabels1/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README rename to barcode-0.98/contrib/barcode-for-delphi.tar.gz.README diff --git a/glabels1/barcode-0.98/contrib/barcodeps-0.1.tgz b/barcode-0.98/contrib/barcodeps-0.1.tgz similarity index 100% rename from glabels1/barcode-0.98/contrib/barcodeps-0.1.tgz rename to barcode-0.98/contrib/barcodeps-0.1.tgz diff --git a/glabels1/barcode-0.98/contrib/barcodeps-0.1.tgz.README b/barcode-0.98/contrib/barcodeps-0.1.tgz.README similarity index 100% rename from glabels1/barcode-0.98/contrib/barcodeps-0.1.tgz.README rename to barcode-0.98/contrib/barcodeps-0.1.tgz.README diff --git a/glabels1/barcode-0.98/contrib/grab-0.0.4.tar.gz b/barcode-0.98/contrib/grab-0.0.4.tar.gz similarity index 100% rename from glabels1/barcode-0.98/contrib/grab-0.0.4.tar.gz rename to barcode-0.98/contrib/grab-0.0.4.tar.gz diff --git a/glabels1/barcode-0.98/contrib/grab-0.0.4.tar.gz.README b/barcode-0.98/contrib/grab-0.0.4.tar.gz.README similarity index 100% rename from glabels1/barcode-0.98/contrib/grab-0.0.4.tar.gz.README rename to barcode-0.98/contrib/grab-0.0.4.tar.gz.README diff --git a/glabels1/barcode-0.98/debian/README.debian b/barcode-0.98/debian/README.debian similarity index 100% rename from glabels1/barcode-0.98/debian/README.debian rename to barcode-0.98/debian/README.debian diff --git a/glabels1/barcode-0.98/debian/changelog b/barcode-0.98/debian/changelog similarity index 100% rename from glabels1/barcode-0.98/debian/changelog rename to barcode-0.98/debian/changelog diff --git a/glabels1/barcode-0.98/debian/control b/barcode-0.98/debian/control similarity index 100% rename from glabels1/barcode-0.98/debian/control rename to barcode-0.98/debian/control diff --git a/glabels1/barcode-0.98/debian/copyright b/barcode-0.98/debian/copyright similarity index 100% rename from glabels1/barcode-0.98/debian/copyright rename to barcode-0.98/debian/copyright diff --git a/glabels1/barcode-0.98/debian/dirs b/barcode-0.98/debian/dirs similarity index 100% rename from glabels1/barcode-0.98/debian/dirs rename to barcode-0.98/debian/dirs diff --git a/glabels1/barcode-0.98/debian/info b/barcode-0.98/debian/info similarity index 100% rename from glabels1/barcode-0.98/debian/info rename to barcode-0.98/debian/info diff --git a/glabels1/barcode-0.98/debian/rules b/barcode-0.98/debian/rules similarity index 100% rename from glabels1/barcode-0.98/debian/rules rename to barcode-0.98/debian/rules diff --git a/glabels1/barcode-0.98/doc/Makefile.in b/barcode-0.98/doc/Makefile.in similarity index 100% rename from glabels1/barcode-0.98/doc/Makefile.in rename to barcode-0.98/doc/Makefile.in diff --git a/glabels1/barcode-0.98/doc/README b/barcode-0.98/doc/README similarity index 100% rename from glabels1/barcode-0.98/doc/README rename to barcode-0.98/doc/README diff --git a/glabels2/barcode-0.98/doc/barcode.info b/barcode-0.98/doc/barcode.info similarity index 100% rename from glabels2/barcode-0.98/doc/barcode.info rename to barcode-0.98/doc/barcode.info diff --git a/glabels2/barcode-0.98/doc/barcode.pdf b/barcode-0.98/doc/barcode.pdf similarity index 100% rename from glabels2/barcode-0.98/doc/barcode.pdf rename to barcode-0.98/doc/barcode.pdf diff --git a/glabels2/barcode-0.98/doc/barcode.ps b/barcode-0.98/doc/barcode.ps similarity index 100% rename from glabels2/barcode-0.98/doc/barcode.ps rename to barcode-0.98/doc/barcode.ps diff --git a/glabels2/barcode-0.98/doc/barcodedoc.txt b/barcode-0.98/doc/barcodedoc.txt similarity index 100% rename from glabels2/barcode-0.98/doc/barcodedoc.txt rename to barcode-0.98/doc/barcodedoc.txt diff --git a/glabels1/barcode-0.98/doc/doc.barcode b/barcode-0.98/doc/doc.barcode similarity index 100% rename from glabels1/barcode-0.98/doc/doc.barcode rename to barcode-0.98/doc/doc.barcode diff --git a/glabels1/barcode-0.98/doc/infofilter b/barcode-0.98/doc/infofilter similarity index 100% rename from glabels1/barcode-0.98/doc/infofilter rename to barcode-0.98/doc/infofilter diff --git a/glabels1/barcode-0.98/doc/manpager b/barcode-0.98/doc/manpager similarity index 100% rename from glabels1/barcode-0.98/doc/manpager rename to barcode-0.98/doc/manpager diff --git a/glabels1/barcode-0.98/doc/mktxt b/barcode-0.98/doc/mktxt similarity index 100% rename from glabels1/barcode-0.98/doc/mktxt rename to barcode-0.98/doc/mktxt diff --git a/glabels1/barcode-0.98/doc/texi2html b/barcode-0.98/doc/texi2html similarity index 100% rename from glabels1/barcode-0.98/doc/texi2html rename to barcode-0.98/doc/texi2html diff --git a/glabels1/barcode-0.98/ean.c b/barcode-0.98/ean.c similarity index 100% rename from glabels1/barcode-0.98/ean.c rename to barcode-0.98/ean.c diff --git a/glabels1/barcode-0.98/i25.c b/barcode-0.98/i25.c similarity index 100% rename from glabels1/barcode-0.98/i25.c rename to barcode-0.98/i25.c diff --git a/glabels1/barcode-0.98/install-sh b/barcode-0.98/install-sh similarity index 100% rename from glabels1/barcode-0.98/install-sh rename to barcode-0.98/install-sh diff --git a/glabels1/barcode-0.98/library.c b/barcode-0.98/library.c similarity index 100% rename from glabels1/barcode-0.98/library.c rename to barcode-0.98/library.c diff --git a/glabels1/barcode-0.98/main.c b/barcode-0.98/main.c similarity index 100% rename from glabels1/barcode-0.98/main.c rename to barcode-0.98/main.c diff --git a/glabels2/barcode-0.98/missing b/barcode-0.98/missing similarity index 100% rename from glabels2/barcode-0.98/missing rename to barcode-0.98/missing diff --git a/glabels1/mkinstalldirs b/barcode-0.98/mkinstalldirs similarity index 100% rename from glabels1/mkinstalldirs rename to barcode-0.98/mkinstalldirs diff --git a/glabels1/barcode-0.98/msi.c b/barcode-0.98/msi.c similarity index 100% rename from glabels1/barcode-0.98/msi.c rename to barcode-0.98/msi.c diff --git a/glabels1/barcode-0.98/pcl.c b/barcode-0.98/pcl.c similarity index 100% rename from glabels1/barcode-0.98/pcl.c rename to barcode-0.98/pcl.c diff --git a/glabels1/barcode-0.98/plessey.c b/barcode-0.98/plessey.c similarity index 100% rename from glabels1/barcode-0.98/plessey.c rename to barcode-0.98/plessey.c diff --git a/glabels1/barcode-0.98/ps.c b/barcode-0.98/ps.c similarity index 100% rename from glabels1/barcode-0.98/ps.c rename to barcode-0.98/ps.c diff --git a/glabels1/barcode-0.98/sample.c b/barcode-0.98/sample.c similarity index 100% rename from glabels1/barcode-0.98/sample.c rename to barcode-0.98/sample.c diff --git a/glabels2/configure.in b/configure.in similarity index 100% rename from glabels2/configure.in rename to configure.in diff --git a/glabels2/data/Makefile.am b/data/Makefile.am similarity index 100% rename from glabels2/data/Makefile.am rename to data/Makefile.am diff --git a/glabels2/data/builder/Makefile.am b/data/builder/Makefile.am similarity index 100% rename from glabels2/data/builder/Makefile.am rename to data/builder/Makefile.am diff --git a/glabels2/data/builder/merge-properties-dialog.builder b/data/builder/merge-properties-dialog.builder similarity index 100% rename from glabels2/data/builder/merge-properties-dialog.builder rename to data/builder/merge-properties-dialog.builder diff --git a/glabels2/data/builder/object-editor.builder b/data/builder/object-editor.builder similarity index 100% rename from glabels2/data/builder/object-editor.builder rename to data/builder/object-editor.builder diff --git a/glabels2/data/builder/prefs-dialog.builder b/data/builder/prefs-dialog.builder similarity index 100% rename from glabels2/data/builder/prefs-dialog.builder rename to data/builder/prefs-dialog.builder diff --git a/glabels2/data/builder/print-op-dialog-custom-widget.builder b/data/builder/print-op-dialog-custom-widget.builder similarity index 100% rename from glabels2/data/builder/print-op-dialog-custom-widget.builder rename to data/builder/print-op-dialog-custom-widget.builder diff --git a/glabels2/data/builder/property-bar.builder b/data/builder/property-bar.builder similarity index 100% rename from glabels2/data/builder/property-bar.builder rename to data/builder/property-bar.builder diff --git a/glabels2/data/builder/template-designer.builder b/data/builder/template-designer.builder similarity index 100% rename from glabels2/data/builder/template-designer.builder rename to data/builder/template-designer.builder diff --git a/glabels2/data/builder/wdgt-media-select.builder b/data/builder/wdgt-media-select.builder similarity index 100% rename from glabels2/data/builder/wdgt-media-select.builder rename to data/builder/wdgt-media-select.builder diff --git a/glabels2/data/desktop/Makefile.am b/data/desktop/Makefile.am similarity index 100% rename from glabels2/data/desktop/Makefile.am rename to data/desktop/Makefile.am diff --git a/glabels2/data/desktop/glabels.desktop.in b/data/desktop/glabels.desktop.in similarity index 100% rename from glabels2/data/desktop/glabels.desktop.in rename to data/desktop/glabels.desktop.in diff --git a/glabels2/data/man/Makefile.am b/data/man/Makefile.am similarity index 100% rename from glabels2/data/man/Makefile.am rename to data/man/Makefile.am diff --git a/glabels2/data/man/glabels.1 b/data/man/glabels.1 similarity index 100% rename from glabels2/data/man/glabels.1 rename to data/man/glabels.1 diff --git a/glabels2/data/mime/Makefile.am b/data/mime/Makefile.am similarity index 100% rename from glabels2/data/mime/Makefile.am rename to data/mime/Makefile.am diff --git a/glabels2/data/mime/glabels.applications b/data/mime/glabels.applications similarity index 100% rename from glabels2/data/mime/glabels.applications rename to data/mime/glabels.applications diff --git a/glabels2/data/mime/glabels.keys.in b/data/mime/glabels.keys.in similarity index 100% rename from glabels2/data/mime/glabels.keys.in rename to data/mime/glabels.keys.in diff --git a/glabels2/data/mime/glabels.mime b/data/mime/glabels.mime similarity index 100% rename from glabels2/data/mime/glabels.mime rename to data/mime/glabels.mime diff --git a/glabels2/data/mime/glabels.xml.in b/data/mime/glabels.xml.in similarity index 100% rename from glabels2/data/mime/glabels.xml.in rename to data/mime/glabels.xml.in diff --git a/glabels2/data/pixmaps/Makefile.am b/data/pixmaps/Makefile.am similarity index 100% rename from glabels2/data/pixmaps/Makefile.am rename to data/pixmaps/Makefile.am diff --git a/glabels2/data/pixmaps/ex-1layout.png b/data/pixmaps/ex-1layout.png similarity index 100% rename from glabels2/data/pixmaps/ex-1layout.png rename to data/pixmaps/ex-1layout.png diff --git a/glabels2/data/pixmaps/ex-2layouts.png b/data/pixmaps/ex-2layouts.png similarity index 100% rename from glabels2/data/pixmaps/ex-2layouts.png rename to data/pixmaps/ex-2layouts.png diff --git a/glabels2/data/pixmaps/ex-cd-size.png b/data/pixmaps/ex-cd-size.png similarity index 100% rename from glabels2/data/pixmaps/ex-cd-size.png rename to data/pixmaps/ex-cd-size.png diff --git a/glabels2/data/pixmaps/ex-rect-size.png b/data/pixmaps/ex-rect-size.png similarity index 100% rename from glabels2/data/pixmaps/ex-rect-size.png rename to data/pixmaps/ex-rect-size.png diff --git a/glabels2/data/pixmaps/ex-round-size.png b/data/pixmaps/ex-round-size.png similarity index 100% rename from glabels2/data/pixmaps/ex-round-size.png rename to data/pixmaps/ex-round-size.png diff --git a/glabels2/data/pixmaps/glabels-about-logo.png b/data/pixmaps/glabels-about-logo.png similarity index 100% rename from glabels2/data/pixmaps/glabels-about-logo.png rename to data/pixmaps/glabels-about-logo.png diff --git a/glabels2/data/pixmaps/glabels-application-x-glabels.png b/data/pixmaps/glabels-application-x-glabels.png similarity index 100% rename from glabels2/data/pixmaps/glabels-application-x-glabels.png rename to data/pixmaps/glabels-application-x-glabels.png diff --git a/glabels2/data/pixmaps/glabels-splash.png b/data/pixmaps/glabels-splash.png similarity index 100% rename from glabels2/data/pixmaps/glabels-splash.png rename to data/pixmaps/glabels-splash.png diff --git a/glabels2/data/pixmaps/glabels.png b/data/pixmaps/glabels.png similarity index 100% rename from glabels2/data/pixmaps/glabels.png rename to data/pixmaps/glabels.png diff --git a/glabels2/docs/Makefile.am b/docs/Makefile.am similarity index 100% rename from glabels2/docs/Makefile.am rename to docs/Makefile.am diff --git a/glabels2/docs/libglabels/Makefile.am b/docs/libglabels/Makefile.am similarity index 100% rename from glabels2/docs/libglabels/Makefile.am rename to docs/libglabels/Makefile.am diff --git a/glabels2/docs/libglabels/libglabels-decl-list.txt b/docs/libglabels/libglabels-decl-list.txt similarity index 100% rename from glabels2/docs/libglabels/libglabels-decl-list.txt rename to docs/libglabels/libglabels-decl-list.txt diff --git a/glabels2/docs/libglabels/libglabels-docs.sgml b/docs/libglabels/libglabels-docs.sgml similarity index 100% rename from glabels2/docs/libglabels/libglabels-docs.sgml rename to docs/libglabels/libglabels-docs.sgml diff --git a/glabels2/docs/libglabels/libglabels-overrides.txt b/docs/libglabels/libglabels-overrides.txt similarity index 100% rename from glabels2/docs/libglabels/libglabels-overrides.txt rename to docs/libglabels/libglabels-overrides.txt diff --git a/glabels2/docs/libglabels/libglabels-sections.txt b/docs/libglabels/libglabels-sections.txt similarity index 100% rename from glabels2/docs/libglabels/libglabels-sections.txt rename to docs/libglabels/libglabels-sections.txt diff --git a/glabels2/docs/libglabels/libglabels-undocumented.txt b/docs/libglabels/libglabels-undocumented.txt similarity index 100% rename from glabels2/docs/libglabels/libglabels-undocumented.txt rename to docs/libglabels/libglabels-undocumented.txt diff --git a/glabels2/docs/libglabels/libglabels.types b/docs/libglabels/libglabels.types similarity index 100% rename from glabels2/docs/libglabels/libglabels.types rename to docs/libglabels/libglabels.types diff --git a/glabels2/docs/libglabels/tmpl/category.sgml b/docs/libglabels/tmpl/category.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/category.sgml rename to docs/libglabels/tmpl/category.sgml diff --git a/glabels2/docs/libglabels/tmpl/db.sgml b/docs/libglabels/tmpl/db.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/db.sgml rename to docs/libglabels/tmpl/db.sgml diff --git a/glabels2/docs/libglabels/tmpl/enums.sgml b/docs/libglabels/tmpl/enums.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/enums.sgml rename to docs/libglabels/tmpl/enums.sgml diff --git a/glabels2/docs/libglabels/tmpl/libglabels-unused.sgml b/docs/libglabels/tmpl/libglabels-unused.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/libglabels-unused.sgml rename to docs/libglabels/tmpl/libglabels-unused.sgml diff --git a/glabels2/docs/libglabels/tmpl/libglabels.sgml b/docs/libglabels/tmpl/libglabels.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/libglabels.sgml rename to docs/libglabels/tmpl/libglabels.sgml diff --git a/glabels2/docs/libglabels/tmpl/paper.sgml b/docs/libglabels/tmpl/paper.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/paper.sgml rename to docs/libglabels/tmpl/paper.sgml diff --git a/glabels2/docs/libglabels/tmpl/str.sgml b/docs/libglabels/tmpl/str.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/str.sgml rename to docs/libglabels/tmpl/str.sgml diff --git a/glabels2/docs/libglabels/tmpl/template.sgml b/docs/libglabels/tmpl/template.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/template.sgml rename to docs/libglabels/tmpl/template.sgml diff --git a/glabels2/docs/libglabels/tmpl/xml-category.sgml b/docs/libglabels/tmpl/xml-category.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/xml-category.sgml rename to docs/libglabels/tmpl/xml-category.sgml diff --git a/glabels2/docs/libglabels/tmpl/xml-paper.sgml b/docs/libglabels/tmpl/xml-paper.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/xml-paper.sgml rename to docs/libglabels/tmpl/xml-paper.sgml diff --git a/glabels2/docs/libglabels/tmpl/xml-template.sgml b/docs/libglabels/tmpl/xml-template.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/xml-template.sgml rename to docs/libglabels/tmpl/xml-template.sgml diff --git a/glabels2/docs/libglabels/tmpl/xml.sgml b/docs/libglabels/tmpl/xml.sgml similarity index 100% rename from glabels2/docs/libglabels/tmpl/xml.sgml rename to docs/libglabels/tmpl/xml.sgml diff --git a/glabels2/glabels.spec.in b/glabels.spec.in similarity index 100% rename from glabels2/glabels.spec.in rename to glabels.spec.in diff --git a/glabels1/ABOUT-NLS b/glabels1/ABOUT-NLS deleted file mode 100644 index 022965c6..00000000 --- a/glabels1/ABOUT-NLS +++ /dev/null @@ -1,396 +0,0 @@ -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. - -Quick configuration advice -========================== - - 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, message inheritance, automatic -charset conversion or plural form handling) 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 already -provides the GNU `gettext' functions. If not, 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 --disable-nls - -will respectively bypass any pre-existing `gettext' to use the -internationalizing routines provided within this package, 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. - - The configuration process will not test for the `catgets' function -and therefore it will not be used. The reason is that even an -emulation of `gettext' on top of `catgets' could not provide all the -extensions of the GNU `gettext' library. - - 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 -`LL_CC' combination. Here `LL' is an ISO 639 two-letter language code, -and `CC' is an ISO 3166 two-letter country code. For example, let's -suppose that you speak German and live in Germany. At the shell -prompt, merely execute `setenv LANG de_DE' (in `csh'), -`export LANG; LANG=de_DE' (in `sh') or `export LANG=de_DE' (in `bash'). -This can be done from your `.login' or `.profile' file, once and for -all. - - You might think that the country code specification is redundant. -But in fact, some languages have dialects in different countries. For -example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The -country code serves to distinguish the dialects. - - The locale naming convention of `LL_CC', with `LL' denoting the -language and `CC' denoting the country, is the one use on systems based -on GNU libc. On other systems, some variations of this scheme are -used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -locales supported by your system for your country by running the command -`locale -a | grep '^LL''. - - Not all programs have translations for all languages. By default, an -English message is shown in place of a nonexistent translation. If you -understand other languages, you can set up a priority list of languages. -This is done through a different environment variable, called -`LANGUAGE'. GNU `gettext' gives preference to `LANGUAGE' over `LANG' -for the purpose of message handling, but you still need to have `LANG' -set to the primary language; this is required by other parts of the -system libraries. For example, some Swedish users who would rather -read translations in German than English for when Swedish is not -available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. - - In the `LANGUAGE' environment variable, but not in the `LANG' -environment variable, `LL_CC' combinations can be abbreviated as `LL' -to denote the language's main dialect. For example, `de' is equivalent -to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -(Portuguese as spoken in Portugal) in this context. - -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. The up-to-date list of -teams can be found at the Free Translation Project's homepage, -`http://www.iro.umontreal.ca/contrib/po/HTML/', in the "National teams" -area. - - 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 March -2002. The matrix shows, in regard of each package, for which languages -PO files have been submitted to translation coordination, with a -translation percentage of at least 50%. - - Ready PO files bg ca cs da de el en eo es et fi fr - +-------------------------------------+ - a2ps | [] [] [] [] | - bash | [] [] [] [] | - bfd | [] [] | - binutils | [] [] | - bison | [] [] [] | - clisp | [] [] [] [] | - cpio | [] [] [] [] | - diffutils | [] [] [] [] [] [] | - enscript | [] [] | - error | [] [] | - fetchmail | () [] [] [] () | - fileutils | [] [] [] [] [] | - findutils | [] [] [] [] [] | - flex | [] [] [] [] | - gas | [] [] | - gawk | [] [] | - gcal | [] [] | - gcc | [] [] | - gettext | [] [] [] [] [] | - gnupg | [] [] [] [] [] [] | - gprof | [] [] | - grep | [] [] [] [] [] [] | - hello | [] [] [] [] [] [] [] [] | - id-utils | [] [] [] | - indent | [] [] [] [] [] | - jpilot | () [] [] [] | - jwhois | [] [] | - kbd | [] [] | - ld | [] [] | - libc | [] [] [] [] [] [] [] | - lilypond | [] [] | - lynx | [] [] [] [] | - m4 | [] [] [] [] [] | - make | [] [] [] [] | - mysecretdiary | [] [] | - nano | [] () [] [] [] [] | - nano_1_0 | [] () [] [] [] [] | - opcodes | [] [] [] | - parted | [] [] [] [] | - ptx | [] [] [] [] [] | - python | | - recode | [] [] [] [] [] [] | - sed | [] [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] [] [] [] | - sharutils | [] [] [] [] [] [] | - sketch | () [] () | - soundtracker | [] [] [] | - sp | | - tar | [] [] [] [] [] [] | - texinfo | [] [] [] [] [] | - textutils | [] [] [] [] [] | - util-linux | [] [] [] [] | - vorbis-tools | | - wdiff | [] [] [] [] [] | - wget | [] [] [] [] [] [] [] [] | - +-------------------------------------+ - bg ca cs da de el en eo es et fi fr - 1 12 11 31 36 9 1 8 39 15 1 50 - - gl he hr hu id it ja ko lv nb nl nn - +-------------------------------------+ - a2ps | () () [] | - bash | | - bfd | [] | - binutils | [] | - bison | [] [] | - clisp | [] | - cpio | [] [] [] | - diffutils | [] [] [] | - enscript | [] | - error | [] | - fetchmail | | - fileutils | [] [] [] | - findutils | [] [] [] [] [] [] | - flex | [] | - gas | | - gawk | [] | - gcal | | - gcc | | - gettext | [] | - gnupg | [] [] [] | - gprof | | - grep | [] | - hello | [] [] [] [] [] [] [] [] [] [] | - id-utils | [] | - indent | [] [] [] | - jpilot | () () | - jwhois | | - kbd | | - ld | | - libc | [] [] [] [] | - lilypond | [] [] | - lynx | [] [] | - m4 | [] [] [] [] | - make | [] [] [] [] | - mysecretdiary | | - nano | [] [] [] () [] () [] | - nano_1_0 | [] [] [] () [] () [] | - opcodes | [] | - parted | [] [] [] | - ptx | [] [] [] [] | - python | | - recode | [] [] [] | - sed | [] [] [] [] [] [] [] | - sh-utils | [] [] [] [] [] | - sharutils | [] [] [] | - sketch | () | - soundtracker | [] | - sp | | - tar | [] [] [] | - texinfo | [] [] | - textutils | [] [] | - util-linux | () [] | - vorbis-tools | | - wdiff | | - wget | [] [] [] [] [] | - +-------------------------------------+ - gl he hr hu id it ja ko lv nb nl nn - 19 7 0 4 6 11 22 9 1 8 19 4 - - no pl pt pt_BR ru sk sl sv tr uk zh_TW - +----------------------------------------+ - a2ps | () () () [] [] [] () | 8 - bash | | 4 - bfd | [] [] | 5 - binutils | [] | 4 - bison | [] [] [] | 8 - clisp | | 5 - cpio | [] [] [] [] | 11 - diffutils | [] [] [] [] [] | 14 - enscript | [] [] [] | 6 - error | [] [] [] | 6 - fetchmail | () () [] | 4 - fileutils | [] [] [] [] | 12 - findutils | [] [] [] [] [] [] [] | 18 - flex | [] [] [] | 8 - gas | [] | 3 - gawk | [] [] | 5 - gcal | [] [] | 4 - gcc | [] | 3 - gettext | [] [] [] [] | 10 - gnupg | [] [] [] | 12 - gprof | [] [] | 4 - grep | [] [] [] | 10 - hello | [] [] [] [] [] [] [] | 25 - id-utils | [] [] | 6 - indent | [] [] [] [] | 12 - jpilot | () () | 3 - jwhois | () () [] | 3 - kbd | [] [] | 4 - ld | [] [] | 4 - libc | [] [] [] [] [] [] | 17 - lilypond | [] | 5 - lynx | [] [] [] | 9 - m4 | [] [] [] | 12 - make | [] [] [] [] | 12 - mysecretdiary | [] [] | 4 - nano | () [] [] [] [] | 14 - nano_1_0 | () [] [] [] | 13 - opcodes | [] [] | 6 - parted | [] [] [] | 10 - ptx | [] [] [] [] [] [] | 15 - python | | 0 - recode | [] [] [] [] | 13 - sed | [] [] [] [] [] [] | 21 - sh-utils | [] [] [] [] [] [] [] [] [] | 22 - sharutils | [] [] [] | 12 - sketch | [] () | 3 - soundtracker | [] | 5 - sp | | 0 - tar | [] [] [] [] [] [] [] | 16 - texinfo | [] [] [] | 10 - textutils | [] [] [] [] | 11 - util-linux | [] [] [] | 8 - vorbis-tools | [] | 1 - wdiff | [] [] [] [] | 9 - wget | [] [] [] [] [] [] [] | 20 - +----------------------------------------+ - 35 teams no pl pt pt_BR ru sk sl sv tr uk zh_TW - 55 domains 5 13 2 12 25 11 11 41 34 4 7 489 - - 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 March 2002 seems to be old, you may fetch a more recent copy of -this `ABOUT-NLS' file on most GNU archive sites. The most up-to-date -matrix with full percentage details can be found at -`http://www.iro.umontreal.ca/contrib/po/HTML/matrix.html'. - -Using `gettext' in new packages -=============================== - - If you are writing a freely available program and want to -internationalize it you are welcome to use GNU `gettext' in your -package. Of course you have to respect the GNU Library General Public -License which covers the use of the GNU `gettext' library. This means -in particular that even non-free programs can use `libintl' as a shared -library, whereas only free software can use `libintl' as a static -library or use modified versions of `libintl'. - - Once the sources are changed appropriately and the setup can handle -to use of `gettext' the only thing missing are the translations. The -Free Translation Project is also available for packages which are not -developed inside the GNU project. Therefore the information given above -applies also for every other Free Software Project. Contact -`translation@iro.umontreal.ca' to make the `.pot' files available to -the translation teams. - diff --git a/glabels1/AUTHORS b/glabels1/AUTHORS deleted file mode 100644 index 30c7f15f..00000000 --- a/glabels1/AUTHORS +++ /dev/null @@ -1,69 +0,0 @@ -gLabels Author -============== - -Jim Evins - -Acknowledgments -=============== - -nestor di -- Contributed the excellent splash -screen new in 0.4.3. - -Alessandro Rubini -- Author of the GNU Barcode Library. -This library provides a large chunk of the barcode functionality and is -distributed with glabels. See ./barcode-0.98/README for more information. - -Olivier Berger -- French translations -Marcus Bauer -- German translations -Takeshi AIHANA -- Japanese translations -Paulo Rogério Ormenese -- Brazilian Portuguese trans. -Víctor Moral -- Spanish translations -Vitaly Lipatov -- Russian translations -Shell, Hin-lik Hung -- Chinese Translations -Arkadiusz Lipiec -- Polish Translations - -The following people have submitted label templates or information about -particular products in the data/predefined-labels.template file: - - Hap - Olivier Berger - Marcus Bauer - Jochen Hein - Jonathan Buzzard - Jeff Davis - Ludger Solbach - Darren Ross - George Mitchell - Douglas Bollinger - Tim Jackson - John Stoffel - Dany De Bontridder - Andy Longton - Bostjan Muller - John Helms - no-exit - Mozilla from marela - Holger - Bill Tihen - Dan Gray - Keith Hudson - Tamas Bondar - George Mitchell - Erich Pfennig - Gwen Patton - Miek Gieben - Joerg Schmitz-Linneweber - David Makovský - Oliver Schwank - Akkana - Ted Poe - hans-helmut.belter - Uli Wachowitz - Stephan Hegel - Holger Reinmann - Michael Wojciechowski - Jim Mueller - -And many others for their many helpful suggestions and bug reports -- thanks. - - diff --git a/glabels1/COPYING b/glabels1/COPYING deleted file mode 100644 index d60c31a9..00000000 --- a/glabels1/COPYING +++ /dev/null @@ -1,340 +0,0 @@ - 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. diff --git a/glabels1/ChangeLog b/glabels1/ChangeLog deleted file mode 100644 index 3fbdc21a..00000000 --- a/glabels1/ChangeLog +++ /dev/null @@ -1,8 +0,0 @@ -2002-08-24 gettextize - - * Makefile.am (SUBDIRS): Add m4. - (SUBDIRS): Remove intl. - (ACLOCAL_AMFLAGS): New variable. - (EXTRA_DIST): Add config.rpath. - * configure.in (AC_OUTPUT): Add m4/Makefile. - diff --git a/glabels1/INSTALL b/glabels1/INSTALL deleted file mode 100644 index b42a17ac..00000000 --- a/glabels1/INSTALL +++ /dev/null @@ -1,182 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. diff --git a/glabels1/Makefile.am b/glabels1/Makefile.am deleted file mode 100644 index 56db8cff..00000000 --- a/glabels1/Makefile.am +++ /dev/null @@ -1,60 +0,0 @@ -## Process this file with automake to produce Makefile.in - -LIB_BARCODE_DIR = barcode-0.98 - -SUBDIRS = m4 po macros src doc - -EXTRA_DIST = config.rpath \ - glabels.desktop glabels.spec.in glabels.spec autogen.sh - -Applicationsdir = $(datadir)/gnome/apps/Applications -Applications_DATA = glabels.desktop - -pixmapdir=$(datadir)/pixmaps/glabels -configdir=$(datadir)/glabels - -install-data-local: - @$(NORMAL_INSTALL) - if test -d $(srcdir)/pixmaps; then \ - $(mkinstalldirs) $(pixmapdir); \ - for pixmap in $(srcdir)/pixmaps/*; do \ - if test -f $$pixmap; then \ - $(INSTALL_DATA) $$pixmap $(pixmapdir); \ - fi \ - done \ - fi - if test -d $(srcdir)/data; then \ - $(mkinstalldirs) $(configdir); \ - for file in $(srcdir)/data/*.template; do \ - if test -f $$file; then \ - $(INSTALL_DATA) $$file $(configdir); \ - fi \ - done \ - fi - -dist-hook: - if test -d pixmaps; then \ - mkdir $(distdir)/pixmaps; \ - for pixmap in pixmaps/*; do \ - if test -f $$pixmap; then \ - cp -p $$pixmap $(distdir)/pixmaps; \ - fi \ - done \ - fi - if test -d data; then \ - mkdir $(distdir)/data; \ - for file in data/*.template; do \ - if test -f $$file; then \ - cp -p $$file $(distdir)/data; \ - fi \ - done \ - fi - if test -d $(LIB_BARCODE_DIR); then \ - if test -f $(LIB_BARCODE_DIR)/Makefile; then \ - (cd $(LIB_BARCODE_DIR); $(MAKE) distclean); \ - fi; \ - mkdir $(distdir)/$(LIB_BARCODE_DIR); \ - cp -rp $(LIB_BARCODE_DIR)/* $(distdir)/$(LIB_BARCODE_DIR); \ - fi - -ACLOCAL_AMFLAGS = -I m4 diff --git a/glabels1/NEWS b/glabels1/NEWS deleted file mode 100644 index e69de29b..00000000 diff --git a/glabels1/README b/glabels1/README deleted file mode 100644 index cc3c6a92..00000000 --- a/glabels1/README +++ /dev/null @@ -1,121 +0,0 @@ -Copyright -========= - - gLabels - a GNOME-based label and business card creation program - - Copyright (C) 2000 Jim Evins - - 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 - - For more details see the file COPYING. - - - -What is gLabels -=============== - -gLabels is a small stand-alone program for creating labels and business -cards using a laser or ink-jet printer. - -System Requirements -=================== - -GNOME-LIBS-1.2.x -GTK+-1.2.x -LIBXML-1.8.x -GNOME-PRINT-0.25 -GDK-PIXBUF-0.11 - -All of these libraries are available as part of Gnome 1.4. - -NOTE: ------ -To compile gLabels on RPM based systems, you will need the development -RPMs (e.g. gnome-print-devel) installed for each of these libraries. For -example, the following './configure' error would indicate that you may -need to install the development RPM for the gnome-print library. - - checking for GNOME-PRINT >= 0.25... not found - configure: error: - - You need GNOME-PRINT 0.25 or later to build gLabels - If you think you already have this installed, consult the README. - -To verify this, do the following: - - $ rpm -q -a | grep gnome-print - -You should get something like this (your version numbers may be different): - - gnome-print-0.31-ximian.1 - gnome-print-devel-0.31-ximian.1 - -If you get no output, you will need to install both the library and -development RPMs. If you only get the first of these lines, you still -need to install the development RPMs. If you get the above error and -you get both of these lines, you probably have a fundamental configuration -problem. These RPMs should be available from wherever you received -your gnome distribution. - -NOTE: ------ -Special Note for Mandrake 8.1: I recently installed Mandrake 8.1 on a -partition of a test machine. I found that an rpm for gdk-pixbuf-devel -was on the 2nd CD, but it has a broken dependency (it's looking for -libgr-devel, which isn't on any of the CDs) so it did not show up in -Mandrake's package manager (at least that is what I suspect). I manually -installed it with rpm using the --nodeps option, and was able to compile -with no problem. - - -Usage notes: -============ -gLabels is still in its early stages of development and thus lacks any -"real" documentation. Most folks have found it fairly easy to use, at -least for its simple composition features. Beginning with version 0.4.x, -gLabels has a document-merge capability that might not be as intuitive -as these other features. - -The first step to performing a document merge is to prepare a source -document that contains your merge data. This data could be mailing -addresses or any other data that you wish to create unique labels or -cards for. Currently only a simple back-end for text files exists -- -others are planned. The currently supported text-file format is very -simple: each line is a record; fields are delimited by tabs, -commas, or colons; and newlines can be embedded into fields by using -the "\n" entity. This file could be created using any text editor or -could be created by another program or script. - -A label must then be configured to "point at" this data file. This is -accomplished with the "merge properties" dialog. This dialog is used -to select the exact data file format and file name (location). Customized -field keys can also be defined (the default keys are the column numbers). - -Finally, once the label has been configured for a data file, field keys -can be inserted into text and barcode objects in their property dialogs. - -Now that your label is configured, gLabels will print a unique label for -each record in your source document -- substituting fields from each -record for field keys in the all text and barcode objects. - -Beginning with 0.4.3, a simple CLI front-end called "glabels-batch" is -provided to print previously created glabels files from a shell, -other programs or scripts. Do a "glabels-batch --help" for usage -information. - -Author and Acknowledgments: -=========================== - -See the AUTHORS file. diff --git a/glabels1/TODO b/glabels1/TODO deleted file mode 100644 index abfa27bf..00000000 --- a/glabels1/TODO +++ /dev/null @@ -1,5 +0,0 @@ -Architecture/Design -------------------- - -- Port to Gnome 2.0 Platform - diff --git a/glabels1/acconfig.h b/glabels1/acconfig.h deleted file mode 100644 index c6f3e036..00000000 --- a/glabels1/acconfig.h +++ /dev/null @@ -1,10 +0,0 @@ -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY -#undef HAVE_LIBSM -#undef PACKAGE_LOCALE_DIR -#undef PACKAGE_DATA_DIR -#undef PACKAGE_SOURCE_DIR -#undef HACKTEXT diff --git a/glabels1/aclocal.m4 b/glabels1/aclocal.m4 deleted file mode 100644 index d10efeef..00000000 --- a/glabels1/aclocal.m4 +++ /dev/null @@ -1,1318 +0,0 @@ -dnl aclocal.m4 generated automatically by aclocal 1.4-p5 - -dnl Copyright (C) 1994, 1995-8, 1999, 2001 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)]) - -# 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([,]))]) - -# 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]) - -# aclocal-include.m4 -# -# This macro adds the name macrodir to the set of directories -# that `aclocal' searches for macros. - -# serial 1 - -dnl AM_ACLOCAL_INCLUDE(macrodir) -AC_DEFUN([AM_ACLOCAL_INCLUDE], -[ - AM_CONDITIONAL(INSIDE_GNOME_COMMON, test x = y) - - test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" - - for k in $1 ; do ACLOCAL="$ACLOCAL -I $k" ; done -]) - -dnl -dnl GNOME_INIT_HOOK (script-if-gnome-enabled, [failflag], [additional-inits]) -dnl -dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh -dnl is not found. -dnl - -AC_DEFUN([GNOME_INIT_HOOK],[ - AC_SUBST(GNOME_LIBS) - AC_SUBST(GNOMEUI_LIBS) - AC_SUBST(GNOMEGNORBA_LIBS) - AC_SUBST(GTKXMHTML_LIBS) - AC_SUBST(ZVT_LIBS) - AC_SUBST(GNOME_LIBDIR) - AC_SUBST(GNOME_INCLUDEDIR) - - AC_ARG_WITH(gnome-includes, - [ --with-gnome-includes Specify location of GNOME headers],[ - CFLAGS="$CFLAGS -I$withval" - ]) - - AC_ARG_WITH(gnome-libs, - [ --with-gnome-libs Specify location of GNOME libs],[ - LDFLAGS="$LDFLAGS -L$withval" - gnome_prefix=$withval - ]) - - AC_ARG_WITH(gnome, - [ --with-gnome Specify prefix for GNOME files], - if test x$withval = xyes; then - want_gnome=yes - dnl Note that an empty true branch is not - dnl valid sh syntax. - ifelse([$1], [], :, [$1]) - else - if test "x$withval" = xno; then - want_gnome=no - else - want_gnome=yes - LDFLAGS="$LDFLAGS -L$withval/lib" - CFLAGS="$CFLAGS -I$withval/include" - gnome_prefix=$withval/lib - fi - fi, - want_gnome=yes) - - if test "x$want_gnome" = xyes; then - - AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) - if test "$GNOME_CONFIG" = "no"; then - no_gnome_config="yes" - else - AC_MSG_CHECKING(if $GNOME_CONFIG works) - if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then - AC_MSG_RESULT(yes) - GNOME_GNORBA_HOOK([],$2) - GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`" - GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`" - GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`" - GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`" - ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`" - GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`" - GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`" - $1 - else - AC_MSG_RESULT(no) - no_gnome_config="yes" - fi - fi - - if test x$exec_prefix = xNONE; then - if test x$prefix = xNONE; then - gnome_prefix=$ac_default_prefix/lib - else - gnome_prefix=$prefix/lib - fi - else - gnome_prefix=`eval echo \`echo $libdir\`` - fi - - if test "$no_gnome_config" = "yes"; then - AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix) - if test -f $gnome_prefix/gnomeConf.sh; then - AC_MSG_RESULT(found) - echo "loading gnome configuration from" \ - "$gnome_prefix/gnomeConf.sh" - . $gnome_prefix/gnomeConf.sh - $1 - else - AC_MSG_RESULT(not found) - if test x$2 = xfail; then - AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install) - fi - fi - fi - fi - - if test -n "$3"; then - n="$3" - for i in $n; do - AC_MSG_CHECKING(extra library \"$i\") - case $i in - applets) - AC_SUBST(GNOME_APPLETS_LIBS) - GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets` - AC_MSG_RESULT($GNOME_APPLETS_LIBS);; - capplet) - AC_SUBST(GNOME_CAPPLET_LIBS) - GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet` - AC_MSG_RESULT($GNOME_CAPPLET_LIBS);; - *) - AC_MSG_RESULT(unknown library) - esac - done - fi -]) - -dnl -dnl GNOME_INIT ([additional-inits]) -dnl - -AC_DEFUN([GNOME_INIT],[ - GNOME_INIT_HOOK([],fail,$1) -]) - -dnl -dnl GNOME_GNORBA_HOOK (script-if-gnorba-found, failflag) -dnl -dnl if failflag is "failure" it aborts if gnorba is not found. -dnl - -AC_DEFUN([GNOME_GNORBA_HOOK],[ - GNOME_ORBIT_HOOK([],$2) - AC_CACHE_CHECK([for gnorba libraries],gnome_cv_gnorba_found,[ - gnome_cv_gnorba_found=no - if test x$gnome_cv_orbit_found = xyes; then - GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" - GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" - if test -n "$GNORBA_LIBS"; then - gnome_cv_gnorba_found=yes - fi - fi - ]) - AM_CONDITIONAL(HAVE_GNORBA, test x$gnome_cv_gnorba_found = xyes) - if test x$gnome_cv_orbit_found = xyes; then - $1 - GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" - GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" - AC_SUBST(GNORBA_CFLAGS) - AC_SUBST(GNORBA_LIBS) - else - if test x$2 = xfailure; then - AC_MSG_ERROR(gnorba library not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_GNORBA_CHECK], [ - GNOME_GNORBA_HOOK([],failure) -]) - -dnl -dnl GNOME_ORBIT_HOOK (script-if-orbit-found, failflag) -dnl -dnl if failflag is "failure" it aborts if orbit is not found. -dnl - -AC_DEFUN([GNOME_ORBIT_HOOK],[ - AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no) - AC_PATH_PROG(ORBIT_IDL,orbit-idl,no) - AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[ - if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then - gnome_cv_orbit_found=no - else - gnome_cv_orbit_found=yes - fi - ]) - AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes) - if test x$gnome_cv_orbit_found = xyes; then - $1 - ORBIT_CFLAGS=`orbit-config --cflags client server` - ORBIT_LIBS=`orbit-config --use-service=name --libs client server` - AC_SUBST(ORBIT_CFLAGS) - AC_SUBST(ORBIT_LIBS) - else - if test x$2 = xfailure; then - AC_MSG_ERROR(ORBit not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_ORBIT_CHECK], [ - GNOME_ORBIT_HOOK([],failure) -]) - -# isc-posix.m4 serial 1 (gettext-0.10.40) -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 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 1 - -# @defmac AC_PROG_CC_STDC -# @maindex PROG_CC_STDC -# @ovindex CC -# If the C compiler in not in ANSI C mode by default, try to add an option -# to output variable @code{CC} to make it so. This macro tries various -# options that select ANSI C on some system or another. It considers the -# compiler to be in ANSI C mode if it handles function prototypes correctly. -# -# If you use this macro, you should check after calling it whether the C -# compiler has been set to accept ANSI C; if not, the shell variable -# @code{am_cv_prog_cc_stdc} is set to @samp{no}. If you wrote your source -# code in ANSI C, you can make an un-ANSIfied copy of it by using the -# program @code{ansi2knr}, which comes with Ghostscript. -# @end defmac - -AC_DEFUN([AM_PROG_CC_STDC], -[AC_REQUIRE([AC_PROG_CC]) -AC_BEFORE([$0], [AC_C_INLINE]) -AC_BEFORE([$0], [AC_C_CONST]) -dnl Force this before AC_PROG_CPP. Some cpp's, eg on HPUX, require -dnl a magic option to avoid problems with ANSI preprocessor commands -dnl like #elif. -dnl FIXME: can't do this because then AC_AIX won't work due to a -dnl circular dependency. -dnl AC_BEFORE([$0], [AC_PROG_CPP]) -AC_MSG_CHECKING(for ${CC-cc} option to accept ANSI C) -AC_CACHE_VAL(am_cv_prog_cc_stdc, -[am_cv_prog_cc_stdc=no -ac_save_CC="$CC" -# 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 -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - AC_TRY_COMPILE( -[#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; -], [ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -], -[am_cv_prog_cc_stdc="$ac_arg"; break]) -done -CC="$ac_save_CC" -]) -if test -z "$am_cv_prog_cc_stdc"; then - AC_MSG_RESULT([none needed]) -else - AC_MSG_RESULT($am_cv_prog_cc_stdc) -fi -case "x$am_cv_prog_cc_stdc" in - x|xno) ;; - *) CC="$CC $am_cv_prog_cc_stdc" ;; -esac -]) - -dnl GNOME_COMPILE_WARNINGS -dnl Turn on many useful compiler warnings -dnl For now, only works on GCC -AC_DEFUN([GNOME_COMPILE_WARNINGS],[ - AC_ARG_ENABLE(compile-warnings, - [ --enable-compile-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_compile_warnings=minimum) - - AC_MSG_CHECKING(what warning flags to pass to the C compiler) - warnCFLAGS= - if test "x$GCC" != xyes; then - enable_compile_warnings=no - fi - - if test "x$enable_compile_warnings" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) warnCFLAGS="-Wall -Wunused" ;; - esac - - ## -W is not all that useful. And it cannot be controlled - ## with individual -Wno-xxx flags, unlike -Wall - if test "x$enable_compile_warnings" = "xyes"; then - warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith" - fi - fi - fi - AC_MSG_RESULT($warnCFLAGS) - - AC_ARG_ENABLE(iso-c, - [ --enable-iso-c Try to warn if code is not ISO C ],, - enable_iso_c=no) - - AC_MSG_CHECKING(what language compliance flags to pass to the C compiler) - complCFLAGS= - if test "x$enable_iso_c" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -ansi" ;; - esac - - case " $CFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCFLAGS) - if test "x$cflags_set" != "xyes"; then - CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS" - cflags_set=yes - AC_SUBST(cflags_set) - fi -]) - -dnl For C++, do basically the same thing. - -AC_DEFUN([GNOME_CXX_WARNINGS],[ - AC_ARG_ENABLE(cxx-warnings, - [ --enable-cxx-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_cxx_warnings=minimum) - - AC_MSG_CHECKING(what warning flags to pass to the C++ compiler) - warnCXXFLAGS= - if test "x$GCC" != xyes; then - enable_compile_warnings=no - fi - if test "x$enable_cxx_warnings" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CXXFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) warnCXXFLAGS="-Wall -Wno-unused" ;; - esac - - ## -W is not all that useful. And it cannot be controlled - ## with individual -Wno-xxx flags, unlike -Wall - if test "x$enable_cxx_warnings" = "xyes"; then - warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wshadow -Woverloaded-virtual" - fi - fi - fi - AC_MSG_RESULT($warnCXXFLAGS) - - AC_ARG_ENABLE(iso-cxx, - [ --enable-iso-cxx Try to warn if code is not ISO C++ ],, - enable_iso_cxx=no) - - AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler) - complCXXFLAGS= - if test "x$enable_iso_cxx" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CXXFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCXXFLAGS="$complCXXFLAGS -ansi" ;; - esac - - case " $CXXFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCXXFLAGS) - if test "x$cxxflags_set" != "xyes"; then - CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS" - cxxflags_set=yes - AC_SUBST(cxxflags_set) - fi -]) - -dnl GNOME_X_CHECKS -dnl -dnl Basic X11 related checks for X11. At the end, the following will be -dnl defined/changed: -dnl GTK_{CFLAGS,LIBS} From AM_PATH_GTK -dnl CPPFLAGS Will include $X_CFLAGS -dnl GNOME_HAVE_SM `true' or `false' depending on whether session -dnl management is available. It is available if -dnl both -lSM and X11/SM/SMlib.h exist. (Some -dnl Solaris boxes have the library but not the header) -dnl XPM_LIBS -lXpm if Xpm library is present, otherwise "" -dnl -dnl The following configure cache variables are defined (but not used): -dnl gnome_cv_passdown_{x_libs,X_LIBS,X_CFLAGS} -dnl -AC_DEFUN([GNOME_X_CHECKS], -[ - AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) - dnl Hope that GTK_CFLAGS have only -I and -D. Otherwise, we could - dnl test -z "$x_includes" || CPPFLAGS="$CPPFLAGS -I$x_includes" - dnl - dnl Use CPPFLAGS instead of CFLAGS because AC_CHECK_HEADERS uses - dnl CPPFLAGS, not CFLAGS - CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" - - saved_ldflags="$LDFLAGS" - LDFLAGS="$LDFLAGS $GTK_LIBS" - - gnome_cv_passdown_x_libs="$GTK_LIBS" - gnome_cv_passdown_X_LIBS="$GTK_LIBS" - gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS" - gnome_cv_passdown_GTK_LIBS="$GTK_LIBS" - - LDFLAGS="$saved_ldflags $GTK_LIBS" - -dnl We are requiring GTK >= 1.1.1, which means this will be fine anyhow. - USE_DEVGTK=true - -dnl AC_MSG_CHECKING([whether to use features from (unstable) GTK+ 1.1.x]) -dnl AC_EGREP_CPP(answer_affirmatively, -dnl [#include -dnl #ifdef GTK_HAVE_FEATURES_1_1_0 -dnl answer_affirmatively -dnl #endif -dnl ], dev_gtk=yes, dev_gtk=no) -dnl if test "$dev_gtk" = "yes"; then -dnl USE_DEVGTK=true -dnl fi -dnl AC_MSG_RESULT("$dev_gtk") - - GNOME_HAVE_SM=true - case "$GTK_LIBS" in - *-lSM*) - dnl Already found it. - ;; - *) - dnl Assume that if we have -lSM then we also have -lICE. - AC_CHECK_LIB(SM, SmcSaveYourselfDone, - [GTK_LIBS="-lSM -lICE $GTK_LIBS"],GNOME_HAVE_SM=false, - $x_libs -lICE) - ;; - esac - - if test "$GNOME_HAVE_SM" = true; then - AC_CHECK_HEADERS(X11/SM/SMlib.h,,GNOME_HAVE_SM=false) - fi - - if test "$GNOME_HAVE_SM" = true; then - AC_DEFINE(HAVE_LIBSM) - fi - - XPM_LIBS="" - AC_CHECK_LIB(Xpm, XpmFreeXpmImage, [XPM_LIBS="-lXpm"], , $x_libs) - AC_SUBST(XPM_LIBS) - - AC_REQUIRE([GNOME_PTHREAD_CHECK]) - LDFLAGS="$saved_ldflags" - - AC_PROVIDE([GNOME_X_CHECKS]) -]) - -# Configure paths for GTK+ -# Owen Taylor 97-11-3 - -dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]]) -dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS -dnl -AC_DEFUN(AM_PATH_GTK, -[dnl -dnl Get the cflags and libraries from the gtk-config script -dnl -AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)], - gtk_config_prefix="$withval", gtk_config_prefix="") -AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)], - gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="") -AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program], - , enable_gtktest=yes) - - for module in . $4 - do - case "$module" in - gthread) - gtk_config_args="$gtk_config_args gthread" - ;; - esac - done - - if test x$gtk_config_exec_prefix != x ; then - gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config - fi - fi - if test x$gtk_config_prefix != x ; then - gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix" - if test x${GTK_CONFIG+set} != xset ; then - GTK_CONFIG=$gtk_config_prefix/bin/gtk-config - fi - fi - - AC_PATH_PROG(GTK_CONFIG, gtk-config, no) - min_gtk_version=ifelse([$1], ,0.99.7,$1) - AC_MSG_CHECKING(for GTK - version >= $min_gtk_version) - no_gtk="" - if test "$GTK_CONFIG" = "no" ; then - no_gtk=yes - else - GTK_CFLAGS=`$GTK_CONFIG $gtk_config_args --cflags` - GTK_LIBS=`$GTK_CONFIG $gtk_config_args --libs` - gtk_config_major_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gtk_config_minor_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gtk_config_micro_version=`$GTK_CONFIG $gtk_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gtktest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$GTK_LIBS $LIBS" -dnl -dnl Now check if the installed GTK is sufficiently new. (Also sanity -dnl checks the results of gtk-config to some extent -dnl - rm -f conf.gtktest - AC_TRY_RUN([ -#include -#include -#include - -int -main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gtktest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = g_strdup("$min_gtk_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gtk_version"); - exit(1); - } - - if ((gtk_major_version != $gtk_config_major_version) || - (gtk_minor_version != $gtk_config_minor_version) || - (gtk_micro_version != $gtk_config_micro_version)) - { - printf("\n*** 'gtk-config --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n", - $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version, - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf ("*** was found! If gtk-config was correct, then it is best\n"); - printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n"); - printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n"); - printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n"); - printf("*** required on your system.\n"); - printf("*** If gtk-config was wrong, set the environment variable GTK_CONFIG\n"); - printf("*** to point to the correct copy of gtk-config, and remove the file config.cache\n"); - printf("*** before re-running configure\n"); - } -#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION) - else if ((gtk_major_version != GTK_MAJOR_VERSION) || - (gtk_minor_version != GTK_MINOR_VERSION) || - (gtk_micro_version != GTK_MICRO_VERSION)) - { - printf("*** GTK+ header files (version %d.%d.%d) do not match\n", - GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION); - printf("*** library (version %d.%d.%d)\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - } -#endif /* defined (GTK_MAJOR_VERSION) ... */ - else - { - if ((gtk_major_version > major) || - ((gtk_major_version == major) && (gtk_minor_version > minor)) || - ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n", - gtk_major_version, gtk_minor_version, gtk_micro_version); - printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n", - major, minor, micro); - printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n"); - printf("***\n"); - printf("*** If you have already installed a sufficiently new version, this error\n"); - printf("*** probably means that the wrong copy of the gtk-config shell script is\n"); - printf("*** being found. The easiest way to fix this is to remove the old version\n"); - printf("*** of GTK+, but you can also set the GTK_CONFIG environment to point to the\n"); - printf("*** correct copy of gtk-config. (In this case, you will have to\n"); - printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n"); - printf("*** so that the correct libraries are found at run-time))\n"); - } - } - return 1; -} -],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gtk" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GTK_CONFIG" = "no" ; then - echo "*** The gtk-config script installed by GTK could not be found" - echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GTK_CONFIG environment variable to the" - echo "*** full path to gtk-config." - else - if test -f conf.gtktest ; then - : - else - echo "*** Could not run GTK test program, checking why..." - CFLAGS="$CFLAGS $GTK_CFLAGS" - LIBS="$LIBS $GTK_LIBS" - AC_TRY_LINK([ -#include -#include -], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ], - [ echo "*** The test program compiled, but did not run. This usually means" - echo "*** that the run-time linker is not finding GTK or finding the wrong" - echo "*** version of GTK. If it is not finding GTK, 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 "***" - echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that" - echo "*** came with the system with the command" - echo "***" - echo "*** rpm --erase --nodeps gtk gtk-devel" ], - [ echo "*** The test program failed to compile or link. See the file config.log for the" - echo "*** exact error that occured. This usually means GTK was incorrectly installed" - echo "*** or that you have moved GTK since it was installed. In the latter case, you" - echo "*** may want to edit the gtk-config script: $GTK_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GTK_CFLAGS="" - GTK_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GTK_CFLAGS) - AC_SUBST(GTK_LIBS) - rm -f conf.gtktest -]) - -dnl -dnl And better, use gthreads instead... -dnl - -AC_DEFUN([GNOME_PTHREAD_CHECK],[ - PTHREAD_LIB="" - AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread", - [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads", - [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r", - [AC_CHECK_FUNC(pthread_create)] - )] - )] - ) - AC_SUBST(PTHREAD_LIB) - AC_PROVIDE([GNOME_PTHREAD_CHECK]) -]) - -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. -# -# Modified to never use included libintl. -# Owen Taylor , 12/15/1998 -# -# -# This file can 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. - -# serial 5 - -AC_DEFUN(AM_GNOME_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) - - USE_INCLUDED_LIBINTL=no - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS) -# 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_force_use_gnu_gettext="no" - - 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 gettext or catgets are available (in this order) we - dnl use this. Else we have to fall back to GNU NLS library. - dnl catgets is only used if permitted by option --with-catgets. - nls_cv_header_intl= - nls_cv_header_libgt= - CATOBJEXT=NONE - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc, - [AC_TRY_LINK([#include ], [return (int) gettext ("")], - gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)]) - - if test "$gt_cv_func_gettext_libc" != "yes"; then - AC_CHECK_LIB(intl, bindtextdomain, - [AC_CACHE_CHECK([for gettext in libintl], - gt_cv_func_gettext_libintl, - [AC_CHECK_LIB(intl, gettext, - gt_cv_func_gettext_libintl=yes, - gt_cv_func_gettext_libintl=no)], - gt_cv_func_gettext_libintl=no)]) - fi - - if test "$gt_cv_func_gettext_libc" = "yes" \ - || test "$gt_cv_func_gettext_libintl" = "yes"; then - AC_DEFINE(HAVE_GETTEXT) - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - AC_CHECK_FUNCS(dcgettext) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr], - [CATOBJEXT=.gmo - DATADIRNAME=share], - [CATOBJEXT=.mo - DATADIRNAME=lib]) - INSTOBJEXT=.mo - fi - fi - - # Added by Martin Baulig 12/15/98 for libc5 systems - if test "$gt_cv_func_gettext_libc" != "yes" \ - && test "$gt_cv_func_gettext_libintl" = "yes"; then - INTLLIBS=-lintl - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - AC_MSG_CHECKING([whether catgets can be used]) - AC_ARG_WITH(catgets, - [ --with-catgets use catgets functions if available], - nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) - AC_MSG_RESULT($nls_cv_use_catgets) - - if test "$nls_cv_use_catgets" = "yes"; then - dnl No gettext in C library. Try catgets next. - AC_CHECK_LIB(i, main) - AC_CHECK_FUNC(catgets, - [AC_DEFINE(HAVE_CATGETS) - INTLOBJS="\$(CATOBJS)" - AC_PATH_PROG(GENCAT, gencat, no)dnl -# if test "$GENCAT" != "no"; then -# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) -# if test "$GMSGFMT" = "no"; then -# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) -# fi -# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) -# USE_INCLUDED_LIBINTL=yes -# CATOBJEXT=.cat -# INSTOBJEXT=.cat -# DATADIRNAME=lib -# INTLDEPS='$(top_builddir)/intl/libintl.a' -# INTLLIBS=$INTLDEPS -# LIBS=`echo $LIBS | sed -e 's/-lintl//'` -# nls_cv_header_intl=intl/libintl.h -# nls_cv_header_libgt=intl/libgettext.h -# fi - ]) - fi - fi - - if test "$CATOBJEXT" = "NONE"; then - dnl Neither gettext nor catgets in included 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 - AC_DEFINE(ENABLE_NLS) - else - # Unset this variable since we use the non-zero value as a flag. - CATOBJEXT= -# dnl Mark actions used to generate GNU NLS library. -# INTLOBJS="\$(GETTOBJS)" -# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) -# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) -# AC_SUBST(MSGFMT) -# USE_INCLUDED_LIBINTL=yes -# CATOBJEXT=.gmo -# INSTOBJEXT=.mo -# DATADIRNAME=share -# INTLDEPS='$(top_builddir)/intl/libintl.a' -# INTLLIBS=$INTLDEPS -# LIBS=`echo $LIBS | sed -e 's/-lintl//'` -# nls_cv_header_intl=intl/libintl.h -# nls_cv_header_libgt=intl/libgettext.h - fi - - 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 2> /dev/null; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - else - DATADIRNAME=share - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) - AC_OUTPUT_COMMANDS( - [case "$CONFIG_FILES" in *po/Makefile.in*) - sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile - esac]) - - -# # If this is used in GNU gettext we have to set USE_NLS to `yes' -# # because some of the sources are only built for this goal. -# if test "$PACKAGE" = gettext; then -# USE_NLS=yes -# USE_INCLUDED_LIBINTL=yes -# 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(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(DATADIRNAME) - AC_SUBST(GMOFILES) - AC_SUBST(INSTOBJEXT) - AC_SUBST(INTLDEPS) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - ]) - -AC_DEFUN(AM_GNOME_GETTEXT, - [AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_CC])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_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ -unistd.h sys/param.h]) - AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ -strdup __argz_count __argz_stringify __argz_next]) - - if test "${ac_cv_func_stpcpy+set}" != "set"; then - AC_CHECK_FUNCS(stpcpy) - fi - if test "${ac_cv_func_stpcpy}" = "yes"; then - AC_DEFINE(HAVE_STPCPY) - fi - - AM_LC_MESSAGES - AM_GNOME_WITH_NLS - - 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= - if test "x$LINGUAS" = "x"; then - LINGUAS=$ALL_LINGUAS - fi - for lang in $LINGUAS; do - case "$ALL_LINGUAS" in - *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; - esac - 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 The reference to in the installed file - dnl must be resolved because we cannot expect the users of this - dnl to define HAVE_LOCALE_H. - if test $ac_cv_header_locale_h = yes; then - INCLUDE_LOCALE_H="#include " - else - INCLUDE_LOCALE_H="\ -/* The system does not provide the header . Take care yourself. */" - fi - AC_SUBST(INCLUDE_LOCALE_H) - - dnl Determine which catalog format we have (if any is needed) - dnl For now we know about two different formats: - dnl Linux libc-5 and the normal X/Open format - test -d intl || mkdir intl - if test "$CATOBJEXT" = ".cat"; then - AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) - - dnl Transform the SED scripts while copying because some dumb SEDs - dnl cannot handle comments. - sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed - fi - dnl po2tbl.sed is always needed. - sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ - $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed - - dnl In the intl/Makefile.in we have a special dependency which makes - dnl only sense for gettext. We comment this out for non-gettext - dnl packages. - if test "$PACKAGE" = "gettext"; then - GT_NO="#NO#" - GT_YES= - else - GT_NO= - GT_YES="#YES#" - fi - AC_SUBST(GT_NO) - AC_SUBST(GT_YES) - - 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 *** For now the libtool support in intl/Makefile is not for real. - l= - AC_SUBST(l) - - dnl Generate list of files to be processed by xgettext which will - dnl be included in po/Makefile. - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - ]) - - -# progtest.m4 serial 2 (gettext-0.10.40) -dnl Copyright (C) 1996-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 , 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], -[# 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 -]) - -# lcmessage.m4 serial 2 (gettext-0.10.40) -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], - [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]) - diff --git a/glabels1/autogen.sh b/glabels1/autogen.sh deleted file mode 100755 index 36a7320f..00000000 --- a/glabels1/autogen.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -srcdir=`dirname $0` -test -z "$srcdir" && srcdir=. - -PKG_NAME="the package." - -(test -f $srcdir/configure.in) || { - echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" - echo " top-level directory" - exit 1 -} - -. $srcdir/macros/autogen.sh diff --git a/glabels1/barcode-0.98/Makefile.in b/glabels1/barcode-0.98/Makefile.in deleted file mode 100644 index 848aa265..00000000 --- a/glabels1/barcode-0.98/Makefile.in +++ /dev/null @@ -1,141 +0,0 @@ -# -# This Makefile should run fine with both pmake and gmake -# - -CC = @CC@ -CFLAGS = @CFLAGS@ @DEFS@ @NO_GETOPT@ @NO_LIBPAPER@ @NO_STRERROR@ -RANLIB = @RANLIB@ - -INSTALL = @INSTALL@ - -LDFLAGS = -L. -l$(TARGET) @LIBPAPER@ - -prefix = @prefix@ -BINDIR = $(prefix)/bin -LIBDIR = $(prefix)/lib -INCDIR = $(prefix)/include -MAN1DIR = $(prefix)/man/man1 -MAN3DIR = $(prefix)/man/man3 -INFODIR = $(prefix)/info - -# getopt may be installed or not, if not take our copy -GETOPT_O = @GETOPT_O@ - -TARGET = barcode -LIBRARY = lib$(TARGET).a -MAN1 = $(TARGET).1 -MAN3 = $(TARGET).3 -INFO = doc/$(TARGET).info -HEADER = $(TARGET).h - -LIBOBJECTS = library.o ean.o code128.o code39.o code93.o i25.o \ - msi.o plessey.o codabar.o \ - ps.o pcl.o -EXEOBJECTS = main.o cmdline.o $(GETOPT_O) -ALLSOURCES = $(LIBOBJECTS:.o=.c) $(EXEOBJECT:.o=.c) - - -#Hmm... "RM" is undefined in pmake -RM = rm - -all: $(TARGET) $(LIBRARY) $(MAN1) $(MAN3) $(INFO) sample - -$(TARGET): $(LIBRARY) $(EXEOBJECTS) - $(CC) $(CFLAGS) $(EXEOBJECTS) $(LDFLAGS) -o $(TARGET) - -sample: sample.o $(LIBRARY) - $(CC) $(CFLAGS) sample.o $(LDFLAGS) -o $@ - -# Avoid the standard CFLAGS, to avoid -Wall and -DNO_GETOPT -compat/getopt.o: compat/getopt.c - $(CC) -O -c compat/getopt.c -o $@ - -$(LIBRARY): $(LIBOBJECTS) - $(AR) r $(LIBRARY) $(LIBOBJECTS) - $(RANLIB) $(LIBRARY) - -$(MAN1) $(MAN3): doc/doc.$(TARGET) - awk -f doc/manpager doc/doc.$(TARGET) - - -# Unfortunately, pmake has no "-C". Also, "pmake -n" doesn't follow the cd. -$(INFO): doc/doc.$(TARGET) - cd doc && $(MAKE) - -install: - $(INSTALL) -d $(BINDIR) $(INCDIR) $(LIBDIR) $(MAN1DIR) \ - $(MAN3DIR) $(INFODIR) - $(INSTALL) -c $(TARGET) $(BINDIR) - $(INSTALL) -c -m 0644 $(HEADER) $(INCDIR) - $(INSTALL) -c -m 0644 $(LIBRARY) $(LIBDIR) - $(INSTALL) -c -m 0644 $(MAN1) $(MAN1DIR) - $(INSTALL) -c -m 0644 $(MAN3) $(MAN3DIR) - $(INSTALL) -c -m 0644 $(INFO) $(INFODIR) - -uninstall: - $(RM) -f $(BINDIR)/$(TARGET) - $(RM) -f $(INCDIR)/$(HEADER) - $(RM) -f $(LIBDIR)/$(LIBRARY) - $(RM) -f $(MAN1DIR)/$(MAN1) - $(RM) -f $(MAN3DIR)/$(MAN3) - $(RM) -f $(INDODIR)/$(INFO) - -#Make clean keeps the compiled documents -clean: - $(RM) -f *.o */*.o *~ */*~ $(TARGET) $(LIBRARY) - $(RM) -f $(MAN1) $(MAN3) core sample - cd doc && $(MAKE) terse - $(RM) -f .depend - -distclean: clean - if [ -f build ]; then debian/rules clean; fi - # remove the configure stuff as well - $(RM) -f Makefile config.h config.log config.status config.cache \ - doc/Makefile - -cleanest: clean - cd doc && $(MAKE) clean - -Makefile: Makefile.in configure - ./configure - -configure: configure.in - autoconf - -.depend: $(ALLSOURCES) - $(CC) $(CFLAGS) -MM $(ALLSOURCES) > $@ - -depend: .depend - -tar: - @if [ "x" = "x$(RELEASE)" ]; then \ - n=`basename \`pwd\``; cd ..; tar cvf - $$n | gzip > $$n.tar.gz; \ - echo 'you can set a numeric $$(RELEASE) to make a named tar'; \ - else \ - if [ -d ../$(TARGET)-$(RELEASE) ]; then \ - rm -rf ../$(TARGET)-$(RELEASE); \ - fi; \ - mkdir ../$(TARGET)-$(RELEASE) || exit 1; \ - cp -a . ../$(TARGET)-$(RELEASE) && cd .. && \ - tar --exclude '*/CVS*' \ - -cvzf $(TARGET)-$(RELEASE).tar.gz $(TARGET)-$(RELEASE); \ - fi - -# print the version, as I usually forget to update it when distributing -printv: - @grep -n VERSION $(HEADER) /dev/null - @grep -n set.version doc/doc.$(TARGET) /dev/null - @grep -n dpkg.-i INSTALL /dev/null - -# and this is how I make the distribution -distrib: $(INFO) distclean tar printv - - -.PHONY: all install uninstall mostlyclean clean disclean depend \ - tar printv distrib - -# Only if make is gmake, have a rule to conditionally include .depend -@GMAKEDEPEND0@ -@GMAKEDEPEND1@ -@GMAKEDEPEND2@ - diff --git a/glabels1/barcode-0.98/configure b/glabels1/barcode-0.98/configure deleted file mode 100755 index 81f79e08..00000000 --- a/glabels1/barcode-0.98/configure +++ /dev/null @@ -1,1708 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.13 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -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' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -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 - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # 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 ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$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" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) 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) - # 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 << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --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 -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$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) - 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 ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.13" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - 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 "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# 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 -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# 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 - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=barcode.h - -# 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_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - 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 "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# 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 "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -ac_exeext= -ac_objext=o -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 - - - - -# Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:530: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="gcc" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -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 $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:560: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_prog_rejected=no - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - break - fi - done - IFS="$ac_save_ifs" -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 $# -gt 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 - set dummy "$ac_dir/$ac_word" "$@" - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - - if test -z "$CC"; then - case "`uname -s`" in - *win32* | *WIN32*) - # Extract the first word of "cl", so it can be a program name with args. -set dummy cl; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:611: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_CC="cl" - break - fi - done - IFS="$ac_save_ifs" -fi -fi -CC="$ac_cv_prog_CC" -if test -n "$CC"; then - echo "$ac_t""$CC" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - ;; - esac - fi - test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; } -fi - -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 -echo "configure:643: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -cat > conftest.$ac_ext << EOF - -#line 654 "configure" -#include "confdefs.h" - -main(){return(0);} -EOF -if { (eval echo configure:659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then - ac_cv_prog_cc_cross=no - else - ac_cv_prog_cc_cross=yes - fi -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_prog_cc_works=no -fi -rm -fr conftest* -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -echo "$ac_t""$ac_cv_prog_cc_works" 1>&6 -if test $ac_cv_prog_cc_works = no; then - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } -fi -echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 -echo "configure:685: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 -cross_compiling=$ac_cv_prog_cc_cross - -echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:690: checking whether we are using GNU C" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.c <&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes -else - ac_cv_prog_gcc=no -fi -fi - -echo "$ac_t""$ac_cv_prog_gcc" 1>&6 - -if test $ac_cv_prog_gcc = yes; then - GCC=yes -else - GCC= -fi - -ac_test_CFLAGS="${CFLAGS+set}" -ac_save_CFLAGS="$CFLAGS" -CFLAGS= -echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 -echo "configure:718: checking whether ${CC-cc} accepts -g" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - echo 'void f(){}' > conftest.c -if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then - ac_cv_prog_cc_g=yes -else - ac_cv_prog_cc_g=no -fi -rm -f conftest* - -fi - -echo "$ac_t""$ac_cv_prog_cc_g" 1>&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 - -# Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:752: checking for $ac_word" >&5 -if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else - IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" - ac_dummy="$PATH" - for ac_dir in $ac_dummy; do - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$ac_word; then - ac_cv_prog_RANLIB="ranlib" - break - fi - done - IFS="$ac_save_ifs" - test -z "$ac_cv_prog_RANLIB" && ac_cv_prog_RANLIB=":" -fi -fi -RANLIB="$ac_cv_prog_RANLIB" -if test -n "$RANLIB"; then - echo "$ac_t""$RANLIB" 1>&6 -else - echo "$ac_t""no" 1>&6 -fi - -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 - fi -done -if test -z "$ac_aux_dir"; then - { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -fi -ac_config_guess=$ac_aux_dir/config.guess -ac_config_sub=$ac_aux_dir/config.sub -ac_configure=$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 -# 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 $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 -echo "configure:810: checking for a BSD compatible install" >&5 -if test -z "$INSTALL"; then -if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":" - for ac_dir in $PATH; do - # Account for people who put trailing slashes in PATH elements. - case "$ac_dir/" in - /|./|.//|/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 - if test -f $ac_dir/$ac_prog; then - if test $ac_prog = install && - grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - IFS="$ac_save_IFS" - -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 "$ac_t""$INSTALL" 1>&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_PROGRAM}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -if test x$GCC = xyes; then - CFLAGS="$CFLAGS -Wall" -fi - - -echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:869: checking how to run the C preprocessor" >&5 -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then -if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - # This must be in double quotes, not single quotes, because CPP may get - # substituted into the Makefile and "${CC-cc}" will confuse make. - CPP="${CC-cc} -E" - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:890: \"$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 - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:907: \"$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 - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < -Syntax Error -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:924: \"$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 - : -else - echo "$ac_err" >&5 - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - CPP=/lib/cpp -fi -rm -f conftest* -fi -rm -f conftest* -fi -rm -f conftest* - ac_cv_prog_CPP="$CPP" -fi - CPP="$ac_cv_prog_CPP" -else - ac_cv_prog_CPP="$CPP" -fi -echo "$ac_t""$CPP" 1>&6 - -ac_safe=`echo "getopt.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for getopt.h""... $ac_c" 1>&6 -echo "configure:950: checking for getopt.h" >&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 < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:960: \"$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 "configure: 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 -NO_GETOPT=-DNO_GETOPT;GETOPT_O=compat/getopt.o -fi - -ac_safe=`echo "paper.h" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for paper.h""... $ac_c" 1>&6 -echo "configure:984: checking for paper.h" >&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 < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:994: \"$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 "configure: 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 - LIBPAPER=-lpaper -else - echo "$ac_t""no" 1>&6 -NO_LIBPAPER=-DNO_LIBPAPER -fi - -for ac_hdr in unistd.h -do -ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` -echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:1020: 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 < -EOF -ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1030: \"$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 "configure: 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 - ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'` - cat >> confdefs.h <&6 -fi -done - - -echo $ac_n "checking for strerror""... $ac_c" 1>&6 -echo "configure:1058: checking for strerror" >&5 -if eval "test \"`echo '$''{'ac_cv_func_strerror'+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 strerror(); - -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_strerror) || defined (__stub___strerror) -choke me -#else -strerror(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_strerror=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_strerror=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'strerror`\" = yes"; then - echo "$ac_t""yes" 1>&6 - : -else - echo "$ac_t""no" 1>&6 -NO_STRERROR=-DNO_STRERROR -fi - -for ac_func in strcasecmp -do -echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1109: checking for $ac_func" >&5 -if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+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 $ac_func(); - -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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -$ac_func(); -#endif - -; return 0; } -EOF -if { (eval echo configure:1137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - eval "ac_cv_func_$ac_func=no" -fi -rm -f conftest* -fi - -if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then - echo "$ac_t""yes" 1>&6 - ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - cat >> confdefs.h <&6 -fi -done - - -echo $ac_n "checking "for gmake"""... $ac_c" 1>&6 -echo "configure:1163: checking "for gmake"" >&5 -GMAKE=no -${MAKE=make} --version 2> /dev/null | grep GNU > /dev/null && GMAKE=yes -echo "$ac_t""$GMAKE" 1>&6 -if test "$GMAKE" = "yes"; then - GMAKEDEPEND0='ifeq (.depend,$(wildcard .depend))' - GMAKEDEPEND1='include .depend' - GMAKEDEPEND2='endif' -fi - -echo $ac_n "checking "if makeinfo can output html"""... $ac_c" 1>&6 -echo "configure:1174: checking "if makeinfo can output html"" >&5 -MAKEINFOHTML=no -${MAKEINFO=makeinfo} --help | grep .--html > /dev/null && MAKEINFOHTML=yes -echo "$ac_t""$MAKEINFOHTML" 1>&6 -if test "$MAKEINFOHTML" = "yes"; then - REMOVEHTMLTAGS="cat" - INFOTOHTML="$MAKEINFO --html" -else - REMOVEHTMLTAGS="sed 's/ifnottex/ifinfo/; s/ifnotinfo/iftex/'" - INFOTOHTML="perl texi2html -monolithic" -fi - - - - - - - - - - - -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 - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@FFLAGS@%$FFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g -s%@CC@%$CC%g -s%@RANLIB@%$RANLIB%g -s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g -s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g -s%@INSTALL_DATA@%$INSTALL_DATA%g -s%@CPP@%$CPP%g -s%@GETOPT_O@%$GETOPT_O%g -s%@NO_GETOPT@%$NO_GETOPT%g -s%@NO_LIBPAPER@%$NO_LIBPAPER%g -s%@LIBPAPER@%$LIBPAPER%g -s%@NO_STRERROR@%$NO_STRERROR%g -s%@GMAKEDEPEND0@%$GMAKEDEPEND0%g -s%@GMAKEDEPEND1@%$GMAKEDEPEND1%g -s%@GMAKEDEPEND2@%$GMAKEDEPEND2%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# 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_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - - - - - -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 - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS </dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.13" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir -ac_given_INSTALL="$INSTALL" - -trap 'rm -fr `echo "doc/Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS < conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@MAKEINFO@%$MAKEINFO%g -s%@REMOVEHTMLTAGS@%$REMOVEHTMLTAGS%g -s%@INFOTOHTML@%$INFOTOHTML%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# 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_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # 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" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - case "$ac_given_INSTALL" in - [/$]*) INSTALL="$ac_given_INSTALL" ;; - *) INSTALL="$ac_dots$ac_given_INSTALL" ;; - esac - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -s%@INSTALL@%$INSTALL%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - - diff --git a/glabels1/barcode-0.98/configure.in b/glabels1/barcode-0.98/configure.in deleted file mode 100644 index 07120b48..00000000 --- a/glabels1/barcode-0.98/configure.in +++ /dev/null @@ -1,65 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_INIT(barcode.h) -AC_PREREQ(2.12) - -AC_PROG_CC -AC_PROG_RANLIB -AC_PROG_INSTALL - -dnl Add "-Wall" if this is gcc -if test x$GCC = xyes; then - CFLAGS="$CFLAGS -Wall" -fi - - -dnl Check for getopt and libpaper. If getopt is missing, use our version -AC_CHECK_HEADER(getopt.h, ,NO_GETOPT=-DNO_GETOPT;GETOPT_O=compat/getopt.o) -AC_CHECK_HEADER(paper.h, LIBPAPER=-lpaper, NO_LIBPAPER=-DNO_LIBPAPER) -AC_CHECK_HEADERS(unistd.h) - -AC_CHECK_FUNC(strerror, , NO_STRERROR=-DNO_STRERROR) -AC_CHECK_FUNCS(strcasecmp) - -dnl Check if this is gmake, but allow ovverriding using $MAKE -AC_MSG_CHECKING("for gmake") -GMAKE=no -${MAKE=make} --version 2> /dev/null | grep GNU > /dev/null && GMAKE=yes -AC_MSG_RESULT($GMAKE) -if test "$GMAKE" = "yes"; then - GMAKEDEPEND0='ifeq (.depend,$(wildcard .depend))' - GMAKEDEPEND1='include .depend' - GMAKEDEPEND2='endif' -fi - -dnl Check if we use makeinfo or the local texi2html tool -AC_MSG_CHECKING("if makeinfo can output html") -MAKEINFOHTML=no -${MAKEINFO=makeinfo} --help | grep .--html > /dev/null && MAKEINFOHTML=yes -AC_MSG_RESULT($MAKEINFOHTML) -if test "$MAKEINFOHTML" = "yes"; then - REMOVEHTMLTAGS="cat" - INFOTOHTML="$MAKEINFO --html" -else - REMOVEHTMLTAGS="sed 's/ifnottex/ifinfo/; s/ifnotinfo/iftex/'" - INFOTOHTML="perl texi2html -monolithic" -fi - - -AC_SUBST(GETOPT_O) -AC_SUBST(NO_GETOPT) -AC_SUBST(NO_LIBPAPER) -AC_SUBST(LIBPAPER) -AC_SUBST(NO_STRERROR) -AC_SUBST(GMAKEDEPEND0) -AC_SUBST(GMAKEDEPEND1) -AC_SUBST(GMAKEDEPEND2) - -AC_OUTPUT(Makefile) - -AC_SUBST(MAKEINFO) -AC_SUBST(REMOVEHTMLTAGS) -AC_SUBST(INFOTOHTML) - -AC_OUTPUT(doc/Makefile) - diff --git a/glabels1/barcode-0.98/doc/barcode.info b/glabels1/barcode-0.98/doc/barcode.info deleted file mode 100644 index 693ca798..00000000 --- a/glabels1/barcode-0.98/doc/barcode.info +++ /dev/null @@ -1,747 +0,0 @@ -This is barcode.info, produced by makeinfo version 4.0 from -barcode.texinfo. - - This file is the User's Manual for the barcode library (version -0.98). - - -File: barcode.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir) - -Barcode tools -************* - - This file documents version 0.98 of the barcode library and sample -programs (March 2002). - -* Menu: - -* Overview:: -* The Barcode Object:: -* Supported Flags:: -* The API:: -* The barcode Executable:: -* Supported Encodings:: -* PCL Output:: -* Bugs and Pending Issues:: - - -File: barcode.info, Node: Overview, Next: The Barcode Object, Prev: Top, Up: Top - -Overview -******** - - The "barcode" package is mainly a C library for creating bar-code -output files. It also includes a command line front-end and (in a -foreseeable future) a graphic frontend. - - The package is designed as a library because we think the main use -for barcode-generation tools is inside more featured applications. The -library addresses bar code printing as two distinct problems: creation -of bar information and actual conversion to an output format. To this -aim we use an intermediate representation for bar codes, which is -currently documented in the `ps.c' source file (not in this document). - - Note that the library and the accompanying material is released -according to the GPL license, not the LGPL one. A copy of the GPL is -included in the distribution tarball. - - -File: barcode.info, Node: The Barcode Object, Next: Supported Flags, Prev: Overview, Up: Top - -The Underlying Data Structure -***************************** - - Every barcode-related function acts on a data structure defined in -the `barcode.h' header, which must be included by any C source file -that uses the library. The header is installed by make install. - - The definition of the data structure is included here for reference: - - struct Barcode_Item { - int flags; /* type of encoding and other flags */ - char *ascii; /* malloced */ - char *partial; /* malloced too */ - char *textinfo; /* information about text placement */ - char *encoding; /* code name, filled by encoding engine */ - int width, height; /* output units */ - int xoff, yoff; /* output units */ - int margin; /* output units */ - double scalef; /* requested scaling for barcode */ - int error; /* an errno-like value, in case of failure */ - }; - - The exact meaning of each field and the various flags implemented are -described in the following sections. - - Even though you won't usually need to act on the contents of this -structure, some of the functions in the library receive arguments that -are directly related to one or more of these fields. - -* Menu: - -* The Field List:: -* The Intermediate Representation:: - - -File: barcode.info, Node: The Field List, Next: The Intermediate Representation, Prev: The Barcode Object, Up: The Barcode Object - -The Fields -========== - -`int flags;' - The flags are, as you may suspect, meant to specify the exact - behaviour of the library. They are often passed as an argument to - barcode functions and are discussed in the next section. - -`char *ascii;' -`char *partial;' -`char *textinfo;' -`char *encoding;' - These fields are internally managed by the library, and you are - not expected to touch them if you use the provided API. All of - them are allocated with malloc. - -`int width;' -`int height;' - They specify the width and height of the active barcode region - (i.e., excluding the white margin), in the units used to create - output data (for postscript they are points, 1/72th of an inch, - 0.352 mm). The fields can be either assigned to in the structure - or via Barcode_Position(), at your choice. If either value or - both are left to their default value of zero, the output engine - will assign default values according to the specified scaling - factor. If the specified width is bigger than needed (according to - the scaling factor), the output barcode will be centered in its - requested region. If either the width of the height are too small - for the specified scale factor, the output bar code will expand - symmetrically around the requested region. - -`int xoff;' -`int yoff;' - The fields specify offset from the coordinate origin of the output - engine (for postscript, position 0,0 is the lower left corner of - the page). The fields can be either assigned to in the structure - or via Barcode_Position(), at your choice. The offset specifies - where the white margin begins, not where the first bar will be - printed. To print real ink to the specified position you should - set margin to 0. - -`int margin;' - The white margin that will be left around the printed area of the - bar code. The same margin is applied to all sides of the printed - area. The default value for the margin is defined in `barcode.h' - as BARCODE_DEFAULT_MARGIN (10). - -`double scalef;' - The enlarge or shrink value for the bar code over its default - dimension. The width and scalef fields interact deeply in the - creation of the output, and a complete description of the issues - appears later in this section. - -`int error;' - The field is used when a barcode function fails to host an - errno-like integer value. - -Use of the width and scalef fields. ------------------------------------ - - A width unit is the width of the thinnest bar and/or space in the -chosen code; it defaults to 1 point if the output is postscript or -encapsulated postscript. - - Either or both the code width and the scale factor can be left -unspecified (i.e., zero). The library deals with defaults in the -following way: - -Both unspecified - If both the width and the scale factor are unspecified, the scale - factor will default to 1.0 and the width is calculated according - to the actual width of the bar code being printed. - -Width unspecified - If the width is not specified, it is calculated according to the - values of scalef. - -Scale factor unspecified - If the scale factor is not specified, it will be chosen so that - the generated bar code exactly fits the specified width. - -Both specified - The code will be printed inside the specified region according to - the specified scale factor. It will be aligned to the left. If, - however, the chosen width is too small for the specific bar code - and scaling factor, then the code will extend symmetrically to the - left and to the right of the chosen region. - - -File: barcode.info, Node: The Intermediate Representation, Prev: The Field List, Up: The Barcode Object - -The Intermediate Representation -=============================== - - The encoding functions print their output into the partial and -texinfo fields of the barcode data structure. Those fields, together -with position information, are then used to generate actual output. -This is an informal description of the intermediate format. - - The first char in partial tells how much extra space to add to the -left of the bars. For EAN-13, it is used to leave space to print the -first digit, other codes may have '0' for no-extra-space-needed. - - The next characters are alternating bars and spaces, as multiples of -the base dimension which is 1 unless the code is rescaled. Rescaling is -calculated as the ratio from the requested width and the calculated -width. Digits represent bar/space dimensions. Lower-case letters -represent those bars that should extend lower than the others: 'a' is -equivalent to '1', 'b' is '2' and so on up to 'i' which is equivalent to -'9'. Other letters will be used for encoding-specific meanings, as soon -as I implement them. - - The textinfo string is made up of fields %lf:%lf:%c separated by -blank space. The first integer is the x position of the character, the -second is the font size (before rescaling) and the char item is the -character to be printed. - - Both the partial and textinfo strings may include "-" or "+" as -special characters (in textinfo the char should be a stand-alone word). -They state where the text should be printed: below the bars ("-", -default) or above the bars. This is used, for example, to print the -add-5 and add-2 codes to the right of UPC or EAN codes (the add-5 -extension is mostly used in ISBN codes). - - -File: barcode.info, Node: Supported Flags, Next: The API, Prev: The Barcode Object, Up: Top - -The Flags -********* - - The following flags are supported by version 0.98 of the library: - -`BARCODE_ENCODING_MASK' - The mask is used to extract the encoding-type identifier from the - flags field. - -`BARCODE_EAN' -`BARCODE_UPC' -`BARCODE_ISBN' -`BARCODE_128B' -`BARCODE_128C' -`BARCODE_128' -`BARCODE_128RAW' -`BARCODE_39' -`BARCODE_I25' -`BARCODE_CBR' -`BARCODE_MSI' -`BARCODE_PLS' -`BARCODE_93' - The currently supported encoding types: EAN (13 digits, 8 digits, - 13 + 2 add-on and 13 + 5 add-on), UPC (UPC-A, UPC-E, UPC-A with 2 - or 5 digit add-on), ISBN (with or without the 5-digit add-on), - CODE128-B (the whole set of printable ASCII characters), CODE128-C - (two digits encoded by each barcode symbol), CODE128 (all ASCII - values), a "raw-input" pseudo-code that generates CODE128 output, - CODE39 (alphanumeric), "interleaved 2 of 5" (numeric), Codabar - (numeric plus a few symbols), MSI (numeric) and Plessey (hex - digits). *Note Supported Encodings::. - -`BARCODE_ANY' - This special encoding type (represented by a value of zero, so it - will be the default) tells the encoding procedure to look for the - first encoding type that can deal with a textual string. - Therefore, a 11-digit code will be printed as UPC (as well as - 6-digit, 11+2 and 11+5), a 12-digit (or 7-digit, or 12+2 or 12+5) - as EAN13, an ISBN code (with or without hyphens, with or without - add-5) will be encoded in its EAN13 representation, an even number - of digits is encoded using CODE128C and a generic string is - encoded using CODE128B. Since code-39 offers a much larger - representation for the same text string, code128-b is preferred - over code39 for alphanumeric strings. - -`BARCODE_NO_ASCII' - Instructs the engine not to print the ascii string on output. By - default the bar code is accompanied with an ascii version of the - text it encodes. - -`BARCODE_NO_CHECKSUM' - Instructs the engine not to add the checksum character to the - output. Not all the encoding types can drop the checksum; those - where the checksum is mandatory (like EAN and UPC) just ignore the - flag. - -`BARCODE_OUTPUT_MASK' - The mask is used to extract the output-type identifier from the - flags field. - -`BARCODE_OUT_PS' -`BARCODE_OUT_EPS' -`BARCODE_OUT_PCL' -`BARCODE_OUT_PCL_III' - The currently supported encoding types: full-page postscript and - encapsulated postscript; PCL (print command language, for HP - printers) and PCL-III (same as PCL, but uses a font not available - on older printers). - -`BARCODE_OUT_NOHEADERS' - The flag instructs the printing engine not to print the header and - footer part of the file. This makes sense for the postscript - engine but might not make sense for other engines; such other - engines will silently ignore the flag just like the PCL back-end - does. - - -File: barcode.info, Node: The API, Next: The barcode Executable, Prev: Supported Flags, Up: Top - -Functions Exported by the Library -********************************* - - The functions included in the barcode library are declared in the -header file barcode.h. They perform the following tasks: - -`struct Barcode_Item *Barcode_Create(char *text);' - The function creates a new barcode object to deal with a specified - text string. It returns NULL in case of failure and a pointer to - a barcode data structure in case of success. - -`int Barcode_Delete(struct Barcode_Item *bc);' - Destroy a barcode object. Always returns 0 (success) - -`int Barcode_Encode(struct Barcode_Item *bc, int flags);' - Encode the text included in the bc object. Valid flags are the - encoding type (other flags are ignored) and BARCODE_NO_CHECKSUM - (other flags are silently ignored); if the flag argument is zero, - bc->flags will apply. The function returns 0 on success and -1 in - case of error. After successful termination the data structure - will host the description of the bar code and its textual - representation, after a failure the error field will include the - reason of the failure. - -`int Barcode_Print(struct Barcode_Item *bc, FILE *f, int flags);' - Print the bar code described by bc to the specified file. Valid - flags are the output type, BARCODE_NO_ASCII and - BARCODE_OUT_NOHEADERS, other flags are ignored. If any of these - flags is zero, it will be inherited from bc->flags which therefore - takes precedence. The function returns 0 on success and -1 in case - of error (with bc->error set accordingly). In case of success, the - bar code is printed to the specified file, which won't be closed - after use. - -`int Barcode_Position(struct Barcode_Item *bc, int wid, int hei, int xoff, int yoff, double scalef);' - The function is a shortcut to assign values to the data structure. - -`int Barcode_Encode_and_Print(char *text, FILE *f, int wid, int hei, int xoff, int yoff, int flags);' - The function deals with the whole life of the barcode object by - calling the other functions; it uses all the specified flags. - -`int Barcode_Version(char *versionname);' - Returns the current version as an integer number of the form major - * 10000 + minor * 100 + release. Therefore, version 1.03.5 will be - returned as 10305 and version 0.53 as 5300. If the argument is - non-null, it will be used to return the version number as a - string. Note that the same information is available from two - preprocessor macros: BARCODE_VERSION (the string) and - BARCODE_VERSION_INT (the integer number). - - -File: barcode.info, Node: The barcode Executable, Next: Supported Encodings, Prev: The API, Up: Top - -The barcode frontend program -**************************** - - The barcode program is a front-end to access some features of the -library from the command line. It is able to read user supplied -strings from the command line or a data file (standard input by default) -and encode all of them. - -* Menu: - -* The Command Line:: - - -File: barcode.info, Node: The Command Line, Prev: The barcode Executable, Up: The barcode Executable - -The Command Line -================ - - barcode accepts the following options: - -`--help or -h' - Print a usage summary and exit. - -`-i filename' - Identify a file where strings to be encoded are read from. If - missing (and if -b is not used) it defaults to standard input. - Each data line of the input file will be used to create one - barcode output. - -`-o filename' - Output file. It defaults to standard output. - -`-b string' - Specify a single "barcode" string to be encoded. The option can - be used multiple times in order to encode multiple strings (this - will result in multi-page postscript output or a table of barcodes - if -t is specified). The strings must match the encoding chosen; - if it doesn't match the program will print a warning to stderr and - generate "blank" output (although not zero-length). Please note - that a string including spaces or other special characters must be - properly quoted. - -`-e encoding' - encoding is the name of the chosen encoding format being used. It - defaults to the value of the environment variable BARCODE_ENCODING - or to auto detection if the environment is also unset. - -`-g geometry' - The geometry argument is of the form "[ x ] [+ - + ]" (with no intervening spaces). Unspecified - margin values will result in no margin; unspecified size results - in default size. The specified values represent print points by - default, and can be inches, millimeters or other units according - to the -u option or the BARCODE_UNIT environment variable. The - argument is used to place the printout code on the page. Note that - an additional white margin of 10 points is added to the printout. - If the option is unspecified, BARCODE_GEOMETRY is looked up in the - environment, if missing a default size and no margin (but the - default 10 points) are used. - -`-t table-geometry' - Used to print several barcodes to a single page, this option is - meant to be used to print stickers. The argument is of the form - " x [+ + [- - [- ]]]" (with no intervening spaces); if - missing, the top and right margin will default to be the same as - the bottom and left margin. The margins are specified in print - points or in the chosen unit (see -u below). If the option is not - specified, BARCODE_TABLE is looked up in the environment, - otherwise no table is printed and each barcode will get its own - page. The size (but not the position) of a barcode item within a - table can also be selected using -g (see "geometry" above), - without struggling with external and internal margins. I still - think management of geometries in a table is suboptimal, but I - can't make it better without introducing incompatibilities. - -`-m margin(s)' - Specifies an internal margin for each sticker in the table. The - argument is of the form "," and the margin is - applied symmetrically to the sticker. If unspecified, the - environment variable BARCODE_MARGIN is used or a default internal - margin of 10 points is used. - -`-n' - "Numeric" output: don't print the ASCII form of the code, only the - bars. - -`-c' - No checksum character (for encodings that allow it, like code 39, - other codes, like UPC or EAN, ignore this option). - -`-E' - Encapsulated postscript (default is normal postscript). When the - output is generated as EPS only one barcode is encoded. - -`-P' - PCL output. Please note that the Y direction goes from top to - bottom for PCL, and the origin for an image is the top-left corner - instead of the bottom-left - -`-p pagesize' - Specify a non-default page size. The page size can be specified in - millimeters, inches or plain numbers (for example: "210x297mm", - "8.5x11in", "595x842"). A page specification as numbers will be - interpreted according to the current unit specification (see -u - below). If libpaper is available, you can also specify the page - size with its name, like "A3" or "letter" (libpaper is a standard - component of Debian GNU/Linux, but may be missing elsewhere). The - default page size is your system-wide default if libpaper is - there, A4 otherwise. - -`-u unit' - Choose the unit used in size specifications. Accepted values are - "mm", "cm", "in" and "pt". By default, the program will check - BARCODE_UNIT in the environment, and assume points otherwise (this - behaviour is compatible with 0.92 and previous versions. If -u - appears more than once, each instance will modified the behaviour - for the arguments at its right, as the command line is processes - left to right. The program internally works with points, and any - size is approximated to the nearest multiple of one point. The -u - option affect -g (geometry), -t (table) and -p (page size). - - -File: barcode.info, Node: Supported Encodings, Next: PCL Output, Prev: The barcode Executable, Up: Top - -Supported Encodings -******************* - - The program encodes text strings passed either on the command line -(with -b) or retrieved from standard input. The text representation is -interpreted according to the following rules. When auto-detection of -the encoding is enabled (i.e, no explicit encoding type is specified), -the encoding types are scanned to find one that can digest the text -string. The following list of supported types is sorted in the same -order the library uses when auto-detecting a suitable encoding for a -string. - -EAN - The EAN frontend is similar to UPC; it accepts strings of digits, - 12 or 7 characters long. Strings of 13 or 8 characters are - accepted if the provided checksum digit is correct. I expect most - users to feed input without a checksum, though. The add-2 and - add-5 extension are accepted for both the EAN-13 and the EAN-8 - encodings. The following are example of valid input strings: - "123456789012" (EAN-13), "1234567890128" (EAN-13 wih checksum), - "1234567" (EAN-8), "12345670 12345" (EAN-8 with checksum and - add-5), "123456789012 12" (EAN-13 with add-2), "123456789012 - 12345" (EAN-13 with add-5). - -UPC - The UPC frontend accepts only strings made up of digits (and, if a - supplemental encoding is used, a blank to separate it). It - accepts strings of 11 or 12 digits (UPC-A) and 6 or 7 or 8 digits - (UPC-E). - - The 12th digit of UPC-A is the checksum and is added by the - library if not specified in the input; if it is specified, it must - be the right checksum or the code is rejected as invalid. For - UPC-E, 6 digit are considered to be the middle part of the code, a - leading 0 is assumed and the checksum is added; 7 digits are - either considered the initial part (leading digit 0 or 1, checksum - missing) or the final part (checksum specified, leading 0 - assumed); 8 digits are considered to be the complete code, with - leading 0 or 1 and checksum. For both UPC-A and UPC-E, a trailing - string of 2 digits or 5 digits is accepted as well. Therefore, the - following are examples of valid strings that can be encoded as UPC: - "01234567890" (UPC-A) "012345678905" (UPC-A with checksum), - "012345" (UPC-E), "01234567890 12" (UPC-A, add-2) and "01234567890 - 12345" (UPC-A, add-5), "0123456 12" (UPC-E, add-2). Please note - that when setting BARCODE_ANY to auto-detect the encoding to be - used, 12-digit strings and 7-digit strings will always be - identified as EAN. This because I expect most user to provide - input without a checksum. If you need to specify UPC-with-checksum - as input you must explicitly set BARCODE_UPC as a flag or use -e - upc on the command line. - -ISBN - ISBN numbers are encoded as EAN-13 symbols, with an optional add-5 - trailer. The ISBN frontend of the library accepts real ISBN - numbers and deals with any hyphen and, if present, the ISBN - checksum character before encoding data. Valid representations for - ISBN strings are for example: "1-56592-292-1", "3-89721-122-X" and - "3-89721-122-X 06900". - -CODE 128-B - This encoding can represent all of the printing ASCII characters, - from the space (32) to DEL (127). The checksum digit is mandatory - in this encoding. - -CODE 128-C - The "C" variation of Code-128 uses Code-128 symbols to represent - two digits at a time (Code-128 is made up of 104 symbols whose - interpretation is controlled by the start symbol being used). Code - 128-C is thus the most compact way to represent any even number of - digits. The encoder refuses to deal with an odd number of digits - because the caller is expected to provide proper padding to an - even number of digits. (Since Code-128 includes control symbols to - switch charset, it is theoretically possible to represent the odd - digit as a Code 128-A or 128-B symbol, but this tool doesn't - currently implement this option). - -CODE 128 RAW - Code-128 output represented symbol-by-symbol in the input string. - To override part of the problems outlined below in specifying - code128 symbols, this pseudo-encoding allows the used to specify a - list of code128 symbols separated by spaces. Each symbol is - represented by a number in the range 0-105. The list should - include the leading character.The checksum and the stop character - are automatically added by the library. Most likely this - pseudo-encoding will be used with BARCODE_NO_ASCII and some - external program to supply the printed text. - -CODE 39 - The code-39 standard can encode uppercase letters, digits, the - blank space, plus, minus, dot, star, dollar, slash, percent. Any - string that is only composed of such characters is accepted by the - code-39 encoder. To avoid loosing information, the encoder refuses - to encode mixed-case strings (a lowercase string is nonetheless - accepted as a shortcut, but is encoded as uppercase). - -INTERLEAVED 2 OF 5 - This encoding can only represent an even number of digits (odd - digits are represented by bars, and even digits by the - interleaving spaces). The name stresses the fact that two of the - five items (bars or spaces) allocated to each symbol are wide, - while the rest are narrow. The checksum digit is optional (can be - disabled via BARCODE_NO_CHECKSUM). Since the number of digits, - including the checksum, must be even, a leading zero is inserted - in the string being encoded if needed (this is specifically stated - in the specs I have access to). - -CODE 128 - Automatic selection between alphabet A, B and C of the Code-128 - standard. This encoding can represent all ASCII symbols, from 0 - (NUL) to 127 (DEL), as well as four special symbols, named F1, F2, - F3, F4. The set of symbols available in this encoding is not - easily represented as input to the barcode library, so the - following convention is used. In the input string, which is a - C-language null-terminated string, the NUL char is represented by - the value 128 (0x80, 0200) and the F1-F4 characters are - represented by the values 193-196 (0xc1-0xc4, 0301-0304). The - values have been chosen to ease their representation as escape - sequences. - - Since the shell doesn't seem to interpret escape sequences on the - command line, the "-b" option cannot be easily used to designate - the strings to be encoded. As a workaround you can resort to the - command echo, either within back-ticks or used separately to - create a file that is then fed to the standard-input of barcode - - assuming your echo command processes escape sequences. The - newline character is especially though to encode (but not - impossible unless you use a csh variant. - - These problems only apply to the command-line tool; the use of - library functions doesn't give any problem. In needed, you can use - the "code 128 raw" pseudo-encoding to represent code128 symbols by - their numerical value. This encoding is used late in the - auto-selection mechanism because (almost) any input string can be - represented using code128. - -CODABAR - Codabar can encode the ten digits and a few special symbols - (minus, plus, dollar, colon, bar, dot). The characters "A", "B", - "C" and "D" are used to represent four different start/stop - characters. The input string to the barcode library can include - the start and stop characters or not include them (in which case - "A" is used as start and "B" as stop). Start and stop characters - in the input string can be either all lowercase or all uppercase - and are always printed as uppercase. - -PLESSEY - Plessey barcodes can encode all the hexadecimal digits. Alphabetic - digits in the input string must either be all lowercase or all - uppercase. The output text is always uppercase. - -MSI - MSI can only encode the decimal digits. While the standard - specifies either one or two check digits, the current - implementation in this library only generates one check digit. - -CODE 93 - The code-93 standard can natively encode 48 different characters, - including uppercase letters, digits, the blank space, plus, minus, - dot, star, dollar, slash, percent, as well as five special - characters: a start/stop delimiter and four "shift characters" - used for extended encoding. Using this "extended encoding" - method, any standard 7-bit ASCII character can be encoded, but it - takes up two symbol lengths in barcode if the character is not - natively supported (one of the 48). The encoder here fully - implements the code 93 encoding standard. Any characters natively - supported (A-Z, 0-9, ".+-/$&%") will be encoded as such - for any - other characters (such as lower case letters, brackets, - parentheses, etc.), the encoder will revert to extended encoding. - As a note, the option to exclude the checksum will eliminate the - two modulo-47 checksums (called C and K) from the barcode, but this - probably will make it unreadable by 99% of all scanning systems. - These checksums are specified to be used at the firmware level, - and their absence will be interpreted as an invalid barcode. - - -File: barcode.info, Node: PCL Output, Next: Bugs and Pending Issues, Prev: Supported Encodings, Up: Top - -PCL Output -********** - - While the default output is Postscript (possibly EPS), and Postscript -can be post-processed to almost anything, it is sometimes desirable to -create output directly usable by the specific printer at hand. PCL is -currently supported as an output format for this reason. Please note -that the Y coordinate for PCL goes from top to bottom, while for -Postscript it goes from bottom to top. Consistently, while in -Postscript you specify the bottom-left corner as origin, for PCL you -specify the top-left corner. - - Barcode output for PCL Printers (HP LaserJet and compatibles), was -developed using PCL5 Reference manuals from HP. that really refers to -these printers: - * LaserJet III, III P, III D, III Si, - - * LaserJet 4 family - - * LaserJet 5 family - - * LaserJet 6 family - - * Color LaserJet - - * DeskJet 1200 and 1600. - - - However, barcode printing uses a very small subset of PCL, probably -also LaserJet II should print it without problem, but the resulting -text may be horrible. - - The only real difference from one printer to another really depends -on which font are available in the printer, used in printing the label -associated to the bars (if requested). - - Earlier LaserJet supports only bitmaps fonts, so these are not -"scalable". (Ljet II ?), Also these fonts, when available, have a -specified direction, and not all of them are available in both Portrait -and Landscape mode. - - From LaserJet 4 series, (except 4L/5L that are entry-level printers), -Arial scalable font should be available, so it's the "default font" -used by this program. - - LaserJet III series printers (and 4L, 5L), don't feature "Arial" as a -resident font, so you should use BARCODE_OUT_PCL_III instead of -BARCODE_OUT_PCL., and font the font used will be "Univers" instead of -"Arial". - - Results on compatible printers, may depend on consistency of PCL5 -compatibility, in doubt, try BARCODE_OUT_PCL_III - - PJL commands are not used here, as it's not very compatible. - - Tested Printers: - * Hp LaserJet 4050 - - * Hp LaserJet 2100 - - * Epson N-1200 emul PCL - - * Toshiba DP2570 (copier) + PCL option - - * Epson EPL-7100 emul. HP LaserJet II: bars print fine but text is - bad. - - -File: barcode.info, Node: Bugs and Pending Issues, Prev: PCL Output, Up: Top - -Bugs and Pending Issues. -************************ - - The current management of borders/margins is far from optimal. The -"default" margin applied by the library interferes with the external -representation, but I feel it is mandatory to avoid creating barcode -output with no surrounding white space (the problem is especially -relevant for EPS output). - - EAN-128 is not (yet) supported. I plan to implement it pretty soon -and then bless the package as version 1.0. - - - -Tag Table: -Node: Top153 -Node: Overview525 -Node: The Barcode Object1403 -Node: The Field List2820 -Node: The Intermediate Representation6585 -Node: Supported Flags8358 -Node: The API11342 -Node: The barcode Executable14028 -Node: The Command Line14457 -Node: Supported Encodings19556 -Node: PCL Output28996 -Node: Bugs and Pending Issues31315 - -End Tag Table diff --git a/glabels1/barcode-0.98/doc/barcode.pdf b/glabels1/barcode-0.98/doc/barcode.pdf deleted file mode 100644 index d7f66cbb3ac94809ec0ac83c2f5fd1344abfd0a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 160731 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%0A($7CF6BqU|I``V8 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
K>>GQ_%cZLz&#ed?ChAWCi%vp9R=-YO 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%0Du5{|y|(;% zmp`ZiIa4h2gU|La+>3^B;l$`F#lj;}NrROF>4l^<0c8Lb-pwMDJW!&i3)`8rj;8!p z%b|lVhhg+4-Gy*{#LbD}7h-NMOis!)nM`zGT20+n^dTRe@ua{ zMUA+n4gj03pC`bAFty}=9qE<;`lK`o8x61$-~ILa&{*YTxdpBKh%2 zGb`Je`rGn$b1{wV`N;szk>A!GonY3c1<#6*;tSMUb*e`-)HFCxMga zn@SiTJ}7klNJkQr-x~Xdtmy3t%m(1yzo6)_k_nfu`S#xmEPQ3`pNB^IjQ_`S$=0|8 z5emXMk@6@wO`scsJ4LD(aHmSTQ&0j2C)1-ll_Wsjr;Hf7?ql*Q%TYHjEaJ)v&!sS@ zjZZG_7;_Eg2Sh1gKq<`oK{hQA1w-RL2Ck#?n2?<@*b&>I;5l@aE*MInx1S9y0Q`eG z^;%?BSA6YEUEm=v(>^jh2T=@%x%sW!51HSrMx3cj8vUO@5DxbrdolDsxYrP>2x~%u z7I*>Q$6|hWGR_`&1iB{+*@LMKU!~B83e{oWOMJ(G2@WU<4tc37Y^dnRvb~w_MC^Yd z+bUBWom9_{soS97+pa7^eZaa!q4NxnIO`NIsvZ8I0QZB}3Ro{#Ik0q{=dIa%hgEK- z4R|irq^&BMwz}%~%v^cPiA@v!Rshs;#)qd%_Yo&Ry3x&Ih>%m^b%89H!}TT^!Qs{g zW8Xcmi-3KP{Da9)-8TkyQ($rD5sjz4Ah{j3H|of5qoQu}{);WBuZcso*^Jq0=&eJ! z+gYZrx;EQfBfFWP-le?I+;J*x#?%wQfr@K95t?}f>-bKVn`uLb?P@v-F1WsjwgO5dT&DeKT# z+Li1{bHJIashaN$a794Z3tkvn|L}yx{)$yCDTBML9ags8z-sGydkw)?s|LbN7UsmJ zv8&~2U#N>LSN`C;<~?7fRB1gS2Ky>5CjuDSMAiT@iq4&PB%mbMAQ|^Td0c~JVY1zf zhJBO0qPNJFsT-4(w;t{;d#n6#q3q@cLMCNn5i_&puoG&!^ zgkUia@}aKFfMd^}jU|a!hclMY9Qh!|a-Lu;|L>Xxn15geHfu#6;_WmK?2D)m!Q@S| zfni~t@@i0ap25m8y%pJX@L7dkr@z)v>idD}1-<%XwzJuH%$F&uaG0$GJ=kP?0*_#% z(m~}vE718rl}WOIC5Uh{O5`y9zc@U~&cd$vQuSEVk)jz7y~)5-y`(Zr`8hS+uF0xq zG$$Y=MTp*`dunOX$Mbw*M|=0bDv$i{!<~0dja~P?Y~o2D3*#3oH*agVf15-PbPTEL z87o`E>asGqlB$=~`=3hOt&db!`i}j>h}UKfqeqZWcRfzAkg#^sBWNMQIZu+|BIp*Z zNBG~0wPrgS?K}>Hb~f5Y%K)8w-5UZsvB!ai)j-Bo7Aw3rBe2M?sk?W<&@_wHyk{|+ zuRo;-z7mtY@j~Jh?T5ZcPYk00?rvtB2&fm#XDsw&IFk|r;RbQZ#I95LT{tx!XK2B% z!J34O@b|l%IX#`;cUX zDS@Q2@3*kAa3ow+0&w|GEFwYj3xTpo{7CpUJT8!vU*i$x&W~!ZR=+CU7hQ96a@CfV z-89vh4e2Yy3abP~+d#w{Gb%eTGXXC&Y#P-JoI;^ON#oQZ{XWF68ZDLDND!lVggDqu zz9bAegF6F4L?@^iC;1`o=@xA`K*gSt{7%T(BYqb3L0ysdnKfZ+Qp14hQN4dk^0T*b z(-mbl8!UEtm3<&}VdlloTOS22fBlOe3=Mvb`6>jZYRl>9kQK76&z{IEF9F1X6s#_R zq~=}r5aL`n86gaYgaSMjTi{{mD&6LWu=M(Bbov34)eKm4Ar%Jy7x!9@IPX z3a+A&+AY7e<>7Vum)im_@)JxY@v;WV9AbhfZ=-uy2pa;;!j6p+=J=5_E4EQ&j2|3W z4?+k&ULwYHs2g`&*T;71j4AyF&C1HvH=fn=W9JaDf_FxTx2sRlo1PWge!Fw0Y>F- z{PySE{_rT&+4)oMjCjt2fBvd42MrhSYu?PQCH&X#*x6pm)sas*LU@E3E5m{cN!xGby)lHYC z#uQE{eA7E@=Q;nRRogG|R-S(>HEM35+ zgtX98Z~pK3z#-f8&P&?gsPLBm)9`s=fYOpn$>n)$M}+l)KL0iE<(H0>wk-Wv`tlRu zkcg4{+sA(%){ps-t}N~<_QNhQeFDxvczR&bC)&FGzN#f<~1R6 zZ>ayo$>9$%ryE92ZrB_ZQFwjKjt@)Dt;Ue152(||)yL6_lYGqvMWe>1`KgMbZqRrI zpf_QU*$2oF)Af|>JW7R~7tx&)38PK#epQvt%UK-^lpj*r0nHBOAQl2w zs1BhSY8qD2^>N^{?+}tsV~Nl;-nTg5aXJ=8dU3GTa51NloxZ!kj(-oAG_(~tE^l~( zUzEJO6LAXP;`OyQS*kP`&d#FqcSoIv+IV09Qo=ZC!9s_D9tkTkHg`n%p&Lw%2$ zyd*(!31Sq6;BC0d12i~u1#!r~0EbeduP2UFUOZ*w9DHS=RF^}7DA(NGeHBOx90v|W za<^n+gl<^z1X~C@@A${~r}zhmK$k^Wi@~P4g(LVg;dQr#{bfCli{rxRA|QZ%<0t=j z>slKcwV&$pESza^OB+quUY&Fz|MYk546@r;&W>nm?ppNiV$&g&#iksvcCcql`KsY*i^)oq=z$yE7C!4H)QdEelr40N;NKnHG-s55ULd ze(Mqk$aUBC!SrL!>O6i%76|`;i&Qt^eYo>HrXAqd;Qs~ZWq$M6q-?w9T0}ECeREC^ z1uecc`n^xxku9b*cZCz?TP2`!_#x2jOjS{SagR?}TPQQ71_@sM7tj9&!> zed&sR0@;B3S0@(YUH8?2pv&P82>c+VqA#*GgdW5*$O(3o=pP$2~(51z2oKrfTH|kT;tZo7@A=Jd=bECrBfFo>}9cHtaQI#ztLpxpVH>Q z5Rowz*NZZD_$LjjYnRulVA^}dDb;lq?w;zWNe&XWbQ`2I>b6l;H6_(tkL=Z|*5{0x zD(%dWx)WQ%o*TP&jC8mp!cGk8-8S22yL6CgAoyeusAqBuKPps zoC5ZMRLQ`L{eOvzU~ zx9O?B?Qf|c+2BUbdf<}3Padd8`>a6gnclQ3zT4y%{@kO!(a}JfrGf8R?m~WU*E-&Q z<@20s4?nboKR9X)r1GP~O~v{7E_9_ozw^R_6Oz|V_#*e|oq?&5RXm7MTE9|?)Zu-L z6`^xuM&Na>NUl8DU->`3Nqgj0s%gM|_ zM2hU9#CMjB6?#jZwLjgLGKkr@je3vM#^~qwdyx`sQl7u zZy6Fn9Q(%f`>&K*8h!5FyQ|zgcTakyQc@w4ZAhw^RrKWKk%D%^qS&H{0SF=JQ1*gz@=&b3bkHEs|z+rbd=& zVhz4TI?I21cm9vH9Hs*-l&+lMjXQ_dx0xBG=MFgie3KP}Rl&_1=!0~->4`mQLR+@B z(}xsU_e~fcDeyZjz9Lr_CXYJoy@*nH>-lQWMThND?3CKr(T>HF?h-#0>j)+`{sZN& z#1k8)rV|?x?m9-62i5dw?&NV#?EOhoB*p6=;0LAJ>?xfKHx~}%_iVjCP+`4sb=1Du zyglFZqGS?s{5tnZP|+wP{(MAxZPz7xZlAH7&GC+W#&vNinJf-`qO?axaR`rfSdMpmhXSRuu8L@I&MgKj(%K@i@NHxkUZiMEkD={A*x zj@BVZ`{9L+_Li;}6#kxu;jFUmqAq9Ge%GG#;{8Ltc1z|^_wdaJ?IqSG_dnM1u^HR@ zbNFP8wEnB+Eop{pZ&UBo%5~BcujaspP~<(epe~}HPo$5R*sLz}J3w?_DD@3FFoaqY zky8s+okt6$j#r(pm{<{az1%h@Z-u??<=?D~*Ppz!PZ~H}mU+}~g;X*JI(g^WtM111 zbyppYuj%5K&am%%vd(5{IA*%9?2zJmzr4_X+lv&ZisI=UFNB(F z`6=HWu``NBtf`TReFr@l;tvu79;T2UA)FK7%~hqGofy z=7K>xQDQI1^*inoh!kmWq(oUBa}wVYEzYj0kQ>VoxSod;`Z@i#+Xn_D?&jXrDQ>6N zjzFu+*KpKrLeXyijSA0+>UBFMIj@`g;Z!pR+5+is2QFiNza}kDa~x z*HqK0sS>23MAQz1C;`Q5P@E^SWp4cXg}m&lbpfYZADmgK?{WJ9C+H zR%~6jtI^%rFxwei#AUyP`+3(g^GUwCnv9yvL}kik+sAs!j(vBj~w zQj;2ms2)XiD1U8H8f?&?7YrVhZS?W$QFKCV%z(2khi^d`U(mVxKA&;E>n9RpOq{iK zOz%gPXyoELjX*Kfc0@=`C<+bfBth0LNH>wp&>*QryIyxl?bz$Gu|H*NLuv>@azr=5 z8}ns?`7lz1?N!gaH#1BA`-q+a;Z>+Th#U#=^J>PkKZ6+?5hZ|@ln+Fe0OMm+v{s|v zKWZ+k{3^vP<*zL<+sx)uvbMGizS-KE)8?u1>+L*h_Ai*LY{~0$&#hL!;Fi~`tt zBGlDK=HVi-M3I?@-<8k!t*+S@(x3XHb4qQ* zTwNhnM;)Qa5KM47D8>k`Kqm=l$VAfznB{#W|L&VA$P4NUBd4nhMlCU`-lT)~oIFr+!Y_IIv z?;dKe>8se2vfJ4+`Ni%F`?F*|S$Cni*JXBCt=__6f{rVNqjt~xE?1NDL|MeW(bz zx^Ym_IHUd0q8-yy?n2mvJ}JTm0n?Hh={pGJ1`PorrYj_4L`aY)vKa(%cUsVl&(3*2 zcZ2h7iQ+FSVm_0_XIS1Wb-(3u<+qIGBw|MJ)YETBa4{2#=O-MT7{7Gds)>E~oj+N; z%{mx>tGLjGwATV#!Kc$Db5>7Gjwl?&dTNPBp<$$l@@+z?y@K%|X6^{Ny-{a|jpz2F zuh8Di4M&cYTQXr?5Bqvr0<)_Ad9Kt^hQU}l)&W0nboH$7-i9l@~~Y#km|3;tK< z@MEv-P`{_yZ9WhvRz8(J@9p)c*49{kd}*AWcXYhW^RBB+Wk;?2ZhmZOj?K)U*B{`$ zp56W&-d7eFwYxS198Pp+abKyq;Tz(M_`qQq2BnXbW$}$;a!gmXmN)_f3K&h8EXA9* zA1DRPak}hiK;alf{O4vx`Jn4AcCSbyBhh>WIr2<{d|YUUAXp5d*)`~g06reg@v9BR zzvh;I7U=k4S#J4K#ju?>IUU2j4yS#;7aC_vNx<$ZbN79`$I;_<72e8#4`v8a`ys3E z=0kk9*=sL#`?AYjT z>CCv;;I6QC70XY5r&y6!aC{XXIrJyirAS0+7i3&e<_W?M{+OWXW3&sQ?+F);&yDvz zSy8=s!XIKdIUlbu+GhVGX--;YwPjkre3!huIX=BA%QE@mj*;ynTaLdmzz^j7_Q8iH z#hQQXKd>>&n6ssI+eKOFt<-Y|3wJt9-Npka8+?|Fva>C-u9mc(y18OxP0qoAD&q?l zqvePFRkM7hhFB?@DPC@s_;_?bLk%wQ)@2^;9$PYe(c-UuKkxJOMG4dVZB9e}fW)+om#-}hXJhb`4bouZR+nm4mFPJspY#UCMb>4h%=rZ5j+U)gh zk+t|RXr{26xBJX8zHrk)M=!E_-T>yVM>Cka>Il03wZcvx#qBKXze~_burgpU*z#`Tbo^-~*=Z-@cQuu{lL1w?dhHSOX<+9339kTB84|z)t*kAqB(U#TJYe&^= zx6?OdEz9g~=yv|oRa`QRj(J|I`KyVEs)VNMYFT6zLZn5K3R|Ifj1je@J78$6@pz*^ zQeBGTSrLCCR)DqQ?@_jmb$FD}EI+c3tf)LcjA=v1{9RrEcho`=3y4;D0h5LaHE8fUR* z=DI(AGxGf*k~CbSQo;Yhpo5?S>3hHw3>oq(IeVp05F(aRf)xZEs%Yj6)&^wVoP0Rpuyuk5t!y*$a@CIhUA4;#+D-$N%*mjnBO@$3E6UHzfYRw+vGnxvctC{ ztJQY3@wD~@-DySR=@|{S%A4tP;@$Ry?8H_n;rF3Np#U-Ngf<-JGV zx!(JZ3xPa-X#cqo8ou_gz=t#YrRKZb5VmYWDbgShMy!goN+ju=L18Rpf{JhiK^AMG ziJoy;yrN=da{Ns6Kt#18LUDNUv;KO_>%Lr%g1EfMt->@y-_>wZRwD37lQNPT1;ms0 z4zjRFPL-h58_lUQZuM%X$ic;i&nw>L7Y_;OcJz2%HAA<27Wd5u%6e-4J8pXoI>L_* z7M!ZK57pJ@UCrz0pT-rO%v}@ddTK>_EU84Q7r(_!K)LD2V=)_EEw7KS_+8Q4sAQRV zZ@=Y56MCgjLx#+S1-EY>H8wjihu+=hu@3UqE4;_%I92a7Rouu(DB3c7(YZeneJ-^% zrwSU=A1!FSPr5np^BL~fmrj{)T-kZF&YSz?jA7@5!UXsFi(}dHo(V53Uw_@|+}8R~ zT0NS|^Mk%C&as!bu7DAWabP z+oIb{s7XSQl7oC+gp`FztI@gq_^8#n6<7FI?|JuYm+vmWzS_PsvW~13>9a)GFTEKE zbd+I*b`vVd63Sul2S!v26qp%SXZ6iNj}P)}+xzd@}amf3LidoL7kYkK_r^7$rfz9(PUqr?AY?XpV)4*RX6Uc1-ZZSGpp=-z)ieSXqPx5-%h zNBNr*87GW*noc3Wu&@E6RM>qzX>XkK(+W2^RifhwTz zz1#7g)|hf7L!NskerC$^l0MS}$;?U6fjax;J@Q^?J+}3o1JHn~(2BCUc|CvoEz*#3 z)NV7|98d=jn}u`3|GDxZHf!nwZmY%GTIOl6HooD!aW&DmMY`lN`10=Eb*IzUc_cQe zJ$`BW=BF}hr=(XWP5GJR{B+5&ZI9k_D55|@(0^p#ubTLav@aV7lJ8ajuzky zqJ*}1x@g|m@veAtP7I(SXWiIB{^Y=@S>7@zbDtRu9BCR&uwnvFt7*{nAJcAotfZJ_ z(Ck{5MY4F-lPRdblfS)w)pvg}0oaLrLq)o%h!xc%X-A369J-?9*MIF$loW_I9CeHM zo**U6eQI^h$oia4cV`nnv{Pm>kM?#>8@Bojr78BoUSs*yZLL0kah}Jt&00Em`IMVa zynN#_??DT@N~d|#smrJM8)G>st%V!wxA4`nGV)8JEYNzpwJ^|d%w1P`IB(}e(s>Fc zp_aSgLZrkotiUYjgbV6W;8aYNrB@hPUxfl2ZY6I!$9^=w8-)G23a^M+e#eCa+6 zwI_)A20yRoe)6*PDfvz;jhN)C73qf}R?LCAImFXR5k62UMAlI?PcV!>uvbQC)euc^ z-)aBWe*PEI#h+(9ea|1`vn{{W7>mj;({B}vC8 z40EPc_HC~(%X_SC${gw1zNu5z7?v)t80GE%lRMX|n_d#1IlKFV*rMm-E4h%#4x*AISQyq2#yepB-wm$z(qD*kWNS2>D4vBXVHlJl1M8MOtuio8h9K&?ox z6%~{-n!^yHA?icOAPrKXpgV}t3<+QvqV*ZTH-;`?`9Es27rkBXe38q}`gNs2Au*&% z0+<~w87Xr}{KHv=*0wB1p&ykiNP~6pX6)P?A{!g2gu(w%1TZ)lNXx%%9jt1;-8}Nd z{i%btt*P#i^ia~W>;TeiYjOvCb?v|-9P ze~Pd7@ZRqy{?55*>9lpm->tU)pd&@MCU@hjFP=zPxh)~@hbIztl;{1>R`(<6hyOm~ zH^!7p)4rU3;!ydE=aw!@eV^Z!=3ma&*SkFY=3UEOLkGJ|`=|LW)6!Lnl$X;aYa|a$ zabN0MSebCW6$mS`qt?gn+qB`mVYP7h{1MA zmLHWp7LyY3=8JT35es*K*fF^wSlJYGb_;w`jMPbIL_<_I8H)4X*S>|HFMkAg7eB9l z{3YM_Wn+4m-34${Ame7v@B==(k5u;Y zz22I@-Hx8sp;WL{>7y6g_JkOm;9`wo#YXJbbmf@ zU;~FO(%dJLP_xywZeZJ)x--75nqv*G-?+Nbxv#Oo zzRvT~S(j-Y@wl+Ia%7J5;)LXs z70{!8{9%e>Z)Mql#P6+pvy8Ww`2s1sk#tvF;=p`{Hg6!yjG{(T9mThr5fI!rHe-vs zv*YQ%eX?vv$NgOXUyJ_wUoro*qTw)Utt_O9sAJO2ym@|mWSvy-XwW!dl>?$o-O(sR zwVuM{Sy5$*=##o=muGyEk+ve$nKMuFvC$?;Ss~@*J6C?0_*GJeGj2~UXS#AD)7Mt% zAK6sMTfG^wpZb#R=NSRhzp)Er=3X~9G%>4lhg6xU5o*+pGj9qrNxTlc@Z0&YK3Mq)LuopViTIa;}sGnquyn&dLiR9 z>Vbw_WpnN|udr-QDLS-s5t_Lvv*)CLJ`1xj*S6U&eXj5JCLS#F)wujtcfgCbDz2KE z0RGj4#GT=*0hG1-Y*)KV+cM9bFrBE}T<~9(Lr)&7u+-Vy1;_K!BAZ1*I&=80#TxrU z*poShLCrR(07c|x7|--g94`8h3iQoyve)Gr%i$g8(5}GEqpOaq1%z*J;agm8bp9+s zCf7}^RoZjbzC}``I`;FL8q2E1{Na0l)3;}k<0yU(f$1PSG1C+YG=HL9$T5lmrSucC-$cx8F_Jx^tPwtW-#_Ch|HZvfedwRQqN_ar z#XUiAU%~m5(j2>agVW_JDIGeSR5|_Jj`a7m&WcwXK8bv?VySEY+MP1gI4H=dMdd%d zzcg*AL?Qs-3fggtA?TqADUXcSq!XI&MRUCALUsT5wVPve&wZSWG?`g(wc8HHXB^Ks zV_WZBb?M59vO%|Fkaxc>OlL(@y2s4(XU6UyyyAB5ZESgT_A&dTp04Vy{FcN@`NzNL zKgSo2lzlhx(m=Nn^LC^!o-i?UwLP-I0G3E& zM6BmAx?tb&)d{6Up?-uS5fLQme*-^(F65`1J@NMS%G+52SwQ6_dDBQ(a5=rM7N65m z6mT>Zc0IR45%87yx(ge4d#QD(tylKRgLYTRh`FSf|1xP}$IrEqqbOqir$n+df^+PG zo)E!82<=bA5h9GSi|Pj%A7eMS;wWjih{OEaPsfxcwU1AVb3dOn5aaFW+U2ZqG})2$ zK8Z^=p>YDiqL{#SgA@}=p%bo8g{wSthvL;i$Hs<>M5kqz&O|8V7KRQC= z<6{47L@r_){O^c-ZcOIh2^egRt|xt&Z&#h36`OIgq)=L8zf@>$bD;jIX8X_+)mQ&+ z9x44Q=Bt$0A|qe1ztVP4{?W)9y-jxf(_gg>-b(d)c>gM5AK|ASvlPtLopXjoSt`1gku+bV(<{!u7rAOys}^zo073s^8sp}|w{+p}ePyv-wHFf;E>*9&0!jV?ViCQzJ__pK@?hRfaeBXrBA%L}&i(Q8yA;0#=WCr%yWZpvBhxXwtIU z_RB9dsMB0yu*wJ8!hH-`%bks*=h{ElU$`C`he=%Zd<%i%NZIAoj zA*CyJZ*0|@oKe389UgC2$~>*v%fJNrkqx5`kb$R$5W}4xS0a8z12RNs%x(|gz0PfI zXuR0EYWwExyLU}@Klytj!ZC{T$0N@GD1PqgpGc9{tWil7cYbg!v|x%qkq2RLz>@|^ zn?8oq@z)!(p6~bg`gdBz(lch=EV76VfGU7>S`%Fg<&g z97hzb@O2;q2G4k9W*-LPucSXKbdRULPb0EUOZtve>vSZvNWnN3F9rjH7o9?w^bz)1 zokGpf0d5;ZyE=uI_`#{q>WSxphLJqwa2RxR`ki&iRH1RIL&rJ#EOofP^cjJgNm6_G zGcXyEc`m%?%x6_vxKC4xcwkF}< zr_~a(jD|r~pohD4=`}13=~-E;)9aZ#toM)1*Sd>I^!AnxPGag5_%p498;V$^gzmzq5fO?JL9fp~r*iz3COg z3~OqglH__)Ffu8Ch6%$lsC7Exe5PRx|I;fBB!7uoXCRH~!eJP1NYjvBsbTJ$9+|}K zIz4lb^thJHI(XFRyQRm#F`7^6RXXO*fD<$FNUtW27iu4BHT!*PoycePjEvWV*U>ye z4_?RM3eD(gTGK{y!H9Ar)6Mh~VR?g_PO7`5eDuxf~q3bd4tQEnt zR>$a_dMz$6{VrOL6lR3KAA~aV&N>wdeNyY#`=;0F7#Rf^!#DIgmJjK52A0x95Z7_K;_ma$DarH-*RIOvJ&_vsnjbI7h`_r~fL zoRZaZICL7N&yrIqSzKYVE6wjY6-)OV(8s(BK1%ZqkT|33acU@@6kTy@Epsn%6&U`) zVL~s>OE{=VG>t>5vd_?{86LrDG>onSi;m$3oW?*BKf})#W;gR(t(vj1acbx_Mt_zg zfimj*I2NZ`C=K*Fh&Sdeby~)5I)=9!6s(LgC=86wfHz_2-k?-7wj{hD46OlGjEskA&(I6JVGLctiemIS zf@b=j8$|3-a07-P7*qy^4h*=e3{LR~nn&Q1q$Vru&OjY!_y({?0*}->1B(|-C}f@i zo0IvhM$7PGgN9@5El4Bget_!P_k%lv<|PI=IvJdTZ_sxJS{?f?Iv5P}eswB_#tk}F zZW*9AF*wi}7=EhI2t`C;I8|uiRG^-#(1Sx$Flfarp7pF=2TuW`KSQ%%Y!U;fV0{0>&wb#;qX<^XAYQ(eFjW>>b_we92fNa;W#LIM!O9a?LPoa1P59@ ztqWisI4}JS;yh$v!hpMQ{OLrV0p|@R<1tLeK<#2iG}Y2qKEygfz~@wKLX)Hzn?)v^GU3Omx5VmV9tnKIQlF>sI;zv zw0Xv_449U|6_CK3FBZ~zgc3#a%=M{nL7

5l0qf;gP8#Ip~>J{@@9p0M$tWM3+AHtdJIw;ljXY~r&Hb8Jj zMf-dK)3Ue%3uE3HAvyXUA+kfuWRQ@Wwm%42kwWyZ;{{@d^|g?N6c2+T4zEo3XR!=k z3K|BbnmKd09jWhwbkops8Zam|%=f{tpkU}J#?UUZ)EPdBE5pbScu;7cIf7A)zY{Q) zH-Wp*b_&)33H1BH7N_@%bSRqE2u^8P3z&g^XD~V@ri3@vGWQ(foQ`WCx}{)b3RHet z&%ru8nBIq)WA3?1!^G}z0U28yFdZG=2aNIYDB-cB^=H5s-4-xC!zWcBXPTG5UCiQM zr(yILv?^fu8oKk)HYZpotLwoOVsWpB(m>-6`ZGfZQ2FUQjVKB2zlTvlS}TX$Rlpb@ zGGMG<3iLwrSkRD)iTOiRu;&Zc9D`G0?9%T7gOyzeXBD%KvDuX>0}#!uV{8qq!-JW1 zj9(rS8Pq|oQ!7~gN)2U-J`YH9=6$6zpo->`YUu4W z4%FZ!%sSSur&O!dv~2|#6H5S$;p2D{1#{+V{7~-<6OoC5UP#aWn|rE%~k<{5eb>F2`H&%#uU zPNRl;O5qAPg|Zy}eSm=gX&8Km4Bf-E$-E!TOBM!>AO3xCNNX8AQ4O&`<3$7Gnf@$E zU7+btgBS))e+d85u{I@KD0Hj{Ff|i9f%QS_X0S+f%zeW4o-lg2ZwRr=hB=YhG?m|{)GQ?L#OT=+BK>|}i-xcV&q)Oy-qhtF~h z9UzoS>rKRjVB{sD0qpm|_s^WK7T217XDt&~gGQ)hcoV!*4F5w|m*MRis2ddSN#u!+ zTLH$z%K&5Ize){)>hwKAUL+%Dz&h#pFFtFaAAf^W-1r~B9PMg^S`s46 D97 DI<923807FF80037F13F00203B512FC02 -0F80023F8091B500031380499038F8007F010701E0EBFFC049EB800149495A49485B495A -49485B5A485BA248491580180048496D5A486F5A93C8FC485BA35A91CAFCA3B5FC5BA45B -A65B17036C6CED0780170FEF3FC0003F167F6DEC01FF001F4B13806C6C021F13006C6DEB -7FFC6C9039F00FFFF86C90B612E06C5E013F4AC7FC010F14F0010049C8FC323773B540> -II<923807FF8092B512E0020714F8021F80027F80903A01FFFE03FF49D9F000 -13804901C0EB7FC0495B013F90C7123F495A495A5C5A485B4849147F18804816FF4A4913 -00485DEE0FFE4849EB7FFC923807FFF891B612E0485E94C7FC16F04BC8FCB5CAFC5BA45B -A7007F1603EF0780170F003FEE3FC0177F6C6CEC01FF4C13806C6C021F13006C01C0EB7F -FC6C9039F00FFFF86C90B612E06C6C5D6D4AC7FC010714F09026007FFEC8FC323773B540 ->I<923807FFC0037F13FC0203B6FC020F15C0023F8191B5000313F8499039F8007FFC01 -0701E0133F4901806D7E4990C76C7E49481680495A4948804818C0485BA2485BA248494A -13E05AA2485BA24D13C05A91C8FCA25FB517805BA25F19005B6017FF605E60495E5E6C6C -4A5B604C5B003F4B90C7FC6D4A5A001F4B5A6C6C4A5A6CD980035B6CD9F01F13C06C90B6 -5A6C4BC8FC013F14F0010F14C0010001F8C9FC3B3773B547>111 -D114 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb cmsy10 10.95 1 -/Fb 1 16 df15 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fc cmb10 10.95 10 -/Fc 10 115 df97 D<13FFB5FCA512077EAF4AB4FC020F13E0 -023F13F891B57E9138FE07FFDAF8011380DAE00013C05C4AEB7FE017F0A3EE3FF8A317FC -AC17F8A3EE7FF0A217E06E13FF17C06E481380DAF80313009138FE0FFE9039FC7FFFFC49 -6C13F0496C13C0C7D803FEC7FC2E407FBE33>II<16FF92B5FCA5150781AFEB01FF011F -13E3017F13FB90B7FC4813C148EB003F48487F48487F001F805B123FA2485AA312FFAC12 -7FA36C7EA3001F5C6C6C5B00074A13806D4913FC2603FF83B5FCC690B6FC6D13F7011F13 -C7903A03FE07FC002E407DBE33>I<49B47E010F13F0013F7F90B512FE48EBC3FF480100 -13804848EB7FC04848133F001F15E05B003FEC1FF0A2485A150F16F8A212FFA290B6FCA4 -01F0C8FCA5127FA37F003F15F8A26C6C1301000F15F06D13036C6CEB07E06C9038800FC0 -6C9038F07F806C6CB512006D5B010F13F8010013C0252B7EA92A>I103 -D105 D<01FFEB7FE0B53801FFF802077F4A7F91381FC3FFDA3E03 -13800007137C6CEB780102F014C014E0A214C0A31480B3A4B5D8FE1F13FFA530297EA833 ->110 D<49B47E010F13F0013F13FC90B6FC48018113803A03FE007FC04848EB3FE0000F -15F049131F001F15F8A24848EB0FFCA2007F15FEA400FF15FFAB007F15FEA3003F15FC6D -131F001F15F8A26C6CEB3FF0000715E06C6CEB7FC03A01FF81FF806C90B51200013F13FC -010F13F001011380282B7EA92D>I<3901FE07F800FFEB0FFE91383FFF804A13C0EC7C7F -9138F8FFE03807FFF06C5B5CA2ED7FC09138803F80ED1F0092C7FCA291C8FCB3A3B6FCA5 -23297FA827>114 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fd cmbxti10 17.28 7 -/Fd 7 115 df97 -DII<963803FFC0061FB512E06060A47214C0F000 -1F61A21B80A261A21B00A296B5FCA262A260A262A260A262A260A262A260A2DCFFE05C03 -0F13FC037FEBFF1F4AB6129F020792B55A4AEBE07F023FEB000F4A487F4948486D5C4913 -F04981495B49496D91C7FC495B5B92C8FC90B55E485B5F485B4860A248495CA248605C5F -5A4A5EA2485EA24A5EA2B55DA24A5EA25FA291C85CA24DEC3F801A7F19005B94B513FFA2 -4E1400A24C5C007F614C13FC4C1403003F4B5D6D4A14076C4B5D6C6D49140F4BB55C6CD9 -C007013F495A6C9026F03FFEEBFE3FC690B5D8F81FB55A6DDAF0075C011FDAC00349C7FC -010749C75B9026007FF0EC1FF04B6571E355>II<93381FFF804BB512F8031F14FF -037F15C04AB77E0207D9FC0313F8021FD9E0007F4A0180EB3FFEDAFFFEC76C7E49491680 -49496E13C0495B49496E13E0495B494916F05B90B5C87E1AF8485B485F5C5A5C5AA2485B -605A5CA2485FA24A17F0A2B55EA24A17E0A2601AC091C9FC95B51280A21A005F615F495F -4D5B127F6D4B5B616C4C5B4D5B6C6D4A90C7FC4D5A6C6D495B6C4B5B6C6D010F13E06C01 -F8013F5B6CD9FE01B5C8FC013FB612FC6D15F0010715C0010002FCC9FC020F13C0454271 -C055>111 D114 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe cmbxti10 13.15 11 -/Fe 11 120 df97 D99 D<943801FF800403B512C05E1980A282EE000F1900A25FA260A2173FA260 -A2177FA260A217FFA260A25EEDFFC1020701F15B023F13FD91B7FC4913E00107D9003F5B -49487F49487F495A49486D5B495A485D5C4894C7FC5A4A5B5A91C75B5A163FA248485DA2 -167F127F495DA216FF12FF495DA25D181E49EDE03FA24B5C187E17C0A2007F5F5D4B1380 -003F4AEB81F85D6C6C49EB83F06C6C48B55B2707FE0FFC13CF6CB539F07FFFC06C4A6C5B -6C6CD9800F90C7FC903A0FFC0003FC3A4D75CB41>III104 D<15F8EC03FC4A7E4A7EA25CA35DA25D6E -5AEC03E091C8FCAEEB07F8EB1FFEEB7FFF90B57E3901FC7FC0D803F07FEA07E0D80FC07F -A2381F80FFA2485A5B007E5CA25B00FE5C485A007C5C12005B92C7FCA25B5C133F5CA213 -7F5CA213FFECF00F48EC1F8014E0153F48150014C05D48147E14805D14816CEB01F84A5A -4A5A6CEB1FC06CEBFF806D90C7FC6D5AEB07F0214E78CC27>I108 D<913801FFC0021F13F8027F13FE91B6FC4901001380D903FCEB3F -C0D907F0130F010FEC3FE04948137F4A13FF133FA2017F4913C0A26F138017006E137E02 -FC90C7FCECFFC015FE6F7E16E06D80826D807F6D80010180EB003F1403EC003FD803C013 -0FD80FE01303EA3FF0486C7FA200FF5DA34B5A5B49495A495C49130F6CC7485AD83FC0EB -7FC03A1FF803FF806CB548C7FC6C14F8000114E026001FFEC8FC2B3377B135>115 -DI119 -D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Ff cmbx12 13.14 13 -/Ff 13 117 df<923807FFE092B512FC020714FF021F81027F9038007FC0902601FFF0EB -0FE04901C0497E4990C7487ED90FFC147F011F824A14FF495AA2137F5CA2715A715A715A -EF078094C8FCA7EF07FCB9FCA526007FF0C7123F171FB3B3A2003FB5D8E00FB512F8A53D -4D7ECC44>12 D46 D85 D97 -D100 -DII104 D108 D<903A7FC001FFC0B5010F13F8033F7F4B13FFDBFE07 -7F9138C1F00300039026C3E0017F6CD9C78080ECCF0014DE02DC6D7F14FC5CA25CA35CB3 -AAB6D8C07FEBFFE0A53B327BB144>110 D<913807FF80027F13F80103B6FC010F15C090 -261FFE017F903A7FF0003FF849486D7E480180EB07FE4890C76C7E4817804980000F17C0 -48486E13E0A2003F17F0A249157F007F17F8A400FF17FCAB007F17F8A46C6CEDFFF0A200 -1F17E0A26C6C4A13C0A26C6C4A13806C6D4913006C5E6C01E0EB1FFC6D6C495A903A3FFE -01FFF0010FB612C0010392C7FCD9007F13F80207138036347DB23D>I<903907FF807001 -7FEBF1F048B6FC1207380FFC01391FE0003F4848130F491307127F90C71203A2481401A2 -7FA27F01F090C7FC13FCEBFFC06C13FEECFFE06C14FC6C806CECFF806C15C06C15E06C15 -F06C7E011F14F8010114FCEB000FEC007FED1FFE0078140F00F8140715037E1501A27E16 -FC7E15036D14F86D13076D14F001F8EB1FE001FFEBFFC04890B51280486C1400D8F81F13 -FCD8E00313C027347CB230>115 D<14F8A51301A41303A21307A2130FA2131F133F137F -13FF1203000F90B512F0B7FCA426007FF8C7FCB3A7167CAA013F14F880A290391FFE01F0 -010F1303903907FF87E06DEBFFC06D14806D6C1300EC0FFC26467EC430>I -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fg cmti10 10.95 35 -/Fg 35 122 df<933807FF80043F13E09338FE00F8DB01F0133EDB07E0130E4B48131F4C -137F031F14FF4BC7FCA218FE157E1878180015FE5DA31401A25DA414030103B712F0A218 -E0903A0003F000070207140F4B14C0A3171F020F15805DA2173F1800141F5D5F177EA214 -3F92C712FE5FA34A1301027EECF81CA3160302FEECF03C4A1538A21878187013014A0101 -13F018E0933800F1C0EF7F804948EC1F0094C7FCA35C1307A2001E5B127F130F00FF5BA2 -49CAFC12FEEAF81EEA703CEA7878EA1FF0EA07C0385383BF33>12 -DI40 -D<14031580A2EC01C0EC00E0A21570A215781538153CA3151EA4151FA2150FA7151FA915 -3FA2153EA3157EA2157CA215FCA215F8A21401A215F0A2140315E0A2140715C0A2EC0F80 -A2141F15005C143EA25CA25CA2495A5C1303495A5C130F49C7FC131E5B137C5B5B485A48 -5A485A48C8FC121E5A12705A5A205A7FC325>I<387FFFFEA3B5FCA21705799521>45 -D<120FEA3FC0127FA212FFA31380EA7F00123C0A0A77891C>I<15031507150F151F151E -153E157EEC01FEEC03FC1407141FEB01FF90380FFBF8EB1FC3EB0E07130015F0A2140FA2 -15E0A2141FA215C0A2143FA21580A2147FA21500A25CA25CA21301A25CA21303A25CA213 -07A25CA2130FA25CA2131FA25CEB7FE0B612F0A215E0203D77BC2E>49 -D<15FE913803FFC091380F01F091383C00F84A137C4A7F4948133F49487F4A148049C7FC -5BEB0E0C011E15C0EB1C0EEB3C06133813781370020E133FD9F00C148013E0141C021813 -7F00011600EBC0384A13FEEC600102E05B3A00E3C003F89039FF0007F0013C495A90C748 -5A5E037FC7FC15FC4A5A4A5AEC0FC04AC8FC147E14F8EB03E0495A011FC9FC133E491418 -01F0143C48481438485A1678485A48C85A120E001E4A5AD83FE0130301FF495A397C3FF0 -1FD8780FB55AD8700391C7FCD8F0015B486C6C5A6E5AEC07C02A3F79BC2E>I<157F9138 -01FFE0913807C0F091381F007C023C133C4A133E4A131F1301495A5C1307A2495AA2163F -011F143EA2167E6E137C16F8ECE00102F013F09138F803E09138FC07C090390FFE0F00EC -FFBE6D13F86D5B7F6D7F8101037F90380F9FFFD91F0F1380D97C0713C0497E48486C13E0 -3903E0007F4848133F4848131F001F140F90C7FC003E1407A2127E127CA200FC15C05AA2 -ED0F80A2ED1F00153E007C143C157C007E5C6CEB03F0391F8007C0390FE03F802607FFFE -C7FC000113F838003FC0283F78BC2E>56 D<49B712C018F818FE903B0003FC0001FF9438 -007F804BEC3FC0A2F01FE014074B15F0180FA2140F5D181FA2021F16E05D183F19C0023F -ED7F804B14FF19004D5A027F4A5A92C7EA07F0EF1FE0EF7F804AD903FEC7FC92B512F017 -FE4AC7EA3F800101ED1FE04A6E7E17078401036F7E5CA30107825CA3010F5E4A1407A260 -011F150F5C4D5A60013F153F4A4A5A4D5A017F4A90C7FC4C5A91C7EA0FF849EC3FF0B812 -C094C8FC16F83C3E7BBD40>66 D<49B77E18F018FC903B0003FE0003FEEF00FF4BEC7F80 -F03FC00207151F19E05DA2020F16F0A25DA2141FF03FE05DA2023F16C0187F4B1580A202 -7FEDFF00604B495A4D5A02FF4A5A4D5A92C7EA3FC04CB4C7FC4990B512FC17E04ACAFCA2 -1303A25CA21307A25CA2130FA25CA2131FA25CA2133FA25CA2137FA25C497EB67EA33C3E -7BBD3E>80 D<92390FF001C0ED7FFE4AB5EA0380913907F80FC791390FC003EF91391F80 -01FF4AC71300027E805C495A4948143EA2495AA2010F153C5CA3011F1538A38094C7FC80 -A214FC6DB4FC15F015FE6DEBFFC06D14F06D14FC6D80143F020F7F020180EC001F150303 -007F167F163FA2161FA212075A5F120EA2001E153F94C7FCA2163E003E157E167C003F15 -FC4B5A486C5C4B5A6D495AD87DE0EB1F80D8F8F849C8FC017F13FE39F03FFFF8D8E00F13 -E048C690C9FC32427ABF33>83 D<277FFFFE01B500FC90B512E0B5FCA200039026800007 -90C7380FFC006C90C701FCEC07F049725A04035EA26350C7FCA20407150EA2040F5D1A3C -041F153862163B6216734F5A6D14E303014B5A6C15C303034BC8FC1683DB0703140E191E -030E151C61031C7F61ED380161157003F04A5A15E002014B5A15C0DA03804AC9FC60DA07 -00140E60140E605C029C5D14B8D97FF85D5C715A5C4A5DA24A92CAFC5F91C7FC705A137E -5F137C5F137801705D53406EBD5B>87 D<147E49B47E903907C1C38090391F80EFC09038 -3F00FF017E137F4914804848133F485AA248481400120F5B001F5C157E485AA215FE007F -5C90C7FCA21401485C5AA21403EDF0385AA21407EDE078020F1370127C021F13F0007E01 -3F13E0003E137FECF3E1261F01E313C03A0F8781E3803A03FF00FF00D800FC133E252977 -A72E>97 DIIII<167C4BB4FC923807C78092380F83C0ED1F87161FED3F3FA2157EA21780EE0E004BC7 -FCA414015DA414035DA30103B512F8A390260007E0C7FCA3140F5DA5141F5DA4143F92C8 -FCA45C147EA414FE5CA413015CA4495AA4495AA4495A121E127F5C12FF49C9FCA2EAFE1E -EAF83C1270EA7878EA3FE0EA0F802A5383BF1C>III<1478EB01FCA21303A314F8EB00E01400AD137C48B4 -FC38038F80EA0707000E13C0121E121CEA3C0F1238A2EA781F00701380A2EAF03F140012 -005B137E13FE5BA212015BA212035B1438120713E0000F1378EBC070A214F0EB80E0A2EB -81C01383148038078700EA03FEEA00F8163E79BC1C>I108 DIII<90 -3903E001F890390FF807FE903A1E7C1E0F80903A1C3E3C07C0013C137801389038E003E0 -EB783F017001C013F0ED80019038F07F0001E015F8147E1603000113FEA2C75AA2010114 -0717F05CA20103140F17E05CA20107EC1FC0A24A1480163F010F15005E167E5E131F4B5A -6E485A4B5A90393FB80F80DA9C1FC7FCEC0FFCEC03E049C9FCA2137EA213FEA25BA21201 -A25BA21203A2387FFFE0B5FCA22D3A80A72E>I114 DI< -EB01C0EB03F01307A25CA2130FA25CA2131FA25CA2133FA291C7FCA2007FB51280B6FC15 -00D8007EC7FC13FEA25BA21201A25BA21203A25BA21207A25BA2120FA25BA2121F141C13 -80A2003F133C1438EB0078147014F05C495AEA1F03495A6C48C7FCEA07FCEA01F0193A78 -B81E>I<137C48B4141C26038F80137EEA0707000E7F001E15FE121CD83C0F5C12381501 -EA781F007001805BA2D8F03F1303140000005D5B017E1307A201FE5C5B150F1201495CA2 -151F0003EDC1C0491481A2153F1683EE0380A2ED7F07000102FF13005C01F8EBDF0F0000 -9038079F0E90397C0F0F1C90391FFC07F8903907F001F02A2979A731>I<017CEB01C048 -B4EB07F038038F80EA0707000E01C013F8121E001C1403EA3C0F0038EC01F0A2D8781F13 -0000705BA2EAF03F91C712E012005B017E130116C013FE5B1503000115805BA2ED070012 -03495B150EA25DA25D1578000114706D5B0000495A6D485AD97E0FC7FCEB1FFEEB03F025 -2979A72A>I<017C167048B491387001FC3A038F8001F8EA0707000E01C015FE001E1403 -001CEDF000EA3C0F0038177C1507D8781F4A133C00701380A2D8F03F130F020049133812 -005B017E011F14784C137013FE5B033F14F0000192C712E05BA2170100034A14C049137E -17031880A2EF070015FE170E00010101141E01F86D131C0000D9039F5BD9FC076D5A903A -3E0F07C1E0903A1FFC03FFC0902703F0007FC7FC372979A73C>I<903903F001F890390F -FC07FE90393C1E0E0F9026780F1C138001F0EBB83FD801E013F89039C007F07FEA038000 -0714E0D9000F140048151C000E4AC7FCA2001E131FA2C75BA2143F92C8FCA35C147EA314 -FE4A131CA30101143C001E1538003F491378D87F811470018314F000FF5D9039077801C0 -39FE0F7C033A7C0E3C078027783C1E1EC7FC391FF80FFC3907E003F029297CA72A>I<13 -7C48B4143826038F8013FCEA0707000E7F001E1401001C15F8EA3C0F12381503D8781F14 -F000701380A2D8F03F1307020013E012005B017E130F16C013FE5B151F1201491480A215 -3F000315005BA25D157EA315FE5D00011301EBF8030000130790387C1FF8EB3FF9EB07E1 -EB00035DA21407000E5CEA3F80007F495AA24A5AD8FF0090C7FC143E007C137E00705B38 -7801F0383803E0381E0FC06CB4C8FCEA03F8263B79A72C>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fh cmsl10 10.95 33 -/Fh 33 122 df<007FB5FCA2B512FEA418067C961E>45 D<157015F014011407143F9038 -03FFE0137FEBFFCFEBF80F1300141F15C0A5143F1580A5147F1500A55C5CA513015CA513 -035CA513075CA5130F5CA3131F497EB612F8A31D3D78BC2D>49 DII<01061403D90780131F90390FF801FE91B512FC16F816F016E0168049EB -FE0015F890381C7FC091C8FCA3133C1338A513781370A2EC1FE0ECFFF8903873E03E9038 -FF001F01FCEB0F804914C049EB07E04914F049130390C7FC16F8A61507A21206EA3F8048 -7EA2150F00FF15F0A24914E090C7121F00FC15C000F0143F00701580ED7F0012786C14FE -4A5A6C495A390F800FE03907E03FC06CB5C7FCC613FCEB1FE0283F7ABC2D>53 -D56 DI<17E016011603831607A2160FA2161F83163FA2167F167716F7EEE7FCED -01E316C3150316831507EE03FEED0F01150E151E151C153C03387FED7800157015F05D4A -4880177F4A5AA24AC7FCA2020E81173F5C021FB6FC5CA20270C7EA3FE0171F5CA2495AA2 -494881170F49C8FCA2130EA24982013C1507A2137CD801FE4B7E2607FF80EC3FFEB500F0 -0107B512FC19F85E3E417DC044>65 D<013FB7FC18E018FC903B007FE00007FE6E489038 -01FF809438007FC05DF03FE0F01FF0A3027F16F892C8FCA54A16F04A153F19E0187F19C0 -F0FF8001014B13004A4A5A4D5AEF1FF04D5ADC03FFC7FC49B612F8EFFF8002F8C7EA3FE0 -EF0FF0EF07FC717E010715014A81711380A319C0130F5CA5011F4B13805C19005F601707 -013F4B5A4A4A5A4D5A4D5A017F913801FF8001FF020F90C7FCB812FC17F094C8FC3D3E7D -BD40>II<013FB812F8A39026007F -F0C7127F6E48140F18034B14011800A31978147F4B1570A502FF143892C7FCA319001778 -4915704A14F016011603160F91B6FC495DA29138FC001F16071603160101075D5CA21970 -19F019E0010F4A5A4A90C7120119C0A218031980011F16075CF00F00A260181E013F163E -4A157E4D5A1703017F150F01FFEDFFF8B9FCA2603D3E7DBD3E>69 -D<011FB512FC5BA29039003FF8006E5AA25DA5143F5DA5147F5DA514FF92C7FCA55B5CA5 -13035CA513075CA5130F5CA5131F5CA3133F497E007FB512F0A2B6FC263E7EBD21>73 -D<90263FFFF0933807FFFE5013FC629026007FF8EFFC00023F4D5AA2023BEF77F0A2DA39 -FC16E7A2F101CF0279EE038FDA70FE5FF1070FA2190E1A1FDAF07F151C02E06019381970 -6F7EF1E03F130102C0DB01C05BA26F6CEB0380A2953807007F0103160E4A6C6C93C7FC60 -A2606201076D6C5B02005F60A26F6C485A94380380015B010EDB07005BA2923801FC0EA2 -4D1303131E011C6D6C485C5FA25F1907013CEC7FC0013860013C5D137C01FE6EC7120F26 -07FF80013E4A7EB500FC031FB512F8043C5E4A131C573E7DBD53>77 -D<90263FFFE0023FB5FC6F16FEA29026003FF8020313C0021F030013004A6C157C023B16 -3C6F15381439810238167802787FDA707F157082153F82031F15F002F07FDAE00F5D8215 -078203031401010180DAC0015D82811780047F1303010315C04A013F5C17E0161F17F004 -0F1307010715F891C7000791C7FC17FC160317FE04015B4915FF010E6E130E188E177F18 -CEEF3FDE011E16FE011C6F5AA2170FA21707133C01386F5A133C017C150113FE2607FF80 -1400B512FC18705C483E7DBD44>I<013FB612FEEFFFE018F8903B007FF0000FFC6E48EB -01FF7113804BEC7FC0183F19E0F01FF0A2147F5D19F8A402FFED3FF092C8FCA219E0A2F0 -7FC05B4AEDFF8019004D5A4D5AEF0FF80103ED3FE04A903801FF8091B648C7FC17F002FC -CAFCA213075CA5130F5CA5131F5CA5133F5CA3137F497EB612E0A25D3D3E7DBD3E>80 -D<9239FF8003800207EBF007021F9038FC0F0091387F00FE02FCEB1F1FD903F0EB07BF49 -486DB4FC49487F4A6D5A49C8FC49157E133E137E173E49153CA57F1738A26D92C7FC8080 -80EB7FFEECFFE06D13FEEDFFC06D14F06D14FC010380010080143F020380DA003F7F1503 -1500707E163F161FA2160F121CA31607160F003C5EA35F003E151F94C7FC007E5D007F15 -3E6D5C16FC01E0495AD87DF0495AD8FCFCEB0FC03AF87F803F8027F01FFFFEC8FCD8E007 -13F839C0007FC031427BBF33>83 D85 D97 DIIIII<1478EB01FE130314FF -A25B14FE130314FCEB00F01400ACEB03F8EA01FF14F0A2EA001F130FA314E0A5131F14C0 -A5133F1480A5137F1400A55B5BA4EA03FF007F13F0A2B5FC183E7DBD1A>105 -D<143FEB1FFF5BA213017FA214FEA5130114FCA5130314F8A5130714F0A5130F14E0A513 -1F14C0A5133F1480A5137F1400A55B5BA4EA03FF007F13F8A2B5FC183F7DBE1A>108 -D<903907F007F8D803FFEB1FFF9139E0781FC09138E1E00F3B001FE38007E090380FE700 -02EE14F014FC14D814F85CA24A130F131F4A14E0A4161F133F4A14C0A4163F137F91C713 -80A4167F5B491500A300015D486C491380B5D8F87F13FCA32E287DA733>110 -DI<903907F01F80D803FFEB7FE09138E1E1F09138E387F83900 -1FE707EB0FE614EE02FC13F002D813E09138F801804AC7FCA25C131FA25CA4133F5CA513 -7F91C8FCA55B5BA31201487EB512FEA325287EA724>114 D<9138FF81C0010713E39038 -1F807F90397C003F8049131F4848130F5B00031407A248481400A27FA27F6D90C7FCEBFF -8014FC6C13FF6C14C015F06C6C7F011F7F13079038007FFE1403140100381300157EA212 -3C153E157E007C147CA2007E147815F8007F495A4A5A486C485A26F9E01FC7FC38E0FFFC -38C01FE0222A7DA824>II118 DI<90B539E007FFF05E18E0902707FE000313006D48EB01 -FC705A5F01014A5A5F16036E5C0100140794C7FC160E805E805E1678ED8070023F13F05E -ED81C015C191381FC38015C793C8FC15EF15EEEC0FFCA25DA26E5AA25DA26E5A5DA24AC9 -FC5C140E141E141C5C121C003F5B5A485B495A130300FE5B4848CAFCEA701EEA783CEA3F -F0EA0FC0343A80A630>121 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fi cmbx12 17.28 43 -/Fi 43 122 df46 D<16F04B7E1507151F153FEC01FF1407 -147F010FB5FCB7FCA41487EBF007C7FCB3B3B3B3007FB91280A6395E74DD51>49 -D<913801FFF8021FEBFFC091B612F8010315FF010F16C0013F8290267FFC0114F89027FF -E0003F7F4890C7000F7F48486E7FD807F86E148048486E14C048486E14E048486F13F001 -FC17F8486C816D17FC6E80B56C16FE8380A219FFA283A36C5BA26C5B6C90C8FCD807FC5D -EA01F0CA14FEA34D13FCA219F85F19F04D13E0A294B512C019804C14004C5B604C5B4C5B -604C13804C90C7FC4C5A4C5A4B13F05F4B13804B90C8FC4B5AED1FF84B5A4B5A4B48143F -4A5B4A48C8FC4A5A4A48157E4A5A4A5AEC7F8092C9FC02FE16FE495A495A4948ED01FCD9 -0FC0150749B8FC5B5B90B9FC5A4818F85A5A5A5A5ABAFCA219F0A4405E78DD51>I<92B5 -FC020F14F8023F14FF49B712C04916F0010FD9C01F13FC90271FFC00077FD93FE001017F -49486D8049C86C7F484883486C6F7F14C0486D826E806E82487FA4805CA36C5E4A5E6C5B -6C5B6C495E011FC85A90C95CA294B55A614C91C7FC604C5B4C5B4C5B4C5B047F13809226 -0FFFFEC8FC020FB512F817E094C9FC17F817FF91C7003F13E0040713F8040113FE707F71 -7F7113E085717FA2717F85A285831A80A31AC0EA03FCEA0FFF487F487F487FA2B57EA31A -80A34D14005C7E4A5E5F6C495E49C8485BD81FF85F000F5ED807FE92B55A6C6C6C491480 -6C01F0010791C7FC6C9026FF803F5B6D90B65A011F16F0010716C001014BC8FCD9001F14 -F0020149C9FC426079DD51>II<01C0EE01C0D801F8160F01FF167F02F0EC07FFDAFF8090B5FC92B712 -8019006060606060606095C7FC17FC5F17E0178004FCC8FC16E09026FC3FFCC9FC91CBFC -ADED3FFE0203B512F0020F14FE023F6E7E91B712E001FDD9E00F7F9027FFFE00037F02F8 -01007F02E06EB4FC02806E138091C8FC496F13C04917E07113F0EA00F090C914F8A219FC -83A219FEA419FFA3EA03F0EA0FFC487E487E487FA2B57EA319FEA35C4D13FC6C90C8FC5B -4917F8EA3FF001804B13F06D17E0001F5E6C6C17C06D4B1380D807FC92B512006C6C4A5B -6C6C6C01075B6C01E0011F5BD97FFE90B55A6DB712C0010F93C7FC6D15FC010115F0D900 -3F1480020301F0C8FC406078DD51>III<92383FFF800203B512FC021FECFF80027F -15E049B712F849D9F0077F010F90C76C7ED91FFCEC1FFFD93FF06E7F494802037F494882 -717F484980854890C9127FA24884183FA25A80A380806E157F6E5E14FE6E7E6F4A5A6C14 -F003FC495B03FF495B6C1580DCE0075B6CDBF80F90C7FC9338FE1FFE6C9238FF7FF84D5A -6D16C06D5E6D4BC8FC6D6F7E6D16E00101826D16FC023F814A8149B87E01078349839026 -3FFE3F8190267FFC0F819026FFF003814849C6FC48496D804849131F4890C70007801601 -48486E1580003F163F49150F007F7014C0491501717E8400FF835B8484A384A21A80A27F -007F1900607F003F606D160F001F606D4C5A6C6D153F6C6D4B5A6C01F04B5A6C01FC0203 -5B6C01FF021F5B6D9027F001FFFEC7FC6D90B65A010F16F001035E010093C8FC020F14F8 -DA007F90C9FC426079DD51>I66 D<4DB5ED03C0057F02F01407 -0407B600FE140F047FDBFFC0131F4BB800F0133F030F05FC137F033F9127F8007FFE13FF -92B6C73807FF814A02F0020113C3020702C09138007FE74A91C9001FB5FC023F01FC1607 -4A01F08291B54882490280824991CB7E49498449498449498449865D49498490B5FC484A -84A2484A84A24891CD127FA25A4A1A3F5AA348491A1FA44899C7FCA25CA3B5FCB07EA380 -A27EA2F50FC0A26C7FA37E6E1A1F6C1D80A26C801D3F6C6E1A00A26C6E616D1BFE6D7F6F -4E5A7F6D6D4E5A6D6D4E5A6D6D4E5A6D6E171F6D02E04D5A6E6DEFFF806E01FC4C90C7FC -020F01FFEE07FE6E02C0ED1FF8020102F8ED7FF06E02FF913803FFE0033F02F8013F1380 -030F91B648C8FC030117F86F6C16E004071680DC007F02F8C9FC050191CAFC626677E375 ->IIII73 D76 D<94381FFFE00407B67E043F15F04BB712FE030F -EEFFC0033FD9FC0014F092B500C0010F13FC020349C7000113FF4A01F86E6C7F021F496F -13E04A01C0030F7F4A496F7F91B5C96C7F0103497013FF494970804B834949717F498749 -49717F49874B8390B586484A717FA24891CB6C7FA2481D804A84481DC0A348497214E0A3 -481DF0A34A85481DF8A5B51CFCB06C1DF8A36E96B5FCA36C1DF0A46C6D4E14E0A36C1DC0 -6E606C1D80A26C6E4D1400A26C6E4D5BA26C6E4D5BA26D6D4D5B6D636D6D4D5B6F94B5FC -6D636D6D4C5C6D6D4C91C7FC6D6E4B5B6D02E0031F5B023F6D4B13F06E01FC92B55A6E01 -FF02035C020302C0010F91C8FC020002FC90B512FC033F90B712F0030F17C0030394C9FC -DB007F15F804071580DC001F01E0CAFC666677E379>79 DI83 D<001FBEFCA64849C79126E0000F -148002E0180091C8171F498601F81A0349864986A2491B7FA2491B3F007F1DC090C9181F -A4007E1C0FA600FE1DE0481C07A5CA95C7FCB3B3B3A3021FBAFCA663617AE070>II<913803FFFE027FEBFF -F00103B612FE010F6F7E4916E090273FFE001F7FD97FE001077FD9FFF801017F486D6D7F -717E486D6E7F85717FA2717FA36C496E7FA26C5B6D5AEB1FC090C9FCA74BB6FC157F0207 -B7FC147F49B61207010F14C0013FEBFE004913F048B512C04891C7FC485B4813F85A5C48 -5B5A5CA2B55AA45FA25F806C5E806C047D7F6EEB01F96C6DD903F1EBFF806C01FED90FE1 -14FF6C9027FFC07FC01580000191B5487E6C6C4B7E011F02FC130F010302F001011400D9 -001F90CBFC49437CC14E>97 D<903807FF80B6FCA6C6FC7F7FB3A8EFFFF8040FEBFF8004 -7F14F00381B612FC038715FF038F010014C0DBBFF0011F7FDBFFC001077F93C76C7F4B02 -007F03F8824B6F7E4B6F13804B17C0851BE0A27313F0A21BF8A37313FCA41BFEAE1BFCA4 -4F13F8A31BF0A24F13E0A24F13C06F17804F1300816F4B5A6F4A5B4AB402075B4A6C6C49 -5B9126F83FE0013F13C09127F00FFC03B55A4A6CB648C7FCDAC00115F84A6C15E091C700 -1F91C8FC90C8000313E04F657BE35A>I<92380FFFF04AB67E020F15F0023F15FC91B77E -01039039FE001FFF4901F8010113804901E0010713C04901804913E0017F90C7FC49484A -13F0A2485B485B5A5C5A7113E0485B7113C048701380943800FE0095C7FC485BA4B5FCAE -7EA280A27EA2806C18FCA26C6D150119F87E6C6D15036EED07F06C18E06C6D150F6D6DEC -1FC06D01E0EC7F806D6DECFF00010701FCEB03FE6D9039FFC03FFC010091B512F0023F5D -020F1580020102FCC7FCDA000F13C03E437BC148>II<92380FFFC04AB512FC020FECFF8002 -3F15E091B712F80103D9FE037F499039F0007FFF011F01C0011F7F49496D7F4990C76C7F -49486E7F48498048844A804884485B727E5A5C48717EA35A5C721380A2B5FCA391B9FCA4 -1A0002C0CBFCA67EA380A27EA27E6E160FF11F806C183F6C7FF17F006C7F6C6D16FE6C17 -016D6C4B5A6D6D4A5A6D01E04A5A6D6DEC3FE0010301FC49B45A6D9026FFC01F90C7FC6D -6C90B55A021F15F8020715E0020092C8FC030713F041437CC14A>III<903807FF80B6FCA6C6FC7F7FB3A8EF1FFF94B512F0040714FC041F14FF4C8193267F -E07F7F922781FE001F7FDB83F86D7FDB87F07FDB8FC0814C7F039FC78015BE03BC8003FC -825DA25DA25DA45DB3B2B7D8F007B71280A651647BE35A>II<903807FF80B6FCA6C6FC7F7FB3B3B3B3 -ADB712E0A623647BE32C>108 D<902607FF80D91FFFEEFFF8B691B500F00207EBFF8004 -0702FC023F14E0041F02FF91B612F84C6F488193267FE07F6D4801037F922781FE001F90 -27E00FF0007FC6DA83F86D9026F01FC06D7F6DD987F06D4A487F6DD98FC0DBF87EC7804C -6D027C80039FC76E488203BEEEFDF003BC6E4A8003FC04FF834B5FA24B5FA24B94C8FCA4 -4B5EB3B2B7D8F007B7D8803FB612FCA67E417BC087>I<902607FF80EB1FFFB691B512F0 -040714FC041F14FF4C8193267FE07F7F922781FE001F7FC6DA83F86D7F6DD987F07F6DD9 -8FC0814C7F039FC78015BE03BC8003FC825DA25DA25DA45DB3B2B7D8F007B71280A65141 -7BC05A>I<923807FFE092B6FC020715E0021F15F8027F15FE494848C66C6C7E010701F0 -010F13E04901C001037F49496D7F4990C87F49486F7E49486F7E48496F13804819C04A81 -4819E048496F13F0A24819F8A348496F13FCA34819FEA4B518FFAD6C19FEA46C6D4B13FC -A36C19F8A26C6D4B13F0A26C19E06C6D4B13C0A26C6D4B13806C6D4B13006D6C4B5A6D6D -495B6D6D495B010701F0010F13E06D01FE017F5B010090B7C7FC023F15FC020715E00200 -92C8FC030713E048437CC151>I<902607FF80EBFFF8B6010FEBFF80047F14F00381B612 -FC038715FF038F010114C09227BFF0003F7FC6DAFFC0010F7F6D91C76C7F6D496E7F03F8 -6E7F4B6E7F4B17804B6F13C0A27313E0A27313F0A21BF885A21BFCA3851BFEAE4F13FCA4 -1BF861A21BF0611BE0611BC06F92B512801B006F5C6F4A5B6F4A5B03FF4A5B70495B04E0 -017F13C09226CFFC03B55A03C7B648C7FC03C115F803C015E0041F91C8FC040313E093CB -FCB3A3B712F0A64F5D7BC05A>I114 -D<913A3FFF8007800107B5EAF81F011FECFE7F017F91B5FC48B8FC48EBE0014890C7121F -D80FFC1407D81FF0801600485A007F167F49153FA212FF171FA27F7F7F6D92C7FC13FF14 -E014FF6C14F8EDFFC06C15FC16FF6C16C06C16F06C826C826C826C82013F1680010F16C0 -1303D9007F15E0020315F0EC001F1500041F13F81607007C150100FC81177F6C163FA217 -1F7EA26D16F0A27F173F6D16E06D157F6D16C001FEEDFF806D0203130002C0EB0FFE02FC -EB7FFC01DFB65A010F5DD8FE0315C026F8007F49C7FC48010F13E035437BC140>II<902607FFC0ED3F -FEB60207B5FCA6C6EE00076D826D82B3B3A260A360A2607F60183E6D6D147E4E7F6D6D49 -48806D6DD907F0ECFF806D01FFEB3FE06D91B55A6E1500021F5C020314F8DA003F018002 -F0C7FC51427BC05A>III<007FB600C0017FB512F8A6 -D8001F01F8C70007EBF0006D040190C7FC6D6D5D6D6D4A5A6D6D4A5A70495A6D4C5A6E7F -6E6D495A6E6D495A7049C8FC6E4A5A6E6D485A6E6D485A6E13FFEF8FF06EEC9FE06FEBFF -C06F5C6F91C9FC5F6F5B816F7F6F7F8481707F8493B57E4B805D4B80DB0FF37FDB1FE17F -04C080153F4B486C7F4B486C7F4A486D7F4A486D7F4A5A4B6D7F020F6E7F4A486D7F4A48 -6D804A5A4AC86C7F49486F7F4A6F7F0107707FEB3FFFB600F049B7FCA650407EBF55>I< -B700C00103B512FCA6D8003F01C0C8381FFE006FED07F0A26D6D5E190F6D6D5E191F6D6D -5E193F6D95C7FC6F5D6D177E6F15FEA26D6E495AA26E6D5C18036E6D5C18076E5E70130F -6E5E70131FA26E6D495AA26E6D91C8FC606E6D137E18FE6E5D17816F5C17C3A26FEBE7F0 -A26FEBF7E017FF6F5CA26F5CA26F91C9FCA36F5BA26F5BA2705AA2705AA2705AA35FA25F -163F94CAFC5E167E16FED807E05CD81FF81301487E486C495AA2B5495AA24B5A5E151F4B -5A6C4849CBFC15FEEBFC01393FF807FC391FF03FF06CB55A6C5C6C91CCFCC613FCEB1FE0 -4E5D7DBF55>I E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fj cmtt10 10.95 76 -/Fj 76 126 df<00101304007C131F00FEEB3F80A26C137FA248133FB2007E1400007C7F -003C131E00101304191C75B830>34 D37 D<141E147F14FF5BEB03FEEB07FCEB0FF0EB1FE0EB3FC0 -EB7F80EBFF00485A5B12035B485A120F5BA2485AA2123F5BA2127F90C7FCA412FEAD127F -A47F123FA27F121FA26C7EA27F12076C7E7F12017F6C7EEB7F80EB3FC0EB1FE0EB0FF0EB -07FCEB03FEEB01FF7F147F141E184771BE30>40 D<127812FE7E7F6C7E6C7EEA0FF06C7E -6C7E6C7E6C7EEB7F80133F14C0131FEB0FE014F01307A2EB03F8A214FC1301A214FE1300 -A4147FAD14FEA4130114FCA2130314F8A2EB07F0A2130F14E0EB1FC0133F1480137FEBFF -00485A485A485A485AEA3FE0485A485A90C7FC5A1278184778BE30>I<14E0497E497EA6 -0038EC0380007EEC0FC0D8FF83EB3FE001C3137F9038F3F9FF267FFBFB13C06CB6128000 -0FECFE00000314F86C5C6C6C13C0011F90C7FC017F13C048B512F04880000F14FE003FEC -FF80267FFBFB13C026FFF3F913E09038C3F87F0183133FD87E03EB0FC00038EC03800000 -91C7FCA66D5A6D5A23277AAE30>I<143EA2147FAF007FB7FCA2B81280A36C1600A2C76C -C8FCAF143EA229297DAF30>II<007FB612F0A2B712F8A36C15F0A225077B9E30>I<120FEA3FC0EA7FE0A2EAFFF0A4EA -7FE0A2EA3FC0EA0F000C0C6E8B30>I<16F01501ED03F8A21507A2ED0FF0A2ED1FE0A2ED -3FC0A2ED7F80A2EDFF00A24A5AA25D1403A24A5AA24A5AA24A5AA24A5AA24A5AA24AC7FC -A2495AA25C1303A2495AA2495AA2495AA2495AA2495AA249C8FCA2485AA25B1203A2485A -A2485AA2485AA2485AA2485AA248C9FCA25AA2127CA225477BBE30>I<14FE903807FFC0 -497F013F13F8497F90B57E48EB83FF4848C6138049137F4848EB3FC04848EB1FE049130F -001F15F0491307A24848EB03F8A290C712014815FCA400FEEC00FEAD6C14016C15FCA36D -1303003F15F8A26D1307001F15F0A26D130F6C6CEB1FE0A26C6CEB3FC06C6CEB7F806D13 -FF2601FF8313006CEBFFFE6D5B6D5B010F13E06D5BD900FEC7FC273A7CB830>IIIII<000FB612804815C05AA316800180C8FCAEEB -83FF019F13C090B512F015FC8181D9FE0313809039F0007FC049133F0180EB1FE06CC712 -0F000E15F0C81207A216F81503A31218127EA2B4FC150716F048140F6C15E06C141F6DEB -3FC06D137F3A3FE001FF80261FFC0F13006CB55A6C5C6C5C6C14E06C6C1380D90FFCC7FC -25397BB730>II<127CB712FC16FEA416FC48C7EA0FF816F0ED1FE0007CEC3FC0 -C8EA7F80EDFF00A24A5A4A5A5D14075D140F5D4A5AA24A5AA24AC7FCA25C5C13015CA213 -035CA213075CA4495AA6131F5CA96D5A6DC8FC273A7CB830>I<49B4FC011F13F0017F13 -FC90B57E0003ECFF804815C048010113E03A1FF8003FF049131FD83FC0EB07F8A24848EB -03FC90C71201A56D1303003F15F86D13076C6CEB0FF06C6CEB1FE0D807FCEB7FC03A03FF -83FF806C90B512006C6C13FC011F13F0497F90B512FE48802607FE0013C0D80FF8EB3FE0 -D81FE0EB0FF04848EB07F8491303007F15FC90C712014815FE481400A66C14016C15FC6D -1303003F15F86D1307D81FF0EB1FF06D133F3A0FFF01FFE06C90B512C06C1580C6ECFE00 -6D5B011F13F0010190C7FC273A7CB830>I<49B4FC010F13E0013F13F890B57E48804880 -48010113803A0FFC007FC0D81FF0EB3FE04848131F49EB0FF048481307A290C7EA03F85A -4815FC1501A416FEA37E7E6D1303A26C6C13076C6C130F6D133FD80FFC13FF6CB6FC7E6C -14FE6C14F9013FEBE1FC010F138190380060011400ED03F8A2150716F0150F000F15E048 -6C131F486CEB3FC0157FEDFF804A1300EC07FE391FF01FFC90B55A6C5C6C5C6C1480C649 -C7FCEB3FF0273A7CB830>I<120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F00C7 -FCAF120FEA3FC0EA7FE0A2EAFFF0A4EA7FE0A2EA3FC0EA0F000C276EA630>II<16F01503ED07F8151F157FEDFFF014034A13C0021F138091383F -FE00ECFFF8495B010713C0495BD93FFEC7FC495A3801FFF0485B000F13804890C8FCEA7F -FC5BEAFFE05B7FEA7FF87FEA1FFF6C7F000313E06C7F38007FFC6D7E90380FFF806D7F01 -0113F06D7FEC3FFE91381FFF80020713C06E13F01400ED7FF8151F1507ED03F01500252F -7BB230>I<1278127EB4FC13C07FEA7FF813FEEA1FFF6C13C000037F6C13F86C6C7EEB1F -FF6D7F010313E06D7F9038007FFC6E7E91380FFF806E13C0020113F080ED3FF8151F153F -EDFFF05C020713C04A138091383FFE004A5A903801FFF0495B010F13804990C7FCEB7FFC -48485A4813E0000F5B4890C8FCEA7FFE13F8EAFFE05B90C9FC127E1278252F7BB230>62 -D64 -D<147F4A7EA2497FA4497F14F7A401077F14E3A3010F7FA314C1A2011F7FA490383F80FE -A590387F007FA4498049133F90B6FCA34881A39038FC001F00038149130FA40007814913 -07A2D87FFFEB7FFFB56CB51280A46C496C130029397DB830>I<007FB512F0B612FE6F7E -82826C813A03F8001FF815076F7E1501A26F7EA615015EA24B5A1507ED1FF0ED7FE090B6 -5A5E4BC7FC6F7E16E0829039F8000FF8ED03FC6F7E1500167FA3EE3F80A6167F1700A25E -4B5A1503ED1FFC007FB6FCB75A5E16C05E6C02FCC7FC29387EB730>I<91387F803C9039 -03FFF03E49EBFC7E011F13FE49EBFFFE5B9038FFE07F48EB801F3903FE000F484813075B -48481303A2484813015B123F491300A2127F90C8FC167C16005A5AAC7E7EA2167C6D14FE -123FA27F121F6D13016C6C14FCA26C6CEB03F86D13076C6CEB0FF03901FF801F6C9038E0 -7FE06DB512C06D14806D1400010713FC6D13F09038007FC0273A7CB830>I<003FB512E0 -4814FCB67E6F7E6C816C813A03F8007FF0ED1FF8150F6F7E6F7E15016F7EA2EE7F80A216 -3F17C0161FA4EE0FE0AC161F17C0A3163F1780A2167F17005E4B5A15034B5A150F4B5AED -7FF0003FB65A485DB75A93C7FC6C14FC6C14E02B387FB730>I<007FB7FCB81280A47ED8 -03F8C7123FA8EE1F0093C7FCA4157C15FEA490B5FCA6EBF800A4157C92C8FCA5EE07C0EE -0FE0A9007FB7FCB8FCA46C16C02B387EB730>I<003FB712804816C0B8FCA27E7ED801FC -C7121FA8EE0F8093C7FCA5153E157FA490B6FCA69038FC007FA4153E92C8FCAE383FFFF8 -487FB5FCA27E6C5B2A387EB730>I<02FF13F00103EBC0F8010F13F1013F13FD4913FF90 -B6FC4813C1EC007F4848133F4848131F49130F485A491307121F5B123F491303A2127F90 -C7FC6F5A92C8FC5A5AA892B5FC4A14805CA26C7F6C6D1400ED03F8A27F003F1407A27F12 -1F6D130F120F7F6C6C131FA2D803FE133F6C6C137FECC1FF6C90B5FC7F6D13FB010F13F3 -0103EBC1F0010090C8FC293A7DB830>I<3B3FFF800FFFE0486D4813F0B56C4813F8A26C -496C13F06C496C13E0D803F8C7EAFE00B290B6FCA601F8C7FCB3A23B3FFF800FFFE0486D -4813F0B56C4813F8A26C496C13F06C496C13E02D387FB730>I<007FB6FCB71280A46C15 -00260007F0C7FCB3B3A8007FB6FCB71280A46C1500213879B730>I75 -D<383FFFF8487FB57EA26C5B6C5BD801FCC9FCB3B0EE0F80EE1FC0A9003FB7FC5AB8FCA2 -7E6C16802A387EB730>III<90383FFFE048B512FC000714FF4815804815C04815E0EB -F80001E0133FD87F80EB0FF0A290C71207A44815F8481403B3A96C1407A26C15F0A36D13 -0FA26D131F6C6CEB3FE001F813FF90B6FC6C15C06C15806C1500000114FCD8003F13E025 -3A7BB830>I<007FB512F0B612FE6F7E16E0826C813903F8003FED0FFCED03FE15016F7E -A2821780163FA6167F17005EA24B5A1503ED0FFCED3FF890B6FC5E5E16804BC7FC15F001 -F8C9FCB0387FFFC0B57EA46C5B29387EB730>I<003FB57E4814F0B612FC15FF6C816C81 -2603F8017F9138003FF0151F6F7E15071503821501A515035E1507150F4B5A153F4AB45A -90B65A5E93C7FC5D8182D9F8007FED3FE0151F150F821507A817F8EEF1FCA53A3FFF8003 -FB4801C0EBFFF8B56C7E17F06C496C13E06C49EB7FC0C9EA1F002E397FB730>82 -D<90390FF803C0D97FFF13E048B512C74814F74814FF5A381FF80F383FE001497E484813 -7F90C7123F5A48141FA2150FA37EED07C06C91C7FC7F7FEA3FF0EA1FFEEBFFF06C13FF6C -14E0000114F86C80011F13FF01031480D9003F13C014019138007FE0151FED0FF0A2ED07 -F8A2007C140312FEA56C140716F07F6DEB0FE06D131F01F8EB3FC001FF13FF91B5128016 -0000FD5CD8FC7F13F8D8F81F5BD878011380253A7BB830>I<003FB712C04816E0B8FCA4 -3AFE003F800FA8007CED07C0C791C7FCB3B1011FB5FC4980A46D91C7FC2B387EB730>I< -3B7FFFC007FFFCB56C4813FEA46C496C13FCD803F8C7EA3F80B3B16D147F00011600A36C -6C14FE6D13016D5CEC800390393FE00FF890391FF83FF06DB55A6D5C6D5C6D91C7FC9038 -007FFCEC1FF02F3980B730>III<3A3FFF01FFF84801837F02C77FA202835B6C01015B3A01FC007F806D91C7FC00 -005C6D5BEB7F01EC81FCEB3F8314C3011F5B14E7010F5B14FF6D5BA26D5BA26D5BA26D90 -C8FCA4497FA2497FA2815B81EB0FE781EB1FC381EB3F8181EB7F0081497F49800001143F -49800003141F49800007140FD87FFEEB7FFFB590B5128080A25C6C486D130029387DB730 ->II<007FB612F0A2B712F8A36C15F0A225077B7D30>95 D97 DII<913801FFE0 -4A7F5CA28080EC0007AAEB03FE90381FFF874913E790B6FC5A5A481303380FFC00D81FF0 -133F49131F485A150F4848130790C7FCA25AA25AA87E6C140FA27F003F141F6D133F6C7E -6D137F390FF801FF2607FE07EBFFC06CB712E06C16F06C14F76D01C713E0011F010313C0 -D907FCC8FC2C397DB730>I<49B4FC010713E0011F13F8017F7F90B57E48804801811380 -3A07FC007FC04848133FD81FE0EB1FE0150F484814F0491307127F90C7FCED03F85A5AB7 -FCA516F048C9FC7E7EA27F003FEC01F06DEB03F86C7E6C7E6D1307D807FEEB1FF03A03FF -C07FE06C90B5FC6C15C0013F14806DEBFE00010713F8010013C0252A7CA830>IIII<14E0EB03F8A2497EA36D5AA2EB00E091C8FCA9381FFFF8487F5AA27E7EEA0001B3 -A9003FB612C04815E0B7FCA27E6C15C023397AB830>I -107 D<387FFFF8B57EA47EEA0001B3B3A8007FB612F0B712F8A46C15F025387BB730>I< -02FC137E3B7FC3FF01FF80D8FFEF01877F90B500CF7F15DF92B57E6C010F13872607FE07 -EB03F801FC13FE9039F803FC01A201F013F8A301E013F0B3A23C7FFE0FFF07FF80B54801 -8F13C0A46C486C01071380322881A730>II<49B4FC -010F13E0013F13F8497F90B57E0003ECFF8014013A07FC007FC04848EB3FE0D81FE0EB0F -F0A24848EB07F8491303007F15FC90C71201A300FEEC00FEA86C14016C15FCA26D130300 -3F15F86D13076D130F6C6CEB1FF06C6CEB3FE06D137F3A07FF01FFC06C90B512806C1500 -6C6C13FC6D5B010F13E0010190C7FC272A7CA830>II<49B413F8010FEBC1FC013F13F14913FD48B6FC5A481381390F -FC007F49131F4848130F491307485A491303127F90C7FC15015A5AA77E7E15037FA26C6C -1307150F6C6C131F6C6C133F01FC137F3907FF01FF6C90B5FC6C14FD6C14F9013F13F101 -0F13C1903803FE0190C7FCAD92B512F84A14FCA46E14F82E3C7DA730>II< -90381FFC1E48B5129F000714FF5A5A5A387FF007EB800100FEC7FC4880A46C143E007F91 -C7FC13E06CB4FC6C13FC6CEBFF806C14E0000114F86C6C7F01037F9038000FFF02001380 -007C147F00FEEC1FC0A2150F7EA27F151F6DEB3F806D137F9039FC03FF0090B6FC5D5D00 -FC14F0D8F83F13C026780FFEC7FC222A79A830>III<3B3FFFC07F -FF80486DB512C0B515E0A26C16C06C496C13803B01F80003F000A26D130700005DA26D13 -0F017E5CA2017F131F6D5CA2EC803F011F91C7FCA26E5A010F137EA2ECE0FE01075BA214 -F101035BA3903801FBF0A314FF6D5BA36E5A6E5A2B277EA630>I<3B3FFFC01FFFE0486D -4813F0B515F8A26C16F06C496C13E0D807E0C7EA3F00A26D5C0003157EA56D14FE00015D -EC0F80EC1FC0EC3FE0A33A00FC7FF1F8A2147DA2ECFDF9017C5C14F8A3017E13FBA29039 -3FF07FE0A3ECE03FA2011F5C90390F800F802D277FA630>I<3A3FFF81FFFC4801C37FB5 -80A26C5D6C01815BC648C66CC7FC137FEC80FE90383F81FC90381FC3F8EB0FE3ECE7F06D -B45A6D5B7F6D5B92C8FC147E147F5C497F81903803F7E0EB07E790380FE3F0ECC1F89038 -1F81FC90383F80FE90387F007E017E137F01FE6D7E48486D7E267FFF80B5FCB500C11480 -14E3A214C16C0180140029277DA630>I<3B3FFFC07FFF80486DB512C0B515E0A26C16C0 -6C496C13803B01FC0003F000A2000014076D5C137E150F017F5C7F151FD91F805BA214C0 -010F49C7FCA214E00107137EA2EB03F0157C15FCEB01F85DA2EB00F9ECFDF0147D147FA2 -6E5AA36E5AA35DA2143F92C8FCA25C147EA2000F13FE486C5AEA3FC1EBC3F81387EB8FF0 -EBFFE06C5B5C6C90C9FC6C5AEA01F02B3C7EA630>I<001FB612FC4815FE5AA316FC90C7 -EA0FF8ED1FF0ED3FE0ED7FC0EDFF80003E491300C7485A4A5A4A5A4A5A4A5A4A5A4A5A49 -90C7FC495A495A495A495A495A495A4948133E4890C7127F485A485A485A485A485A48B7 -FCB8FCA46C15FE28277DA630>II125 D E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fk cmbx12 14.4 49 -/Fk 49 122 df<151E153E157E15FCEC01F8EC07F0EC0FE0EC1FC01580143FEC7F0014FE -1301495A5C1307495AA2495A133F5C137FA2495AA24890C7FCA25A5BA21207A2485AA312 -1F5BA3123FA25BA3127FA55B12FFB3A3127F7FA5123FA37FA2121FA37F120FA36C7EA212 -03A27F7EA26C7FA26D7EA2133F80131F6D7EA26D7E1303806D7E1300147FEC3F80141F15 -C0EC0FE0EC07F0EC01F8EC00FC157E153E151E1F7973D934>40 D<127012F8127C127E7E -EA1FC06C7E6C7E12037F6C7E6C7E7F6D7E133F806D7EA26D7E80130780A26D7EA26D7EA2 -15807FA215C0A2EC7FE0A315F0143FA315F8A2141FA315FCA5140F15FEB3A315FC141FA5 -15F8A3143FA215F0A3147F15E0A3ECFFC0A21580A25B1500A2495AA2495AA25C130F5C49 -5AA2495A5C137F49C7FC5B485A485A5B1207485A485A48C8FC127E127C5A12701F7979D9 -34>I46 -D<913803FFC0023F13FC91B6FC010315C0010F018113F0903A1FFC003FF849486D7E4948 -6D7E49486D7E48496D138048496D13C0A24817E04890C813F0A34817F8A24817FC49157F -A3007F17FEA600FF17FFB3A5007F17FEA6003F17FCA26D15FFA26C17F8A36C17F0A26C6D -4913E0A26C6D4913C06C17806E5B6C6D4913006D6C495AD91FFCEB3FF8903A0FFF81FFF0 -6D90B55A01011580D9003F01FCC7FC020313C0384F7BCD43>48 D<157815FC1403140714 -1F14FF130F0007B5FCB6FCA2147F13F0EAF800C7FCB3B3B3A6007FB712FEA52F4E76CD43 ->II<91380FFFC091B512FC0107ECFF80011F15E090 -263FF8077F9026FF800113FC4848C76C7ED803F86E7E491680D807FC8048B416C080486D -15E0A4805CA36C17C06C5B6C90C75AD801FC1680C9FC4C13005FA24C5A4B5B4B5B4B13C0 -4B5BDBFFFEC7FC91B512F816E016FCEEFF80DA000713E0030113F89238007FFE707E7013 -807013C018E07013F0A218F8A27013FCA218FEA2EA03E0EA0FF8487E487E487EB57EA318 -FCA25E18F891C7FC6C17F0495C6C4816E001F04A13C06C484A1380D80FF84A13006CB44A -5A6CD9F0075BC690B612F06D5D011F1580010302FCC7FCD9001F1380374F7ACD43>I<17 -7C17FEA2160116031607160FA2161F163F167FA216FF5D5DA25D5DED1FBFED3F3F153E15 -7C15FCEC01F815F0EC03E01407EC0FC01580EC1F005C147E147C5C1301495A495A5C495A -131F49C7FC133E5B13FC485A5B485A1207485A485A90C8FC123E127E5ABA12C0A5C96C48 -C7FCAF020FB712C0A53A4F7CCE43>III<121F7F7F -EBFF8091B81280A45A1900606060A2606060485F0180C86CC7FC007EC95A4C5A007C4B5A -5F4C5A160F4C5A484B5A4C5A94C8FC16FEC812014B5A5E4B5A150F4B5AA24B5AA24B5A15 -FFA24A90C9FCA25C5D1407A2140FA25D141FA2143FA4147F5DA314FFA55BAC6D5BA2EC3F -C06E5A395279D043>I<913807FFC0027F13FC0103B67E010F15E090261FFC0113F8903A -3FE0003FFCD97F80EB0FFE49C76C7E48488048486E1380000717C04980120F18E0177FA2 -121F7FA27F7F6E14FF02E015C014F802FE4913806C7FDBC00313009238F007FE6C02F85B -9238FE1FF86C9138FFBFF06CEDFFE017806C4BC7FC6D806D81010F15E06D81010115FC01 -0781011F81491680EBFFE748018115C048D9007F14E04848011F14F048487F4848130303 -0014F8484880161F4848020713FC1601824848157F173FA2171FA2170FA218F8A27F007F -17F06D151FA26C6CED3FE0001F17C06D157F6C6CEDFF806C6C6C010313006C01E0EB0FFE -6C01FCEBFFFC6C6CB612F06D5D010F1580010102FCC7FCD9000F13C0364F7ACD43>I<91 -380FFF8091B512F8010314FE010F6E7E4901037F90267FF8007F4948EB3FF048496D7E48 -4980486F7E484980824817805A91C714C05A7013E0A218F0B5FCA318F8A618FCA46C5DA3 -7EA25E6C7F6C5DA26C5D6C7F6C6D137B6C6D13F390387FF803011FB512E36D14C3010302 -8313F89039007FFE03EC00401500A218F05EA3D801F816E0487E486C16C0487E486D4913 -80A218005E5F4C5A91C7FC6C484A5A494A5A49495B6C48495BD803FC010F5B9027FF807F -FEC7FC6C90B55A6C6C14F06D14C0010F49C8FC010013F0364F7ACD43>I<171F4D7E4D7E -A24D7EA34C7FA24C7FA34C7FA34C7FA24C7FA34C8083047F80167E8304FE804C7E030181 -16F8830303814C7E03078116E083030F814C7E031F81168083033F8293C77E4B82157E84 -03FE824B800201835D840203834B800207835D844AB87EA24A83A3DA3F80C88092C97E4A -84A2027E8202FE844A82010185A24A820103854A82010785A24A82010F855C011F717FEB -FFFCB600F8020FB712E0A55B547BD366>65 DI<932601FFFCEC01C0047FD9FFC013030307B600F81307033F03FE131F -92B8EA803F0203DAE003EBC07F020F01FCC7383FF0FF023F01E0EC0FF94A01800203B5FC -494848C9FC4901F8824949824949824949824949824990CA7E494883A2484983485B1B7F -485B481A3FA24849181FA3485B1B0FA25AA298C7FC5CA2B5FCAE7EA280A2F307C07EA36C -7FA21B0F6C6D1980A26C1A1F6C7F1C006C6D606C6D187EA26D6C606D6D4C5A6D6D16036D -6D4C5A6D6D4C5A6D01FC4C5A6D6DEE7F806D6C6C6C4BC7FC6E01E0EC07FE020F01FEEC1F -F80203903AFFE001FFF0020091B612C0033F93C8FC030715FCDB007F14E0040101FCC9FC -525479D261>I -III73 D76 -D<93380FFFC00303B6FC031F15E092B712FC0203D9FC0013FF020F01C0010F13C0023F90 -C7000313F0DA7FFC02007F494848ED7FFE4901E0ED1FFF49496F7F49496F7F4990C96C7F -49854948707F4948707FA24849717E48864A83481B804A83481BC0A2481BE04A83A2481B -F0A348497113F8A5B51AFCAF6C1BF86E5FA46C1BF0A26E5F6C1BE0A36C6D4D13C0A26C6D -4D1380A26C1B006C6D4D5A6E5E6C626D6C4C5B6D6D4B5B6D6D4B5B6D6D4B5B6D6D4B5B6D -6D4B90C7FC6D6D4B5A6D01FF02035B023F01E0011F13F0020F01FC90B512C0020390B7C8 -FC020016FC031F15E0030392C9FCDB001F13E0565479D265>79 DI82 D<91260FFF80130791B500F85B010702FF5B011FEDC0 -3F49EDF07F9026FFFC006D5A4801E0EB0FFD4801800101B5FC4848C87E48488149150F00 -1F824981123F4981007F82A28412FF84A27FA26D82A27F7F6D93C7FC14C06C13F014FF15 -F86CECFF8016FC6CEDFFC017F06C16FC6C16FF6C17C06C836C836D826D82010F82130301 -0082021F16801400030F15C0ED007F040714E01600173F050F13F08383A200788200F882 -A3187FA27EA219E07EA26CEFFFC0A27F6D4B13806D17006D5D01FC4B5A01FF4B5A02C04A -5A02F8EC7FF0903B1FFFC003FFE0486C90B65AD8FC0393C7FC48C66C14FC48010F14F048 -D9007F90C8FC3C5479D24B>I<003FBC1280A59126C0003F9038C0007F49C71607D87FF8 -060113C001E08449197F49193F90C8171FA2007E1A0FA3007C1A07A500FC1BE0481A03A6 -C994C7FCB3B3AC91B912F0A553517BD05E>II97 DI<913801FFF8021FEB -FF8091B612F0010315FC010F9038C00FFE903A1FFE0001FFD97FFC491380D9FFF05B4817 -C048495B5C5A485BA2486F138091C7FC486F1300705A4892C8FC5BA312FFAD127F7FA27E -A2EF03E06C7F17076C6D15C07E6E140F6CEE1F806C6DEC3F006C6D147ED97FFE5C6D6CEB -03F8010F9038E01FF0010390B55A01001580023F49C7FC020113E033387CB63C>I<4DB4 -7E0407B5FCA5EE001F1707B3A4913801FFE0021F13FC91B6FC010315C7010F9038E03FE7 -4990380007F7D97FFC0101B5FC49487F4849143F484980485B83485B5A91C8FC5AA3485A -A412FFAC127FA36C7EA37EA26C7F5F6C6D5C7E6C6D5C6C6D49B5FC6D6C4914E0D93FFED9 -0FEFEBFF80903A0FFFC07FCF6D90B5128F0101ECFE0FD9003F13F8020301C049C7FC4154 -7CD24B>I<913803FFC0023F13FC49B6FC010715C04901817F903A3FFC007FF849486D7E -49486D7E4849130F48496D7E48178048497F18C0488191C7FC4817E0A248815B18F0A212 -FFA490B8FCA318E049CAFCA6127FA27F7EA218E06CEE01F06E14037E6C6DEC07E0A26C6D -EC0FC06C6D141F6C6DEC3F806D6CECFF00D91FFEEB03FE903A0FFFC03FF8010390B55A01 -0015C0021F49C7FC020113F034387CB63D>IIII<137F497E000313E0487FA2487FA76C5BA2 -6C5BC613806DC7FC90C8FCADEB3FF0B5FCA512017EB3B3A6B612E0A51B547BD325>I108 DII<913801FFE0021F13FE91B612C0010315F0010F9038807F -FC903A1FFC000FFED97FF86D6C7E49486D7F48496D7F48496D7F4A147F48834890C86C7E -A24883A248486F7EA3007F1880A400FF18C0AC007F1880A3003F18006D5DA26C5FA26C5F -6E147F6C5F6C6D4A5A6C6D495B6C6D495B6D6C495BD93FFE011F90C7FC903A0FFF807FFC -6D90B55A010015C0023F91C8FC020113E03A387CB643>I<903A3FF001FFE0B5010F13FE -033FEBFFC092B612F002F301017F913AF7F8007FFE0003D9FFE0EB1FFFC602806D7F92C7 -6C7F4A824A6E7F4A6E7FA2717FA285187F85A4721380AC1A0060A36118FFA2615F616E4A -5BA26E4A5B6E4A5B6F495B6F4990C7FC03F0EBFFFC9126FBFE075B02F8B612E06F148003 -1F01FCC8FC030313C092CBFCB1B612F8A5414D7BB54B>I<90397FE003FEB590380FFF80 -033F13E04B13F09238FE1FF89139E1F83FFC0003D9E3E013FEC6ECC07FECE78014EF1500 -14EE02FEEB3FFC5CEE1FF8EE0FF04A90C7FCA55CB3AAB612FCA52F367CB537>114 -D<903903FFF00F013FEBFE1F90B7FC120348EB003FD80FF81307D81FE0130148487F4980 -127F90C87EA24881A27FA27F01F091C7FC13FCEBFFC06C13FF15F86C14FF16C06C15F06C -816C816C81C681013F1580010F15C01300020714E0EC003F030713F015010078EC007F00 -F8153F161F7E160FA27E17E07E6D141F17C07F6DEC3F8001F8EC7F0001FEEB01FE9039FF -C00FFC6DB55AD8FC1F14E0D8F807148048C601F8C7FC2C387CB635>I<143EA6147EA414 -FEA21301A313031307A2130F131F133F13FF5A000F90B6FCB8FCA426003FFEC8FCB3A9EE -07C0AB011FEC0F8080A26DEC1F0015806DEBC03E6DEBF0FC6DEBFFF86D6C5B021F5B0203 -13802A4D7ECB34>IIII<007FB500 -F090387FFFFEA5C66C48C7000F90C7FC6D6CEC07F86D6D5C6D6D495A6D4B5A6F495A6D6D -91C8FC6D6D137E6D6D5B91387FFE014C5A6E6C485A6EEB8FE06EEBCFC06EEBFF806E91C9 -FCA26E5B6E5B6F7E6F7EA26F7F834B7F4B7F92B5FCDA01FD7F03F87F4A486C7E4A486C7E -020F7FDA1FC0804A486C7F4A486C7F02FE6D7F4A6D7F495A49486D7F01076F7E49486E7E -49486E7FEBFFF0B500FE49B612C0A542357EB447>II -E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fl cmr10 10.95 83 -/Fl 83 124 df<4AB4EB0FE0021F9038E03FFC913A7F00F8FC1ED901FC90383FF03FD907 -F090397FE07F80494801FF13FF4948485BD93F805C137F0200ED7F00EF003E01FE6D91C7 -FC82ADB97EA3C648C76CC8FCB3AE486C4A7E007FD9FC3FEBFF80A339407FBF35>11 -D<4AB4FC021F13C091387F01F0903901FC0078D907F0131C4948133E494813FF49485A13 -7F1400A213FE6F5A163893C7FCAA167FB8FCA33900FE00018182B3AC486CECFF80007FD9 -FC3F13FEA32F407FBF33>I<4AB47E021F13F791387F00FFEB01F8903807F001EB0FE0EB -1FC0EB3F80137F14008101FE80AEB8FCA3C648C77EB3AE486CECFF80007FD9FC3F13FEA3 -2F407FBF33>I<001E130F397F803FC000FF137F01C013E0A201E013F0A3007F133F391E -600F3000001300A401E01370491360A3000114E04913C00003130101001380481303000E -EB070048130E0018130C0038131C003013181C1C7DBE2D>34 D<14E0A4EB07FC90383FFF -8090B512E03901F8E3F03903E0E0FCD807C0133CD80F807FD81F007F003E80003C158000 -7C140316C00078141F00F8143F157FA47EED3F806CEC0E0092C7FC127F138013C0EA3FF0 -13FEEA1FFF6C13FC6C13FF6C14C06C806C6C13F8011F7F130301007FECE7FF14E102E013 -80157F153FED1FC0A2003E140F127FD8FF801307A5130000FC158000F0140F1270007815 -005D6C141E153E6C5C6C5C3907C0E1F03903F8EFE0C6B51280D93FFEC7FCEB0FF8EB00E0 -A422497BC32D>36 D<013F4C7ED9FFC04B7E2601E0E015072607C070150F48486C4B5A02 -3E4BC7FC48486C5D48D90FC0EB01FE003ED90EF0EB07FCDA0F3F133E007E903A070FFFF8 -F8007C0200EBC1F0EE000300FC6D6C495A604D5A171F95C8FC173E177E177C5F16015F00 -7C4948485A1607007E5E003E49495A020E131F003F93C9FC6C49133E260F803C137E0238 -137C6C6C485B3901E0E0016CB448485AD93F0049133F90C74848EBFFC0030F903801E0E0 -93398007C0704B4848487E4B153C033E90381F001C4B497F03FC133E4B150F4A48017E7F -0203147C5D4A4801FCEB0380140F5D4AC7FC5C143E5C14FC5C495A13034948027CEB0700 -5C4948147E011F033E5B91C8140E013E153F017E6F5B017C92380F803C4917380001706C -5A49923801E0E0496FB45A6C48043FC7FC41497BC34C>II<121EEA7F8012FF13C0 -A213E0A3127FEA1E601200A413E013C0A312011380120313005A120E5A1218123812300B -1C79BE19>I<1430147014E0EB01C0EB03801307EB0F00131E133E133C5B13F85B12015B -1203A2485AA2120F5BA2121F90C7FCA25AA3123E127EA6127C12FCB2127C127EA6123E12 -3FA37EA27F120FA27F1207A26C7EA212017F12007F13787F133E131E7FEB07801303EB01 -C0EB00E014701430145A77C323>I<12C07E12707E7E121E7E6C7E7F12036C7E7F12007F -1378137CA27FA2133F7FA21480130FA214C0A3130714E0A6130314F0B214E01307A614C0 -130FA31480A2131F1400A25B133EA25BA2137813F85B12015B485A12075B48C7FC121E12 -1C5A5A5A5A145A7BC323>II<121EEA7F8012FF13C0A213E0A3127FEA1E601200A413E013 -C0A312011380120313005A120E5A1218123812300B1C798919>44 -DI<121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A0A798919>IIIIII<150E151E153EA2157EA215FE1401A21403EC077E140614 -0E141CA214381470A214E0EB01C0A2EB0380EB0700A2130E5BA25B5BA25B5B1201485A90 -C7FC5A120E120C121C5AA25A5AB8FCA3C8EAFE00AC4A7E49B6FCA3283E7EBD2D>I<0006 -1403D80780131F01F813FE90B5FC5D5D5D15C092C7FC14FCEB3FE090C9FCACEB01FE9038 -0FFF8090383E03E090387001F8496C7E49137E497F90C713800006141FC813C0A216E015 -0FA316F0A3120C127F7F12FFA416E090C7121F12FC007015C012780038EC3F80123C6CEC -7F00001F14FE6C6C485A6C6C485A3903F80FE0C6B55A013F90C7FCEB07F8243F7CBC2D> -II<1238123C123F90B612FCA316F8 -5A16F016E00078C712010070EC03C0ED078016005D48141E151C153C5DC8127015F04A5A -5D14034A5A92C7FC5C141EA25CA2147C147814F8A213015C1303A31307A3130F5CA2131F -A6133FAA6D5A0107C8FC26407BBD2D>III<121EEA7F80A2 -EAFFC0A4EA7F80A2EA1E00C7FCB3121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A2779A619 ->I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCB3121E127FEAFF80A213C0A4127F12 -1E1200A412011380A3120313005A1206120E120C121C5A1230A20A3979A619>I63 -D<15074B7EA34B7EA34B7EA34B7EA34B7E15E7A2913801C7FC15C3A291380381FEA34AC6 -7EA3020E6D7EA34A6D7EA34A6D7EA34A6D7EA34A6D7EA349486D7E91B6FCA24981913880 -0001A249C87EA24982010E157FA2011E82011C153FA2013C820138151FA2017882170F13 -FC00034C7ED80FFF4B7EB500F0010FB512F8A33D417DC044>65 DIIIIIIII<011FB512FCA3D9000713006E5A1401B3B3A6123FEA7F80EAFFC0A44A5A1380 -D87F005B007C130700385C003C495A6C495A6C495A2603E07EC7FC3800FFF8EB3FC02640 -7CBD2F>IIIIIII82 DI<003FB91280A3903AF0007FE001018090393FC0003F48C7ED1FC0007E -1707127C00781703A300701701A548EF00E0A5C81600B3B14B7E4B7E0107B612FEA33B3D -7DBC42>IIII -89 D<003FB712F8A391C7EA1FF013F801E0EC3FE00180EC7FC090C8FC003EEDFF80A200 -3C4A1300007C4A5A12784B5A4B5AA200704A5AA24B5A4B5AA2C8485A4A90C7FCA24A5A4A -5AA24A5AA24A5A4A5AA24A5A4A5AA24990C8FCA2495A4948141CA2495A495AA2495A495A -173C495AA24890C8FC485A1778485A484815F8A24848140116034848140F4848143FED01 -FFB8FCA32E3E7BBD38>II<486C13 -C00003130101001380481303000EEB070048130E0018130C0038131C0030131800701338 -00601330A300E01370481360A400CFEB678039FFC07FE001E013F0A3007F133FA2003F13 -1F01C013E0390F0007801C1C73BE2D>II96 DII<49B4FC010F13E090383F00F8017C131E48 -48131F4848137F0007ECFF80485A5B121FA24848EB7F00151C007F91C7FCA290C9FC5AAB -6C7EA3003FEC01C07F001F140316806C6C13076C6C14000003140E6C6C131E6C6C137890 -383F01F090380FFFC0D901FEC7FC222A7DA828>IIII<167C9039 -03F801FF903A1FFF078F8090397E0FDE1F9038F803F83803F001A23B07E000FC0600000F -6EC7FC49137E001F147FA8000F147E6D13FE00075C6C6C485AA23901F803E03903FE0FC0 -26071FFFC8FCEB03F80006CAFC120EA3120FA27F7F6CB512E015FE6C6E7E6C15E06C8100 -03813A0FC0001FFC48C7EA01FE003E140048157E825A82A46C5D007C153E007E157E6C5D -6C6C495A6C6C495AD803F0EB0FC0D800FE017FC7FC90383FFFFC010313C0293D7EA82D> -III<1478EB01FEA2EB03FFA4EB01FEA2EB00781400AC147FEB7F -FFA313017F147FB3B3A5123E127F38FF807E14FEA214FCEB81F8EA7F01387C03F0381E07 -C0380FFF803801FC00185185BD1C>III<2701F801FE14FF00FF902707FFC00313E0913B1E07E00F03F0913B7803F03C -01F80007903BE001F87000FC2603F9C06D487F000101805C01FBD900FF147F91C75B13FF -4992C7FCA2495CB3A6486C496CECFF80B5D8F87FD9FC3F13FEA347287DA74C>I<3901F8 -01FE00FF903807FFC091381E07E091387803F000079038E001F82603F9C07F0001138001 -FB6D7E91C7FC13FF5BA25BB3A6486C497EB5D8F87F13FCA32E287DA733>I<14FF010713 -E090381F81F890387E007E01F8131F4848EB0F804848EB07C04848EB03E0000F15F04848 -EB01F8A2003F15FCA248C812FEA44815FFA96C15FEA36C6CEB01FCA3001F15F86C6CEB03 -F0A26C6CEB07E06C6CEB0FC06C6CEB1F80D8007EEB7E0090383F81FC90380FFFF0010090 -C7FC282A7EA82D>I<3901FC03FC00FF90381FFF8091387C0FE09039FDE003F03A07FFC0 -01FC6C496C7E6C90C7127F49EC3F805BEE1FC017E0A2EE0FF0A3EE07F8AAEE0FF0A4EE1F -E0A2EE3FC06D1580EE7F007F6E13FE9138C001F89039FDE007F09039FC780FC0DA3FFFC7 -FCEC07F891C9FCAD487EB512F8A32D3A7EA733>I<02FF131C0107EBC03C90381F80F090 -397F00387C01FC131CD803F8130E4848EB0FFC150748481303121F485A1501485AA448C7 -FCAA6C7EA36C7EA2001F14036C7E15076C6C130F6C7E6C6C133DD8007E137990383F81F1 -90380FFFC1903801FE0190C7FCAD4B7E92B512F8A32D3A7DA730>I<3901F807E000FFEB -1FF8EC787CECE1FE3807F9C100031381EA01FB1401EC00FC01FF1330491300A35BB3A548 -7EB512FEA31F287EA724>I<90383FC0603901FFF8E03807C03F381F000F003E1307003C -1303127C0078130112F81400A27E7E7E6D1300EA7FF8EBFFC06C13F86C13FE6C7F6C1480 -000114C0D8003F13E0010313F0EB001FEC0FF800E01303A214017E1400A27E15F07E1401 -6C14E06CEB03C0903880078039F3E01F0038E0FFFC38C01FE01D2A7DA824>I<131CA613 -3CA4137CA213FCA2120112031207001FB512C0B6FCA2D801FCC7FCB3A215E0A912009038 -FE01C0A2EB7F03013F138090381F8700EB07FEEB01F81B397EB723>IIIIII<001FB61280A2EBE0000180140049485A001E495A121C -4A5A003C495A141F00385C4A5A147F5D4AC7FCC6485AA2495A495A130F5C495A90393FC0 -0380A2EB7F80EBFF005A5B484813071207491400485A48485BA248485B4848137F00FF49 -5A90B6FCA221277EA628>II E -%EndDVIPSBitmapFont -%DVIPSBitmapFont: Fm cmbx12 20.736 11 -/Fm 11 115 df<137F3801FFC0000713F0487F487F487F487FA2B61280A96C1400A26C5B -6C5B6C5B6C5B000113C06C6CC7FC1919729836>46 D48 D<93B57E031F14FC92B7 -7E020316F0020F16FC023F16FF4A8349B5D8800314E04901F8C7003F7F4901C0020F7F49 -90C800037FD91FFC6F7F49486F6C7E137F4A7013804948827313C05A4A821BE05AA28548 -7FA38080806E5E8003C017C08103F85D03FE17806F6C5C6C6F160004F05C04FC4A5A6C6F -5D706C13FFDDE0015B6CDCF8035BDDFC0F13C06DDBFF1F5B6D93B5C7FC19FC6D17F06D5F -6D17806D17E06D836D6C16FC6E16FF020F836E17E06E83020F83023F8391B97E49840107 -01F0178049D9C07F16C0013FD9801F16E049EB00074948010116F048497F4849023F15F8 -4849140F4A6E15FC48160148496E6C14FE4A151F488391C9120348050014FF193F498385 -00FF84854983A28586A3861BFEA27FA2007F1AFC7F1A7F1BF86C7FF2FFF06C7F6E4C13E0 -6C6D4C13C06C6D5E6E4C13806C6D4C13006C6D6CED7FFE6C02E04A485A013F01FC020F13 -F06D9026FFC001B55A010791B712806D95C7FC010017FC021F16F002071680DA007F02FC -C8FC030191C9FC507378F061>56 D<93B5FC031F14F092B612FE02076F7E021F16E04A16 -F891B87E49DAF00713FF0107DA0001804901FC6D6C7F49496E7F49496E7F49496E7F90B5 -486E7F484A8048854891C86C7FA2487114805C481AC0A2487213E0A2484918F0A31BF8A2 -B5FCA27313FCA51BFEA71BFF61A27EA396B6FC7EA2806C5FA27E606C7F607E6C6E5C6CEF -1FBF6D6DEC3F3F6D6D147F6D6D14FE6D6DEB01FC6D01FE130701019039FFC01FF86D91B5 -00F014FE023F15C06E15800203ECFE00DA007F13F8030713C092C9FC4F13FCA41BF8A31B -F0D91FF093B5FCEB7FFC496C18E0487F486E17C06048801B804E1400A26260624E5B4B5C -626C91C8485B4A4B5B4A92B55A6C01F04A91C7FC02804A5B6C01E0020F5B6D6C023F13F0 -02FE91B55A90273FFFE00F5C6D90B7C8FC010716FC6D16F0010016C0023F92C9FC020714 -F09126007FFECAFC507378F061>I<92383FFFF80207B612E0027F15FC49B87E010717E0 -011F83499026F0007F13FC4948C7000F7F90B502036D7E486E6D806F6D80727F486E6E7F -8486727FA28684A26C5C72806C5C6D90C8FC6D5AEB0FF8EB03E090CAFCA70507B6FC041F -B7FC0303B8FC157F0203B9FC021FECFE0391B612800103ECF800010F14C04991C7FC017F -13FC90B512F04814C0485C4891C8FC485B5A485B5C5A5CA2B5FC5CA360A36E5DA26C5F6E -5D187E6C6D846E4A48806C6D4A4814FC6C6ED90FF0ECFFFC6C02E090263FE07F14FE0001 -9139FC03FFC06C91B6487E013F4B487E010F4B1307010303F01301D9003F0280D9003F13 -FC020101F8CBFC57507ACE5E>97 D<903801FFFCB6FCA8C67E131F7FB3ADF0FFFC050FEB -FFE0057F14FE0403B77E040F16E0043F16F84CD9007F13FE9226FDFFF001077F92B500C0 -01018094C86C13E004FC6F7F4C6F7F04E06F7F4C6F7F5E747F93C915804B7014C0A27414 -E0A21DF087A21DF8A31DFC87A41DFEAF1DFCA4631DF8A31DF098B5FC1DE0A25014C0A26F -1980501400705D705F704B5B505B704B5B04FC4B5BDBE7FE92B55A9226C3FF8001035C03 -8101E0011F49C7FC9226807FFC90B55A4B6CB712F04A010F16C04A010393C8FC4A010015 -F84A023F14C090C9000301F0C9FC5F797AF76C>I<93383FFFF00307B612C0033F15F84A -B712FE0207707E021F17E0027F8391B526FC001F7F010302C001037F4991C7487F49495C -495B4901F04A7F5B90B55A485CA2485C4891C8FCA248715B5C48715B725B4A6F5B489438 -007FC0071FC7FC96C8FC5AA25CA3B5FCAF7E80A47E80A27E806CF11F80F23FC06C6E167F -A26C6EEEFF80816C606C6E17006D6D4B5A6D6D15076D6D4B5A6D6D6C4A5A6D02E0EC7FF0 -6D02F849485A01009126FF801F5B6E91B6C7FC021F5E020716F8020116E06E6C15800307 -02FCC8FCDB003F13804A507ACE56>I<97380FFFE00607B6FCA8F00003190086B3AD9338 -3FFF800307B512F8033F14FF4AB712C0020716F0021F16FC027F9039FE007FFE91B500F0 -EB0FFF01030280010190B5FC4949C87E49498149498149498149498190B548814884484A -8192CAFC5AA2485BA25A5C5AA35A5CA4B5FCAF7EA4807EA37EA2807EA26C7F616C6E5D6C -606C80616D6D5D6D6D5D6D6D92B67E6D6D4A15FC010301FF0207EDFFFE6D02C0EB3FFE6D -6C9039FC01FFF86E90B65A020F16C002031600DA007F14FC030F14E09226007FFEC749C7 -FC5F797AF76C>I<93387FFF80030FB512FC037FECFF804AB712E0020716F8021F16FE02 -7FD9F8077F49B5D8C000804991C7003F13E04901FC020F7F49496E7F49498049496E7F49 -496E7F90B55A48727E92C914804884485B1BC048841BE0485BA27313F05AA25C5AA21BF8 -85A2B5FCA391BAFCA41BF002F8CCFCA67EA3807EA47E806CF103F0F207F86C7F1A0F6C6E -17F06C191F6F17E06C6E163F6D6DEE7FC06D6D16FF6D6D4B13806D6D4B13006D6D6CEC0F -FE6D02E0EC3FFC6D02F8ECFFF86D9126FFC00F5B023F91B65A020F178002034CC7FC0200 -16F8031F15E0030392C8FCDB000F13E04D507BCE58>I<93381FFFE00303B6FC031F15E0 -92B712FC020316FF020F17C0023FD9FC0014F091B500C0010F13FC4991C700037F4901FC -02007F010F496F13C049496F7F49496F7F4B8149496F7F90B5C96C7F4886A24849707F48 -1B80A248497014C0A2481BE0A348497113F0A3481BF8A5B51AFCAE6C1BF8A46C1BF06E94 -B5FCA36C1BE0A26C6D4C14C0A26C1B806E5E6C1B006C6E4B5BA26C6E4B5B6D6D4B5B6D6D -4B5B6D6D4B5B6D6D92B55A6D01FF02035C6D02C0010F91C7FC010002FC90B512FC6E90B7 -5A021F17E00207178002014CC8FCDA003F15F0030392C9FCDB001F13E056507BCE61> -111 D<902601FFF8EB07FEB691383FFFC094B512F00403804C14FE4C8093261FFC3F1380 -93263FE07F13C0DC7F80B5FCC66C5D011FDAFE0114E06DEBF9FC16F815FB16F016E015FF -16C07114C05E72138095381FFE0093C76C5AF001E095C8FCA25DA65DB3B3A2B812F8A843 -4E7ACD4F>114 D E -%EndDVIPSBitmapFont -end -%%EndProlog -%%BeginSetup -%%Feature: *Resolution 600dpi -TeXDict begin -%%PaperSize: A4 - -%%EndSetup -%%Page: 1 1 -1 0 bop 94 1385 a Fm(barco)5 b(de)65 b(0.98)p 94 1451 -3780 34 v 2617 1548 a Fl(A)31 b(library)d(for)i(dra)m(wing)f(bar)h(co)s -(des)3409 1656 y(Marc)m(h)h(2002)94 5367 y Fk(b)l(y)45 -b(Alessandro)h(Rubini)f(\()p Fj(rubini@gnu.org)p Fk(\))p -94 5446 3780 17 v eop -%%Page: 1 2 -1 1 bop 94 -116 a Fl(Chapter)30 b(2:)41 b(The)30 b(Underlying)e(Data)k -(Structure)2012 b(1)94 365 y Fi(Barco)t(de)54 b(to)t(ols)219 -549 y Fl(This)29 b(\014le)g(do)s(cumen)m(ts)h(v)m(ersion)g(0.98)i(of)e -(the)h(barco)s(de)f(library)e(and)i(sample)f(programs)h(\(Marc)m(h)i -(2002\).)94 815 y Fi(1)81 b(Ov)l(erview)219 999 y Fl(The)26 -b Fh(barco)s(de)32 b Fl(pac)m(k)-5 b(age)29 b(is)d(mainly)f(a)i(C)f -(library)f(for)h(creating)i(bar-co)s(de)f(output)f(\014les.)39 -b(It)27 b(also)f(includes)94 1099 y(a)31 b(command)f(line)f(fron)m -(t-end)h(and)g(\(in)f(a)i(foreseeable)g(future\))f(a)h(graphic)e(fron)m -(tend.)219 1215 y(The)k(pac)m(k)-5 b(age)35 b(is)d(designed)g(as)i(a)f -(library)e(b)s(ecause)i(w)m(e)h(think)e(the)h(main)g(use)f(for)h(barco) -s(de-generation)94 1315 y(to)s(ols)23 b(is)f(inside)f(more)i(featured)g -(applications.)37 b(The)22 b(library)f(addresses)h(bar)h(co)s(de)g -(prin)m(ting)e(as)i(t)m(w)m(o)i(distinct)94 1415 y(problems:)43 -b(creation)33 b(of)f(bar)g(information)e(and)i(actual)h(con)m(v)m -(ersion)f(to)h(an)f(output)g(format.)47 b(T)-8 b(o)32 -b(this)g(aim)94 1514 y(w)m(e)25 b(use)f(an)g(in)m(termediate)g -(represen)m(tation)g(for)g(bar)f(co)s(des,)j(whic)m(h)d(is)g(curren)m -(tly)g(do)s(cumen)m(ted)h(in)e(the)j(`)p Fj(ps.c)p Fl(')94 -1614 y(source)31 b(\014le)e(\(not)i(in)f(this)f(do)s(cumen)m(t\).)219 -1730 y(Note)24 b(that)e(the)h(library)d(and)h(the)i(accompan)m(ying)g -(material)e(is)h(released)g(according)g(to)h(the)f(GPL)h(license,)94 -1830 y(not)31 b(the)g(LGPL)f(one.)41 b(A)30 b(cop)m(y)h(of)g(the)g(GPL) -f(is)f(included)f(in)h(the)i(distribution)26 b(tarball.)94 -2096 y Fi(2)81 b(The)53 b(Underlying)h(Data)g(Structure)219 -2280 y Fl(Ev)m(ery)33 b(barco)s(de-related)g(function)f(acts)i(on)f(a)h -(data)f(structure)g(de\014ned)f(in)g(the)h(`)p Fj(barcode.h)p -Fl(')e(header,)94 2380 y(whic)m(h)j(m)m(ust)h(b)s(e)f(included)e(b)m(y) -j(an)m(y)g(C)g(source)g(\014le)f(that)h(uses)g(the)g(library)-8 -b(.)52 b(The)35 b(header)f(is)g(installed)f(b)m(y)94 -2480 y Fj(make)47 b(install)p Fl(.)219 2596 y(The)30 -b(de\014nition)e(of)i(the)h(data)g(structure)f(is)f(included)f(here)i -(for)g(reference:)334 2717 y Fj(struct)47 b(Barcode_Item)d({)525 -2820 y(int)j(flags;)428 b(/*)47 b(type)g(of)g(encoding)f(and)h(other)f -(flags)g(*/)525 2924 y(char)h(*ascii;)332 b(/*)47 b(malloced)f(*/)525 -3028 y(char)h(*partial;)236 b(/*)47 b(malloced)f(too)h(*/)525 -3132 y(char)g(*textinfo;)188 b(/*)47 b(information)e(about)h(text)h -(placement)e(*/)525 3236 y(char)i(*encoding;)188 b(/*)47 -b(code)g(name,)f(filled)g(by)i(encoding)d(engine)h(*/)525 -3339 y(int)h(width,)f(height;)g(/*)h(output)f(units)h(*/)525 -3443 y(int)g(xoff,)g(yoff;)189 b(/*)47 b(output)f(units)h(*/)525 -3547 y(int)g(margin;)380 b(/*)47 b(output)f(units)h(*/)525 -3651 y(double)f(scalef;)237 b(/*)47 b(requested)f(scaling)f(for)i -(barcode)f(*/)525 3754 y(int)h(error;)428 b(/*)47 b(an)h(errno-like)d -(value,)h(in)h(case)f(of)i(failure)d(*/)334 3858 y(};)219 -3975 y Fl(The)e(exact)i(meaning)e(of)g(eac)m(h)i(\014eld)d(and)h(the)g -(v)-5 b(arious)43 b(\015ags)g(implemen)m(ted)f(are)i(describ)s(ed)e(in) -g(the)94 4074 y(follo)m(wing)29 b(sections.)219 4191 -y(Ev)m(en)38 b(though)f(y)m(ou)h(w)m(on't)g(usually)d(need)i(to)h(act)h -(on)e(the)h(con)m(ten)m(ts)h(of)f(this)e(structure,)j(some)f(of)g(the) -94 4290 y(functions)25 b(in)f(the)i(library)d(receiv)m(e)k(argumen)m -(ts)e(that)i(are)f(directly)e(related)i(to)g(one)g(or)g(more)f(of)h -(these)g(\014elds.)94 4524 y Fk(2.1)69 b(The)44 b(Fields)94 -4715 y Fj(int)30 b(flags;)574 4815 y Fl(The)42 b(\015ags)g(are,)j(as)d -(y)m(ou)g(ma)m(y)g(susp)s(ect,)j(mean)m(t)d(to)h(sp)s(ecify)d(the)i -(exact)h(b)s(eha)m(viour)e(of)h(the)574 4914 y(library)-8 -b(.)37 b(They)22 b(are)h(often)h(passed)e(as)h(an)g(argumen)m(t)g(to)h -Fg(b)-5 b(ar)g(c)g(o)g(de)32 b Fl(functions)21 b(and)i(are)g(discussed) -574 5014 y(in)30 b(the)g(next)h(section.)94 5147 y Fj(char)f(*ascii;)94 -5247 y(char)g(*partial;)94 5347 y(char)g(*textinfo;)94 -5446 y(char)g(*encoding;)574 5546 y Fl(These)41 b(\014elds)f(are)h(in)m -(ternally)e(managed)i(b)m(y)g(the)h(library)-8 b(,)41 -b(and)g(y)m(ou)g(are)h(not)f(exp)s(ected)g(to)574 5645 -y(touc)m(h)31 b(them)g(if)e(y)m(ou)i(use)f(the)h(pro)m(vided)d(API.)j -(All)e(of)h(them)h(are)g(allo)s(cated)f(with)f Fg(mal)5 -b(lo)-5 b(c)p Fl(.)p eop -%%Page: 2 3 -2 2 bop 94 -116 a Fl(Chapter)30 b(2:)41 b(The)30 b(Underlying)e(Data)k -(Structure)2012 b(2)94 365 y Fj(int)30 b(width;)94 465 -y(int)g(height;)574 565 y Fl(They)i(sp)s(ecify)e(the)i(width)d(and)i -(heigh)m(t)h(of)g(the)f Fg(active)39 b Fl(barco)s(de)31 -b(region)g(\(i.e.,)i(excluding)d(the)574 664 y(white)21 -b(margin\),)i(in)d(the)i(units)e(used)h(to)h(create)i(output)d(data)h -(\(for)g(p)s(ostscript)e(they)i(are)g(p)s(oin)m(ts,)574 -764 y(1/72th)33 b(of)d(an)g(inc)m(h,)g(0.352)j(mm\).)40 -b(The)30 b(\014elds)f(can)i(b)s(e)f(either)g(assigned)f(to)j(in)d(the)h -(structure)574 863 y(or)37 b(via)e Fg(Bar)-5 b(c)g(o)g(de)p -1161 863 28 4 v 36 w(Position\(\))p Fl(,)39 b(at)e(y)m(our)f(c)m -(hoice.)59 b(If)35 b(either)h(v)-5 b(alue)35 b(or)h(b)s(oth)g(are)g -(left)g(to)h(their)574 963 y(default)c(v)-5 b(alue)33 -b(of)g(zero,)i(the)e(output)g(engine)g(will)d(assign)j(default)f(v)-5 -b(alues)33 b(according)g(to)h(the)574 1063 y(sp)s(eci\014ed)g(scaling)f -(factor.)55 b(If)35 b(the)g(sp)s(eci\014ed)e(width)g(is)h(bigger)g -(than)h(needed)f(\(according)h(to)574 1162 y(the)g(scaling)f(factor\),) -j(the)d(output)g(barco)s(de)h(will)c(b)s(e)j(cen)m(tered)i(in)d(its)h -(requested)g(region.)52 b(If)574 1262 y(either)27 b(the)h(width)d(of)i -(the)h(heigh)m(t)f(are)h(to)s(o)g(small)d(for)i(the)h(sp)s(eci\014ed)d -(scale)j(factor,)h(the)e(output)574 1362 y(bar)j(co)s(de)h(will)d -(expand)h(symmetrically)g(around)g(the)i(requested)f(region.)94 -1513 y Fj(int)g(xoff;)94 1612 y(int)g(yoff;)574 1738 -y Fl(The)53 b(\014elds)f(sp)s(ecify)g(o\013set)j(from)e(the)g(co)s -(ordinate)h(origin)e(of)h(the)h(output)f(engine)g(\(for)574 -1838 y(p)s(ostscript,)46 b(p)s(osition)c(0,0)i(is)f(the)g(lo)m(w)m(er)h -(left)f(corner)h(of)f(the)h(page\).)81 b(The)43 b(\014elds)f(can)i(b)s -(e)574 1937 y(either)36 b(assigned)e(to)j(in)d(the)i(structure)f(or)g -(via)g Fg(Bar)-5 b(c)g(o)g(de)p 2572 1937 V 36 w(Position\(\))p -Fl(,)39 b(at)d(y)m(our)f(c)m(hoice.)57 b(The)574 2037 -y(o\013set)24 b(sp)s(eci\014es)d(where)h(the)g(white)g(margin)f(b)s -(egins,)h(not)h(where)f(the)g(\014rst)g(bar)g(will)d(b)s(e)j(prin)m -(ted.)574 2136 y(T)-8 b(o)31 b(prin)m(t)e(real)h(ink)f(to)j(the)e(sp)s -(eci\014ed)f(p)s(osition)f(y)m(ou)j(should)d(set)j Fg(mar)-5 -b(gin)39 b Fl(to)31 b(0.)94 2288 y Fj(int)f(margin;)574 -2387 y Fl(The)36 b(white)g(margin)f(that)j(will)33 b(b)s(e)j(left)g -(around)g(the)h(prin)m(ted)e(area)i(of)g(the)f(bar)g(co)s(de.)59 -b(The)574 2487 y(same)37 b(margin)e(is)g(applied)f(to)j(all)e(sides)g -(of)h(the)g(prin)m(ted)f(area.)59 b(The)35 b(default)g(v)-5 -b(alue)36 b(for)g(the)574 2587 y(margin)30 b(is)f(de\014ned)g(in)g(`)p -Fj(barcode.h)p Fl(')g(as)h Fj(BARCODE_DEFAULT_MARGIN)25 -b Fl(\(10\).)94 2738 y Fj(double)k(scalef;)574 2837 y -Fl(The)j(enlarge)f(or)h(shrink)d(v)-5 b(alue)31 b(for)g(the)h(bar)f(co) -s(de)h(o)m(v)m(er)h(its)e(default)g(dimension.)42 b(The)31 -b Fg(width)574 2937 y Fl(and)j Fg(sc)-5 b(alef)54 b Fl(\014elds)33 -b(in)m(teract)h(deeply)f(in)g(the)h(creation)h(of)f(the)g(output,)h -(and)f(a)g(complete)h(de-)574 3037 y(scription)29 b(of)i(the)f(issues)f -(app)s(ears)h(later)g(in)f(this)g(section.)94 3188 y -Fj(int)h(error;)574 3288 y Fl(The)g(\014eld)f(is)h(used)f(when)h(a)g -Fg(b)-5 b(ar)g(c)g(o)g(de)40 b Fl(function)29 b(fails)g(to)i(host)g(an) -f Fj(errno)p Fl(-lik)m(e)f(in)m(teger)h(v)-5 b(alue.)94 -3515 y Ff(Use)42 b(of)f(the)g Fe(width)50 b Ff(and)41 -b Fe(sc)-6 b(alef)64 b Ff(\014elds.)219 3700 y Fl(A)29 -b(width)f(unit)f(is)h(the)i(width)d(of)i(the)h(thinnest)d(bar)i(and/or) -g(space)h(in)d(the)j(c)m(hosen)f(co)s(de;)h(it)f(defaults)f(to)94 -3800 y(1)j(p)s(oin)m(t)f(if)f(the)i(output)e(is)h(p)s(ostscript)f(or)h -(encapsulated)g(p)s(ostscript.)219 3926 y(Either)j(or)h(b)s(oth)g(the)g -(co)s(de)h(width)d(and)i(the)g(scale)h(factor)g(can)g(b)s(e)e(left)h -(unsp)s(eci\014ed)e(\(i.e.,)k(zero\).)53 b(The)94 4026 -y(library)28 b(deals)i(with)f(defaults)h(in)f(the)h(follo)m(wing)f(w)m -(a)m(y:)94 4178 y Fg(Both)34 b(unsp)-5 b(e)g(ci\014e)g(d)574 -4277 y Fl(If)26 b(b)s(oth)f(the)h(width)e(and)h(the)h(scale)g(factor)g -(are)g(unsp)s(eci\014ed,)f(the)h(scale)g(factor)g(will)d(default)i(to) -574 4377 y(1.0)31 b(and)e(the)h(width)e(is)g(calculated)i(according)f -(to)i(the)e(actual)h(width)e(of)i(the)g(bar)f(co)s(de)g(b)s(eing)574 -4477 y(prin)m(ted.)94 4628 y Fg(Width)34 b(unsp)-5 b(e)g(ci\014e)g(d) -574 4728 y Fl(If)30 b(the)h(width)e(is)g(not)i(sp)s(eci\014ed,)d(it)i -(is)g(calculated)g(according)g(to)i(the)e(v)-5 b(alues)30 -b(of)g Fg(sc)-5 b(alef)p Fl(.)94 4879 y Fg(Sc)g(ale)34 -b(factor)f(unsp)-5 b(e)g(ci\014e)g(d)574 4978 y Fl(If)32 -b(the)h(scale)f(factor)i(is)d(not)i(sp)s(eci\014ed,)e(it)h(will)d(b)s -(e)j(c)m(hosen)h(so)f(that)h(the)g(generated)g(bar)f(co)s(de)574 -5078 y(exactly)g(\014ts)e(the)g(sp)s(eci\014ed)f(width.)94 -5229 y Fg(Both)34 b(sp)-5 b(e)g(ci\014e)g(d)574 5329 -y Fl(The)31 b(co)s(de)g(will)d(b)s(e)i(prin)m(ted)g(inside)e(the)j(sp)s -(eci\014ed)f(region)g(according)h(to)g(the)g(sp)s(eci\014ed)f(scale)574 -5429 y(factor.)48 b(It)33 b(will)d(b)s(e)h(aligned)h(to)h(the)f(left.) -47 b(If,)33 b(ho)m(w)m(ev)m(er,)h(the)f(c)m(hosen)g(width)e(is)g(to)s -(o)i(small)e(for)574 5528 y(the)f(sp)s(eci\014c)e(bar)h(co)s(de)h(and)e -(scaling)h(factor,)h(then)f(the)h(co)s(de)g(will)c(extend)k -(symmetrically)d(to)574 5628 y(the)k(left)f(and)g(to)h(the)g(righ)m(t)f -(of)g(the)h(c)m(hosen)g(region.)p eop -%%Page: 3 4 -3 3 bop 94 -116 a Fl(Chapter)30 b(3:)41 b(The)30 b(Flags)2872 -b(3)94 365 y Fk(2.2)69 b(The)44 b(In)l(termediate)j(Represen)l(tation) -219 565 y Fl(The)23 b(enco)s(ding)g(functions)f(prin)m(t)g(their)g -(output)h(in)m(to)h(the)g Fj(partial)d Fl(and)i Fj(texinfo)f -Fl(\014elds)g(of)h(the)h(barco)s(de)94 664 y(data)g(structure.)37 -b(Those)23 b(\014elds,)g(together)h(with)d(p)s(osition)g(information,)h -(are)h(then)f(used)g(to)i(generate)g(actual)94 764 y(output.)41 -b(This)28 b(is)i(an)g(informal)e(description)h(of)h(the)h(in)m -(termediate)f(format.)219 905 y(The)38 b(\014rst)g(c)m(har)h(in)f -Fj(partial)f Fl(tells)g(ho)m(w)i(m)m(uc)m(h)g(extra)g(space)h(to)f(add) -f(to)i(the)f(left)f(of)h(the)g(bars.)65 b(F)-8 b(or)94 -1005 y(EAN-13,)33 b(it)d(is)f(used)h(to)h(lea)m(v)m(e)h(space)f(to)g -(prin)m(t)e(the)i(\014rst)f(digit,)f(other)i(co)s(des)f(ma)m(y)h(ha)m -(v)m(e)h('0')f(for)g(no-extra-)94 1104 y(space-needed.)219 -1245 y(The)23 b(next)h(c)m(haracters)i(are)e(alternating)f(bars)g(and)h -(spaces,)h(as)g(m)m(ultiples)c(of)j(the)g(base)g(dimension)d(whic)m(h) -94 1345 y(is)35 b(1)g(unless)f(the)i(co)s(de)f(is)f(rescaled.)56 -b(Rescaling)34 b(is)h(calculated)g(as)g(the)h(ratio)f(from)g(the)h -(requested)f(width)94 1445 y(and)e(the)h(calculated)f(width.)48 -b(Digits)33 b(represen)m(t)g(bar/space)h(dimensions.)47 -b(Lo)m(w)m(er-case)35 b(letters)f(represen)m(t)94 1544 -y(those)d(bars)f(that)h(should)e(extend)i(lo)m(w)m(er)f(than)h(the)f -(others:)41 b('a')32 b(is)d(equiv)-5 b(alen)m(t)30 b(to)h('1',)h('b')f -(is)e('2')i(and)f(so)h(on)94 1644 y(up)e(to)h('i')g(whic)m(h)e(is)g -(equiv)-5 b(alen)m(t)29 b(to)i('9'.)41 b(Other)29 b(letters)h(will)d(b) -s(e)i(used)g(for)g(enco)s(ding-sp)s(eci\014c)f(meanings,)h(as)94 -1743 y(so)s(on)i(as)f(I)g(implemen)m(t)f(them.)219 1885 -y(The)35 b Fj(textinfo)e Fl(string)h(is)h(made)g(up)f(of)i(\014elds)e -Fj(\045lf:\045lf:\045c)e Fl(separated)k(b)m(y)g(blank)e(space.)56 -b(The)35 b(\014rst)94 1984 y(in)m(teger)f(is)e(the)h(x)g(p)s(osition)e -(of)i(the)h(c)m(haracter,)h(the)e(second)g(is)f(the)i(fon)m(t)f(size)g -(\(b)s(efore)g(rescaling\))f(and)h(the)94 2084 y(c)m(har)e(item)f(is)g -(the)g(c)m(haracter)i(to)f(b)s(e)f(prin)m(ted.)219 2225 -y(Both)39 b(the)g Fj(partial)d Fl(and)i Fj(textinfo)f -Fl(strings)g(ma)m(y)i(include)d(\\)p Fj(-)p Fl(")j(or)g(\\)p -Fj(+)p Fl(")g(as)g(sp)s(ecial)e(c)m(haracters)j(\(in)94 -2325 y Fj(textinfo)25 b Fl(the)j(c)m(har)f(should)e(b)s(e)i(a)g -(stand-alone)g(w)m(ord\).)40 b(They)26 b(state)j(where)d(the)i(text)g -(should)d(b)s(e)h(prin)m(ted:)94 2424 y(b)s(elo)m(w)34 -b(the)g(bars)f(\(\\)p Fj(-)p Fl(",)j(default\))e(or)g(ab)s(o)m(v)m(e)h -(the)f(bars.)51 b(This)32 b(is)h(used,)i(for)e(example,)i(to)g(prin)m -(t)e(the)h(add-5)94 2524 y(and)27 b(add-2)g(co)s(des)g(to)h(the)f(righ) -m(t)f(of)i(UPC)e(or)h(EAN)g(co)s(des)g(\(the)h(add-5)f(extension)g(is)f -(mostly)g(used)g(in)g(ISBN)94 2623 y(co)s(des\).)94 2939 -y Fi(3)81 b(The)53 b(Flags)219 3213 y Fl(The)30 b(follo)m(wing)f -(\015ags)h(are)h(supp)s(orted)e(b)m(y)h(v)m(ersion)g(0.98)i(of)e(the)h -(library:)94 3387 y Fj(BARCODE_ENCODING_MASK)574 3487 -y Fl(The)f(mask)h(is)e(used)h(to)h(extract)h(the)e(enco)s(ding-t)m(yp)s -(e)g(iden)m(ti\014er)f(from)h(the)g Fg(\015ags)39 b Fl(\014eld.)94 -3653 y Fj(BARCODE_EAN)94 3753 y(BARCODE_UPC)94 3852 y(BARCODE_ISBN)94 -3952 y(BARCODE_128B)94 4051 y(BARCODE_128C)94 4151 y(BARCODE_128)94 -4251 y(BARCODE_128RAW)94 4350 y(BARCODE_39)94 4450 y(BARCODE_I25)94 -4550 y(BARCODE_CBR)94 4649 y(BARCODE_MSI)94 4749 y(BARCODE_PLS)94 -4848 y(BARCODE_93)574 4948 y Fl(The)d(curren)m(tly)f(supp)s(orted)g -(enco)s(ding)g(t)m(yp)s(es:)52 b(EAN)36 b(\(13)i(digits,)e(8)h(digits,) -f(13)h Fj(+)f Fl(2)g(add-on)574 5048 y(and)26 b(13)i -Fj(+)e Fl(5)h(add-on\),)g(UPC)f(\(UPC-A,)i(UPC-E,)e(UPC-A)h(with)e(2)i -(or)f(5)h(digit)f(add-on\),)h(ISBN)574 5147 y(\(with)e(or)f(without)g -(the)i(5-digit)e(add-on\),)i(CODE128-B)h(\(the)e(whole)g(set)g(of)g -(prin)m(table)e(ASCI)s(I)574 5247 y(c)m(haracters\),)36 -b(CODE128-C)d(\(t)m(w)m(o)i(digits)c(enco)s(ded)h(b)m(y)h(eac)m(h)h -(barco)s(de)e(sym)m(b)s(ol\),)h(CODE128)574 5347 y(\(all)41 -b(ASCI)s(I)f(v)-5 b(alues\),)44 b(a)e(\\ra)m(w-input")f(pseudo-co)s(de) -h(that)g(generates)h(CODE128)f(output,)574 5446 y(CODE39)32 -b(\(alphan)m(umeric\),)e Fj(")p Fl(in)m(terlea)m(v)m(ed)i(2)f(of)h(5)p -Fj(")f Fl(\(n)m(umeric\),)g(Co)s(dabar)f(\(n)m(umeric)g(plus)g(a)574 -5546 y(few)36 b(sym)m(b)s(ols\),)g(MSI)f(\(n)m(umeric\))g(and)g -(Plessey)g(\(hex)g(digits\).)55 b(See)36 b(Chapter)f(6)h([Supp)s(orted) -574 5645 y(Enco)s(dings],)30 b(page)h(7.)p eop -%%Page: 4 5 -4 4 bop 94 -116 a Fl(Chapter)30 b(4:)41 b(F)-8 b(unctions)30 -b(Exp)s(orted)g(b)m(y)g(the)h(Library)1871 b(4)94 365 -y Fj(BARCODE_ANY)574 465 y Fl(This)27 b(sp)s(ecial)g(enco)s(ding)g(t)m -(yp)s(e)h(\(represen)m(ted)h(b)m(y)f(a)h(v)-5 b(alue)27 -b(of)i(zero,)h(so)e(it)g(will)d(b)s(e)j(the)g(default\))574 -565 y(tells)33 b(the)g(enco)s(ding)f(pro)s(cedure)g(to)h(lo)s(ok)g(for) -g(the)g(\014rst)f(enco)s(ding)g(t)m(yp)s(e)i(that)f(can)h(deal)e(with) -574 664 y(a)44 b(textual)f(string.)77 b(Therefore,)46 -b(a)d(11-digit)f(co)s(de)h(will)e(b)s(e)h(prin)m(ted)f(as)i(UPC)g(\(as) -g(w)m(ell)f(as)574 764 y(6-digit,)48 b(11)p Fj(+)p Fl(2)e(and)e(11)p -Fj(+)p Fl(5\),)49 b(a)c(12-digit)g(\(or)g(7-digit,)i(or)e(12)p -Fj(+)p Fl(2)h(or)e(12)p Fj(+)p Fl(5\))i(as)f(EAN13,)k(an)574 -863 y(ISBN)39 b(co)s(de)f(\(with)g(or)g(without)f(h)m(yphens,)i(with)e -(or)i(without)e(add-5\))i(will)d(b)s(e)h(enco)s(ded)h(in)574 -963 y(its)e(EAN13)i(represen)m(tation,)g(an)e(ev)m(en)h(n)m(um)m(b)s -(er)e(of)i(digits)e(is)g(enco)s(ded)h(using)f(CODE128C)574 -1063 y(and)45 b(a)h(generic)f(string)f(is)h(enco)s(ded)g(using)f -(CODE128B.)j(Since)d(co)s(de-39)j(o\013ers)e(a)h(m)m(uc)m(h)574 -1162 y(larger)38 b(represen)m(tation)f(for)h(the)f(same)h(text)h -(string,)f(co)s(de128-b)h(is)e(preferred)f(o)m(v)m(er)j(co)s(de39)574 -1262 y(for)31 b(alphan)m(umeric)d(strings.)94 1411 y -Fj(BARCODE_NO_ASCII)574 1510 y Fl(Instructs)f(the)h(engine)e(not)i(to)g -(prin)m(t)e(the)i(ascii)e(string)h(on)g(output.)39 b(By)28 -b(default)e(the)i(bar)f(co)s(de)574 1610 y(is)j(accompanied)g(with)f -(an)i(ascii)e(v)m(ersion)h(of)h(the)f(text)i(it)d(enco)s(des.)94 -1759 y Fj(BARCODE_NO_CHECKSUM)574 1858 y Fl(Instructs)j(the)h(engine)f -(not)h(to)g(add)f(the)h(c)m(hec)m(ksum)g(c)m(haracter)h(to)f(the)g -(output.)47 b(Not)33 b(all)f(the)574 1958 y(enco)s(ding)23 -b(t)m(yp)s(es)g(can)h(drop)f(the)h(c)m(hec)m(ksum;)i(those)e(where)f -(the)h(c)m(hec)m(ksum)g(is)f(mandatory)g(\(lik)m(e)574 -2058 y(EAN)31 b(and)f(UPC\))g(just)g(ignore)g(the)h(\015ag.)94 -2206 y Fj(BARCODE_OUTPUT_MASK)574 2306 y Fl(The)f(mask)h(is)e(used)h -(to)h(extract)h(the)e(output-t)m(yp)s(e)h(iden)m(ti\014er)d(from)i(the) -h Fg(\015ags)38 b Fl(\014eld.)94 2455 y Fj(BARCODE_OUT_PS)94 -2554 y(BARCODE_OUT_EPS)94 2654 y(BARCODE_OUT_PCL)94 2753 -y(BARCODE_OUT_PCL_III)574 2853 y Fl(The)48 b(curren)m(tly)f(supp)s -(orted)f(enco)s(ding)g(t)m(yp)s(es:)76 b(full-page)47 -b(p)s(ostscript)f(and)h(encapsulated)574 2953 y(p)s(ostscript;)h(PCL)41 -b(\(prin)m(t)g(command)i(language,)j(for)c(HP)g(prin)m(ters\))f(and)h -(PCL-I)s(I)s(I)e(\(same)574 3052 y(as)31 b(PCL,)f(but)g(uses)g(a)g(fon) -m(t)h(not)g(a)m(v)-5 b(ailable)30 b(on)g(older)f(prin)m(ters\).)94 -3201 y Fj(BARCODE_OUT_NOHEADERS)574 3301 y Fl(The)f(\015ag)h(instructs) -d(the)j(prin)m(ting)d(engine)h(not)i(to)f(prin)m(t)f(the)h(header)g -(and)g(fo)s(oter)h(part)e(of)i(the)574 3400 y(\014le.)40 -b(This)29 b(mak)m(es)i(sense)f(for)f(the)i(p)s(ostscript)d(engine)i -(but)f(migh)m(t)h(not)h(mak)m(e)g(sense)f(for)g(other)574 -3500 y(engines;)k(suc)m(h)f(other)h(engines)e(will)e(silen)m(tly)i -(ignore)g(the)i(\015ag)f(just)g(lik)m(e)f(the)h(PCL)f(bac)m(k-end)574 -3600 y(do)s(es.)94 3881 y Fi(4)81 b(F)-13 b(unctions)52 -b(Exp)t(orted)h(b)l(y)g(the)g(Library)219 4103 y Fl(The)41 -b(functions)f(included)f(in)h(the)i(barco)s(de)f(library)e(are)j -(declared)f(in)g(the)g(header)h(\014le)e Fj(barcode.h)p -Fl(.)94 4203 y(They)30 b(p)s(erform)f(the)i(follo)m(wing)e(tasks:)94 -4352 y Fj(struct)g(Barcode_Item)e(*Barcode_Create\(char)e(*text\);)574 -4451 y Fl(The)35 b(function)e(creates)j(a)f(new)g(barco)s(de)f(ob)5 -b(ject)36 b(to)f(deal)g(with)e(a)i(sp)s(eci\014ed)e(text)j(string.)53 -b(It)574 4551 y(returns)27 b(NULL)h(in)e(case)j(of)f(failure)e(and)i(a) -g(p)s(oin)m(ter)f(to)h(a)h(barco)s(de)e(data)i(structure)e(in)g(case)i -(of)574 4651 y(success.)94 4799 y Fj(int)h(Barcode_Delete\(struct)25 -b(Barcode_Item)i(*bc\);)574 4899 y Fl(Destro)m(y)32 b(a)f(barco)s(de)f -(ob)5 b(ject.)42 b(Alw)m(a)m(ys)31 b(returns)e(0)h(\(success\))94 -5048 y Fj(int)g(Barcode_Encode\(struct)25 b(Barcode_Item)i(*bc,)i(int)g -(flags\);)574 5147 y Fl(Enco)s(de)h(the)h(text)g(included)d(in)h(the)h -Fg(b)-5 b(c)35 b Fl(ob)5 b(ject.)42 b(V)-8 b(alid)29 -b(\015ags)i(are)f(the)h(enco)s(ding)e(t)m(yp)s(e)h(\(other)574 -5247 y(\015ags)45 b(are)f(ignored\))g(and)g(BAR)m(CODE)p -1994 5247 28 4 v 33 w(NO)p 2166 5247 V 33 w(CHECKSUM)f(\(other)i -(\015ags)f(are)h(silen)m(tly)d(ig-)574 5347 y(nored\);)35 -b(if)e(the)g(\015ag)h(argumen)m(t)g(is)e(zero,)j Fj(bc->flags)c -Fl(will)g(apply)-8 b(.)49 b(The)32 b(function)g(returns)h(0)574 -5446 y(on)h(success)g(and)f(-1)i(in)d(case)j(of)f(error.)51 -b(After)34 b(successful)e(termination)h(the)h(data)g(structure)574 -5546 y(will)21 b(host)i(the)h(description)d(of)j(the)f(bar)g(co)s(de)g -(and)g(its)g(textual)g(represen)m(tation,)i(after)f(a)g(failure)574 -5645 y(the)31 b Fj(error)e Fl(\014eld)g(will)f(include)g(the)i(reason)h -(of)f(the)h(failure.)p eop -%%Page: 5 6 -5 5 bop 94 -116 a Fl(Chapter)30 b(5:)41 b(The)30 b Fg(b)-5 -b(ar)g(c)g(o)g(de)40 b Fl(fron)m(tend)30 b(program)2063 -b(5)94 365 y Fj(int)30 b(Barcode_Print\(struct)25 b(Barcode_Item)i -(*bc,)i(FILE)g(*f,)h(int)f(flags\);)574 465 y Fl(Prin)m(t)39 -b(the)g(bar)g(co)s(de)g(describ)s(ed)e(b)m(y)i Fj(bc)g -Fl(to)h(the)f(sp)s(eci\014ed)f(\014le.)66 b(V)-8 b(alid)38 -b(\015ags)h(are)h(the)f(out-)574 565 y(put)25 b(t)m(yp)s(e,)h -Fj(BARCODE_NO_ASCII)21 b Fl(and)j Fj(BARCODE_OUT_NOHEADERS)p -Fl(,)d(other)k(\015ags)g(are)h(ignored.)574 664 y(If)39 -b(an)m(y)h(of)f(these)h(\015ags)g(is)e(zero,)43 b(it)c(will)d(b)s(e)j -(inherited)e(from)i Fj(bc->flags)d Fl(whic)m(h)i(therefore)574 -764 y(tak)m(es)f(precedence.)57 b(The)35 b(function)g(returns)f(0)i(on) -f(success)h(and)f(-1)h(in)e(case)j(of)f(error)f(\(with)574 -863 y Fj(bc->error)28 b Fl(set)j(accordingly\).)40 b(In)29 -b(case)j(of)e(success,)h(the)f(bar)g(co)s(de)g(is)f(prin)m(ted)g(to)i -(the)f(sp)s(ec-)574 963 y(i\014ed)f(\014le,)h(whic)m(h)f(w)m(on't)i(b)s -(e)f(closed)g(after)h(use.)94 1115 y Fj(int)f(Barcode_Position\(struct) -24 b(Barcode_Item)j(*bc,)i(int)h(wid,)f(int)g(hei,)h(int)f(xoff,)g(int) -h(yoff,)94 1215 y(double)f(scalef\);)574 1315 y Fl(The)h(function)f(is) -h(a)h(shortcut)f(to)h(assign)f(v)-5 b(alues)29 b(to)j(the)e(data)h -(structure.)94 1467 y Fj(int)f(Barcode_Encode_and_Print)o(\(cha)o(r)24 -b(*text,)29 b(FILE)g(*f,)h(int)f(wid,)g(int)h(hei,)f(int)h(xoff,)f(int) -94 1567 y(yoff,)g(int)h(flags\);)574 1666 y Fl(The)38 -b(function)e(deals)h(with)g(the)h(whole)f(life)f(of)i(the)g(barco)s(de) -g(ob)5 b(ject)39 b(b)m(y)e(calling)g(the)h(other)574 -1766 y(functions;)30 b(it)g(uses)g(all)f(the)h(sp)s(eci\014ed)f -(\015ags.)94 1918 y Fj(int)h(Barcode_Version\(char)25 -b(*versionname\);)574 2018 y Fl(Returns)g(the)g(curren)m(t)f(v)m -(ersion)h(as)g(an)g(in)m(teger)g(n)m(um)m(b)s(er)f(of)h(the)g(form)f -(ma)5 b(jor)25 b(*)h(10000)h Fj(+)d Fl(minor)574 2118 -y(*)k(100)h Fj(+)e Fl(release.)40 b(Therefore,)28 b(v)m(ersion)f -(1.03.5)i(will)c(b)s(e)i(returned)f(as)h(10305)j(and)d(v)m(ersion)f -(0.53)574 2217 y(as)i(5300.)41 b(If)27 b(the)h(argumen)m(t)f(is)f -(non-n)m(ull,)g(it)h(will)e(b)s(e)h(used)h(to)h(return)e(the)h(v)m -(ersion)g(n)m(um)m(b)s(er)f(as)574 2317 y(a)h(string.)39 -b(Note)28 b(that)f(the)f(same)h(information)e(is)h(a)m(v)-5 -b(ailable)26 b(from)g(t)m(w)m(o)i(prepro)s(cessor)d(macros:)574 -2416 y Fj(BARCODE_VERSION)i Fl(\(the)k(string\))e(and)h -Fj(BARCODE_VERSION_INT)25 b Fl(\(the)31 b(in)m(teger)g(n)m(um)m(b)s -(er\).)94 2705 y Fi(5)81 b(The)53 b Fd(b)-8 b(ar)g(c)g(o)g(de)65 -b Fi(fron)l(tend)51 b(program)219 2938 y Fl(The)26 b -Fc(barco)s(de)g Fl(program)g(is)f(a)h(fron)m(t-end)g(to)h(access)h -(some)e(features)h(of)f(the)g(library)e(from)i(the)g(command)94 -3037 y(line.)63 b(It)38 b(is)g(able)f(to)i(read)f(user)g(supplied)d -(strings)i(from)h(the)g(command)g(line)e(or)j(a)f(data)h(\014le)e -(\(standard)94 3137 y(input)29 b(b)m(y)h(default\))g(and)g(enco)s(de)g -(all)g(of)g(them.)94 3401 y Fk(5.1)69 b(The)44 b(Command)h(Line)219 -3587 y Fc(barco)s(de)30 b Fl(accepts)i(the)e(follo)m(wing)f(options:)94 -3741 y Fj(--help)g(or)h(-h)574 3840 y Fl(Prin)m(t)g(a)h(usage)g -(summary)e(and)h(exit.)94 3993 y Fj(-i)g(filename)574 -4092 y Fl(Iden)m(tify)35 b(a)h(\014le)f(where)g(strings)f(to)j(b)s(e)e -(enco)s(ded)g(are)h(read)f(from.)56 b(If)36 b(missing)d(\(and)i(if)g -Fj(-b)g Fl(is)574 4192 y(not)29 b(used\))f(it)g(defaults)f(to)i -(standard)e(input.)38 b(Eac)m(h)29 b(data)g(line)e(of)h(the)h(input)d -(\014le)i(will)d(b)s(e)j(used)574 4292 y(to)k(create)g(one)e(barco)s -(de)g(output.)94 4444 y Fj(-o)g(filename)574 4544 y Fl(Output)g -(\014le.)40 b(It)30 b(defaults)f(to)j(standard)d(output.)94 -4696 y Fj(-b)h(string)66 b Fl(Sp)s(ecify)32 b(a)j(single)d(\\barco)s -(de")i(string)f(to)h(b)s(e)g(enco)s(ded.)50 b(The)33 -b(option)g(can)h(b)s(e)f(used)g(m)m(ultiple)574 4796 -y(times)j(in)e(order)h(to)h(enco)s(de)g(m)m(ultiple)d(strings)i(\(this) -f(will)f(result)i(in)f(m)m(ulti-page)h(p)s(ostscript)574 -4895 y(output)22 b(or)g(a)g(table)g(of)g(barco)s(des)g(if)f -Fj(-t)g Fl(is)g(sp)s(eci\014ed\).)37 b(The)21 b(strings)g(m)m(ust)h -(matc)m(h)h(the)f(enco)s(ding)574 4995 y(c)m(hosen;)29 -b(if)c(it)g(do)s(esn't)h(matc)m(h)h(the)f(program)g(will)d(prin)m(t)i -(a)h(w)m(arning)f(to)i Fj(stderr)d Fl(and)h(generate)574 -5095 y(\\blank")44 b(output)g(\(although)h(not)f(zero-length\).)84 -b(Please)44 b(note)h(that)g(a)g(string)e(including)574 -5194 y(spaces)31 b(or)g(other)f(sp)s(ecial)f(c)m(haracters)j(m)m(ust)e -(b)s(e)g(prop)s(erly)e(quoted.)94 5347 y Fj(-e)i(encoding)574 -5446 y Fc(enco)s(ding)j Fl(is)e(the)i(name)f(of)h(the)g(c)m(hosen)g -(enco)s(ding)e(format)i(b)s(eing)e(used.)46 b(It)32 b(defaults)g(to)h -(the)574 5546 y(v)-5 b(alue)41 b(of)f(the)h(en)m(vironmen)m(t)g(v)-5 -b(ariable)39 b Fj(BARCODE_ENCODING)d Fl(or)41 b(to)g(auto)h(detection)f -(if)f(the)574 5645 y(en)m(vironmen)m(t)30 b(is)g(also)g(unset.)p -eop -%%Page: 6 7 -6 6 bop 94 -116 a Fl(Chapter)30 b(6:)41 b(Supp)s(orted)29 -b(Enco)s(dings)2417 b(6)94 365 y Fj(-g)30 b(geometry)574 -465 y Fl(The)e(geometry)g(argumen)m(t)g(is)f(of)h(the)f(form)g(\\[)p -Fj(<)p Fg(width)p Fj(>)i(x)f(<)p Fg(height)p Fj(>)p Fl(])f([)p -Fj(+)h(<)p Fg(xmar)-5 b(gin)p Fj(>)28 b(+)f(<)p Fg(ymar-)574 -565 y(gin)p Fj(>)p Fl(]")42 b(\(with)f(no)h(in)m(terv)m(ening)f -(spaces\).)75 b(Unsp)s(eci\014ed)40 b(margin)h(v)-5 b(alues)41 -b(will)e(result)i(in)f(no)574 664 y(margin;)31 b(unsp)s(eci\014ed)d -(size)j(results)e(in)h(default)g(size.)42 b(The)30 b(sp)s(eci\014ed)f -(v)-5 b(alues)30 b(represen)m(t)h(prin)m(t)574 764 y(p)s(oin)m(ts)e(b)m -(y)g(default,)g(and)g(can)g(b)s(e)g(inc)m(hes,)g(millimeters)e(or)i -(other)h(units)e(according)h(to)h(the)g Fj(-u)574 863 -y Fl(option)j(or)h(the)g Fj(BARCODE_UNIT)c Fl(en)m(vironmen)m(t)j(v)-5 -b(ariable.)49 b(The)33 b(argumen)m(t)h(is)e(used)h(to)h(place)574 -963 y(the)g(prin)m(tout)f(co)s(de)h(on)f(the)h(page.)51 -b(Note)35 b(that)f(an)f(additional)f(white)g(margin)h(of)h(10)g(p)s -(oin)m(ts)574 1063 y(is)e(added)f(to)i(the)g(prin)m(tout.)45 -b(If)31 b(the)i(option)f(is)f(unsp)s(eci\014ed,)f Fj(BARCODE_GEOMETRY)e -Fl(is)j(lo)s(ok)m(ed)574 1162 y(up)h(in)f(the)h(en)m(vironmen)m(t,)h -(if)e(missing)f(a)j(default)f(size)g(and)g(no)g(margin)f(\(but)h(the)h -(default)e(10)574 1262 y(p)s(oin)m(ts\))f(are)h(used.)94 -1409 y Fj(-t)f(table-geometry)574 1508 y Fl(Used)j(to)g(prin)m(t)e(sev) -m(eral)i(barco)s(des)f(to)i(a)f(single)e(page,)j(this)d(option)h(is)g -(mean)m(t)h(to)h(b)s(e)d(used)h(to)574 1608 y(prin)m(t)e(stic)m(k)m -(ers.)43 b(The)30 b(argumen)m(t)h(is)f(of)h(the)g(form)g(\\)p -Fj(<)p Fg(c)-5 b(olumns)p Fj(>)32 b(x)e(<)p Fg(lines)p -Fj(>)h Fl([)p Fj(+)g(<)p Fg(leftmar)-5 b(gin)p Fj(>)31 -b(+)574 1707 y(<)p Fg(b)-5 b(ottommar)g(gin)p Fj(>)39 -b Fl([)p Fj(-)d(<)p Fg(rightmar)-5 b(gin)p Fj(>)38 b -Fl([)p Fj(-)e(<)p Fg(topmar)-5 b(gin)p Fj(>)p Fl(]]]")39 -b(\(with)c(no)h(in)m(terv)m(ening)f(spaces\);)574 1807 -y(if)42 b(missing,)i(the)f(top)g(and)f(righ)m(t)g(margin)g(will)e -(default)i(to)i(b)s(e)e(the)h(same)g(as)g(the)g(b)s(ottom)574 -1907 y(and)c(left)g(margin.)66 b(The)38 b(margins)g(are)i(sp)s -(eci\014ed)d(in)h(prin)m(t)g(p)s(oin)m(ts)g(or)h(in)e(the)j(c)m(hosen)f -(unit)574 2006 y(\(see)f Fj(-u)d Fl(b)s(elo)m(w\).)59 -b(If)35 b(the)i(option)f(is)f(not)i(sp)s(eci\014ed,)f -Fj(BARCODE_TABLE)d Fl(is)i(lo)s(ok)m(ed)h(up)g(in)f(the)574 -2106 y(en)m(vironmen)m(t,)d(otherwise)f(no)h(table)f(is)g(prin)m(ted)f -(and)h(eac)m(h)i(barco)s(de)f(will)c(get)33 b(its)e(o)m(wn)h(page.)574 -2206 y(The)27 b(size)g(\(but)f(not)h(the)g(p)s(osition\))e(of)j(a)f -(barco)s(de)f(item)h(within)d(a)k(table)e(can)h(also)g(b)s(e)f -(selected)574 2305 y(using)43 b Fj(-g)g Fl(\(see)i Fj(")p -Fl(geometry)p Fj(")g Fl(ab)s(o)m(v)m(e\),)k(without)43 -b(struggling)f(with)h(external)h(and)f(in)m(ternal)574 -2405 y(margins.)71 b(I)40 b(still)e(think)h(managemen)m(t)j(of)f -(geometries)g(in)f(a)h(table)f(is)g(sub)s(optimal,)g(but)g(I)574 -2504 y(can't)32 b(mak)m(e)f(it)f(b)s(etter)h(without)e(in)m(tro)s -(ducing)f(incompatibilities.)94 2651 y Fj(-m)i(margin\(s\))574 -2751 y Fl(Sp)s(eci\014es)21 b(an)g(in)m(ternal)g(margin)g(for)g(eac)m -(h)i(stic)m(k)m(er)g(in)d(the)i(table.)38 b(The)21 b(argumen)m(t)i(is)d -(of)i(the)g(form)574 2850 y(\\)p Fj(<)p Fg(xmar)-5 b(gin)p -Fj(>,<)p Fg(ymar)g(gin)p Fj(>)p Fl(")35 b(and)c(the)g(margin)g(is)g -(applied)e(symmetrically)h(to)i(the)g(stic)m(k)m(er.)45 -b(If)574 2950 y(unsp)s(eci\014ed,)28 b(the)h(en)m(vironmen)m(t)g(v)-5 -b(ariable)28 b Fj(BARCODE_MARGIN)e Fl(is)i(used)h(or)g(a)h(default)e -(in)m(ternal)574 3050 y(margin)i(of)g(10)i(p)s(oin)m(ts)d(is)g(used.)94 -3196 y Fj(-n)384 b Fl(\\Numeric")31 b(output:)40 b(don't)31 -b(prin)m(t)e(the)h(ASCI)s(I)f(form)h(of)g(the)h(co)s(de,)g(only)e(the)i -(bars.)94 3343 y Fj(-c)384 b Fl(No)35 b(c)m(hec)m(ksum)f(c)m(haracter)h -(\(for)f(enco)s(dings)e(that)j(allo)m(w)e(it,)h(lik)m(e)f(co)s(de)h -(39,)h(other)f(co)s(des,)h(lik)m(e)574 3442 y(UPC)c(or)f(EAN,)h(ignore) -f(this)f(option\).)94 3589 y Fj(-E)384 b Fl(Encapsulated)32 -b(p)s(ostscript)f(\(default)h(is)g(normal)f(p)s(ostscript\).)47 -b(When)32 b(the)h(output)f(is)f(gener-)574 3689 y(ated)h(as)e(EPS)g -(only)f(one)i(barco)s(de)f(is)f(enco)s(ded.)94 3835 y -Fj(-P)384 b Fl(PCL)35 b(output.)56 b(Please)36 b(note)g(that)g(the)f(Y) -h(direction)e(go)s(es)i(from)f(top)h(to)g(b)s(ottom)g(for)f(PCL,)574 -3935 y(and)30 b(the)h(origin)e(for)h(an)g(image)h(is)e(the)i(top-left)f -(corner)h(instead)e(of)i(the)f(b)s(ottom-left)94 4081 -y Fj(-p)g(pagesize)574 4181 y Fl(Sp)s(ecify)44 b(a)h(non-default)f -(page)i(size.)85 b(The)45 b(page)h(size)f(can)g(b)s(e)f(sp)s(eci\014ed) -g(in)g(millimeters,)574 4281 y(inc)m(hes)34 b(or)g(plain)e(n)m(um)m(b)s -(ers)g(\(for)i(example:)48 b Fj("210x297mm")p Fl(,)32 -b Fj("8.5x11in")p Fl(,)g Fj("595x842")p Fl(\).)50 b(A)574 -4380 y(page)27 b(sp)s(eci\014cation)d(as)i(n)m(um)m(b)s(ers)e(will)f(b) -s(e)i(in)m(terpreted)g(according)g(to)i(the)f(curren)m(t)f(unit)f(sp)s -(ec-)574 4480 y(i\014cation)33 b(\(see)h Fj(-u)e Fl(b)s(elo)m(w\).)49 -b(If)33 b(libpap)s(er)d(is)i(a)m(v)-5 b(ailable,)33 b(y)m(ou)h(can)f -(also)g(sp)s(ecify)f(the)h(page)h(size)574 4580 y(with)40 -b(its)g(name,)k(lik)m(e)d Fj("A3")e Fl(or)i Fj("letter")e -Fl(\(libpap)s(er)f(is)i(a)h(standard)g(comp)s(onen)m(t)g(of)g(De-)574 -4679 y(bian)d(GNU/Lin)m(ux,)k(but)d(ma)m(y)h(b)s(e)e(missing)f -(elsewhere\).)68 b(The)39 b(default)f(page)i(size)g(is)e(y)m(our)574 -4779 y(system-wide)30 b(default)g(if)f(libpap)s(er)e(is)j(there,)h(A4)g -(otherwise.)94 4925 y Fj(-u)f(unit)162 b Fl(Cho)s(ose)32 -b(the)f(unit)f(used)g(in)g(size)i(sp)s(eci\014cations.)42 -b(Accepted)32 b(v)-5 b(alues)31 b(are)g(\\mm",)i(\\cm",)f(\\in")574 -5025 y(and)37 b(\\pt".)61 b(By)37 b(default,)h(the)f(program)f(will)f -(c)m(hec)m(k)j Fj(BARCODE_UNIT)33 b Fl(in)j(the)h(en)m(vironmen)m(t,) -574 5125 y(and)c(assume)g(p)s(oin)m(ts)g(otherwise)f(\(this)h(b)s(eha)m -(viour)f(is)g(compatible)h(with)f(0.92)j(and)d(previous)574 -5224 y(v)m(ersions.)50 b(If)33 b Fj(-u)g Fl(app)s(ears)g(more)g(than)g -(once,)j(eac)m(h)e(instance)f(will)e(mo)s(di\014ed)h(the)h(b)s(eha)m -(viour)574 5324 y(for)h(the)g(argumen)m(ts)g(at)g(its)f(righ)m(t,)i(as) -f(the)g(command)f(line)f(is)h(pro)s(cesses)g(left)h(to)g(righ)m(t.)50 -b(The)574 5424 y(program)32 b(in)m(ternally)f(w)m(orks)h(with)f(p)s -(oin)m(ts,)h(and)f(an)m(y)i(size)f(is)f(appro)m(ximated)h(to)h(the)f -(nearest)574 5523 y(m)m(ultiple)c(of)j(one)f(p)s(oin)m(t.)40 -b(The)30 b Fj(-u)f Fl(option)h(a\013ect)i Fj(-g)e Fl(\(geometry\),)i -Fj(-t)e Fl(\(table\))h(and)e Fj(-p)h Fl(\(page)574 5623 -y(size\).)p eop -%%Page: 7 8 -7 7 bop 94 -116 a Fl(Chapter)30 b(6:)41 b(Supp)s(orted)29 -b(Enco)s(dings)2417 b(7)94 365 y Fi(6)81 b(Supp)t(orted)51 -b(Enco)t(dings)219 558 y Fl(The)31 b(program)h(enco)s(des)g(text)g -(strings)f(passed)g(either)g(on)h(the)g(command)g(line)e(\(with)g(-b\)) -i(or)g(retriev)m(ed)94 658 y(from)38 b(standard)f(input.)61 -b(The)37 b(text)i(represen)m(tation)f(is)f(in)m(terpreted)g(according)g -(to)i(the)f(follo)m(wing)e(rules.)94 758 y(When)42 b(auto-detection)g -(of)g(the)f(enco)s(ding)f(is)h(enabled)f(\(i.e,)k(no)e(explicit)d(enco) -s(ding)h(t)m(yp)s(e)i(is)e(sp)s(eci\014ed\),)94 857 y(the)c(enco)s -(ding)e(t)m(yp)s(es)h(are)h(scanned)f(to)h(\014nd)d(one)j(that)g(can)f -(digest)g(the)g(text)i(string.)54 b(The)35 b(follo)m(wing)e(list)94 -957 y(of)h(supp)s(orted)e(t)m(yp)s(es)h(is)g(sorted)g(in)g(the)g(same)h -(order)f(the)h(library)d(uses)i(when)f(auto-detecting)k(a)d(suitable)94 -1056 y(enco)s(ding)d(for)g(a)h(string.)94 1193 y Fh(EAN)282 -b Fl(The)36 b(EAN)h(fron)m(tend)f(is)g(similar)d(to)38 -b(UPC;)e(it)g(accepts)i(strings)d(of)i(digits,)g(12)g(or)g(7)f(c)m -(harac-)574 1293 y(ters)c(long.)41 b(Strings)30 b(of)h(13)g(or)g(8)g(c) -m(haracters)i(are)e(accepted)h(if)e(the)h(pro)m(vided)f(c)m(hec)m(ksum) -h(digit)574 1393 y(is)40 b(correct.)73 b(I)40 b(exp)s(ect)i(most)f -(users)e(to)j(feed)e(input)f(without)h(a)h(c)m(hec)m(ksum,)j(though.)71 -b(The)574 1492 y(add-2)36 b(and)g(add-5)g(extension)f(are)h(accepted)i -(for)d(b)s(oth)g(the)i(EAN-13)g(and)e(the)h(EAN-8)h(en-)574 -1592 y(co)s(dings.)42 b(The)30 b(follo)m(wing)f(are)j(example)e(of)h(v) --5 b(alid)29 b(input)g(strings:)41 b(\\)p Fj(123456789012)p -Fl(")28 b(\(EAN-)574 1692 y(13\),)43 b(\\)p Fj(1234567890128)p -Fl(")37 b(\(EAN-13)k(wih)c(c)m(hec)m(ksum\),)43 b(\\)p -Fj(1234567)p Fl(")38 b(\(EAN-8\),)44 b(\\)p Fj(12345670)574 -1791 y(12345)p Fl(")23 b(\(EAN-8)h(with)e(c)m(hec)m(ksum)h(and)g -(add-5\),)i(\\)p Fj(123456789012)45 b(12)p Fl(")23 b(\(EAN-13)i(with)c -(add-)574 1891 y(2\),)32 b(\\)p Fj(123456789012)45 b(12345)p -Fl(")29 b(\(EAN-13)j(with)d(add-5\).)94 2028 y Fh(UPC)284 -b Fl(The)35 b(UPC)g(fron)m(tend)g(accepts)i(only)d(strings)g(made)i(up) -e(of)h(digits)f(\(and,)j(if)d(a)i(supplemen)m(tal)574 -2127 y(enco)s(ding)27 b(is)g(used,)g(a)h(blank)f(to)h(separate)g(it\).) -40 b(It)28 b(accepts)h(strings)d(of)i(11)g(or)g(12)g(digits)f(\(UPC-) -574 2227 y(A\))k(and)f(6)h(or)f(7)h(or)f(8)h(digits)e(\(UPC-E\).)574 -2345 y(The)c(12th)h(digit)e(of)h(UPC-A)g(is)f(the)h(c)m(hec)m(ksum)h -(and)e(is)g(added)h(b)m(y)g(the)g(library)d(if)i(not)i(sp)s(eci\014ed) -574 2445 y(in)k(the)h(input;)e(if)h(it)h(is)f(sp)s(eci\014ed,)f(it)h(m) -m(ust)h(b)s(e)f(the)h(righ)m(t)g(c)m(hec)m(ksum)g(or)g(the)g(co)s(de)g -(is)f(rejected)574 2545 y(as)38 b(in)m(v)-5 b(alid.)59 -b(F)-8 b(or)38 b(UPC-E,)f(6)h(digit)e(are)i(considered)e(to)i(b)s(e)e -(the)i(middle)d(part)i(of)g(the)g(co)s(de,)574 2644 y(a)i(leading)d(0)i -(is)f(assumed)g(and)g(the)h(c)m(hec)m(ksum)g(is)f(added;)k(7)d(digits)e -(are)i(either)f(considered)574 2744 y(the)30 b(initial)d(part)i -(\(leading)g(digit)f(0)i(or)g(1,)g(c)m(hec)m(ksum)g(missing\))e(or)i -(the)f(\014nal)g(part)g(\(c)m(hec)m(ksum)574 2844 y(sp)s(eci\014ed,)f -(leading)g(0)i(assumed\);)g(8)f(digits)f(are)i(considered)e(to)i(b)s(e) -e(the)i(complete)f(co)s(de,)h(with)574 2943 y(leading)k(0)i(or)f(1)g -(and)g(c)m(hec)m(ksum.)55 b(F)-8 b(or)36 b(b)s(oth)f(UPC-A)g(and)f -(UPC-E,)i(a)f(trailing)e(string)h(of)i(2)574 3043 y(digits)30 -b(or)h(5)g(digits)e(is)h(accepted)i(as)f(w)m(ell.)40 -b(Therefore,)31 b(the)g(follo)m(wing)e(are)i(examples)g(of)g(v)-5 -b(alid)574 3142 y(strings)41 b(that)h(can)f(b)s(e)g(enco)s(ded)g(as)h -(UPC:)f(\\)p Fj(01234567890)p Fl(")e(\(UPC-A\))j(\\)p -Fj(012345678905)p Fl(")574 3242 y(\(UPC-A)33 b(with)d(c)m(hec)m -(ksum\),)k(\\)p Fj(012345)p Fl(")d(\(UPC-E\),)i(\\)p -Fj(01234567890)45 b(12)p Fl(")32 b(\(UPC-A,)g(add-2\))574 -3342 y(and)21 b(\\)p Fj(01234567890)45 b(12345)p Fl(")20 -b(\(UPC-A,)i(add-5\),)h(\\)p Fj(0123456)47 b(12)p Fl(")20 -b(\(UPC-E,)i(add-2\).)38 b(Please)574 3441 y(note)24 -b(that)f(when)f(setting)h Fj(BARCODE_ANY)c Fl(to)24 b(auto-detect)h -(the)e(enco)s(ding)f(to)h(b)s(e)f(used,)i(12-digit)574 -3541 y(strings)32 b(and)h(7-digit)f(strings)g(will)e(alw)m(a)m(ys)k(b)s -(e)e(iden)m(ti\014ed)f(as)i(EAN.)h(This)d(b)s(ecause)i(I)f(exp)s(ect) -574 3641 y(most)h(user)f(to)h(pro)m(vide)f(input)e(without)i(a)g(c)m -(hec)m(ksum.)48 b(If)32 b(y)m(ou)h(need)f(to)h(sp)s(ecify)e(UPC-with-) -574 3740 y(c)m(hec)m(ksum)h(as)g(input)d(y)m(ou)i(m)m(ust)g(explicitly) -e(set)j Fj(BARCODE_UPC)c Fl(as)j(a)g(\015ag)h(or)f(use)g -Fj(-e)47 b(upc)30 b Fl(on)574 3840 y(the)h(command)f(line.)94 -3977 y Fh(ISBN)264 b Fl(ISBN)26 b(n)m(um)m(b)s(ers)e(are)i(enco)s(ded)f -(as)h(EAN-13)g(sym)m(b)s(ols,)g(with)e(an)h(optional)g(add-5)g -(trailer.)38 b(The)574 4076 y(ISBN)27 b(fron)m(tend)f(of)h(the)g -(library)e(accepts)j(real)e(ISBN)h(n)m(um)m(b)s(ers)e(and)h(deals)h -(with)e(an)m(y)i(h)m(yphen)574 4176 y(and,)h(if)f(presen)m(t,)h(the)g -(ISBN)f(c)m(hec)m(ksum)i(c)m(haracter)g(b)s(efore)e(enco)s(ding)f -(data.)41 b(V)-8 b(alid)26 b(represen-)574 4276 y(tations)j(for)e(ISBN) -h(strings)e(are)j(for)e(example:)40 b(\\)p Fj(1-56592-292-1)p -Fl(",)25 b(\\)p Fj(3-89721-122-X)p Fl(")h(and)574 4375 -y(\\)p Fj(3-89721-122-X)45 b(06900)p Fl(".)94 4512 y -Fh(co)s(de)31 b(128-B)574 4612 y Fl(This)37 b(enco)s(ding)g(can)h -(represen)m(t)g(all)f(of)h(the)h(prin)m(ting)c(ASCI)s(I)i(c)m -(haracters,)42 b(from)37 b(the)h(space)574 4711 y(\(32\))32 -b(to)g(DEL)e(\(127\).)43 b(The)30 b(c)m(hec)m(ksum)h(digit)e(is)g -(mandatory)i(in)e(this)g(enco)s(ding.)94 4848 y Fh(co)s(de)i(128-C)574 -4948 y Fl(The)h(\\C")g(v)-5 b(ariation)31 b(of)h(Co)s(de-128)h(uses)e -(Co)s(de-128)i(sym)m(b)s(ols)d(to)j(represen)m(t)f(t)m(w)m(o)h(digits)d -(at)j(a)574 5048 y(time)28 b(\(Co)s(de-128)g(is)f(made)g(up)f(of)i(104) -g(sym)m(b)s(ols)e(whose)i(in)m(terpretation)e(is)h(con)m(trolled)g(b)m -(y)g(the)574 5147 y(start)35 b(sym)m(b)s(ol)e(b)s(eing)g(used\).)52 -b(Co)s(de)34 b(128-C)h(is)e(th)m(us)h(the)h(most)f(compact)i(w)m(a)m(y) -f(to)g(represen)m(t)574 5247 y(an)m(y)41 b(ev)m(en)h(n)m(um)m(b)s(er)d -(of)i(digits.)70 b(The)40 b(enco)s(der)g(refuses)g(to)h(deal)f(with)g -(an)g(o)s(dd)g(n)m(um)m(b)s(er)f(of)574 5347 y(digits)24 -b(b)s(ecause)h(the)g(caller)f(is)g(exp)s(ected)h(to)h(pro)m(vide)e -(prop)s(er)f(padding)g(to)j(an)f(ev)m(en)g(n)m(um)m(b)s(er)f(of)574 -5446 y(digits.)38 b(\(Since)23 b(Co)s(de-128)i(includes)d(con)m(trol)j -(sym)m(b)s(ols)d(to)j(switc)m(h)f(c)m(harset,)j(it)c(is)g -(theoretically)574 5546 y(p)s(ossible)29 b(to)j(represen)m(t)f(the)h(o) -s(dd)e(digit)g(as)h(a)g(Co)s(de)g(128-A)i(or)e(128-B)i(sym)m(b)s(ol,)e -(but)f(this)g(to)s(ol)574 5645 y(do)s(esn't)h(curren)m(tly)e(implemen)m -(t)g(this)g(option\).)p eop -%%Page: 8 9 -8 8 bop 94 -116 a Fl(Chapter)30 b(6:)41 b(Supp)s(orted)29 -b(Enco)s(dings)2417 b(8)94 365 y Fh(co)s(de)31 b(128)h(ra)m(w)574 -465 y Fl(Co)s(de-128)24 b(output)d(represen)m(ted)h(sym)m(b)s(ol-b)m -(y-sym)m(b)s(ol)e(in)h(the)h(input)f(string.)36 b(T)-8 -b(o)23 b(o)m(v)m(erride)f(part)574 565 y(of)27 b(the)g(problems)d -(outlined)h(b)s(elo)m(w)g(in)g(sp)s(ecifying)f(co)s(de128)k(sym)m(b)s -(ols,)e(this)f(pseudo-enco)s(ding)574 664 y(allo)m(ws)42 -b(the)h(used)f(to)h(sp)s(ecify)e(a)i(list)e(of)i(co)s(de128)h(sym)m(b)s -(ols)d(separated)i(b)m(y)g(spaces.)77 b(Eac)m(h)574 764 -y(sym)m(b)s(ol)31 b(is)g(represen)m(ted)h(b)m(y)g(a)g(n)m(um)m(b)s(er)f -(in)g(the)h(range)g(0-105.)48 b(The)31 b(list)g(should)f(include)g(the) -574 863 y(leading)e(c)m(haracter.The)i(c)m(hec)m(ksum)g(and)e(the)h -(stop)g(c)m(haracter)h(are)f(automatically)g(added)f(b)m(y)574 -963 y(the)k(library)-8 b(.)42 b(Most)33 b(lik)m(ely)d(this)g -(pseudo-enco)s(ding)g(will)f(b)s(e)i(used)f(with)g Fj(BARCODE_NO_ASCII) -574 1063 y Fl(and)g(some)h(external)f(program)g(to)i(supply)27 -b(the)k(prin)m(ted)e(text.)94 1245 y Fh(co)s(de)37 b(39)180 -b Fl(The)36 b(co)s(de-39)h(standard)f(can)g(enco)s(de)g(upp)s(ercase)g -(letters,)i(digits,)e(the)g(blank)f(space,)k(plus,)574 -1345 y(min)m(us,)d(dot,)i(star,)f(dollar,)f(slash,)g(p)s(ercen)m(t.)57 -b(An)m(y)36 b(string)f(that)h(is)f(only)g(comp)s(osed)g(of)h(suc)m(h) -574 1445 y(c)m(haracters)j(is)e(accepted)h(b)m(y)g(the)f(co)s(de-39)i -(enco)s(der.)61 b(T)-8 b(o)38 b(a)m(v)m(oid)g(lo)s(osing)e -(information,)i(the)574 1544 y(enco)s(der)c(refuses)g(to)h(enco)s(de)f -(mixed-case)g(strings)f(\(a)i(lo)m(w)m(ercase)g(string)e(is)g -(nonetheless)h(ac-)574 1644 y(cepted)d(as)g(a)g(shortcut,)f(but)g(is)f -(enco)s(ded)h(as)h(upp)s(ercase\).)94 1826 y Fh(in)m(terlea)m(v)m(ed)g -(2)g(of)g(5)574 1926 y Fl(This)36 b(enco)s(ding)g(can)i(only)e -(represen)m(t)h(an)g(ev)m(en)h(n)m(um)m(b)s(er)e(of)h(digits)f(\(o)s -(dd)h(digits)f(are)h(repre-)574 2026 y(sen)m(ted)c(b)m(y)g(bars,)f(and) -g(ev)m(en)h(digits)e(b)m(y)i(the)f(in)m(terlea)m(ving)g(spaces\).)48 -b(The)32 b(name)g(stresses)h(the)574 2125 y(fact)i(that)g(t)m(w)m(o)g -(of)f(the)g(\014v)m(e)g(items)f(\(bars)h(or)f(spaces\))i(allo)s(cated)f -(to)g(eac)m(h)h(sym)m(b)s(ol)e(are)h(wide,)574 2225 y(while)41 -b(the)i(rest)g(are)g(narro)m(w.)78 b(The)42 b(c)m(hec)m(ksum)h(digit)f -(is)g(optional)f(\(can)j(b)s(e)e(disabled)e(via)574 2325 -y Fj(BARCODE_NO_CHECKSUM)p Fl(\).)f(Since)31 b(the)h(n)m(um)m(b)s(er)e -(of)h(digits,)g(including)d(the)j(c)m(hec)m(ksum,)i(m)m(ust)574 -2424 y(b)s(e)40 b(ev)m(en,)k(a)c(leading)f(zero)i(is)e(inserted)g(in)g -(the)i(string)e(b)s(eing)g(enco)s(ded)g(if)h(needed)f(\(this)h(is)574 -2524 y(sp)s(eci\014cally)29 b(stated)i(in)e(the)h(sp)s(ecs)g(I)g(ha)m -(v)m(e)i(access)g(to\).)94 2707 y Fh(co)s(de)f(128)136 -b Fl(Automatic)31 b(selection)g(b)s(et)m(w)m(een)g(alphab)s(et)f(A,)h -(B)g(and)f(C)h(of)g(the)g(Co)s(de-128)h(standard.)41 -b(This)574 2806 y(enco)s(ding)31 b(can)i(represen)m(t)f(all)f(ASCI)s(I) -f(sym)m(b)s(ols,)i(from)f(0)h(\(NUL\))h(to)g(127)g(\(DEL\),)g(as)g(w)m -(ell)e(as)574 2906 y(four)36 b(sp)s(ecial)e(sym)m(b)s(ols,)i(named)f -(F1,)j(F2,)g(F3,)g(F4.)58 b(The)35 b(set)h(of)g(sym)m(b)s(ols)f(a)m(v) --5 b(ailable)35 b(in)f(this)574 3005 y(enco)s(ding)g(is)f(not)i(easily) -e(represen)m(ted)i(as)f(input)e(to)k(the)e Fg(b)-5 b(ar)g(c)g(o)g(de)44 -b Fl(library)-8 b(,)33 b(so)i(the)f(follo)m(wing)574 -3105 y(con)m(v)m(en)m(tion)24 b(is)e(used.)38 b(In)22 -b(the)g(input)f(string,)j(whic)m(h)d(is)h(a)h(C-language)g(n)m -(ull-terminated)e(string,)574 3205 y(the)26 b(NUL)g(c)m(har)f(is)g -(represen)m(ted)g(b)m(y)h(the)f(v)-5 b(alue)25 b(128)i(\(0x80,)h -(0200\))g(and)d(the)g(F1-F4)i(c)m(haracters)574 3304 -y(are)f(represen)m(ted)g(b)m(y)f(the)h(v)-5 b(alues)25 -b(193-196)k(\(0xc1-0xc4,)h(0301-0304\).)43 b(The)25 b(v)-5 -b(alues)25 b(ha)m(v)m(e)i(b)s(een)574 3404 y(c)m(hosen)k(to)h(ease)f -(their)e(represen)m(tation)i(as)f(escap)s(e)h(sequences.)574 -3545 y(Since)39 b(the)h(shell)d(do)s(esn't)j(seem)f(to)i(in)m(terpret)d -(escap)s(e)i(sequences)g(on)f(the)h(command)f(line,)574 -3645 y(the)e Fj(")p Fl(-b)p Fj(")e Fl(option)g(cannot)h(b)s(e)f(easily) -g(used)g(to)i(designate)f(the)g(strings)f(to)h(b)s(e)f(enco)s(ded.)57 -b(As)574 3744 y(a)44 b(w)m(ork)-5 b(around)42 b(y)m(ou)i(can)f(resort)h -(to)f(the)h(command)f Fj(echo)p Fl(,)i(either)e(within)d(bac)m(k-tic)m -(ks)45 b(or)574 3844 y(used)34 b(separately)g(to)g(create)i(a)e(\014le) -f(that)i(is)e(then)g(fed)h(to)h(the)f(standard-input)d(of)j -Fg(b)-5 b(ar)g(c)g(o)g(de)44 b Fl({)574 3944 y(assuming)34 -b(y)m(our)h Fj(echo)f Fl(command)h(pro)s(cesses)g(escap)s(e)h -(sequences.)56 b(The)34 b(newline)f(c)m(haracter)574 -4043 y(is)d(esp)s(ecially)f(though)h(to)h(enco)s(de)f(\(but)g(not)h -(imp)s(ossible)c(unless)h(y)m(ou)j(use)f(a)h Fj(csh)e -Fl(v)-5 b(arian)m(t.)574 4184 y(These)35 b(problems)f(only)g(apply)g -(to)i(the)f(command-line)f(to)s(ol;)j(the)f(use)e(of)i(library)c -(functions)574 4284 y(do)s(esn't)44 b(giv)m(e)f(an)m(y)h(problem.)78 -b(In)42 b(needed,)47 b(y)m(ou)c(can)h(use)f(the)h(\\)p -Fg(c)-5 b(o)g(de)46 b(128)f(r)-5 b(aw)10 b Fl(")45 b(pseudo-)574 -4384 y(enco)s(ding)33 b(to)h(represen)m(t)g(co)s(de128)h(sym)m(b)s(ols) -d(b)m(y)h(their)g(n)m(umerical)f(v)-5 b(alue.)50 b(This)31 -b(enco)s(ding)i(is)574 4483 y(used)28 b(late)h(in)e(the)h -(auto-selection)i(mec)m(hanism)d(b)s(ecause)h(\(almost\))i(an)m(y)e -(input)f(string)g(can)i(b)s(e)574 4583 y(represen)m(ted)i(using)e(co)s -(de128.)94 4765 y Fh(Co)s(dabar)138 b Fl(Co)s(dabar)33 -b(can)h(enco)s(de)g(the)g(ten)f(digits)g(and)g(a)h(few)f(sp)s(ecial)f -(sym)m(b)s(ols)g(\(min)m(us,)i(plus,)e(dollar,)574 4865 -y(colon,)k(bar,)g(dot\).)54 b(The)34 b(c)m(haracters)i(\\)p -Fj(A)p Fl(",)h(\\)p Fj(B)p Fl(",)f(\\)p Fj(C)p Fl(")f(and)g(\\)p -Fj(D)p Fl(")g(are)g(used)f(to)h(represen)m(t)g(four)574 -4965 y(di\013eren)m(t)30 b(start/stop)i(c)m(haracters.)42 -b(The)30 b(input)e(string)i(to)h(the)f(barco)s(de)h(library)d(can)i -(include)574 5064 y(the)d(start)g(and)f(stop)h(c)m(haracters)h(or)e -(not)h(include)d(them)j(\(in)e(whic)m(h)h(case)h(\\)p -Fj(A)p Fl(")g(is)f(used)g(as)g(start)574 5164 y(and)38 -b(\\)p Fj(B)p Fl(")g(as)g(stop\).)64 b(Start)38 b(and)f(stop)h(c)m -(haracters)h(in)e(the)h(input)e(string)g(can)j(b)s(e)e(either)g(all)574 -5264 y(lo)m(w)m(ercase)32 b(or)f(all)e(upp)s(ercase)g(and)h(are)h(alw)m -(a)m(ys)g(prin)m(ted)e(as)h(upp)s(ercase.)94 5446 y Fh(Plessey)192 -b Fl(Plessey)39 b(barco)s(des)f(can)h(enco)s(de)g(all)f(the)h -(hexadecimal)f(digits.)64 b(Alphab)s(etic)37 b(digits)g(in)h(the)574 -5546 y(input)25 b(string)g(m)m(ust)h(either)g(b)s(e)f(all)g(lo)m(w)m -(ercase)j(or)e(all)f(upp)s(ercase.)38 b(The)26 b(output)g(text)h(is)e -(alw)m(a)m(ys)574 5645 y(upp)s(ercase.)p eop -%%Page: 9 10 -9 9 bop 94 -116 a Fl(Chapter)30 b(7:)41 b(PCL)30 b(Output)2761 -b(9)94 365 y Fh(MSI)313 b Fl(MSI)39 b(can)g(only)e(enco)s(de)i(the)g -(decimal)e(digits.)64 b(While)38 b(the)h(standard)e(sp)s(eci\014es)h -(either)g(one)574 465 y(or)e(t)m(w)m(o)h(c)m(hec)m(k)g(digits,)e(the)h -(curren)m(t)f(implemen)m(tation)f(in)g(this)g(library)f(only)i -(generates)i(one)574 565 y(c)m(hec)m(k)32 b(digit.)94 -701 y Fh(co)s(de)f(93)180 b Fl(The)30 b(co)s(de-93)h(standard)f(can)g -(nativ)m(ely)g(enco)s(de)g(48)h(di\013eren)m(t)e(c)m(haracters,)j -(including)27 b(upp)s(er-)574 801 y(case)39 b(letters,)h(digits,)e(the) -g(blank)e(space,)k(plus,)e(min)m(us,)g(dot,)h(star,)h(dollar,)e(slash,) -h(p)s(ercen)m(t,)574 901 y(as)31 b(w)m(ell)f(as)g(\014v)m(e)h(sp)s -(ecial)e(c)m(haracters:)43 b(a)30 b(start/stop)i(delimiter)c(and)i -(four)g Fj(")p Fl(shift)f(c)m(haracters)p Fj(")574 1000 -y Fl(used)f(for)f(extended)h(enco)s(ding.)39 b(Using)27 -b(this)g Fj(")p Fl(extended)g(enco)s(ding)p Fj(")g Fl(metho)s(d,)h(an)m -(y)g(standard)574 1100 y(7-bit)34 b(ASCI)s(I)e(c)m(haracter)k(can)e(b)s -(e)f(enco)s(ded,)i(but)e(it)h(tak)m(es)h(up)e(t)m(w)m(o)i(sym)m(b)s(ol) -d(lengths)i(in)e(bar-)574 1200 y(co)s(de)k(if)f(the)g(c)m(haracter)j -(is)c(not)i(nativ)m(ely)f(supp)s(orted)f(\(one)i(of)g(the)f(48\).)58 -b(The)35 b(enco)s(der)g(here)574 1299 y(fully)24 b(implemen)m(ts)g(the) -i(co)s(de)g(93)g(enco)s(ding)f(standard.)38 b(An)m(y)26 -b(c)m(haracters)h(nativ)m(ely)e(supp)s(orted)574 1399 -y(\(A-Z,)35 b(0-9,)h Fj(")p Fl(.)p Fj(+)p Fl(-/$&\045)p -Fj(")p Fl(\))e(will)d(b)s(e)j(enco)s(ded)f(as)h(suc)m(h)g(-)g(for)f(an) -m(y)h(other)h(c)m(haracters)g(\(suc)m(h)f(as)574 1498 -y(lo)m(w)m(er)h(case)g(letters,)g(brac)m(k)m(ets,)h(paren)m(theses,)g -(etc.\),)h(the)d(enco)s(der)f(will)f(rev)m(ert)i(to)h(extended)574 -1598 y(enco)s(ding.)68 b(As)40 b(a)g(note,)j(the)d(option)f(to)h -(exclude)f(the)h(c)m(hec)m(ksum)g(will)d(eliminate)i(the)h(t)m(w)m(o) -574 1698 y(mo)s(dulo-47)f(c)m(hec)m(ksums)g(\(called)g(C)f(and)g(K\))h -(from)f(the)h(barco)s(de,)i(but)d(this)g(probably)f(will)574 -1797 y(mak)m(e)c(it)e(unreadable)e(b)m(y)i(99\045)h(of)g(all)e -(scanning)g(systems.)43 b(These)31 b(c)m(hec)m(ksums)h(are)g(sp)s -(eci\014ed)574 1897 y(to)f(b)s(e)e(used)g(at)i(the)f(\014rm)m(w)m(are)f -(lev)m(el,)h(and)f(their)g(absence)h(will)d(b)s(e)j(in)m(terpreted)f -(as)h(an)f(in)m(v)-5 b(alid)574 1997 y(barco)s(de.)94 -2266 y Fi(7)81 b(PCL)53 b(Output)219 2459 y Fl(While)28 -b(the)h(default)g(output)f(is)g(P)m(ostscript)i(\(p)s(ossibly)c(EPS\),) -j(and)g(P)m(ostscript)g(can)g(b)s(e)f(p)s(ost-pro)s(cessed)94 -2558 y(to)40 b(almost)e(an)m(ything,)i(it)e(is)f(sometimes)i(desirable) -d(to)j(create)h(output)e(directly)f(usable)g(b)m(y)i(the)f(sp)s -(eci\014c)94 2658 y(prin)m(ter)33 b(at)h(hand.)50 b(PCL)33 -b(is)g(curren)m(tly)f(supp)s(orted)g(as)i(an)g(output)f(format)h(for)g -(this)e(reason.)51 b(Please)34 b(note)94 2758 y(that)25 -b(the)f(Y)g(co)s(ordinate)g(for)f(PCL)h(go)s(es)g(from)f(top)i(to)f(b)s -(ottom,)i(while)c(for)h(P)m(ostscript)h(it)g(go)s(es)g(from)g(b)s -(ottom)94 2857 y(to)35 b(top.)51 b(Consisten)m(tly)-8 -b(,)34 b(while)d(in)i(P)m(ostscript)g(y)m(ou)h(sp)s(ecify)f(the)g(b)s -(ottom-left)i(corner)e(as)h(origin,)f(for)h(PCL)94 2957 -y(y)m(ou)d(sp)s(ecify)e(the)i(top-left)f(corner.)219 -3075 y(Barco)s(de)c(output)e(for)h(PCL)f(Prin)m(ters)g(\(HP)h(LaserJet) -g(and)g(compatibles\),)g(w)m(as)h(dev)m(elop)s(ed)e(using)f(PCL5)94 -3175 y(Reference)32 b(man)m(uals)d(from)h(HP)-8 b(.)31 -b(that)g(really)e(refers)h(to)h(these)g(prin)m(ters:)169 -3293 y Fb(\017)60 b Fl(LaserJet)31 b(I)s(I)s(I,)f(I)s(I)s(I)e(P)-8 -b(,)31 b(I)s(I)s(I)e(D,)i(I)s(I)s(I)e(Si,)169 3411 y -Fb(\017)60 b Fl(LaserJet)31 b(4)g(family)169 3529 y Fb(\017)60 -b Fl(LaserJet)31 b(5)g(family)169 3648 y Fb(\017)60 b -Fl(LaserJet)31 b(6)g(family)169 3766 y Fb(\017)60 b Fl(Color)30 -b(LaserJet)169 3884 y Fb(\017)60 b Fl(DeskJet)32 b(1200)g(and)e(1600.) -219 4021 y(Ho)m(w)m(ev)m(er,)g(barco)s(de)e(prin)m(ting)d(uses)i(a)h(v) -m(ery)g(small)e(subset)h(of)g(PCL,)g(probably)f(also)h(LaserJet)h(I)s -(I)f(should)94 4121 y(prin)m(t)i(it)h(without)g(problem,)f(but)g(the)i -(resulting)e(text)i(ma)m(y)g(b)s(e)f(horrible.)219 4239 -y(The)22 b(only)g(real)h(di\013erence)f(from)h(one)g(prin)m(ter)e(to)j -(another)f(really)f(dep)s(ends)f(on)h(whic)m(h)g(fon)m(t)h(are)h(a)m(v) --5 b(ailable)94 4338 y(in)30 b(the)g(prin)m(ter,)f(used)h(in)f(prin)m -(ting)f(the)j(lab)s(el)d(asso)s(ciated)j(to)g(the)g(bars)f(\(if)f -(requested\).)219 4457 y(Earlier)j(LaserJet)j(supp)s(orts)d(only)h -(bitmaps)f(fon)m(ts,)k(so)e(these)g(are)h(not)f Fj(")p -Fl(scalable)p Fj(")p Fl(.)50 b(\(Ljet)35 b(I)s(I)e(?\),)i(Also)94 -4556 y(these)c(fon)m(ts,)f(when)f(a)m(v)-5 b(ailable,)29 -b(ha)m(v)m(e)i(a)f(sp)s(eci\014ed)e(direction,)h(and)g(not)h(all)f(of)g -(them)h(are)g(a)m(v)-5 b(ailable)29 b(in)g(b)s(oth)94 -4656 y(P)m(ortrait)i(and)f(Landscap)s(e)g(mo)s(de.)219 -4774 y(F)-8 b(rom)23 b(LaserJet)g(4)f(series,)i(\(except)g(4L/5L)f -(that)g(are)g(en)m(try-lev)m(el)f(prin)m(ters\),)h(Arial)e(scalable)h -(fon)m(t)h(should)94 4874 y(b)s(e)30 b(a)m(v)-5 b(ailable,)30 -b(so)h(it's)f(the)g Fj(")p Fl(default)g(fon)m(t)p Fj(")g -Fl(used)g(b)m(y)g(this)f(program.)219 4992 y(LaserJet)41 -b(I)s(I)s(I)d(series)i(prin)m(ters)e(\(and)i(4L,)g(5L\),)h(don't)f -(feature)h Fj(")p Fl(Arial)p Fj(")d Fl(as)i(a)h(residen)m(t)e(fon)m(t,) -k(so)e(y)m(ou)94 5092 y(should)27 b(use)i Fj(BARCODE_OUT_PCL_III)23 -b Fl(instead)28 b(of)h Fj(BARCODE_OUT_PCL.)p Fl(,)c(and)j(fon)m(t)h -(the)g(fon)m(t)h(used)d(will)g(b)s(e)94 5191 y Fj(")p -Fl(Univ)m(ers)p Fj(")j Fl(instead)f(of)i Fj(")p Fl(Arial)p -Fj(")p Fl(.)219 5309 y(Results)26 b(on)i(compatible)e(prin)m(ters,)h -(ma)m(y)h(dep)s(end)d(on)i(consistency)g(of)h(PCL5)f(compatibilit)m(y) --8 b(,)26 b(in)g(doubt,)94 5409 y(try)31 b(BAR)m(CODE)p -713 5409 28 4 v 33 w(OUT)p 951 5409 V 32 w(PCL)p 1168 -5409 V 32 w(I)s(I)s(I)219 5527 y(PJL)f(commands)g(are)g(not)h(used)f -(here,)g(as)h(it's)f(not)g(v)m(ery)h(compatible.)219 -5645 y(T)-8 b(ested)31 b(Prin)m(ters:)p eop -%%Page: 10 11 -10 10 bop 94 -116 a Fl(Chapter)30 b(8:)41 b(Bugs)31 b(and)f(P)m(ending) -f(Issues.)2211 b(10)169 365 y Fb(\017)60 b Fl(Hp)30 b(LaserJet)h(4050) -169 490 y Fb(\017)60 b Fl(Hp)30 b(LaserJet)h(2100)169 -614 y Fb(\017)60 b Fl(Epson)30 b(N-1200)j(em)m(ul)c(PCL)169 -739 y Fb(\017)60 b Fl(T)-8 b(oshiba)30 b(DP2570)i(\(copier\))f -Fj(+)f Fl(PCL)g(option)169 863 y Fb(\017)60 b Fl(Epson)30 -b(EPL-7100)i(em)m(ul.)40 b(HP)30 b(LaserJet)h(I)s(I:)f(bars)g(prin)m(t) -f(\014ne)g(but)h(text)i(is)d(bad.)94 1146 y Fi(8)81 b(Bugs)52 -b(and)i(P)l(ending)f(Issues.)219 1370 y Fl(The)42 b(curren)m(t)g -(managemen)m(t)h(of)g(b)s(orders/margins)d(is)h(far)h(from)g(optimal.) -75 b(The)42 b(\\default")g(margin)94 1469 y(applied)d(b)m(y)h(the)h -(library)d(in)m(terferes)i(with)f(the)i(external)g(represen)m(tation,)i -(but)d(I)g(feel)g(it)g(is)g(mandatory)94 1569 y(to)f(a)m(v)m(oid)f -(creating)g(barco)s(de)f(output)h(with)e(no)i(surrounding)c(white)j -(space)h(\(the)g(problem)e(is)h(esp)s(ecially)94 1669 -y(relev)-5 b(an)m(t)31 b(for)f(EPS)g(output\).)219 1793 -y(EAN-128)44 b(is)d(not)h(\(y)m(et\))i(supp)s(orted.)73 -b(I)42 b(plan)e(to)j(implemen)m(t)e(it)g(prett)m(y)h(so)s(on)g(and)f -(then)h(bless)f(the)94 1893 y(pac)m(k)-5 b(age)33 b(as)d(v)m(ersion)g -(1.0.)p eop -%%Page: -1 12 --1 11 bop 3849 -116 a Fl(i)94 365 y Fi(T)-13 b(able)55 -b(of)e(Con)l(ten)l(ts)94 697 y Fk(Barco)t(de)45 b(to)t(ols)16 -b Fa(.)k(.)g(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g -(.)h(.)60 b Fk(1)94 955 y(1)135 b(Ov)l(erview)12 b Fa(.)21 -b(.)f(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h -(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.) -f(.)57 b Fk(1)94 1212 y(2)135 b(The)45 b(Underlying)g(Data)h(Structure) -41 b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)86 -b Fk(1)393 1337 y Fl(2.1)92 b(The)30 b(Fields)19 b Fg(.)14 -b(.)h(.)g(.)g(.)g(.)h(.)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(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)49 -b Fl(1)692 1436 y(Use)31 b(of)g(the)f Fg(width)39 b Fl(and)30 -b Fg(sc)-5 b(alef)50 b Fl(\014elds.)25 b Fg(.)15 b(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)56 b Fl(2)393 1536 y(2.2)92 b(The)30 b(In)m(termediate)h -(Represen)m(tation)24 b Fg(.)15 b(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)54 b Fl(3)94 1768 y Fk(3)135 b(The)45 b(Flags)28 -b Fa(.)20 b(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f -(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.) -f(.)g(.)73 b Fk(3)94 2026 y(4)135 b(F)-11 b(unctions)44 -b(Exp)t(orted)h(b)l(y)g(the)g(Library)37 b Fa(.)19 b(.)h(.)f(.)g(.)h(.) -f(.)h(.)f(.)h(.)f(.)g(.)81 b Fk(4)94 2283 y(5)135 b(The)45 -b Fa(b)-7 b(ar)g(c)g(o)g(de)52 b Fk(fron)l(tend)46 b(program)11 -b Fa(.)19 b(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h -(.)55 b Fk(5)393 2408 y Fl(5.1)92 b(The)30 b(Command)g(Line)24 -b Fg(.)15 b(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g -(.)g(.)g(.)g(.)g(.)g(.)h(.)f(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.)g(.) -g(.)g(.)g(.)g(.)g(.)g(.)g(.)55 b Fl(5)94 2640 y Fk(6)135 -b(Supp)t(orted)44 b(Enco)t(dings)33 b Fa(.)20 b(.)f(.)g(.)h(.)f(.)h(.)f -(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.) -78 b Fk(7)94 2897 y(7)135 b(PCL)45 b(Output)40 b Fa(.)20 -b(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)f -(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)85 -b Fk(9)94 3155 y(8)135 b(Bugs)45 b(and)f(P)l(ending)h(Issues.)36 -b Fa(.)19 b(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)g(.)h(.)f(.)h(.)f(.)h(.)f(.)h -(.)f(.)g(.)h(.)79 b Fk(10)p eop -%%Trailer -end -userdict /end-hook known{end-hook}if -%%EOF diff --git a/glabels1/barcode-0.98/doc/barcodedoc.txt b/glabels1/barcode-0.98/doc/barcodedoc.txt deleted file mode 100644 index 08eadeee..00000000 --- a/glabels1/barcode-0.98/doc/barcodedoc.txt +++ /dev/null @@ -1,734 +0,0 @@ - - -This is barcode.info, produced by makeinfo version 4.0 from -barcode.texinfo. - - This file is the User's Manual for the barcode library (version -0.98). - - - - -*Node: Overview - Overview - ******** - - The "barcode" package is mainly a C library for creating bar-code -output files. It also includes a command line front-end and (in a -foreseeable future) a graphic frontend. - - The package is designed as a library because we think the main use -for barcode-generation tools is inside more featured applications. The -library addresses bar code printing as two distinct problems: creation -of bar information and actual conversion to an output format. To this -aim we use an intermediate representation for bar codes, which is -currently documented in the `ps.c' source file (not in this document). - - Note that the library and the accompanying material is released -according to the GPL license, not the LGPL one. A copy of the GPL is -included in the distribution tarball. - - - - -*Node: The Barcode Object - The Underlying Data Structure - ***************************** - - Every barcode-related function acts on a data structure defined in -the `barcode.h' header, which must be included by any C source file -that uses the library. The header is installed by make install. - - The definition of the data structure is included here for reference: - - struct Barcode_Item { - int flags; /* type of encoding and other flags */ - char *ascii; /* malloced */ - char *partial; /* malloced too */ - char *textinfo; /* information about text placement */ - char *encoding; /* code name, filled by encoding engine */ - int width, height; /* output units */ - int xoff, yoff; /* output units */ - int margin; /* output units */ - double scalef; /* requested scaling for barcode */ - int error; /* an errno-like value, in case of failure */ - }; - - The exact meaning of each field and the various flags implemented are -described in the following sections. - - Even though you won't usually need to act on the contents of this -structure, some of the functions in the library receive arguments that -are directly related to one or more of these fields. - - - - -*Node: The Field List - The Fields - ========== - -`int flags;' - The flags are, as you may suspect, meant to specify the exact - behaviour of the library. They are often passed as an argument to - barcode functions and are discussed in the next section. - -`char *ascii;' -`char *partial;' -`char *textinfo;' -`char *encoding;' - These fields are internally managed by the library, and you are - not expected to touch them if you use the provided API. All of - them are allocated with malloc. - -`int width;' -`int height;' - They specify the width and height of the active barcode region - (i.e., excluding the white margin), in the units used to create - output data (for postscript they are points, 1/72th of an inch, - 0.352 mm). The fields can be either assigned to in the structure - or via Barcode_Position(), at your choice. If either value or - both are left to their default value of zero, the output engine - will assign default values according to the specified scaling - factor. If the specified width is bigger than needed (according to - the scaling factor), the output barcode will be centered in its - requested region. If either the width of the height are too small - for the specified scale factor, the output bar code will expand - symmetrically around the requested region. - -`int xoff;' -`int yoff;' - The fields specify offset from the coordinate origin of the output - engine (for postscript, position 0,0 is the lower left corner of - the page). The fields can be either assigned to in the structure - or via Barcode_Position(), at your choice. The offset specifies - where the white margin begins, not where the first bar will be - printed. To print real ink to the specified position you should - set margin to 0. - -`int margin;' - The white margin that will be left around the printed area of the - bar code. The same margin is applied to all sides of the printed - area. The default value for the margin is defined in `barcode.h' - as BARCODE_DEFAULT_MARGIN (10). - -`double scalef;' - The enlarge or shrink value for the bar code over its default - dimension. The width and scalef fields interact deeply in the - creation of the output, and a complete description of the issues - appears later in this section. - -`int error;' - The field is used when a barcode function fails to host an - errno-like integer value. - -Use of the width and scalef fields. ------------------------------------ - - A width unit is the width of the thinnest bar and/or space in the -chosen code; it defaults to 1 point if the output is postscript or -encapsulated postscript. - - Either or both the code width and the scale factor can be left -unspecified (i.e., zero). The library deals with defaults in the -following way: - -Both unspecified - If both the width and the scale factor are unspecified, the scale - factor will default to 1.0 and the width is calculated according - to the actual width of the bar code being printed. - -Width unspecified - If the width is not specified, it is calculated according to the - values of scalef. - -Scale factor unspecified - If the scale factor is not specified, it will be chosen so that - the generated bar code exactly fits the specified width. - -Both specified - The code will be printed inside the specified region according to - the specified scale factor. It will be aligned to the left. If, - however, the chosen width is too small for the specific bar code - and scaling factor, then the code will extend symmetrically to the - left and to the right of the chosen region. - - - - -*Node: The Intermediate Representation - The Intermediate Representation - =============================== - - The encoding functions print their output into the partial and -texinfo fields of the barcode data structure. Those fields, together -with position information, are then used to generate actual output. -This is an informal description of the intermediate format. - - The first char in partial tells how much extra space to add to the -left of the bars. For EAN-13, it is used to leave space to print the -first digit, other codes may have '0' for no-extra-space-needed. - - The next characters are alternating bars and spaces, as multiples of -the base dimension which is 1 unless the code is rescaled. Rescaling is -calculated as the ratio from the requested width and the calculated -width. Digits represent bar/space dimensions. Lower-case letters -represent those bars that should extend lower than the others: 'a' is -equivalent to '1', 'b' is '2' and so on up to 'i' which is equivalent to -'9'. Other letters will be used for encoding-specific meanings, as soon -as I implement them. - - The textinfo string is made up of fields %lf:%lf:%c separated by -blank space. The first integer is the x position of the character, the -second is the font size (before rescaling) and the char item is the -character to be printed. - - Both the partial and textinfo strings may include "-" or "+" as -special characters (in textinfo the char should be a stand-alone word). -They state where the text should be printed: below the bars ("-", -default) or above the bars. This is used, for example, to print the -add-5 and add-2 codes to the right of UPC or EAN codes (the add-5 -extension is mostly used in ISBN codes). - - - - -*Node: Supported Flags - The Flags - ********* - - The following flags are supported by version 0.98 of the library: - -`BARCODE_ENCODING_MASK' - The mask is used to extract the encoding-type identifier from the - flags field. - -`BARCODE_EAN' -`BARCODE_UPC' -`BARCODE_ISBN' -`BARCODE_128B' -`BARCODE_128C' -`BARCODE_128' -`BARCODE_128RAW' -`BARCODE_39' -`BARCODE_I25' -`BARCODE_CBR' -`BARCODE_MSI' -`BARCODE_PLS' -`BARCODE_93' - The currently supported encoding types: EAN (13 digits, 8 digits, - 13 + 2 add-on and 13 + 5 add-on), UPC (UPC-A, UPC-E, UPC-A with 2 - or 5 digit add-on), ISBN (with or without the 5-digit add-on), - CODE128-B (the whole set of printable ASCII characters), CODE128-C - (two digits encoded by each barcode symbol), CODE128 (all ASCII - values), a "raw-input" pseudo-code that generates CODE128 output, - CODE39 (alphanumeric), "interleaved 2 of 5" (numeric), Codabar - (numeric plus a few symbols), MSI (numeric) and Plessey (hex - digits). *Note Supported Encodings::. - -`BARCODE_ANY' - This special encoding type (represented by a value of zero, so it - will be the default) tells the encoding procedure to look for the - first encoding type that can deal with a textual string. - Therefore, a 11-digit code will be printed as UPC (as well as - 6-digit, 11+2 and 11+5), a 12-digit (or 7-digit, or 12+2 or 12+5) - as EAN13, an ISBN code (with or without hyphens, with or without - add-5) will be encoded in its EAN13 representation, an even number - of digits is encoded using CODE128C and a generic string is - encoded using CODE128B. Since code-39 offers a much larger - representation for the same text string, code128-b is preferred - over code39 for alphanumeric strings. - -`BARCODE_NO_ASCII' - Instructs the engine not to print the ascii string on output. By - default the bar code is accompanied with an ascii version of the - text it encodes. - -`BARCODE_NO_CHECKSUM' - Instructs the engine not to add the checksum character to the - output. Not all the encoding types can drop the checksum; those - where the checksum is mandatory (like EAN and UPC) just ignore the - flag. - -`BARCODE_OUTPUT_MASK' - The mask is used to extract the output-type identifier from the - flags field. - -`BARCODE_OUT_PS' -`BARCODE_OUT_EPS' -`BARCODE_OUT_PCL' -`BARCODE_OUT_PCL_III' - The currently supported encoding types: full-page postscript and - encapsulated postscript; PCL (print command language, for HP - printers) and PCL-III (same as PCL, but uses a font not available - on older printers). - -`BARCODE_OUT_NOHEADERS' - The flag instructs the printing engine not to print the header and - footer part of the file. This makes sense for the postscript - engine but might not make sense for other engines; such other - engines will silently ignore the flag just like the PCL back-end - does. - - - - -*Node: The API - Functions Exported by the Library - ********************************* - - The functions included in the barcode library are declared in the -header file barcode.h. They perform the following tasks: - -`struct Barcode_Item *Barcode_Create(char *text);' - The function creates a new barcode object to deal with a specified - text string. It returns NULL in case of failure and a pointer to - a barcode data structure in case of success. - -`int Barcode_Delete(struct Barcode_Item *bc);' - Destroy a barcode object. Always returns 0 (success) - -`int Barcode_Encode(struct Barcode_Item *bc, int flags);' - Encode the text included in the bc object. Valid flags are the - encoding type (other flags are ignored) and BARCODE_NO_CHECKSUM - (other flags are silently ignored); if the flag argument is zero, - bc->flags will apply. The function returns 0 on success and -1 in - case of error. After successful termination the data structure - will host the description of the bar code and its textual - representation, after a failure the error field will include the - reason of the failure. - -`int Barcode_Print(struct Barcode_Item *bc, FILE *f, int flags);' - Print the bar code described by bc to the specified file. Valid - flags are the output type, BARCODE_NO_ASCII and - BARCODE_OUT_NOHEADERS, other flags are ignored. If any of these - flags is zero, it will be inherited from bc->flags which therefore - takes precedence. The function returns 0 on success and -1 in case - of error (with bc->error set accordingly). In case of success, the - bar code is printed to the specified file, which won't be closed - after use. - -`int Barcode_Position(struct Barcode_Item *bc, int wid, int hei, int xoff, int yoff, double scalef);' - The function is a shortcut to assign values to the data structure. - -`int Barcode_Encode_and_Print(char *text, FILE *f, int wid, int hei, int xoff, int yoff, int flags);' - The function deals with the whole life of the barcode object by - calling the other functions; it uses all the specified flags. - -`int Barcode_Version(char *versionname);' - Returns the current version as an integer number of the form major - * 10000 + minor * 100 + release. Therefore, version 1.03.5 will be - returned as 10305 and version 0.53 as 5300. If the argument is - non-null, it will be used to return the version number as a - string. Note that the same information is available from two - preprocessor macros: BARCODE_VERSION (the string) and - BARCODE_VERSION_INT (the integer number). - - - - -*Node: The barcode Executable - The barcode frontend program - **************************** - - The barcode program is a front-end to access some features of the -library from the command line. It is able to read user supplied -strings from the command line or a data file (standard input by default) -and encode all of them. - - - - -*Node: The Command Line - The Command Line - ================ - - barcode accepts the following options: - -`--help or -h' - Print a usage summary and exit. - -`-i filename' - Identify a file where strings to be encoded are read from. If - missing (and if -b is not used) it defaults to standard input. - Each data line of the input file will be used to create one - barcode output. - -`-o filename' - Output file. It defaults to standard output. - -`-b string' - Specify a single "barcode" string to be encoded. The option can - be used multiple times in order to encode multiple strings (this - will result in multi-page postscript output or a table of barcodes - if -t is specified). The strings must match the encoding chosen; - if it doesn't match the program will print a warning to stderr and - generate "blank" output (although not zero-length). Please note - that a string including spaces or other special characters must be - properly quoted. - -`-e encoding' - encoding is the name of the chosen encoding format being used. It - defaults to the value of the environment variable BARCODE_ENCODING - or to auto detection if the environment is also unset. - -`-g geometry' - The geometry argument is of the form "[ x ] [+ - + ]" (with no intervening spaces). Unspecified - margin values will result in no margin; unspecified size results - in default size. The specified values represent print points by - default, and can be inches, millimeters or other units according - to the -u option or the BARCODE_UNIT environment variable. The - argument is used to place the printout code on the page. Note that - an additional white margin of 10 points is added to the printout. - If the option is unspecified, BARCODE_GEOMETRY is looked up in the - environment, if missing a default size and no margin (but the - default 10 points) are used. - -`-t table-geometry' - Used to print several barcodes to a single page, this option is - meant to be used to print stickers. The argument is of the form - " x [+ + [- - [- ]]]" (with no intervening spaces); if - missing, the top and right margin will default to be the same as - the bottom and left margin. The margins are specified in print - points or in the chosen unit (see -u below). If the option is not - specified, BARCODE_TABLE is looked up in the environment, - otherwise no table is printed and each barcode will get its own - page. The size (but not the position) of a barcode item within a - table can also be selected using -g (see "geometry" above), - without struggling with external and internal margins. I still - think management of geometries in a table is suboptimal, but I - can't make it better without introducing incompatibilities. - -`-m margin(s)' - Specifies an internal margin for each sticker in the table. The - argument is of the form "," and the margin is - applied symmetrically to the sticker. If unspecified, the - environment variable BARCODE_MARGIN is used or a default internal - margin of 10 points is used. - -`-n' - "Numeric" output: don't print the ASCII form of the code, only the - bars. - -`-c' - No checksum character (for encodings that allow it, like code 39, - other codes, like UPC or EAN, ignore this option). - -`-E' - Encapsulated postscript (default is normal postscript). When the - output is generated as EPS only one barcode is encoded. - -`-P' - PCL output. Please note that the Y direction goes from top to - bottom for PCL, and the origin for an image is the top-left corner - instead of the bottom-left - -`-p pagesize' - Specify a non-default page size. The page size can be specified in - millimeters, inches or plain numbers (for example: "210x297mm", - "8.5x11in", "595x842"). A page specification as numbers will be - interpreted according to the current unit specification (see -u - below). If libpaper is available, you can also specify the page - size with its name, like "A3" or "letter" (libpaper is a standard - component of Debian GNU/Linux, but may be missing elsewhere). The - default page size is your system-wide default if libpaper is - there, A4 otherwise. - -`-u unit' - Choose the unit used in size specifications. Accepted values are - "mm", "cm", "in" and "pt". By default, the program will check - BARCODE_UNIT in the environment, and assume points otherwise (this - behaviour is compatible with 0.92 and previous versions. If -u - appears more than once, each instance will modified the behaviour - for the arguments at its right, as the command line is processes - left to right. The program internally works with points, and any - size is approximated to the nearest multiple of one point. The -u - option affect -g (geometry), -t (table) and -p (page size). - - - - -*Node: Supported Encodings - Supported Encodings - ******************* - - The program encodes text strings passed either on the command line -(with -b) or retrieved from standard input. The text representation is -interpreted according to the following rules. When auto-detection of -the encoding is enabled (i.e, no explicit encoding type is specified), -the encoding types are scanned to find one that can digest the text -string. The following list of supported types is sorted in the same -order the library uses when auto-detecting a suitable encoding for a -string. - -EAN - The EAN frontend is similar to UPC; it accepts strings of digits, - 12 or 7 characters long. Strings of 13 or 8 characters are - accepted if the provided checksum digit is correct. I expect most - users to feed input without a checksum, though. The add-2 and - add-5 extension are accepted for both the EAN-13 and the EAN-8 - encodings. The following are example of valid input strings: - "123456789012" (EAN-13), "1234567890128" (EAN-13 wih checksum), - "1234567" (EAN-8), "12345670 12345" (EAN-8 with checksum and - add-5), "123456789012 12" (EAN-13 with add-2), "123456789012 - 12345" (EAN-13 with add-5). - -UPC - The UPC frontend accepts only strings made up of digits (and, if a - supplemental encoding is used, a blank to separate it). It - accepts strings of 11 or 12 digits (UPC-A) and 6 or 7 or 8 digits - (UPC-E). - - The 12th digit of UPC-A is the checksum and is added by the - library if not specified in the input; if it is specified, it must - be the right checksum or the code is rejected as invalid. For - UPC-E, 6 digit are considered to be the middle part of the code, a - leading 0 is assumed and the checksum is added; 7 digits are - either considered the initial part (leading digit 0 or 1, checksum - missing) or the final part (checksum specified, leading 0 - assumed); 8 digits are considered to be the complete code, with - leading 0 or 1 and checksum. For both UPC-A and UPC-E, a trailing - string of 2 digits or 5 digits is accepted as well. Therefore, the - following are examples of valid strings that can be encoded as UPC: - "01234567890" (UPC-A) "012345678905" (UPC-A with checksum), - "012345" (UPC-E), "01234567890 12" (UPC-A, add-2) and "01234567890 - 12345" (UPC-A, add-5), "0123456 12" (UPC-E, add-2). Please note - that when setting BARCODE_ANY to auto-detect the encoding to be - used, 12-digit strings and 7-digit strings will always be - identified as EAN. This because I expect most user to provide - input without a checksum. If you need to specify UPC-with-checksum - as input you must explicitly set BARCODE_UPC as a flag or use -e - upc on the command line. - -ISBN - ISBN numbers are encoded as EAN-13 symbols, with an optional add-5 - trailer. The ISBN frontend of the library accepts real ISBN - numbers and deals with any hyphen and, if present, the ISBN - checksum character before encoding data. Valid representations for - ISBN strings are for example: "1-56592-292-1", "3-89721-122-X" and - "3-89721-122-X 06900". - -CODE 128-B - This encoding can represent all of the printing ASCII characters, - from the space (32) to DEL (127). The checksum digit is mandatory - in this encoding. - -CODE 128-C - The "C" variation of Code-128 uses Code-128 symbols to represent - two digits at a time (Code-128 is made up of 104 symbols whose - interpretation is controlled by the start symbol being used). Code - 128-C is thus the most compact way to represent any even number of - digits. The encoder refuses to deal with an odd number of digits - because the caller is expected to provide proper padding to an - even number of digits. (Since Code-128 includes control symbols to - switch charset, it is theoretically possible to represent the odd - digit as a Code 128-A or 128-B symbol, but this tool doesn't - currently implement this option). - -CODE 128 RAW - Code-128 output represented symbol-by-symbol in the input string. - To override part of the problems outlined below in specifying - code128 symbols, this pseudo-encoding allows the used to specify a - list of code128 symbols separated by spaces. Each symbol is - represented by a number in the range 0-105. The list should - include the leading character.The checksum and the stop character - are automatically added by the library. Most likely this - pseudo-encoding will be used with BARCODE_NO_ASCII and some - external program to supply the printed text. - -CODE 39 - The code-39 standard can encode uppercase letters, digits, the - blank space, plus, minus, dot, star, dollar, slash, percent. Any - string that is only composed of such characters is accepted by the - code-39 encoder. To avoid loosing information, the encoder refuses - to encode mixed-case strings (a lowercase string is nonetheless - accepted as a shortcut, but is encoded as uppercase). - -INTERLEAVED 2 OF 5 - This encoding can only represent an even number of digits (odd - digits are represented by bars, and even digits by the - interleaving spaces). The name stresses the fact that two of the - five items (bars or spaces) allocated to each symbol are wide, - while the rest are narrow. The checksum digit is optional (can be - disabled via BARCODE_NO_CHECKSUM). Since the number of digits, - including the checksum, must be even, a leading zero is inserted - in the string being encoded if needed (this is specifically stated - in the specs I have access to). - -CODE 128 - Automatic selection between alphabet A, B and C of the Code-128 - standard. This encoding can represent all ASCII symbols, from 0 - (NUL) to 127 (DEL), as well as four special symbols, named F1, F2, - F3, F4. The set of symbols available in this encoding is not - easily represented as input to the barcode library, so the - following convention is used. In the input string, which is a - C-language null-terminated string, the NUL char is represented by - the value 128 (0x80, 0200) and the F1-F4 characters are - represented by the values 193-196 (0xc1-0xc4, 0301-0304). The - values have been chosen to ease their representation as escape - sequences. - - Since the shell doesn't seem to interpret escape sequences on the - command line, the "-b" option cannot be easily used to designate - the strings to be encoded. As a workaround you can resort to the - command echo, either within back-ticks or used separately to - create a file that is then fed to the standard-input of barcode - - assuming your echo command processes escape sequences. The - newline character is especially though to encode (but not - impossible unless you use a csh variant. - - These problems only apply to the command-line tool; the use of - library functions doesn't give any problem. In needed, you can use - the "code 128 raw" pseudo-encoding to represent code128 symbols by - their numerical value. This encoding is used late in the - auto-selection mechanism because (almost) any input string can be - represented using code128. - -CODABAR - Codabar can encode the ten digits and a few special symbols - (minus, plus, dollar, colon, bar, dot). The characters "A", "B", - "C" and "D" are used to represent four different start/stop - characters. The input string to the barcode library can include - the start and stop characters or not include them (in which case - "A" is used as start and "B" as stop). Start and stop characters - in the input string can be either all lowercase or all uppercase - and are always printed as uppercase. - -PLESSEY - Plessey barcodes can encode all the hexadecimal digits. Alphabetic - digits in the input string must either be all lowercase or all - uppercase. The output text is always uppercase. - -MSI - MSI can only encode the decimal digits. While the standard - specifies either one or two check digits, the current - implementation in this library only generates one check digit. - -CODE 93 - The code-93 standard can natively encode 48 different characters, - including uppercase letters, digits, the blank space, plus, minus, - dot, star, dollar, slash, percent, as well as five special - characters: a start/stop delimiter and four "shift characters" - used for extended encoding. Using this "extended encoding" - method, any standard 7-bit ASCII character can be encoded, but it - takes up two symbol lengths in barcode if the character is not - natively supported (one of the 48). The encoder here fully - implements the code 93 encoding standard. Any characters natively - supported (A-Z, 0-9, ".+-/$&%") will be encoded as such - for any - other characters (such as lower case letters, brackets, - parentheses, etc.), the encoder will revert to extended encoding. - As a note, the option to exclude the checksum will eliminate the - two modulo-47 checksums (called C and K) from the barcode, but this - probably will make it unreadable by 99% of all scanning systems. - These checksums are specified to be used at the firmware level, - and their absence will be interpreted as an invalid barcode. - - - - -*Node: PCL Output - PCL Output - ********** - - While the default output is Postscript (possibly EPS), and Postscript -can be post-processed to almost anything, it is sometimes desirable to -create output directly usable by the specific printer at hand. PCL is -currently supported as an output format for this reason. Please note -that the Y coordinate for PCL goes from top to bottom, while for -Postscript it goes from bottom to top. Consistently, while in -Postscript you specify the bottom-left corner as origin, for PCL you -specify the top-left corner. - - Barcode output for PCL Printers (HP LaserJet and compatibles), was -developed using PCL5 Reference manuals from HP. that really refers to -these printers: - * LaserJet III, III P, III D, III Si, - - * LaserJet 4 family - - * LaserJet 5 family - - * LaserJet 6 family - - * Color LaserJet - - * DeskJet 1200 and 1600. - - - However, barcode printing uses a very small subset of PCL, probably -also LaserJet II should print it without problem, but the resulting -text may be horrible. - - The only real difference from one printer to another really depends -on which font are available in the printer, used in printing the label -associated to the bars (if requested). - - Earlier LaserJet supports only bitmaps fonts, so these are not -"scalable". (Ljet II ?), Also these fonts, when available, have a -specified direction, and not all of them are available in both Portrait -and Landscape mode. - - From LaserJet 4 series, (except 4L/5L that are entry-level printers), -Arial scalable font should be available, so it's the "default font" -used by this program. - - LaserJet III series printers (and 4L, 5L), don't feature "Arial" as a -resident font, so you should use BARCODE_OUT_PCL_III instead of -BARCODE_OUT_PCL., and font the font used will be "Univers" instead of -"Arial". - - Results on compatible printers, may depend on consistency of PCL5 -compatibility, in doubt, try BARCODE_OUT_PCL_III - - PJL commands are not used here, as it's not very compatible. - - Tested Printers: - * Hp LaserJet 4050 - - * Hp LaserJet 2100 - - * Epson N-1200 emul PCL - - * Toshiba DP2570 (copier) + PCL option - - * Epson EPL-7100 emul. HP LaserJet II: bars print fine but text is - bad. - - - - -*Node: Bugs and Pending Issues - Bugs and Pending Issues. - ************************ - - The current management of borders/margins is far from optimal. The -"default" margin applied by the library interferes with the external -representation, but I feel it is mandatory to avoid creating barcode -output with no surrounding white space (the problem is especially -relevant for EPS output). - - EAN-128 is not (yet) supported. I plan to implement it pretty soon -and then bless the package as version 1.0. - - - - - -Tag Table:Node: Top153 - Node: Overview525 - Node: The Barcode Object1403 -Node: The Field List2820 -Node: The Intermediate Representation6585 -Node: Supported Flags8358 -Node: The API11342 -Node: The barcode Executable14028 -Node: The Command Line14457 -Node: Supported Encodings19556 -Node: PCL Output28996 -Node: Bugs and Pending Issues31315 - - - -End Tag Table \ No newline at end of file diff --git a/glabels1/config.h.in b/glabels1/config.h.in deleted file mode 100644 index 939f7192..00000000 --- a/glabels1/config.h.in +++ /dev/null @@ -1,143 +0,0 @@ -/* config.h.in. Generated automatically from configure.in by autoheader. */ - -/* Define if using alloca.c. */ -#undef C_ALLOCA - -/* Define to empty if the keyword does not work. */ -#undef const - -/* 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 if you have alloca, as a function or macro. */ -#undef HAVE_ALLOCA - -/* Define if you have and it should be used (not on Ultrix). */ -#undef HAVE_ALLOCA_H - -/* Define if you have a working `mmap' system call. */ -#undef HAVE_MMAP - -/* Define as __inline if that's what the C compiler calls it. */ -#undef inline - -/* Define to `long' if doesn't define. */ -#undef off_t - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* 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 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -#undef ENABLE_NLS -#undef HAVE_CATGETS -#undef HAVE_GETTEXT -#undef HAVE_LC_MESSAGES -#undef HAVE_STPCPY -#undef HAVE_LIBSM -#undef PACKAGE_LOCALE_DIR -#undef PACKAGE_DATA_DIR -#undef PACKAGE_SOURCE_DIR -#undef HACKTEXT - -/* Define if you have the __argz_count function. */ -#undef HAVE___ARGZ_COUNT - -/* Define if you have the __argz_next function. */ -#undef HAVE___ARGZ_NEXT - -/* Define if you have the __argz_stringify function. */ -#undef HAVE___ARGZ_STRINGIFY - -/* Define if you have the dcgettext function. */ -#undef HAVE_DCGETTEXT - -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD - -/* Define if you have the getpagesize function. */ -#undef HAVE_GETPAGESIZE - -/* Define if you have the munmap function. */ -#undef HAVE_MUNMAP - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setlocale function. */ -#undef HAVE_SETLOCALE - -/* Define if you have the stpcpy function. */ -#undef HAVE_STPCPY - -/* Define if you have the strcasecmp function. */ -#undef HAVE_STRCASECMP - -/* Define if you have the strchr function. */ -#undef HAVE_STRCHR - -/* Define if you have the strdup function. */ -#undef HAVE_STRDUP - -/* Define if you have the header file. */ -#undef HAVE_X11_SM_SMLIB_H - -/* Define if you have the header file. */ -#undef HAVE_ARGZ_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_LOCALE_H - -/* Define if you have the header file. */ -#undef HAVE_MALLOC_H - -/* Define if you have the header file. */ -#undef HAVE_NL_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define if you have the header file. */ -#undef HAVE_STRING_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_PARAM_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define if you have the i library (-li). */ -#undef HAVE_LIBI - -/* Name of package */ -#undef PACKAGE - -/* Version number of package */ -#undef VERSION - -/* Define if your file defines LC_MESSAGES. */ -#undef HAVE_LC_MESSAGES - diff --git a/glabels1/configure.in b/glabels1/configure.in deleted file mode 100644 index 6d1207f6..00000000 --- a/glabels1/configure.in +++ /dev/null @@ -1,150 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - -AC_INIT(src/glabels.c) -AM_INIT_AUTOMAKE(glabels, 0.4.6) -AM_CONFIG_HEADER(config.h) - -dnl Pick up the Gnome macros. -AM_MAINTAINER_MODE -AM_ACLOCAL_INCLUDE(macros) - -GNOME_INIT -AC_ISC_POSIX -AC_PROG_CC -AM_PROG_CC_STDC -AC_HEADER_STDC - -GNOME_COMPILE_WARNINGS -GNOME_X_CHECKS - - - -dnl ******************************************************************* -dnl * Check for required package and version (borrowed from Evolution) -dnl ******************************************************************* -AC_DEFUN(GLABELS_CHECK_LIB, [ - dispname="$1" - dispvers="$2" - pkgname="$3" - - AC_MSG_CHECKING(for $dispname >= $dispvers) - cmpvers=`echo $dispvers | awk -F. '{ print $[]1 * 1000000 + $[]2 * 10000 + $[]3 * 100 + $[]4;}'` - if gnome-config --libs $pkgname > /dev/null 2>&1; then - pkgvers=`gnome-config --modversion $pkgname | sed -e 's/^[[^0-9]]*//'` - else - pkgvers=not - fi - AC_MSG_RESULT($pkgvers found) - - pkgvers=`echo $pkgvers | awk -F. '{ print $[]1 * 1000000 + $[]2 * 10000 + $[]3 * 100 + $[]4;}'` - if test "$pkgvers" -lt $cmpvers; then - AC_MSG_ERROR([ -"" -"You need $dispname $dispvers or later to build gLabels" -"If you think you already have this installed, consult the README."]) - fi -]) - -dnl **************************************** -dnl * LIBXML -dnl **************************************** -GLABELS_CHECK_LIB(LIBXML, 1.8.11, xml) -GNOME_XML_CFLAGS=`gnome-config --cflags xml` -GNOME_XML_LIBS=`gnome-config --libs xml` -AC_SUBST(GNOME_XML_CFLAGS) -AC_SUBST(GNOME_XML_LIBS) - -dnl **************************************** -dnl * GNOME-PRINT -dnl **************************************** -GLABELS_CHECK_LIB(GNOME-PRINT, 0.25, print) -GNOME_PRINT_CFLAGS=`gnome-config --cflags print` -GNOME_PRINT_LIBS=`gnome-config --libs print` -AC_SUBST(GNOME_PRINT_CFLAGS) -AC_SUBST(GNOME_PRINT_LIBS) - -dnl **************************************** -dnl * GDK-PIXBUF -dnl **************************************** -GLABELS_CHECK_LIB(GDK-PIXBUF, 0.11.0, gdk_pixbuf) -GDK_PIXBUF_CFLAGS=`gnome-config --cflags gdk_pixbuf` -GDK_PIXBUF_LIBS=`gnome-config --libs gdk_pixbuf` -AC_SUBST(GDK_PIXBUF_CFLAGS) -AC_SUBST(GDK_PIXBUF_LIBS) - -dnl **************************************** -dnl * GNOME-CANVAS-PIXBUF -dnl **************************************** -GLABELS_CHECK_LIB(GNOME-CANVAS-PIXBUF, 0.11.0, gnomecanvaspixbuf) -GNOME_CANVAS_PIXBUF_CFLAGS=`gnome-config --cflags gnomecanvaspixbuf` -GNOME_CANVAS_PIXBUF_LIBS=`gnome-config --libs gnomecanvaspixbuf` -AC_SUBST(GNOME_CANVAS_PIXBUF_CFLAGS) -AC_SUBST(GNOME_CANVAS_PIXBUF_LIBS) - - -dnl **************************************** -dnl * Supported languages -dnl **************************************** -dnl Add the languages which your application supports here. -ALL_LINGUAS="fr de ja pt_BR es ru zh_TW.Big5 pl" -AM_GNOME_GETTEXT - -dnl **************************************** -dnl * Set PACKAGE_LOCALE_DIR in config.h. -dnl **************************************** -if test "x${prefix}" = "xNONE"; then - AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${ac_default_prefix}/${DATADIRNAME}/locale") - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${ac_default_prefix}/${DATADIRNAME}") -else - AC_DEFINE_UNQUOTED(PACKAGE_LOCALE_DIR, "${prefix}/${DATADIRNAME}/locale") - AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${prefix}/${DATADIRNAME}") -fi - - -dnl **************************************** -dnl * Configure barcode library -dnl **************************************** -AC_CONFIG_SUBDIRS(barcode-0.98) - - - -dnl **************************************** -dnl * Disable use of hacktext canvas item -dnl **************************************** -AC_ARG_ENABLE(hacktext, -[--disable-hacktext don't use hacktext canvas item for AA text], -enable_hacktext=$enableval, -enable_hacktext=yes) -if test "x$enable_hacktext" = "xyes"; then - AC_DEFINE(HACKTEXT) -fi - - - -dnl **************************************** -dnl * Makefiles -dnl **************************************** -AC_OUTPUT([ m4/Makefile -Makefile -macros/Makefile -src/Makefile -src/pixmaps/Makefile -intl/Makefile -po/Makefile.in -doc/Makefile -doc/C/Makefile -glabels.spec -]) - - - -dnl **************************************** -dnl Print configuration summary -dnl **************************************** -echo " - -Configuration: - - Source code location: ${srcdir} - Compiler: ${CC} -" diff --git a/glabels1/data/predefined-labels.template b/glabels1/data/predefined-labels.template deleted file mode 100644 index 52c5e09d..00000000 --- a/glabels1/data/predefined-labels.template +++ /dev/null @@ -1,830 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/glabels1/doc/C/Makefile.am b/glabels1/doc/C/Makefile.am deleted file mode 100644 index 51f464a5..00000000 --- a/glabels1/doc/C/Makefile.am +++ /dev/null @@ -1,55 +0,0 @@ -glabels_helpdir = $(datadir)/gnome/help/glabels/C - -glabels_help_DATA = \ - index.html \ - topic.dat - -SGML_FILES = \ - glabels.sgml - -EXTRA_DIST = \ - topic.dat \ - $(SGML_FILES) - -all: index.html - -index.html: glabels/index.html - -cp glabels/index.html . - -glabels/index.html: $(SGML_FILES) - -db2html glabels.sgml - -cp -rp images glabels/images - -dist-hook: index.html - -mkdir $(distdir)/glabels - -mkdir $(distdir)/glabels/stylesheet-images - -mkdir $(distdir)/glabels/images - -cp glabels/*.html $(distdir)/glabels - -cp glabels/*.css $(distdir)/glabels - -cp glabels/stylesheet-images/*.gif $(distdir)/glabels/stylesheet-images - -cp glabels/images/*.jpg $(distdir)/glabels/images - -mkdir $(distdir)/images - -cp images/*.jpg $(distdir)/images - -install-data-local: index.html - -$(mkinstalldirs) $(DESTDIR)$(glabels_helpdir)/images - -$(mkinstalldirs) $(DESTDIR)$(glabels_helpdir)/stylesheet-images - -for file in $(srcdir)/glabels/*.html $(srcdir)/glabels/*.css; do \ - basefile=`echo $$file | sed -e 's,^.*/,,'`; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(glabels_helpdir)/$$basefile; \ - done - -for file in $(srcdir)/glabels/images/*.jpg; do \ - basefile=`echo $$file | sed -e 's,^.*/,,'`; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(glabels_helpdir)/images/$$basefile; \ - done - -for file in $(srcdir)/glabels/stylesheet-images/*.gif; do \ - basefile=`echo $$file | sed -e 's,^.*/,,'`; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(glabels_helpdir)/stylesheet-images/$$basefile; \ - done - -glabels.ps: glabels.sgml - -db2ps $< - -glabels.rtf: glabels.sgml - -db2rtf $< - diff --git a/glabels1/doc/C/Makefile.in b/glabels1/doc/C/Makefile.in deleted file mode 100644 index 0a63d133..00000000 --- a/glabels1/doc/C/Makefile.in +++ /dev/null @@ -1,304 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = ../.. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ -GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@ -GNOMEUI_LIBS = @GNOMEUI_LIBS@ -GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@ -GNOME_CANVAS_PIXBUF_CFLAGS = @GNOME_CANVAS_PIXBUF_CFLAGS@ -GNOME_CANVAS_PIXBUF_LIBS = @GNOME_CANVAS_PIXBUF_LIBS@ -GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@ -GNOME_CONFIG = @GNOME_CONFIG@ -GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@ -GNOME_LIBDIR = @GNOME_LIBDIR@ -GNOME_LIBS = @GNOME_LIBS@ -GNOME_PRINT_CFLAGS = @GNOME_PRINT_CFLAGS@ -GNOME_PRINT_LIBS = @GNOME_PRINT_LIBS@ -GNOME_XML_CFLAGS = @GNOME_XML_CFLAGS@ -GNOME_XML_LIBS = @GNOME_XML_LIBS@ -GNORBA_CFLAGS = @GNORBA_CFLAGS@ -GNORBA_LIBS = @GNORBA_LIBS@ -GTKXMHTML_LIBS = @GTKXMHTML_LIBS@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -ORBIT_CFLAGS = @ORBIT_CFLAGS@ -ORBIT_CONFIG = @ORBIT_CONFIG@ -ORBIT_IDL = @ORBIT_IDL@ -ORBIT_LIBS = @ORBIT_LIBS@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PTHREAD_LIB = @PTHREAD_LIB@ -RANLIB = @RANLIB@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XPM_LIBS = @XPM_LIBS@ -ZVT_LIBS = @ZVT_LIBS@ -cflags_set = @cflags_set@ -cxxflags_set = @cxxflags_set@ -l = @l@ - -glabels_helpdir = $(datadir)/gnome/help/glabels/C - -glabels_help_DATA = \ - index.html \ - topic.dat - - -SGML_FILES = \ - glabels.sgml - - -EXTRA_DIST = \ - topic.dat \ - $(SGML_FILES) - -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../../config.h -CONFIG_CLEAN_FILES = -DATA = $(glabels_help_DATA) - -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/C/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -install-glabels_helpDATA: $(glabels_help_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(glabels_helpdir) - @list='$(glabels_help_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(glabels_helpdir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(glabels_helpdir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(glabels_helpdir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(glabels_helpdir)/$$p; \ - fi; fi; \ - done - -uninstall-glabels_helpDATA: - @$(NORMAL_UNINSTALL) - list='$(glabels_help_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(glabels_helpdir)/$$p; \ - done -tags: TAGS -TAGS: - - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = doc/C - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu doc/C/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - $(MAKE) $(AM_MAKEFLAGS) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-hook -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: install-glabels_helpDATA install-data-local -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-glabels_helpDATA -uninstall: uninstall-am -all-am: Makefile $(DATA) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(glabels_helpdir) - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-generic clean-am - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: uninstall-glabels_helpDATA install-glabels_helpDATA tags distdir \ -info-am info dvi-am dvi check check-am installcheck-am installcheck \ -install-exec-am install-exec install-data-local install-data-am \ -install-data install-am install uninstall-am uninstall all-redirect \ -all-am all installdirs mostlyclean-generic distclean-generic \ -clean-generic maintainer-clean-generic clean mostlyclean distclean \ -maintainer-clean - - -all: index.html - -index.html: glabels/index.html - -cp glabels/index.html . - -glabels/index.html: $(SGML_FILES) - -db2html glabels.sgml - -cp -rp images glabels/images - -dist-hook: index.html - -mkdir $(distdir)/glabels - -mkdir $(distdir)/glabels/stylesheet-images - -mkdir $(distdir)/glabels/images - -cp glabels/*.html $(distdir)/glabels - -cp glabels/*.css $(distdir)/glabels - -cp glabels/stylesheet-images/*.gif $(distdir)/glabels/stylesheet-images - -cp glabels/images/*.jpg $(distdir)/glabels/images - -mkdir $(distdir)/images - -cp images/*.jpg $(distdir)/images - -install-data-local: index.html - -$(mkinstalldirs) $(DESTDIR)$(glabels_helpdir)/images - -$(mkinstalldirs) $(DESTDIR)$(glabels_helpdir)/stylesheet-images - -for file in $(srcdir)/glabels/*.html $(srcdir)/glabels/*.css; do \ - basefile=`echo $$file | sed -e 's,^.*/,,'`; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(glabels_helpdir)/$$basefile; \ - done - -for file in $(srcdir)/glabels/images/*.jpg; do \ - basefile=`echo $$file | sed -e 's,^.*/,,'`; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(glabels_helpdir)/images/$$basefile; \ - done - -for file in $(srcdir)/glabels/stylesheet-images/*.gif; do \ - basefile=`echo $$file | sed -e 's,^.*/,,'`; \ - $(INSTALL_DATA) $$file $(DESTDIR)$(glabels_helpdir)/stylesheet-images/$$basefile; \ - done - -glabels.ps: glabels.sgml - -db2ps $< - -glabels.rtf: glabels.sgml - -db2rtf $< - -# 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: diff --git a/glabels1/doc/C/glabels.sgml b/glabels1/doc/C/glabels.sgml deleted file mode 100644 index 2104f270..00000000 --- a/glabels1/doc/C/glabels.sgml +++ /dev/null @@ -1,73 +0,0 @@ -]> - - - - -

- - - gLabels Manual - 2001Jim Evins - - - - - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation - License, Version 1.1 or any later version published - by the Free Software Foundation with no Invariant Sections, no - Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy - of the GNU Free Documentation License from - the Free Software Foundation by visiting their Web site or by writing to: - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. - - - Many of the names used by companies to distinguish their products and - services are claimed as trademarks. Where those names appear in any - GNOME documentation, and those trademarks are made aware to the members - of the GNOME Documentation Project, the names have been printed in caps - or initial caps. - - - - - - This is version &version; of the gLabels manual. - - - - - - - - - - - - Introduction - -See the README file. - - - - - - -
- - - - - - - - - diff --git a/glabels1/doc/C/glabels/index.html b/glabels1/doc/C/glabels/index.html deleted file mode 100644 index 8f975ccd..00000000 --- a/glabels1/doc/C/glabels/index.html +++ /dev/null @@ -1,64 +0,0 @@ - -gLabels Manual
\ No newline at end of file diff --git a/glabels1/doc/C/glabels/ln7.html b/glabels1/doc/C/glabels/ln7.html deleted file mode 100644 index a0dd927f..00000000 --- a/glabels1/doc/C/glabels/ln7.html +++ /dev/null @@ -1,128 +0,0 @@ - -
gLabels Manual

Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation - License, Version 1.1 or any later version published - by the Free Software Foundation with no Invariant Sections, no - Front-Cover Texts, and no Back-Cover Texts. You may obtain a copy - of the GNU Free Documentation License from - the Free Software Foundation by visiting their Web site or by writing to: - Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. -

Many of the names used by companies to distinguish their products and - services are claimed as trademarks. Where those names appear in any - GNOME documentation, and those trademarks are made aware to the members - of the GNOME Documentation Project, the names have been printed in caps - or initial caps. -


 Home 
 Up 
\ No newline at end of file diff --git a/glabels1/doc/C/topic.dat b/glabels1/doc/C/topic.dat deleted file mode 100644 index 368844b6..00000000 --- a/glabels1/doc/C/topic.dat +++ /dev/null @@ -1 +0,0 @@ -index.html gLabels Manual diff --git a/glabels1/doc/Makefile.am b/glabels1/doc/Makefile.am deleted file mode 100644 index a68e4e50..00000000 --- a/glabels1/doc/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -## Process this file with automake to produce Makefile.in. - -SUBDIRS = C diff --git a/glabels1/doc/Makefile.in b/glabels1/doc/Makefile.in deleted file mode 100644 index 255f675c..00000000 --- a/glabels1/doc/Makefile.in +++ /dev/null @@ -1,328 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ -GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@ -GNOMEUI_LIBS = @GNOMEUI_LIBS@ -GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@ -GNOME_CANVAS_PIXBUF_CFLAGS = @GNOME_CANVAS_PIXBUF_CFLAGS@ -GNOME_CANVAS_PIXBUF_LIBS = @GNOME_CANVAS_PIXBUF_LIBS@ -GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@ -GNOME_CONFIG = @GNOME_CONFIG@ -GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@ -GNOME_LIBDIR = @GNOME_LIBDIR@ -GNOME_LIBS = @GNOME_LIBS@ -GNOME_PRINT_CFLAGS = @GNOME_PRINT_CFLAGS@ -GNOME_PRINT_LIBS = @GNOME_PRINT_LIBS@ -GNOME_XML_CFLAGS = @GNOME_XML_CFLAGS@ -GNOME_XML_LIBS = @GNOME_XML_LIBS@ -GNORBA_CFLAGS = @GNORBA_CFLAGS@ -GNORBA_LIBS = @GNORBA_LIBS@ -GTKXMHTML_LIBS = @GTKXMHTML_LIBS@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -ORBIT_CFLAGS = @ORBIT_CFLAGS@ -ORBIT_CONFIG = @ORBIT_CONFIG@ -ORBIT_IDL = @ORBIT_IDL@ -ORBIT_LIBS = @ORBIT_LIBS@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PTHREAD_LIB = @PTHREAD_LIB@ -RANLIB = @RANLIB@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XPM_LIBS = @XPM_LIBS@ -ZVT_LIBS = @ZVT_LIBS@ -cflags_set = @cflags_set@ -cxxflags_set = @cxxflags_set@ -l = @l@ - -SUBDIRS = C -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -# 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. - -@SET_MAKE@ - -all-recursive install-data-recursive install-exec-recursive \ -installdirs-recursive install-recursive uninstall-recursive \ -check-recursive installcheck-recursive info-recursive dvi-recursive: - @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; \ - rev=''; list='$(SUBDIRS)'; for subdir in $$list; do \ - rev="$$subdir $$rev"; \ - test "$$subdir" != "." || dot_seen=yes; \ - done; \ - test "$$dot_seen" = "no" && 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 - -tags: TAGS - -ID: $(HEADERS) $(SOURCES) $(LISP) - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - here=`pwd` && cd $(srcdir) \ - && mkid -f$$here/ID $$unique $(LISP) - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP) - tags=; \ - here=`pwd`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test -f $$subdir/TAGS && tags="$$tags -i $$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS)'; \ - unique=`for i in $$list; do echo $$i; done | \ - awk ' { files[$$0] = 1; } \ - END { for (i in files) print i; }'`; \ - test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \ - || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS) - -mostlyclean-tags: - -clean-tags: - -distclean-tags: - -rm -f TAGS ID - -maintainer-clean-tags: - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = doc - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu doc/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done - for subdir in $(SUBDIRS); do \ - if test "$$subdir" = .; then :; else \ - test -d $(distdir)/$$subdir \ - || mkdir $(distdir)/$$subdir \ - || exit 1; \ - chmod 777 $(distdir)/$$subdir; \ - (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir=../$(top_distdir) distdir=../$(distdir)/$$subdir distdir) \ - || exit 1; \ - fi; \ - done -info-am: -info: info-recursive -dvi-am: -dvi: dvi-recursive -check-am: all-am -check: check-recursive -installcheck-am: -installcheck: installcheck-recursive -install-exec-am: -install-exec: install-exec-recursive - -install-data-am: -install-data: install-data-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-recursive -uninstall-am: -uninstall: uninstall-recursive -all-am: Makefile -all-redirect: all-recursive -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: installdirs-recursive -installdirs-am: - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: -mostlyclean-am: mostlyclean-tags mostlyclean-generic - -mostlyclean: mostlyclean-recursive - -clean-am: clean-tags clean-generic mostlyclean-am - -clean: clean-recursive - -distclean-am: distclean-tags distclean-generic clean-am - -distclean: distclean-recursive - -maintainer-clean-am: maintainer-clean-tags maintainer-clean-generic \ - distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-recursive - -.PHONY: install-data-recursive uninstall-data-recursive \ -install-exec-recursive uninstall-exec-recursive installdirs-recursive \ -uninstalldirs-recursive all-recursive check-recursive \ -installcheck-recursive info-recursive dvi-recursive \ -mostlyclean-recursive distclean-recursive clean-recursive \ -maintainer-clean-recursive tags tags-recursive mostlyclean-tags \ -distclean-tags clean-tags maintainer-clean-tags distdir info-am info \ -dvi-am dvi check check-am installcheck-am installcheck install-exec-am \ -install-exec install-data-am install-data install-am install \ -uninstall-am uninstall all-redirect all-am all installdirs-am \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -# 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: diff --git a/glabels1/glabels.desktop b/glabels1/glabels.desktop deleted file mode 100644 index 0459cb15..00000000 --- a/glabels1/glabels.desktop +++ /dev/null @@ -1,9 +0,0 @@ -[Desktop Entry] -Name=gLabels -Name[ja]=gLabels -Comment=Create Labels & Business Cards -Comment[ja]=¥é¥Ù¥ë¤È¥Ó¥¸¥Í¥¹¥«¡¼¥É¤ÎºîÀ®¥×¥í¥°¥é¥à -Exec=glabels -Icon=glabels/glabels-icon.png -Terminal=0 -Type=Application diff --git a/glabels1/glabels.spec.in b/glabels1/glabels.spec.in deleted file mode 100644 index 419fed2c..00000000 --- a/glabels1/glabels.spec.in +++ /dev/null @@ -1,57 +0,0 @@ -%define name @PACKAGE@ -%define ver @VERSION@ -%define RELEASE 1 -%define rel %{?CUSTOM_RELEASE} %{!?CUSTOM_RELEASE:%RELEASE} -%define prefix /usr -%define sysconfdir /etc - -Summary: glabels is a GNOME program to create labels and business cards -Name: %name -Version: %ver -Release: %rel -Copyright: GPL -Group: Applications/Graphics -Source: glabels-%{ver}.tar.gz -URL: http://snaught.com/glabels/ -BuildRoot: /var/tmp/glabels-%{PACKAGE_VERSION}-root - -Requires: gtk+ >= 1.2 -Requires: gnome-libs >= 1.2.8 -Requires: gnome-print >= 0.25 -Requires: gdk-pixbuf >= 0.11.0 - -%description -gLabels is a lightweight program for creating labels and -business cards for the GNOME desktop environment. -It is designed to work with various laser/ink-jet peel-off -label and business card sheets that you'll find at most office -supply stores. - - -%prep -%setup - -%build -CFLAGS="$RPM_OPT_FLAGS" LDFLAGS="-s" ./configure --prefix=%{prefix} -make - -%install -rm -rf $RPM_BUILD_ROOT - -make prefix=$RPM_BUILD_ROOT%{prefix} install - -%clean -rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-, root, root) -%doc README COPYING ChangeLog NEWS AUTHORS INSTALL -%{prefix}/bin/glabels -%{prefix}/bin/glabels-batch -%{prefix}/share/* - - -%changelog -* Sat May 19 2001 Jim Evins -- Created - diff --git a/glabels1/install-sh b/glabels1/install-sh deleted file mode 100755 index e9de2384..00000000 --- a/glabels1/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/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 diff --git a/glabels1/intl/ChangeLog b/glabels1/intl/ChangeLog deleted file mode 100644 index 19895015..00000000 --- a/glabels1/intl/ChangeLog +++ /dev/null @@ -1,1086 +0,0 @@ -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-HåvardAksnes . - -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. diff --git a/glabels1/intl/Makefile.in b/glabels1/intl/Makefile.in deleted file mode 100644 index 4bdb186d..00000000 --- a/glabels1/intl/Makefile.in +++ /dev/null @@ -1,214 +0,0 @@ -# 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: diff --git a/glabels1/intl/VERSION b/glabels1/intl/VERSION deleted file mode 100644 index ee66b061..00000000 --- a/glabels1/intl/VERSION +++ /dev/null @@ -1 +0,0 @@ -GNU gettext library from gettext-0.10.35 diff --git a/glabels1/intl/bindtextdom.c b/glabels1/intl/bindtextdom.c deleted file mode 100644 index d9c3f349..00000000 --- a/glabels1/intl/bindtextdom.c +++ /dev/null @@ -1,203 +0,0 @@ -/* 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 diff --git a/glabels1/intl/cat-compat.c b/glabels1/intl/cat-compat.c deleted file mode 100644 index 867d901b..00000000 --- a/glabels1/intl/cat-compat.c +++ /dev/null @@ -1,262 +0,0 @@ -/* 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 diff --git a/glabels1/intl/dcgettext.c b/glabels1/intl/dcgettext.c deleted file mode 100644 index c4c7a2c7..00000000 --- a/glabels1/intl/dcgettext.c +++ /dev/null @@ -1,624 +0,0 @@ -/* 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 diff --git a/glabels1/intl/dgettext.c b/glabels1/intl/dgettext.c deleted file mode 100644 index 0510c2b0..00000000 --- a/glabels1/intl/dgettext.c +++ /dev/null @@ -1,59 +0,0 @@ -/* 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 diff --git a/glabels1/intl/explodename.c b/glabels1/intl/explodename.c deleted file mode 100644 index 8066dc29..00000000 --- a/glabels1/intl/explodename.c +++ /dev/null @@ -1,188 +0,0 @@ -/* 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; -} diff --git a/glabels1/intl/finddomain.c b/glabels1/intl/finddomain.c deleted file mode 100644 index 81ea29bf..00000000 --- a/glabels1/intl/finddomain.c +++ /dev/null @@ -1,216 +0,0 @@ -/* 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 diff --git a/glabels1/intl/gettext.c b/glabels1/intl/gettext.c deleted file mode 100644 index d929f98d..00000000 --- a/glabels1/intl/gettext.c +++ /dev/null @@ -1,70 +0,0 @@ -/* 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 diff --git a/glabels1/intl/gettext.h b/glabels1/intl/gettext.h deleted file mode 100644 index 3cd23d7d..00000000 --- a/glabels1/intl/gettext.h +++ /dev/null @@ -1,105 +0,0 @@ -/* 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 */ diff --git a/glabels1/intl/gettextP.h b/glabels1/intl/gettextP.h deleted file mode 100644 index 00c52031..00000000 --- a/glabels1/intl/gettextP.h +++ /dev/null @@ -1,89 +0,0 @@ -/* 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 */ diff --git a/glabels1/intl/hash-string.h b/glabels1/intl/hash-string.h deleted file mode 100644 index cacb38e4..00000000 --- a/glabels1/intl/hash-string.h +++ /dev/null @@ -1,59 +0,0 @@ -/* 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; -} diff --git a/glabels1/intl/intl-compat.c b/glabels1/intl/intl-compat.c deleted file mode 100644 index 503efa0f..00000000 --- a/glabels1/intl/intl-compat.c +++ /dev/null @@ -1,76 +0,0 @@ -/* 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); -} diff --git a/glabels1/intl/l10nflist.c b/glabels1/intl/l10nflist.c deleted file mode 100644 index 9c7dc183..00000000 --- a/glabels1/intl/l10nflist.c +++ /dev/null @@ -1,411 +0,0 @@ -/* 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 diff --git a/glabels1/intl/libgettext.h b/glabels1/intl/libgettext.h deleted file mode 100644 index 3a92960a..00000000 --- a/glabels1/intl/libgettext.h +++ /dev/null @@ -1,182 +0,0 @@ -/* 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 diff --git a/glabels1/intl/linux-msg.sed b/glabels1/intl/linux-msg.sed deleted file mode 100644 index 5918e720..00000000 --- a/glabels1/intl/linux-msg.sed +++ /dev/null @@ -1,100 +0,0 @@ -# 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 diff --git a/glabels1/intl/loadinfo.h b/glabels1/intl/loadinfo.h deleted file mode 100644 index f4ebf6d8..00000000 --- a/glabels1/intl/loadinfo.h +++ /dev/null @@ -1,76 +0,0 @@ -/* 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)); diff --git a/glabels1/intl/loadmsgcat.c b/glabels1/intl/loadmsgcat.c deleted file mode 100644 index 515892df..00000000 --- a/glabels1/intl/loadmsgcat.c +++ /dev/null @@ -1,222 +0,0 @@ -/* 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 diff --git a/glabels1/intl/localealias.c b/glabels1/intl/localealias.c deleted file mode 100644 index bca555a6..00000000 --- a/glabels1/intl/localealias.c +++ /dev/null @@ -1,424 +0,0 @@ -/* 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 -} diff --git a/glabels1/intl/po2tbl.sed.in b/glabels1/intl/po2tbl.sed.in deleted file mode 100644 index b3bcca4d..00000000 --- a/glabels1/intl/po2tbl.sed.in +++ /dev/null @@ -1,102 +0,0 @@ -# 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 diff --git a/glabels1/intl/textdomain.c b/glabels1/intl/textdomain.c deleted file mode 100644 index 88557460..00000000 --- a/glabels1/intl/textdomain.c +++ /dev/null @@ -1,108 +0,0 @@ -/* 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 diff --git a/glabels1/intl/xopen-msg.sed b/glabels1/intl/xopen-msg.sed deleted file mode 100644 index b19c0bbd..00000000 --- a/glabels1/intl/xopen-msg.sed +++ /dev/null @@ -1,104 +0,0 @@ -# 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 diff --git a/glabels1/macros/Makefile.am b/glabels1/macros/Makefile.am deleted file mode 100644 index e03dbeed..00000000 --- a/glabels1/macros/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ -## Please update this variable if any new macros are created -MACROS= \ - aclocal-include.m4 \ - compiler-flags.m4 \ - curses.m4 \ - gnome-bonobo-check.m4 \ - gnome-fileutils.m4 \ - gnome-gettext.m4 \ - gnome-ghttp-check.m4 \ - gnome-gnorba-check.m4 \ - gnome-guile-checks.m4 \ - gnome-libgtop-check.m4 \ - gnome-objc-checks.m4 \ - gnome-orbit-check.m4 \ - gnome-print-check.m4 \ - gnome-pthread-check.m4 \ - gnome-support.m4 \ - gnome-undelfs.m4 \ - gnome-vfs.m4 \ - gnome-x-checks.m4 \ - gnome-xml-check.m4 \ - gnome.m4 \ - linger.m4 \ - need-declaration.m4 - -EXTRA_DIST=$(MACROS) gnome-common.m4 autogen.sh -MAINTAINERCLEANFILES=macros.dep - -@MAINT@macros.dep: Makefile.am -@MAINT@ @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@ - -if INSIDE_GNOME_COMMON -gnome_aclocaldir = $(datadir)/aclocal/gnome - -gnome-macros.dep: Makefile.am - @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@ - -gnome_aclocal_DATA = $(MACROS) gnome-macros.dep gnome-common.m4 autogen.sh - -endif diff --git a/glabels1/macros/Makefile.in b/glabels1/macros/Makefile.in deleted file mode 100644 index f1d35e35..00000000 --- a/glabels1/macros/Makefile.in +++ /dev/null @@ -1,283 +0,0 @@ -# Makefile.in generated automatically by automake 1.4-p5 from Makefile.am - -# Copyright (C) 1994, 1995-8, 1999, 2001 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. - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -DESTDIR = - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -GDK_PIXBUF_CFLAGS = @GDK_PIXBUF_CFLAGS@ -GDK_PIXBUF_LIBS = @GDK_PIXBUF_LIBS@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GNOMEGNORBA_LIBS = @GNOMEGNORBA_LIBS@ -GNOMEUI_LIBS = @GNOMEUI_LIBS@ -GNOME_APPLETS_LIBS = @GNOME_APPLETS_LIBS@ -GNOME_CANVAS_PIXBUF_CFLAGS = @GNOME_CANVAS_PIXBUF_CFLAGS@ -GNOME_CANVAS_PIXBUF_LIBS = @GNOME_CANVAS_PIXBUF_LIBS@ -GNOME_CAPPLET_LIBS = @GNOME_CAPPLET_LIBS@ -GNOME_CONFIG = @GNOME_CONFIG@ -GNOME_INCLUDEDIR = @GNOME_INCLUDEDIR@ -GNOME_LIBDIR = @GNOME_LIBDIR@ -GNOME_LIBS = @GNOME_LIBS@ -GNOME_PRINT_CFLAGS = @GNOME_PRINT_CFLAGS@ -GNOME_PRINT_LIBS = @GNOME_PRINT_LIBS@ -GNOME_XML_CFLAGS = @GNOME_XML_CFLAGS@ -GNOME_XML_LIBS = @GNOME_XML_LIBS@ -GNORBA_CFLAGS = @GNORBA_CFLAGS@ -GNORBA_LIBS = @GNORBA_LIBS@ -GTKXMHTML_LIBS = @GTKXMHTML_LIBS@ -GTK_CFLAGS = @GTK_CFLAGS@ -GTK_CONFIG = @GTK_CONFIG@ -GTK_LIBS = @GTK_LIBS@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INCLUDE_LOCALE_H = @INCLUDE_LOCALE_H@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -ORBIT_CFLAGS = @ORBIT_CFLAGS@ -ORBIT_CONFIG = @ORBIT_CONFIG@ -ORBIT_IDL = @ORBIT_IDL@ -ORBIT_LIBS = @ORBIT_LIBS@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -PTHREAD_LIB = @PTHREAD_LIB@ -RANLIB = @RANLIB@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -XPM_LIBS = @XPM_LIBS@ -ZVT_LIBS = @ZVT_LIBS@ -cflags_set = @cflags_set@ -cxxflags_set = @cxxflags_set@ -l = @l@ - -MACROS = \ - aclocal-include.m4 \ - compiler-flags.m4 \ - curses.m4 \ - gnome-bonobo-check.m4 \ - gnome-fileutils.m4 \ - gnome-gettext.m4 \ - gnome-ghttp-check.m4 \ - gnome-gnorba-check.m4 \ - gnome-guile-checks.m4 \ - gnome-libgtop-check.m4 \ - gnome-objc-checks.m4 \ - gnome-orbit-check.m4 \ - gnome-print-check.m4 \ - gnome-pthread-check.m4 \ - gnome-support.m4 \ - gnome-undelfs.m4 \ - gnome-vfs.m4 \ - gnome-x-checks.m4 \ - gnome-xml-check.m4 \ - gnome.m4 \ - linger.m4 \ - need-declaration.m4 - - -EXTRA_DIST = $(MACROS) gnome-common.m4 autogen.sh -MAINTAINERCLEANFILES = macros.dep - -@INSIDE_GNOME_COMMON_TRUE@gnome_aclocaldir = @INSIDE_GNOME_COMMON_TRUE@$(datadir)/aclocal/gnome - -@INSIDE_GNOME_COMMON_TRUE@gnome_aclocal_DATA = @INSIDE_GNOME_COMMON_TRUE@$(MACROS) gnome-macros.dep gnome-common.m4 autogen.sh -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -DATA = $(gnome_aclocal_DATA) - -DIST_COMMON = Makefile.am Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = gtar -GZIP_ENV = --best -all: all-redirect -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --gnu macros/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES) - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - -install-gnome_aclocalDATA: $(gnome_aclocal_DATA) - @$(NORMAL_INSTALL) - $(mkinstalldirs) $(DESTDIR)$(gnome_aclocaldir) - @list='$(gnome_aclocal_DATA)'; for p in $$list; do \ - if test -f $(srcdir)/$$p; then \ - echo " $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \ - $(INSTALL_DATA) $(srcdir)/$$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \ - else if test -f $$p; then \ - echo " $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p"; \ - $(INSTALL_DATA) $$p $(DESTDIR)$(gnome_aclocaldir)/$$p; \ - fi; fi; \ - done - -uninstall-gnome_aclocalDATA: - @$(NORMAL_UNINSTALL) - list='$(gnome_aclocal_DATA)'; for p in $$list; do \ - rm -f $(DESTDIR)$(gnome_aclocaldir)/$$p; \ - done -tags: TAGS -TAGS: - - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = macros - -distdir: $(DISTFILES) - here=`cd $(top_builddir) && pwd`; \ - top_distdir=`cd $(top_distdir) && pwd`; \ - distdir=`cd $(distdir) && pwd`; \ - cd $(top_srcdir) \ - && $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu macros/Makefile - @for file in $(DISTFILES); do \ - d=$(srcdir); \ - if test -d $$d/$$file; then \ - cp -pr $$d/$$file $(distdir)/$$file; \ - else \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file || :; \ - fi; \ - done -info-am: -info: info-am -dvi-am: -dvi: dvi-am -check-am: all-am -check: check-am -installcheck-am: -installcheck: installcheck-am -install-exec-am: -install-exec: install-exec-am - -install-data-am: install-gnome_aclocalDATA -install-data: install-data-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -install: install-am -uninstall-am: uninstall-gnome_aclocalDATA -uninstall: uninstall-am -all-am: Makefile $(DATA) -all-redirect: all-am -install-strip: - $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install -installdirs: - $(mkinstalldirs) $(DESTDIR)$(gnome_aclocaldir) - - -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -rm -f Makefile $(CONFIG_CLEAN_FILES) - -rm -f config.cache config.log stamp-h stamp-h[0-9]* - -maintainer-clean-generic: - -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) -mostlyclean-am: mostlyclean-generic - -mostlyclean: mostlyclean-am - -clean-am: clean-generic mostlyclean-am - -clean: clean-am - -distclean-am: distclean-generic clean-am - -distclean: distclean-am - -maintainer-clean-am: maintainer-clean-generic distclean-am - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -maintainer-clean: maintainer-clean-am - -.PHONY: uninstall-gnome_aclocalDATA install-gnome_aclocalDATA tags \ -distdir info-am info dvi-am dvi check check-am installcheck-am \ -installcheck install-exec-am install-exec install-data-am install-data \ -install-am install uninstall-am uninstall all-redirect all-am all \ -installdirs mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -@MAINT@macros.dep: Makefile.am -@MAINT@ @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=macros/%)' > $@ - -@INSIDE_GNOME_COMMON_TRUE@gnome-macros.dep: Makefile.am -@INSIDE_GNOME_COMMON_TRUE@ @echo '$$(top_srcdir)/aclocal.m4: $(MACROS:%=$(gnome_aclocaldir)/%)' > $@ - -# 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: diff --git a/glabels1/macros/aclocal-include.m4 b/glabels1/macros/aclocal-include.m4 deleted file mode 100644 index abf6533f..00000000 --- a/glabels1/macros/aclocal-include.m4 +++ /dev/null @@ -1,16 +0,0 @@ -# aclocal-include.m4 -# -# This macro adds the name macrodir to the set of directories -# that `aclocal' searches for macros. - -# serial 1 - -dnl AM_ACLOCAL_INCLUDE(macrodir) -AC_DEFUN([AM_ACLOCAL_INCLUDE], -[ - AM_CONDITIONAL(INSIDE_GNOME_COMMON, test x = y) - - test -n "$ACLOCAL_FLAGS" && ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS" - - for k in $1 ; do ACLOCAL="$ACLOCAL -I $k" ; done -]) diff --git a/glabels1/macros/autogen.sh b/glabels1/macros/autogen.sh deleted file mode 100644 index 70273913..00000000 --- a/glabels1/macros/autogen.sh +++ /dev/null @@ -1,145 +0,0 @@ -#!/bin/sh -# Run this to generate all the initial makefiles, etc. - -DIE=0 - -(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.2d.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNU_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed to compile Gnome." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.tar.gz" - echo "(or a newer version if it is available)" - DIE=1 - } -} - -grep "^AM_GNOME_GETTEXT" $srcdir/configure.in >/dev/null && { - grep "sed.*POTFILES" $srcdir/configure.in >/dev/null || \ - (gettext --version) < /dev/null > /dev/null 2>&1 || { - echo - echo "**Error**: You must have \`gettext' installed to compile Gnome." - echo "Get ftp://alpha.gnu.org/gnu/gettext-0.10.35.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_GNU_GETTEXT" configure.in >/dev/null; then - if grep "sed.*POTFILES" configure.in >/dev/null; then - : do nothing -- we still have an old unmodified configure.in - else - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - fi - if grep "^AM_GNOME_GETTEXT" configure.in >/dev/null; then - echo "Creating $dr/aclocal.m4 ..." - test -r $dr/aclocal.m4 || touch $dr/aclocal.m4 - echo "Running gettextize... Ignore non-fatal messages." - echo "no" | gettextize --force --copy - echo "Making $dr/aclocal.m4 writable ..." - test -r $dr/aclocal.m4 && chmod u+w $dr/aclocal.m4 - fi - 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" #--enable-iso-c - -if test x$NOCONFIGURE = x; then - echo Running $srcdir/configure $conf_flags "$@" ... - $srcdir/configure $conf_flags "$@" \ - && echo Now type \`make\' to compile $PKG_NAME || exit 1 -else - echo Skipping configure process. -fi diff --git a/glabels1/macros/compiler-flags.m4 b/glabels1/macros/compiler-flags.m4 deleted file mode 100644 index 278d5099..00000000 --- a/glabels1/macros/compiler-flags.m4 +++ /dev/null @@ -1,109 +0,0 @@ -dnl GNOME_COMPILE_WARNINGS -dnl Turn on many useful compiler warnings -dnl For now, only works on GCC -AC_DEFUN([GNOME_COMPILE_WARNINGS],[ - AC_ARG_ENABLE(compile-warnings, - [ --enable-compile-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_compile_warnings=minimum) - - AC_MSG_CHECKING(what warning flags to pass to the C compiler) - warnCFLAGS= - if test "x$GCC" != xyes; then - enable_compile_warnings=no - fi - - if test "x$enable_compile_warnings" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) warnCFLAGS="-Wall -Wunused" ;; - esac - - ## -W is not all that useful. And it cannot be controlled - ## with individual -Wno-xxx flags, unlike -Wall - if test "x$enable_compile_warnings" = "xyes"; then - warnCFLAGS="$warnCFLAGS -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith" - fi - fi - fi - AC_MSG_RESULT($warnCFLAGS) - - AC_ARG_ENABLE(iso-c, - [ --enable-iso-c Try to warn if code is not ISO C ],, - enable_iso_c=no) - - AC_MSG_CHECKING(what language compliance flags to pass to the C compiler) - complCFLAGS= - if test "x$enable_iso_c" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -ansi" ;; - esac - - case " $CFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCFLAGS="$complCFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCFLAGS) - if test "x$cflags_set" != "xyes"; then - CFLAGS="$CFLAGS $warnCFLAGS $complCFLAGS" - cflags_set=yes - AC_SUBST(cflags_set) - fi -]) - -dnl For C++, do basically the same thing. - -AC_DEFUN([GNOME_CXX_WARNINGS],[ - AC_ARG_ENABLE(cxx-warnings, - [ --enable-cxx-warnings=[no/minimum/yes] Turn on compiler warnings.],,enable_cxx_warnings=minimum) - - AC_MSG_CHECKING(what warning flags to pass to the C++ compiler) - warnCXXFLAGS= - if test "x$GCC" != xyes; then - enable_compile_warnings=no - fi - if test "x$enable_cxx_warnings" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CXXFLAGS " in - *[\ \ ]-Wall[\ \ ]*) ;; - *) warnCXXFLAGS="-Wall -Wno-unused" ;; - esac - - ## -W is not all that useful. And it cannot be controlled - ## with individual -Wno-xxx flags, unlike -Wall - if test "x$enable_cxx_warnings" = "xyes"; then - warnCXXFLAGS="$warnCXXFLAGS -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wshadow -Woverloaded-virtual" - fi - fi - fi - AC_MSG_RESULT($warnCXXFLAGS) - - AC_ARG_ENABLE(iso-cxx, - [ --enable-iso-cxx Try to warn if code is not ISO C++ ],, - enable_iso_cxx=no) - - AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler) - complCXXFLAGS= - if test "x$enable_iso_cxx" != "xno"; then - if test "x$GCC" = "xyes"; then - case " $CXXFLAGS " in - *[\ \ ]-ansi[\ \ ]*) ;; - *) complCXXFLAGS="$complCXXFLAGS -ansi" ;; - esac - - case " $CXXFLAGS " in - *[\ \ ]-pedantic[\ \ ]*) ;; - *) complCXXFLAGS="$complCXXFLAGS -pedantic" ;; - esac - fi - fi - AC_MSG_RESULT($complCXXFLAGS) - if test "x$cxxflags_set" != "xyes"; then - CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS" - cxxflags_set=yes - AC_SUBST(cxxflags_set) - fi -]) diff --git a/glabels1/macros/curses.m4 b/glabels1/macros/curses.m4 deleted file mode 100644 index 3dd4ffaa..00000000 --- a/glabels1/macros/curses.m4 +++ /dev/null @@ -1,318 +0,0 @@ -dnl Curses detection: Munged from Midnight Commander's configure.in -dnl -dnl What it does: -dnl ============= -dnl -dnl - Determine which version of curses is installed on your system -dnl and set the -I/-L/-l compiler entries and add a few preprocessor -dnl symbols -dnl - Do an AC_SUBST on the CURSES_INCLUDEDIR and CURSES_LIBS so that -dnl @CURSES_INCLUDEDIR@ and @CURSES_LIBS@ will be available in -dnl Makefile.in's -dnl - Modify the following configure variables (these are the only -dnl curses.m4 variables you can access from within configure.in) -dnl CURSES_INCLUDEDIR - contains -I's and possibly -DRENAMED_CURSES if -dnl an ncurses.h that's been renamed to curses.h -dnl is found. -dnl CURSES_LIBS - sets -L and -l's appropriately -dnl CFLAGS - if --with-sco, add -D_SVID3 -dnl has_curses - exports result of tests to rest of configure -dnl -dnl Usage: -dnl ====== -dnl 1) Add lines indicated below to acconfig.h -dnl 2) call AC_CHECK_CURSES after AC_PROG_CC in your configure.in -dnl 3) Instead of #include you should use the following to -dnl properly locate ncurses or curses header file -dnl -dnl #if defined(USE_NCURSES) && !defined(RENAMED_NCURSES) -dnl #include -dnl #else -dnl #include -dnl #endif -dnl -dnl 4) Make sure to add @CURSES_INCLUDEDIR@ to your preprocessor flags -dnl 5) Make sure to add @CURSES_LIBS@ to your linker flags or LIBS -dnl -dnl Notes with automake: -dnl - call AM_CONDITIONAL(HAS_CURSES, test "$has_curses" = true) from -dnl configure.in -dnl - your Makefile.am can look something like this -dnl ----------------------------------------------- -dnl INCLUDES= blah blah blah $(CURSES_INCLUDEDIR) -dnl if HAS_CURSES -dnl CURSES_TARGETS=name_of_curses_prog -dnl endif -dnl bin_PROGRAMS = other_programs $(CURSES_TARGETS) -dnl other_programs_SOURCES = blah blah blah -dnl name_of_curses_prog_SOURCES = blah blah blah -dnl other_programs_LDADD = blah -dnl name_of_curses_prog_LDADD = blah $(CURSES_LIBS) -dnl ----------------------------------------------- -dnl -dnl -dnl The following lines should be added to acconfig.h: -dnl ================================================== -dnl -dnl /*=== Curses version detection defines ===*/ -dnl /* Found some version of curses that we're going to use */ -dnl #undef HAS_CURSES -dnl -dnl /* Use SunOS SysV curses? */ -dnl #undef USE_SUNOS_CURSES -dnl -dnl /* Use old BSD curses - not used right now */ -dnl #undef USE_BSD_CURSES -dnl -dnl /* Use SystemV curses? */ -dnl #undef USE_SYSV_CURSES -dnl -dnl /* Use Ncurses? */ -dnl #undef USE_NCURSES -dnl -dnl /* If you Curses does not have color define this one */ -dnl #undef NO_COLOR_CURSES -dnl -dnl /* Define if you want to turn on SCO-specific code */ -dnl #undef SCO_FLAVOR -dnl -dnl /* Set to reflect version of ncurses * -dnl * 0 = version 1.* -dnl * 1 = version 1.9.9g -dnl * 2 = version 4.0/4.1 */ -dnl #undef NCURSES_970530 -dnl -dnl /*=== End new stuff for acconfig.h ===*/ -dnl - - -AC_DEFUN(AC_CHECK_CURSES,[ - search_ncurses=true - screen_manager="" - has_curses=false - - CFLAGS=${CFLAGS--O} - - AC_SUBST(CURSES_LIBS) - AC_SUBST(CURSES_INCLUDEDIR) - - AC_ARG_WITH(sco, - [ --with-sco Use this to turn on SCO-specific code],[ - if test x$withval = xyes; then - AC_DEFINE(SCO_FLAVOR) - CFLAGS="$CFLAGS -D_SVID3" - fi - ]) - - AC_ARG_WITH(sunos-curses, - [ --with-sunos-curses Used to force SunOS 4.x curses],[ - if test x$withval = xyes; then - AC_USE_SUNOS_CURSES - fi - ]) - - AC_ARG_WITH(osf1-curses, - [ --with-osf1-curses Used to force OSF/1 curses],[ - if test x$withval = xyes; then - AC_USE_OSF1_CURSES - fi - ]) - - AC_ARG_WITH(vcurses, - [ --with-vcurses[=incdir] Used to force SysV curses], - if test x$withval != xyes; then - CURSES_INCLUDEDIR="-I$withval" - fi - AC_USE_SYSV_CURSES - ) - - AC_ARG_WITH(ncurses, - [ --with-ncurses[=dir] Compile with ncurses/locate base dir], - if test x$withval = xno ; then - search_ncurses=false - elif test x$withval != xyes ; then - CURSES_LIBS="$LIBS -L$withval/lib -lncurses" - CURSES_INCLUDEDIR="-I$withval/include" - search_ncurses=false - screen_manager="ncurses" - AC_DEFINE(USE_NCURSES) - AC_DEFINE(HAS_CURSES) - has_curses=true - fi - ) - - if $search_ncurses - then - AC_SEARCH_NCURSES() - fi - - -]) - - -AC_DEFUN(AC_USE_SUNOS_CURSES, [ - search_ncurses=false - screen_manager="SunOS 4.x /usr/5include curses" - AC_MSG_RESULT(Using SunOS 4.x /usr/5include curses) - AC_DEFINE(USE_SUNOS_CURSES) - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(NO_COLOR_CURSES) - AC_DEFINE(USE_SYSV_CURSES) - CURSES_INCLUDEDIR="-I/usr/5include" - CURSES_LIBS="/usr/5lib/libcurses.a /usr/5lib/libtermcap.a" - AC_MSG_RESULT(Please note that some screen refreshs may fail) -]) - -AC_DEFUN(AC_USE_OSF1_CURSES, [ - AC_MSG_RESULT(Using OSF1 curses) - search_ncurses=false - screen_manager="OSF1 curses" - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(NO_COLOR_CURSES) - AC_DEFINE(USE_SYSV_CURSES) - CURSES_LIBS="-lcurses" -]) - -AC_DEFUN(AC_USE_SYSV_CURSES, [ - AC_MSG_RESULT(Using SysV curses) - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(USE_SYSV_CURSES) - search_ncurses=false - screen_manager="SysV/curses" - CURSES_LIBS="-lcurses" -]) - -dnl AC_ARG_WITH(bsd-curses, -dnl [--with-bsd-curses Used to compile with bsd curses, not very fancy], -dnl search_ncurses=false -dnl screen_manager="Ultrix/cursesX" -dnl if test $system = ULTRIX -dnl then -dnl THIS_CURSES=cursesX -dnl else -dnl THIS_CURSES=curses -dnl fi -dnl -dnl CURSES_LIBS="-l$THIS_CURSES -ltermcap" -dnl AC_DEFINE(HAS_CURSES) -dnl has_curses=true -dnl AC_DEFINE(USE_BSD_CURSES) -dnl AC_MSG_RESULT(Please note that some screen refreshs may fail) -dnl AC_WARN(Use of the bsdcurses extension has some) -dnl AC_WARN(display/input problems.) -dnl AC_WARN(Reconsider using xcurses) -dnl) - - -dnl -dnl Parameters: directory filename cureses_LIBS curses_INCLUDEDIR nicename -dnl -AC_DEFUN(AC_NCURSES, [ - if $search_ncurses - then - if test -f $1/$2 - then - AC_MSG_RESULT(Found ncurses on $1/$2) - CURSES_LIBS="$3" - CURSES_INCLUDEDIR="$4" - search_ncurses=false - screen_manager=$5 - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(USE_NCURSES) - fi - fi -]) - -AC_DEFUN(AC_SEARCH_NCURSES, [ - AC_CHECKING("location of ncurses.h file") - - AC_NCURSES(/usr/include, ncurses.h, -lncurses,, "ncurses on /usr/include") - AC_NCURSES(/usr/include/ncurses, ncurses.h, -lncurses, -I/usr/include/ncurses, "ncurses on /usr/include/ncurses") - AC_NCURSES(/usr/local/include, ncurses.h, -L/usr/local/lib -lncurses, -I/usr/local/include, "ncurses on /usr/local") - AC_NCURSES(/usr/local/include/ncurses, ncurses.h, -L/usr/local/lib -L/usr/local/lib/ncurses -lncurses, -I/usr/local/include/ncurses, "ncurses on /usr/local/include/ncurses") - - AC_NCURSES(/usr/local/include/ncurses, curses.h, -L/usr/local/lib -lncurses, -I/usr/local/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/local/.../ncurses") - - AC_NCURSES(/usr/include/ncurses, curses.h, -lncurses, -I/usr/include/ncurses -DRENAMED_NCURSES, "renamed ncurses on /usr/include/ncurses") - - dnl - dnl We couldn't find ncurses, try SysV curses - dnl - if $search_ncurses - then - AC_EGREP_HEADER(init_color, /usr/include/curses.h, - AC_USE_SYSV_CURSES) - AC_EGREP_CPP(USE_NCURSES,[ -#include -#ifdef __NCURSES_H -#undef USE_NCURSES -USE_NCURSES -#endif -],[ - CURSES_INCLUDEDIR="$CURSES_INCLUDEDIR -DRENAMED_NCURSES" - AC_DEFINE(HAS_CURSES) - has_curses=true - AC_DEFINE(USE_NCURSES) - search_ncurses=false - screen_manager="ncurses installed as curses" -]) - fi - - dnl - dnl Try SunOS 4.x /usr/5{lib,include} ncurses - dnl The flags USE_SUNOS_CURSES, USE_BSD_CURSES and BUGGY_CURSES - dnl should be replaced by a more fine grained selection routine - dnl - if $search_ncurses - then - if test -f /usr/5include/curses.h - then - AC_USE_SUNOS_CURSES - fi - else - # check for ncurses version, to properly ifdef mouse-fix - AC_MSG_CHECKING(for ncurses version) - ncurses_version=unknown -cat > conftest.$ac_ext < -#else -#include -#endif -#undef VERSION -VERSION:NCURSES_VERSION -EOF - if (eval "$ac_cpp conftest.$ac_ext") 2>&AC_FD_CC | - egrep "VERSION:" >conftest.out 2>&1; then -changequote(,)dnl - ncurses_version=`cat conftest.out|sed -e 's/^[^"]*"//' -e 's/".*//'` -changequote([,])dnl - fi - rm -rf conftest* - AC_MSG_RESULT($ncurses_version) - case "$ncurses_version" in -changequote(,)dnl - 4.[01]) -changequote([,])dnl - AC_DEFINE(NCURSES_970530,2) - ;; - 1.9.9g) - AC_DEFINE(NCURSES_970530,1) - ;; - 1*) - AC_DEFINE(NCURSES_970530,0) - ;; - esac - fi -]) - - - - - diff --git a/glabels1/macros/gnome-bonobo-check.m4 b/glabels1/macros/gnome-bonobo-check.m4 deleted file mode 100644 index 65e272cf..00000000 --- a/glabels1/macros/gnome-bonobo-check.m4 +++ /dev/null @@ -1,150 +0,0 @@ -# Configure paths for Bonobo -# Miguel de Icaza, 99-04-12 -# Stolen from Chris Lahey 99-2-5 -# stolen from Manish Singh again -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_BONOBO ([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for Bonobo, and define BONOBO_CFLAGS and BONOBO_LIBS -dnl -AC_DEFUN([AM_PATH_BONOBO], -[ -dnl -dnl Get the cflags and libraries from the gnome-config script -dnl -AC_ARG_WITH(bonobo-prefix,[ --with-bonobo-prefix=PFX Prefix where Bonobo is installed (optional)], - bonobo_prefix="$withval", bonobo_prefix="") -AC_ARG_WITH(bonobo-exec-prefix,[ --with-bonobo-exec-prefix=PFX Exec prefix where Bonobo is installed (optional)], - bonobo_exec_prefix="$withval", bonobo_exec_prefix="") -AC_ARG_ENABLE(bonobotest, [ --disable-bonobotest Do not try to compile and run a test Bonobo program], - , enable_bonobotest=yes) - - if test x$bonobo_exec_prefix != x ; then - bonobo_args="$bonobo_args --exec-prefix=$bonobo_exec_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$bonobo_exec_prefix/bin/gnome-config - fi - fi - if test x$bonobo_prefix != x ; then - bonobo_args="$bonobo_args --prefix=$bonobo_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$bonobo_prefix/bin/gnome-config - fi - fi - - AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) - min_bonobo_version=ifelse([$1], ,0.1.0,$1) - AC_MSG_CHECKING(for BONOBO - version >= $min_bonobo_version) - no_bonobo="" - if test "$GNOME_CONFIG" = "no" ; then - no_bonobo=yes - else - BONOBO_CFLAGS=`$GNOME_CONFIG $bonoboconf_args --cflags bonobo` - BONOBO_LIBS=`$GNOME_CONFIG $bonoboconf_args --libs bonobo` - - bonobo_major_version=`$GNOME_CONFIG $bonobo_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - bonobo_minor_version=`$GNOME_CONFIG $bonobo_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - bonobo_micro_version=`$GNOME_CONFIG $bonobo_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_bonobotest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $BONOBO_CFLAGS" - LIBS="$LIBS $BONOBO_LIBS" -dnl -dnl Now check if the installed BONOBO is sufficiently new. (Also sanity -dnl checks the results of gnome-config to some extent -dnl - rm -f conf.bonobotest - AC_TRY_RUN([ -#include -#include -#include -#include - -static char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.bonobotest"); - gnome_object_get_type (); - return 0; -} - -],, no_bonobo=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_bonobo" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GNOME_CONFIG" = "no" ; then - echo "*** The gnome-config script installed by GNOME-LIBS could not be found" - echo "*** If BONOBO was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GNOME_CONFIG environment variable to the" - echo "*** full path to gnome-config." - else - if test -f conf.bonobotest ; then - : - else - echo "*** Could not run BONOBO test program, checking why..." - CFLAGS="$CFLAGS $BONOBO_CFLAGS" - LIBS="$LIBS $BONOBO_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 BONOBO or finding the wrong" - echo "*** version of BONOBO. If it is not finding BONOBO, 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 BONOBO was incorrectly installed" - echo "*** or that you have moved BONOBO since it was installed. In the latter case, you" - echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - BONOBO_CFLAGS="" - BONOBO_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(BONOBO_CFLAGS) - AC_SUBST(BONOBO_LIBS) - rm -f conf.bonobotest -]) - -AC_DEFUN([BONOBO_CHECK], [ - AM_PATH_BONOBO(0.1.0,,[AC_MSG_ERROR(BONOBO not found)]) -]) - diff --git a/glabels1/macros/gnome-common.m4 b/glabels1/macros/gnome-common.m4 deleted file mode 100644 index b7238297..00000000 --- a/glabels1/macros/gnome-common.m4 +++ /dev/null @@ -1,14 +0,0 @@ -# gnome-common.m4 -# -# This only for packages that are not in the GNOME CVS tree. - -dnl GNOME_COMMON_INIT - -AC_DEFUN([GNOME_COMMON_INIT], -[ - GNOME_ACLOCAL_DIR=`$ACLOCAL --print-ac-dir`/gnome - AC_SUBST(GNOME_ACLOCAL_DIR) - - ACLOCAL="$ACLOCAL -I $GNOME_ACLOCAL_DIR" -]) - diff --git a/glabels1/macros/gnome-fileutils.m4 b/glabels1/macros/gnome-fileutils.m4 deleted file mode 100644 index 7c11a785..00000000 --- a/glabels1/macros/gnome-fileutils.m4 +++ /dev/null @@ -1,414 +0,0 @@ -dnl -dnl GNOME_FILEUTILS_CHECKS -dnl -dnl checks that are needed for the diskusage applet. -dnl - -AC_DEFUN([GNOME_FILEUTILS_CHECKS], -[ -AC_CHECK_HEADERS(fcntl.h sys/param.h sys/statfs.h sys/fstyp.h \ -mnttab.h mntent.h sys/statvfs.h sys/vfs.h sys/mount.h \ -sys/filsys.h sys/fs_types.h sys/fs/s5param.h) - -AC_CHECK_FUNCS(bcopy endgrent endpwent fchdir ftime ftruncate \ -getcwd getmntinfo gettimeofday isascii lchown \ -listmntent memcpy mkfifo strchr strerror strrchr vprintf) - -dnl Set some defaults when cross-compiling - -if test x$cross_compiling = xyes ; then - case "$host_os" in - linux*) - fu_cv_sys_mounted_getmntent1=yes - fu_cv_sys_stat_statfs2_bsize=yes - ;; - sunos*) - fu_cv_sys_stat_statfs4=yes - ;; - freebsd*) - fu_cv_sys_stat_statfs2_bsize=yes - ;; - osf*) - fu_cv_sys_stat_statfs3_osf1=yes - ;; - esac -fi - -# Determine how to get the list of mounted filesystems. -list_mounted_fs= - -# If the getmntent function is available but not in the standard library, -# make sure LIBS contains -lsun (on Irix4) or -lseq (on PTX). -AC_FUNC_GETMNTENT - -# This test must precede the ones for getmntent because Unicos-9 is -# reported to have the getmntent function, but its support is incompatible -# with other getmntent implementations. - -# NOTE: Normally, I wouldn't use a check for system type as I've done for -# `CRAY' below since that goes against the whole autoconf philosophy. But -# I think there is too great a chance that some non-Cray system has a -# function named listmntent to risk the false positive. - -if test -z "$list_mounted_fs"; then -# Cray UNICOS 9 -AC_MSG_CHECKING([for listmntent of Cray/Unicos-9]) -AC_CACHE_VAL(fu_cv_sys_mounted_cray_listmntent, -[fu_cv_sys_mounted_cray_listmntent=no -AC_EGREP_CPP(yes, -[#ifdef _CRAY -yes -#endif -], [test $ac_cv_func_listmntent = yes \ -&& fu_cv_sys_mounted_cray_listmntent=yes] -) -] -) -AC_MSG_RESULT($fu_cv_sys_mounted_cray_listmntent) -if test $fu_cv_sys_mounted_cray_listmntent = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_LISTMNTENT) -fi -fi - -if test $ac_cv_func_getmntent = yes; then - -# This system has the getmntent function. -# Determine whether it's the one-argument variant or the two-argument one. - -if test -z "$list_mounted_fs"; then -# 4.3BSD, SunOS, HP-UX, Dynix, Irix -AC_MSG_CHECKING([for one-argument getmntent function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmntent1, -[test $ac_cv_header_mntent_h = yes \ -&& fu_cv_sys_mounted_getmntent1=yes \ -|| fu_cv_sys_mounted_getmntent1=no]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmntent1) -if test $fu_cv_sys_mounted_getmntent1 = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNTENT1) -fi -fi - -if test -z "$list_mounted_fs"; then -# SVR4 -AC_MSG_CHECKING([for two-argument getmntent function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmntent2, -[AC_EGREP_HEADER(getmntent, sys/mnttab.h, -fu_cv_sys_mounted_getmntent2=yes, -fu_cv_sys_mounted_getmntent2=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmntent2) -if test $fu_cv_sys_mounted_getmntent2 = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNTENT2) -fi -fi - -if test -z "$list_mounted_fs"; then -AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) -fi - -fi - -if test -z "$list_mounted_fs"; then -# DEC Alpha running OSF/1. -AC_MSG_CHECKING([for getfsstat function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getsstat, -[AC_TRY_LINK([ -#include -#include -#include ], -[struct statfs *stats; -int numsys = getfsstat ((struct statfs *)0, 0L, MNT_WAIT); ], -fu_cv_sys_mounted_getsstat=yes, -fu_cv_sys_mounted_getsstat=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_getsstat) -if test $fu_cv_sys_mounted_getsstat = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETFSSTAT) -fi -fi - -if test -z "$list_mounted_fs"; then -# AIX. -AC_MSG_CHECKING([for mntctl function and struct vmount]) -AC_CACHE_VAL(fu_cv_sys_mounted_vmount, -[AC_TRY_CPP([#include ], -fu_cv_sys_mounted_vmount=yes, -fu_cv_sys_mounted_vmount=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_vmount) -if test $fu_cv_sys_mounted_vmount = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_VMOUNT) -fi -fi - -if test -z "$list_mounted_fs"; then -# SVR3 -AC_MSG_CHECKING([for FIXME existence of three headers]) -AC_CACHE_VAL(fu_cv_sys_mounted_fread_fstyp, -[AC_TRY_CPP([ -#include -#include -#include ], -fu_cv_sys_mounted_fread_fstyp=yes, -fu_cv_sys_mounted_fread_fstyp=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_fread_fstyp) -if test $fu_cv_sys_mounted_fread_fstyp = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_FREAD_FSTYP) -fi -fi - -if test -z "$list_mounted_fs"; then -# 4.4BSD and DEC OSF/1. -AC_MSG_CHECKING([for getmntinfo function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmntinfo, -[ -ok= -if test $ac_cv_func_getmntinfo = yes; then -AC_EGREP_HEADER(f_type;, sys/mount.h, -ok=yes) -fi -test -n "$ok" \ -&& fu_cv_sys_mounted_getmntinfo=yes \ -|| fu_cv_sys_mounted_getmntinfo=no -]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmntinfo) -if test $fu_cv_sys_mounted_getmntinfo = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNTINFO) -fi -fi - -# FIXME: add a test for netbsd-1.1 here - -if test -z "$list_mounted_fs"; then -# Ultrix -AC_MSG_CHECKING([for getmnt function]) -AC_CACHE_VAL(fu_cv_sys_mounted_getmnt, -[AC_TRY_CPP([ -#include -#include ], -fu_cv_sys_mounted_getmnt=yes, -fu_cv_sys_mounted_getmnt=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_getmnt) -if test $fu_cv_sys_mounted_getmnt = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_GETMNT) -fi -fi - -if test -z "$list_mounted_fs"; then -# SVR2 -AC_MSG_CHECKING([whether it is possible to resort to fread on /etc/mnttab]) -AC_CACHE_VAL(fu_cv_sys_mounted_fread, -[AC_TRY_CPP([#include ], -fu_cv_sys_mounted_fread=yes, -fu_cv_sys_mounted_fread=no)]) -AC_MSG_RESULT($fu_cv_sys_mounted_fread) -if test $fu_cv_sys_mounted_fread = yes; then -list_mounted_fs=found -AC_DEFINE(MOUNTED_FREAD) -fi -fi - -if test -z "$list_mounted_fs"; then -AC_MSG_ERROR([could not determine how to read list of mounted filesystems]) -# FIXME -- no need to abort building the whole package -# Can't build mountlist.c or anything that needs its functions -fi - -AC_CHECKING(how to get filesystem space usage) -space=no - -# Perform only the link test since it seems there are no variants of the -# statvfs function. This check is more than just AC_CHECK_FUNCS(statvfs) -# because that got a false positive on SCO OSR5. Adding the declaration -# of a `struct statvfs' causes this test to fail (as it should) on such -# systems. That system is reported to work fine with STAT_STATFS4 which -# is what it gets when this test fails. -if test $space = no; then -# SVR4 -AC_CACHE_CHECK([statvfs function (SVR4)], fu_cv_sys_stat_statvfs, -[AC_TRY_LINK([#include -#include ], -[struct statvfs fsd; statvfs (0, &fsd);], -fu_cv_sys_stat_statvfs=yes, -fu_cv_sys_stat_statvfs=no)]) -if test $fu_cv_sys_stat_statvfs = yes; then -space=yes -AC_DEFINE(STAT_STATVFS) -fi -fi - -if test $space = no; then -# DEC Alpha running OSF/1 -AC_MSG_CHECKING([for 3-argument statfs function (DEC OSF/1)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs3_osf1, -[AC_TRY_RUN([ -#include -#include -#include -main () -{ -struct statfs fsd; -fsd.f_fsize = 0; -exit (statfs (".", &fsd, sizeof (struct statfs))); -}], -fu_cv_sys_stat_statfs3_osf1=yes, -fu_cv_sys_stat_statfs3_osf1=no, -fu_cv_sys_stat_statfs3_osf1=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs3_osf1) -if test $fu_cv_sys_stat_statfs3_osf1 = yes; then -space=yes -AC_DEFINE(STAT_STATFS3_OSF1) -fi -fi - -if test $space = no; then -# AIX -AC_MSG_CHECKING([for two-argument statfs with statfs.bsize dnl -member (AIX, 4.3BSD)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs2_bsize, -[AC_TRY_RUN([ -#ifdef HAVE_SYS_PARAM_H -#include -#endif -#ifdef HAVE_SYS_MOUNT_H -#include -#endif -#ifdef HAVE_SYS_VFS_H -#include -#endif -main () -{ -struct statfs fsd; -fsd.f_bsize = 0; -exit (statfs (".", &fsd)); -}], -fu_cv_sys_stat_statfs2_bsize=yes, -fu_cv_sys_stat_statfs2_bsize=no, -fu_cv_sys_stat_statfs2_bsize=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs2_bsize) -if test $fu_cv_sys_stat_statfs2_bsize = yes; then -space=yes -AC_DEFINE(STAT_STATFS2_BSIZE) -fi -fi - -if test $space = no; then -# SVR3 -AC_MSG_CHECKING([for four-argument statfs (AIX-3.2.5, SVR3)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs4, -[AC_TRY_RUN([#include -#include -main () -{ -struct statfs fsd; -exit (statfs (".", &fsd, sizeof fsd, 0)); -}], -fu_cv_sys_stat_statfs4=yes, -fu_cv_sys_stat_statfs4=no, -fu_cv_sys_stat_statfs4=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs4) -if test $fu_cv_sys_stat_statfs4 = yes; then -space=yes -AC_DEFINE(STAT_STATFS4) -fi -fi - -if test $space = no; then -# 4.4BSD and NetBSD -AC_MSG_CHECKING([for two-argument statfs with statfs.fsize dnl -member (4.4BSD and NetBSD)]) -AC_CACHE_VAL(fu_cv_sys_stat_statfs2_fsize, -[AC_TRY_RUN([#include -#ifdef HAVE_SYS_PARAM_H -#include -#endif -#ifdef HAVE_SYS_MOUNT_H -#include -#endif -main () -{ -struct statfs fsd; -fsd.f_fsize = 0; -exit (statfs (".", &fsd)); -}], -fu_cv_sys_stat_statfs2_fsize=yes, -fu_cv_sys_stat_statfs2_fsize=no, -fu_cv_sys_stat_statfs2_fsize=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_statfs2_fsize) -if test $fu_cv_sys_stat_statfs2_fsize = yes; then -space=yes -AC_DEFINE(STAT_STATFS2_FSIZE) -fi -fi - -if test $space = no; then -# Ultrix -AC_MSG_CHECKING([for two-argument statfs with struct fs_data (Ultrix)]) -AC_CACHE_VAL(fu_cv_sys_stat_fs_data, -[AC_TRY_RUN([#include -#ifdef HAVE_SYS_PARAM_H -#include -#endif -#ifdef HAVE_SYS_MOUNT_H -#include -#endif -#ifdef HAVE_SYS_FS_TYPES_H -#include -#endif -main () -{ -struct fs_data fsd; -/* Ultrix's statfs returns 1 for success, -0 for not mounted, -1 for failure. */ -exit (statfs (".", &fsd) != 1); -}], -fu_cv_sys_stat_fs_data=yes, -fu_cv_sys_stat_fs_data=no, -fu_cv_sys_stat_fs_data=no)]) -AC_MSG_RESULT($fu_cv_sys_stat_fs_data) -if test $fu_cv_sys_stat_fs_data = yes; then -space=yes -AC_DEFINE(STAT_STATFS2_FS_DATA) -fi -fi - -if test $space = no; then -# SVR2 -AC_TRY_CPP([#include ], -AC_DEFINE(STAT_READ_FILSYS) space=yes) -fi - -if test -n "$list_mounted_fs" && test $space != no; then -DF_PROG="df" -# LIBOBJS="$LIBOBJS fsusage.o" -# LIBOBJS="$LIBOBJS mountlist.o" -fi - -# Check for SunOS statfs brokenness wrt partitions 2GB and larger. -# If exists and struct statfs has a member named f_spare, -# enable the work-around code in fsusage.c. -AC_MSG_CHECKING([for statfs that truncates block counts]) -AC_CACHE_VAL(fu_cv_sys_truncating_statfs, -[AC_TRY_COMPILE([ -#if !defined(sun) && !defined(__sun) -choke -- this is a workaround for a Sun-specific problem -#endif -#include -#include ], -[struct statfs t; long c = *(t.f_spare);], -fu_cv_sys_truncating_statfs=yes, -fu_cv_sys_truncating_statfs=no, -)]) -if test $fu_cv_sys_truncating_statfs = yes; then -AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS) -fi -AC_MSG_RESULT($fu_cv_sys_truncating_statfs) - -AC_CHECKING(for AFS) -test -d /afs && AC_DEFINE(AFS) -]) diff --git a/glabels1/macros/gnome-gettext.m4 b/glabels1/macros/gnome-gettext.m4 deleted file mode 100644 index 1dac989c..00000000 --- a/glabels1/macros/gnome-gettext.m4 +++ /dev/null @@ -1,336 +0,0 @@ -# Macro to add for using GNU gettext. -# Ulrich Drepper , 1995. -# -# Modified to never use included libintl. -# Owen Taylor , 12/15/1998 -# -# -# This file can 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. - -# serial 5 - -AC_DEFUN(AM_GNOME_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) - - USE_INCLUDED_LIBINTL=no - - dnl If we use NLS figure out what method - if test "$USE_NLS" = "yes"; then - AC_DEFINE(ENABLE_NLS) -# 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_force_use_gnu_gettext="no" - - 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 gettext or catgets are available (in this order) we - dnl use this. Else we have to fall back to GNU NLS library. - dnl catgets is only used if permitted by option --with-catgets. - nls_cv_header_intl= - nls_cv_header_libgt= - CATOBJEXT=NONE - - AC_CHECK_HEADER(libintl.h, - [AC_CACHE_CHECK([for gettext in libc], gt_cv_func_gettext_libc, - [AC_TRY_LINK([#include ], [return (int) gettext ("")], - gt_cv_func_gettext_libc=yes, gt_cv_func_gettext_libc=no)]) - - if test "$gt_cv_func_gettext_libc" != "yes"; then - AC_CHECK_LIB(intl, bindtextdomain, - [AC_CACHE_CHECK([for gettext in libintl], - gt_cv_func_gettext_libintl, - [AC_CHECK_LIB(intl, gettext, - gt_cv_func_gettext_libintl=yes, - gt_cv_func_gettext_libintl=no)], - gt_cv_func_gettext_libintl=no)]) - fi - - if test "$gt_cv_func_gettext_libc" = "yes" \ - || test "$gt_cv_func_gettext_libintl" = "yes"; then - AC_DEFINE(HAVE_GETTEXT) - AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no)dnl - if test "$MSGFMT" != "no"; then - AC_CHECK_FUNCS(dcgettext) - AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) - AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, - [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) - AC_TRY_LINK(, [extern int _nl_msg_cat_cntr; - return _nl_msg_cat_cntr], - [CATOBJEXT=.gmo - DATADIRNAME=share], - [CATOBJEXT=.mo - DATADIRNAME=lib]) - INSTOBJEXT=.mo - fi - fi - - # Added by Martin Baulig 12/15/98 for libc5 systems - if test "$gt_cv_func_gettext_libc" != "yes" \ - && test "$gt_cv_func_gettext_libintl" = "yes"; then - INTLLIBS=-lintl - LIBS=`echo $LIBS | sed -e 's/-lintl//'` - fi - ]) - - if test "$CATOBJEXT" = "NONE"; then - AC_MSG_CHECKING([whether catgets can be used]) - AC_ARG_WITH(catgets, - [ --with-catgets use catgets functions if available], - nls_cv_use_catgets=$withval, nls_cv_use_catgets=no) - AC_MSG_RESULT($nls_cv_use_catgets) - - if test "$nls_cv_use_catgets" = "yes"; then - dnl No gettext in C library. Try catgets next. - AC_CHECK_LIB(i, main) - AC_CHECK_FUNC(catgets, - [AC_DEFINE(HAVE_CATGETS) - INTLOBJS="\$(CATOBJS)" - AC_PATH_PROG(GENCAT, gencat, no)dnl -# if test "$GENCAT" != "no"; then -# AC_PATH_PROG(GMSGFMT, gmsgfmt, no) -# if test "$GMSGFMT" = "no"; then -# AM_PATH_PROG_WITH_TEST(GMSGFMT, msgfmt, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], no) -# fi -# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) -# USE_INCLUDED_LIBINTL=yes -# CATOBJEXT=.cat -# INSTOBJEXT=.cat -# DATADIRNAME=lib -# INTLDEPS='$(top_builddir)/intl/libintl.a' -# INTLLIBS=$INTLDEPS -# LIBS=`echo $LIBS | sed -e 's/-lintl//'` -# nls_cv_header_intl=intl/libintl.h -# nls_cv_header_libgt=intl/libgettext.h -# fi - ]) - fi - fi - - if test "$CATOBJEXT" = "NONE"; then - dnl Neither gettext nor catgets in included 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 - AC_DEFINE(ENABLE_NLS) - else - # Unset this variable since we use the non-zero value as a flag. - CATOBJEXT= -# dnl Mark actions used to generate GNU NLS library. -# INTLOBJS="\$(GETTOBJS)" -# AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep 'dv '`"], msgfmt) -# AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -# AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -# [test -z "`$ac_dir/$ac_word -h 2>&1 | grep '(HELP)'`"], :) -# AC_SUBST(MSGFMT) -# USE_INCLUDED_LIBINTL=yes -# CATOBJEXT=.gmo -# INSTOBJEXT=.mo -# DATADIRNAME=share -# INTLDEPS='$(top_builddir)/intl/libintl.a' -# INTLLIBS=$INTLDEPS -# LIBS=`echo $LIBS | sed -e 's/-lintl//'` -# nls_cv_header_intl=intl/libintl.h -# nls_cv_header_libgt=intl/libgettext.h - fi - - 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 2> /dev/null; then - : ; - else - AC_MSG_RESULT( - [found xgettext program is not GNU xgettext; ignore it]) - XGETTEXT=":" - fi - fi - - # We need to process the po/ directory. - POSUB=po - else - DATADIRNAME=share - nls_cv_header_intl=intl/libintl.h - nls_cv_header_libgt=intl/libgettext.h - fi - AC_LINK_FILES($nls_cv_header_libgt, $nls_cv_header_intl) - AC_OUTPUT_COMMANDS( - [case "$CONFIG_FILES" in *po/Makefile.in*) - sed -e "/POTFILES =/r po/POTFILES" po/Makefile.in > po/Makefile - esac]) - - -# # If this is used in GNU gettext we have to set USE_NLS to `yes' -# # because some of the sources are only built for this goal. -# if test "$PACKAGE" = gettext; then -# USE_NLS=yes -# USE_INCLUDED_LIBINTL=yes -# 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(USE_INCLUDED_LIBINTL) - AC_SUBST(CATALOGS) - AC_SUBST(CATOBJEXT) - AC_SUBST(DATADIRNAME) - AC_SUBST(GMOFILES) - AC_SUBST(INSTOBJEXT) - AC_SUBST(INTLDEPS) - AC_SUBST(INTLLIBS) - AC_SUBST(INTLOBJS) - AC_SUBST(POFILES) - AC_SUBST(POSUB) - ]) - -AC_DEFUN(AM_GNOME_GETTEXT, - [AC_REQUIRE([AC_PROG_MAKE_SET])dnl - AC_REQUIRE([AC_PROG_CC])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_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h string.h \ -unistd.h sys/param.h]) - AC_CHECK_FUNCS([getcwd munmap putenv setenv setlocale strchr strcasecmp \ -strdup __argz_count __argz_stringify __argz_next]) - - if test "${ac_cv_func_stpcpy+set}" != "set"; then - AC_CHECK_FUNCS(stpcpy) - fi - if test "${ac_cv_func_stpcpy}" = "yes"; then - AC_DEFINE(HAVE_STPCPY) - fi - - AM_LC_MESSAGES - AM_GNOME_WITH_NLS - - 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= - if test "x$LINGUAS" = "x"; then - LINGUAS=$ALL_LINGUAS - fi - for lang in $LINGUAS; do - case "$ALL_LINGUAS" in - *$lang*) NEW_LINGUAS="$NEW_LINGUAS $lang" ;; - esac - 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 The reference to in the installed file - dnl must be resolved because we cannot expect the users of this - dnl to define HAVE_LOCALE_H. - if test $ac_cv_header_locale_h = yes; then - INCLUDE_LOCALE_H="#include " - else - INCLUDE_LOCALE_H="\ -/* The system does not provide the header . Take care yourself. */" - fi - AC_SUBST(INCLUDE_LOCALE_H) - - dnl Determine which catalog format we have (if any is needed) - dnl For now we know about two different formats: - dnl Linux libc-5 and the normal X/Open format - test -d intl || mkdir intl - if test "$CATOBJEXT" = ".cat"; then - AC_CHECK_HEADER(linux/version.h, msgformat=linux, msgformat=xopen) - - dnl Transform the SED scripts while copying because some dumb SEDs - dnl cannot handle comments. - sed -e '/^#/d' $srcdir/intl/$msgformat-msg.sed > intl/po2msg.sed - fi - dnl po2tbl.sed is always needed. - sed -e '/^#.*[^\\]$/d' -e '/^#$/d' \ - $srcdir/intl/po2tbl.sed.in > intl/po2tbl.sed - - dnl In the intl/Makefile.in we have a special dependency which makes - dnl only sense for gettext. We comment this out for non-gettext - dnl packages. - if test "$PACKAGE" = "gettext"; then - GT_NO="#NO#" - GT_YES= - else - GT_NO= - GT_YES="#YES#" - fi - AC_SUBST(GT_NO) - AC_SUBST(GT_YES) - - 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 *** For now the libtool support in intl/Makefile is not for real. - l= - AC_SUBST(l) - - dnl Generate list of files to be processed by xgettext which will - dnl be included in po/Makefile. - test -d po || mkdir po - if test "x$srcdir" != "x."; then - if test "x`echo $srcdir | sed 's@/.*@@'`" = "x"; then - posrcprefix="$srcdir/" - else - posrcprefix="../$srcdir/" - fi - else - posrcprefix="../" - fi - rm -f po/POTFILES - sed -e "/^#/d" -e "/^\$/d" -e "s,.*, $posrcprefix& \\\\," -e "\$s/\(.*\) \\\\/\1/" \ - < $srcdir/po/POTFILES.in > po/POTFILES - ]) - diff --git a/glabels1/macros/gnome-ghttp-check.m4 b/glabels1/macros/gnome-ghttp-check.m4 deleted file mode 100644 index 1fc85783..00000000 --- a/glabels1/macros/gnome-ghttp-check.m4 +++ /dev/null @@ -1,14 +0,0 @@ -AC_DEFUN([GNOME_GHTTP_CHECK],[ - AC_REQUIRE([GNOME_INIT_HOOK]) - GHTTP_LIB= - AC_CHECK_FUNC(connect,,[ - AC_CHECK_LIB(socket,connect, - GHTTP_LIB="-lsocket $GHTTP_LIB",,$GHTTP_LIB)]) - AC_CHECK_FUNC(gethostbyname,,[ - AC_CHECK_LIB(nsl,gethostbyname, - GHTTP_LIB="-lnsl $GHTTP_LIB",,$GHTTP_LIB)]) - AC_CHECK_LIB(ghttp, ghttp_request_new, - GHTTP_LIB="-lghttp $GHTTP_LIB",,-L$gnome_prefix $GHTTP_LIB) - AC_SUBST(GHTTP_LIB) - AC_PROVIDE([GNOME_GHTTP_CHECK]) -]) diff --git a/glabels1/macros/gnome-gnorba-check.m4 b/glabels1/macros/gnome-gnorba-check.m4 deleted file mode 100644 index dbac0a6c..00000000 --- a/glabels1/macros/gnome-gnorba-check.m4 +++ /dev/null @@ -1,35 +0,0 @@ -dnl -dnl GNOME_GNORBA_HOOK (script-if-gnorba-found, failflag) -dnl -dnl if failflag is "failure" it aborts if gnorba is not found. -dnl - -AC_DEFUN([GNOME_GNORBA_HOOK],[ - GNOME_ORBIT_HOOK([],$2) - AC_CACHE_CHECK([for gnorba libraries],gnome_cv_gnorba_found,[ - gnome_cv_gnorba_found=no - if test x$gnome_cv_orbit_found = xyes; then - GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" - GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" - if test -n "$GNORBA_LIBS"; then - gnome_cv_gnorba_found=yes - fi - fi - ]) - AM_CONDITIONAL(HAVE_GNORBA, test x$gnome_cv_gnorba_found = xyes) - if test x$gnome_cv_orbit_found = xyes; then - $1 - GNORBA_CFLAGS="`gnome-config --cflags gnorba gnomeui`" - GNORBA_LIBS="`gnome-config --libs gnorba gnomeui`" - AC_SUBST(GNORBA_CFLAGS) - AC_SUBST(GNORBA_LIBS) - else - if test x$2 = xfailure; then - AC_MSG_ERROR(gnorba library not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_GNORBA_CHECK], [ - GNOME_GNORBA_HOOK([],failure) -]) diff --git a/glabels1/macros/gnome-guile-checks.m4 b/glabels1/macros/gnome-guile-checks.m4 deleted file mode 100644 index 1086d30a..00000000 --- a/glabels1/macros/gnome-guile-checks.m4 +++ /dev/null @@ -1,119 +0,0 @@ -dnl -dnl GNOME_CHECK_GUILE (failflag) -dnl -dnl if failflag is "fail" then GNOME_CHECK_GUILE will abort if guile is not found. -dnl - -AC_DEFUN([GNOME_CHECK_GUILE], -[ - saved_ldflags="$LDFLAGS" - saved_cppflags="$CPPFLAGS" - LDFLAGS="$LDFLAGS $GNOME_LIBDIR" - - AC_CHECK_LIB(qthreads,qt_null,[ - QTTHREADS_LIB="-lqthreads" - ],[ - AC_CHECK_LIB(qt, qt_null, QTTHREADS_LIB="-lqt") - ],$LIBS) - AC_SUBST(QTTHREADS_LIB) - - AC_CHECK_LIB(termcap,main,TERMCAP_LIB="-ltermcap") - AC_CHECK_LIB(readline,main,READLINE_LIB="-lreadline",,$TERMCAP_LIB) - - AC_SUBST(TERMCAP_LIB) - AC_SUBST(READLINE_LIB) - - if test "x$cross_compiling" = "xyes" ; then - name_build_guile="$target_alias-guile-config" - else - name_build_guile="guile-config" - fi - - AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no) - - if test "x$BUILD_GUILE" = "xyes"; then - AC_MSG_CHECKING(whether $name_build_guile works) - if test x`$name_build_guile --version >/dev/null 2>&1 || \ - echo no` = xno; then - BUILD_GUILE=no - fi - AC_MSG_RESULT($BUILD_GUILE) - else - - if test "x$cross_compiling" = "xyes" ; then - name_build_guile="$target_alias-build-guile" - else - name_build_guile="build-guile" - fi - - AC_CHECK_PROG(BUILD_GUILE, $name_build_guile, yes, no) - - if test "x$BUILD_GUILE" = "xyes"; then - AC_MSG_CHECKING(whether $name_build_guile works) - if test x`$name_build_guile --version >/dev/null 2>&1 || \ - echo no` = xno; then - BUILD_GUILE=no - fi - AC_MSG_RESULT($BUILD_GUILE) - fi - fi - - AC_CHECK_LIB(m, sin) - - if test "x$BUILD_GUILE" = "xyes"; then - AC_MSG_CHECKING(for guile libraries) - GUILE_LIBS="`$name_build_guile link`" - AC_MSG_RESULT($GUILE_LIBS) - AC_MSG_CHECKING(for guile headers) - GUILE_INCS="`$name_build_guile compile`" - AC_MSG_RESULT($GUILE_INCS) - else - GUILE_LIBS="$GNOME_LIBDIR" - GUILE_INCS="$GNOME_INCLUDEDIR" - AC_CHECK_LIB(rx, main, GUILE_LIBS="-lrx $GUILE_LIBS") - AC_CHECK_LIB(qt, qt_null, GUILE_LIBS="-lqt $GUILE_LIBS") - AC_CHECK_LIB(dl, dlopen, GUILE_LIBS="-ldl $GUILE_LIBS") - AC_CHECK_LIB(nsl, t_accept, GUILE_LIBS="$GUILE_LIBS -lnsl") - AC_CHECK_LIB(socket, socket, GUILE_LIBS="$GUILE_LIBS -lsocket") - GUILE_LIBS="-lguile $GUILE_LIBS $QTTHREADS_LIB $READLINE_LIB $TERMCAP_LIB" - fi - - AC_SUBST(GUILE_LIBS) - AC_SUBST(GUILE_INCS) - - saved_LIBS="$LIBS" - LIBS="$LIBS $GUILE_LIBS" - CPPFLAGS="$saved_cppflags $GUILE_INCS" - - AC_MSG_CHECKING(whether guile works) - AC_TRY_LINK([ - #include - #include - ],[ - gh_eval_str("(newline)"); - scm_boot_guile(0,NULL,NULL,NULL); - ],[ - ac_cv_guile_found=yes - AC_DEFINE(HAVE_GUILE) - ],[ - ac_cv_guile_found=no - ]) - AC_MSG_RESULT($ac_cv_guile_found) - - if test x$ac_cv_guile_found = xno ; then - if test x$1 = xfail ; then - AC_MSG_ERROR(Can not find Guile on this system) - else - AC_MSG_WARN(Can not find Guile on this system) - fi - ac_cv_guile_found=no - GUILE_LIBS= GUILE_INCS= - fi - - LIBS="$saved_LIBS" - LDFLAGS="$saved_ldflags" - CPPFLAGS="$saved_cppflags" - - AC_SUBST(GUILE_LIBS) - AM_CONDITIONAL(GUILE, test x$ac_cv_guile_found = xyes) -]) diff --git a/glabels1/macros/gnome-libgtop-check.m4 b/glabels1/macros/gnome-libgtop-check.m4 deleted file mode 100644 index 81fbb601..00000000 --- a/glabels1/macros/gnome-libgtop-check.m4 +++ /dev/null @@ -1,182 +0,0 @@ -dnl -dnl GNOME_LIBGTOP_TYPES -dnl -dnl some typechecks for libgtop. -dnl - -AC_DEFUN([GNOME_LIBGTOP_TYPES], -[ - AC_CHECK_TYPE(u_int64_t, unsigned long long int) - AC_CHECK_TYPE(int64_t, long long int) -]) - -dnl -dnl GNOME_LIBGTOP_HOOK (minversion, script-if-libgtop-enabled, failflag) -dnl -dnl if failflag is "fail" then GNOME_LIBGTOP_HOOK will abort if LibGTop -dnl is not found. -dnl - -AC_DEFUN([GNOME_LIBGTOP_HOOK], -[ - AC_REQUIRE([GNOME_LIBGTOP_TYPES]) - - AC_SUBST(LIBGTOP_LIBDIR) - AC_SUBST(LIBGTOP_INCLUDEDIR) - AC_SUBST(LIBGTOP_EXTRA_LIBS) - AC_SUBST(LIBGTOP_LIBS) - AC_SUBST(LIBGTOP_INCS) - AC_SUBST(LIBGTOP_NAMES_LIBS) - AC_SUBST(LIBGTOP_NAMES_INCS) - AC_SUBST(LIBGTOP_GUILE_INCS) - AC_SUBST(LIBGTOP_GUILE_LIBS) - AC_SUBST(LIBGTOP_GUILE_NAMES_INCS) - AC_SUBST(LIBGTOP_GUILE_NAMES_LIBS) - AC_SUBST(LIBGTOP_MAJOR_VERSION) - AC_SUBST(LIBGTOP_MINOR_VERSION) - AC_SUBST(LIBGTOP_MICRO_VERSION) - AC_SUBST(LIBGTOP_VERSION) - AC_SUBST(LIBGTOP_VERSION_CODE) - AC_SUBST(LIBGTOP_SERVER_VERSION) - AC_SUBST(LIBGTOP_INTERFACE_AGE) - AC_SUBST(LIBGTOP_BINARY_AGE) - AC_SUBST(LIBGTOP_BINDIR) - AC_SUBST(LIBGTOP_SERVER) - - dnl Get the cflags and libraries from the libgtop-config script - dnl - AC_ARG_WITH(libgtop, - [ --with-libgtop=PFX Prefix where LIBGTOP is installed (optional)], - libgtop_config_prefix="$withval", libgtop_config_prefix="") - AC_ARG_WITH(libgtop-exec, - [ --with-libgtop-exec=PFX Exec prefix where LIBGTOP is installed (optional)], - libgtop_config_exec_prefix="$withval", libgtop_config_exec_prefix="") - - if test x$libgtop_config_exec_prefix != x ; then - libgtop_config_args="$libgtop_config_args --exec-prefix=$libgtop_config_exec_prefix" - if test x${LIBGTOP_CONFIG+set} != xset ; then - LIBGTOP_CONFIG=$libgtop_config_exec_prefix/bin/libgtop-config - fi - fi - if test x$libgtop_config_prefix != x ; then - libgtop_config_args="$libgtop_config_args --prefix=$libgtop_config_prefix" - if test x${LIBGTOP_CONFIG+set} != xset ; then - LIBGTOP_CONFIG=$libgtop_config_prefix/bin/libgtop-config - fi - fi - - AC_PATH_PROG(LIBGTOP_CONFIG, libgtop-config, no) - dnl IMPORTANT NOTICE: - dnl If you increase this number here, this means that *ALL* - dnl modules will require the new version, even if they explicitly - dnl give a lower number in their `configure.in' !!! - real_min_libgtop_version=1.0.0 - min_libgtop_version=ifelse([$1], ,$real_min_libgtop_version,$1) - dnl I know, the following code looks really ugly, but if you want - dnl to make changes, please test it with a brain-dead /bin/sh and - dnl with a brain-dead /bin/test (not all shells/tests support the - dnl `<' operator to compare strings, that's why I convert everything - dnl into numbers and test them). - min_libgtop_major=`echo $min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - min_libgtop_minor=`echo $min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - min_libgtop_micro=`echo $min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - test x$min_libgtop_micro = x && min_libgtop_micro=0 - real_min_libgtop_major=`echo $real_min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - real_min_libgtop_minor=`echo $real_min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - real_min_libgtop_micro=`echo $real_min_libgtop_version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - test x$real_min_libgtop_micro = x && real_min_libgtop_micro=0 - dnl You cannot require a version less then $real_min_libgtop_version, - dnl so you don't need to update each `configure.in' when it's increased. - if test $real_min_libgtop_major -gt $min_libgtop_major ; then - min_libgtop_major=$real_min_libgtop_major - min_libgtop_minor=$real_min_libgtop_minor - min_libgtop_micro=$real_min_libgtop_micro - elif test $real_min_libgtop_major = $min_libgtop_major ; then - if test $real_min_libgtop_minor -gt $min_libgtop_minor ; then - min_libgtop_minor=$real_min_libgtop_minor - min_libgtop_micro=$real_min_libgtop_micro - elif test $real_min_libgtop_minor = $min_libgtop_minor ; then - if test $real_min_libgtop_micro -gt $min_libgtop_micro ; then - min_libgtop_micro=$real_min_libgtop_micro - fi - fi - fi - min_libgtop_version="$min_libgtop_major.$min_libgtop_minor.$min_libgtop_micro" - AC_MSG_CHECKING(for libgtop - version >= $min_libgtop_version) - no_libgtop="" - if test "$LIBGTOP_CONFIG" = "no" ; then - no_libgtop=yes - else - configfile=`$LIBGTOP_CONFIG --config` - libgtop_major_version=`$LIBGTOP_CONFIG --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - libgtop_minor_version=`$LIBGTOP_CONFIG --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - libgtop_micro_version=`$LIBGTOP_CONFIG --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - test $libgtop_major_version != $min_libgtop_major && no_libgtop=yes - test $libgtop_minor_version -lt $min_libgtop_minor && no_libgtop=yes - if test $libgtop_minor_version = $min_libgtop_minor ; then - test $libgtop_micro_version -lt $min_libgtop_micro && no_libgtop=yes - fi - . $configfile - fi - if test x$no_libgtop = x ; then - AC_DEFINE(HAVE_LIBGTOP) - AC_DEFINE_UNQUOTED(LIBGTOP_VERSION, "$LIBGTOP_VERSION") - AC_DEFINE_UNQUOTED(LIBGTOP_VERSION_CODE, $LIBGTOP_VERSION_CODE) - AC_DEFINE_UNQUOTED(LIBGTOP_MAJOR_VERSION, $LIBGTOP_MAJOR_VERSION) - AC_DEFINE_UNQUOTED(LIBGTOP_MINOR_VERSION, $LIBGTOP_MINOR_VERSION) - AC_DEFINE_UNQUOTED(LIBGTOP_MICRO_VERSION, $LIBGTOP_MICRO_VERSION) - AC_DEFINE_UNQUOTED(LIBGTOP_SERVER_VERSION, $LIBGTOP_SERVER_VERSION) - AC_MSG_RESULT(yes) - dnl Note that an empty true branch is not valid sh syntax. - ifelse([$2], [], :, [$2]) - else - AC_MSG_RESULT(no) - if test "x$3" = "xfail"; then - AC_MSG_ERROR(LibGTop >= $min_libgtop_version not found) - else - AC_MSG_WARN(LibGTop >= $min_libgtop_version not found) - fi - fi - - AM_CONDITIONAL(HAVE_LIBGTOP, test x$no_libgtop != xyes) -]) - -AC_DEFUN([GNOME_INIT_LIBGTOP],[ - GNOME_LIBGTOP_HOOK($1,[ifelse([$3], [], :, [$3])],$2) -]) - -dnl -dnl GNOME_LIBGTOP_DOCU -dnl -dnl checks whether the documentation of LibGTop is installed -dnl - -AC_DEFUN([GNOME_LIBGTOP_DOCU], -[ - AC_REQUIRE([GNOME_LIBGTOP_HOOK]) - - helpdir="$LIBGTOP_DATADIR/gnome/help/libgtop" - - AC_MSG_CHECKING(whether you have the LibGTop Documentation) - - if test -f "$helpdir/C/topic.dat" ; then - have_libgtop_docu=yes - AC_DEFINE(HAVE_LIBGTOP_DOCU) - else - have_libgtop_docu=no - fi - - AC_MSG_RESULT($have_libgtop_docu) - - AM_CONDITIONAL(HAVE_LIBGTOP_DOCU, test x$have_libgtop_docu = xyes) -]) - diff --git a/glabels1/macros/gnome-objc-checks.m4 b/glabels1/macros/gnome-objc-checks.m4 deleted file mode 100644 index dc9691cf..00000000 --- a/glabels1/macros/gnome-objc-checks.m4 +++ /dev/null @@ -1,79 +0,0 @@ -AC_DEFUN([GNOME_CHECK_OBJC], -[ -dnl Look for an ObjC compiler. -dnl FIXME: extend list of possible names of ObjC compilers. - AC_CHECK_PROGS(OBJC, $OBJC egcs, "") - if test "x$OBJC" = "x" ; then - AC_CHECK_PROGS(OBJC, $OBJC egcc, "") - if test "x$OBJC" = "x" ; then - AC_CHECK_PROGS(OBJC, $OBJC gcc, "") - fi - fi - - AC_REQUIRE([GNOME_PTHREAD_CHECK]) - - OBJC_LIBS="-lobjc $PTHREAD_LIB" - AC_CHECK_FUNC(sched_yield,,[ - AC_CHECK_LIB(posix4,sched_yield, - OBJC_LIBS="$OBJC_LIBS -lposix4",, $OBJC_LIBS)]) - AC_SUBST(OBJC_LIBS) - - AC_CACHE_CHECK([if Objective C compiler ($OBJC) works], - ac_cv_prog_objc_works, [ - if test -n "$OBJC"; then - cat > conftest.m < -@interface myRandomObj : Object -{ -} -@end -@implementation myRandomObj -@end -int main () { - /* No, you are not seeing double. Remember that square brackets - are the autoconf m4 quotes. */ - id myid = [[myRandomObj alloc]]; - [[myid free]]; - return 0; -} -EOF - - $OBJC $CFLAGS -o conftest $LDFLAGS conftest.m $OBJC_LIBS 1>&AC_FD_CC 2>&1 - result=$? - rm -f conftest* - - if test $result -eq 0; then - ac_cv_prog_objc_works=yes - fi - else - ac_cv_prog_objc_works=no - fi - ]) - - AM_CONDITIONAL(OBJECTIVE_C, test x$ac_cv_prog_objc_works = xyes) - dnl Also set the shell variable OBJECTIVE_C to "yes" or "no". - OBJECTIVE_C=$ac_cv_prog_objc_works -]) - -AC_DEFUN([GNOME_INIT_OBJC], -[ - AC_MSG_CHECKING(for an obGnomeConf.sh) - my_gnome_libdir=`$GNOME_CONFIG --libdir` - if test -f $my_gnome_libdir/obGnomeConf.sh; then - . $my_gnome_libdir/obGnomeConf.sh - AC_MSG_RESULT(found $my_gnome_libdir) - ac_cv_have_gnome_objc=yes - else - AC_MSG_RESULT(not found) - AC_MSG_WARN(Could not find the obGnomeConf.sh file that is generated by gnome-objc install) - ac_cv_have_gnome_objc=no - fi - - dnl Add a conditional on whether or not we have gnome-objc - AM_CONDITIONAL(HAVE_GNOME_OBJC, test x$ac_cv_have_gnome_objc = xyes) - HAVE_GNOME_OBJC=$ac_cv_have_gnome_objc - - AC_SUBST(OBGNOME_INCLUDEDIR) - AC_SUBST(OBGNOME_LIBS) - AC_SUBST(OBGTK_LIBS) -]) diff --git a/glabels1/macros/gnome-orbit-check.m4 b/glabels1/macros/gnome-orbit-check.m4 deleted file mode 100644 index 54bf33aa..00000000 --- a/glabels1/macros/gnome-orbit-check.m4 +++ /dev/null @@ -1,33 +0,0 @@ -dnl -dnl GNOME_ORBIT_HOOK (script-if-orbit-found, failflag) -dnl -dnl if failflag is "failure" it aborts if orbit is not found. -dnl - -AC_DEFUN([GNOME_ORBIT_HOOK],[ - AC_PATH_PROG(ORBIT_CONFIG,orbit-config,no) - AC_PATH_PROG(ORBIT_IDL,orbit-idl,no) - AC_CACHE_CHECK([for working ORBit environment],gnome_cv_orbit_found,[ - if test x$ORBIT_CONFIG = xno -o x$ORBIT_IDL = xno; then - gnome_cv_orbit_found=no - else - gnome_cv_orbit_found=yes - fi - ]) - AM_CONDITIONAL(HAVE_ORBIT, test x$gnome_cv_orbit_found = xyes) - if test x$gnome_cv_orbit_found = xyes; then - $1 - ORBIT_CFLAGS=`orbit-config --cflags client server` - ORBIT_LIBS=`orbit-config --use-service=name --libs client server` - AC_SUBST(ORBIT_CFLAGS) - AC_SUBST(ORBIT_LIBS) - else - if test x$2 = xfailure; then - AC_MSG_ERROR(ORBit not installed or installation problem) - fi - fi -]) - -AC_DEFUN([GNOME_ORBIT_CHECK], [ - GNOME_ORBIT_HOOK([],failure) -]) diff --git a/glabels1/macros/gnome-print-check.m4 b/glabels1/macros/gnome-print-check.m4 deleted file mode 100644 index 7d98281d..00000000 --- a/glabels1/macros/gnome-print-check.m4 +++ /dev/null @@ -1,171 +0,0 @@ -# Configure paths for GNOME-PRINT -# Chris Lahey 99-2-5 -# stolen from Manish Singh again -# stolen back from Frank Belew -# stolen from Manish Singh -# Shamelessly stolen from Owen Taylor - -dnl AM_PATH_GNOME_PRINT([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]]) -dnl Test for GNOME-PRINT, and define GNOME_PRINT_CFLAGS and GNOME_PRINT_LIBS -dnl -AC_DEFUN(AM_PATH_GNOME_PRINT, -[dnl -dnl Get the cflags and libraries from the gnome-config script -dnl -AC_ARG_WITH(gnome-print-prefix,[ --with-gnome-print-prefix=PFX Prefix where GNOME-PRINT is installed (optional)], - gnome_print_prefix="$withval", gnome_print_prefix="") -AC_ARG_WITH(gnome-print-exec-prefix,[ --with-gnome-print-exec-prefix=PFX Exec prefix where GNOME-PRINT is installed (optional)], - gnome_print_exec_prefix="$withval", gnome_print_exec_prefix="") -AC_ARG_ENABLE(gnome-printtest, [ --disable-gnome-printtest Do not try to compile and run a test GNOME-PRINT program], - , enable_gnome_printtest=yes) - - if test x$gnome_print_exec_prefix != x ; then - gnome_print_args="$gnome_print_args --exec-prefix=$gnome_print_exec_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$gnome_print_exec_prefix/bin/gnome-config - fi - fi - if test x$gnome_print_prefix != x ; then - gnome_print_args="$gnome_print_args --prefix=$gnome_print_prefix" - if test x${GNOME_CONFIG+set} != xset ; then - GNOME_CONFIG=$gnome_print_prefix/bin/gnome-config - fi - fi - - AC_PATH_PROG(GNOME_CONFIG, gnome-config, no) - min_gnome_print_version=ifelse([$1], ,0.1.0,$1) - AC_MSG_CHECKING(for GNOME-PRINT - version >= $min_gnome_print_version) - no_gnome_print="" - if test "$GNOME_CONFIG" = "no" ; then - no_gnome_print=yes - else - GNOME_PRINT_CFLAGS=`$GNOME_CONFIG $gnome_printconf_args --cflags print` - GNOME_PRINT_LIBS=`$GNOME_CONFIG $gnome_printconf_args --libs print` - - gnome_print_major_version=`$GNOME_CONFIG $gnome_print_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'` - gnome_print_minor_version=`$GNOME_CONFIG $gnome_print_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'` - gnome_print_micro_version=`$GNOME_CONFIG $gnome_print_config_args --version | \ - sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'` - if test "x$enable_gnome_printtest" = "xyes" ; then - ac_save_CFLAGS="$CFLAGS" - ac_save_LIBS="$LIBS" - CFLAGS="$CFLAGS $GNOME_PRINT_CFLAGS" - LIBS="$LIBS $GNOME_PRINT_LIBS" -dnl -dnl Now check if the installed GNOME-PRINT is sufficiently new. (Also sanity -dnl checks the results of gnome-config to some extent -dnl - rm -f conf.gnome_printtest - AC_TRY_RUN([ -#include -#include -#include -#include - -static char* -my_strdup (char *str) -{ - char *new_str; - - if (str) - { - new_str = malloc ((strlen (str) + 1) * sizeof(char)); - strcpy (new_str, str); - } - else - new_str = NULL; - - return new_str; -} - -int main () -{ - int major, minor, micro; - char *tmp_version; - - system ("touch conf.gnome_printtest"); - - /* HP/UX 9 (%@#!) writes to sscanf strings */ - tmp_version = my_strdup("$min_gnome_print_version"); - if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) { - printf("%s, bad version string\n", "$min_gnome_print_version"); - exit(1); - } - return 0; -#if 0 - if (($gnome_print_major_version > major) || - (($gnome_print_major_version == major) && ($gnome_print_minor_version > minor)) || - (($gnome_print_major_version == major) && ($gnome_print_minor_version == minor) && ($gnome_print_micro_version >= micro))) - { - return 0; - } - else - { - printf("\n*** 'gnome-config print --version' returned %d.%d.%d, but the minimum version\n", $gnome_print_major_version, $gnome_print_minor_version, $gnome_print_micro_version); - printf("*** of GNOME-PRINT required is %d.%d.%d. If gnome-config is correct, then it is\n", major, minor, micro); - printf("*** best to upgrade to the required version.\n"); - printf("*** If gnome-config was wrong, set the environment variable GNOME_CONFIG\n"); - printf("*** to point to the correct copy of gnome-config, and remove the file\n"); - printf("*** config.cache before re-running configure\n"); - return 1; - } -#endif -} - -],, no_gnome_print=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - if test "x$no_gnome_print" = x ; then - AC_MSG_RESULT(yes) - ifelse([$2], , :, [$2]) - else - AC_MSG_RESULT(no) - if test "$GNOME_CONFIG" = "no" ; then - echo "*** The gnome-config script installed by GNOME-LIBS could not be found" - echo "*** If GNOME-PRINT was installed in PREFIX, make sure PREFIX/bin is in" - echo "*** your path, or set the GNOME_CONFIG environment variable to the" - echo "*** full path to gnome-config." - else - if test -f conf.gnome_printtest ; then - : - else - echo "*** Could not run GNOME-PRINT test program, checking why..." - CFLAGS="$CFLAGS $GNOME_PRINT_CFLAGS" - LIBS="$LIBS $GNOME_PRINT_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 GNOME-PRINT or finding the wrong" - echo "*** version of GNOME-PRINT. If it is not finding GNOME-PRINT, 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 GNOME-PRINT was incorrectly installed" - echo "*** or that you have moved GNOME-PRINT since it was installed. In the latter case, you" - echo "*** may want to edit the gnome-config script: $GNOME_CONFIG" ]) - CFLAGS="$ac_save_CFLAGS" - LIBS="$ac_save_LIBS" - fi - fi - GNOME_PRINT_CFLAGS="" - GNOME_PRINT_LIBS="" - ifelse([$3], , :, [$3]) - fi - AC_SUBST(GNOME_PRINT_CFLAGS) - AC_SUBST(GNOME_PRINT_LIBS) - rm -f conf.gnome_printtest -]) - -AC_DEFUN([GNOME_PRINT_CHECK], [ - AM_PATH_GNOME_PRINT(0.1.0,,[AC_MSG_ERROR(GNOME-PRINT not found)]) -]) diff --git a/glabels1/macros/gnome-pthread-check.m4 b/glabels1/macros/gnome-pthread-check.m4 deleted file mode 100644 index a4eb3b48..00000000 --- a/glabels1/macros/gnome-pthread-check.m4 +++ /dev/null @@ -1,16 +0,0 @@ -dnl -dnl And better, use gthreads instead... -dnl - -AC_DEFUN([GNOME_PTHREAD_CHECK],[ - PTHREAD_LIB="" - AC_CHECK_LIB(pthread, pthread_create, PTHREAD_LIB="-lpthread", - [AC_CHECK_LIB(pthreads, pthread_create, PTHREAD_LIB="-lpthreads", - [AC_CHECK_LIB(c_r, pthread_create, PTHREAD_LIB="-lc_r", - [AC_CHECK_FUNC(pthread_create)] - )] - )] - ) - AC_SUBST(PTHREAD_LIB) - AC_PROVIDE([GNOME_PTHREAD_CHECK]) -]) diff --git a/glabels1/macros/gnome-support.m4 b/glabels1/macros/gnome-support.m4 deleted file mode 100644 index 2c1d0498..00000000 --- a/glabels1/macros/gnome-support.m4 +++ /dev/null @@ -1,68 +0,0 @@ -dnl GNOME_SUPPORT_CHECKS -dnl Check for various support functions needed by the standard -dnl Gnome libraries. Sets LIBOBJS, might define some macros. -dnl This should only be used when building the Gnome libs; -dnl Gnome clients should not need this macro. -AC_DEFUN([GNOME_SUPPORT_CHECKS],[ - # we need an `awk' to build `gnomesupport.h' - AC_REQUIRE([AC_PROG_AWK]) - - # this should go away soon - need_gnome_support=yes - - save_LIBOBJS="$LIBOBJS" - LIBOBJS= - - AC_CHECK_FUNCS(getopt_long,,LIBOBJS="$LIBOBJS getopt.o getopt1.o") - - # for `scandir' - AC_HEADER_DIRENT - - # copied from `configure.in' of `libiberty' - vars="program_invocation_short_name program_invocation_name sys_errlist" - for v in $vars; do - AC_MSG_CHECKING([for $v]) - AC_CACHE_VAL(gnome_cv_var_$v, - [AC_TRY_LINK([int *p;], [extern int $v; p = &$v;], - [eval "gnome_cv_var_$v=yes"], - [eval "gnome_cv_var_$v=no"])]) - if eval "test \"`echo '$gnome_cv_var_'$v`\" = yes"; then - AC_MSG_RESULT(yes) - n=HAVE_`echo $v | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($n) - else - AC_MSG_RESULT(no) - fi - done - - AC_REPLACE_FUNCS(memmove mkstemp scandir strcasecmp strerror strndup strnlen) - AC_REPLACE_FUNCS(strtok_r strtod strtol strtoul vasprintf vsnprintf) - - AC_CHECK_FUNCS(realpath,,LIBOBJS="$LIBOBJS canonicalize.o") - - # to include `error.c' error.c has some HAVE_* checks - AC_CHECK_FUNCS(vprintf doprnt strerror_r) - AM_FUNC_ERROR_AT_LINE - - # This is required if we declare setreuid () and setregid (). - AC_TYPE_UID_T - - # see if we need to declare some functions. Solaris is notorious for - # putting functions into the `libc' but not listing them in the headers - AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h dirent.h) - GCC_NEED_DECLARATIONS(gethostname setreuid setregid getpagesize) - GCC_NEED_DECLARATION(scandir,[ -#ifdef HAVE_DIRENT_H -#include -#endif -]) - - # Turn our LIBOBJS into libtool objects. This is gross, but it - # requires changes to autoconf before it goes away. - LTLIBOBJS=`echo "$LIBOBJS" | sed 's/\.o/.lo/g'` - AC_SUBST(need_gnome_support) - AC_SUBST(LTLIBOBJS) - - LIBOBJS="$save_LIBOBJS" - AM_CONDITIONAL(BUILD_GNOME_SUPPORT, test "$need_gnome_support" = yes) -]) diff --git a/glabels1/macros/gnome-undelfs.m4 b/glabels1/macros/gnome-undelfs.m4 deleted file mode 100644 index c8ea6f4b..00000000 --- a/glabels1/macros/gnome-undelfs.m4 +++ /dev/null @@ -1,20 +0,0 @@ -dnl GNOME_UNDELFS_CHECKS -dnl Check for ext2fs undel support. -dnl Set shell variable ext2fs_undel to "yes" if we have it, -dnl "no" otherwise. May define USE_EXT2FSLIB for cpp. -dnl Will set EXT2FS_UNDEL_LIBS to required libraries. - -AC_DEFUN([GNOME_UNDELFS_CHECKS], [ - AC_CHECK_HEADERS(ext2fs/ext2fs.h linux/ext2_fs.h) - ext2fs_undel=no - EXT2FS_UNDEL_LIBS= - if test x$ac_cv_header_ext2fs_ext2fs_h = xyes - then - if test x$ac_cv_header_linux_ext2_fs_h = xyes - then - AC_DEFINE(USE_EXT2FSLIB) - ext2fs_undel=yes - EXT2FS_UNDEL_LIBS="-lext2fs -lcom_err" - fi - fi -]) diff --git a/glabels1/macros/gnome-vfs.m4 b/glabels1/macros/gnome-vfs.m4 deleted file mode 100644 index 8ca361f2..00000000 --- a/glabels1/macros/gnome-vfs.m4 +++ /dev/null @@ -1,120 +0,0 @@ -dnl GNOME_VFS_CHECKS -dnl Check for various functions needed by libvfs. -dnl This has various effects: -dnl Sets GNOME_VFS_LIBS to libraries required -dnl Sets termnet to true or false depending on whether it is required. -dnl If yes, defines USE_TERMNET. -dnl Sets vfs_flags to "pretty" list of vfs implementations we include. -dnl Sets shell variable use_vfs to yes (default, --with-vfs) or -dnl "no" (--without-vfs). -dnl Calls AC_SUBST(mcserv), which is either empty or "mcserv". - -dnl Private define -AC_DEFUN([GNOME_WITH_VFS],[ - dnl FIXME: network checks should probably be in their own macro. - AC_CHECK_LIB(nsl, t_accept) - AC_CHECK_LIB(socket, socket) - - have_socket=no - AC_CHECK_FUNCS(socket, have_socket=yes) - if test $have_socket = no; then - # socket is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, socket, [ - LIBS="$LIBS -l$lib" - have_socket=yes - AC_DEFINE(HAVE_SOCKET) - break]) - done - fi - - have_gethostbyname=no - AC_CHECK_FUNC(gethostbyname, have_gethostbyname=yes) - if test $have_gethostbyname = no; then - # gethostbyname is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, gethostbyname, [LIBS="$LIBS -l$lib"; have_gethostbyname=yes; break]) - done - fi - - vfs_flags="tarfs" - use_net_code=false - if test $have_socket = yes; then - AC_STRUCT_LINGER - AC_CHECK_FUNCS(pmap_set, , [ - AC_CHECK_LIB(rpc, pmap_set, [ - LIBS="-lrpc $LIBS" - AC_DEFINE(HAVE_PMAP_SET) - ])]) - AC_CHECK_FUNCS(pmap_getport pmap_getmaps rresvport) - dnl add for source routing support setsockopt - AC_CHECK_HEADERS(rpc/pmap_clnt.h) - vfs_flags="$vfs_flags, mcfs, ftpfs, fish" - use_net_code=true - fi - - dnl - dnl Samba support - dnl - smbfs="" - SAMBAFILES="" - AC_ARG_WITH(samba, - [--with-samba Support smb virtual file system],[ - if test "x$withval" != "xno"; then - AC_DEFINE(WITH_SMBFS) - vfs_flags="$vfs_flags, smbfs" - smbfs="smbfs.o" - SAMBAFILES="\$(SAMBAFILES)" - fi - ]) - AC_SUBST(smbfs) - AC_SUBST(SAMBAFILES) - - dnl - dnl The termnet support - dnl - termnet=false - AC_ARG_WITH(termnet, - [--with-termnet If you want a termified net support],[ - if test x$withval = xyes; then - AC_DEFINE(USE_TERMNET) - termnet=true - fi - ]) - - TERMNET="" - AC_DEFINE(USE_VFS) - if $use_net_code; then - AC_DEFINE(USE_NETCODE) - fi - mcserv= - if test $have_socket = yes; then - mcserv="mcserv" - if $termnet; then - TERMNET="-ltermnet" - fi - fi - - AC_SUBST(TERMNET) - AC_SUBST(mcserv) - -dnl FIXME: -dnl GNOME_VFS_LIBS= - -]) - -AC_DEFUN([GNOME_VFS_CHECKS],[ - use_vfs=yes - AC_ARG_WITH(vfs, - [--with-vfs Compile with the VFS code], - use_vfs=$withval - ) - case $use_vfs in - yes) GNOME_WITH_VFS;; - no) use_vfs=no;; - *) use_vfs=no;; - dnl Should we issue a warning? - esac -]) - - diff --git a/glabels1/macros/gnome-x-checks.m4 b/glabels1/macros/gnome-x-checks.m4 deleted file mode 100644 index 1e397ef8..00000000 --- a/glabels1/macros/gnome-x-checks.m4 +++ /dev/null @@ -1,80 +0,0 @@ -dnl GNOME_X_CHECKS -dnl -dnl Basic X11 related checks for X11. At the end, the following will be -dnl defined/changed: -dnl GTK_{CFLAGS,LIBS} From AM_PATH_GTK -dnl CPPFLAGS Will include $X_CFLAGS -dnl GNOME_HAVE_SM `true' or `false' depending on whether session -dnl management is available. It is available if -dnl both -lSM and X11/SM/SMlib.h exist. (Some -dnl Solaris boxes have the library but not the header) -dnl XPM_LIBS -lXpm if Xpm library is present, otherwise "" -dnl -dnl The following configure cache variables are defined (but not used): -dnl gnome_cv_passdown_{x_libs,X_LIBS,X_CFLAGS} -dnl -AC_DEFUN([GNOME_X_CHECKS], -[ - AM_PATH_GTK(1.2.0,,AC_MSG_ERROR(GTK not installed, or gtk-config not in path)) - dnl Hope that GTK_CFLAGS have only -I and -D. Otherwise, we could - dnl test -z "$x_includes" || CPPFLAGS="$CPPFLAGS -I$x_includes" - dnl - dnl Use CPPFLAGS instead of CFLAGS because AC_CHECK_HEADERS uses - dnl CPPFLAGS, not CFLAGS - CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" - - saved_ldflags="$LDFLAGS" - LDFLAGS="$LDFLAGS $GTK_LIBS" - - gnome_cv_passdown_x_libs="$GTK_LIBS" - gnome_cv_passdown_X_LIBS="$GTK_LIBS" - gnome_cv_passdown_X_CFLAGS="$GTK_CFLAGS" - gnome_cv_passdown_GTK_LIBS="$GTK_LIBS" - - LDFLAGS="$saved_ldflags $GTK_LIBS" - -dnl We are requiring GTK >= 1.1.1, which means this will be fine anyhow. - USE_DEVGTK=true - -dnl AC_MSG_CHECKING([whether to use features from (unstable) GTK+ 1.1.x]) -dnl AC_EGREP_CPP(answer_affirmatively, -dnl [#include -dnl #ifdef GTK_HAVE_FEATURES_1_1_0 -dnl answer_affirmatively -dnl #endif -dnl ], dev_gtk=yes, dev_gtk=no) -dnl if test "$dev_gtk" = "yes"; then -dnl USE_DEVGTK=true -dnl fi -dnl AC_MSG_RESULT("$dev_gtk") - - GNOME_HAVE_SM=true - case "$GTK_LIBS" in - *-lSM*) - dnl Already found it. - ;; - *) - dnl Assume that if we have -lSM then we also have -lICE. - AC_CHECK_LIB(SM, SmcSaveYourselfDone, - [GTK_LIBS="-lSM -lICE $GTK_LIBS"],GNOME_HAVE_SM=false, - $x_libs -lICE) - ;; - esac - - if test "$GNOME_HAVE_SM" = true; then - AC_CHECK_HEADERS(X11/SM/SMlib.h,,GNOME_HAVE_SM=false) - fi - - if test "$GNOME_HAVE_SM" = true; then - AC_DEFINE(HAVE_LIBSM) - fi - - XPM_LIBS="" - AC_CHECK_LIB(Xpm, XpmFreeXpmImage, [XPM_LIBS="-lXpm"], , $x_libs) - AC_SUBST(XPM_LIBS) - - AC_REQUIRE([GNOME_PTHREAD_CHECK]) - LDFLAGS="$saved_ldflags" - - AC_PROVIDE([GNOME_X_CHECKS]) -]) diff --git a/glabels1/macros/gnome-xml-check.m4 b/glabels1/macros/gnome-xml-check.m4 deleted file mode 100644 index 1caad100..00000000 --- a/glabels1/macros/gnome-xml-check.m4 +++ /dev/null @@ -1,32 +0,0 @@ -dnl -dnl GNOME_XML_HOOK (script-if-xml-found, failflag) -dnl -dnl If failflag is "failure", script aborts due to lack of XML -dnl -dnl Check for availability of the libxml library -dnl the XML parser uses libz if available too -dnl - -AC_DEFUN([GNOME_XML_HOOK],[ - AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) - if test "$GNOME_CONFIG" = no; then - if test x$2 = xfailure; then - AC_MSG_ERROR(Could not find gnome-config) - fi - fi - GNOME_XML_CFLAGS=`$GNOME_CONFIG --cflags xml` - AC_SUBST(GNOME_XML_CFLAGS) - AC_CHECK_LIB(xml, xmlNewDoc, [ - $1 - GNOME_XML_LIB=`$GNOME_CONFIG --libs xml` - ], [ - if test x$2 = xfailure; then - AC_MSG_ERROR(Could not link sample xml program) - fi - ], `$GNOME_CONFIG --libs xml`) - AC_SUBST(GNOME_XML_LIB) -]) - -AC_DEFUN([GNOME_XML_CHECK], [ - GNOME_XML_HOOK([],failure) -]) diff --git a/glabels1/macros/gnome.m4 b/glabels1/macros/gnome.m4 deleted file mode 100644 index a3a9ca74..00000000 --- a/glabels1/macros/gnome.m4 +++ /dev/null @@ -1,124 +0,0 @@ -dnl -dnl GNOME_INIT_HOOK (script-if-gnome-enabled, [failflag], [additional-inits]) -dnl -dnl if failflag is "fail" then GNOME_INIT_HOOK will abort if gnomeConf.sh -dnl is not found. -dnl - -AC_DEFUN([GNOME_INIT_HOOK],[ - AC_SUBST(GNOME_LIBS) - AC_SUBST(GNOMEUI_LIBS) - AC_SUBST(GNOMEGNORBA_LIBS) - AC_SUBST(GTKXMHTML_LIBS) - AC_SUBST(ZVT_LIBS) - AC_SUBST(GNOME_LIBDIR) - AC_SUBST(GNOME_INCLUDEDIR) - - AC_ARG_WITH(gnome-includes, - [ --with-gnome-includes Specify location of GNOME headers],[ - CFLAGS="$CFLAGS -I$withval" - ]) - - AC_ARG_WITH(gnome-libs, - [ --with-gnome-libs Specify location of GNOME libs],[ - LDFLAGS="$LDFLAGS -L$withval" - gnome_prefix=$withval - ]) - - AC_ARG_WITH(gnome, - [ --with-gnome Specify prefix for GNOME files], - if test x$withval = xyes; then - want_gnome=yes - dnl Note that an empty true branch is not - dnl valid sh syntax. - ifelse([$1], [], :, [$1]) - else - if test "x$withval" = xno; then - want_gnome=no - else - want_gnome=yes - LDFLAGS="$LDFLAGS -L$withval/lib" - CFLAGS="$CFLAGS -I$withval/include" - gnome_prefix=$withval/lib - fi - fi, - want_gnome=yes) - - if test "x$want_gnome" = xyes; then - - AC_PATH_PROG(GNOME_CONFIG,gnome-config,no) - if test "$GNOME_CONFIG" = "no"; then - no_gnome_config="yes" - else - AC_MSG_CHECKING(if $GNOME_CONFIG works) - if $GNOME_CONFIG --libs-only-l gnome >/dev/null 2>&1; then - AC_MSG_RESULT(yes) - GNOME_GNORBA_HOOK([],$2) - GNOME_LIBS="`$GNOME_CONFIG --libs-only-l gnome`" - GNOMEUI_LIBS="`$GNOME_CONFIG --libs-only-l gnomeui`" - GNOMEGNORBA_LIBS="`$GNOME_CONFIG --libs-only-l gnorba gnomeui`" - GTKXMHTML_LIBS="`$GNOME_CONFIG --libs-only-l gtkxmhtml`" - ZVT_LIBS="`$GNOME_CONFIG --libs-only-l zvt`" - GNOME_LIBDIR="`$GNOME_CONFIG --libs-only-L gnorba gnomeui`" - GNOME_INCLUDEDIR="`$GNOME_CONFIG --cflags gnorba gnomeui`" - $1 - else - AC_MSG_RESULT(no) - no_gnome_config="yes" - fi - fi - - if test x$exec_prefix = xNONE; then - if test x$prefix = xNONE; then - gnome_prefix=$ac_default_prefix/lib - else - gnome_prefix=$prefix/lib - fi - else - gnome_prefix=`eval echo \`echo $libdir\`` - fi - - if test "$no_gnome_config" = "yes"; then - AC_MSG_CHECKING(for gnomeConf.sh file in $gnome_prefix) - if test -f $gnome_prefix/gnomeConf.sh; then - AC_MSG_RESULT(found) - echo "loading gnome configuration from" \ - "$gnome_prefix/gnomeConf.sh" - . $gnome_prefix/gnomeConf.sh - $1 - else - AC_MSG_RESULT(not found) - if test x$2 = xfail; then - AC_MSG_ERROR(Could not find the gnomeConf.sh file that is generated by gnome-libs install) - fi - fi - fi - fi - - if test -n "$3"; then - n="$3" - for i in $n; do - AC_MSG_CHECKING(extra library \"$i\") - case $i in - applets) - AC_SUBST(GNOME_APPLETS_LIBS) - GNOME_APPLETS_LIBS=`$GNOME_CONFIG --libs-only-l applets` - AC_MSG_RESULT($GNOME_APPLETS_LIBS);; - capplet) - AC_SUBST(GNOME_CAPPLET_LIBS) - GNOME_CAPPLET_LIBS=`$GNOME_CONFIG --libs-only-l capplet` - AC_MSG_RESULT($GNOME_CAPPLET_LIBS);; - *) - AC_MSG_RESULT(unknown library) - esac - done - fi -]) - -dnl -dnl GNOME_INIT ([additional-inits]) -dnl - -AC_DEFUN([GNOME_INIT],[ - GNOME_INIT_HOOK([],fail,$1) -]) diff --git a/glabels1/macros/linger.m4 b/glabels1/macros/linger.m4 deleted file mode 100644 index dfa7c8ae..00000000 --- a/glabels1/macros/linger.m4 +++ /dev/null @@ -1,28 +0,0 @@ -dnl -dnl Check for struct linger -dnl -AC_DEFUN(AC_STRUCT_LINGER, [ -av_struct_linger=no -AC_MSG_CHECKING(struct linger is available) -AC_TRY_RUN([ -#include -#include - -struct linger li; - -main () -{ - li.l_onoff = 1; - li.l_linger = 120; - exit (0); -} -],[ -AC_DEFINE(HAVE_STRUCT_LINGER) -av_struct_linger=yes -],[ -av_struct_linger=no -],[ -av_struct_linger=no -]) -AC_MSG_RESULT($av_struct_linger) -]) diff --git a/glabels1/macros/need-declaration.m4 b/glabels1/macros/need-declaration.m4 deleted file mode 100644 index d5b7bc66..00000000 --- a/glabels1/macros/need-declaration.m4 +++ /dev/null @@ -1,42 +0,0 @@ -dnl See whether we need a declaration for a function. -dnl GCC_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES]) -AC_DEFUN(GCC_NEED_DECLARATION, -[AC_MSG_CHECKING([whether $1 must be declared]) -AC_CACHE_VAL(gcc_cv_decl_needed_$1, -[AC_TRY_COMPILE([ -#include -#ifdef HAVE_STRING_H -#include -#else -#ifdef HAVE_STRINGS_H -#include -#endif -#endif -#ifdef HAVE_STDLIB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -$2], -[char *(*pfn) = (char *(*)) $1], -eval "gcc_cv_decl_needed_$1=no", eval "gcc_cv_decl_needed_$1=yes")]) -if eval "test \"`echo '$gcc_cv_decl_needed_'$1`\" = yes"; then - AC_MSG_RESULT(yes) - gcc_need_declarations="$gcc_need_declarations $1" - gcc_tr_decl=NEED_DECLARATION_`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'` - AC_DEFINE_UNQUOTED($gcc_tr_decl) -else - AC_MSG_RESULT(no) -fi -])dnl - -dnl Check multiple functions to see whether each needs a declaration. -dnl GCC_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES]) -AC_DEFUN(GCC_NEED_DECLARATIONS, -[for ac_func in $1 -do -GCC_NEED_DECLARATION($ac_func, $2) -done -] -) diff --git a/glabels1/missing b/glabels1/missing deleted file mode 100755 index 7789652e..00000000 --- a/glabels1/missing +++ /dev/null @@ -1,190 +0,0 @@ -#! /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 diff --git a/glabels1/pixmaps/glabels-about-logo.png b/glabels1/pixmaps/glabels-about-logo.png deleted file mode 100644 index 0f15c0cb11c156770db24d5d9daf3495b18bc4ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31091 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 z%0D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 diff --git a/glabels1/pixmaps/glabels-icon.png b/glabels1/pixmaps/glabels-icon.png deleted file mode 100644 index 298ea89eb4b7cf19cca8fcd3d1fb25f61bb10f2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 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 z 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

y9_Z^rW}0hkzlLV{v9^x~H% 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

nGD@@(@nOM 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 diff --git a/glabels1/po/ChangeLog b/glabels1/po/ChangeLog deleted file mode 100644 index bd1b32e6..00000000 --- a/glabels1/po/ChangeLog +++ /dev/null @@ -1,23 +0,0 @@ -2002-08-24 gettextize - - * Makefile.in.in: Upgrade to gettext-0.11.1. - * boldquot.sed: New file, from gettext-0.11.1. - * en@boldquot.header: New file, from gettext-0.11.1. - * en@quot.header: New file, from gettext-0.11.1. - * insert-header.sin: New file, from gettext-0.11.1. - * quot.sed: New file, from gettext-0.11.1. - * remove-potcdate.sin: New file, from gettext-0.11.1. - * Rules-quot: New file, from gettext-0.11.1. - * cat-id-tbl.c: Remove file. - * stamp-cat-id: Remove file. - -2002-06-29 Olivier Berger - - * fr.po: updated translation for 0.4.4 - -2002-06-27 gettextize - - * Makefile.in.in: Upgrade to gettext-0.10.38. - * cat-id-tbl.c: Remove file. - * stamp-cat-id: Remove file. - diff --git a/glabels1/po/Makefile.in.in b/glabels1/po/Makefile.in.in deleted file mode 100644 index 32b73765..00000000 --- a/glabels1/po/Makefile.in.in +++ /dev/null @@ -1,196 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995-1997, 2000, 2001 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@ - -# These two variables depend on the location of this directory. -subdir = po -top_builddir = .. - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -localedir = $(datadir)/locale -gettextsrcdir = $(datadir)/gettext/po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` - -CC = @CC@ -GMSGFMT = @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = @XGETTEXT@ -MSGMERGE = msgmerge - -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -$(POFILES) $(GMOFILES) - -POTFILES = \ - -CATALOGS = @CATALOGS@ - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo - -.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) --statistics -o $$file $< - - -all: all-@USE_NLS@ - -all-yes: $(CATALOGS) -all-no: - -# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', -# otherwise packages like GCC can not be built if only parts of the source -# have been downloaded. - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in - $(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 ) - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ - if test "$(PACKAGE)" = "gettext"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi -install-data-no: all -install-data-yes: all - $(mkinstalldirs) $(DESTDIR)$(datadir) - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ - echo "installing $(srcdir)/$$cat as" \ - "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ - fi; \ - done - -# 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/\.gmo$$//'`; \ - rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -check: all - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.new.po - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo - -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 = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: - $(MAKE) update-po - @$(MAKE) dist2 -# This is a separate target because 'update-po' must be executed before. -dist2: $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - if test -f $$file; then dir=.; else dir=$(srcdir); fi; \ - cp -p $$dir/$$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ - cd $(srcdir); \ - catalogs='$(GMOFILES)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\.gmo$$//'`; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ - mv -f $$lang.new.po $$lang.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.new.po; \ - fi; \ - done - $(MAKE) update-gmo - -update-gmo: Makefile $(GMOFILES) - @: - -Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in - cd $(top_builddir) \ - && 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: diff --git a/glabels1/po/POTFILES.in b/glabels1/po/POTFILES.in deleted file mode 100644 index 71ca27f1..00000000 --- a/glabels1/po/POTFILES.in +++ /dev/null @@ -1,100 +0,0 @@ -# List of source files containing translatable strings. - -src/glabels.c -src/glabels_batch.c -src/splash.h -src/splash.c -src/mdi.h -src/mdi.c -src/display.c -src/display.h -src/item.c -src/item.h -src/item_text.c -src/item_text.h -src/item_line.c -src/item_line.h -src/item_box.c -src/item_box.h -src/item_ellipse.c -src/item_ellipse.h -src/item_image.c -src/item_image.h -src/item_barcode.c -src/item_barcode.h -src/highlight.c -src/highlight.h -src/prop_size.c -src/prop_size.h -src/prop_position.c -src/prop_position.h -src/prop_line.c -src/prop_line.h -src/prop_fill.c -src/prop_fill.h -src/prop_text.c -src/prop_text.h -src/prop_text_entry.c -src/prop_text_entry.h -src/prop_vector.c -src/prop_vector.h -src/prop_bc.c -src/prop_bc.h -src/prop_bc_style.c -src/prop_bc_style.h -src/prop_bc_data.c -src/prop_bc_data.h -src/propertybox.c -src/propertybox.h -src/label.h -src/label.c -src/template.h -src/template.c -src/text_node.h -src/text_node.c -src/merge_properties.c -src/merge_properties.h -src/merge.c -src/merge.h -src/merge_text.c -src/merge_text.h -src/merge_ui.c -src/merge_ui.h -src/merge_ui_text.c -src/merge_ui_text.h -src/bc.c -src/bc.h -src/bc_postnet.c -src/bc_postnet.h -src/bc_gnubarcode.c -src/bc_gnubarcode.h -src/tools.h -src/tools.c -src/stock.h -src/stock.c -src/menu.h -src/menu.c -src/file.c -src/file.h -src/media_select.c -src/media_select.h -src/rotate_select.c -src/rotate_select.h -src/print.c -src/print.h -src/print_dialog.c -src/print_dialog.h -src/print_copies.c -src/print_copies.h -src/print_merge.c -src/print_merge.h -src/mini_preview.c -src/mini_preview.h -src/edit.c -src/edit.h -src/prefs.h -src/prefs.c -src/util.c -src/util.h -src/hack.c -src/hack.h diff --git a/glabels1/po/cat-id-tbl.c b/glabels1/po/cat-id-tbl.c deleted file mode 100644 index e69de29b..00000000 diff --git a/glabels1/po/de.po b/glabels1/po/de.po deleted file mode 100644 index 60c51fe7..00000000 --- a/glabels1/po/de.po +++ /dev/null @@ -1,767 +0,0 @@ -# French translation of glabels. -# Copyright (C) 2001 Jim Evins -# Marcus Bauer , 2001. -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.2.0\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2001-10-15 15:31+0200\n" -"Last-Translator: Marcus Bauer \n" -"Language-Team: German <>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "" - -#: src/glabels_batch.c:55 -#, fuzzy -msgid "sheets" -msgstr "Seiten:" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "" - -#: src/glabels_batch.c:57 -#, fuzzy -msgid "copies" -msgstr "Kopien" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "Begrenzungen drucken (um Druckausrichtung zu testen)" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "Spiegelbildlich drucken" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "" - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "" - -#: src/glabels_batch.c:139 -#, fuzzy, c-format -msgid "cannot open glabels file %s\n" -msgstr "Datei kann nicht geöffnet werden" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "Gespeicherte Kopie von %s wiederherstellen?" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "Unbekannter Medientyp. Nehme daher Standardeinstellung." - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"``%s'' wurde geändert \n" -"\n" -"Wollen Sie speichern?" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "Nicht speichern." - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "Kann Datei nicht speichern" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "Speichern unter..." - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "Schließen / Speichern des Etikett als" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "Etikett nicht mehr gültig!" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "Dateinamen angeben" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "Fehler beim Schreiben der Datei" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "Löschen" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "Ganz nach vorne" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "Ganz nach hinten" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "Einstellungen ändern..." - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "Text Objekt bearbeiten" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "Text" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "Erscheinungsbild" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -#, fuzzy -msgid "Text Properties" -msgstr "Text Einstellungen" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "Position" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "Linienobjekt bearbeiten..." - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "Linie" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "Position/Breite" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "Breite" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "Rechteck bearbeiten..." - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "Outline" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "Füllen" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "Ellipse bearbeiten..." - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "Bildeinstellungen bearbeiten..." - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "Bild" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "Reset Bildgröße" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "Bildformat wird zur Zeit nicht unterstützt" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "Barcode bearbeiten..." - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "Wert" - -#: src/item_barcode.c:299 -#, fuzzy -msgid "Barcode data" -msgstr "Barcode Wert" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "Allgemeine Einstellungen" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "Stil" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "Ungültiger Barcode-Wert" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -#, fuzzy -msgid "Width:" -msgstr "Länge der Linie" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "Höhe" - -#: src/prop_size.c:222 -#, fuzzy -msgid "Maintain current aspect ratio" -msgstr "Seitenverhältnis beibehalten" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -#, fuzzy -msgid "points" -msgstr "Punkt" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -#, fuzzy -msgid "Color:" -msgstr "Farbe" - -#. Font label -#: src/prop_text.c:181 -#, fuzzy -msgid "Font:" -msgstr "Font:" - -#. Alignment label -#: src/prop_text.c:248 -#, fuzzy -msgid "Alignment:" -msgstr "Textanordnung:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "Key:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "Datenfeld einfügen" - -#. Length label -#: src/prop_vector.c:183 -#, fuzzy -msgid "Length:" -msgstr "Länge" - -#. Angle label -#: src/prop_vector.c:207 -#, fuzzy -msgid "Angle:" -msgstr "Winkel" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "Grad" - -#. Scale Label -#: src/prop_bc.c:168 -#, fuzzy -msgid "Scale:" -msgstr "Skalierung" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "Zeige Text mit Barcode" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "Literale:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "Fehler: xmlParseFile error" - -#: src/label.c:228 -msgid "No document root" -msgstr "Kein document root" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "Fehlerhafter Dokument-Typ, glabels Namespace nicht gefunden" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "Fehlerhafter root node = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "fehlerhafter node = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "Problem beim Speichern der xml-Datei." - -#: src/template.c:224 -msgid "No template files found!" -msgstr "Keine Dateivorlagen gefunden!" - -#: src/merge_properties.c:82 -#, fuzzy -msgid "Edit document-merge properties" -msgstr "Dokumenten Mischerei bearbeiten..." - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "Quelle" - -#: src/merge_properties.c:143 -#, fuzzy -msgid "Format:" -msgstr "Font" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "Ort:" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "Felder" - -#: src/merge.c:78 -msgid "None" -msgstr "Keine" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "Text mit Tabulatoren als Trennern" - -#: src/merge.c:94 -#, fuzzy -msgid "Text with comma separators (CSV)" -msgstr "Text mit Kommata als Separatoren" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "Text mit Doppelpunkten als Separatoren" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "Nicht verfügbar" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "Wählen Sie die einzumischende Datenquelle" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "Spalte" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "Benutzerdefinierter Feldschlüssel" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "Beispiel Daten" - -#: src/menu.c:50 -msgid "_New" -msgstr "_Neu" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "Erzeuge neues, leeres Etikett" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "A_uswahl aufheben" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "Alle Auswahlen aufheben" - -#: src/menu.c:94 -#, fuzzy -msgid "Select" -msgstr "Löschen" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "Objekte auswählen, bewegen, ändern" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "Textobjekt erzeugen" - -#: src/menu.c:103 -msgid "Box" -msgstr "Box" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "Rechteck-Objekt erzeugen" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "Linienobjekt erzeugen" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "Ellipse" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "Ellipsenobjekt erzeugen" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "Bildobjekt erzeugen" - -#: src/menu.c:116 -#, fuzzy -msgid "Barcode" -msgstr "Barcode Wert" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "Barcodeobjekt erzeugen" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "vergrößern" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "verkleinern" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "Zoom 1:1" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "Maßstab auf 1:1 einstellen" - -#: src/menu.c:132 src/menu.c:223 -#, fuzzy -msgid "Merge properties" -msgstr "Einstellungen ändern..." - -#: src/menu.c:133 -#, fuzzy -msgid "Edit merge properties" -msgstr "Bildeinstellungen bearbeiten..." - -#: src/menu.c:157 -msgid "_Tools" -msgstr "_Werkzeuge" - -#: src/menu.c:168 -msgid " New " -msgstr " Neu " - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "Neues Etikett/Neue Karte" - -#: src/menu.c:170 -msgid " Open " -msgstr " Öffnen " - -#: src/menu.c:170 -msgid "Open a file" -msgstr "Datei öffnen" - -#: src/menu.c:172 -msgid " Save " -msgstr " Speichern " - -#: src/menu.c:172 -msgid "Save current file" -msgstr "Aktuelle Datei speichern" - -#: src/menu.c:175 -msgid " Print " -msgstr " Drucken " - -#: src/menu.c:175 -msgid "Print current file" -msgstr "Aktuelle Datei drucken" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"Ein GNOME-Programm zur Erstellung von Etiketten und Visitenkarten.\n" -" \n" -"Glabels ist freie Software; Sie können sie weiterverteilen und/oder ändern " -"unter den Bedingungen der GNU General Public License, veröffentlicht von der " -"Free Software Foundation, entweder Version 2 der Lizenz oder (optional) " -"jeder späteren Version.\n" -" \n" -"Dieses Programm wird verteilt in der Hoffnung, dass es nützlich ist, aber " -"OHNE JEDE GARANTIE; Weitere Details in der GNU General Public License.\n" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "Funktion noch nicht implementiert!" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "Neues Etikett oder neue Karte" - -#: src/file.c:98 -msgid "Media Type" -msgstr "Medien Typ" - -#: src/file.c:109 -#, fuzzy -msgid "Label orientation" -msgstr "Ausrichtung ändern" - -#: src/file.c:211 -msgid "Open" -msgstr "Öffnen" - -#: src/file.c:213 -msgid "Open label" -msgstr "Öffnen Etikett" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "Datei kann nicht geöffnet werden" - -#: src/file.c:316 -msgid "Save label as" -msgstr "Datei speichern unter" - -#: src/media_select.c:222 -#, fuzzy -msgid "Description:" -msgstr "Position" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "Seiten Format:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "Etikett Format:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "Layout:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d pro Seite)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "Rotieren" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "Drucken" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "Kopien" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "Kontrolle der Mischung mit Datenquelle (Serienfunktion)" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "Optionen" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "Druckvorschau" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "Seiten:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "Labels" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "von:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "bis:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "Start bei Etikett" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "auf erster Seite" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "Zuordnen" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "Kopien:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels : Einstellungen" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "Anzeige Einheiten" - -#: src/prefs.c:231 -#, fuzzy -msgid "Points" -msgstr "Punkt" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "Inch" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "Millimeter" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "Standard Papierformat" - -#: src/prefs.c:450 -msgid "inches" -msgstr "Inch" - -#: src/prefs.c:452 -msgid "mm" -msgstr "mm" - -#~ msgid "Function is not yet implemented!" -#~ msgstr "Funktion noch nicht implementiert!" - -#~ msgid "w" -#~ msgstr "w" - -#~ msgid "h" -#~ msgstr "h" - -#~ msgid "x" -#~ msgstr "x" - -#~ msgid "y" -#~ msgstr "y" - -#~ msgid "Startup" -#~ msgstr "Programmstart" - -#~ msgid "Under construction" -#~ msgstr "Hier wird noch eifrig gebaut..." - -#, fuzzy -#~ msgid "Maintain original aspect ratio" -#~ msgstr "Seitenverhältnis beibehalten" - -#~ msgid "Text color" -#~ msgstr "Textfarbe" - -#~ msgid "Line Color" -#~ msgstr "Linienfarbe" - -#~ msgid "Fill Color" -#~ msgstr "Füllfarbe" diff --git a/glabels1/po/es.po b/glabels1/po/es.po deleted file mode 100644 index 44f00ddb..00000000 --- a/glabels1/po/es.po +++ /dev/null @@ -1,704 +0,0 @@ -# LANGUAGE translation of glabels. -# Copyright (C) 2002 Free Software Foundation, Inc. -# victor , 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.2.0\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2002-04-16 12:19+0200\n" -"Last-Translator: victor \n" -"Language-Team: Spanish/Spain \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "" - -#: src/glabels_batch.c:55 -#, fuzzy -msgid "sheets" -msgstr "Hojas:" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "" - -#: src/glabels_batch.c:57 -#, fuzzy -msgid "copies" -msgstr "Copias" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "Imprimir un esbozo (para verificar la alineación de la impresora)" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "Impresión invertida (imagen espejo)" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "" - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "" - -#: src/glabels_batch.c:139 -#, fuzzy, c-format -msgid "cannot open glabels file %s\n" -msgstr "No puedo abrir el archivo" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "¿ Recuperar la copia salvada de %s ?" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "Tipo de papel desconocido. Utilizando el tipo por omisión." - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"\"%s\" ha sido modificado.\n" -"\n" -"¿ Desea salvarlo ?" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "No salvar" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "No puedo salvar el archivo" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "Salva como" - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "Cerrar / Salvar etiqueta como" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "¡ La etiqueta ya no es válida !" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "Debe proporcionar un nombre de archivo" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "Error salvando el archivo" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "Borrar" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "Traer al frente" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "Enviar al fondo" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "Modificar propiedades" - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "Modificar las propiedades del objeto texto" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "Texto" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "Apariencia" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "Propiedades del texto" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "Posición" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "Modificar las propiedades del objeto línea" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "Línea" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "Posición/Tamaño" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "Tamaño" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "Modificar propiedades del objeto caja" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "Contorno" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "Relleno" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "Modificar las propiedades del objeto elipse" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "Modificar las propiedades del objeto imagen" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "Imagen" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "Restablecer el tamaño de la imagen" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "Formato de imagen no soportado actualmente" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "Modificar las propiedades del objeto código de barras" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "Datos" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "Datos del código de barras" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "General" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "Estilo" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "Código de barras no válido" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "Ancho" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "Alto" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "Mantener la proporción actual del aspecto" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "puntos" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "Color" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "Fuente:" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "Alineación:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "Clave:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "Insertar campo para fusionar" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "Longitud:" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "Ángulo:" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "grados" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "Escala:" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "Mostrar texto con código de barras" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "Literal:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "error xmlParseFile" - -#: src/label.c:228 -msgid "No document root" -msgstr "No hay documento raíz" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "documento de tipo erróneo, glabels Espacio de nombres no encontrado" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "Nodo raíz erróneo = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "Nodo erróneo = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "Problemas salvando archivo xml" - -#: src/template.c:224 -msgid "No template files found!" -msgstr "No he encontrado archivos de plantilla" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "Modificar las propiedades del documento de fusión" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "Fuente" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "Formato:" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "Localización:" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "Campos" - -#: src/merge.c:78 -msgid "None" -msgstr "Ninguno" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "Texto separado con tabuladores" - -#: src/merge.c:94 -#, fuzzy -msgid "Text with comma separators (CSV)" -msgstr "Texto separado con commas" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "Texto separado con caracteres dos puntos" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "N/A" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "Seleccione la fuente de datos para fusionar" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "Columna" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "Campo clave personalizable" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "Datos de ejemplo" - -#: src/menu.c:50 -msgid "_New" -msgstr "_Nuevo" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "Crear una etiqueta vacía nueva" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "_Deseleccionar todo" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "Eliminar todas las selecciones" - -#: src/menu.c:94 -msgid "Select" -msgstr "Seleccionar" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "Seleccionar, mover y modificar objetos" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "Crear un objeto de texto" - -#: src/menu.c:103 -msgid "Box" -msgstr "Caja" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "Crear un objeto tipo caja/rectángulo" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "Crear un objeto línea" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "Elipse" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "Crear un objeto circular/elíptico" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "Crear un objeto imagen" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "Código de barras" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "Crear un objeto código de barras" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "Agrandar " - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "Reducir" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "Vista 1:1" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "Vista a 1:1" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "Propiedades de fusión de datos" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "Modificar propiedades de fusión de datos" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "_Herramientas" - -#: src/menu.c:168 -msgid " New " -msgstr "Nuevo" - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "Nueva tarjeta/etiqueta" - -#: src/menu.c:170 -msgid " Open " -msgstr " Abrir " - -#: src/menu.c:170 -msgid "Open a file" -msgstr "Abrir un archivo" - -#: src/menu.c:172 -msgid " Save " -msgstr " Guardar " - -#: src/menu.c:172 -msgid "Save current file" -msgstr "Guardar el archivo en uso" - -#: src/menu.c:175 -msgid " Print " -msgstr " Imprimir " - -#: src/menu.c:175 -msgid "Print current file" -msgstr "Imprimir el archivo en uso" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "¡ La funcionalidad no está aún implementada !" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "Nueva etiqueta o tarjeta" - -#: src/file.c:98 -msgid "Media Type" -msgstr "Tipo de papel" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "Orientación de la etiqueta" - -#: src/file.c:211 -msgid "Open" -msgstr "Abrir" - -#: src/file.c:213 -msgid "Open label" -msgstr "Abrir etiqueta" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "No puedo abrir el archivo" - -#: src/file.c:316 -msgid "Save label as" -msgstr "Guardar la etiqueta como" - -#: src/media_select.c:222 -msgid "Description:" -msgstr "Descripción:" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "Tamaño de la página:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "Tamaño de la etiqueta:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "Disposición:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d por hoja)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "Rotar" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "Imprimir" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "Copias" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "Control de la fusión de documentos" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "Opciones" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "Previsualizar la impresión" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "Hojas:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "Etiquetas" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "desde:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "hasta:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "Comenzar en la etiqueta" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "en la primera hoja" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "Copias:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels: Preferencias" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "Mostrar unidades de medida" - -#: src/prefs.c:231 -msgid "Points" -msgstr "Puntos" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "Pulgadas" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "Milímetros" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "Tamaño de página por omisión" - -#: src/prefs.c:450 -msgid "inches" -msgstr "pulgadas" - -#: src/prefs.c:452 -msgid "mm" -msgstr "mm" diff --git a/glabels1/po/fr.po b/glabels1/po/fr.po deleted file mode 100644 index bcceafa2..00000000 --- a/glabels1/po/fr.po +++ /dev/null @@ -1,1321 +0,0 @@ -# French translation of glabels. -# Copyright (C) 2001 Jim Evins -# Olivier Berger , 2001. -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.4.4\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2001-10-15 15:31+0200\n" -"Last-Translator: Olivier Berger \n" -"Language-Team: French \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "imprimer ce message" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "imprimer la version de glabels-batch utilisée" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "définit le fichier de sortie (défaut=\"output.ps\")" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "nom de fichier" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "nombre de pages (défaut=1)" - -# src/print_copies.c:193 -# src/print_copies.c:193 -# src/print_copies.c:171 -# src/print_copies.c:170 -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "feuilles" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "nombre de copies (défaut=1)" - -# src/print.c:153 -# src/print.c:153 -# src/print.c:146 -# src/print_dialog.c:104 -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "copies" - -# src/print.c:180 -# src/print.c:180 -# src/print.c:196 -# src/print_dialog.c:152 -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "imprimer des bordures (pour tester l'alignement de l'imprimante)" - -# src/print_dialog.c:160 -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "imprimer à l'envers (i.e. une image miroir)" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "[OPTION...] FICHIER_GLABELS..." - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "fichier glabels manquant\n" - -# src/file.c:214 -# src/file.c:214 -# src/file.c:249 -# src/file.c:249 -#: src/glabels_batch.c:139 -#, c-format -msgid "cannot open glabels file %s\n" -msgstr "impossible d'ouvrir le fichier glabels %s\n" - -# src/mdi.c:190 -# src/mdi.c:189 -# src/mdi.c:169 -# src/mdi.c:169 -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "Rétablir la version sauvegardée de %s ?" - -# src/mdi.c:219 -# src/mdi.c:207 -# src/mdi.c:207 -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "Type de media inconnu. Utilisation de celui par défaut." - -# src/mdi.c:477 -# src/mdi.c:483 -# src/mdi.c:455 -# src/mdi.c:455 -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"``%s'' a été modifié \n" -"\n" -"Voulez-vous l'enregistrer ?" - -# src/mdi.c:482 -# src/mdi.c:488 -# src/mdi.c:459 -# src/mdi.c:459 -#: src/mdi.c:459 -msgid "Don't save" -msgstr "Ne pas sauver" - -# src/file.c:248 src/mdi.c:635 -# src/file.c:248 src/mdi.c:641 -# src/file.c:288 src/mdi.c:601 -# src/file.c:288 src/mdi.c:601 -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "Impossible d'enregistrer le fichier" - -# src/file.c:271 src/mdi.c:660 -# src/file.c:271 src/mdi.c:666 -# src/file.c:311 src/mdi.c:623 -# src/file.c:311 src/mdi.c:623 -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "Enregistrer sous" - -# src/mdi.c:663 -# src/mdi.c:669 -# src/mdi.c:626 -# src/mdi.c:626 -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "Fermer / Enregistrer l'étiquette sous" - -# src/file.c:309 src/mdi.c:716 -# src/file.c:309 src/mdi.c:722 -# src/file.c:352 src/mdi.c:680 -# src/file.c:352 src/mdi.c:680 -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "Etiquette plus valide !" - -# src/file.c:319 src/mdi.c:729 -# src/file.c:319 src/mdi.c:735 -# src/file.c:362 src/mdi.c:693 -# src/file.c:362 src/mdi.c:693 -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "Vous devez donner un nom de fichier" - -# src/file.c:330 src/mdi.c:740 -# src/file.c:330 src/mdi.c:746 -# src/file.c:374 src/mdi.c:705 -# src/file.c:374 src/mdi.c:705 -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "Erreur d'écriture du fichier" - -# src/display.c:1157 src/display.c:1205 -# src/display.c:1160 src/display.c:1208 -# src/display.c:1171 src/display.c:1219 -# src/display.c:1186 src/display.c:1234 -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "Supprimer" - -# src/display.c:1167 src/display.c:1215 -# src/display.c:1170 src/display.c:1218 -# src/display.c:1181 src/display.c:1229 -# src/display.c:1196 src/display.c:1244 -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "Avancer au premier plan" - -# src/display.c:1173 src/display.c:1221 -# src/display.c:1176 src/display.c:1224 -# src/display.c:1187 src/display.c:1235 -# src/display.c:1202 src/display.c:1250 -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "Reculer à l'arrière-plan" - -# src/display.c:1194 -# src/display.c:1197 -# src/display.c:1208 -# src/display.c:1223 -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "Editer les propriétés..." - -# src/item_text.c:432 -# src/item_text.c:432 -# src/item_text.c:450 -# src/item_text.c:450 -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "Editer les propriétés de l'objet texte..." - -# src/item_text.c:442 src/item_text.c:627 -# src/item_text.c:442 src/item_text.c:627 -# src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -# src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "Texte" - -# src/item_barcode.c:334 src/item_box.c:261 src/item_ellipse.c:266 -# src/item_line.c:268 src/item_text.c:464 -# src/item_barcode.c:340 src/item_box.c:261 src/item_ellipse.c:266 -# src/item_line.c:268 src/item_text.c:464 -# src/item_barcode.c:317 src/item_box.c:245 src/item_ellipse.c:247 -# src/item_line.c:253 src/item_text.c:479 -# src/item_barcode.c:317 src/item_box.c:245 src/item_ellipse.c:247 -# src/item_line.c:253 src/item_text.c:479 -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "Apparence" - -# src/item_text.c:467 -# src/item_text.c:467 -# src/item_text.c:482 -# src/item_text.c:482 -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "Propriétés du texte" - -# src/item_barcode.c:362 src/item_barcode.c:365 src/item_box.c:291 -# src/item_ellipse.c:296 src/item_image.c:315 src/item_line.c:289 -# src/item_text.c:487 src/item_text.c:490 -# src/item_barcode.c:368 src/item_barcode.c:371 src/item_box.c:291 -# src/item_ellipse.c:296 src/item_image.c:315 src/item_line.c:289 -# src/item_text.c:487 src/item_text.c:490 -# src/item_barcode.c:345 src/item_barcode.c:348 src/item_box.c:275 -# src/item_ellipse.c:277 src/item_image.c:318 src/item_line.c:274 -# src/item_text.c:500 src/item_text.c:503 -# src/item_barcode.c:345 src/item_barcode.c:348 src/item_box.c:275 -# src/item_ellipse.c:277 src/item_image.c:318 src/item_line.c:274 -# src/item_text.c:500 src/item_text.c:503 -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "Position" - -# src/item_line.c:258 -# src/item_line.c:258 -# src/item_line.c:243 -# src/item_line.c:243 -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "Editer les propriétés de l'objet ligne..." - -# src/item_line.c:271 -# src/item_line.c:271 -# src/item_line.c:256 src/menu.c:106 -# src/item_line.c:256 src/menu.c:106 -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "Ligne" - -# src/item_box.c:288 src/item_ellipse.c:293 src/item_image.c:312 -# src/item_line.c:286 -# src/item_box.c:288 src/item_ellipse.c:293 src/item_image.c:312 -# src/item_line.c:286 -# src/item_box.c:272 src/item_ellipse.c:274 src/item_image.c:315 -# src/item_line.c:271 -# src/item_box.c:272 src/item_ellipse.c:274 src/item_image.c:315 -# src/item_line.c:271 -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "Position/Taille" - -# src/item_box.c:302 src/item_ellipse.c:307 src/item_image.c:326 -# src/item_line.c:300 -# src/item_box.c:302 src/item_ellipse.c:307 src/item_image.c:326 -# src/item_line.c:300 -# src/item_box.c:286 src/item_ellipse.c:288 src/item_image.c:329 -# src/item_line.c:285 -# src/item_box.c:286 src/item_ellipse.c:288 src/item_image.c:329 -# src/item_line.c:285 -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "Taille" - -# src/item_box.c:251 -# src/item_box.c:251 -# src/item_box.c:235 -# src/item_box.c:235 -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "Editer les propriétés de l'objet boîte..." - -# src/item_box.c:264 src/item_ellipse.c:269 -# src/item_box.c:264 src/item_ellipse.c:269 -# src/item_box.c:248 src/item_ellipse.c:250 -# src/item_box.c:248 src/item_ellipse.c:250 -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "Bordure" - -# src/item_box.c:274 src/item_ellipse.c:279 -# src/item_box.c:274 src/item_ellipse.c:279 -# src/item_box.c:258 src/item_ellipse.c:260 -# src/item_box.c:258 src/item_ellipse.c:260 -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "Remplissage" - -# src/item_ellipse.c:256 -# src/item_ellipse.c:256 -# src/item_ellipse.c:237 -# src/item_ellipse.c:237 -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "Editer les propriétés de l'objet ellipse..." - -# src/item_image.c:272 -# src/item_image.c:272 -# src/item_image.c:257 -# src/item_image.c:257 -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "Editer les propriétés de l'objet image..." - -# src/item_image.c:283 -# src/item_image.c:283 -# src/item_image.c:268 src/menu.c:113 -# src/item_image.c:268 src/menu.c:113 -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "Image" - -# src/item_image.c:341 -# src/item_image.c:340 -# src/item_image.c:342 -# src/item_image.c:342 -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "Restaurer la taille d'image" - -# src/item_image.c:389 src/item_image.c:444 -# src/item_image.c:388 src/item_image.c:442 -# src/item_image.c:389 src/item_image.c:454 -# src/item_image.c:389 src/item_image.c:454 -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "Format d'image non supporté actuellement" - -# src/item_barcode.c:299 -# src/item_barcode.c:299 -# src/item_barcode.c:287 -# src/item_barcode.c:287 -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "Editer les propriétés de l'objet code-barre..." - -# src/item_barcode.c:309 -# src/item_barcode.c:308 -# src/item_barcode.c:297 -# src/item_barcode.c:297 -#: src/item_barcode.c:297 -msgid "Data" -msgstr "Données" - -# src/item_barcode.c:316 -# src/item_barcode.c:317 -# src/item_barcode.c:299 -# src/item_barcode.c:299 -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "Données de code-barre" - -# src/item_barcode.c:337 -# src/item_barcode.c:343 src/prefs.c:243 -# src/item_barcode.c:320 src/prefs.c:221 -# src/item_barcode.c:320 src/prefs.c:215 -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "Général" - -# src/item_barcode.c:347 -# src/item_barcode.c:353 -# src/item_barcode.c:330 -# src/item_barcode.c:330 -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "Style" - -# src/item_barcode.c:564 src/item_barcode.c:588 src/print.c:641 -# src/item_barcode.c:570 src/item_barcode.c:594 src/print.c:641 -# src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:799 -# src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:600 -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "Code-barre invalide" - -# src/prop_line.c:188 -# src/prop_line.c:187 src/prop_size.c:202 -# src/prop_line.c:169 src/prop_size.c:182 -# src/prop_line.c:169 src/prop_size.c:182 -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "Largeur :" - -# src/prop_size.c:220 -# src/prop_size.c:198 -# src/prop_size.c:198 -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "Hauteur :" - -# src/prop_size.c:215 -# src/prop_size.c:247 -# src/prop_size.c:222 -# src/prop_size.c:222 -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "Conserver le rapport d'échelle actuel" - -# src/prop_position.c:192 -# src/prop_position.c:173 -# src/prop_position.c:173 -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X :" - -# src/prop_position.c:212 -# src/prop_position.c:191 -# src/prop_position.c:191 -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y :" - -# src/print.c:171 -# src/prefs.c:463 src/prefs.c:470 src/prop_line.c:202 -# src/prefs.c:445 src/prefs.c:452 src/prop_line.c:183 -# src/prefs.c:448 src/prefs.c:455 src/prop_line.c:183 -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "points" - -# src/prop_bc.c:204 src/prop_fill.c:186 src/prop_line.c:203 -# src/prop_text.c:263 -# src/prop_bc.c:210 src/prop_fill.c:184 src/prop_line.c:209 -# src/prop_text.c:247 -# src/prop_bc.c:188 src/prop_fill.c:166 src/prop_line.c:189 -# src/prop_text.c:234 -# src/prop_bc.c:188 src/prop_fill.c:166 src/prop_line.c:189 -# src/prop_text.c:234 -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "Couleur :" - -# src/prop_text.c:214 -# src/prop_text.c:199 -# src/prop_text.c:181 -# src/prop_text.c:181 -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "Police :" - -# src/prop_text.c:277 -# src/prop_text.c:264 -# src/prop_text.c:248 -# src/prop_text.c:248 -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "Alignement :" - -# src/prop_bc_data.c:196 src/prop_text_entry.c:180 -# src/prop_bc_data.c:196 src/prop_text_entry.c:180 -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "Clé :" - -# src/prop_text_entry.c:196 -# src/prop_text_entry.c:196 -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "Insérer champ de fusion" - -# src/prop_vector.c:196 -# src/prop_vector.c:202 -# src/prop_vector.c:183 -# src/prop_vector.c:183 -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "Longueur :" - -# src/prop_vector.c:207 -# src/prop_vector.c:228 -# src/prop_vector.c:207 -# src/prop_vector.c:207 -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "Angle :" - -# src/prop_vector.c:245 -# src/prop_vector.c:224 -# src/prop_vector.c:224 -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "degrés" - -# src/prop_bc.c:189 -# src/prop_bc.c:187 -# src/prop_bc.c:168 -# src/prop_bc.c:168 -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "Echelle :" - -# src/prop_bc.c:202 -# src/prop_bc.c:182 -# src/prop_bc.c:182 -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -# src/prop_bc_style.c:328 -# src/prop_bc_style.c:328 -# src/prop_bc_style.c:313 -# src/prop_bc_style.c:313 -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "Afficher du texte avec le code-barre" - -# src/prop_bc_data.c:176 -# src/prop_bc_data.c:176 -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "Littéral :" - -# src/label.c:186 src/label.c:211 -# src/label.c:186 src/label.c:211 -# src/label.c:170 src/label.c:194 -# src/label.c:168 src/label.c:192 -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "erreur xmlParseFile" - -# src/label.c:243 -# src/label.c:244 -# src/label.c:225 -# src/label.c:223 -#: src/label.c:228 -msgid "No document root" -msgstr "Pas de racine de document" - -# src/label.c:248 -# src/label.c:249 -# src/label.c:236 -# src/label.c:234 -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "document de type erroné, aucun espace de noms glabels trouvé" - -# src/label.c:253 -# src/label.c:254 -# src/label.c:241 -# src/label.c:239 -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "Mauvais noeud racine = \"%s\"" - -# src/label.c:298 -# src/label.c:301 -# src/label.c:294 -# src/label.c:290 -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "mauvais noeud = \"%s\"" - -# src/label.c:487 -# src/label.c:493 -# src/label.c:589 -# src/label.c:587 -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "Problème de sauvegarde du fichier xml." - -# src/template.c:179 -# src/template.c:178 -# src/template.c:223 -#: src/template.c:224 -msgid "No template files found!" -msgstr "Aucun fichier de patron trouvé !" - -# src/item_box.c:251 -# src/item_box.c:251 -# src/merge_properties.c:82 -# src/merge_properties.c:82 -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "Editer les propriétés de fusion de document" - -# src/merge_properties.c:131 -# src/merge_properties.c:131 -#: src/merge_properties.c:131 -msgid "Source" -msgstr "Source" - -# src/prop_text.c:214 -# src/prop_text.c:199 -# src/merge_properties.c:143 -# src/merge_properties.c:143 -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "Format :" - -# src/merge_properties.c:158 -# src/merge_properties.c:158 -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "Emplacement :" - -# src/item_box.c:274 src/item_ellipse.c:279 -# src/item_box.c:274 src/item_ellipse.c:279 -# src/merge_properties.c:168 -# src/merge_properties.c:168 -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "Champs" - -# src/merge.c:80 -# src/merge.c:78 -#: src/merge.c:78 -msgid "None" -msgstr "Aucun" - -# src/merge.c:89 -# src/merge.c:86 -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "Texte avec séparateurs de tabulation" - -# src/merge.c:98 -# src/merge.c:94 -#: src/merge.c:94 -msgid "Text with comma separators (CSV)" -msgstr "Texte séparé par des virgules (CSV)" - -# src/merge.c:107 -# src/merge.c:102 -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "Texte séparé par des deux-points" - -# src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -# src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "Non défini" - -# src/merge_ui_text.c:170 -# src/merge_ui_text.c:170 -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "Sélection de la base de données source de la fusion" - -# src/merge_ui_text.c:330 -# src/merge_ui_text.c:330 -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "Colonne" - -# src/merge_ui_text.c:334 -# src/merge_ui_text.c:334 -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "Clé de champ spécifique" - -# src/merge_ui_text.c:338 -# src/merge_ui_text.c:338 -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "Exemple de données" - -# src/menu.c:50 -# src/menu.c:50 -# src/menu.c:50 -# src/menu.c:50 -#: src/menu.c:50 -msgid "_New" -msgstr "_Nouveau" - -# src/menu.c:51 -# src/menu.c:51 -# src/menu.c:51 -# src/menu.c:51 -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "Créer une nouvelle étiquette vide" - -# src/menu.c:86 -# src/menu.c:86 -# src/menu.c:85 -# src/menu.c:85 -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "_Désélectionne tout" - -# src/menu.c:86 -# src/menu.c:86 -# src/menu.c:86 -# src/menu.c:86 -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "Supprime toutes les sélections" - -# src/display.c:1157 src/display.c:1205 -# src/display.c:1160 src/display.c:1208 -# src/menu.c:94 -# src/menu.c:94 -#: src/menu.c:94 -msgid "Select" -msgstr "Sélectionner" - -# src/tools.c:59 -# src/tools.c:59 -# src/menu.c:95 src/menu.c:186 -# src/menu.c:95 src/menu.c:186 -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "Sélectionner, déplacer et modifier les objets" - -# src/tools.c:64 -# src/tools.c:64 -# src/menu.c:100 src/menu.c:191 -# src/menu.c:100 src/menu.c:191 -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "Créer un objet texte" - -# src/menu.c:103 -# src/menu.c:103 -#: src/menu.c:103 -msgid "Box" -msgstr "Boîte" - -# src/tools.c:67 -# src/tools.c:67 -# src/menu.c:103 src/menu.c:194 -# src/menu.c:103 src/menu.c:194 -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "Créer un objet boîte/rectangle" - -# src/tools.c:70 -# src/tools.c:70 -# src/menu.c:106 src/menu.c:197 -# src/menu.c:106 src/menu.c:197 -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "Créer un objet ligne" - -# src/menu.c:109 -# src/menu.c:109 -#: src/menu.c:109 -msgid "Ellipse" -msgstr "Ellipse" - -# src/tools.c:73 -# src/tools.c:73 -# src/menu.c:110 src/menu.c:200 -# src/menu.c:110 src/menu.c:200 -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "Créer un objet ellipse/cercle" - -# src/tools.c:76 -# src/tools.c:76 -# src/menu.c:113 src/menu.c:203 -# src/menu.c:113 src/menu.c:203 -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "Créer un objet image" - -# src/item_barcode.c:316 -# src/item_barcode.c:317 -# src/menu.c:116 -# src/menu.c:116 -#: src/menu.c:116 -msgid "Barcode" -msgstr "Code-barre" - -# src/tools.c:79 -# src/tools.c:79 -# src/menu.c:116 src/menu.c:206 -# src/menu.c:116 src/menu.c:206 -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "Créer un objet code-barre" - -# src/tools.c:84 -# src/tools.c:84 -# src/menu.c:121 src/menu.c:211 -# src/menu.c:121 src/menu.c:211 -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "Zoom supérieur" - -# src/tools.c:87 -# src/tools.c:87 -# src/menu.c:124 src/menu.c:214 -# src/menu.c:124 src/menu.c:214 -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "Zoom inférieur" - -# src/tools.c:90 -# src/tools.c:90 -# src/menu.c:127 -# src/menu.c:127 -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "Zoom 1:1" - -# src/tools.c:90 -# src/tools.c:90 -# src/menu.c:127 src/menu.c:217 -# src/menu.c:127 src/menu.c:217 -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "Zoomer à 1:1" - -# src/item_text.c:467 -# src/item_text.c:467 -# src/menu.c:132 src/menu.c:223 -# src/menu.c:132 src/menu.c:223 -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "Propriétés de fusion" - -# src/item_image.c:272 -# src/item_image.c:272 -# src/menu.c:133 -# src/menu.c:133 -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "Editer les propriétés de fusion" - -# src/menu.c:157 -# src/menu.c:157 -#: src/menu.c:157 -msgid "_Tools" -msgstr "_Outils" - -# src/menu.c:138 -# src/menu.c:138 -# src/menu.c:168 -# src/menu.c:168 -#: src/menu.c:168 -msgid " New " -msgstr " Nouveau " - -# src/menu.c:138 -# src/menu.c:138 -# src/menu.c:168 -# src/menu.c:168 -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "Nouvelle étiquette/carte" - -# src/menu.c:140 -# src/menu.c:140 -# src/menu.c:170 -# src/menu.c:170 -#: src/menu.c:170 -msgid " Open " -msgstr " Ouvrir " - -# src/menu.c:140 -# src/menu.c:140 -# src/menu.c:170 -# src/menu.c:170 -#: src/menu.c:170 -msgid "Open a file" -msgstr "Ouvrir un fichier" - -# src/menu.c:142 -# src/menu.c:142 -# src/menu.c:172 -# src/menu.c:172 -#: src/menu.c:172 -msgid " Save " -msgstr " Enregistrer " - -# src/menu.c:142 -# src/menu.c:142 -# src/menu.c:172 -# src/menu.c:172 -#: src/menu.c:172 -msgid "Save current file" -msgstr "Sauvegarder le fichier en cours" - -# src/menu.c:145 -# src/menu.c:145 -# src/menu.c:175 -# src/menu.c:175 -#: src/menu.c:175 -msgid " Print " -msgstr " Imprimer " - -# src/menu.c:145 -# src/menu.c:145 -# src/menu.c:175 -# src/menu.c:175 -#: src/menu.c:175 -msgid "Print current file" -msgstr "Imprimer le fichier en cours" - -# src/menu.c:185 -# src/menu.c:185 -# src/menu.c:290 -# src/menu.c:290 -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"Un programme de création d'étiquettes et de cartes de visite pour GNOME.\n" -" \n" -"Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le " -"modifier conformément aux dispositions de la Licence Publique Générale GNU, " -"telle que publiée par la Free Software Foundation ; version 2 de la licence, " -"ou encore (à votre choix) toute version ultérieure.\n" -" \n" -"Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE " -"GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou " -"D'ADAPTATION A UN OBJET PARTICULIER. Pour plus de détail, voir la Licence " -"Publique Générale GNU.\n" - -# src/menu.c:221 -# src/menu.c:221 -# src/menu.c:326 -# src/menu.c:326 -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "Cette fonction n'est pas implémentée !" - -# src/file.c:59 -# src/file.c:59 -# src/file.c:72 -# src/file.c:72 -#: src/file.c:72 -msgid "New Label or Card" -msgstr "Nouvelle étiquette ou carte" - -# src/file.c:87 -# src/file.c:87 -# src/file.c:98 -# src/file.c:98 -#: src/file.c:98 -msgid "Media Type" -msgstr "Type de média" - -# src/file.c:98 -# src/file.c:98 -# src/file.c:109 -# src/file.c:109 -#: src/file.c:109 -msgid "Label orientation" -msgstr "Orientation de l'étiquette" - -# src/file.c:178 -# src/file.c:178 -# src/file.c:211 -# src/file.c:211 -#: src/file.c:211 -msgid "Open" -msgstr "Ouvrir" - -# src/file.c:183 -# src/file.c:183 -# src/file.c:213 -# src/file.c:213 -#: src/file.c:213 -msgid "Open label" -msgstr "Ouvrir une étiquette" - -# src/file.c:214 -# src/file.c:214 -# src/file.c:249 -# src/file.c:249 -#: src/file.c:249 -msgid "Cannot open file" -msgstr "Impossible d'ouvrir le fichier" - -# src/file.c:278 -# src/file.c:278 -# src/file.c:316 -# src/file.c:316 -#: src/file.c:316 -msgid "Save label as" -msgstr "Enregistrer l'étiquette sous" - -# src/media_select.c:216 -# src/media_select.c:242 -# src/media_select.c:222 -# src/media_select.c:222 -#: src/media_select.c:222 -msgid "Description:" -msgstr "Description :" - -# src/media_select.c:221 -# src/media_select.c:247 -# src/media_select.c:227 -# src/media_select.c:227 -#: src/media_select.c:227 -msgid "Page size:" -msgstr "Taille de page :" - -# src/media_select.c:226 -# src/media_select.c:252 -# src/media_select.c:232 -# src/media_select.c:232 -#: src/media_select.c:232 -msgid "Label size:" -msgstr "Taille d'étiquette :" - -# src/media_select.c:231 -# src/media_select.c:257 -# src/media_select.c:237 -# src/media_select.c:237 -#: src/media_select.c:237 -msgid "Layout:" -msgstr "Disposition :" - -# src/media_select.c:515 -# src/media_select.c:481 -# src/media_select.c:353 -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d par feuille)" - -# src/media_select.c:522 -# src/media_select.c:488 -# src/media_select.c:367 -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -# src/media_select.c:522 -# src/media_select.c:488 -# src/media_select.c:372 -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -# src/rotate_select.c:187 -# src/rotate_select.c:187 -# src/rotate_select.c:167 -# src/rotate_select.c:169 -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "Rotation" - -# src/print.c:149 -# src/print.c:149 -# src/print.c:141 -# src/print_dialog.c:99 -#: src/print_dialog.c:99 -msgid "Print" -msgstr "Imprimer" - -# src/print.c:153 -# src/print.c:153 -# src/print.c:146 -# src/print_dialog.c:104 -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "Copies" - -# src/print.c:164 -# src/print_dialog.c:121 -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "Contrôle de la fusion de document" - -# src/print.c:171 -# src/print.c:171 -# src/print.c:186 -# src/print_dialog.c:141 -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "Options" - -# src/print.c:235 -# src/print.c:235 -# src/print.c:283 src/print.c:348 -# src/print_dialog.c:241 src/print_dialog.c:280 -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "Aperçu avant impression" - -# src/print_copies.c:193 -# src/print_copies.c:193 -# src/print_copies.c:171 -# src/print_copies.c:170 -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "Feuilles :" - -# src/print_copies.c:210 -# src/print_copies.c:210 -# src/print_copies.c:188 -# src/print_copies.c:187 -#: src/print_copies.c:187 -msgid "Labels" -msgstr "Etiquettes" - -# src/print_copies.c:213 -# src/print_copies.c:213 -# src/print_copies.c:191 -# src/print_copies.c:190 -#: src/print_copies.c:190 -msgid "from:" -msgstr "de :" - -# src/print_copies.c:221 -# src/print_copies.c:221 -# src/print_copies.c:199 -# src/print_copies.c:198 -#: src/print_copies.c:198 -msgid "to:" -msgstr "à :" - -# src/print_copies_merge.c:197 -# src/print_merge.c:170 -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "Commencer par l'étiquette" - -# src/print_copies_merge.c:206 -# src/print_merge.c:179 -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "en 1ère page" - -# src/rotate_select.c:187 -# src/rotate_select.c:187 -# src/print_copies_merge.c:186 -# src/print_merge.c:188 -#: src/print_merge.c:188 -msgid "Collate" -msgstr "Assembler" - -# src/print.c:153 -# src/print.c:153 -# src/print_copies_merge.c:173 -# src/print_merge.c:195 -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "Copies :" - -# src/preferences.c:92 -# src/prefs.c:101 -# src/prefs.c:92 -# src/prefs.c:86 -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels : Préférences" - -# src/prefs.c:248 -# src/prefs.c:226 -# src/prefs.c:220 -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "Unités d'affichage" - -# src/print.c:149 -# src/prefs.c:259 -# src/prefs.c:237 -# src/prefs.c:231 -#: src/prefs.c:231 -msgid "Points" -msgstr "Points" - -# src/prefs.c:265 -# src/prefs.c:243 -# src/prefs.c:237 -#: src/prefs.c:237 -msgid "Inches" -msgstr "Pouces" - -# src/prefs.c:271 -# src/prefs.c:250 -# src/prefs.c:244 -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "Milimètres" - -# src/item_image.c:341 -# src/prefs.c:278 -# src/prefs.c:255 -# src/prefs.c:249 -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "Taille de page par défaut" - -# src/item_line.c:271 -# src/prefs.c:465 -# src/prefs.c:447 -# src/prefs.c:450 -#: src/prefs.c:450 -msgid "inches" -msgstr "pouces" - -# src/prefs.c:467 -# src/prefs.c:449 -# src/prefs.c:452 -#: src/prefs.c:452 -msgid "mm" -msgstr "mm" - -# src/tools.c:297 -# src/tools.c:297 -#~ msgid "Function is not yet implemented!" -#~ msgstr "Cette fonction n'est pas encore implémentée !" - -# src/prop_size.c:194 -#~ msgid "w" -#~ msgstr "l" - -# src/prop_size.c:203 -#~ msgid "h" -#~ msgstr "h" - -# src/prop_position.c:183 -#~ msgid "x" -#~ msgstr "x" - -# src/prop_position.c:195 -#~ msgid "y" -#~ msgstr "y" - -# src/media_select.c:462 -#~ msgid "%.1f x %.1f" -#~ msgstr "%.1f x %.1f" - -# src/preferences.c:213 -#~ msgid "Startup" -#~ msgstr "Démarrage" - -# src/preferences.c:215 -#~ msgid "Under construction" -#~ msgstr "En construction" - -#, fuzzy -#~ msgid "Maintain original aspect ratio" -#~ msgstr "Conserver le rapport d'échelle d'origine" - -#~ msgid "Text color" -#~ msgstr "Couleur du texte" - -#~ msgid "Line Color" -#~ msgstr "Couleur de ligne" - -#~ msgid "Fill Color" -#~ msgstr "Couleur de remplissage" diff --git a/glabels1/po/glabels.pot b/glabels1/po/glabels.pot deleted file mode 100644 index 18fa25df..00000000 --- a/glabels1/po/glabels.pot +++ /dev/null @@ -1,700 +0,0 @@ -# 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" -"POT-Creation-Date: 2002-08-24 22:30-0400\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" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "" - -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "" - -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "" - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "" - -#: src/glabels_batch.c:139 -#, c-format -msgid "cannot open glabels file %s\n" -msgstr "" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "" - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "" - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "" - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "" - -#: src/label.c:228 -msgid "No document root" -msgstr "" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "" - -#: src/template.c:224 -msgid "No template files found!" -msgstr "" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "" - -#: src/merge.c:78 -msgid "None" -msgstr "" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "" - -#: src/merge.c:94 -msgid "Text with comma separators (CSV)" -msgstr "" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "" - -#: src/menu.c:50 -msgid "_New" -msgstr "" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "" - -#: src/menu.c:94 -msgid "Select" -msgstr "" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "" - -#: src/menu.c:103 -msgid "Box" -msgstr "" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "" - -#: src/menu.c:168 -msgid " New " -msgstr "" - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "" - -#: src/menu.c:170 -msgid " Open " -msgstr "" - -#: src/menu.c:170 -msgid "Open a file" -msgstr "" - -#: src/menu.c:172 -msgid " Save " -msgstr "" - -#: src/menu.c:172 -msgid "Save current file" -msgstr "" - -#: src/menu.c:175 -msgid " Print " -msgstr "" - -#: src/menu.c:175 -msgid "Print current file" -msgstr "" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "" - -#: src/file.c:98 -msgid "Media Type" -msgstr "" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "" - -#: src/file.c:211 -msgid "Open" -msgstr "" - -#: src/file.c:213 -msgid "Open label" -msgstr "" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "" - -#: src/file.c:316 -msgid "Save label as" -msgstr "" - -#: src/media_select.c:222 -msgid "Description:" -msgstr "" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "" - -#: src/prefs.c:231 -msgid "Points" -msgstr "" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "" - -#: src/prefs.c:450 -msgid "inches" -msgstr "" - -#: src/prefs.c:452 -msgid "mm" -msgstr "" diff --git a/glabels1/po/ja.po b/glabels1/po/ja.po deleted file mode 100644 index f52d7c23..00000000 --- a/glabels1/po/ja.po +++ /dev/null @@ -1,711 +0,0 @@ -# glabels ja.po -# Copyright (C) 2001 Free Software Foundation, Inc. -# Takeshi Aihana , 2001, 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.4.3\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2002-03-10 21:17+0900\n" -"Last-Translator: Takeshi Aihana \n" -"Language-Team: Japanese \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=euc-jp\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "¤³¤Î¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤¹¤ë" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "»ÈÍѤ·¤Æ¤¤¤ë gLabel ¤Î¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "½ÐÎϤ¹¤ë¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤹ¤ë (¥Ç¥Õ¥©¥ë¥È = \"output.ps\")" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "¥Õ¥¡¥¤¥ë̾" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "ÍÑ»æ¤Î¿ô (¥Ç¥Õ¥©¥ë¥È = 1)" - -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "ÍÑ»æ¤Î¿ô" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "¥³¥Ô¡¼¤Î¿ô (¥Ç¥Õ¥©¥ë¥È = 1)" - -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "¥³¥Ô¡¼¤Î¿ô" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "¥¢¥¦¥È¥é¥¤¥ó¤ò°õºþ¤¹¤ë (°õºþ»þ¤ÎÇÛÃÖ¤ò³Îǧ¤¹¤ë¤¿¤á)" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "ȿž¤·¤Æ°õºþ (i.e. ²èÁü¤ò¥ß¥é¡¼¤·¤¿¤â¤Î)" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "[¥ª¥×¥·¥ç¥ó...] ¥Õ¥¡¥¤¥ë̾..." - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "gLabel ¤Ç»ÈÍѤ¹¤ë¥Õ¥¡¥¤¥ë¤¬¤¢¤ê¤Þ¤»¤ó\n" - -#: src/glabels_batch.c:139 -#, c-format -msgid "cannot open glabels file %s\n" -msgstr "gLabel ¤Ç»ÈÍѤ¹¤ë¥Õ¥¡¥¤¥ë %s ¤¬³«¤±¤Þ¤»¤ó\n" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "%s ¤Î¥³¥Ô¡¼¤òȿž¤·¤Þ¤¹¤«¡©" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "¥á¥Ç¥£¥¢¤Î¼ïÎबÆÃÄê¤Ç¤­¤Þ¤»¤ó¡£¥Ç¥Õ¥©¥ë¥È¤ò»ÈÍѤ·¤Þ¤¹¡£" - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"%s ¤ÏÊÔ½¸¤µ¤ì¤Æ¤¤¤Þ¤¹¡£\n" -"\n" -"Êݸ¤·¤Þ¤¹¤«¡©" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "Êݸ¤·¤Ê¤¤" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "¥Õ¥¡¥¤¥ë¤òÊݸ¤¹¤ë¤³¤È¤¬½ÐÍè¤Þ¤»¤ó" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "̾Á°¤òÉÕ¤±¤ÆÊݸ" - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "¥é¥Ù¥ë¤Ë̾Á°¤òÉÕ¤±¤ÆÊݸ¤·¤ÆÊĤ¸¤Þ¤¹" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "¥é¥Ù¥ë¤ÏÍ­¸ú¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡ª" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "¥Õ¥¡¥¤¥ë̾¤ò»ØÄꤷ¤Æ²¼¤µ¤¤" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "¥Õ¥¡¥¤¥ë¤Î½ñ¤­¹þ¤ß¤Ç¥¨¥é¡¼" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "ºï½ü" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "Á°¤Ë»ý¤Ã¤ÆÍè¤ë" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "¸å¤í¤Ë¤Þ¤ï¤¹" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "¥×¥í¥Ñ¥Æ¥£¤ÎÊÔ½¸..." - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "¥Æ¥­¥¹¥È¤ÎÊÔ½¸" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "¥Æ¥­¥¹¥È" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "³°´Ñ" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "ʸ»ú¥×¥í¥Ñ¥Æ¥£..." - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "°ÌÃÖ" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "ľÀþ¤ÎÊÔ½¸" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "ľÀþ" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "°ÌÃ֤ȥµ¥¤¥º" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "¥µ¥¤¥º" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "»Í³Ñ¤ÎÊÔ½¸" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "¶ë·Á" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "Åɤê¤Ä¤Ö¤·" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "ÂʱߤÎÊÔ½¸" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "²èÁü¤ÎÊÔ½¸" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "²èÁü" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "²èÁü¥µ¥¤¥º¤Î¥ê¥»¥Ã¥È" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "²èÁü¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "¥Ð¡¼¥³¡¼¥É¤ÎÊÔ½¸" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "¥Ç¡¼¥¿" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "¥Ð¡¼¥³¡¼¥É¡¦¥Ç¡¼¥¿" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "Á´ÈÌ" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "¥¹¥¿¥¤¥ë" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "¤ª¤«¤·¤Ê¥Ð¡¼¥³¡¼¥É" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "Éý:" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "¹â¤µ:" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "¸½ºß¤Î¥¢¥¹¥Ú¥¯¥ÈÈæΨ¤ò°Ý»ý¤¹¤ë" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "¥Ý¥¤¥ó¥È" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "¿§:" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "¥Õ¥©¥ó¥È:" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "°ÌÃÖ:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "¥­¡¼:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "·ë¹ç¥Õ¥£¡¼¥ë¥É¤ÎÁÞÆþ" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "Ťµ:" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "³ÑÅÙ:" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "ÅÙ" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "À£Ë¡:" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "¥Ð¡¼¥³¡¼¥É¤òÉÕ¤±¤Æ¥Æ¥­¥¹¥È¤òɽ¼¨¤¹¤ë" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "¥ê¥Æ¥é¥ë:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "xmlParseFile ¥¨¥é¡¼" - -#: src/label.c:228 -msgid "No document root" -msgstr "root ¥É¥­¥å¥á¥ó¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "¥É¥­¥å¥á¥ó¥È¤Î¼ïÎब´Ö°ã¤Ã¤Æ¤¤¤Þ¤¹¡£Glabels ̾Á°¶õ´Ö¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "¤ª¤«¤·¤Ê root ¤Î¥Î¡¼¥É = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "¤ª¤«¤·¤Ê¥Î¡¼¥É = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "XML ¥Õ¥¡¥¤¥ë¤ÎÊݸ¤ÇÌäÂ꤬¤¢¤ê¤Þ¤¹" - -#: src/template.c:224 -msgid "No template files found!" -msgstr "¥Æ¥ó¥×¥ì¡¼¥È¡¦¥Õ¥¡¥¤¥ë¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡ª" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "·ë¹ç¥É¥­¥å¥á¥ó¥È¡¦¥×¥í¥Ñ¥Æ¥£¤ÎÊÔ½¸" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "¥½¡¼¥¹" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "½ñ¼°:" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "¾ì½ê:" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "¥Õ¥£¡¼¥ë¥É" - -#: src/merge.c:78 -msgid "None" -msgstr "¤Ê¤·" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "¥¿¥Ö¤Ç¶èÀڤ俥ƥ­¥¹¥È" - -#: src/merge.c:94 -#, fuzzy -msgid "Text with comma separators (CSV)" -msgstr "¥³¥ó¥Þ¤Ç¶èÀڤ俥ƥ­¥¹¥È" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "¥³¥í¥ó¤Ç¶èÀڤ俥ƥ­¥¹¥È" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "N/A" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "·ë¹ç¥Ç¡¼¥¿¥Ù¡¼¥¹¡¦¥½¡¼¥¹¤ÎÁªÂò" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "Îó" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "¥«¥¹¥¿¥à¡¦¥Õ¥£¡¼¥ë¥É¡¦¥­¡¼" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "¥µ¥ó¥×¥ë¥Ç¡¼¥¿" - -#: src/menu.c:50 -msgid "_New" -msgstr "¿·µ¬(_N)" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "¿·µ¬¤Ë¶õ¤Î¥é¥Ù¥ë¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "Á´¤ÆÁªÂò²ò½ü(_N)" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "ÁªÂòÈϰϤò²ò½ü¤·¤Þ¤¹" - -#: src/menu.c:94 -msgid "Select" -msgstr "ÁªÂò" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁªÂò¡¢°ÜÆ°¡¢ÊÔ½¸¤ò¹Ô¤¤¤Þ¤¹" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "¥Æ¥­¥¹¥È¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:103 -msgid "Box" -msgstr "»Í³Ñ" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "»Í³Ñ/»°³Ñ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "ľÀþ¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "Âʱß" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "Âʱß/±ß¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "²èÁü¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "¥Ð¡¼¥³¡¼¥É" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "¥Ð¡¼¥³¡¼¥É¡¦¥ª¥Ö¥¸¥§¥¯¥È¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "³ÈÂç" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "½Ì¾®" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "¸µ¤Î¥µ¥¤¥º¤Ø" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "½Ä²£Èæ 1:1 ¤Î¥µ¥¤¥º¤Ë¤·¤Þ¤¹" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "·ë¹ç¥×¥í¥Ñ¥Æ¥£" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "·ë¹ç¥×¥í¥Ñ¥Æ¥£¤òÊÔ½¸¤·¤Þ¤¹" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "¥Ä¡¼¥ë(_T)" - -#: src/menu.c:168 -msgid " New " -msgstr " ¿·µ¬ " - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "¿·µ¬¤Î¥é¥Ù¥ë/¥«¡¼¥É¤òºîÀ®¤·¤Þ¤¹" - -#: src/menu.c:170 -msgid " Open " -msgstr " ³«¤¯ " - -#: src/menu.c:170 -msgid "Open a file" -msgstr "¥Õ¥¡¥¤¥ë¤ò³«¤­¤Þ¤¹" - -#: src/menu.c:172 -msgid " Save " -msgstr " Êݸ " - -#: src/menu.c:172 -msgid "Save current file" -msgstr "¤³¤Î¥Õ¥¡¥¤¥ë¤òÊݸ¤·¤Þ¤¹" - -#: src/menu.c:175 -msgid " Print " -msgstr " °õºþ " - -#: src/menu.c:175 -msgid "Print current file" -msgstr "¤³¤Î¥Õ¥¡¥¤¥ë¤ò°õºþ¤·¤Þ¤¹" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"GNOME ¸þ¤±¤Î¥é¥Ù¥ë/¥Ó¥¸¥Í¥¹¥«¡¼¥É¤ÎºîÀ®¥×¥í¥°¥é¥à¤Ç¤¹¡£\n" -"\n" -"Glabels ¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¤Ç¤¹¡£¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ºâÃĤ¬Äê¤á¤ë GNU °ìÈ̸øÍ­»ÈÍѵö" -"Âú·ÀÌó½ñ¤ÎÂè2ÈǤ⤷¤¯¤Ï¤½¤ì°Ê¹ß¤Î¥Ð¡¼¥¸¥ç¥ó¤Î²¼¤ÇÊ£À½¡¢²þÊÔ¡¢ºÆÇÛÉÛ¤¬Ç§¤á¤é¤ì" -"¤Æ¤¤¤Þ¤¹¡£\n" -"\n" -"¤³¤Î¥×¥í¥°¥é¥à¤¬Ìò¤ËΩ¤Ä¤³¤È¤ò˾¤àÃæ¤ÇÇÛÉÛ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢´°Á´ÌµÊݾڤǤ¹¡£ÈÎ" -"ÇäÌÜŪ¤Þ¤¿¤Ï¾¦ÍÑÌÜŪ¤ÎÊݾڤϤ¢¤ê¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤Ï GNU °ìÈ̸øÍ­»ÈÍѵöÂú·À" -"Ìó½ñ¤ò»²¾È¤·¤Æ²¼¤µ¤¤¡£\n" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "¤Þ¤À¤³¤Îµ¡Ç½¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡ª" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "¿·µ¬¥é¥Ù¥ë¤Þ¤¿¤Ï¥«¡¼¥É" - -#: src/file.c:98 -msgid "Media Type" -msgstr "¥á¥Ç¥£¥¢¤Î¼ïÎà" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "¥é¥Ù¥ë¤Î¸þ¤­" - -#: src/file.c:211 -msgid "Open" -msgstr "³«¤¯" - -#: src/file.c:213 -msgid "Open label" -msgstr "¥é¥Ù¥ë¤ò³«¤­¤Þ¤¹" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "¥Õ¥¡¥¤¥ë¤¬³«¤±¤Þ¤»¤ó" - -#: src/file.c:316 -msgid "Save label as" -msgstr "¥é¥Ù¥ë¤Ë̾Á°¤òÉÕ¤±¤ÆÊݸ¤·¤Þ¤¹" - -#: src/media_select.c:222 -msgid "Description:" -msgstr "ÀâÌÀ:" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "ÍÑ»æ¤Î¥µ¥¤¥º:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "¥é¥Ù¥ë¤ÎÂ礭¤µ:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "¥ì¥¤¥¢¥¦¥È:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d ¸Ä/¥·¡¼¥È)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "²óž¤µ¤»¤ë" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "°õºþ" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "¥³¥Ô¡¼" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "¥É¥­¥å¥á¥ó¥È¤ò¥³¥ó¥È¥í¡¼¥ë¤Ë¥Þ¡¼¥¸¤¹¤ë" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "¥ª¥×¥·¥ç¥ó" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "°õºþ¥×¥ì¥Ó¥å¡¼" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "ÍÑ»æ:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "¥é¥Ù¥ë" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "³«»Ï:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "½ªÎ»:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "¥é¥Ù¥ë¤Î³«»Ï" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "(ºÇ½é¤Î¥·¡¼¥È)" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "À½ËÜ" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "¥³¥Ô¡¼:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels: ÀßÄê" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "ɽ¼¨¤¹¤ëñ°Ì" - -#: src/prefs.c:231 -msgid "Points" -msgstr "¥Ý¥¤¥ó¥È" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "¥¤¥ó¥Á" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "¥ß¥ê" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "¥Ç¥Õ¥©¥ë¥È¤ÎÍѻ極¥¤¥º" - -#: src/prefs.c:450 -msgid "inches" -msgstr "[¥¤¥ó¥Á]" - -#: src/prefs.c:452 -msgid "mm" -msgstr "[¥ß¥ê]" diff --git a/glabels1/po/pl.po b/glabels1/po/pl.po deleted file mode 100644 index bfa7d1b3..00000000 --- a/glabels1/po/pl.po +++ /dev/null @@ -1,712 +0,0 @@ -# Polish translation for gLabels -# Copyright (C) 2002 Free Software Foundation, Inc. -# Arkadiusz Lipiec , 2002. -# -msgid "" -msgstr "" -"Project-Id-Version: gLabels\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2002-07-23 11:43+0100\n" -"Last-Translator: Arkadiusz Lipiec \n" -"Language-Team: Polish \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-2\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "wy¶wietla ten komunikat" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "wy¶wietla aktualnie u¿ywan± wersjê glabel-batch" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "okre¶l nazwê pliku wyj¶ciowego (domy¶lnie=\"output.ps\")" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "nazwa pliku" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "liczba arkuszy (domy¶lnie=1)" - -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "arkusz(e/y)" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "liczba kopii (domy¶lnie=1)" - -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "kopi(a/e/i)" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "drukowanie ramek (w celu przetestowania wyrównania)" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "drukowanie odwrócone (np. odbicie zwierciadlane)" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "[OPCJA...] PLIK_GLABELS..." - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "brak pliku glabels\n" - -#: src/glabels_batch.c:139 -#, c-format -msgid "cannot open glabels file %s\n" -msgstr "nie mo¿na otworzyæ pliku glabels o nazwie %s\n" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "Przywróciæ zapisan± kopiê pliku %s?" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "Nieznany typ no¶nika. U¿yto warto¶ci domy¶lnych." - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"Plik \"%s\" zosta³ zmodyfikowany.\n" -"\n" -"Czy chcesz go zapisaæ?" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "Nie zapisuj" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "Nie mo¿na zapisaæ pliku" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "Zapisz jako" - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "Zamyka / Zapisuje etykietê jako" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "Etykieta nie jest ju¿ poprawna!" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "Nale¿y podaæ nazwê pliku" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "B³±d podczas zapisu pliku" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "Usuñ" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "Przesun na wierzch" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "Przesuñ w dó³" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "Modyfikuj w³a¶ciwo¶ci..." - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "Modyfikacja w³a¶ciowo¶ci tekstu" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "Tekst" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "Wygl±d" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "W³a¶ciwo¶ci tekstu" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "Pozycja" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "Modyfikacja w³a¶ciwo¶ci linii" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "Linia" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "Pozycja/Rozmiar" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "Rozmiar" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "Modyfikacja w³a¶ciwo¶ci skrzynki" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "Ramka" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "Wype³nienie" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "Modyfikacja w³a¶ciwo¶ci elipsy" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "Modyfikacja w³a¶ciwo¶ci obrazu" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "Obraz" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "Wyzeruj rozmiar obrazu" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "Format obrazu aktualnie nie jest obs³ugiwany" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "Modyfikacja w³a¶ciwo¶ci kodu paskowego" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "Dane" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "Dane kodu paskowego" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "Ogólne" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "Styl" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "Niepoprawny kod paskowy" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "Szeroko¶æ:" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "Wysoko¶æ:" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "Utrzymywanie aktualnych proporcji" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "punkty(-ów)" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "Kolor:" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "Czcionka:" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "Wyrównanie:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "Klucz:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "Wstaw pole z³±czenia" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "D³ugo¶æ:" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "K±t" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "stopni(e)" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "Skala" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "Wy¶wietlanie tekstu z kodem paskowym" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "Litera³:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "b³±d przetwarzania pliku xml" - -#: src/label.c:228 -msgid "No document root" -msgstr "Brak g³ównego dokumentu" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "" -"dokument jest niepoprawnego typu, nie odnaleziono przestrzeni nazw glabels" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "Niepoprawny wêze³ g³ówny = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "niepoprawny wêze³ = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "Problem podczas zapisu pliku xml." - -#: src/template.c:224 -msgid "No template files found!" -msgstr "Nie znaleziono pliku szablonu!" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "Modyfikacja w³a¶ciwo¶ci z³±czania dokumentów" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "¬ród³o" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "Format:" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "Po³o¿enie:" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "Pola" - -#: src/merge.c:78 -msgid "None" -msgstr "Brak" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "Tekst oddzielony tabulacjami" - -#: src/merge.c:94 -msgid "Text with comma separators (CSV)" -msgstr "Tekst oddzielony przecinkami (CSV)" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "Tekst oddzielany dwukropkami" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "N/A" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "Wybierz ¼ród³o bazy danych z³±czania " - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "Kolumna" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "W³asny klucz pola" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "Próbne dane" - -#: src/menu.c:50 -msgid "_New" -msgstr "_Nowa" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "Tworzy now±, pust± etykietê" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "O_dznacz wszystko" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "Usuwa wszelkie zaznaczenia" - -#: src/menu.c:94 -msgid "Select" -msgstr "Wybierz" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "Wybierz, przeno¶ i modyfikuj obiekty" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "Tworzy obiekt tekstowy" - -#: src/menu.c:103 -msgid "Box" -msgstr "Skrzynka" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "Tworzy skrzynkê/prostok±t" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "Tworzy liniê" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "Elipsa" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "Tworzy elipsê/okr±g" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "Tworzy obraz" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "Kod paskowy" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "Tworzy kod paskowy" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "Powiêksz" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "Pomniejsz" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "Powiêkszenie 1:1" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "Powiêksza 1:1" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "W³a¶ciwo¶ci z³±czania" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "Modyfikuje w³a¶ciwo¶ci z³±czania" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "_Narzêdzia" - -#: src/menu.c:168 -msgid " New " -msgstr " Nowa " - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "Nowa Etykieta/Karta" - -#: src/menu.c:170 -msgid " Open " -msgstr " Otwórz " - -#: src/menu.c:170 -msgid "Open a file" -msgstr "Otwiera plik" - -#: src/menu.c:172 -msgid " Save " -msgstr " Zapisz " - -#: src/menu.c:172 -msgid "Save current file" -msgstr "Zapisuje bie¿±cy plik" - -#: src/menu.c:175 -msgid " Print " -msgstr " Wydrukuj " - -#: src/menu.c:175 -msgid "Print current file" -msgstr "Drukuje bie¿±cy plik" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"Program do tworzenia etykiet i wizytówek dla GNOME.\n" -"\n" -"Glabels jest oprogramowaniem wolnodostêpnym, mo¿na rozpowszechniaæ go lub/" -"imodyfikowaæ na zasadach Licencji Publicznej GNU opublikowanej przez Free " -"Software Foundation; zarówno w wersji 2 tej licencji, jak (do wyboru) i " -"dowolnej pó¼niejszej wersji.\n" -"\n" -"Ten program jest rozpowszechniany w nadziei u¿yteczno¶ci, lecz BEZ ¯ADNEJ " -"GWARANCJI; nawet wynikaj±cej z RÊKOJMI lub U¯YWANIA W OKRE¦LONYM CELU. " -"Zajrzyj do Licencji Publicznej GNU aby uzyskaæ wiêcej szczegó³ów.\n" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "Funkcja nie jest zaimplementowana!" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "Nowa etykieta lub karta" - -#: src/file.c:98 -msgid "Media Type" -msgstr "Typ no¶nika" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "U³o¿enie etykiety" - -#: src/file.c:211 -msgid "Open" -msgstr "Otwórz" - -#: src/file.c:213 -msgid "Open label" -msgstr "Otwórz etykietê" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "Nie mo¿na otworzyæ pliku" - -#: src/file.c:316 -msgid "Save label as" -msgstr "Zapisz etykietê jako" - -#: src/media_select.c:222 -msgid "Description:" -msgstr "Opis:" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "Rozmiar strony:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "Rozmiar etykiety:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "Wygl±d:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d na arkusz)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "Obróæ" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "Wydrukuj" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "Kopie" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "Kontrola z³±czania dokumentów" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "Opcje" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "Podgl±d wydruku" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "Arkusze:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "Etykiety" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "od:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "do:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "Rozpocznij od etykiety" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "na pierwszym arkuszu" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "Uk³adanie" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "Kopie:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels: Preferencje" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "Jednostki wy¶wietlania" - -#: src/prefs.c:231 -msgid "Points" -msgstr "Punkty" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "Cale" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "Milimetry" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "Domy¶lny rozmiar strony" - -#: src/prefs.c:450 -msgid "inches" -msgstr "cali" - -#: src/prefs.c:452 -msgid "mm" -msgstr "mm" diff --git a/glabels1/po/pt_BR.po b/glabels1/po/pt_BR.po deleted file mode 100644 index cdfe2072..00000000 --- a/glabels1/po/pt_BR.po +++ /dev/null @@ -1,715 +0,0 @@ -# Brazilian Portuguese translation of Glabels. -# Copyright (C) 2001 Jim Evins -# Paulo R. Ormenese , 2001. -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.4.6\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2003-01-03 22:30-0300\n" -"Last-Translator: Paulo R. Ormenese \n" -"Language-Team: Brazilian portuguese <>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=iso-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "mostra esta mensagem" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "mostra a versão de glabels-batch que está sendo utilizada" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "define o nome do arquivo de saída (padrão=\"output.ps\")" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "nome de arquivo" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "número de páginas (padrão=1)" - -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "páginas" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "número de cópias (padrão=1)" - -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "cópias" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "imprimir contornos (testar alinhamento da impressora)" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "imprimir ao contrário (como uma imagem de espelho)" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "[OPÇÃO...] ARQUIVO_GLABELS..." - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "faltando arquivo glabels\n" - -#: src/glabels_batch.c:139 -#, c-format -msgid "cannot open glabels file %s\n" -msgstr "impossível abrir o arquivo glabels\n" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "Reverter para a cópia gravada de %s?" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "Tipo de mídia desconhecido. Usando padrão." - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"``%s'' foi modificado.\n" -"\n" -"Deseja salvá-lo?" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "Não salve" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "Impossível salvar o arquivo" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "Salvar como" - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "Fechar / Salvar etiqueta como" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "Etiqueta não é mais válida" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "Necessário informar nome do arquivo" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "Erro gravando o arquivo" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "Apagar" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "Trazer para frente" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "Enviar para trás" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "Editar propriedades..." - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "Editar propriedades do objeto texto" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "Texto" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "Aparência" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "Propriedades de Texto" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "Posição" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "Editar propriedades do objeto linha" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "Linha" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "Posição/Tamanho" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "Tamanho" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "Editar propriedades do objeto caixa" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "Contorno" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "Preencher" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "Editar propriedades do objeto elipse" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "Editar propriedades do objeto imagem" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "Imagem" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "Redefinir tamanho da imagem" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "Formato de imagem não suportado atualmente" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "Editar propriedades do objeto código de barras" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "Dado" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "Dado do Código de Barras:" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "Geral" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "Estilo" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "Código de barras inválido" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "Largura:" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "Altura:" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "Manter taxa de aspecto atual" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "pontos" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "Cor:" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "Fonte:" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "Alinhamento:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "Chave:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "Inserir campo de fusão" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "Comprimento:" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "Ângulo:" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "graus" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "Escala:" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "Exibir texto com código de barras" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "Literal:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "erro: xmlParseFile" - -#: src/label.c:228 -msgid "No document root" -msgstr "Sem raiz do documento" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "documento de tipo errado, espaço de nome glabels não encontrado" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "Nó raiz ruim = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "nó ruim = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "Problema salvando arquivo xml." - -#: src/template.c:224 -msgid "No template files found!" -msgstr "Nenhum arquivo modelo encontrado!" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "Editar propriedades de fusão do documento" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "Fonte" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "Formato:" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "Localização" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "Campos" - -#: src/merge.c:78 -msgid "None" -msgstr "Nenhum" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "Texto separado com tab" - -#: src/merge.c:94 -msgid "Text with comma separators (CSV)" -msgstr "Texto separado com vírgulas (CSV)" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "Texto separado com dois pontos" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "Não definido" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "Selecione a fonte da base de dados da fusão" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "Coluna" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "Chave do campo específico" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "Dado de amostra" - -#: src/menu.c:50 -msgid "_New" -msgstr "_Novo" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "Criar uma etiqueta nova, vazia" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "D_esmarcar Tudo " - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "Remover todas as seleções" - -#: src/menu.c:94 -msgid "Select" -msgstr "Selecionar" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "Selecionar, movimentar e modificar objetos" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "Criar objeto texto" - -#: src/menu.c:103 -msgid "Box" -msgstr "Caixa" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "Criar objeto caixa/retângulo" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "Criar objeto linha" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "Elipse" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "Criar objeto elipse/círculo" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "Criar objeto imagem" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "Código de Barras" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "Criar objeto código de barras" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "Mais Zoom" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "Menos Zoom" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "Zoom 1:1" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "Zoom para 1:1" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "Propriedades de Fusão" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "Editar propriedades de fusão" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "_Ferramentas" - -#: src/menu.c:168 -msgid " New " -msgstr " Novo " - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "Nova Etiqueta/Cartão" - -#: src/menu.c:170 -msgid " Open " -msgstr " Abrir " - -#: src/menu.c:170 -msgid "Open a file" -msgstr "Abrir um arquivo" - -#: src/menu.c:172 -msgid " Save " -msgstr " Salvar " - -#: src/menu.c:172 -msgid "Save current file" -msgstr "Salvar arquivo atual" - -#: src/menu.c:175 -msgid " Print " -msgstr " Imprimir " - -#: src/menu.c:175 -msgid "Print current file" -msgstr "Imprimir arquivo atual" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"Um programa para criação de etiquetas e cartões de negócios para o GNOME.\n" -"\n" -"Glabels é software livre; você pode redistribuí-lo e/ou modificá-lo sob os " -"termos da Licença Pública Geral GNU conforme publicada pela Free Software " -"Foundation; ou a versão 2 da Licença, ou (sob sua opção) qualquer versão " -"posterior.\n" -"\n" -"Este programa é distribuido na esperança de que seja útil, mas SEM QUALQUER " -"GARANTIA; sem mesmo as garantias implícitas de COMERCIALIZAÇÃO ou AJUSTES A " -"UM PROPÓSITO PARTICULAR. Veja a Licença Pública Geral GNU para mais " -"detalhes.\n" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "Função não está implementada!" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "Nova Etiqueta ou Cartão" - -#: src/file.c:98 -msgid "Media Type" -msgstr "Tipo de mídia" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "Orientação da etiqueta" - -#: src/file.c:211 -msgid "Open" -msgstr "Abrir" - -#: src/file.c:213 -msgid "Open label" -msgstr "Abrir etiqueta" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "Impossível abrir o arquivo" - -#: src/file.c:316 -msgid "Save label as" -msgstr "Salvar etiqueta como" - -#: src/media_select.c:222 -msgid "Description:" -msgstr "Descrição:" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "Tamanho da página:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "Tamanho da etiqueta:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "Disposição:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d por página)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "Girar" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "Imprimir" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "Cópias" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "Controle de fusão do documento" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "Opções" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "Visualizar impressão" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "Páginas:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "Etiquetas" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "de:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "até:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "Iniciar na etiqueta" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "na primeira folha" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "Ordenar" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "Cópias:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels: Preferências" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "Exibir unidades" - -#: src/prefs.c:231 -msgid "Points" -msgstr "Pontos" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "Polegadas" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "Milímetros" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "Tamanho de página padrão" - -#: src/prefs.c:450 -msgid "inches" -msgstr "poleg." - -#: src/prefs.c:452 -msgid "mm" -msgstr "mm" - -#~ msgid "Function is not yet implemented!" -#~ msgstr "Função ainda não implementada!" diff --git a/glabels1/po/ru.po b/glabels1/po/ru.po deleted file mode 100644 index 834ce31d..00000000 --- a/glabels1/po/ru.po +++ /dev/null @@ -1,714 +0,0 @@ -# Russian translation of glabels. -# Copyright (C) 2002 Free Software Foundation, Inc. -# Vitaly Lipatov , 2002 -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.4.5\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2002-09-06 01:32MSK\n" -"Last-Translator: Vitaly Lipatov \n" -"Language-Team: Russian \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=KOI8-R\n" -"Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 0.9.6\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "ÎÁÐÅÞÁÔÁÔØ ÜÔÏ ÓÏÏÂÝÅÎÉÅ" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "ÎÁÐÅÞÁÔÁÔØ ÉÓÐÏÌØÚÕÅÍÕÀ ×ÅÒÓÉÀ ÐÁËÅÔÎÏÊ ÏÂÒÁÂÏÔËÉ glabels" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "ÕÓÔÁÎÏ×ÉÔØ ÎÁÚ×ÁÎÉÅ ×ÙÈÏÄÎÏÇÏ ÆÁÊÌÁ (ÐÏ ÕÍÏÌÞÁÎÉÀ - \"output.ps\"" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "ÎÁÚ×ÁÎÉÅ" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "ËÏÌÉÞÅÓÔ×Ï ÓÔÒÁÎÉà (ÐÏ ÕÍÏÌÞÁÎÉÀ - 1)" - -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "ÓÔÒÁÎÉÃ" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "ËÏÌÉÞÅÓÔ×Ï ËÏÐÉÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ - 1)" - -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "ËÏÐÉÊ" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "ÎÁÐÅÞÁÔÁÔØ ËÏÎÔÕÒÙ ÜÔÉËÅÔÏË" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "ÎÁÐÅÞÁÔÁÔØ ÚÅÒËÁÌØÎÏ" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "[ðáòáíåôòù...] ÆÁÊÌ_glabels" - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "ÎÅ ÕËÁÚÁÎ ÆÁÊÌ glabels\n" - -#: src/glabels_batch.c:139 -msgid "cannot open glabels file %s\n" -msgstr "ÎÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ %s\n" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "÷ÅÒÎÕÔØÓÑ Ë ÓÏÈÒÁΣÎÎÏÊ ËÏÐÉÉ %s?" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÎÏÓÉÔÅÌÑ. éÓÐÏÌØÚÕÅÍ ÚÎÁÞÅÎÉÅ ÐÏ ÕÍÏÌÞÁÎÉÀ." - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"``%s'' ÂÙÌ ÉÚÍÅΣÎ.\n" -"\n" -"óÏÈÒÁÎÉÔØ ÅÇÏ?" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "îÅ ÓÏÈÒÁÎÑÔØ" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "óÏÈÒÁÎÉÔØ ËÁË" - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "úÁËÒÙÔØ / óÏÈÒÁÎÉÔØ ÜÔÉËÅÔËÕ ËÁË" - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "üÔÉËÅÔËÁ ÂÏÌØÛÅ ÎÅ ×ÅÒÎÁ!" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "îÁÚ×ÁÎÉÅ ÆÁÊÌÁ ÄÏÌÖÎÏ ÂÙÔØ ÕËÁÚÁÎÏ" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ ÆÁÊÌÁ" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "õÄÁÌÉÔØ" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "îÁ ÐÅÒÅÄÎÉÊ ÐÌÁÎ" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "îÁ ÚÁÄÎÉÊ ÐÌÁÎ" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á..." - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅËÔÁ ÔÉÐÁ ÔÅËÓÔ" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "ôÅËÓÔ" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "÷ÎÅÛÎÉÊ ×ÉÄ" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "ó×ÏÊÓÔ×Á ÔÅËÓÔÁ" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "òÁÓÐÏÌÏÖÅÎÉÅ" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅËÔÁ ÔÉÐÁ ÌÉÎÉÑ" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "ìÉÎÉÑ" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "òÁÓÐÏÌÏÖÅÎÉÅ/òÁÚÍÅÒ" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "òÁÚÍÅÒ" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅËÔÁ ÔÉÐÁ ÐÒÑÍÏÕÇÏÌØÎÉË" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "ëÏÎÔÕÒ" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "úÁÐÏÌÎÅÎÉÅ" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "éÓÐÒÁ×ÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅËÔÁ ÔÉÐÁ ÜÌÌÉÐÓ" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "éÓÐÒÁ×ÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅËÔÁ ÔÉÐÁ ÉÚÏÂÒÁÖÅÎÉÅ" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "éÚÏÂÒÁÖÅÎÉÅ" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "õÓÔÁÎÏ×ÉÔØ ÒÁÚÍÅÒ ÉÚÏÂÒÁÖÅÎÉÑ ÐÏ ÕÍÏÌÞÁÎÉÀ" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "äÁÎÎÙÊ ÆÏÒÍÁÔ ÉÚÏÂÒÁÖÅÎÉÊ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "éÚÍÅÎÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅËÔÁ ÔÉÐÁ ÛÔÒÉÈ-ËÏÄ" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "äÁÎÎÙÅ" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "äÁÎÎÙÅ ÛÔÒÉÈ-ËÏÄÁ" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "ïÂÝÅÅ" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "ôÉÐ" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "îÅ×ÅÒÎÙÊ ÛÔÒÉÈ-ËÏÄ" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "ûÉÒÉÎÁ:" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "÷ÙÓÏÔÁ:" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "óÏÈÒÁÎÑÔØ ÔÅËÕÝÉÅ ÐÒÏÐÏÒÃÉÉ" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "ÔÏÞÅË" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "ã×ÅÔ:" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "ûÒÉÆÔ:" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "÷ÙÒÁ×ÎÉ×ÁÎÉÅ:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "ëÌÀÞ:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "÷ÓÔÁ×ÉÔØ ÏÂßÅÄÉÎÉÔÅÌØÎÏÅ ÐÏÌÅ" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "äÌÉÎÁ:" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "õÇÏÌ:" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "ÇÒÁÄÕÓÏ×" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "íÁÓÛÔÁÂ:" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "ðÏËÁÚÁÔØ ÔÅËÓÔ ÓÏ ÛÔÒÉÈ-ËÏÄÏÍ" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "âÕË×ÁÌØÎÏ:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "ïÛÉÂËÁ ÐÒÉ ÒÁÚÂÏÒÅ ÆÁÊÌÁ XML" - -#: src/label.c:228 -msgid "No document root" -msgstr "îÅÔ ËÏÒÎÑ ÄÏËÕÍÅÎÔÁ" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "ÄÏËÕÍÅÎÔ ÎÅ×ÅÒÎÏÇÏ ÔÉÐÁ, ÐÒÏÓÔÒÁÎÓÔ×Ï ÉͣΠÎÅ ÎÁÊÄÅÎÏ" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "îÅ×ÅÒÎÙÊ ËÏÒÎÅ×ÏÊ ÕÚÅÌ = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "ÎÅ×ÅÒÎÙÊ ÕÚÅÌ = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "ðÒÏÂÌÅÍÙ ÐÒÉ ÓÏÈÒÁÎÅÎÉÉ ÆÁÊÌÁ XML" - -#: src/template.c:224 -msgid "No template files found!" -msgstr "îÅ ÎÁÊÄÅÎÙ ÆÁÊÌÙ ÛÁÂÌÏÎÁ!" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "éÓÐÒÁ×ÉÔØ Ó×ÏÊÓÔ×Á ÄÏËÕÍÅÎÔÁ-ÏÂßÅÄÉÎÅÎÉÑ" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "éÓÔÏÞÎÉË" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "æÏÒÍÁÔ:" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "òÁÓÐÏÌÏÖÅÎÉÅ:" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "ðÏÌÑ" - -#: src/merge.c:78 -msgid "None" -msgstr "îÉÞÅÇÏ" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "ôÅËÓÔ Ó ÔÁÂÕÌÑÔÏÒÁÍÉ × ËÁÞÅÓÔ×Å ÒÁÚÄÅÌÉÔÅÌÑ" - -#: src/merge.c:94 -msgid "Text with comma separators (CSV)" -msgstr "ôÅËÓÔ Ó ÚÁÐÑÔÙÍÉ × ËÁÞÅÓÔ×Å ÒÁÚÄÅÌÉÔÅÌÑ" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "ôÅËÓÔ Ó Ä×ÏÅÔÏÞÉÑÍÉ × ËÁÞÅÓÔ×Å ÒÁÚÄÅÌÉÔÅÌÑ" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "îÅÄÏÓÔÕÐÎÏ" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "÷ÙÂÒÁÔØ ÉÓÔÏÞÎÉË ÏÂßÅÄÉÎÅÎÉÑ-ÂÁÚÙ ÄÁÎÎÙÈ" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "óÔÏÌÂÅÃ" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "îÅÓÔÁÎÄÁÒÔÎÙÊ ËÌÀÞ ÐÏÌÑ" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "ðÒÉÍÅÒ ÄÁÎÎÙÈ" - -#: src/menu.c:50 -msgid "_New" -msgstr "_óÏÚÄÁÔØ" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "óÏÚÄÁÔØ ÎÏ×ÕÀ, ÐÕÓÔÕÀ ÜÔÉËÅÔËÕ" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "_óÎÑÔØ ×ÙÄÅÌÅÎÉÅ" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "õÄÁÌÉÔØ ×Ó£ ×ÙÄÅÌÅÎÎÏÅ" - -#: src/menu.c:94 -msgid "Select" -msgstr "÷ÙÂÏÒ" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "÷ÙÂÒÁÔØ, ÐÅÒÅÍÅÓÔÉÔØ ÉÌÉ ÉÚÍÅÎÉÔØ ÏÂßÅËÔÙ" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "óÏÚÄÁÔØ ÔÅËÓÔÏ×ÙÊ ÏÂßÅËÔ" - -#: src/menu.c:103 -msgid "Box" -msgstr "ðÒÑÍÏÕÇÏÌØÎÉË" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "óÏÚÄÁÔØ ÐÒÑÍÏÕÇÏÌØÎÉË" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "óÏÚÄÁÔØ ÌÉÎÉÀ" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "üÌÌÉÐÓ" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "óÏÚÄÁÔØ ÜÌÌÉÐÓ/ËÒÕÇ" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "óÏÚÄÁÔØ ÉÚÏÂÒÁÖÅÎÉÅ" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "ûÔÒÉÈ-ËÏÄ" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "óÏÚÄÁÔØ ÏÂßÅËÔ ÛÔÒÉÈ-ËÏÄÁ" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "õ×ÅÌÉÞÉÔØ" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "õÍÅÎØÛÉÔØ" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "íÁÓÛÔÁ 1:1" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "õÓÔÁÎÏ×ÉÔØ ÍÁÓÛÔÁÂ" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "ó×ÏÊÓÔ×Á ÏÂßÅÄÉÎÅÎÉÑ" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "éÓÐÒÁ×ÉÔØ Ó×ÏÊÓÔ×Á ÏÂßÅÄÉÎÅÎÉÑ" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "_éÎÓÔÒÕÍÅÎÔÙ" - -#: src/menu.c:168 -msgid " New " -msgstr "óÏÚÄÁÔØ" - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "óÏÚÄÁÔØ ÎÏ×ÕÀ ÜÔÉËÅÔËÕ ÉÌÉ ×ÉÚÉÔËÕ" - -#: src/menu.c:170 -msgid " Open " -msgstr "ïÔËÒÙÔØ" - -#: src/menu.c:170 -msgid "Open a file" -msgstr "ïÔËÒÙÔØ ÆÁÊÌ" - -#: src/menu.c:172 -msgid " Save " -msgstr "óÏÈÒÁÎÉÔØ" - -#: src/menu.c:172 -msgid "Save current file" -msgstr "óÏÈÒÁÎÉÔØ ÔÅËÕÝÉÊ ÆÁÊÌ" - -#: src/menu.c:175 -msgid " Print " -msgstr "òÁÓÐÅÞÁÔÁÔØ" - -#: src/menu.c:175 -msgid "Print current file" -msgstr "òÁÓÐÅÞÁÔÁÔØ ÔÅËÕÝÉÊ ÆÁÊÌ" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"ðÒÏÇÒÁÍÍÁ ÓÏÚÄÁÎÉÑ ÜÔÉËÅÔÏË É ×ÉÚÉÔÏË ÄÌÑ GNOME\n" -" \n" -"Glabels Ñ×ÌÑÅÔÓÑ Ó×ÏÂÏÄÎÙÍ ÐÒÏÇÒÁÍÍÎÙÍ ÏÂÅÓÐÅÞÅÎÉÅÍ; ×Ù ×ÐÒÁ×Å " -"ÒÁÓÐÒÏÓÔÒÁÎÑÔØ Å£ É/ÉÌÉ ÍÏÄÉÆÉÃÉÒÏ×ÁÔØ × ÓÏÏÔ×ÅÔÓÔ×ÉÑÍÉ Ó ÕÓÌÏ×ÉÑÍÉ ×ÅÒÓÉÉ 2 " -"ÌÉÂÏ ÐÏ ×ÁÛÅÍÕ ×ÙÂÏÒÕ ÂÏÌÅÅ ÐÏÚÄÎÅÊ ×ÅÒÓÉÉ óÔÁÎÄÁÒÔÎÏÊ ïÂÝÅÓÔ×ÅÎÎÏÊ ìÉÃÅÎÚÉÉ " -"GNU, ÏÐÕÂÌÉËÏ×ÁÎÎÏÊ Free Software Foundation.\n" -" \n" -"íÙ ÒÁÓÐÒÏÓÔÒÁÎÑÅÍ ÄÁÎÎÕÀ ÐÒÏÇÒÁÍÍÕ × ÎÁÄÅÖÄÅ ÎÁ ÔÏ, ÞÔÏ ÏÎÁ ÂÕÄÅÔ ×ÁÍ " -"ÐÏÌÅÚÎÏÊ, ÏÄÎÁËÏ îå ðòåäïóôá÷ìñåí îá îå³ îéëáëéè çáòáîôéê, × ÔÏÍ ÞÉÓÌÅ " -"çáòáîôéé ôï÷áòîïçï óïóôïñîéñ ðòé ðòïäáöå É ðòéçïäîïóôé äìñ éóðïìøúï÷áîéñ ÷ " -"ëïîëòåôîùè ãåìñè. äÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÊ ÉÎÆÏÒÍÁÃÉÉ ÏÚÎÁËÏÍØÔÅÓØ ÓÏ " -"óÔÁÎÄÁÒÔÎÏÊ ïÂÝÅÓÔ×ÅÎÎÏÊ ìÉÃÅÎÚÉÅÊ GNU.\n" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "æÕÎËÃÉÑ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ!" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "îÏ×ÁÑ ÜÔÉËÅÔËÁ ÉÌÉ ×ÉÚÉÔËÁ" - -#: src/file.c:98 -msgid "Media Type" -msgstr "ôÉÐ ÎÏÓÉÔÅÌÑ" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "òÁÓÐÏÌÏÖÅÎÉÅ ÜÔÉËÅÔËÉ" - -#: src/file.c:211 -msgid "Open" -msgstr "ïÔËÒÙÔØ" - -#: src/file.c:213 -msgid "Open label" -msgstr "ïÔËÒÙÔØ ÜÔÉËÅÔËÕ" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "îÅ×ÏÚÍÏÖÎÏ ÏÔËÒÙÔØ ÆÁÊÌ" - -#: src/file.c:316 -msgid "Save label as" -msgstr "óÏÈÒÁÎÉÔØ ÜÔÉËÅÔËÕ ËÁË" - -#: src/media_select.c:222 -msgid "Description:" -msgstr "ïÐÉÓÁÎÉÅ:" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "òÁÚÍÅÒ ÓÔÒÁÎÉÃÙ:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "òÁÚÍÅÒ ÜÔÉËÅÔËÉ:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "æÏÒÍÁÔ:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (%d ÎÁ ÌÉÓÔ)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "ðÏ×ÅÒÎÕÔØ" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "òÁÓÐÅÞÁÔÁÔØ" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "ëÏÐÉÊ" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "õÐÒÁ×ÌÅÎÉÅ ÏÂßÅÄÉÎÅÎÉÅÍ" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "ðÁÒÁÍÅÔÒÙ" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "ðÒÏÓÍÏÔÒÅÔØ" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "ìÉÓÔÏ×:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "üÔÉËÅÔËÉ" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "Ó:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "ÄÏ:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "îÁÞÁÔØ Ó ÜÔÉËÅÔËÉ" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "ÎÁ ÐÅÒ×ÏÍ ÌÉÓÔÅ" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "óÏÂÉÒÁÔØ" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "ëÏÐÉÊ:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels: ðÁÒÁÍÅÔÒÙ" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "åÄÉÎÉÃÙ ÏÔÏÂÒÁÖÅÎÉÑ" - -#: src/prefs.c:231 -msgid "Points" -msgstr "ôÏÞËÉ" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "äÀÊÍÙ" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "íÉÌÌÉÍÅÔÒÙ" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "òÁÚÍÅÒ ÂÕÍÁÇÉ ÐÏ ÕÍÏÌÞÁÎÉÀ" - -#: src/prefs.c:450 -msgid "inches" -msgstr "ÄÀÊÍÏ×" - -#: src/prefs.c:452 -msgid "mm" -msgstr "ÍÍ" - diff --git a/glabels1/po/stamp-cat-id b/glabels1/po/stamp-cat-id deleted file mode 100644 index 9788f702..00000000 --- a/glabels1/po/stamp-cat-id +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/glabels1/po/zh_TW.Big5.po b/glabels1/po/zh_TW.Big5.po deleted file mode 100644 index 864f6187..00000000 --- a/glabels1/po/zh_TW.Big5.po +++ /dev/null @@ -1,712 +0,0 @@ -# Traditional Chinese Translation for glabels -# Copyright (C) 2002 Free Software Foundation, Inc. -# Shell Hung , 2002 -# -msgid "" -msgstr "" -"Project-Id-Version: glabels 0.4.4\n" -"POT-Creation-Date: 2002-08-24 22:30-0400\n" -"PO-Revision-Date: 2002-07-14 18:30+0800\n" -"Last-Translator: Shell Hung \n" -"Language-Team: zh-l10n \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=big5\n" -"Content-Transfer-Encoding: 8bit\n" - -#: src/glabels_batch.c:49 -msgid "print this message" -msgstr "¦C¦L³o­Ó°T®§" - -#: src/glabels_batch.c:51 -msgid "print the version of glabels-batch being used" -msgstr "¦C¦L¥X glabels-batch ªºª©¥»¸ê°T" - -#: src/glabels_batch.c:53 -msgid "set output filename (default=\"output.ps\")" -msgstr "³]©w¿é¥XÀɦWºÙ (¹w³]¬°\"output.ps\")" - -#: src/glabels_batch.c:53 -msgid "filename" -msgstr "ÀɮצWºÙ" - -#: src/glabels_batch.c:55 -msgid "number of sheets (default=1)" -msgstr "¯È±i¼Æ¥Ø (¹w³]¬° 1)" - -#: src/glabels_batch.c:55 -msgid "sheets" -msgstr "¯È±i" - -#: src/glabels_batch.c:57 -msgid "number of copies (default=1)" -msgstr "¥÷¼Æ (¹w³]¬° 1)" - -#: src/glabels_batch.c:57 -msgid "copies" -msgstr "¥÷¼Æ" - -#: src/glabels_batch.c:59 src/print_dialog.c:152 -msgid "print outlines (to test printer alignment)" -msgstr "¦L¥X¥~Ãä (´ú¸Õ¥´¦L¾÷°Ñ¼Æ)" - -#: src/glabels_batch.c:61 src/print_dialog.c:160 -msgid "print in reverse (i.e. a mirror image)" -msgstr "¤Ï¤è¦V¦C¦L (¦p­Ë¦V¼v¹³)" - -#: src/glabels_batch.c:92 -msgid "[OPTION...] GLABELS_FILE..." -msgstr "[¿ï¶µ...] GLABELS_FILE..." - -#: src/glabels_batch.c:111 -msgid "missing glabels file\n" -msgstr "¨S¦³¿é¤J glabels ªºÀÉ®×\n" - -#: src/glabels_batch.c:139 -#, c-format -msgid "cannot open glabels file %s\n" -msgstr "¶}±ÒÀÉ®×¥¢±Ñ %s\n" - -#: src/mdi.c:169 -#, c-format -msgid "Revert to saved copy of %s?" -msgstr "­n¸ü¤J¤wÀx¦sªº³Æ¥÷ %s ?" - -#: src/mdi.c:207 -msgid "Unknown media type. Using default." -msgstr "¤£©úªº´CÅéÃþ§Î. ¨Ï¥Î¹w³]." - -#: src/mdi.c:455 -#, c-format -msgid "" -"``%s'' has been modified.\n" -"\n" -"Do you wish to save it?" -msgstr "" -"``%s`` ¤w³Q­×§ï.\n" -"\n" -"­n²{¦bÀx¦s¶Ü ?" - -#: src/mdi.c:459 -msgid "Don't save" -msgstr "¤£­nÀx¦s" - -#: src/mdi.c:601 src/file.c:288 -msgid "Cannot save file" -msgstr "¤£¯àÀx¦sÀÉ®×" - -#: src/mdi.c:623 src/file.c:311 -msgid "Save As" -msgstr "¥t¦s¬°..." - -#: src/mdi.c:626 -msgid "Close / Save label as" -msgstr "Ãö³¬ / Àx¦s¼Ðñ¬°..." - -#: src/mdi.c:680 src/file.c:352 -msgid "Label no longer valid!" -msgstr "¼Ðñ¨Ã¤£¬O¥¿½T¥iŪªº !" - -#: src/mdi.c:693 src/file.c:362 -msgid "Must supply file name" -msgstr "½Ð¥²»Ý¿é¤JÀɮצWºÙ" - -#: src/mdi.c:705 src/file.c:374 -msgid "Error writing file" -msgstr "¦b¼g¤JÀɮ׮ɵo¥Í¿ù»~" - -#: src/display.c:1250 src/display.c:1298 -msgid "Delete" -msgstr "§R°£" - -#: src/display.c:1260 src/display.c:1308 -msgid "Bring to front" -msgstr "±a¥X¨ì«e­±" - -#: src/display.c:1266 src/display.c:1314 -msgid "Send to back" -msgstr "©ñ¦b³Ì©³" - -#: src/display.c:1287 -msgid "Edit properties..." -msgstr "­×§ï³]©w..." - -#: src/item_text.c:450 -msgid "Edit text object properties" -msgstr "­×§ï¤å¦rª«¥óªº³]©w" - -#: src/item_text.c:460 src/item_text.c:464 src/item_text.c:637 src/menu.c:100 -msgid "Text" -msgstr "¤å¦r" - -#: src/item_text.c:479 src/item_line.c:253 src/item_box.c:245 -#: src/item_ellipse.c:247 src/item_barcode.c:317 -msgid "Appearance" -msgstr "¼Ë»ª" - -#. ------ Begin Text Properties box ------ -#: src/item_text.c:482 -msgid "Text Properties" -msgstr "¤å¦r¼Ë»ª" - -#. ------ Position Frame ------ -#: src/item_text.c:500 src/item_text.c:503 src/item_line.c:274 -#: src/item_box.c:275 src/item_ellipse.c:277 src/item_image.c:318 -#: src/item_barcode.c:345 src/item_barcode.c:348 -msgid "Position" -msgstr "¦ì¸m" - -#: src/item_line.c:243 -msgid "Edit line object properties" -msgstr "­×§ï½uª«¥óªº³]©w" - -#. ------ Begin Line box ------ -#: src/item_line.c:256 src/menu.c:106 -msgid "Line" -msgstr "½u" - -#: src/item_line.c:271 src/item_box.c:272 src/item_ellipse.c:274 -#: src/item_image.c:315 -msgid "Position/Size" -msgstr "¦ì¸m/¤j¤p" - -#. ------ Size Frame ------ -#: src/item_line.c:285 src/item_box.c:286 src/item_ellipse.c:288 -#: src/item_image.c:329 -msgid "Size" -msgstr "¤j¤p" - -#: src/item_box.c:235 -msgid "Edit box object properties" -msgstr "­×§ï¤è¶ôª«¥ó³]©w" - -#. ------ Line box ------ -#: src/item_box.c:248 src/item_ellipse.c:250 -msgid "Outline" -msgstr "¥~Ãä" - -#. ------ Fill box ------ -#: src/item_box.c:258 src/item_ellipse.c:260 -msgid "Fill" -msgstr "¶ñº¡" - -#: src/item_ellipse.c:237 -msgid "Edit ellipse object properties" -msgstr "­×§ï¾ò¶êª«¥ó³]©w" - -#: src/item_image.c:257 -msgid "Edit image object properties" -msgstr "­×§ï¹Ï¹³ª«¥ó³]©w" - -#: src/item_image.c:268 src/menu.c:113 -msgid "Image" -msgstr "¹Ï¹³" - -#. ------ Size Reset Button ------ -#: src/item_image.c:342 -msgid "Reset image size" -msgstr "­«³]¹Ï¹³¤j¤p" - -#: src/item_image.c:389 src/item_image.c:454 -msgid "Image format not currently supported" -msgstr "¹Ï¹³®æ¦¡¨Ã¨S¦³¤ä´©" - -#: src/item_barcode.c:287 -msgid "Edit barcode object properties" -msgstr "­×§ï¼Æ½X±øª«¥ó³]©w" - -#: src/item_barcode.c:297 -msgid "Data" -msgstr "¸ê®Æ" - -#: src/item_barcode.c:299 -msgid "Barcode data" -msgstr "¼Æ½X±ø¸ê®Æ" - -#. ------ Begin Barcode Properties Frame ------ -#: src/item_barcode.c:320 src/prefs.c:215 -msgid "General" -msgstr "¤@¯ë" - -#. ------ Barcode Style Frame ------ -#: src/item_barcode.c:330 -msgid "Style" -msgstr "¼Ë¦¡" - -#: src/item_barcode.c:549 src/item_barcode.c:572 src/print.c:631 -msgid "Invalid barcode" -msgstr "¤£¥¿½Tªº¼Æ½X±ø" - -#. W Label -#: src/prop_size.c:182 src/prop_line.c:169 -msgid "Width:" -msgstr "Áï«×:" - -#. H label -#: src/prop_size.c:198 -msgid "Height:" -msgstr "°ª«×:" - -#: src/prop_size.c:222 -msgid "Maintain current aspect ratio" -msgstr "«O¯d²{¦³ªº¤j¤p¤ñ¨Ò" - -#. X label -#: src/prop_position.c:173 -msgid "X:" -msgstr "X:" - -#. Y label -#: src/prop_position.c:191 -msgid "Y:" -msgstr "Y:" - -#. Line Width units -#: src/prop_line.c:183 src/prefs.c:448 src/prefs.c:455 -msgid "points" -msgstr "ÂI" - -#. Line Color Label -#: src/prop_line.c:189 src/prop_fill.c:166 src/prop_text.c:234 -#: src/prop_bc.c:188 -msgid "Color:" -msgstr "ÃC¦â:" - -#. Font label -#: src/prop_text.c:181 -msgid "Font:" -msgstr "¦r«¬:" - -#. Alignment label -#: src/prop_text.c:248 -msgid "Alignment:" -msgstr "¹ï¸m:" - -#. Insert merge field label -#: src/prop_text_entry.c:180 src/prop_bc_data.c:196 -msgid "Key:" -msgstr "¸ê®Æ­È:" - -#: src/prop_text_entry.c:196 -msgid "Insert merge field" -msgstr "´¡¤J¦X¨Ö¦C" - -#. Length label -#: src/prop_vector.c:183 -msgid "Length:" -msgstr "ªø«×:" - -#. Angle label -#: src/prop_vector.c:207 -msgid "Angle:" -msgstr "¨¤«×:" - -#. Angle units label -#: src/prop_vector.c:224 -msgid "degrees" -msgstr "«×¼Æ" - -#. Scale Label -#: src/prop_bc.c:168 -msgid "Scale:" -msgstr "¤ñ¨Ò:" - -#. % Label -#: src/prop_bc.c:182 -msgid "%" -msgstr "%" - -#: src/prop_bc_style.c:313 -msgid "Show text with barcode" -msgstr "Åã¥Ü¼Æ½X±ø¤å¦r" - -#: src/prop_bc_data.c:176 -msgid "Literal:" -msgstr "¤å¦r:" - -#: src/label.c:173 src/label.c:197 -msgid "xmlParseFile error" -msgstr "xmlParseFile ¿ù»~" - -#: src/label.c:228 -msgid "No document root" -msgstr "¨S¦³¤å¥ó©lºÝ" - -#: src/label.c:239 -msgid "document of the wrong type, glabels Namespace not found" -msgstr "¤£¥¿½Tªº¤å¥óºØÃþ, §ä¤£¨ì glabels ®æ¦¡" - -#: src/label.c:244 -#, c-format -msgid "Bad root node = \"%s\"" -msgstr "¿ù»~ªº°ò½X = \"%s\"" - -#: src/label.c:291 -#, c-format -msgid "bad node = \"%s\"" -msgstr "¿ù»~ªº¸`ÂI = \"%s\"" - -#: src/label.c:606 -msgid "Problem saving xml file." -msgstr "Àx¦s XML Àɮ׮ɵo¥Í¿ù»~." - -#: src/template.c:224 -msgid "No template files found!" -msgstr "§ä¤£¨ì¼Ëª©ÀÉ®× !" - -#: src/merge_properties.c:82 -msgid "Edit document-merge properties" -msgstr "­×§ï¤å¥ó¦X¨Ö³]©w" - -#: src/merge_properties.c:131 -msgid "Source" -msgstr "¨Ó·½ÀÉ" - -#: src/merge_properties.c:143 -msgid "Format:" -msgstr "®æ¦¡:" - -#: src/merge_properties.c:158 -msgid "Location:" -msgstr "¦ì¸m:" - -#: src/merge_properties.c:168 -msgid "Fields" -msgstr "Äæ¦ì" - -#: src/merge.c:78 -msgid "None" -msgstr "¨S¦³" - -#: src/merge.c:86 -msgid "Text with tab separators" -msgstr "¥H [TAB] ¬°¤À®æ" - -#: src/merge.c:94 -msgid "Text with comma separators (CSV)" -msgstr "¥H³r¸¹¤À®æ (CSV)" - -#: src/merge.c:102 -msgid "Text with colon separators" -msgstr "¥H«_¸¹¤À®æ" - -#: src/merge_ui.c:207 src/merge_ui.c:242 src/merge_ui.c:387 src/merge_ui.c:428 -msgid "N/A" -msgstr "N/A" - -#: src/merge_ui_text.c:170 -msgid "Select merge-database source" -msgstr "¿ï¾Ü¦X¨Ö¸ê®Æ®w¨Ó·½" - -#: src/merge_ui_text.c:330 -msgid "Column" -msgstr "¦C" - -#: src/merge_ui_text.c:334 -msgid "Custom field key" -msgstr "¦Û­qÄæ¦ìÆ_" - -#: src/merge_ui_text.c:338 -msgid "Sample data" -msgstr "¼Ë¥»¸ê®Æ" - -#: src/menu.c:50 -msgid "_New" -msgstr "·s¼W (&_N)" - -#: src/menu.c:51 -msgid "Make a new, empty label" -msgstr "»s§@·sÀÉ, ªÅªº¼Ëñ" - -#: src/menu.c:85 -msgid "U_nselect All " -msgstr "¤Ï¿ï¾Ü¥þ³¡ (&_N)" - -#: src/menu.c:86 -msgid "Remove all selections" -msgstr "²¾°£©Ò¦³¿ï¾Ü¶µ" - -#: src/menu.c:94 -msgid "Select" -msgstr "¿ï¾Ü" - -#: src/menu.c:95 src/menu.c:186 -msgid "Select, move and modify objects" -msgstr "¿ï¾Ü, ²¾°Ê¤Î­×§ïª«¥ó" - -#: src/menu.c:100 src/menu.c:191 -msgid "Create text object" -msgstr "«Ø¥ß·sªº¤å¦rª«¥ó" - -#: src/menu.c:103 -msgid "Box" -msgstr "²°¤l" - -#: src/menu.c:103 src/menu.c:194 -msgid "Create box/rectangle object" -msgstr "«Ø¥ß·sªº²°¤l/¤è§Îª«¥ó" - -#: src/menu.c:106 src/menu.c:197 -msgid "Create line object" -msgstr "µe½uª«¥ó" - -#: src/menu.c:109 -msgid "Ellipse" -msgstr "¾ò¶ê§Î" - -#: src/menu.c:110 src/menu.c:200 -msgid "Create ellipse/circle object" -msgstr "«Ø¥ß¾ò¶ê§Î/¹Ï§Îª«¥ó" - -#: src/menu.c:113 src/menu.c:203 -msgid "Create image object" -msgstr "«Ø¥ß¼v¹³ª«¥ó" - -#: src/menu.c:116 -msgid "Barcode" -msgstr "¼Æ½X±ø" - -#: src/menu.c:116 src/menu.c:206 -msgid "Create barcode object" -msgstr "«Ø¥ß¼Æ½X±ø" - -#: src/menu.c:121 src/menu.c:211 -msgid "Zoom in" -msgstr "©ñ¤j" - -#: src/menu.c:124 src/menu.c:214 -msgid "Zoom out" -msgstr "ÁY¤p" - -#: src/menu.c:127 -msgid "Zoom 1:1" -msgstr "1:1 Åã¥Ü" - -#: src/menu.c:127 src/menu.c:217 -msgid "Zoom to 1:1" -msgstr "1:1 Åã¥Ü" - -#: src/menu.c:132 src/menu.c:223 -msgid "Merge properties" -msgstr "¦X¨Ö³]©w" - -#: src/menu.c:133 -msgid "Edit merge properties" -msgstr "­×§ï¦X¨Ö³]©w" - -#: src/menu.c:157 -msgid "_Tools" -msgstr "¤u¨ã (&_T)" - -#: src/menu.c:168 -msgid " New " -msgstr " ·s¼W " - -#: src/menu.c:168 -msgid "New Label/Card" -msgstr "·s¼W¼Ðñ/¥d" - -#: src/menu.c:170 -msgid " Open " -msgstr " ¶}±Ò " - -#: src/menu.c:170 -msgid "Open a file" -msgstr "¶}±ÒÀÉ®×" - -#: src/menu.c:172 -msgid " Save " -msgstr " Àx¦s " - -#: src/menu.c:172 -msgid "Save current file" -msgstr "Àx¦s²{¦bÀÉ®×" - -#: src/menu.c:175 -msgid " Print " -msgstr " ¦C¦L " - -#: src/menu.c:175 -msgid "Print current file" -msgstr "¦C¦L²{¦³ÀÉ®×" - -#: src/menu.c:290 -msgid "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" -msgstr "" -"A label and business card creation program for GNOME.\n" -" \n" -"Glabels 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.\n" -" \n" -"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.\n" - -#: src/menu.c:326 -msgid "Function is not implemented!" -msgstr "¥\¯à¥¼§¹¦¨ !" - -#: src/file.c:72 -msgid "New Label or Card" -msgstr "·s¼W¼Ðñ©Î¥d" - -#: src/file.c:98 -msgid "Media Type" -msgstr "´CÅéºØÃþ" - -#: src/file.c:109 -msgid "Label orientation" -msgstr "¼Ðñ¤è¦V" - -#: src/file.c:211 -msgid "Open" -msgstr "¶}±Ò" - -#: src/file.c:213 -msgid "Open label" -msgstr "¶}±Ò¼Ðñ" - -#: src/file.c:249 -msgid "Cannot open file" -msgstr "¶}±ÒÀÉ®×¥¢±Ñ" - -#: src/file.c:316 -msgid "Save label as" -msgstr "Àx¦s¼Ðñ¬°..." - -#: src/media_select.c:222 -msgid "Description:" -msgstr "´y­z:" - -#: src/media_select.c:227 -msgid "Page size:" -msgstr "¯È±i¤j¤p:" - -#: src/media_select.c:232 -msgid "Label size:" -msgstr "¼Ðñ¤j¤p:" - -#: src/media_select.c:237 -msgid "Layout:" -msgstr "ª©­±:" - -#: src/media_select.c:353 -#, c-format -msgid "%d x %d (%d per sheet)" -msgstr "%d x %d (¨C­¶ %d)" - -#: src/media_select.c:367 -#, c-format -msgid "%s x %s %s" -msgstr "%s x %s %s" - -#: src/media_select.c:372 -#, c-format -msgid "%.5g x %.5g %s" -msgstr "%.5g x %.5g %s" - -#: src/rotate_select.c:169 -msgid "Rotate" -msgstr "±ÛÂà" - -#: src/print_dialog.c:99 -msgid "Print" -msgstr "¦C¦L" - -#. ----------- Add simple-copies widget ------------ -#: src/print_dialog.c:104 -msgid "Copies" -msgstr "¥÷¼Æ" - -#. -------Otherwise add merge control widget ------------ -#: src/print_dialog.c:121 -msgid "Document merge control" -msgstr "¤å¥ó¦X¨Ö±±¨î" - -#. ----------- Add custom print options area ------------ -#: src/print_dialog.c:141 -msgid "Options" -msgstr "³]©w" - -#: src/print_dialog.c:241 src/print_dialog.c:280 -msgid "Print preview" -msgstr "¹wÄý¦C¦L" - -#: src/print_copies.c:170 -msgid "Sheets:" -msgstr "¯È±i:" - -#: src/print_copies.c:187 -msgid "Labels" -msgstr "¼Ðñ" - -#: src/print_copies.c:190 -msgid "from:" -msgstr "¥Ñ:" - -#: src/print_copies.c:198 -msgid "to:" -msgstr "¨ì:" - -#: src/print_merge.c:170 -msgid "Start on label" -msgstr "¥Ñ¸Tñ¶}¯Å" - -#: src/print_merge.c:179 -msgid "on 1st sheet" -msgstr "¦b­º±i¯È" - -#: src/print_merge.c:188 -msgid "Collate" -msgstr "®Õ¹ï" - -#: src/print_merge.c:195 -msgid "Copies:" -msgstr "¥÷¼Æ:" - -#: src/prefs.c:86 -msgid "Glabels: Preferences" -msgstr "Glabels: ³]©w­È" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:220 -msgid "Display units" -msgstr "Åã¥Ü³æ¦ì" - -#: src/prefs.c:231 -msgid "Points" -msgstr "ÂI" - -#: src/prefs.c:237 -msgid "Inches" -msgstr "­^¤o" - -#: src/prefs.c:244 -msgid "Millimeters" -msgstr "²@¦Ì" - -#. ----- Display Units Frame ------------------------------------ -#: src/prefs.c:249 -msgid "Default page size" -msgstr "¹w³]¯È±i¤j¤p" - -#: src/prefs.c:450 -msgid "inches" -msgstr "­^¤o" - -#: src/prefs.c:452 -msgid "mm" -msgstr "mm" diff --git a/glabels1/src/Makefile.am b/glabels1/src/Makefile.am deleted file mode 100644 index a7034c9e..00000000 --- a/glabels1/src/Makefile.am +++ /dev/null @@ -1,176 +0,0 @@ -LIB_BARCODE_DIR = ../barcode-0.98 - -SUBDIRS = pixmaps - -INCLUDES = \ - -I$(top_srcdir)/intl \ - $(GNOME_INCLUDEDIR) \ - $(GNOME_XML_CFLAGS) \ - $(GNOME_PRINT_CFLAGS) \ - $(GDK_PIXBUF_CFLAGS) \ - $(GNOME_CANVAS_PIXBUF_CFLAGS) \ - -I$(LIB_BARCODE_DIR) - -bin_PROGRAMS = glabels glabels-batch - -glabels_SOURCES = \ - glabels.c \ - splash.h \ - splash.c \ - mdi.h \ - mdi.c \ - display.c \ - display.h \ - item.c \ - item.h \ - item_text.c \ - item_text.h \ - item_line.c \ - item_line.h \ - item_box.c \ - item_box.h \ - item_ellipse.c \ - item_ellipse.h \ - item_image.c \ - item_image.h \ - item_barcode.c \ - item_barcode.h \ - highlight.c \ - highlight.h \ - propertybox.c \ - propertybox.h \ - prop_size.c \ - prop_size.h \ - prop_position.c \ - prop_position.h \ - prop_line.c \ - prop_line.h \ - prop_fill.c \ - prop_fill.h \ - prop_text.c \ - prop_text.h \ - prop_text_entry.c \ - prop_text_entry.h \ - prop_vector.c \ - prop_vector.h \ - prop_bc.c \ - prop_bc.h \ - prop_bc_style.c \ - prop_bc_style.h \ - prop_bc_data.c \ - prop_bc_data.h \ - label.h \ - label.c \ - template.h \ - template.c \ - text_node.h \ - text_node.c \ - merge_properties.h \ - merge_properties.c \ - merge.h \ - merge.c \ - merge_text.h \ - merge_text.c \ - merge_ui.h \ - merge_ui.c \ - merge_ui_text.h \ - merge_ui_text.c \ - bc.c \ - bc.h \ - bc_postnet.c \ - bc_postnet.h \ - bc_gnubarcode.c \ - bc_gnubarcode.h \ - tools.h \ - tools.c \ - stock.h \ - stock.c \ - menu.h \ - menu.c \ - file.c \ - file.h \ - media_select.c \ - media_select.h \ - rotate_select.c \ - rotate_select.h \ - print.c \ - print.h \ - print_dialog.c \ - print_dialog.h \ - print_copies.c \ - print_copies.h \ - print_merge.c \ - print_merge.h \ - mini_preview.c \ - mini_preview.h \ - edit.c \ - edit.h \ - prefs.h \ - prefs.c \ - util.c \ - util.h \ - hack.c \ - hack.h \ - gnome-canvas-hacktext.h \ - debug.h - -glabels_LDADD = \ - $(GNOME_LIBDIR) \ - $(GNOMEUI_LIBS) \ - $(INTLLIBS) \ - $(GNOME_XML_LIBS) \ - $(GNOME_PRINT_LIBS) \ - $(GDK_PIXBUF_LIBS) \ - $(GNOME_CANVAS_PIXBUF_LIBS) \ - -L$(LIB_BARCODE_DIR) -lbarcode - -glabels_batch_SOURCES = \ - glabels_batch.c \ - label.h \ - label.c \ - template.h \ - template.c \ - text_node.h \ - text_node.c \ - merge.h \ - merge.c \ - merge_text.h \ - merge_text.c \ - bc.c \ - bc.h \ - bc_postnet.c \ - bc_postnet.h \ - bc_gnubarcode.c \ - bc_gnubarcode.h \ - print.c \ - print.h \ - util.c \ - util.h \ - hack.c \ - hack.h \ - debug.h - -glabels_batch_LDADD = \ - $(GNOME_LIBDIR) \ - $(GNOMEUI_LIBS) \ - $(INTLLIBS) \ - $(GNOME_XML_LIBS) \ - $(GNOME_PRINT_LIBS) \ - $(GDK_PIXBUF_LIBS) \ - $(GNOME_CANVAS_PIXBUF_LIBS) \ - -L$(LIB_BARCODE_DIR) -lbarcode - -$(bin_PROGRAMS): $(LIB_BARCODE_DIR)/libbarcode.a - -$(LIB_BARCODE_DIR)/libbarcode.a: - cd $(LIB_BARCODE_DIR); $(MAKE) - -clean: barcode_clean - -barcode_clean: - cd $(LIB_BARCODE_DIR); $(MAKE) clean - -distclean maintainer-clean: barcode_distclean - -barcode_distclean: - cd $(LIB_BARCODE_DIR); $(MAKE) distclean diff --git a/glabels1/src/bc.c b/glabels1/src/bc.c deleted file mode 100644 index 9969b784..00000000 --- a/glabels1/src/bc.c +++ /dev/null @@ -1,201 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * bc.c: GLabels barcode module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "bc.h" -#include "bc_postnet.h" -#include "bc_gnubarcode.h" - -#include "debug.h" - -/*****************************************************************************/ -/* Call appropriate barcode backend to create barcode in intermediate format.*/ -/*****************************************************************************/ -glBarcode * -gl_barcode (glBarcodeStyle style, - gboolean text_flag, - gdouble scale, - gchar * digits) -{ - glBarcode *gbc; - - switch (style) { - - case GL_BARCODE_STYLE_POSTNET: - /* Use the POSTNET backend module */ - gbc = gl_barcode_postnet (digits); - break; - - default: - /* Use the GNU barcode library backend */ - gbc = gl_barcode_gnubarcode (style, text_flag, scale, digits); - break; - - } - return gbc; -} - -/*****************************************************************************/ -/* Free previously created barcode. */ -/*****************************************************************************/ -void -gl_barcode_free (glBarcode ** gbc) -{ - GList *p; - - if (*gbc != NULL) { - - for (p = (*gbc)->lines; p != NULL; p = p->next) { - g_free (p->data); - p->data = NULL; - } - g_list_free ((*gbc)->lines); - (*gbc)->lines = NULL; - - for (p = (*gbc)->chars; p != NULL; p = p->next) { - g_free (p->data); - p->data = NULL; - } - g_list_free ((*gbc)->chars); - (*gbc)->chars = NULL; - - g_free (*gbc); - *gbc = NULL; - } -} - -/*****************************************************************************/ -/* Return an appropriate set of digits for the given barcode style. */ -/*****************************************************************************/ -gchar * -gl_barcode_default_digits (glBarcodeStyle style) -{ - switch (style) { - - case GL_BARCODE_STYLE_POSTNET: - return g_strdup ("000000000"); - case GL_BARCODE_STYLE_EAN: - return g_strdup ("000000000000 00000"); - case GL_BARCODE_STYLE_UPC: - return g_strdup ("00000000000 00000"); - case GL_BARCODE_STYLE_ISBN: - return g_strdup ("0-00000-000-0 00000"); - case GL_BARCODE_STYLE_39: - case GL_BARCODE_STYLE_128: - case GL_BARCODE_STYLE_128C: - case GL_BARCODE_STYLE_128B: - case GL_BARCODE_STYLE_I25: - case GL_BARCODE_STYLE_CBR: - case GL_BARCODE_STYLE_MSI: - case GL_BARCODE_STYLE_PLS: - return g_strdup ("0000000000"); - default: - return g_strdup ("0"); - } - -} - -/*****************************************************************************/ -/* Convert style to text. */ -/*****************************************************************************/ -const gchar * -gl_barcode_style_to_text (glBarcodeStyle style) -{ - switch (style) { - case GL_BARCODE_STYLE_POSTNET: - return "POSTNET"; - case GL_BARCODE_STYLE_EAN: - return "EAN"; - case GL_BARCODE_STYLE_UPC: - return "UPC"; - case GL_BARCODE_STYLE_ISBN: - return "ISBN"; - case GL_BARCODE_STYLE_39: - return "Code39"; - case GL_BARCODE_STYLE_128: - return "Code128"; - case GL_BARCODE_STYLE_128C: - return "Code128C"; - case GL_BARCODE_STYLE_128B: - return "Code128B"; - case GL_BARCODE_STYLE_I25: - return "I25"; - case GL_BARCODE_STYLE_CBR: - return "CBR"; - case GL_BARCODE_STYLE_MSI: - return "MSI"; - case GL_BARCODE_STYLE_PLS: - return "PLS"; - default: - WARN( "Illegal barcode style %d", style ); - return "?"; - } -} - -/*****************************************************************************/ -/* Convert text to style. */ -/*****************************************************************************/ -glBarcodeStyle -gl_barcode_text_to_style (const gchar * text) -{ - - if (g_strcasecmp (text, "POSTNET") == 0) { - return GL_BARCODE_STYLE_POSTNET; - } - if (g_strcasecmp (text, "EAN") == 0) { - return GL_BARCODE_STYLE_EAN; - } - if (g_strcasecmp (text, "UPC") == 0) { - return GL_BARCODE_STYLE_UPC; - } - if (g_strcasecmp (text, "ISBN") == 0) { - return GL_BARCODE_STYLE_ISBN; - } - if (g_strcasecmp (text, "Code39") == 0) { - return GL_BARCODE_STYLE_39; - } - if (g_strcasecmp (text, "Code128") == 0) { - return GL_BARCODE_STYLE_128; - } - if (g_strcasecmp (text, "Code128C") == 0) { - return GL_BARCODE_STYLE_128C; - } - if (g_strcasecmp (text, "Code128B") == 0) { - return GL_BARCODE_STYLE_128B; - } - if (g_strcasecmp (text, "I25") == 0) { - return GL_BARCODE_STYLE_I25; - } - if (g_strcasecmp (text, "CBR") == 0) { - return GL_BARCODE_STYLE_CBR; - } - if (g_strcasecmp (text, "MSI") == 0) { - return GL_BARCODE_STYLE_MSI; - } - if (g_strcasecmp (text, "PLS") == 0) { - return GL_BARCODE_STYLE_PLS; - } else { - WARN( "Unknown barcode style text \"%s\"", text ); - return GL_BARCODE_STYLE_POSTNET; - } - -} diff --git a/glabels1/src/bc.h b/glabels1/src/bc.h deleted file mode 100644 index 22441f73..00000000 --- a/glabels1/src/bc.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * bc.h: GLabels barcode module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __BC_H__ -#define __BC_H__ - -#include - -typedef enum { - GL_BARCODE_STYLE_POSTNET, - GL_BARCODE_STYLE_EAN, - GL_BARCODE_STYLE_UPC, - GL_BARCODE_STYLE_ISBN, - GL_BARCODE_STYLE_39, - GL_BARCODE_STYLE_128, - GL_BARCODE_STYLE_128C, - GL_BARCODE_STYLE_128B, - GL_BARCODE_STYLE_I25, - GL_BARCODE_STYLE_128RAW, - GL_BARCODE_STYLE_CBR, - GL_BARCODE_STYLE_MSI, - GL_BARCODE_STYLE_PLS, -} glBarcodeStyle; - -typedef struct { - gdouble x, y, length, width; -} glBarcodeLine; - -typedef struct { - gdouble x, y, fsize; - gchar c; -} glBarcodeChar; - -typedef struct { - gdouble width, height; - GList *lines; /* List of glBarcodeLine */ - GList *chars; /* List of glBarcodeChar */ -} glBarcode; - -#define GL_BARCODE_FONT_FAMILY "Helvetica" -#define GL_BARCODE_FONT_WEIGHT GNOME_FONT_BOOK - -extern glBarcode *gl_barcode (glBarcodeStyle style, - gboolean text_flag, - gdouble scale, - gchar * digits); - -extern void - gl_barcode_free (glBarcode ** bc); - -extern gchar *gl_barcode_default_digits (glBarcodeStyle style); -extern const gchar *gl_barcode_style_to_text (glBarcodeStyle style); -extern glBarcodeStyle gl_barcode_text_to_style (const gchar * text); - -#endif diff --git a/glabels1/src/bc_gnubarcode.c b/glabels1/src/bc_gnubarcode.c deleted file mode 100644 index 31f71b07..00000000 --- a/glabels1/src/bc_gnubarcode.c +++ /dev/null @@ -1,239 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * bc-gnubarcode.c: front-end to GNU-barcode-library module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * Some of this code is borrowed from the postscript renderer (ps.c) - * from the GNU barcode library: - * - * Copyright (C) 1999 Alessaandro Rubini (rubini@gnu.org) - * Copyright (C) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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 - -#include -#include - -#include "bc.h" -#include "bc_gnubarcode.h" - -#include "barcode.h" - -#include "debug.h" - -#define SHRINK_AMOUNT 0.15 /* shrink bars to account for ink spreading */ -#define FONT_SCALE 0.95 /* Shrink fonts just a hair */ - -static glBarcode *render_pass1 (struct Barcode_Item *bci, - gboolean text_flag, - gdouble scale); - -/*****************************************************************************/ -/* Generate intermediate representation of barcode. */ -/*****************************************************************************/ -glBarcode * -gl_barcode_gnubarcode (glBarcodeStyle style, - gboolean text_flag, - gdouble scale, - gchar * digits) -{ - glBarcode *gbc; - struct Barcode_Item *bci; - gint flags; - - bci = Barcode_Create (digits); - - /* First encode using GNU Barcode library */ - switch (style) { - case GL_BARCODE_STYLE_EAN: - flags = BARCODE_EAN; - break; - case GL_BARCODE_STYLE_UPC: - flags = BARCODE_UPC; - break; - case GL_BARCODE_STYLE_ISBN: - flags = BARCODE_ISBN; - break; - case GL_BARCODE_STYLE_39: - flags = BARCODE_39; - break; - case GL_BARCODE_STYLE_128: - flags = BARCODE_128; - break; - case GL_BARCODE_STYLE_128C: - flags = BARCODE_128C; - break; - case GL_BARCODE_STYLE_128B: - flags = BARCODE_128B; - break; - case GL_BARCODE_STYLE_I25: - flags = BARCODE_I25; - break; - case GL_BARCODE_STYLE_CBR: - flags = BARCODE_CBR; - break; - case GL_BARCODE_STYLE_MSI: - flags = BARCODE_MSI; - break; - case GL_BARCODE_STYLE_PLS: - flags = BARCODE_PLS; - break; - default: - WARN( "Illegal barcode style %d", style ); - flags = BARCODE_ANY; - break; - } - Barcode_Encode (bci, flags); - if (!bci->partial || !bci->textinfo) { - WARN ("Barcode Data Invalid"); - Barcode_Delete (bci); - return NULL; - } - - /* now render with our custom back-end, - to create appropriate intermdediate format */ - gbc = render_pass1 (bci, text_flag, scale); - - Barcode_Delete (bci); - return gbc; -} - -/*-------------------------------------------------------------------------- - * PRIVATE. Render to glBarcode intermediate representation of barcode. - * - * Some of this code is borrowed from the postscript renderer (ps.c) - * from the GNU barcode library: - * - * Copyright (C) 1999 Alessaandro Rubini (rubini@gnu.org) - * Copyright (C) 1999 Prosa Srl. (prosa@prosa.it) - * - *--------------------------------------------------------------------------*/ -static glBarcode * -render_pass1 (struct Barcode_Item *bci, - gboolean text_flag, - gdouble scale) -{ - glBarcode *gbc; - glBarcodeLine *line; - glBarcodeChar *bchar; - gdouble x; - gint i, j, barlen; - gdouble f1, f2; - gint mode = '-'; /* text below bars */ - gdouble x0, y0, yr; - guchar *p, c; - - /* First calculate barlen */ - barlen = bci->partial[0] - '0'; - for (p = bci->partial + 1; *p != 0; p++) { - if (isdigit (*p)) { - barlen += *p - '0'; - } else { - if ((*p != '+') && (*p != '-')) { - barlen += *p - 'a' + 1; - } - } - } - - /* The width defaults to "just enough" */ - bci->width = barlen * scale + 1; - - /* The height defaults to 80 points (rescaled) */ - if (!bci->height) - bci->height = 80 * scale; - - gbc = g_new0 (glBarcode, 1); - - /* Now traverse the code string and create a list of lines */ - x = bci->margin + (bci->partial[0] - '0') * scale; - for (p = bci->partial + 1, i = 1; *p != 0; p++, i++) { - /* special cases: '+' and '-' */ - if (*p == '+' || *p == '-') { - mode = *p; /* don't count it */ - i++; - continue; - } - /* j is the width of this bar/space */ - if (isdigit (*p)) - j = *p - '0'; - else - j = *p - 'a' + 1; - if (i % 2) { /* bar */ - x0 = x + (j * scale) / 2; - y0 = bci->margin; - yr = bci->height; - if (text_flag) { /* leave space for text */ - if (mode == '-') { - /* text below bars: 10 or 5 points */ - yr -= (isdigit (*p) ? 10 : 5) * scale; - } else { /* '+' */ - /* above bars: 10 or 0 from bottom, - and 10 from top */ - y0 += 10 * scale; - yr -= (isdigit (*p) ? 20 : 10) * scale; - } - } - line = g_new0 (glBarcodeLine, 1); - line->x = x0; - line->y = y0; - line->length = yr; - line->width = (j * scale) - SHRINK_AMOUNT; - gbc->lines = g_list_append (gbc->lines, line); - } - x += j * scale; - - } - - /* Now the text */ - mode = '-'; /* reinstantiate default */ - if (text_flag) { - for (p = bci->textinfo; p; p = strchr (p, ' ')) { - while (*p == ' ') - p++; - if (!*p) - break; - if (*p == '+' || *p == '-') { - mode = *p; - continue; - } - if (sscanf (p, "%lf:%lf:%c", &f1, &f2, &c) != 3) { - WARN ("impossible data: %s", p); - continue; - } - bchar = g_new0 (glBarcodeChar, 1); - bchar->x = f1 * scale + bci->margin; - if (mode == '-') { - bchar->y = - bci->margin + bci->height - 8 * scale; - } else { - bchar->y = bci->margin; - } - bchar->fsize = f2 * FONT_SCALE * scale; - bchar->c = c; - gbc->chars = g_list_append (gbc->chars, bchar); - } - } - - /* Fill in other info */ - gbc->height = bci->height + 2.0 * bci->margin; - gbc->width = bci->width + 2.0 * bci->margin; - - return gbc; -} diff --git a/glabels1/src/bc_gnubarcode.h b/glabels1/src/bc_gnubarcode.h deleted file mode 100644 index 263b403a..00000000 --- a/glabels1/src/bc_gnubarcode.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * bc_gnubarcode.h: front-end to GNU-barcode-library module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __BC_GNUBARCODE_H__ -#define __BC_GNUBARCODE_H__ - -#include "bc.h" - -extern glBarcode *gl_barcode_gnubarcode (glBarcodeStyle style, - gboolean text_flag, - gdouble scale, - gchar * digits); - -#endif diff --git a/glabels1/src/bc_postnet.c b/glabels1/src/bc_postnet.c deleted file mode 100644 index eaf3197d..00000000 --- a/glabels1/src/bc_postnet.c +++ /dev/null @@ -1,150 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * bc_postnet.c: GLabels POSTNET barcode module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -/* - * This module implements the POSTNET barcode specified in the USPS - * publication 25, Mar 2001. - */ - -#include - -#include - -#include "bc.h" -#include "bc_postnet.h" - -#include "debug.h" - -static gchar *symbols[] = { - /* 0 */ "11000", - /* 1 */ "00011", - /* 2 */ "00101", - /* 3 */ "00110", - /* 4 */ "01001", - /* 5 */ "01010", - /* 6 */ "01100", - /* 7 */ "10001", - /* 8 */ "10010", - /* 9 */ "10100", -}; - -static gchar *frame_symbol = "1"; - -#define POSTNET_BAR_WIDTH 1.25 -#define POSTNET_FULLBAR_HEIGHT 9.00 -#define POSTNET_HALFBAR_HEIGHT 3.50 -#define POSTNET_BAR_PITCH 3.25 -#define POSTNET_HORIZ_MARGIN 9.00 -#define POSTNET_VERT_MARGIN 3.00 - -static gchar *postnet_code (gchar * digits); - -/****************************************************************************/ -/* Generate list of rectangles that form the barcode for the given digits. */ -/****************************************************************************/ -glBarcode * -gl_barcode_postnet (gchar * digits) -{ - gchar *code, *p; - glBarcode *gbc; - glBarcodeLine *line; - gdouble x; - - gbc = g_new0 (glBarcode, 1); - - /* First get code string */ - code = postnet_code (digits); - if (code == NULL) { - return NULL; - } - - /* Now traverse the code string and create a list of lines */ - x = POSTNET_HORIZ_MARGIN; - for (p = code; *p != 0; p++) { - line = g_new0 (glBarcodeLine, 1); - line->x = x; - line->y = POSTNET_VERT_MARGIN; - if (*p == '0') { - line->y += - POSTNET_FULLBAR_HEIGHT - POSTNET_HALFBAR_HEIGHT; - line->length = POSTNET_HALFBAR_HEIGHT; - } else { - line->length = POSTNET_FULLBAR_HEIGHT; - } - line->width = POSTNET_BAR_WIDTH; - - gbc->lines = g_list_append (gbc->lines, line); - - x += POSTNET_BAR_PITCH; - } - - g_free (code); - - gbc->width = x + POSTNET_HORIZ_MARGIN; - gbc->height = POSTNET_FULLBAR_HEIGHT + 2 * POSTNET_VERT_MARGIN; - - gbc->chars = NULL; - - return gbc; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Generate string of symbols, representing barcode. */ -/*--------------------------------------------------------------------------*/ -static gchar * -postnet_code (gchar * digits) -{ - gchar *p; - gint len; - gint d, sum; - GString *code; - gchar *ret; - - /* Left frame bar */ - code = g_string_new (frame_symbol); - - sum = 0; - for (p = digits, len = 0; (*p != 0) && (len < 11); p++) { - if (isdigit (*p)) { - /* Only translate valid characters (0-9) */ - d = (*p) - '0'; - sum += d; - code = g_string_append (code, symbols[d]); - len++; - } - } - if ((len != 5) && (len != 9) && (len != 11)) { - WARN ("Invalid POSTNET length %d, should be 5(ZIP), 9(ZIP+4), or 11(DPBC)", len); - } - - /* Create correction character */ - d = (10 - (sum % 10)) % 10; - code = g_string_append (code, symbols[d]); - - /* Right frame bar */ - code = g_string_append (code, frame_symbol); - - ret = g_strdup (code->str); - g_string_free (code, TRUE); - - return ret; -} diff --git a/glabels1/src/bc_postnet.h b/glabels1/src/bc_postnet.h deleted file mode 100644 index e5035074..00000000 --- a/glabels1/src/bc_postnet.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * bc_postnet.h: GLabels POSTNET barcode module header file - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - */ -#ifndef __BC_POSTNET_H__ -#define __BC_POSTNET_H__ - -#include - -glBarcode *gl_barcode_postnet (gchar * digits); - -#endif diff --git a/glabels1/src/debug.h b/glabels1/src/debug.h deleted file mode 100644 index 08e3fc99..00000000 --- a/glabels1/src/debug.h +++ /dev/null @@ -1,70 +0,0 @@ -/* Macros/functions for debugging gLabels */ -#ifndef __DEBUG_H__ -#define __DEBUG_H__ - -#include "glib.h" - -#ifdef __GNUC__ - -#define DEBUG(args...) { \ - gchar *__string__; \ - __string__ = g_strdup_printf( args ); \ - g_message( "%s:%d (%s): %s\n", \ - __FILE__, __LINE__, __FUNCTION__, __string__ ); \ - g_free( __string__ ); \ - __string__ = NULL; \ - } - -#define WARN(args...) { \ - gchar *__string__; \ - __string__ = g_strdup_printf( args ); \ - g_warning( "%s:%d (%s): %s\n", \ - __FILE__, __LINE__, __FUNCTION__, __string__ ); \ - g_free( __string__ ); \ - __string__ = NULL; \ - } - -#define ERROR(args...) { \ - gchar *__string__; \ - __string__ = g_strdup_printf( args ); \ - g_error( "%s:%d (%s): %s\n", \ - __FILE__, __LINE__, __FUNCTION__, __string__ ); \ - g_free( __string__ ); \ - __string__ = NULL; \ - } - -#else /* !__GNUC__ */ - -static -DEBUG (const gchar * format, - ...) -{ - va_list args; - va_start (args, format); - g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE, format, args); - va_end (args); -} - -static -WARN (const gchar * format, - ...) -{ - va_list args; - va_start (args, format); - g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, format, args); - va_end (args); -} - -static -ERROR (const gchar * format, - ...) -{ - va_list args; - va_start (args, format); - g_logv (G_LOG_DOMAIN, G_LOG_LEVEL_ERROR, format, args); - va_end (args); -} - -#endif /* !__GNUC__ */ - -#endif /* __DEBUG_H__ */ diff --git a/glabels1/src/display.c b/glabels1/src/display.c deleted file mode 100644 index 9440820d..00000000 --- a/glabels1/src/display.c +++ /dev/null @@ -1,1739 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * display.c: GLabels Display module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 -#include - -#include -#include - -#include "display.h" -#include "item.h" - -#include "debug.h" - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -/* "CLIPBOARD" selection */ -static GdkAtom clipboard_atom = GDK_NONE; - -#define HOME_SCALE 2.0 -static gdouble scales[] = { 8.0, 6.0, 4.0, 3.0, - 2.0, - 1.5, 1.0, 0.5, 0.25, - 0.0 -}; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_display_class_init (glDisplayClass * class); -static void gl_display_init (glDisplay * display); -static void gl_display_destroy (GtkObject * object); - -static void gl_display_construct (glDisplay * display); -static GtkWidget *gl_display_construct_canvas (glDisplay * display); -static void gl_display_construct_selection (glDisplay * display); - -static gdouble get_apropriate_scale (glLabel * label); - -static void draw_rect_bg (glDisplay * display); -static void draw_rounded_rect_bg (glDisplay * display); -static void draw_round_bg (glDisplay * display); -static void draw_cd_bg (glDisplay * display); - -static int canvas_event (GnomeCanvas * canvas, - GdkEvent * event, gpointer data); -static int canvas_event_arrow_mode (GnomeCanvas * canvas, - GdkEvent * event, gpointer data); - -static GnomeCanvasItem *display_item_at (glDisplay * display, - gdouble x, gdouble y); -static gboolean item_selected (glDisplay * display, - GnomeCanvasItem * item); -static gboolean multiple_items_selected (glDisplay * display); - -static int item_event_arrow_mode (GnomeCanvasItem * item, - GdkEvent * event, gpointer data); - -static void popup_selection_menu (glDisplay * display, - GnomeCanvasItem * item, GdkEvent * event); - -static void delete_item_cb (GtkWidget * widget, GnomeCanvasItem * item); -static void raise_item_cb (GtkWidget * widget, GnomeCanvasItem * item); -static void lower_item_cb (GtkWidget * widget, GnomeCanvasItem * item); - -static void move_selected_items (glDisplay * display, gdouble dx, gdouble dy); -static void move_item (GnomeCanvasItem * item, gdouble dx, gdouble dy); - -static void delete_selection_cb (GtkWidget * widget, glDisplay * display); -static void raise_selection_cb (GtkWidget * widget, glDisplay * display); -static void lower_selection_cb (GtkWidget * widget, glDisplay * display); - -static void selection_clear_cb (GtkWidget * widget, - GdkEventSelection * event, gpointer data); - -static void selection_get_cb (GtkWidget * widget, - GtkSelectionData * selection_data, guint info, - guint time, gpointer data); - -static void selection_received_cb (GtkWidget * widget, - GtkSelectionData * selection_data, - guint time, gpointer data); - -/****************************************************************************/ -/* Boilerplate Object stuff. */ -/****************************************************************************/ -guint -gl_display_get_type (void) -{ - static guint display_type = 0; - - if (!display_type) { - GtkTypeInfo display_info = { - "glDisplay", - sizeof (glDisplay), - sizeof (glDisplayClass), - (GtkClassInitFunc) gl_display_class_init, - (GtkObjectInitFunc) gl_display_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - display_type = - gtk_type_unique (gtk_vbox_get_type (), &display_info); - } - - return display_type; -} - -static void -gl_display_class_init (glDisplayClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_display_destroy; -} - -static void -gl_display_init (glDisplay * display) -{ - display->label = NULL; -} - -static void -gl_display_destroy (GtkObject * object) -{ - glDisplay *display; - glDisplayClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_DISPLAY (object)); - - display = GL_DISPLAY (object); - class = GL_DISPLAY_CLASS (GTK_OBJECT (display)->klass); - - display->label = NULL; - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_display_new (glLabel * label) -{ - glDisplay *display = gtk_type_new (gl_display_get_type ()); - - display->label = label; - - gl_display_construct (display); - - gl_display_clear_modified (display); - - return GTK_WIDGET (display); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Construct composite widget. */ -/*---------------------------------------------------------------------------*/ -static void -gl_display_construct (glDisplay * display) -{ - GtkWidget *wvbox, *wscroll; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - wvbox = GTK_WIDGET (display); - - display->state = GL_DISPLAY_STATE_ARROW; - display->item_list = NULL; - - gl_display_construct_canvas (display); - wscroll = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (wscroll), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_box_pack_start (GTK_BOX (wvbox), wscroll, TRUE, TRUE, 0); - gtk_container_add (GTK_CONTAINER (wscroll), display->canvas); - - gl_display_construct_selection (display); - - display->menu = gl_display_new_selection_menu (display); - - display->modified = FALSE; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Create canvas w/ a background in the shape of the label/card. */ -/*---------------------------------------------------------------------------*/ -static GtkWidget * -gl_display_construct_canvas (glDisplay * display) -{ - gdouble scale; - glLabel *label = display->label; - GList *p_obj; - glLabelObject *object; - GnomeCanvasItem *item; - - g_return_val_if_fail (GL_IS_DISPLAY (display), NULL); - g_return_val_if_fail (label != NULL, NULL); - -#ifdef AA_CANVAS - gtk_widget_push_visual (gdk_rgb_get_visual ()); - gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - display->canvas = gnome_canvas_new_aa (); - gtk_widget_pop_colormap (); - gtk_widget_pop_visual (); -#else - gtk_widget_push_visual (gdk_imlib_get_visual ()); - gtk_widget_push_colormap (gdk_imlib_get_colormap ()); - display->canvas = gnome_canvas_new (); - gtk_widget_pop_colormap (); - gtk_widget_pop_visual (); -#endif - - scale = get_apropriate_scale (label); - - gtk_widget_set_usize (display->canvas, - scale * label->width + 40, - scale * label->height + 40); - gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (display->canvas), - scale); - display->scale = scale; - - gnome_canvas_set_scroll_region (GNOME_CANVAS (display->canvas), - 0.0, 0.0, label->width, label->height); - - /* Draw background shape of label/card */ - switch (label->template->style) { - - case GL_TEMPLATE_STYLE_RECT: - if (label->template->label_round == 0.0) { - /* Square corners. */ - draw_rect_bg (display); - } else { - /* Rounded corners. */ - draw_rounded_rect_bg (display); - } - break; - - case GL_TEMPLATE_STYLE_ROUND: - draw_round_bg (display); - break; - - case GL_TEMPLATE_STYLE_CD: - draw_cd_bg (display); - break; - - default: - WARN ("Unknown template label style"); - break; - } - - gtk_signal_connect (GTK_OBJECT (display->canvas), "event", - GTK_SIGNAL_FUNC (canvas_event), display); - - for (p_obj = label->objects; p_obj != NULL; p_obj = p_obj->next) { - object = (glLabelObject *) p_obj->data; - item = gl_item_new (object, display); - gl_display_add_item (display, item); - } - - return display->canvas; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Create selection targets. */ -/*---------------------------------------------------------------------------*/ -static void -gl_display_construct_selection (glDisplay * display) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - - display->have_selection = FALSE; - display->selection_data = NULL; - display->invisible = gtk_invisible_new (); - - display->selected_item_list = NULL; - - if (!clipboard_atom) { - clipboard_atom = gdk_atom_intern ("GLABELS_CLIPBOARD", FALSE); - } - - gtk_selection_add_target (display->invisible, - clipboard_atom, GDK_SELECTION_TYPE_STRING, 1); - - gtk_signal_connect (GTK_OBJECT (display->invisible), - "selection_clear_event", - GTK_SIGNAL_FUNC (selection_clear_cb), display); - - gtk_signal_connect (GTK_OBJECT (display->invisible), "selection_get", - GTK_SIGNAL_FUNC (selection_get_cb), display); - - gtk_signal_connect (GTK_OBJECT (display->invisible), - "selection_received", - GTK_SIGNAL_FUNC (selection_received_cb), display); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Determine an apropriate scale for given label & screen size */ -/*---------------------------------------------------------------------------*/ -static gdouble -get_apropriate_scale (glLabel * label) -{ - gdouble w, h; - gdouble w_screen, h_screen; - gint i; - gdouble k; - - g_return_val_if_fail (label != NULL, 1.0); - - w = label->width; - h = label->height; - w_screen = (gdouble) gdk_screen_width (); - h_screen = (gdouble) gdk_screen_height (); - - for (i = 0; scales[i] > 0.0; i++) { - k = scales[i]; - if (k <= HOME_SCALE) { - if ((k * w < (w_screen - 256)) - && (k * h < (h_screen - 256))) - return k; - } - } - - return 0.25; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw simple recangular background. */ -/*---------------------------------------------------------------------------*/ -static void -draw_rect_bg (glDisplay * display) -{ - glLabel *label = display->label; - GnomeCanvasItem *item; - GnomeCanvasGroup *group; - gdouble margin; - - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (label != NULL); - - display->n_bg_items = 0; - display->bg_item_list = NULL; - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - - item = gnome_canvas_item_new (group, - gnome_canvas_rect_get_type (), - "x1", 0.0, - "y1", 0.0, - "x2", label->width, - "y2", label->height, - "fill_color", "white", - NULL); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); - - /* Bounding box @ margin */ - margin = label->template->label_margin; - gnome_canvas_item_new (group, - gnome_canvas_rect_get_type (), - "x1", margin, - "y1", margin, - "x2", label->width - margin, - "y2", label->height - margin, - "width_pixels", 1, - "outline_color", "light blue", - NULL); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw rounded recangular background. */ -/*---------------------------------------------------------------------------*/ -static void -draw_rounded_rect_bg (glDisplay * display) -{ - glLabel *label = display->label; - GnomeCanvasPoints *points; - gint i_coords, i_theta; - gdouble r, w, h, m; - GnomeCanvasItem *item; - GnomeCanvasGroup *group; - - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (label != NULL); - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - - display->n_bg_items = 0; - display->bg_item_list = NULL; - - r = label->template->label_round; - w = label->width; - h = label->height; - m = label->template->label_margin; - - points = gnome_canvas_points_new (4 * (1 + 90 / 5)); - i_coords = 0; - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - r - r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r - r * cos (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - r - r * cos (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - (h - r) + r * sin (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - (w - r) + r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - (h - r) + r * cos (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - (w - r) + r * cos (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r - r * sin (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "fill_color", "white", - NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); - - /* Bounding box @ margin */ - if (label->template->label_margin >= label->template->label_round) { - /* simple rectangle */ - item = gnome_canvas_item_new (group, - gnome_canvas_rect_get_type (), - "x1", m, - "y1", m, - "x2", w - m, - "y2", h - m, - "width_pixels", 1, - "outline_color", "light blue", - NULL); - display->n_bg_items++; - display->bg_item_list = - g_list_append (display->bg_item_list, item); - } else { - r = label->template->label_round - m; - w = label->width - 2 * label->template->label_margin; - h = label->height - 2 * label->template->label_margin; - - /* rectangle with rounded corners */ - points = gnome_canvas_points_new (4 * (1 + 90 / 5)); - i_coords = 0; - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - m + r - r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - m + r - r * cos (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - m + r - r * cos (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - m + (h - r) + r * sin (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - m + (w - r) + r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - m + (h - r) + r * cos (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - points->coords[i_coords++] = - m + (w - r) + r * cos (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - m + r - r * sin (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "width_pixels", 1, - "outline_color", "light blue", - NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = - g_list_append (display->bg_item_list, item); - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw round background. */ -/*---------------------------------------------------------------------------*/ -static void -draw_round_bg (glDisplay * display) -{ - glLabel *label = display->label; - GnomeCanvasPoints *points; - gint i_coords, i_theta; - gdouble r, r1; - GnomeCanvasItem *item; - GnomeCanvasGroup *group; - - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (label != NULL); - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - - display->n_bg_items = 0; - display->bg_item_list = NULL; - - r1 = label->template->label_radius; - points = gnome_canvas_points_new (1 + 360/2); - i_coords = 0; - for (i_theta = 0; i_theta <= 360; i_theta += 2) { - points->coords[i_coords++] = - r1 - r1 * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r1 - r1 * cos (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "fill_color", "white", - NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); - - /* Bounding box @ margin */ - r = label->template->label_radius - label->template->label_margin; - points = gnome_canvas_points_new (360 / 2); - i_coords = 0; - for (i_theta = 0; i_theta < 360; i_theta += 2) { - points->coords[i_coords++] = - r1 - r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r1 - r * cos (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "width_pixels", 1, - "outline_color", "light blue", NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw CD style background, circular w/ concentric hole. */ -/*---------------------------------------------------------------------------*/ -static void -draw_cd_bg (glDisplay * display) -{ - glLabel *label = display->label; - GnomeCanvasPoints *points; - gint i_coords, i_theta; - gdouble r, r1, r2; - GnomeCanvasItem *item; - GnomeCanvasGroup *group; - - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (label != NULL); - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - - display->n_bg_items = 0; - display->bg_item_list = NULL; - - r1 = label->template->label_radius; - r2 = label->template->label_hole; - points = gnome_canvas_points_new (2 * (1 + 360 / 2)); - i_coords = 0; - for (i_theta = 0; i_theta <= 360; i_theta += 2) { - points->coords[i_coords++] = - r1 - r1 * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r1 - r1 * cos (i_theta * M_PI / 180.0); - } - for (i_theta = 0; i_theta <= 360; i_theta += 2) { - points->coords[i_coords++] = - r1 - r2 * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r1 - r2 * cos (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "fill_color", "white", - NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); - - /* Bounding box @ margin */ - /* outer margin */ - r = label->template->label_radius - label->template->label_margin; - points = gnome_canvas_points_new (360 / 2); - i_coords = 0; - for (i_theta = 0; i_theta < 360; i_theta += 2) { - points->coords[i_coords++] = - r1 - r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r1 - r * cos (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "width_pixels", 1, - "outline_color", "light blue", NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); - - /* inner margin */ - r = label->template->label_hole + label->template->label_margin; - points = gnome_canvas_points_new (360 / 2); - i_coords = 0; - for (i_theta = 0; i_theta < 360; i_theta += 2) { - points->coords[i_coords++] = - r1 - r * sin (i_theta * M_PI / 180.0); - points->coords[i_coords++] = - r1 - r * cos (i_theta * M_PI / 180.0); - } - item = gnome_canvas_item_new (group, - gnome_canvas_polygon_get_type (), - "points", points, - "width_pixels", 1, - "outline_color", "light blue", - NULL); - gnome_canvas_points_free (points); - display->n_bg_items++; - display->bg_item_list = g_list_append (display->bg_item_list, item); -} - -/*****************************************************************************/ -/* Set arrow mode. */ -/*****************************************************************************/ -void -gl_display_arrow_mode (glDisplay * display) -{ - static GdkCursor *cursor = NULL; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - if (!cursor) { - cursor = gdk_cursor_new (GDK_LEFT_PTR); - } - - gdk_window_set_cursor (display->canvas->window, cursor); - - display->state = GL_DISPLAY_STATE_ARROW; -} - -/*****************************************************************************/ -/* Set create text object mode. */ -/*****************************************************************************/ -void -gl_display_object_create_mode (glDisplay * display, - glLabelObjectType type) -{ - GdkCursor *cursor; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - cursor = gl_item_get_create_cursor (type); - gdk_window_set_cursor (display->canvas->window, cursor); - - display->state = GL_DISPLAY_STATE_OBJECT_CREATE; - display->create_type = type; -} - -/*****************************************************************************/ -/* Add canvas item to list of display items. */ -/*****************************************************************************/ -void -gl_display_add_item (glDisplay * display, - GnomeCanvasItem * item) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - - display->item_list = g_list_prepend (display->item_list, item); -} - -/*****************************************************************************/ -/* Select all items. */ -/*****************************************************************************/ -void -gl_display_select_all (glDisplay * display) -{ - GList *p; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - gl_display_unselect_all (display); - - for (p = display->item_list; p != NULL; p = p->next) { - gl_display_select_item (display, GNOME_CANVAS_ITEM (p->data)); - } -} - -/*****************************************************************************/ -/* Select all items within given rectangular region */ -/*****************************************************************************/ -void -gl_display_select_region (glDisplay * display, - gdouble x1, - gdouble y1, - gdouble x2, - gdouble y2) -{ - GList *p; - GnomeCanvasItem *item; - gdouble i_x1, i_y1, i_x2, i_y2; - - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail ((x1 <= x2) && (y1 <= y2)); - - for (p = display->item_list; p != NULL; p = p->next) { - item = GNOME_CANVAS_ITEM (p->data); - if (!item_selected (display, item)) { - - gl_item_get_bounds (item, &i_x1, &i_y1, &i_x2, &i_y2); - if ((i_x1 >= x1) && (i_x2 <= x2) && (i_y1 >= y1) - && (i_y2 <= y2)) { - gl_display_select_item (display, item); - } - - } - } -} - -/*****************************************************************************/ -/* Remove all selections */ -/*****************************************************************************/ -void -gl_display_unselect_all (glDisplay * display) -{ - GList *p, *p_next; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - for (p = display->selected_item_list; p != NULL; p = p_next) { - p_next = p->next; - gl_display_unselect_item (display, GNOME_CANVAS_ITEM (p->data)); - } -} - -/*****************************************************************************/ -/* Select an item. */ -/*****************************************************************************/ -void -gl_display_select_item (glDisplay * display, - GnomeCanvasItem * item) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - if (!item_selected (display, item)) { - display->selected_item_list = - g_list_prepend (display->selected_item_list, item); - } - gl_item_highlight (item); - gtk_widget_grab_focus (GTK_WIDGET (display->canvas)); -} - -/*****************************************************************************/ -/* Un-select items. */ -/*****************************************************************************/ -void -gl_display_unselect_item (glDisplay * display, - GnomeCanvasItem * item) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - gl_item_unhighlight (item); - - display->selected_item_list = - g_list_remove (display->selected_item_list, item); -} - -/*****************************************************************************/ -/* Has display been modified? */ -/*****************************************************************************/ -gboolean -gl_display_modified (glDisplay * display) -{ - g_return_val_if_fail (GL_IS_DISPLAY (display), FALSE); - - return display->modified; -} - -/*****************************************************************************/ -/* Set to modified state. */ -/*****************************************************************************/ -void -gl_display_set_modified (glDisplay * display) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - - display->modified = TRUE; -} - -/*****************************************************************************/ -/* Reset to un-modified state. */ -/*****************************************************************************/ -void -gl_display_clear_modified (glDisplay * display) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - - display->modified = FALSE; -} - -/*****************************************************************************/ -/* "Cut" selected items and place in clipboard selections. */ -/*****************************************************************************/ -void -gl_display_cut (glDisplay * display) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - - gl_display_copy (display); - delete_selection_cb (GTK_WIDGET (display), display); -} - -/*****************************************************************************/ -/* "Copy" selected items to clipboard selections. */ -/*****************************************************************************/ -void -gl_display_copy (glDisplay * display) -{ - GList *p; - GnomeCanvasItem *item; - glLabelObject *object; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - if (display->selected_item_list) { - - gl_label_free (&display->selection_data); - display->selection_data = - gl_label_new_with_template (display->label-> - template_name, - display->label->rotate_flag); - - for (p = display->selected_item_list; p != NULL; p = p->next) { - - item = GNOME_CANVAS_ITEM (p->data); - object = gl_item_get_object (item); - gl_label_object_new_from_object (display-> - selection_data, - object); - - } - - gtk_selection_owner_set (display->invisible, - clipboard_atom, GDK_CURRENT_TIME); - display->have_selection = TRUE; - - } -} - -/*****************************************************************************/ -/* "Paste" from private clipboard selection. */ -/*****************************************************************************/ -void -gl_display_paste (glDisplay * display) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - - gtk_selection_convert (GTK_WIDGET (display->invisible), - clipboard_atom, GDK_SELECTION_TYPE_STRING, - GDK_CURRENT_TIME); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Canvas event handler. */ -/*---------------------------------------------------------------------------*/ -static int -canvas_event (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - - switch (display->state) { - - case GL_DISPLAY_STATE_ARROW: - return canvas_event_arrow_mode (canvas, event, data); - - case GL_DISPLAY_STATE_OBJECT_CREATE: - return gl_item_create_event_handler (canvas, event, data); - - default: - WARN ("Invalid display state."); /* Should not happen! */ - return FALSE; - - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Canvas event handler (arrow mode) */ -/*---------------------------------------------------------------------------*/ -static int -canvas_event_arrow_mode (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - glDisplay *display = GL_DISPLAY (data); - gdouble x, y, x1, y1, x2, y2; - GnomeCanvasGroup *group; - GdkCursor *cursor; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - - if (display_item_at (display, x, y) == NULL) { - if (!(event->button.state & GDK_CONTROL_MASK)) { - gl_display_unselect_all (display); - } - - dragging = TRUE; - gdk_pointer_grab (GTK_WIDGET (display->canvas)-> - window, FALSE, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, NULL, - NULL, event->button.time); - group = - gnome_canvas_root (GNOME_CANVAS - (display->canvas)); - item = - gnome_canvas_item_new (group, - gnome_canvas_rect_get_type (), - "x1", x, "y1", y, - "x2", x, "y2", y, - "width_pixels", 2, - "outline_color_rgba", - GNOME_CANVAS_COLOR_A - (0, 0, 255, 128), - NULL); - x0 = x; - y0 = y; - - } - return FALSE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - if (dragging) { - dragging = FALSE; - gdk_pointer_ungrab (event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, - &x, &y); - x1 = MIN (x, x0); - y1 = MIN (y, y0); - x2 = MAX (x, x0); - y2 = MAX (y, y0); - gl_display_select_region (display, x1, y1, x2, - y2); - gtk_object_destroy (GTK_OBJECT (item)); - return TRUE; - } - return FALSE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - gnome_canvas_window_to_world (canvas, - event->motion.x, - event->motion.y, &x, &y); - - gnome_canvas_item_set (item, - "x1", MIN (x, x0), - "y1", MIN (y, y0), - "x2", MAX (x, x0), - "y2", MAX (y, y0), NULL); - return TRUE; - } else { - return FALSE; - } - - case GDK_KEY_PRESS: - if (!dragging) { - switch (event->key.keyval) { - case GDK_Left: - case GDK_KP_Left: - move_selected_items (display, - -1.0 / (display->scale), - 0.0); - break; - case GDK_Up: - case GDK_KP_Up: - move_selected_items (display, 0.0, - -1.0 / (display->scale)); - break; - case GDK_Right: - case GDK_KP_Right: - move_selected_items (display, - 1.0 / (display->scale), - 0.0); - break; - case GDK_Down: - case GDK_KP_Down: - move_selected_items (display, 0.0, - 1.0 / (display->scale)); - break; - case GDK_Delete: - case GDK_KP_Delete: - delete_selection_cb (GTK_WIDGET (canvas), - display); - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, - cursor); - gdk_cursor_destroy (cursor); - break; - default: - return FALSE; - } - } - return TRUE; /* We handled this or we were dragging. */ - - default: - return FALSE; - } - -} - -/*****************************************************************************/ -/* Item event handler. */ -/*****************************************************************************/ -gint -gl_display_item_event_handler (GnomeCanvasItem * item, - GdkEvent * event, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - - switch (display->state) { - - case GL_DISPLAY_STATE_ARROW: - return item_event_arrow_mode (item, event, data); - - default: - return FALSE; - - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Item event handler (arrow mode) */ -/*---------------------------------------------------------------------------*/ -static int -item_event_arrow_mode (GnomeCanvasItem * item, - GdkEvent * event, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - static gdouble x, y; - static gboolean dragging = FALSE; - GdkCursor *cursor; - gdouble item_x, item_y; - gdouble new_x, new_y; - gboolean control_key_pressed; - - item_x = event->button.x; - item_y = event->button.y; - gnome_canvas_item_w2i (item->parent, &item_x, &item_y); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - control_key_pressed = event->button.state & GDK_CONTROL_MASK; - switch (event->button.button) { - case 1: - if (control_key_pressed) { - if (item_selected (display, item)) { - /* Un-selecting an already selected item */ - gl_display_unselect_item (display, - item); - return TRUE; - } else { - /* Add to current selection */ - gl_display_select_item (display, item); - } - } else { - if (!item_selected (display, item)) { - /* No control, key so remove any selections before adding */ - gl_display_unselect_all (display); - /* Add to current selection */ - gl_display_select_item (display, item); - } - } - /* Go into dragging mode while button remains pressed. */ - x = item_x; - y = item_y; - cursor = gdk_cursor_new (GDK_FLEUR); - gnome_canvas_item_grab (item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - cursor, event->button.time); - gdk_cursor_destroy (cursor); - dragging = TRUE; - return TRUE; - - case 3: - if (!item_selected (display, item)) { - if (!control_key_pressed) { - /* No control, key so remove any selections before adding */ - gl_display_unselect_all (display); - } - } - /* Add to current selection */ - gl_display_select_item (display, item); - /* bring up apropriate menu for selection. */ - popup_selection_menu (display, item, event); - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - /* Exit dragging mode */ - gnome_canvas_item_ungrab (item, event->button.time); - dragging = FALSE; - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - /* Dragging mode, move selection */ - new_x = item_x; - new_y = item_y; - move_selected_items (display, (new_x - x), (new_y - y)); - x = new_x; - y = new_y; - return TRUE; - } else { - return FALSE; - } - - case GDK_2BUTTON_PRESS: - switch (event->button.button) { - case 1: - /* Also exit dragging mode on a a double-click, bring up menu */ - gnome_canvas_item_ungrab (item, event->button.time); - dragging = FALSE; - gl_display_select_item (display, item); - gl_item_edit_dialog (item); - return TRUE; - - default: - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_FLEUR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*****************************************************************************/ -/* create menu for multiple selections. */ -/*****************************************************************************/ -GtkWidget * -gl_display_new_selection_menu (glDisplay * display) -{ - GtkWidget *menu, *menuitem; - - g_return_val_if_fail (GL_IS_DISPLAY (display), NULL); - - menu = gtk_menu_new (); - - menuitem = gtk_menu_item_new_with_label (_("Delete")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (delete_selection_cb), display); - - menuitem = gtk_menu_item_new (); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - - menuitem = gtk_menu_item_new_with_label (_("Bring to front")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (raise_selection_cb), display); - - menuitem = gtk_menu_item_new_with_label (_("Send to back")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (lower_selection_cb), display); - - return menu; -} - -/*****************************************************************************/ -/* create menu for given item. */ -/*****************************************************************************/ -GtkWidget * -gl_display_new_item_menu (GnomeCanvasItem * item) -{ - GtkWidget *menu, *menuitem; - - g_return_val_if_fail (GNOME_IS_CANVAS_ITEM (item), NULL); - - menu = gtk_menu_new (); - - menuitem = gtk_menu_item_new_with_label (_("Edit properties...")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect_object (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (gl_item_edit_dialog), - GTK_OBJECT (item)); - - menuitem = gtk_menu_item_new (); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - - menuitem = gtk_menu_item_new_with_label (_("Delete")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (delete_item_cb), item); - - menuitem = gtk_menu_item_new (); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - - menuitem = gtk_menu_item_new_with_label (_("Bring to front")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (raise_item_cb), item); - - menuitem = gtk_menu_item_new_with_label (_("Send to back")); - gtk_menu_append (GTK_MENU (menu), menuitem); - gtk_widget_show (menuitem); - gtk_signal_connect (GTK_OBJECT (menuitem), "activate", - GTK_SIGNAL_FUNC (lower_item_cb), item); - - gtk_object_set_data (GTK_OBJECT (item), "object_menu", menu); - - return menu; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. popup menu for given item. */ -/*---------------------------------------------------------------------------*/ -static void -popup_selection_menu (glDisplay * display, - GnomeCanvasItem * item, - GdkEvent * event) -{ - GtkWidget *menu; - - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - if (multiple_items_selected (display)) { - if (display->menu != NULL) { - gtk_menu_popup (GTK_MENU (display->menu), - NULL, NULL, NULL, NULL, - event->button.button, - event->button.time); - } - } else { - - menu = gl_item_get_menu (item); - if (menu != NULL) { - gtk_menu_popup (GTK_MENU (menu), - NULL, NULL, NULL, NULL, - event->button.button, - event->button.time); - } - - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. delete selection callback. */ -/*---------------------------------------------------------------------------*/ -static void -delete_selection_cb (GtkWidget * widget, - glDisplay * display) -{ - GList *p, *p_next; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - for (p = display->selected_item_list; p != NULL; p = p_next) { - p_next = p->next; - delete_item_cb (widget, GNOME_CANVAS_ITEM (p->data)); - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. raise item to front callback. */ -/*---------------------------------------------------------------------------*/ -static void -raise_selection_cb (GtkWidget * widget, - glDisplay * display) -{ - GList *p; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - for (p = display->selected_item_list; p != NULL; p = p->next) { - raise_item_cb (widget, GNOME_CANVAS_ITEM (p->data)); - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. lower item to back callback. */ -/*---------------------------------------------------------------------------*/ -static void -lower_selection_cb (GtkWidget * widget, - glDisplay * display) -{ - GList *p; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - for (p = display->selected_item_list; p != NULL; p = p->next) { - lower_item_cb (widget, GNOME_CANVAS_ITEM (p->data)); - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. delete item callback. */ -/*---------------------------------------------------------------------------*/ -static void -delete_item_cb (GtkWidget * widget, - GnomeCanvasItem * item) -{ - glDisplay *display; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - display = gl_item_get_display (item); - - gl_display_unselect_item (display, item); - display->item_list = g_list_remove (display->item_list, item); - - gl_item_free (&item); - - gl_display_set_modified (display); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. raise item to front callback. */ -/*---------------------------------------------------------------------------*/ -static void -raise_item_cb (GtkWidget * widget, - GnomeCanvasItem * item) -{ - glLabelObject *object; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gl_item_get_object (item); - gl_label_object_raise_to_front (object); - - gnome_canvas_item_raise_to_top (item); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. lower item to back callback. */ -/*---------------------------------------------------------------------------*/ -static void -lower_item_cb (GtkWidget * widget, - GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gl_item_get_object (item); - display = gl_item_get_display (item); - - gl_label_object_lower_to_back (object); - - /* Send to bottom */ - gnome_canvas_item_lower_to_bottom (item); - - /* now raise it above all items that form the backgound */ - gnome_canvas_item_raise (item, display->n_bg_items); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. move selected items */ -/*---------------------------------------------------------------------------*/ -static void -move_selected_items (glDisplay * display, - gdouble dx, - gdouble dy) -{ - GList *p; - GnomeCanvasItem *item; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - for (p = display->selected_item_list; p != NULL; p = p->next) { - - item = GNOME_CANVAS_ITEM (p->data); - - move_item (item, dx, dy); - gl_item_highlight (item); - - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. move item/object */ -/*---------------------------------------------------------------------------*/ -static void -move_item (GnomeCanvasItem * item, - gdouble dx, - gdouble dy) -{ - glLabelObject *object; - glDisplay *display; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gl_item_get_object (item); - - object->x += dx; - object->y += dy; - - gnome_canvas_item_move (item, dx, dy); - - display = gl_item_get_display (item); - gl_display_set_modified (display); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Return item at (x,y) if it is in our list of managed items. */ -/*---------------------------------------------------------------------------*/ -static GnomeCanvasItem * -display_item_at (glDisplay * display, - gdouble x, - gdouble y) -{ - GnomeCanvasItem *item; - - g_return_val_if_fail (GL_IS_DISPLAY (display), NULL); - - item = gnome_canvas_get_item_at (GNOME_CANVAS (display->canvas), x, y); - - /* No item is at x, y */ - if (item == NULL) - return NULL; - - /* Don't include our background items */ - if (g_list_find (display->bg_item_list, item) != NULL) - return NULL; - - return item; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Is the item in our current selection? */ -/*---------------------------------------------------------------------------*/ -static gboolean -item_selected (glDisplay * display, - GnomeCanvasItem * item) -{ - g_return_val_if_fail (GL_IS_DISPLAY (display), FALSE); - g_return_val_if_fail (GNOME_IS_CANVAS_ITEM (item), FALSE); - - if (g_list_find (display->selected_item_list, item) == NULL) { - return FALSE; - } - return TRUE; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Are there multiple items in our current selection? */ -/*---------------------------------------------------------------------------*/ -static gboolean -multiple_items_selected (glDisplay * display) -{ - g_return_val_if_fail (GL_IS_DISPLAY (display), FALSE); - - if (display->selected_item_list == NULL) - return FALSE; - if (display->selected_item_list->next == NULL) - return FALSE; - return TRUE; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Handle "selection-clear" signal. */ -/*---------------------------------------------------------------------------*/ -static void -selection_clear_cb (GtkWidget * widget, - GdkEventSelection * event, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - - g_return_if_fail (GL_IS_DISPLAY (display)); - - display->have_selection = FALSE; - gl_label_free (&display->selection_data); - display->selection_data = NULL; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Handle "selection-get" signal. */ -/*---------------------------------------------------------------------------*/ -static void -selection_get_cb (GtkWidget * widget, - GtkSelectionData * selection_data, - guint info, - guint time, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - gchar *buffer; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - if (display->have_selection) { - - gl_label_save_xml_buffer (display->selection_data, &buffer); - gtk_selection_data_set (selection_data, - GDK_SELECTION_TYPE_STRING, 8, buffer, - strlen (buffer)); - g_free (buffer); - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Handle "selection-received" signal. (Result of Paste) */ -/*---------------------------------------------------------------------------*/ -static void -selection_received_cb (GtkWidget * widget, - GtkSelectionData * selection_data, - guint time, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - glLabel *label = NULL; - GList *p; - glLabelObject *object, *newobject; - GnomeCanvasItem *item; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - if (selection_data->length < 0) { - return; - } - if (selection_data->type != GDK_SELECTION_TYPE_STRING) { - return; - } - - gl_display_unselect_all (display); - - gl_label_open_xml_buffer (&label, selection_data->data); - for (p = label->objects; p != NULL; p = p->next) { - object = (glLabelObject *) p->data; - newobject = - gl_label_object_new_from_object (display->label, object); - item = gl_item_new (newobject, display); - gl_display_add_item (display, item); - gl_display_select_item (display, item); - } - gl_label_free (&label); - - gl_display_set_modified (display); -} - -/*****************************************************************************/ -/* Zoom in one "notch" */ -/*****************************************************************************/ -void -gl_display_zoom_in (glDisplay * display) -{ - gint i, i_min; - gdouble dist, dist_min; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - /* Find index of current scale (or best match) */ - i_min = 1; /* start with 2nd largest scale */ - dist_min = fabs (scales[1] - display->scale); - for (i = 2; scales[i] != 0.0; i++) { - dist = fabs (scales[i] - display->scale); - if (dist < dist_min) { - i_min = i; - dist_min = dist; - } - } - - /* zoom in one "notch" */ - i = MAX (0, i_min - 1); - gl_display_set_zoom (display, scales[i] / HOME_SCALE); -} - -/*****************************************************************************/ -/* Zoom out one "notch" */ -/*****************************************************************************/ -void -gl_display_zoom_out (glDisplay * display) -{ - gint i, i_min; - gdouble dist, dist_min; - - g_return_if_fail (GL_IS_DISPLAY (display)); - - /* Find index of current scale (or best match) */ - i_min = 0; /* start with largest scale */ - dist_min = fabs (scales[0] - display->scale); - for (i = 1; scales[i] != 0.0; i++) { - dist = fabs (scales[i] - display->scale); - if (dist < dist_min) { - i_min = i; - dist_min = dist; - } - } - - /* zoom out one "notch" */ - if (scales[i_min] == 0.0) - return; - i = i_min + 1; - if (scales[i] == 0.0) - return; - gl_display_set_zoom (display, scales[i] / HOME_SCALE); - -} - -/*****************************************************************************/ -/* Set current zoom factor to explicit value. */ -/*****************************************************************************/ -void -gl_display_set_zoom (glDisplay * display, - gdouble scale) -{ - g_return_if_fail (GL_IS_DISPLAY (display)); - g_return_if_fail (scale > 0.0); - - display->scale = scale * HOME_SCALE; - gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (display->canvas), - scale * HOME_SCALE); -} - -/*****************************************************************************/ -/* Get current zoom factor. */ -/*****************************************************************************/ -gdouble -gl_display_get_zoom (glDisplay * display) -{ - g_return_val_if_fail (GL_IS_DISPLAY (display), 1.0); - - return display->scale / HOME_SCALE; -} diff --git a/glabels1/src/display.h b/glabels1/src/display.h deleted file mode 100644 index 704e8aa5..00000000 --- a/glabels1/src/display.h +++ /dev/null @@ -1,116 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * display.h: GLabels Display module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __DISPLAY_H__ -#define __DISPLAY_H__ - -#include -#include "label.h" - -typedef enum { - GL_DISPLAY_STATE_ARROW, - GL_DISPLAY_STATE_OBJECT_CREATE -} glDisplayState; - -#define GL_TYPE_DISPLAY (gl_display_get_type ()) -#define GL_DISPLAY(obj) (GTK_CHECK_CAST((obj), GL_TYPE_DISPLAY, glDisplay )) -#define GL_DISPLAY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_DISPLAY, glDisplayClass)) -#define GL_IS_DISPLAY(obj) (GTK_CHECK_TYPE ((obj), GL_TYPE_DISPLAY)) -#define GL_IS_DISPLAY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_DISPLAY)) - -typedef struct _glDisplay glDisplay; -typedef struct _glDisplayClass glDisplayClass; - -struct _glDisplay { - GtkVBox parent_widget; - - glLabel *label; - - GtkWidget *canvas; - gdouble scale; - gint n_bg_items; - GList *bg_item_list; - - glDisplayState state; - glLabelObjectType create_type; - - gboolean modified; - - GList *item_list; - GList *selected_item_list; - - gint have_selection; - glLabel *selection_data; - GtkWidget *invisible; - - GtkWidget *menu; -}; - -struct _glDisplayClass { - GtkVBoxClass parent_class; -}; - -extern guint gl_display_get_type (void); - -extern GtkWidget *gl_display_new (glLabel * label); - -extern void gl_display_arrow_mode (glDisplay * display); -extern void gl_display_object_create_mode (glDisplay * display, - glLabelObjectType type); - -extern void gl_display_add_item (glDisplay * display, - GnomeCanvasItem * item); - -extern void gl_display_select_all (glDisplay * display); -extern void gl_display_select_region (glDisplay * display, - gdouble x1, - gdouble y1, - gdouble x2, - gdouble y2); -extern void gl_display_unselect_all (glDisplay * display); - -extern void gl_display_select_item (glDisplay * display, - GnomeCanvasItem * item); -extern void gl_display_unselect_item (glDisplay * display, - GnomeCanvasItem * item); - -extern int gl_display_item_event_handler (GnomeCanvasItem * item, - GdkEvent * event, - gpointer data); - -extern GtkWidget *gl_display_new_selection_menu (glDisplay * display); -extern GtkWidget *gl_display_new_item_menu (GnomeCanvasItem * item); - -extern gboolean gl_display_modified (glDisplay * display); -extern void gl_display_set_modified (glDisplay * display); -extern void gl_display_clear_modified (glDisplay * display); - -extern void gl_display_cut (glDisplay * display); -extern void gl_display_copy (glDisplay * display); -extern void gl_display_paste (glDisplay * display); - -extern void gl_display_zoom_in (glDisplay * display); -extern void gl_display_zoom_out (glDisplay * display); -extern void gl_display_set_zoom (glDisplay * display, gdouble scale); -extern gdouble gl_display_get_zoom (glDisplay * display); - -#endif diff --git a/glabels1/src/edit.c b/glabels1/src/edit.c deleted file mode 100644 index 88ceaefd..00000000 --- a/glabels1/src/edit.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * edit.c: Edit module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -#include "edit.h" - -#include "display.h" -#include "mdi.h" - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*============================================*/ -/* Private function prototypes. */ -/*============================================*/ - -/*****************************************************************************/ -/* "Cut" */ -/*****************************************************************************/ -void -gl_edit_cut_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - glDisplay *display; - - g_return_if_fail (child != NULL); - g_return_if_fail (app != NULL); - - display = gl_mdi_get_display (child); - - gl_display_cut (display); - -} - -/*****************************************************************************/ -/* "Copy" */ -/*****************************************************************************/ -void -gl_edit_copy_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - glDisplay *display; - - g_return_if_fail (child != NULL); - g_return_if_fail (app != NULL); - - display = gl_mdi_get_display (child); - - gl_display_copy (display); - -} - -/*****************************************************************************/ -/* "Paste" */ -/*****************************************************************************/ -void -gl_edit_paste_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - g_return_if_fail (child != NULL); - - display = gl_mdi_get_display (child); - - gl_display_paste (display); -} - -/*****************************************************************************/ -/* "Select ALL" */ -/*****************************************************************************/ -void -gl_edit_select_all_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - g_return_if_fail (child != NULL); - - display = gl_mdi_get_display (child); - - gl_display_select_all (display); -} - -/*****************************************************************************/ -/* "Un-select" */ -/*****************************************************************************/ -void -gl_edit_unselect_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - g_return_if_fail (child != NULL); - - display = gl_mdi_get_display (child); - - gl_display_unselect_all (display); -} diff --git a/glabels1/src/edit.h b/glabels1/src/edit.h deleted file mode 100644 index 0a9854b3..00000000 --- a/glabels1/src/edit.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * edit.h: Edit module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __EDIT_H__ -#define __EDIT_H__ - -#include - -extern void gl_edit_add_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_delete_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_title_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_select_all_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_unselect_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_cut_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_copy_cb (GtkWidget * widget, gpointer data); - -extern void gl_edit_paste_cb (GtkWidget * widget, gpointer data); - -#endif /* __EDIT_H__ */ diff --git a/glabels1/src/file.c b/glabels1/src/file.c deleted file mode 100644 index 9d3243fd..00000000 --- a/glabels1/src/file.c +++ /dev/null @@ -1,415 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * file.c: FILE menu dialog module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include -#include - -#include "file.h" -#include "mdi.h" -#include "util.h" -#include "media_select.h" -#include "rotate_select.h" - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/* Saved state for new dialog */ -static gchar *page_size = NULL; -static gchar *sheet_name = NULL; -static gboolean rotate_flag = FALSE; - -/* Saved state of file selectors */ -static gchar *open_path = NULL; -static gchar *save_path = NULL; - -/*===========================================*/ -/* Local function prototypes. */ -/*===========================================*/ -static void create_new_dialog_widgets (GnomeDialog * new_dlg); -static void new_template_changed (glMediaSelect * select, - gpointer data); -static void new_ok (GtkWidget * widget, - gpointer data); -static void open_ok (GtkWidget * widget, - GtkFileSelection * fsel); -static void save_as_ok (GtkWidget * widget, - GtkFileSelection * fsel); - -/*****************************************************************************/ -/* "New" menu callback. */ -/*****************************************************************************/ -void -gl_file_new_cb (GtkWidget * widget, - gpointer data) -{ - GtkWidget *new_dlg; - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - - g_return_if_fail (app != NULL); - - new_dlg = gnome_dialog_new (_("New Label or Card"), - GNOME_STOCK_BUTTON_OK, - GNOME_STOCK_BUTTON_CANCEL, NULL); - gtk_window_set_transient_for (GTK_WINDOW (new_dlg), GTK_WINDOW (app)); - - create_new_dialog_widgets (GNOME_DIALOG (new_dlg)); - - gnome_dialog_button_connect (GNOME_DIALOG (new_dlg), 0, - GTK_SIGNAL_FUNC (new_ok), new_dlg); - - gnome_dialog_button_connect_object (GNOME_DIALOG (new_dlg), 1, - GTK_SIGNAL_FUNC - (gtk_widget_destroy), - GTK_OBJECT (new_dlg)); - - gtk_widget_show_all (GTK_WIDGET (new_dlg)); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Create widgets to enter a bond by sn and idate. */ -/*---------------------------------------------------------------------------*/ -static void -create_new_dialog_widgets (GnomeDialog * new_dlg) -{ - GtkWidget *wframe, *wvbox, *template_entry, *rotate_sel; - - wframe = gtk_frame_new (_("Media Type")); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (new_dlg)->vbox), - wframe, FALSE, FALSE, 0); - - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gtk_container_add (GTK_CONTAINER (wframe), wvbox); - - template_entry = gl_media_select_new (); - gtk_container_add (GTK_CONTAINER (wvbox), template_entry); - - wframe = gtk_frame_new (_("Label orientation")); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (new_dlg)->vbox), - wframe, FALSE, FALSE, 0); - - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gtk_container_add (GTK_CONTAINER (wframe), wvbox); - - rotate_sel = gl_rotate_select_new (); - gtk_box_pack_start (GTK_BOX (wvbox), rotate_sel, FALSE, FALSE, 0); - - gtk_object_set_data (GTK_OBJECT (new_dlg), "template_entry", - template_entry); - gtk_object_set_data (GTK_OBJECT (new_dlg), "rotate_sel", rotate_sel); - - gtk_signal_connect (GTK_OBJECT (template_entry), "changed", - GTK_SIGNAL_FUNC (new_template_changed), rotate_sel); - - if (page_size != NULL) { - gl_media_select_set_page_size (GL_MEDIA_SELECT (template_entry), - page_size); - } - if (sheet_name != NULL) { - gl_media_select_set_name (GL_MEDIA_SELECT (template_entry), - sheet_name); - gl_rotate_select_set_template_name (GL_ROTATE_SELECT - (rotate_sel), sheet_name); - } else { - sheet_name = - gl_media_select_get_name (GL_MEDIA_SELECT (template_entry)); - gl_rotate_select_set_template_name (GL_ROTATE_SELECT - (rotate_sel), sheet_name); - } - gl_rotate_select_set_state (GL_ROTATE_SELECT (rotate_sel), rotate_flag); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. New template changed callback. */ -/*---------------------------------------------------------------------------*/ -static void -new_template_changed (glMediaSelect * select, - gpointer data) -{ - glRotateSelect *rotate_sel = GL_ROTATE_SELECT (data); - gchar *name; - - name = gl_media_select_get_name (GL_MEDIA_SELECT (select)); - - gl_rotate_select_set_template_name (GL_ROTATE_SELECT (rotate_sel), - name); - - g_free (name); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. New "ok" button callback. */ -/*---------------------------------------------------------------------------*/ -static void -new_ok (GtkWidget * widget, - gpointer data) -{ - GnomeDialog *new_dlg = GNOME_DIALOG (data); - GtkWidget *template_entry, *rotate_sel; - - template_entry = - GTK_WIDGET (gtk_object_get_data - (GTK_OBJECT (new_dlg), "template_entry")); - rotate_sel = - GTK_WIDGET (gtk_object_get_data - (GTK_OBJECT (new_dlg), "rotate_sel")); - - if (page_size != NULL) - g_free (page_size); - page_size = - gl_media_select_get_page_size (GL_MEDIA_SELECT (template_entry)); - - if (sheet_name != NULL) - g_free (sheet_name); - sheet_name = - gl_media_select_get_name (GL_MEDIA_SELECT (template_entry)); - - rotate_flag = - gl_rotate_select_get_state (GL_ROTATE_SELECT (rotate_sel)); - - gl_mdi_new_child (sheet_name, rotate_flag); - - gtk_widget_destroy (GTK_WIDGET (new_dlg)); -} - -/*****************************************************************************/ -/* "Open" menu callback. */ -/*****************************************************************************/ -void -gl_file_open_cb (GtkWidget * widget, - gpointer data) -{ - GtkFileSelection *fsel; - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - - g_return_if_fail (app != NULL); - - fsel = GTK_FILE_SELECTION (gtk_file_selection_new (_("Open"))); - gtk_window_set_transient_for (GTK_WINDOW (fsel), GTK_WINDOW (app)); - gtk_window_set_title (GTK_WINDOW (fsel), _("Open label")); - - gtk_signal_connect (GTK_OBJECT (fsel->ok_button), "clicked", - GTK_SIGNAL_FUNC (open_ok), fsel); - - gtk_signal_connect_object (GTK_OBJECT (fsel->cancel_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (fsel)); - - /* Recover state of open dialog */ - if (open_path != NULL) { - gtk_file_selection_set_filename (fsel, open_path); - } - - /* show the dialog */ - gtk_widget_show (GTK_WIDGET (fsel)); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Open "O.K." button callback. */ -/*---------------------------------------------------------------------------*/ -static void -open_ok (GtkWidget * widget, - GtkFileSelection * fsel) -{ - gchar *filename; - GtkWidget *dlg; - - g_return_if_fail (GTK_IS_FILE_SELECTION (fsel)); - - /* get the filename */ - filename = g_strdup (gtk_file_selection_get_filename (fsel)); - if (filename) { - if (!gl_mdi_new_child_from_xml_file (filename)) { - - dlg = - gnome_error_dialog_parented (_("Cannot open file"), - GTK_WINDOW (fsel)); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - - } else { - - gtk_widget_destroy (GTK_WIDGET (fsel)); - - if (open_path != NULL) - g_free (open_path); - open_path = g_dirname (filename); - if (open_path != NULL) - open_path = g_strconcat (open_path, "/", NULL); - - } - } - - g_free (filename); -} - -/*****************************************************************************/ -/* "Save" menu callback. */ -/*****************************************************************************/ -void -gl_file_save_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - gchar *filename; - - g_return_if_fail (child != NULL); - g_return_if_fail (app != NULL); - - filename = gl_mdi_get_filename (child); - if (!filename) { - gl_file_save_as_cb (widget, data); - } else { - if (!gl_mdi_save_child_to_xml_file (child, filename)) { - gnome_error_dialog_parented (_("Cannot save file"), - GTK_WINDOW (app)); - } - } - - g_free (filename); -} - -/*****************************************************************************/ -/* "Save As" menu callback. */ -/*****************************************************************************/ -void -gl_file_save_as_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - GtkFileSelection *fsel; - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - gint id; - - g_return_if_fail (child != NULL); - g_return_if_fail (app != NULL); - - fsel = GTK_FILE_SELECTION (gtk_file_selection_new (_("Save As"))); - id = gl_mdi_get_id (child); - gtk_object_set_data (GTK_OBJECT (fsel), "id", GINT_TO_POINTER (id)); - - gtk_window_set_transient_for (GTK_WINDOW (fsel), GTK_WINDOW (app)); - gtk_window_set_title (GTK_WINDOW (fsel), _("Save label as")); - - gtk_signal_connect (GTK_OBJECT (fsel->ok_button), "clicked", - GTK_SIGNAL_FUNC (save_as_ok), fsel); - - gtk_signal_connect_object (GTK_OBJECT (fsel->cancel_button), "clicked", - GTK_SIGNAL_FUNC (gtk_widget_destroy), - GTK_OBJECT (fsel)); - - /* Recover proper state of save-as dialog */ - if (save_path != NULL) { - gtk_file_selection_set_filename (fsel, save_path); - } - - /* show the dialog */ - gtk_widget_show (GTK_WIDGET (fsel)); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Save As" ok button callback. */ -/*---------------------------------------------------------------------------*/ -static void -save_as_ok (GtkWidget * widget, - GtkFileSelection * fsel) -{ - gchar *raw_filename, *filename; - GtkWidget *dlg; - gint id = - GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (fsel), "id")); - GnomeMDIChild *child = gl_mdi_find_child (id); - - g_return_if_fail (GTK_IS_FILE_SELECTION (fsel)); - - if (child == NULL) { - gtk_widget_destroy (GTK_WIDGET (fsel)); - dlg = gnome_error_dialog (_("Label no longer valid!")); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - return; - } - - /* get the filename */ - raw_filename = g_strdup (gtk_file_selection_get_filename (fsel)); - - if (!raw_filename || (raw_filename[strlen (raw_filename) - 1] == '/')) { - - dlg = gnome_warning_dialog_parented (_("Must supply file name"), - GTK_WINDOW (fsel)); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - - } else { - - filename = gl_util_add_extension (raw_filename); - - if (!gl_mdi_save_child_to_xml_file (child, filename)) { - - dlg = - gnome_error_dialog_parented (_ - ("Error writing file"), - GTK_WINDOW (fsel)); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - - } else { - - if (save_path != NULL) - g_free (save_path); - save_path = g_dirname (filename); - if (save_path != NULL) - save_path = g_strconcat (save_path, "/", NULL); - - gtk_widget_destroy (GTK_WIDGET (fsel)); - } - - g_free (filename); - } - - g_free (raw_filename); -} - -/*****************************************************************************/ -/* "Close" menu callback. */ -/*****************************************************************************/ -void -gl_file_close_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - - gl_mdi_close_child (child); -} - -/*****************************************************************************/ -/* "Exit" menu callback. */ -/*****************************************************************************/ -void -gl_file_exit_cb (GtkWidget * widget, - gpointer data) -{ - gl_mdi_close_all (); -} diff --git a/glabels1/src/file.h b/glabels1/src/file.h deleted file mode 100644 index f5d035ea..00000000 --- a/glabels1/src/file.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * file.h: FILE menu dialog module header file - * - * Copyright (C) 2000 Jim Evins . - * - * 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 - */ - -#ifndef __FILE_H__ -#define __FILE_H__ - -#include - -void gl_file_new_cb (GtkWidget * widget, gpointer data); -void gl_file_open_cb (GtkWidget * widget, gpointer data); -void gl_file_save_cb (GtkWidget * widget, gpointer data); -void gl_file_save_as_cb (GtkWidget * widget, gpointer data); -void gl_file_close_cb (GtkWidget * widget, gpointer data); -void gl_file_exit_cb (GtkWidget * widget, gpointer data); - -#endif /* __FILE_H__ */ diff --git a/glabels1/src/glabels.c b/glabels1/src/glabels.c deleted file mode 100644 index 6e68fb9f..00000000 --- a/glabels1/src/glabels.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * glabels.c: main program module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include -#include - -#include "splash.h" -#include "stock.h" -#include "merge.h" -#include "merge_ui.h" -#include "mdi.h" -#include "template.h" -#include "debug.h" - -#ifdef PACKAGE_DATA_DIR -#define ICON_PIXMAP (PACKAGE_DATA_DIR "/pixmaps/glabels/glabels-icon.png") -#else -#define ICON_PIXMAP gnome_pixmap_file("glabels/glabels-icon.png") -#endif - -/*============================================*/ -/* Private globals */ -/*============================================*/ -static struct poptOption options[] = { - {NULL, '\0', 0, NULL, 0, NULL, NULL} -}; - -/*============================================*/ -/* Private function prototypes */ -/*============================================*/ -static void session_die (GnomeClient * client, - gpointer client_data); -static gint save_session (GnomeClient * client, - gint phase, - GnomeSaveStyle save_style, - gint is_shutdown, - GnomeInteractStyle interact_style, - gint is_fast, - gpointer client_data); - - -/*****************************************************************************/ -/* Main */ -/*****************************************************************************/ -int -main (int argc, - char *argv[]) -{ - poptContext pctx; - gchar **args; - GnomeMDI *mdi; - GnomeClient *client; - GSList *p, *file_list = NULL; - gint i, opened; - - bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); - textdomain (PACKAGE); - - gnome_init_with_popt_table (PACKAGE, VERSION, - argc, argv, options, 0, &pctx); - - /* Splash screen */ - gl_splash (); - - if (!g_file_exists (ICON_PIXMAP)) { - WARN ("Could not find %s", ICON_PIXMAP); - } - gnome_window_icon_set_default_from_file (ICON_PIXMAP); - - /* argument parsing */ - args = (char **) poptGetArgs (pctx); - for (i = 0; args && args[i]; i++) { - file_list = g_slist_append (file_list, args[i]); - } - poptFreeContext (pctx); - - /* session management */ - client = gnome_master_client (); - gtk_signal_connect (GTK_OBJECT (client), "save_yourself", - GTK_SIGNAL_FUNC (save_session), argv[0]); - gtk_signal_connect (GTK_OBJECT (client), "die", - GTK_SIGNAL_FUNC (session_die), NULL); - - gl_stock_init (); - gl_merge_init (); - gl_merge_ui_init (); - gl_template_init (); - - mdi = gl_mdi_init (); - - /* Any files on command line? */ - opened = 0; - for (p = file_list; p; p = p->next) { - if (gl_mdi_new_child_from_xml_file (p->data)) - opened++; - } - g_slist_free (file_list); - - if (!opened) { - gnome_mdi_open_toplevel (mdi); - } - - /* Now start main loop */ - gtk_main (); - - return 0; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Save Session signal callback. */ -/*---------------------------------------------------------------------------*/ -static gint -save_session (GnomeClient * client, - gint phase, - GnomeSaveStyle save_style, - gint is_shutdown, - GnomeInteractStyle interact_style, - gint is_fast, - gpointer client_data) -{ - gchar **argv; - guint argc; - - argv = g_malloc0 (4 * sizeof (gchar *)); - argc = 1; - - argv[0] = client_data; - - gnome_client_set_clone_command (client, argc, argv); - gnome_client_set_restart_command (client, argc, argv); - - return TRUE; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Session Die signal callback. */ -/*---------------------------------------------------------------------------*/ -static void -session_die (GnomeClient * client, - gpointer client_data) -{ - gtk_main_quit (); -} diff --git a/glabels1/src/glabels_batch.c b/glabels1/src/glabels_batch.c deleted file mode 100644 index 480f2071..00000000 --- a/glabels1/src/glabels_batch.c +++ /dev/null @@ -1,152 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * glabels.c: main program module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include -#include -#include -#include - -#include "merge.h" -#include "label.h" -#include "template.h" -#include "print.h" -#include "util.h" - -/*============================================*/ -/* Private globals */ -/*============================================*/ -static gboolean help_flag = FALSE; -static gboolean version_flag = FALSE; -static gchar *output = "output.ps"; -static gint n_copies = 1; -static gint n_sheets = 1; -static gboolean outline_flag = FALSE; -static gboolean reverse_flag = FALSE; - -static struct poptOption options[] = { - {"help", 'h', POPT_ARG_NONE, &help_flag, 1, - N_("print this message"), NULL}, - {"version", 'v', POPT_ARG_NONE, &version_flag, 0, - N_("print the version of glabels-batch being used"), NULL}, - {"output", 'o', POPT_ARG_STRING, &output, 0, - N_("set output filename (default=\"output.ps\")"), N_("filename")}, - {"sheets", 's', POPT_ARG_INT, &n_sheets, 0, - N_("number of sheets (default=1)"), N_("sheets")}, - {"copies", 'c', POPT_ARG_INT, &n_copies, 0, - N_("number of copies (default=1)"), N_("copies")}, - {"outline", 'l', POPT_ARG_NONE, &outline_flag, 0, - N_("print outlines (to test printer alignment)"), NULL}, - {"reverse", 'r', POPT_ARG_NONE, &reverse_flag, 0, - N_("print in reverse (i.e. a mirror image)"), NULL}, - {NULL, '\0', 0, NULL, 0, NULL, NULL} -}; - - - -/*****************************************************************************/ -/* Main */ -/*****************************************************************************/ -int -main (int argc, - char *argv[]) -{ - poptContext pctx; - gchar **args; - gint rc; - GSList *p, *file_list = NULL; - gint n_files; - GnomePrintMaster *master = NULL; - gchar *abs_fn; - GnomePrinter *prn = NULL; - glLabel *label = NULL; - - bindtextdomain (PACKAGE, PACKAGE_LOCALE_DIR); - textdomain (PACKAGE); - - setlocale (LC_ALL, ""); - gtk_type_init (); - - /* argument parsing */ - pctx = poptGetContext (NULL, argc, argv, options, 0); - poptSetOtherOptionHelp (pctx, _("[OPTION...] GLABELS_FILE...") ); - if ( (rc = poptGetNextOpt(pctx)) < -1 ) { - fprintf (stderr, "%s: %s\n", - poptBadOption (pctx,0), poptStrerror(rc)); - poptPrintUsage (pctx, stderr, 0); - return -1; - } - if ( version_flag ) { - fprintf ( stderr, "glabels-batch %s\n", VERSION ); - } - if ( help_flag ) { - poptPrintHelp (pctx, stderr, 0); - return -1; - } - args = (char **) poptGetArgs (pctx); - for (n_files = 0; args && args[n_files]; n_files++) { - file_list = g_slist_append (file_list, args[n_files]); - } - if ( !n_files ) { - fprintf ( stderr, _("missing glabels file\n") ); - poptPrintHelp (pctx, stderr, 0); - return -1; - } - poptFreeContext (pctx); - - /* initialize components */ - gl_merge_init (); - gl_template_init (); - - /* now print the files */ - for (p = file_list; p; p = p->next) { - if ( gl_label_open_xml( &label, p->data ) == LABEL_OK ) { - - if ( master == NULL ) { - master = gnome_print_master_new (); - abs_fn = gl_util_make_absolute ( output ); - prn = gnome_printer_new_generic_ps ( abs_fn ); - g_free( abs_fn ); - gnome_print_master_set_printer ( master, prn ); - } - - gl_print_batch( master, label, n_sheets, n_copies, - outline_flag, reverse_flag ); - - gl_label_free( &label ); - } - else { - fprintf ( stderr, _("cannot open glabels file %s\n"), - (char *)p->data ); - } - } - if ( master != NULL ) { - unlink (output); - gnome_print_master_print (master); - } - - g_slist_free (file_list); - - return 0; -} - diff --git a/glabels1/src/gnome-canvas-hacktext.h b/glabels1/src/gnome-canvas-hacktext.h deleted file mode 100644 index f36ec1ae..00000000 --- a/glabels1/src/gnome-canvas-hacktext.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Hacktext item type for GnomeCanvas widget - * - * GnomeCanvas is basically a port of the Tk toolkit's most excellent canvas widget. Tk is - * copyrighted by the Regents of the University of California, Sun Microsystems, and other parties. - * - * Copyright (C) 1998,1999 The Free Software Foundation - * - * Authors: Federico Mena - * Raph Levien - */ - -#ifndef GNOME_CANVAS_HACKTEXT_H -#define GNOME_CANVAS_HACKTEXT_H - -BEGIN_GNOME_DECLS - -/* Hacktext item for the canvas. The API is totally unstable - it needs to be replaced with one - * that supports Unicode and the merged GnomeText/GScript API. However, I need a text item now, - * and the GnomeText/GScript integration is going to take a bit more effort. - * - * The following object arguments are available: - * - * name type read/write description - * ------------------------------------------------------------------------------------------ - * text char * RW The string of the text item. - * glyphlist GnomeGlyphList * W Glyphlist - * fill_color string W X color specification for fill color, - * or NULL pointer for no color (transparent). - * fill_color_gdk GdkColor* RW Allocated GdkColor for fill. - */ - -#define GNOME_TYPE_CANVAS_HACKTEXT (gnome_canvas_hacktext_get_type ()) -#define GNOME_CANVAS_HACKTEXT(obj) (GTK_CHECK_CAST ((obj), GNOME_TYPE_CANVAS_HACKTEXT, GnomeCanvasHacktext)) -#define GNOME_CANVAS_HACKTEXT_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GNOME_TYPE_CANVAS_HACKTEXT, GnomeCanvasHacktextClass)) -#define GNOME_IS_CANVAS_HACKTEXT(obj) (GTK_CHECK_TYPE ((obj), GNOME_TYPE_CANVAS_HACKTEXT)) -#define GNOME_IS_CANVAS_HACKTEXT_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GNOME_TYPE_CANVAS_HACKTEXT)) - -typedef struct _GnomeCanvasHacktext GnomeCanvasHacktext; -typedef struct _GnomeCanvasHacktextPriv GnomeCanvasHacktextPriv; -typedef struct _GnomeCanvasHacktextClass GnomeCanvasHacktextClass; - -#include - -struct _GnomeCanvasHacktext { - GnomeCanvasItem item; - - char *text; /* String of the text item */ - - guint fill_color; /* Fill color, RGBA */ - - gulong fill_pixel; /* Color for fill */ - - guint fill_set : 1; /* Is fill color set? */ - - double size; /* size in user units */ - - double x, y; /* x, y coords of text origin */ - - /* Antialiased specific stuff follows */ - guint32 fill_rgba; /* RGBA color for filling */ - - GnomeCanvasHacktextPriv *priv; /* Private data */ -}; - -struct _GnomeCanvasHacktextClass { - GnomeCanvasItemClass parent_class; -}; - - -/* Standard Gtk function */ -GtkType gnome_canvas_hacktext_get_type (void); - - -END_GNOME_DECLS - -#endif diff --git a/glabels1/src/hack.c b/glabels1/src/hack.c deleted file mode 100644 index 07ecf0a9..00000000 --- a/glabels1/src/hack.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * hack.c: various small hacks to deal with I18N - * - * Copyright (C) 2001 Jim Evins . - * - * - * The g_unichar_to_utf8 has been borrowed from gnumeric, which was borrowed - * from glib-1.3: - * g_unichar_to_utf8: Copyright Red Hat, 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 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 - -#include -#include -#include - -#include "hack.h" - -static int g_unichar_to_utf8 (gint c, gchar * outbuf); - -/*****************************************************************************/ -/* Convert text to UTF8. */ -/*****************************************************************************/ -gchar * -gl_hack_text_to_utf8 (gchar * text) -{ - gint len; - GdkWChar *wide_text; - gint enc_status; - gchar *p, *utf8_text; - gint i; - - len = strlen (text); - wide_text = g_new (GdkWChar, len + 1); - enc_status = mbstowcs ((wchar_t *)wide_text, (char *)text, len); - if (enc_status < 0) { - g_free (wide_text); - return NULL; - } - - p = utf8_text = g_new (gchar, enc_status * 6 + 1); - for (i = 0; i < enc_status; i++) { - p += g_unichar_to_utf8 ((gint) wide_text[i], p); - } - *p = 0; /* terminate */ - - g_free (wide_text); - - return utf8_text; -} - -/*****************************************************************************/ -/* Calculate width of text with given font. */ -/*****************************************************************************/ -double -gl_hack_get_width_string (GnomeFont * font, - gchar * text) -{ - gint len; - GdkWChar *wide_text; - gint enc_status; - gint i; - gdouble w; - - len = strlen (text); - wide_text = g_new (GdkWChar, len + 1); - enc_status = mbstowcs ((wchar_t *)wide_text, (char *)text, len); - if (enc_status < 0) { - g_free (wide_text); - return 0.0; - } - - w = 0; - for (i = 0; i < enc_status; i++) { - w += gnome_font_get_glyph_width (font, - gnome_font_lookup_default - (font, wide_text[i])); - } - - g_free (wide_text); - - return w; -} - -/*----------------------------------------------------------------------------- - * This is cut & pasted from glib 1.3 - * - * We need it only for iso-8859-1 converter and it will be - * abandoned, if glib 2.0 or any other unicode library will - * be introduced. - *---------------------------------------------------------------------------*/ -static int -g_unichar_to_utf8 (gint c, - gchar * outbuf) -{ - size_t len = 0; - int first; - int i; - - if (c < 0x80) { - first = 0; - len = 1; - } else if (c < 0x800) { - first = 0xc0; - len = 2; - } else if (c < 0x10000) { - first = 0xe0; - len = 3; - } else if (c < 0x200000) { - first = 0xf0; - len = 4; - } else if (c < 0x4000000) { - first = 0xf8; - len = 5; - } else { - first = 0xfc; - len = 6; - } - - if (outbuf) { - for (i = len - 1; i > 0; --i) { - outbuf[i] = (c & 0x3f) | 0x80; - c >>= 6; - } - outbuf[0] = c | first; - } - - return len; -} diff --git a/glabels1/src/hack.h b/glabels1/src/hack.h deleted file mode 100644 index 2f0b868d..00000000 --- a/glabels1/src/hack.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * hack.h: various small hacks to deal with I18N - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - */ - -#ifndef __HACK_H__ -#define __HACK_H__ - -#include - -extern gchar *gl_hack_text_to_utf8 (gchar * text); - -extern double gl_hack_get_width_string (GnomeFont * font, gchar * text); - -#endif /* __HACK_H__ */ diff --git a/glabels1/src/highlight.c b/glabels1/src/highlight.c deleted file mode 100644 index 6acc3889..00000000 --- a/glabels1/src/highlight.c +++ /dev/null @@ -1,1443 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * highlight.c: GLabels Resizable Highlight module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "highlight.h" -#include "item.h" - -#include "math.h" - -#include "debug.h" - -#define MIN_ITEM_SIZE 1.0 - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void highlight_resizable_box (GnomeCanvasItem * item, - glHighlightStyle style); -static void highlight_resizable_line (GnomeCanvasItem * item); -static void highlight_simple (GnomeCanvasItem * item); - -static int tl_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int tr_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int bl_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int br_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); - -static int sl_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int sr_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int st_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int sb_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); - -static int p1_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); -static int p2_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); - -static int passthrough_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, gpointer data); - -/*****************************************************************************/ -/* Create/Update & Display a resizable highlight for given item. */ -/*****************************************************************************/ -void -gl_highlight (GnomeCanvasItem * item, - glHighlightStyle style) -{ - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - switch (style) { - - case GL_HIGHLIGHT_BOX_RESIZABLE: - case GL_HIGHLIGHT_ELLIPSE_RESIZABLE: - highlight_resizable_box (item, style); - break; - - case GL_HIGHLIGHT_LINE_RESIZABLE: - highlight_resizable_line (item); - break; - - case GL_HIGHLIGHT_SIMPLE: - highlight_simple (item); - break; - - default: - WARN ("Invalid resizable highlight style"); - - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Create/Update & Display a resizable box highlight. */ -/*---------------------------------------------------------------------------*/ -static void -highlight_resizable_box (GnomeCanvasItem * item, - glHighlightStyle style) -{ - GnomeCanvasItem *highlight; - gdouble x, y, w, h; - GnomeCanvasItem *outline; /* Outline around item */ - GnomeCanvasItem *tl, *tr, *bl, *br; /* Handles at four corners */ - GnomeCanvasItem *sl, *sr, *st, *sb; /* Handles at each side */ - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - highlight = gtk_object_get_data (GTK_OBJECT (item), "highlight"); - - gl_item_get_position_size (item, &x, &y, &w, &h); - - if (highlight == NULL) { - - highlight = - gnome_canvas_item_new (gnome_canvas_root - (GNOME_CANVAS (item->canvas)), - gnome_canvas_group_get_type (), "x", - x, "y", y, NULL); - - switch (style) { - case GL_HIGHLIGHT_BOX_RESIZABLE: - outline = - gnome_canvas_item_new (GNOME_CANVAS_GROUP - (highlight), - gnome_canvas_rect_get_type - (), - "x1", -0.5, - "y1", -0.5, - "x2", w + 0.5, - "y2", h + 0.5, - "width_pixels", 2, - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, - 255, - 255), - NULL); - break; - case GL_HIGHLIGHT_ELLIPSE_RESIZABLE: - outline = - gnome_canvas_item_new (GNOME_CANVAS_GROUP - (highlight), - gnome_canvas_ellipse_get_type - (), - "x1", -0.5, - "y1", -0.5, - "x2", w + 0.5, - "y2", h + 0.5, - "width_pixels", 2, - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, - 255, - 255), - NULL); - break; - default: - outline = NULL; - WARN ("Invalid resizable highlight style"); - } - - tl = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", -1.0, - "y1", -1.0, - "x2", +1.0, - "y2", +1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - tr = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", w - 1.0, - "y1", -1.0, - "x2", w + 1.0, - "y2", +1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - bl = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", -1.0, - "y1", h - 1.0, - "x2", +1.0, - "y2", h + 1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - br = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", w - 1.0, - "y1", h - 1.0, - "x2", w + 1.0, - "y2", h + 1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - sl = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", -1.0, - "y1", h / 2.0 - 1.0, - "x2", +1.0, - "y2", h / 2.0 + 1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - sr = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", w - 1.0, - "y1", h / 2.0 - 1.0, - "x2", w + 1.0, - "y2", h / 2.0 + 1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - st = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", w / 2.0 - 1.0, - "y1", -1.0, - "x2", w / 2.0 + 1.0, - "y2", +1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - sb = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", w / 2.0 - 1.0, - "y1", h - 1.0, - "x2", w / 2.0 + 1.0, - "y2", h + 1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - gtk_object_set_data (GTK_OBJECT (item), "highlight", highlight); - - gtk_object_set_data (GTK_OBJECT (highlight), "outline", - outline); - - gtk_object_set_data (GTK_OBJECT (highlight), "tl", tl); - gtk_object_set_data (GTK_OBJECT (highlight), "tr", tr); - gtk_object_set_data (GTK_OBJECT (highlight), "bl", bl); - gtk_object_set_data (GTK_OBJECT (highlight), "br", br); - gtk_object_set_data (GTK_OBJECT (highlight), "sl", sl); - gtk_object_set_data (GTK_OBJECT (highlight), "sr", sr); - gtk_object_set_data (GTK_OBJECT (highlight), "st", st); - gtk_object_set_data (GTK_OBJECT (highlight), "sb", sb); - - gtk_signal_connect (GTK_OBJECT (tl), "event", - GTK_SIGNAL_FUNC (tl_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (tr), "event", - GTK_SIGNAL_FUNC (tr_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (bl), "event", - GTK_SIGNAL_FUNC (bl_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (br), "event", - GTK_SIGNAL_FUNC (br_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (sl), "event", - GTK_SIGNAL_FUNC (sl_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (sr), "event", - GTK_SIGNAL_FUNC (sr_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (st), "event", - GTK_SIGNAL_FUNC (st_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (sb), "event", - GTK_SIGNAL_FUNC (sb_resize_event_handler), - item); - - gtk_signal_connect (GTK_OBJECT (outline), "event", - GTK_SIGNAL_FUNC (passthrough_event_handler), - item); - - } else { - - gnome_canvas_item_set (highlight, "x", x, "y", y, NULL); - - outline = - gtk_object_get_data (GTK_OBJECT (highlight), "outline"); - - tl = gtk_object_get_data (GTK_OBJECT (highlight), "tl"); - tr = gtk_object_get_data (GTK_OBJECT (highlight), "tr"); - bl = gtk_object_get_data (GTK_OBJECT (highlight), "bl"); - br = gtk_object_get_data (GTK_OBJECT (highlight), "br"); - sl = gtk_object_get_data (GTK_OBJECT (highlight), "sl"); - sr = gtk_object_get_data (GTK_OBJECT (highlight), "sr"); - st = gtk_object_get_data (GTK_OBJECT (highlight), "st"); - sb = gtk_object_get_data (GTK_OBJECT (highlight), "sb"); - - gnome_canvas_item_set (outline, - "x1", -0.5, - "y1", -0.5, - "x2", w + 0.5, "y2", h + 0.5, NULL); - - gnome_canvas_item_set (tl, - "x1", -1.0, - "y1", -1.0, - "x2", +1.0, "y2", +1.0, NULL); - - gnome_canvas_item_set (tr, - "x1", w - 1.0, - "y1", -1.0, - "x2", w + 1.0, "y2", +1.0, NULL); - - gnome_canvas_item_set (bl, - "x1", -1.0, - "y1", h - 1.0, - "x2", +1.0, "y2", h + 1.0, NULL); - - gnome_canvas_item_set (br, - "x1", w - 1.0, - "y1", h - 1.0, - "x2", w + 1.0, "y2", h + 1.0, NULL); - - gnome_canvas_item_set (sl, - "x1", -1.0, - "y1", h / 2.0 - 1.0, - "x2", +1.0, "y2", h / 2.0 + 1.0, NULL); - - gnome_canvas_item_set (sr, - "x1", w - 1.0, - "y1", h / 2.0 - 1.0, - "x2", w + 1.0, - "y2", h / 2.0 + 1.0, NULL); - - gnome_canvas_item_set (st, - "x1", w / 2.0 - 1.0, - "y1", -1.0, - "x2", w / 2.0 + 1.0, "y2", +1.0, NULL); - - gnome_canvas_item_set (sb, - "x1", w / 2.0 - 1.0, - "y1", h - 1.0, - "x2", w / 2.0 + 1.0, - "y2", h + 1.0, NULL); - - gnome_canvas_item_show (highlight); - - } - - gnome_canvas_item_raise_to_top (highlight); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Create/Update & Display a resizable line highlight. */ -/*---------------------------------------------------------------------------*/ -static void -highlight_resizable_line (GnomeCanvasItem * item) -{ - GnomeCanvasItem *highlight; - gdouble x, y, dx, dy; - GnomeCanvasPoints *points; - GnomeCanvasItem *outline; /* Outline around item */ - GnomeCanvasItem *p1, *p2; /* Handles at endpoints */ - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - highlight = gtk_object_get_data (GTK_OBJECT (item), "highlight"); - - gl_item_get_position_size (item, &x, &y, &dx, &dy); - - points = gnome_canvas_points_new (2); - - if (highlight == NULL) { - - highlight = - gnome_canvas_item_new (gnome_canvas_root - (GNOME_CANVAS (item->canvas)), - gnome_canvas_group_get_type (), "x", - x, "y", y, NULL); - - points->coords[0] = 0.0; - points->coords[1] = 0.0; - points->coords[2] = dx; - points->coords[3] = dy; - outline = - gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_line_get_type (), - "points", points, - "width_pixels", 3, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), NULL); - - p1 = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", -1.0, - "y1", -1.0, - "x2", +1.0, - "y2", +1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - p2 = gnome_canvas_item_new (GNOME_CANVAS_GROUP (highlight), - gnome_canvas_rect_get_type (), - "x1", dx - 1.0, - "y1", dy - 1.0, - "x2", dx + 1.0, - "y2", dy + 1.0, - "fill_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (255, 255, 255, - 255), NULL); - - gtk_object_set_data (GTK_OBJECT (item), "highlight", highlight); - - gtk_object_set_data (GTK_OBJECT (highlight), "outline", - outline); - - gtk_object_set_data (GTK_OBJECT (highlight), "p1", p1); - gtk_object_set_data (GTK_OBJECT (highlight), "p2", p2); - - gtk_signal_connect (GTK_OBJECT (outline), "event", - GTK_SIGNAL_FUNC (passthrough_event_handler), - item); - - gtk_signal_connect (GTK_OBJECT (p1), "event", - GTK_SIGNAL_FUNC (p1_resize_event_handler), - item); - gtk_signal_connect (GTK_OBJECT (p2), "event", - GTK_SIGNAL_FUNC (p2_resize_event_handler), - item); - - } else { - - gnome_canvas_item_set (highlight, "x", x, "y", y, NULL); - - outline = - gtk_object_get_data (GTK_OBJECT (highlight), "outline"); - - p1 = gtk_object_get_data (GTK_OBJECT (highlight), "p1"); - p2 = gtk_object_get_data (GTK_OBJECT (highlight), "p2"); - - points->coords[0] = 0.0; - points->coords[1] = 0.0; - points->coords[2] = dx; - points->coords[3] = dy; - gnome_canvas_item_set (outline, "points", points, NULL); - - gnome_canvas_item_set (p1, - "x1", -1.0, - "y1", -1.0, - "x2", +1.0, "y2", +1.0, NULL); - - gnome_canvas_item_set (p2, - "x1", dx - 1.0, - "y1", dy - 1.0, - "x2", dx + 1.0, "y2", dy + 1.0, NULL); - - gnome_canvas_item_show (highlight); - - } - - gnome_canvas_points_free (points); - - gnome_canvas_item_raise_to_top (highlight); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Create/Update & Display a simple box highlight. */ -/*---------------------------------------------------------------------------*/ -static void -highlight_simple (GnomeCanvasItem * item) -{ - GnomeCanvasItem *highlight; - gdouble x1, y1, x2, y2; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - highlight = gtk_object_get_data (GTK_OBJECT (item), "highlight"); - - gl_item_get_bounds (item, &x1, &y1, &x2, &y2); - - if (highlight == NULL) { - - highlight = - gnome_canvas_item_new (gnome_canvas_root - (GNOME_CANVAS (item->canvas)), - gnome_canvas_rect_get_type (), "x1", - x1 - 0.5, "y1", y1 - 0.5, "x2", - x2 + 0.5, "y2", y2 + 0.5, - "width_pixels", 2, - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, - 255), NULL); - - gtk_object_set_data (GTK_OBJECT (item), "highlight", highlight); - - gtk_signal_connect (GTK_OBJECT (highlight), "event", - GTK_SIGNAL_FUNC (passthrough_event_handler), - item); - - } else { - - gnome_canvas_item_set (highlight, - "x1", x1 - 0.5, - "y1", y1 - 0.5, - "x2", x2 + 0.5, - "y2", y2 + 0.5, - "width_pixels", 2, - "outline_color_rgba", - GNOME_CANVAS_COLOR_A (0, 0, 255, 255), - NULL); - - gnome_canvas_item_show (highlight); - - } - - gnome_canvas_item_raise_to_top (highlight); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Top-left" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -tl_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble x2, y2; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to bottom-right corner */ - x2 = x + w; - y2 = y + h; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = MIN (event->button.x, x2 - MIN_ITEM_SIZE); - y = MIN (event->button.y, y2 - MIN_ITEM_SIZE); - w = MAX (x2 - event->button.x, MIN_ITEM_SIZE); - h = MAX (y2 - event->button.y, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = MIN (event->button.x, x2 - MIN_ITEM_SIZE); - y = MIN (event->button.y, y2 - MIN_ITEM_SIZE); - w = MAX (x2 - event->button.x, MIN_ITEM_SIZE); - h = MAX (y2 - event->button.y, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Top-right" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -tr_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble x1, y2; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to bottom-left corner */ - x1 = x; - y2 = y + h; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = x1; - y = MIN (event->button.y, y2 - MIN_ITEM_SIZE); - w = MAX (event->button.x - x1, MIN_ITEM_SIZE); - h = MAX (y2 - event->button.y, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = x1; - y = MIN (event->button.y, y2 - MIN_ITEM_SIZE); - w = MAX (event->button.x - x1, MIN_ITEM_SIZE); - h = MAX (y2 - event->button.y, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Bottom-left" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -bl_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble x2, y1; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to top-right corner */ - x2 = x + w; - y1 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = MIN (event->button.x, x2 - MIN_ITEM_SIZE); - y = y1; - w = MAX (x2 - event->button.x, MIN_ITEM_SIZE); - h = MAX (event->button.y - y1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = MIN (event->button.x, x2 - MIN_ITEM_SIZE); - y = y1; - w = MAX (x2 - event->button.x, MIN_ITEM_SIZE); - h = MAX (event->button.y - y1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Bottom-right" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -br_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble x1, y1; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to top-left corner */ - x1 = x; - y1 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = x1; - y = y1; - w = MAX (event->button.x - x1, MIN_ITEM_SIZE); - h = MAX (event->button.y - y1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = x1; - y = y1; - w = MAX (event->button.x - x1, MIN_ITEM_SIZE); - h = MAX (event->button.y - y1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Left-side" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -sl_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble x2; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to right side */ - x2 = x + w; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = MIN (event->button.x, x2 - MIN_ITEM_SIZE); - w = MAX (x2 - event->button.x, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = MIN (event->button.x, x2 - MIN_ITEM_SIZE); - w = MAX (x2 - event->button.x, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Right-side" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -sr_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble x1; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to left side */ - x1 = x; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = x1; - w = MAX (event->button.x - x1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = x1; - w = MAX (event->button.x - x1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Top-side" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -st_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble y2; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to bottom-right corner */ - y2 = y + h; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - y = MIN (event->button.y, y2 - MIN_ITEM_SIZE); - h = MAX (y2 - event->button.y, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - y = MIN (event->button.y, y2 - MIN_ITEM_SIZE); - h = MAX (y2 - event->button.y, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Bottom-side" Resize event handler. */ -/*---------------------------------------------------------------------------*/ -static int -sb_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, w, h; - static gdouble y1; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &w, &h); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to top side */ - y1 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - y = y1; - h = MAX (event->button.y - y1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - y = y1; - h = MAX (event->button.y - y1, MIN_ITEM_SIZE); - gl_item_set_position_size (item, x, y, w, h); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Resize "P1" event handler. */ -/*---------------------------------------------------------------------------*/ -static int -p1_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, dx, dy; - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &dx, &dy); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to P2 */ - x0 = x + dx; - y0 = y + dy; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = x0; - y = y0; - dx = (event->button.x - x0); - dy = (event->button.y - y0); - gl_item_set_position_size (item, x, y, dx, dy); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = x0; - y = y0; - dx = (event->button.x - x0); - dy = (event->button.y - y0); - gl_item_set_position_size (item, x, y, dx, dy); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Resize "P2" event handler. */ -/*---------------------------------------------------------------------------*/ -static int -p2_resize_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - gdouble x, y, dx, dy; - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glDisplay *display; - GdkCursor *cursor; - - item = GNOME_CANVAS_ITEM (data); - gl_item_get_position_size (item, &x, &y, &dx, &dy); - display = gl_item_get_display (item); - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gnome_canvas_item_grab (handle_item, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, event->button.time); - /* Anchor to P1 */ - x0 = x; - y0 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gnome_canvas_item_ungrab (handle_item, - event->button.time); - x = x0; - y = y0; - dx = (event->button.x - x0); - dy = (event->button.y - y0); - gl_item_set_position_size (item, x, y, dx, dy); - gl_display_select_item (display, item); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - x = x0; - y = y0; - dx = (event->button.x - x0); - dy = (event->button.y - y0); - gl_item_set_position_size (item, x, y, dx, dy); - gl_display_select_item (display, item); - return TRUE; - } else { - return FALSE; - } - - case GDK_ENTER_NOTIFY: - cursor = gdk_cursor_new (GDK_CROSSHAIR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - case GDK_LEAVE_NOTIFY: - cursor = gdk_cursor_new (GDK_LEFT_PTR); - gdk_window_set_cursor (display->canvas->window, cursor); - gdk_cursor_destroy (cursor); - return TRUE; - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Passthrough event handler. */ -/*---------------------------------------------------------------------------*/ -static int -passthrough_event_handler (GnomeCanvasItem * handle_item, - GdkEvent * event, - gpointer data) -{ - static GnomeCanvasItem *item; - static glDisplay *display; - - item = GNOME_CANVAS_ITEM (data); - display = gl_item_get_display (item); - return gl_display_item_event_handler (item, event, display); - -} diff --git a/glabels1/src/highlight.h b/glabels1/src/highlight.h deleted file mode 100644 index a0aaa0e0..00000000 --- a/glabels1/src/highlight.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * highlight.h: GLabels Resizable Highlight module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __HIGHLIGHT_H__ -#define __HIGHLIGHT_H__ - -#include - -typedef enum { - GL_HIGHLIGHT_BOX_RESIZABLE, - GL_HIGHLIGHT_ELLIPSE_RESIZABLE, - GL_HIGHLIGHT_LINE_RESIZABLE, - GL_HIGHLIGHT_SIMPLE, -} glHighlightStyle; - -extern void gl_highlight (GnomeCanvasItem * item, glHighlightStyle style); - -#endif diff --git a/glabels1/src/item.c b/glabels1/src/item.c deleted file mode 100644 index e72a354c..00000000 --- a/glabels1/src/item.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item.c: GLabels canvas item wrapper module module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "item.h" - -#include "display.h" -#include "item_text.h" -#include "item_box.h" -#include "item_line.h" -#include "item_ellipse.h" -#include "item_image.h" -#include "item_barcode.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -/*****************************************************************************/ -/* Create new canvas item from object. */ -/*****************************************************************************/ -GnomeCanvasItem * -gl_item_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasItem *item; - - g_return_val_if_fail (object != NULL, NULL); - g_return_val_if_fail (GL_IS_DISPLAY (display), NULL); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - item = gl_item_text_new (object, display); - break; - case GL_LABEL_OBJECT_BOX: - item = gl_item_box_new (object, display); - break; - case GL_LABEL_OBJECT_LINE: - item = gl_item_line_new (object, display); - break; - case GL_LABEL_OBJECT_ELLIPSE: - item = gl_item_ellipse_new (object, display); - break; - case GL_LABEL_OBJECT_IMAGE: - item = gl_item_image_new (object, display); - break; - case GL_LABEL_OBJECT_BARCODE: - item = gl_item_barcode_new (object, display); - break; - default: - item = NULL; - WARN ("Invalid label object type."); /* Should not happen! */ - break; - } - - return item; -} - -/*****************************************************************************/ -/* Free a canvas item and all our associated data. */ -/*****************************************************************************/ -void -gl_item_free (GnomeCanvasItem ** item) -{ - glLabelObject *object; - GtkWidget *menu; - GnomeCanvasItem *highlight; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (*item)); - - menu = gtk_object_get_data (GTK_OBJECT (*item), "object_menu"); - object = gtk_object_get_data (GTK_OBJECT (*item), "label_object"); - highlight = gtk_object_get_data (GTK_OBJECT (*item), "highlight"); - - gtk_menu_popdown (GTK_MENU (menu)); - gtk_widget_unref (GTK_WIDGET (menu)); - - gl_label_object_free (&object); - - if (highlight != NULL) { - gtk_object_destroy (GTK_OBJECT (highlight)); - } - - gtk_object_destroy (GTK_OBJECT (*item)); - *item = NULL; -} - -/*****************************************************************************/ -/* Get position and size of object. */ -/*****************************************************************************/ -void -gl_item_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - gl_item_text_get_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_BOX: - gl_item_box_get_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_LINE: - gl_item_line_get_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_ELLIPSE: - gl_item_ellipse_get_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_IMAGE: - gl_item_image_get_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_BARCODE: - gl_item_barcode_get_position_size (item, x, y, w, h); - break; - default: - WARN ("Invalid label object type."); /* Should not happen! */ - break; - } - -} - -/*****************************************************************************/ -/* Get position and size of object. */ -/*****************************************************************************/ -void -gl_item_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - gl_item_text_set_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_BOX: - gl_item_box_set_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_LINE: - gl_item_line_set_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_ELLIPSE: - gl_item_ellipse_set_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_IMAGE: - gl_item_image_set_position_size (item, x, y, w, h); - break; - case GL_LABEL_OBJECT_BARCODE: - gl_item_barcode_set_position_size (item, x, y, w, h); - break; - default: - WARN ("Invalid label object type."); /* Should not happen! */ - break; - } - -} - -/*****************************************************************************/ -/* Get object associated with canvas item. */ -/*****************************************************************************/ -glLabelObject * -gl_item_get_object (GnomeCanvasItem * item) -{ - g_return_val_if_fail (GNOME_IS_CANVAS_ITEM (item), NULL); - - return gtk_object_get_data (GTK_OBJECT (item), "label_object"); -} - -/*****************************************************************************/ -/* Get display associated with canvas item. */ -/*****************************************************************************/ -glDisplay * -gl_item_get_display (GnomeCanvasItem * item) -{ - g_return_val_if_fail (GNOME_IS_CANVAS_ITEM (item), NULL); - - return gtk_object_get_data (GTK_OBJECT (item), "display"); -} - -/*****************************************************************************/ -/* Get menu associated with canvas item. */ -/*****************************************************************************/ -GtkWidget * -gl_item_get_menu (GnomeCanvasItem * item) -{ - g_return_val_if_fail (GNOME_IS_CANVAS_ITEM (item), NULL); - - return gtk_object_get_data (GTK_OBJECT (item), "object_menu"); -} - -/*****************************************************************************/ -/* Turn on item highlight. */ -/*****************************************************************************/ -void -gl_item_highlight (GnomeCanvasItem * item) -{ - glLabelObject *object; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - gl_item_text_highlight (item); - break; - case GL_LABEL_OBJECT_BOX: - gl_item_box_highlight (item); - break; - case GL_LABEL_OBJECT_LINE: - gl_item_line_highlight (item); - break; - case GL_LABEL_OBJECT_ELLIPSE: - gl_item_ellipse_highlight (item); - break; - case GL_LABEL_OBJECT_IMAGE: - gl_item_image_highlight (item); - break; - case GL_LABEL_OBJECT_BARCODE: - gl_item_barcode_highlight (item); - break; - default: - WARN ("Invalid label object type."); /* Should not happen! */ - break; - } - -} - -/*****************************************************************************/ -/* Turn off item highlight. */ -/*****************************************************************************/ -void -gl_item_unhighlight (GnomeCanvasItem * item) -{ - GnomeCanvasItem *sel_box; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - if (item != NULL) { - - sel_box = gtk_object_get_data (GTK_OBJECT (item), "highlight"); - gnome_canvas_item_hide (sel_box); - - } -} - -/*****************************************************************************/ -/* Get item bounds using appropriate custom function. */ -/*****************************************************************************/ -void -gl_item_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ - glLabelObject *object; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - gl_item_text_get_bounds (item, x1, y1, x2, y2); - break; - case GL_LABEL_OBJECT_BOX: - gl_item_box_get_bounds (item, x1, y1, x2, y2); - break; - case GL_LABEL_OBJECT_LINE: - gl_item_line_get_bounds (item, x1, y1, x2, y2); - break; - case GL_LABEL_OBJECT_ELLIPSE: - gl_item_ellipse_get_bounds (item, x1, y1, x2, y2); - break; - case GL_LABEL_OBJECT_IMAGE: - gl_item_image_get_bounds (item, x1, y1, x2, y2); - break; - case GL_LABEL_OBJECT_BARCODE: - gl_item_barcode_get_bounds (item, x1, y1, x2, y2); - break; - default: - WARN ("Invalid label object type."); /* Should not happen! */ - break; - } - -} - -/*****************************************************************************/ -/* launch apropriate edit dialog for item/object */ -/*****************************************************************************/ -void -gl_item_edit_dialog (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - - g_return_if_fail (GNOME_IS_CANVAS_ITEM (item)); - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - gl_item_text_edit_dialog (item); - break; - case GL_LABEL_OBJECT_BOX: - gl_item_box_edit_dialog (item); - break; - case GL_LABEL_OBJECT_LINE: - gl_item_line_edit_dialog (item); - break; - case GL_LABEL_OBJECT_ELLIPSE: - gl_item_ellipse_edit_dialog (item); - break; - case GL_LABEL_OBJECT_IMAGE: - gl_item_image_edit_dialog (item); - break; - case GL_LABEL_OBJECT_BARCODE: - gl_item_barcode_edit_dialog (item); - break; - default: - WARN ("Invalid label object type."); /* Should not happen! */ - break; - } - - /* Update highlight of item */ - gl_item_highlight (item); -} - -/*****************************************************************************/ -/* Return apropos item create mode cursor for given object type. */ -/*****************************************************************************/ -GdkCursor * -gl_item_get_create_cursor (glLabelObjectType type) -{ - switch (type) { - - case GL_LABEL_OBJECT_TEXT: - return gl_item_text_get_create_cursor (); - - case GL_LABEL_OBJECT_BOX: - return gl_item_box_get_create_cursor (); - - case GL_LABEL_OBJECT_LINE: - return gl_item_line_get_create_cursor (); - - case GL_LABEL_OBJECT_ELLIPSE: - return gl_item_ellipse_get_create_cursor (); - - case GL_LABEL_OBJECT_IMAGE: - return gl_item_image_get_create_cursor (); - - case GL_LABEL_OBJECT_BARCODE: - return gl_item_barcode_get_create_cursor (); - - default: - WARN ("Invalid label object type."); /* Should not happen! */ - return NULL; - - } - -} - -/*****************************************************************************/ -/* Item/object creation canvas event handler. */ -/*****************************************************************************/ -gint -gl_item_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - glDisplay * display) -{ - switch (display->create_type) { - - case GL_LABEL_OBJECT_TEXT: - return gl_item_text_create_event_handler (canvas, event, - display); - - case GL_LABEL_OBJECT_BOX: - return gl_item_box_create_event_handler (canvas, event, - display); - - case GL_LABEL_OBJECT_LINE: - return gl_item_line_create_event_handler (canvas, event, - display); - - case GL_LABEL_OBJECT_ELLIPSE: - return gl_item_ellipse_create_event_handler (canvas, event, - display); - - case GL_LABEL_OBJECT_IMAGE: - return gl_item_image_create_event_handler (canvas, event, - display); - - case GL_LABEL_OBJECT_BARCODE: - return gl_item_barcode_create_event_handler (canvas, event, - display); - - default: - WARN ("Invalid label object type."); /* Should not happen! */ - return FALSE; - - } - -} diff --git a/glabels1/src/item.h b/glabels1/src/item.h deleted file mode 100644 index 23b25f9a..00000000 --- a/glabels1/src/item.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item.h: GLabels canvas item wrapper module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_H__ -#define __ITEM_H__ - -#include - -#include "label.h" -#include "display.h" - -extern GnomeCanvasItem *gl_item_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_free (GnomeCanvasItem ** item); - -extern void gl_item_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern glLabelObject *gl_item_get_object (GnomeCanvasItem * item); - -extern glDisplay *gl_item_get_display (GnomeCanvasItem * item); - -extern GtkWidget *gl_item_get_menu (GnomeCanvasItem * item); - -extern void gl_item_highlight (GnomeCanvasItem * item); - -extern void gl_item_unhighlight (GnomeCanvasItem * item); - -extern void gl_item_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_get_create_cursor (glLabelObjectType type); - -extern gint gl_item_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - glDisplay * display); - -#endif diff --git a/glabels1/src/item_barcode.c b/glabels1/src/item_barcode.c deleted file mode 100644 index e129f33b..00000000 --- a/glabels1/src/item_barcode.c +++ /dev/null @@ -1,656 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_barcode.c: GLabels Barcode Object (canvas item) module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -#include "display.h" -#include "item_barcode.h" -#include "bc.h" - -#include "highlight.h" - -#include "mdi.h" -#include "propertybox.h" -#include "prop_bc_data.h" -#include "prop_bc.h" -#include "prop_bc_style.h" -#include "prop_position.h" - -#include "pixmaps/cursor_barcode.xbm" -#include "pixmaps/cursor_barcode_mask.xbm" - -#ifdef HACKTEXT -#include "gnome-canvas-hacktext.h" -#include -#endif - -#include "debug.h" - -#define Y_FONT_ADJUST (-1.0) /* Adjust font vertical position */ - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GnomeCanvasItem *item; - - /* Page 0 widgets */ - GtkWidget *data_entry; - - /* Page 1 widgets */ - GtkWidget *bcprop; - GtkWidget *style; - - /* Page 2 widgets */ - GtkWidget *position; -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void item_barcode_update (GnomeCanvasItem * item); - -static void changed_cb (glPropertyBox * propertybox); -static void apply_cb (glPropertyBox * propertybox, gint page, - PropertyDialogPassback * data); - -static void draw_barcode (GnomeCanvasItem * item, - glBarcodeStyle style, - guint color, - gboolean text_flag, - gdouble scale, - gchar * digits, - gdouble canvas_scale); - -/*****************************************************************************/ -/* Create a barcode object */ -/*****************************************************************************/ -GnomeCanvasItem * -gl_item_barcode_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasGroup *group; - GnomeCanvasItem *item; - gchar *text; - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_group_get_type (), - "x", object->x, "y", object->y, NULL); - - if (object->arg.barcode.text_node->field_flag) { - text = gl_barcode_default_digits (object->arg.barcode.style); - } else { - text = - gl_text_node_expand (object->arg.barcode.text_node, NULL); - } - draw_barcode (item, - object->arg.barcode.style, - object->arg.barcode.color, - object->arg.barcode.text_flag, - object->arg.barcode.scale, text, display->scale); - g_free (text); - - /* Squirrel away pointers to object and display in the canvas item. */ - gtk_object_set_data (GTK_OBJECT (item), "label_object", object); - gtk_object_set_data (GTK_OBJECT (item), "display", display); - gtk_object_set_data (GTK_OBJECT (item), "highlight", NULL); - - gtk_signal_connect (GTK_OBJECT (item), "event", - GTK_SIGNAL_FUNC (gl_display_item_event_handler), - display); - - gl_display_new_item_menu (item); - - gl_display_set_modified (display); - - return item; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Update a barcode object */ -/*---------------------------------------------------------------------------*/ -static void -item_barcode_update (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - GList *item_list, *li; - gdouble affine[6]; - gchar *text; - - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - item_list = gtk_object_get_data (GTK_OBJECT (item), "item_list"); - for (li = item_list; li != NULL; li = li->next) { - gtk_object_destroy (GTK_OBJECT (li->data)); - } - g_list_free (item_list); - gtk_object_set_data (GTK_OBJECT (item), "item_list", NULL); - - if (object->arg.barcode.text_node->field_flag) { - text = gl_barcode_default_digits (object->arg.barcode.style); - } else { - text = - gl_text_node_expand (object->arg.barcode.text_node, NULL); - } - draw_barcode (item, - object->arg.barcode.style, - object->arg.barcode.color, - object->arg.barcode.text_flag, - object->arg.barcode.scale, text, display->scale); - g_free (text); - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, "x", object->x, "y", object->y, NULL); - - gl_display_set_modified (display); -} - -/*****************************************************************************/ -/* Highlight given canvas item. */ -/*****************************************************************************/ -void -gl_item_barcode_highlight (GnomeCanvasItem * item) -{ - gl_highlight (item, GL_HIGHLIGHT_SIMPLE); -} - -/*****************************************************************************/ -/* Get position and size of object. */ -/*****************************************************************************/ -void -gl_item_barcode_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; - glBarcode *gbc; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - *x = object->x; - *y = object->y; - - gbc = gtk_object_get_data (GTK_OBJECT (item), "bc"); - *w = gbc->width; - *h = gbc->height; - -} - -/*****************************************************************************/ -/* Get position and size of object. */ -/*****************************************************************************/ -void -gl_item_barcode_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - object->x = x; - object->y = y; - - /* Currently ignore w, h */ - - item_barcode_update (item); -} - -/*****************************************************************************/ -/* Get barcode item bounds. */ -/*****************************************************************************/ -void -gl_item_barcode_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ - glBarcode *gbc; - glLabelObject *object; - - gbc = gtk_object_get_data (GTK_OBJECT (item), "bc"); - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - if (gbc == NULL) { - gnome_canvas_item_get_bounds (item, x1, y1, x2, y2); - } else { - *x1 = object->x; - *y1 = object->y; - *x2 = *x1 + gbc->width; - *y2 = *y1 + gbc->height; - } -} - -/*****************************************************************************/ -/* Create and run an edit dialog on a barcode object. */ -/*****************************************************************************/ -void -gl_item_barcode_edit_dialog (GnomeCanvasItem * item) -{ - GtkWidget *dialog; - static PropertyDialogPassback *data = NULL; - glLabelObject *object; - glDisplay *display; - GtkWidget *wvbox; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - /*-----------------------------------------------------------------*/ - /* Build dialog with notebook. */ - /*-----------------------------------------------------------------*/ - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - data->item = item; - - dialog = gl_property_box_new (); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Edit barcode object properties")); - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), data); - - /*---------------------------*/ - /* Data Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), - wvbox, gtk_label_new (_("Data"))); - - data->data_entry = gl_prop_bc_data_new (_("Barcode data"), - object->parent->merge_fields); - gl_prop_bc_data_set_data (GL_PROP_BC_DATA (data->data_entry), - (object->parent->merge_type != GL_MERGE_NONE), - object->arg.barcode.text_node->field_flag, - object->arg.barcode.text_node->data, - object->arg.barcode.text_node->data); - gtk_box_pack_start (GTK_BOX (wvbox), data->data_entry, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->data_entry), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*---------------------------*/ - /* Appearance Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), - wvbox, gtk_label_new (_("Appearance"))); - - /* ------ Begin Barcode Properties Frame ------ */ - data->bcprop = gl_prop_bc_new (_("General")); - gl_prop_bc_set_params (GL_PROP_BC (data->bcprop), - object->arg.barcode.scale, - object->arg.barcode.color); - gtk_box_pack_start (GTK_BOX (wvbox), data->bcprop, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->bcprop), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Barcode Style Frame ------ */ - data->style = gl_prop_bc_style_new (_("Style")); - gl_prop_bc_style_set_params (GL_PROP_BC_STYLE (data->style), - object->arg.barcode.style, - object->arg.barcode.text_flag); - gtk_box_pack_start (GTK_BOX (wvbox), data->style, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->style), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*----------------------------*/ - /* Position Notebook Tab */ - /*----------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), - wvbox, gtk_label_new (_("Position"))); - - /* ------ Position Frame ------ */ - data->position = gl_prop_position_new (_("Position")); - gl_prop_position_set_params (GL_PROP_POSITION (data->position), - object->x, object->y, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->position, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->position), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*-----------------------------------------------------------------*/ - /* Run dialog, and update state of object if "Applied." */ - /*-----------------------------------------------------------------*/ - gtk_widget_show_all (GTK_WIDGET (dialog)); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*---------------------------------------------------------------------------*/ -static void -changed_cb (glPropertyBox * propertybox) -{ - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" callback. */ -/*---------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint page, - PropertyDialogPassback * data) -{ - glLabelObject *object; - glDisplay *display; - gboolean flag; - gchar *tmp1, *tmp2; - - object = gtk_object_get_data (GTK_OBJECT (data->item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - switch (page) { - - case 0: - /* ------- Get updated digit data ------ */ - gl_prop_bc_data_get_data (GL_PROP_BC_DATA (data->data_entry), - &flag, &tmp1, &tmp2); - object->arg.barcode.text_node->field_flag = flag; - if (!flag) { - object->arg.barcode.text_node->data = tmp1; - g_free (tmp2); - } else { - object->arg.barcode.text_node->data = tmp2; - g_free (tmp1); - } - break; - - case 1: - /* ------- Get updated scale/color ------ */ - gl_prop_bc_get_params (GL_PROP_BC (data->bcprop), - &object->arg.barcode.scale, - &object->arg.barcode.color); - /* ------ Get updated style ------ */ - gl_prop_bc_style_get_params (GL_PROP_BC_STYLE (data->style), - &object->arg.barcode.style, - &object->arg.barcode.text_flag); - break; - - case 2: - /* ------ get updated position ------ */ - gl_prop_position_get_position (GL_PROP_POSITION - (data->position), &object->x, - &object->y); - break; - - default: - return; - } - - /* ------ Udate state of object ------ */ - item_barcode_update (data->item); - gl_display_select_item (display, data->item); - -} - -/*****************************************************************************/ -/* Return apropos cursor for create object mode. */ -/*****************************************************************************/ -GdkCursor * -gl_item_barcode_get_create_cursor (void) -{ - static GdkCursor *cursor = NULL; - GdkPixmap *pixmap_data, *pixmap_mask; - GdkColor fg = { 0, 0, 0, 0 }; - GdkColor bg = { 0, 65535, 65535, 65535 }; - - if (!cursor) { - pixmap_data = gdk_bitmap_create_from_data (NULL, - cursor_barcode_bits, - cursor_barcode_width, - cursor_barcode_height); - pixmap_mask = gdk_bitmap_create_from_data (NULL, - cursor_barcode_mask_bits, - cursor_barcode_mask_width, - cursor_barcode_mask_height); - cursor = - gdk_cursor_new_from_pixmap (pixmap_data, pixmap_mask, &fg, - &bg, cursor_barcode_x_hot, - cursor_barcode_y_hot); - } - - return cursor; -} - -/*****************************************************************************/ -/* Canvas event handler (barcode mode) */ -/*****************************************************************************/ -int -gl_item_barcode_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - gdouble x, y; - glLabelObject *object; - GnomeCanvasItem *item; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - object = - gl_label_object_new (display->label, - GL_LABEL_OBJECT_BARCODE); - object->x = x; - object->y = y; - object->arg.barcode.text_node = - gl_text_node_new_from_text ("123456789"); - object->arg.barcode.style = GL_BARCODE_STYLE_POSTNET; - object->arg.barcode.color = - GNOME_CANVAS_COLOR_A (0, 0, 0, 255); - object->arg.barcode.text_flag = TRUE; - object->arg.barcode.scale = 1.0; - item = gl_item_barcode_new (object, display); - gl_display_add_item (display, item); - gl_display_unselect_all (display); - gl_display_select_item (display, item); - gl_display_arrow_mode (display); - return TRUE; - - default: - return FALSE; - } - - default: - return FALSE; - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw barcode to canvas item (group). */ -/*---------------------------------------------------------------------------*/ -static void -draw_barcode (GnomeCanvasItem * group, - glBarcodeStyle style, - guint color, - gboolean text_flag, - gdouble scale, - gchar * digits, - gdouble canvas_scale) -{ - glBarcodeLine *line; - glBarcodeChar *bchar; - glBarcode *gbc; - GList *li; - GnomeCanvasItem *item; - GList *item_list = NULL; - GnomeCanvasPoints *points; - gchar *cstring; -#ifdef HACKTEXT - GnomeFont *font; - GnomeGlyphList *glyphlist; - gdouble y_offset; -#else - GdkFont *gdk_font; - GnomeDisplayFont *display_font; -#endif - - gbc = gtk_object_get_data (GTK_OBJECT (group), "bc"); - gl_barcode_free (&gbc); - gbc = gl_barcode (style, text_flag, scale, digits); - if (gbc == NULL) { -#ifdef HACKTEXT - font = gnome_font_new_closest (GL_BARCODE_FONT_FAMILY, - GL_BARCODE_FONT_WEIGHT, - FALSE, 10.0); - cstring = _("Invalid barcode"); - glyphlist = gnome_glyphlist_from_text_sized_dumb (font, - color, - 0.0, 0.0, - cstring, - strlen - (cstring)); - y_offset = 10.0 - gnome_font_get_descender (font); - item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (group), - gnome_canvas_hacktext_get_type (), - "x", 0.0, - "y", y_offset, - "glyphlist", glyphlist, NULL); -#else - display_font = gnome_get_display_font (GL_BARCODE_FONT_FAMILY, - GL_BARCODE_FONT_WEIGHT, - FALSE, - 10.0, canvas_scale); - gdk_font = gnome_display_font_get_gdk_font (display_font); - item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (group), - gnome_canvas_text_get_type (), - "x", 0.0, - "y", 0.0, - "text", _("Invalid barcode"), - "font_gdk", gdk_font, - "anchor", GTK_ANCHOR_NW, - "fill_color_rgba", color, NULL); -#endif - item_list = g_list_prepend (item_list, item); - } else { - - points = gnome_canvas_points_new (2); - for (li = gbc->lines; li != NULL; li = li->next) { - line = (glBarcodeLine *) li->data; - - points->coords[0] = line->x; - points->coords[1] = line->y; - points->coords[2] = line->x; - points->coords[3] = line->y + line->length; - - item = - gnome_canvas_item_new (GNOME_CANVAS_GROUP (group), - gnome_canvas_line_get_type - (), "points", points, - "width_units", line->width, - "fill_color_rgba", color, - NULL); - item_list = g_list_prepend (item_list, item); - } - gnome_canvas_points_free (points); - - for (li = gbc->chars; li != NULL; li = li->next) { - bchar = (glBarcodeChar *) li->data; - -#ifdef HACKTEXT - font = gnome_font_new_closest (GL_BARCODE_FONT_FAMILY, - GL_BARCODE_FONT_WEIGHT, - FALSE, bchar->fsize); - glyphlist = gnome_glyphlist_from_text_sized_dumb (font, - color, - 0.0, - 0.0, - & - (bchar-> - c), - 1); - y_offset = - bchar->fsize - gnome_font_get_descender (font); - item = - gnome_canvas_item_new (GNOME_CANVAS_GROUP (group), - gnome_canvas_hacktext_get_type - (), "x", bchar->x, "y", - bchar->y + y_offset, - "glyphlist", glyphlist, - NULL); -#else - display_font = - gnome_get_display_font (GL_BARCODE_FONT_FAMILY, - GL_BARCODE_FONT_WEIGHT, - FALSE, bchar->fsize, - canvas_scale); - gdk_font = - gnome_display_font_get_gdk_font (display_font); - cstring = g_strdup_printf ("%c", bchar->c); - item = - gnome_canvas_item_new (GNOME_CANVAS_GROUP (group), - gnome_canvas_text_get_type - (), "x", bchar->x, "y", - bchar->y + Y_FONT_ADJUST, - "text", cstring, "font_gdk", - gdk_font, "anchor", - GTK_ANCHOR_NW, - "fill_color_rgba", color, - NULL); - g_free (cstring); -#endif - item_list = g_list_prepend (item_list, item); - - } - - } - - /* attach item list to group, so we can get at these again */ - gtk_object_set_data (GTK_OBJECT (group), "item_list", item_list); - - gtk_object_set_data (GTK_OBJECT (group), "bc", gbc); - -} diff --git a/glabels1/src/item_barcode.h b/glabels1/src/item_barcode.h deleted file mode 100644 index d18d6ba2..00000000 --- a/glabels1/src/item_barcode.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_barcode.h: GLabels Barcode Object (canvas item) module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_BARCODE_H__ -#define __ITEM_BARCODE_H__ - -#include - -#include "label.h" - -extern GnomeCanvasItem *gl_item_barcode_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_barcode_highlight (GnomeCanvasItem * item); - -extern void gl_item_barcode_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_barcode_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern void gl_item_barcode_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_barcode_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_barcode_get_create_cursor (void); - -extern gint gl_item_barcode_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data); - -#endif diff --git a/glabels1/src/item_box.c b/glabels1/src/item_box.c deleted file mode 100644 index 80200947..00000000 --- a/glabels1/src/item_box.c +++ /dev/null @@ -1,489 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_box.c: GLabels Box Object (canvas item) module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -#include "display.h" -#include "item_box.h" - -#include "highlight.h" - -#include "mdi.h" -#include "propertybox.h" -#include "prop_line.h" -#include "prop_fill.h" -#include "prop_size.h" -#include "prop_position.h" - -#include "pixmaps/cursor_box.xbm" -#include "pixmaps/cursor_box_mask.xbm" - -#include "debug.h" - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GnomeCanvasItem *item; - gboolean keep_aspect_ratio_flag; - - /* Page 0 widgets */ - GtkWidget *line; - GtkWidget *fill; - - /* Page 1 widgets */ - GtkWidget *position; - GtkWidget *size; -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void item_box_update (GnomeCanvasItem * item); - -static void changed_cb (glPropertyBox * propertybox); -static void apply_cb (glPropertyBox * propertybox, - gint page, PropertyDialogPassback * data); - -/*****************************************************************************/ -/* Create a box object */ -/*****************************************************************************/ -GnomeCanvasItem * -gl_item_box_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasGroup *group; - GnomeCanvasItem *item; - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_rect_get_type (), - "x1", object->x, - "y1", object->y, - "x2", object->x + object->arg.box.w, - "y2", object->y + object->arg.box.h, - "width_units", object->arg.box.line_width, - "outline_color_rgba", - object->arg.box.line_color, - "fill_color_rgba", - object->arg.box.fill_color, NULL); - - /* Squirrel away pointers to object and display in the canvas item. */ - gtk_object_set_data (GTK_OBJECT (item), "label_object", object); - gtk_object_set_data (GTK_OBJECT (item), "display", display); - gtk_object_set_data (GTK_OBJECT (item), "highlight", NULL); - - gtk_signal_connect (GTK_OBJECT (item), "event", - GTK_SIGNAL_FUNC (gl_display_item_event_handler), - display); - - gl_display_new_item_menu (item); - - gl_display_set_modified (display); - - return item; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Update a box object */ -/*---------------------------------------------------------------------------*/ -static void -item_box_update (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - gdouble affine[6]; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, - "x1", object->x, - "y1", object->y, - "x2", object->x + object->arg.box.w, - "y2", object->y + object->arg.box.h, - "width_units", object->arg.box.line_width, - "outline_color_rgba", object->arg.box.line_color, - "fill_color_rgba", object->arg.box.fill_color, - NULL); - - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - gl_display_set_modified (display); -} - -/*****************************************************************************/ -/* Return a selection canvas item/group for given item */ -/*****************************************************************************/ -void -gl_item_box_highlight (GnomeCanvasItem * item) -{ - gl_highlight (item, GL_HIGHLIGHT_BOX_RESIZABLE); -} - -/*****************************************************************************/ -/* Get position and size of object. */ -/*****************************************************************************/ -void -gl_item_box_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - *x = object->x; - *y = object->y; - - *w = object->arg.box.w; - *h = object->arg.box.h; -} - -/*****************************************************************************/ -/* Get position and size of object. */ -/*****************************************************************************/ -void -gl_item_box_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - object->x = x; - object->y = y; - - object->arg.box.w = w; - object->arg.box.h = h; - - item_box_update (item); -} - -/*****************************************************************************/ -/* Get box item bounds. */ -/*****************************************************************************/ -void -gl_item_box_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ - gnome_canvas_item_get_bounds (item, x1, y1, x2, y2); -} - -/*****************************************************************************/ -/* Create and run an edit dialog on a box object. */ -/*****************************************************************************/ -void -gl_item_box_edit_dialog (GnomeCanvasItem * item) -{ - GtkWidget *dialog; - static PropertyDialogPassback *data = NULL; - glLabelObject *object; - glDisplay *display; - GtkWidget *wvbox; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - /*-----------------------------------------------------------------*/ - /* Build dialog with notebook. */ - /*-----------------------------------------------------------------*/ - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - data->item = item; - - dialog = gl_property_box_new (); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Edit box object properties")); - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), data); - - /*---------------------------*/ - /* Appearance Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Appearance"))); - - /* ------ Line box ------ */ - data->line = gl_prop_line_new (_("Outline")); - gl_prop_line_set_params (GL_PROP_LINE (data->line), - object->arg.box.line_width, - object->arg.box.line_color); - gtk_box_pack_start (GTK_BOX (wvbox), data->line, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->line), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Fill box ------ */ - data->fill = gl_prop_fill_new (_("Fill")); - gl_prop_fill_set_params (GL_PROP_FILL (data->fill), - object->arg.box.fill_color); - gtk_box_pack_start (GTK_BOX (wvbox), data->fill, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->fill), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*----------------------------*/ - /* Position/Size Notebook Tab */ - /*----------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Position/Size"))); - - /* ------ Position Frame ------ */ - data->position = gl_prop_position_new (_("Position")); - gl_prop_position_set_params (GL_PROP_POSITION (data->position), - object->x, object->y, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->position, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->position), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Size Frame ------ */ - data->size = gl_prop_size_new (_("Size")); - gl_prop_size_set_params (GL_PROP_SIZE (data->size), - object->arg.box.w, object->arg.box.h, - data->keep_aspect_ratio_flag, - display->label->width, display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->size, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->size), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*-----------------------------------------------------------------*/ - /* Run dialog, and update state of object if "Applied." */ - /*-----------------------------------------------------------------*/ - gtk_widget_show_all (GTK_WIDGET (dialog)); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*---------------------------------------------------------------------------*/ -static void -changed_cb (glPropertyBox * propertybox) -{ - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" callback. */ -/*---------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint page, - PropertyDialogPassback * data) -{ - glLabelObject *object; - glDisplay *display; - - object = gtk_object_get_data (GTK_OBJECT (data->item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - switch (page) { - - case 0: - /* ------- Get updated line width & color ------ */ - gl_prop_line_get_params (GL_PROP_LINE (data->line), - &object->arg.box.line_width, - &object->arg.box.line_color); - /* ------- Get updated fill color ------ */ - gl_prop_fill_get_params (GL_PROP_FILL (data->fill), - &object->arg.box.fill_color); - break; - - case 1: - /* ------ get updated position ------ */ - gl_prop_position_get_position (GL_PROP_POSITION - (data->position), &object->x, - &object->y); - - /* ------ get updated size ------ */ - gl_prop_size_get_size (GL_PROP_SIZE (data->size), - &object->arg.box.w, &object->arg.box.h, - &data->keep_aspect_ratio_flag); - break; - - default: - return; - } - - /* ------ Udate state of object ------ */ - item_box_update (data->item); - gl_display_select_item (display, data->item); - -} - -/*****************************************************************************/ -/* Return apropos cursor for create object mode. */ -/*****************************************************************************/ -GdkCursor * -gl_item_box_get_create_cursor (void) -{ - static GdkCursor *cursor = NULL; - GdkPixmap *pixmap_data, *pixmap_mask; - GdkColor fg = { 0, 0, 0, 0 }; - GdkColor bg = { 0, 65535, 65535, 65535 }; - - if (!cursor) { - pixmap_data = gdk_bitmap_create_from_data (NULL, - cursor_box_bits, - cursor_box_width, - cursor_box_height); - pixmap_mask = gdk_bitmap_create_from_data (NULL, - cursor_box_mask_bits, - cursor_box_mask_width, - cursor_box_mask_height); - cursor = - gdk_cursor_new_from_pixmap (pixmap_data, pixmap_mask, &fg, - &bg, cursor_box_x_hot, - cursor_box_y_hot); - } - - return cursor; -} - -/*****************************************************************************/ -/* Canvas event handler (box mode) */ -/*****************************************************************************/ -int -gl_item_box_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glLabelObject *object; - glDisplay *display = GL_DISPLAY (data); - gdouble x, y; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gdk_pointer_grab (GTK_WIDGET (display->canvas)->window, - FALSE, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, NULL, event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - object = - gl_label_object_new (display->label, - GL_LABEL_OBJECT_BOX); - object->x = x; - object->y = y; - object->arg.box.w = 0.0; - object->arg.box.h = 0.0; - object->arg.box.line_width = 1.0; - object->arg.box.line_color = - GNOME_CANVAS_COLOR_A (0, 0, 255, 128); - object->arg.box.fill_color = - GNOME_CANVAS_COLOR_A (128, 128, 128, 128); - item = gl_item_box_new (object, display); - x0 = x; - y0 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gdk_pointer_ungrab (event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - if ((x0 == x) && (y0 == y)) { - x = x0 + 36.0; - y = y0 + 36.0; - } - object->x = MIN (x, x0); - object->y = MIN (y, y0); - object->arg.box.w = MAX (x, x0) - MIN (x, x0); - object->arg.box.h = MAX (y, y0) - MIN (y, y0); - object->arg.box.line_color = - GNOME_CANVAS_COLOR_A (0, 0, 0, 255); - object->arg.box.fill_color = - GNOME_CANVAS_COLOR_A (0, 255, 0, 255); - item_box_update (item); - gl_display_add_item (display, item); - gl_display_unselect_all (display); - gl_display_select_item (display, item); - gl_display_arrow_mode (display); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - gnome_canvas_window_to_world (canvas, - event->motion.x, - event->motion.y, &x, &y); - object->x = MIN (x, x0); - object->y = MIN (y, y0); - object->arg.box.w = MAX (x, x0) - MIN (x, x0); - object->arg.box.h = MAX (y, y0) - MIN (y, y0); - item_box_update (item); - return TRUE; - } else { - return FALSE; - } - - default: - return FALSE; - } - -} diff --git a/glabels1/src/item_box.h b/glabels1/src/item_box.h deleted file mode 100644 index 789fce81..00000000 --- a/glabels1/src/item_box.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_box.h: GLabels Box Object (canvas item) module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_BOX_H__ -#define __ITEM_BOX_H__ - -#include - -#include "label.h" - -extern GnomeCanvasItem *gl_item_box_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_box_highlight (GnomeCanvasItem * item); - -extern void gl_item_box_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_box_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern void gl_item_box_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_box_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_box_get_create_cursor (void); - -extern gint gl_item_box_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data); - -#endif diff --git a/glabels1/src/item_ellipse.c b/glabels1/src/item_ellipse.c deleted file mode 100644 index 5a45b487..00000000 --- a/glabels1/src/item_ellipse.c +++ /dev/null @@ -1,493 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_ellipse.c: gLabels Ellipse Object (canvas item) module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -#include "display.h" -#include "item_ellipse.h" - -#include "highlight.h" - -#include "mdi.h" -#include "propertybox.h" -#include "prop_line.h" -#include "prop_fill.h" -#include "prop_size.h" -#include "prop_position.h" - -#include "pixmaps/cursor_ellipse.xbm" -#include "pixmaps/cursor_ellipse_mask.xbm" - -#include "debug.h" - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GnomeCanvasItem *item; - gboolean keep_aspect_ratio_flag; - - /* Page 0 widgets */ - GtkWidget *line; - GtkWidget *fill; - - /* Page 1 widgets */ - GtkWidget *position; - GtkWidget *size; -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void item_ellipse_update (GnomeCanvasItem * item); - -static void changed_cb (glPropertyBox * propertybox); -static void apply_cb (glPropertyBox * propertybox, - gint page, PropertyDialogPassback * data); - -/****************************************************************************/ -/* Create an ellipse object */ -/****************************************************************************/ -GnomeCanvasItem * -gl_item_ellipse_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasGroup *group; - GnomeCanvasItem *item; - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_ellipse_get_type (), - "x1", object->x, - "y1", object->y, - "x2", object->x + object->arg.ellipse.w, - "y2", object->y + object->arg.ellipse.h, - "width_units", - object->arg.ellipse.line_width, - "outline_color_rgba", - object->arg.ellipse.line_color, - "fill_color_rgba", - object->arg.ellipse.fill_color, NULL); - - /* Squirrel away pointers to object and display in the canvas item. */ - gtk_object_set_data (GTK_OBJECT (item), "label_object", object); - gtk_object_set_data (GTK_OBJECT (item), "display", display); - gtk_object_set_data (GTK_OBJECT (item), "highlight", NULL); - - gtk_signal_connect (GTK_OBJECT (item), "event", - GTK_SIGNAL_FUNC (gl_display_item_event_handler), - display); - - gl_display_new_item_menu (item); - - gl_display_set_modified (display); - - return item; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Update a ellipse object */ -/*--------------------------------------------------------------------------*/ -static void -item_ellipse_update (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - gdouble affine[6]; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, - "x1", object->x, - "y1", object->y, - "x2", object->x + object->arg.ellipse.w, - "y2", object->y + object->arg.ellipse.h, - "width_units", object->arg.ellipse.line_width, - "outline_color_rgba", - object->arg.ellipse.line_color, - "fill_color_rgba", - object->arg.ellipse.fill_color, NULL); - - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - gl_display_set_modified (display); -} - -/****************************************************************************/ -/* Return a selection canvas item/group for given item */ -/****************************************************************************/ -void -gl_item_ellipse_highlight (GnomeCanvasItem * item) -{ - gl_highlight (item, GL_HIGHLIGHT_ELLIPSE_RESIZABLE); -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_ellipse_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - *x = object->x; - *y = object->y; - - *w = object->arg.ellipse.w; - *h = object->arg.ellipse.h; -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_ellipse_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - object->x = x; - object->y = y; - - object->arg.ellipse.w = w; - object->arg.ellipse.h = h; - - item_ellipse_update (item); -} - -/****************************************************************************/ -/* Get ellipse item bounds. */ -/****************************************************************************/ -void -gl_item_ellipse_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ - gnome_canvas_item_get_bounds (item, x1, y1, x2, y2); -} - -/****************************************************************************/ -/* Create and run an edit dialog on an ellipse object. */ -/****************************************************************************/ -void -gl_item_ellipse_edit_dialog (GnomeCanvasItem * item) -{ - GtkWidget *dialog; - static PropertyDialogPassback *data = NULL; - glLabelObject *object; - glDisplay *display; - GtkWidget *wvbox; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - /*-----------------------------------------------------------------*/ - /* Build dialog with notebook. */ - /*-----------------------------------------------------------------*/ - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - data->item = item; - - dialog = gl_property_box_new (); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Edit ellipse object properties")); - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), data); - - /*---------------------------*/ - /* Appearance Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Appearance"))); - - /* ------ Line box ------ */ - data->line = gl_prop_line_new (_("Outline")); - gl_prop_line_set_params (GL_PROP_LINE (data->line), - object->arg.ellipse.line_width, - object->arg.ellipse.line_color); - gtk_box_pack_start (GTK_BOX (wvbox), data->line, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->line), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Fill box ------ */ - data->fill = gl_prop_fill_new (_("Fill")); - gl_prop_fill_set_params (GL_PROP_FILL (data->fill), - object->arg.ellipse.fill_color); - gtk_box_pack_start (GTK_BOX (wvbox), data->fill, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->fill), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*----------------------------*/ - /* Position/Size Notebook Tab */ - /*----------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Position/Size"))); - - /* ------ Position Frame ------ */ - data->position = gl_prop_position_new (_("Position")); - gl_prop_position_set_params (GL_PROP_POSITION (data->position), - object->x, object->y, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->position, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->position), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Size Frame ------ */ - data->size = gl_prop_size_new (_("Size")); - gl_prop_size_set_params (GL_PROP_SIZE (data->size), - object->arg.ellipse.w, object->arg.ellipse.h, - data->keep_aspect_ratio_flag, - display->label->width, display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->size, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->size), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*-----------------------------------------------------------------*/ - /* Run dialog, and update state of object if "Applied." */ - /*-----------------------------------------------------------------*/ - gtk_widget_show_all (GTK_WIDGET (dialog)); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*---------------------------------------------------------------------------*/ -static void -changed_cb (glPropertyBox * propertybox) -{ - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" callback. */ -/*---------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint page, - PropertyDialogPassback * data) -{ - glLabelObject *object; - glDisplay *display; - - object = gtk_object_get_data (GTK_OBJECT (data->item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - switch (page) { - - case 0: - /* ------- Get updated line width & color ------ */ - gl_prop_line_get_params (GL_PROP_LINE (data->line), - &object->arg.ellipse.line_width, - &object->arg.ellipse.line_color); - /* ------- Get updated fill color ------ */ - gl_prop_fill_get_params (GL_PROP_FILL (data->fill), - &object->arg.ellipse.fill_color); - break; - - case 1: - /* ------ get updated position ------ */ - gl_prop_position_get_position (GL_PROP_POSITION - (data->position), &object->x, - &object->y); - - /* ------ get updated size ------ */ - gl_prop_size_get_size (GL_PROP_SIZE (data->size), - &object->arg.ellipse.w, - &object->arg.ellipse.h, - &data->keep_aspect_ratio_flag); - break; - - default: - return; - } - - /* ------ Udate state of object ------ */ - item_ellipse_update (data->item); - gl_display_select_item (display, data->item); - -} - -/****************************************************************************/ -/* Return apropos cursor for create object mode. */ -/****************************************************************************/ -GdkCursor * -gl_item_ellipse_get_create_cursor (void) -{ - static GdkCursor *cursor = NULL; - GdkPixmap *pixmap_data, *pixmap_mask; - GdkColor fg = { 0, 0, 0, 0 }; - GdkColor bg = { 0, 65535, 65535, 65535 }; - - if (!cursor) { - pixmap_data = gdk_bitmap_create_from_data (NULL, - cursor_ellipse_bits, - cursor_ellipse_width, - cursor_ellipse_height); - pixmap_mask = gdk_bitmap_create_from_data (NULL, - cursor_ellipse_mask_bits, - cursor_ellipse_mask_width, - cursor_ellipse_mask_height); - cursor = - gdk_cursor_new_from_pixmap (pixmap_data, pixmap_mask, &fg, - &bg, cursor_ellipse_x_hot, - cursor_ellipse_y_hot); - } - - return cursor; -} - -/****************************************************************************/ -/* Canvas event handler (ellipse mode) */ -/****************************************************************************/ -int -gl_item_ellipse_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glLabelObject *object; - glDisplay *display = GL_DISPLAY (data); - gdouble x, y; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gdk_pointer_grab (GTK_WIDGET (display->canvas)->window, - FALSE, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, NULL, event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - object = - gl_label_object_new (display->label, - GL_LABEL_OBJECT_ELLIPSE); - object->x = x; - object->y = y; - object->arg.ellipse.w = 0.0; - object->arg.ellipse.h = 0.0; - object->arg.ellipse.line_width = 1.0; - object->arg.ellipse.line_color = - GNOME_CANVAS_COLOR_A (0, 0, 255, 128); - object->arg.ellipse.fill_color = - GNOME_CANVAS_COLOR_A (128, 128, 128, 128); - item = gl_item_ellipse_new (object, display); - x0 = x; - y0 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gdk_pointer_ungrab (event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - if ((x0 == x) || (y0 == y)) { - x = x0 + 36.0; - y = y0 + 36.0; - } - object->x = MIN (x, x0); - object->y = MIN (y, y0); - object->arg.ellipse.w = MAX (x, x0) - MIN (x, x0); - object->arg.ellipse.h = MAX (y, y0) - MIN (y, y0); - object->arg.ellipse.line_color = - GNOME_CANVAS_COLOR_A (0, 0, 0, 255); - object->arg.ellipse.fill_color = - GNOME_CANVAS_COLOR_A (0, 255, 0, 255); - item_ellipse_update (item); - gl_display_add_item (display, item); - gl_display_unselect_all (display); - gl_display_select_item (display, item); - gl_display_arrow_mode (display); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - gnome_canvas_window_to_world (canvas, - event->motion.x, - event->motion.y, &x, &y); - object->x = MIN (x, x0); - object->y = MIN (y, y0); - object->arg.ellipse.w = MAX (x, x0) - MIN (x, x0); - object->arg.ellipse.h = MAX (y, y0) - MIN (y, y0); - item_ellipse_update (item); - return TRUE; - } else { - return FALSE; - } - - default: - return FALSE; - } - -} diff --git a/glabels1/src/item_ellipse.h b/glabels1/src/item_ellipse.h deleted file mode 100644 index c4cf54e2..00000000 --- a/glabels1/src/item_ellipse.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_ellipse.h: GLabels Ellipse Object (canvas item) module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_ELLIPSE_H__ -#define __ITEM_ELLIPSE_H__ - -#include - -#include "label.h" - -extern GnomeCanvasItem *gl_item_ellipse_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_ellipse_highlight (GnomeCanvasItem * item); - -extern void gl_item_ellipse_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_ellipse_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern void gl_item_ellipse_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_ellipse_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_ellipse_get_create_cursor (void); - -extern gint gl_item_ellipse_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data); - -#endif diff --git a/glabels1/src/item_image.c b/glabels1/src/item_image.c deleted file mode 100644 index 4eee6c65..00000000 --- a/glabels1/src/item_image.c +++ /dev/null @@ -1,612 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_image.c: GLabels Image Object (canvas item) module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -#include -#include - -#include "display.h" -#include "item_image.h" - -#include "highlight.h" - -#include "mdi.h" -#include "propertybox.h" -#include "prop_position.h" -#include "prop_size.h" - -#include "pixmaps/cursor_image.xbm" -#include "pixmaps/cursor_image_mask.xbm" - -#include "pixmaps/checkerboard.xpm" - -#include "debug.h" - -#define RED(x) ( ((x)>>24) & 0xff ) -#define GREEN(x) ( ((x)>>16) & 0xff ) -#define BLUE(x) ( ((x)>>8) & 0xff ) -#define ALPHA(x) ( (x) & 0xff ) - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GnomeCanvasItem *item; - gboolean keep_aspect_ratio_flag; - - /* Page 0 widgets */ - GtkWidget *pixmap_entry; - - /* Page 1 widgets */ - GtkWidget *position; - GtkWidget *size; -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/* Save state of image file entry */ -static gchar *image_path = NULL; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void item_image_update (GnomeCanvasItem * item); - -static void changed_cb (glPropertyBox * propertybox); -static void size_reset_cb (glPropertyBox * propertybox); -static void apply_cb (glPropertyBox * propertybox, - gint page, PropertyDialogPassback * data); - -/****************************************************************************/ -/* Create a image object */ -/****************************************************************************/ -GnomeCanvasItem * -gl_item_image_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasGroup *group; - GnomeCanvasItem *item; - - if (object->arg.image.image == NULL) { - object->arg.image.image = - gdk_pixbuf_new_from_xpm_data ((const char **) - checkerboard_xpm); - } - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_pixbuf_get_type (), - "x", object->x, - "y", object->y, - "width_set", TRUE, - "height_set", TRUE, - "width", object->arg.image.w, - "height", object->arg.image.h, - "pixbuf", object->arg.image.image, NULL); - - /* Squirrel away pointers to object and display in the canvas item. */ - gtk_object_set_data (GTK_OBJECT (item), "label_object", object); - gtk_object_set_data (GTK_OBJECT (item), "display", display); - gtk_object_set_data (GTK_OBJECT (item), "highlight", NULL); - - gtk_signal_connect (GTK_OBJECT (item), "event", - GTK_SIGNAL_FUNC (gl_display_item_event_handler), - display); - - gl_display_new_item_menu (item); - - gl_display_set_modified (display); - - return item; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Update an image object */ -/*--------------------------------------------------------------------------*/ -static void -item_image_update (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - gdouble affine[6]; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - if (object->arg.image.image == NULL) { - object->arg.image.image = - gdk_pixbuf_new_from_xpm_data ((const char **) - checkerboard_xpm); - } - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, - "x", object->x, - "y", object->y, - "width_set", TRUE, - "height_set", TRUE, - "width", object->arg.image.w, - "height", object->arg.image.h, - "pixbuf", object->arg.image.image, NULL); - - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - gl_display_set_modified (display); -} - -/****************************************************************************/ -/* Return a selection canvas item/group for given item */ -/****************************************************************************/ -void -gl_item_image_highlight (GnomeCanvasItem * item) -{ - gl_highlight (item, GL_HIGHLIGHT_BOX_RESIZABLE); -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_image_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - *x = object->x; - *y = object->y; - - *w = object->arg.image.w; - *h = object->arg.image.h; -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_image_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - object->x = x; - object->y = y; - - object->arg.image.w = w; - object->arg.image.h = h; - - item_image_update (item); -} - -/****************************************************************************/ -/* Get image item bounds. */ -/****************************************************************************/ -void -gl_item_image_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ - gnome_canvas_item_get_bounds (item, x1, y1, x2, y2); -} - -/****************************************************************************/ -/* Create and run an edit dialog on a image object. */ -/****************************************************************************/ -void -gl_item_image_edit_dialog (GnomeCanvasItem * item) -{ - GtkWidget *dialog; - static PropertyDialogPassback *data = NULL; - GtkWidget *wbutton; - glLabelObject *object; - glDisplay *display; - GtkWidget *wvbox; - gdouble image_w, image_h; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - /*-----------------------------------------------------------------*/ - /* Build dialog with notebook. */ - /*-----------------------------------------------------------------*/ - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - data->item = item; - - dialog = gl_property_box_new (); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Edit image object properties")); - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), data); - gtk_object_set_data (GTK_OBJECT (dialog), "data", data); - - /*---------------------------*/ - /* Image Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Image"))); - - /* image entry */ - data->pixmap_entry = - gnome_pixmap_entry_new ("image", "Load image", TRUE); - gnome_pixmap_entry_set_preview_size (GNOME_PIXMAP_ENTRY - (data->pixmap_entry), 128, 128); - - /* Set default path for image entry */ - if (object->arg.image.filename != NULL) { - /* Set default path to the directory containing image. */ - if (image_path != NULL) - g_free (image_path); - image_path = g_dirname (object->arg.image.filename); - if (image_path != NULL) { - image_path = g_strconcat (image_path, "/", NULL); - } - } else if (image_path == NULL) { - /* First time, set it to our CWD. */ - image_path = g_get_current_dir (); - } - /* Otherwise, leave it in the last directory that we got an image. */ - gnome_file_entry_set_default_path (GNOME_FILE_ENTRY - (GNOME_PIXMAP_ENTRY - (data->pixmap_entry)->fentry), - image_path); - - if (object->arg.image.filename != NULL) { - gtk_entry_set_text (GTK_ENTRY - (gnome_pixmap_entry_gtk_entry - (GNOME_PIXMAP_ENTRY (data->pixmap_entry))), - object->arg.image.filename); - } - gtk_box_pack_start (GTK_BOX (wvbox), data->pixmap_entry, FALSE, FALSE, - 0); - gtk_signal_connect_object (GTK_OBJECT - (gnome_pixmap_entry_gtk_entry - (GNOME_PIXMAP_ENTRY (data->pixmap_entry))), - "changed", GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*----------------------------*/ - /* Position/Size Notebook Tab */ - /*----------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Position/Size"))); - - /* ------ Position Frame ------ */ - data->position = gl_prop_position_new (_("Position")); - gl_prop_position_set_params (GL_PROP_POSITION (data->position), - object->x, object->y, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->position, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->position), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Size Frame ------ */ - data->size = gl_prop_size_new (_("Size")); - image_w = gdk_pixbuf_get_width (object->arg.image.image); - image_h = gdk_pixbuf_get_height (object->arg.image.image); - gl_prop_size_set_params (GL_PROP_SIZE (data->size), - object->arg.image.w, object->arg.image.h, - data->keep_aspect_ratio_flag, - display->label->width, display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->size, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->size), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Size Reset Button ------ */ - wbutton = gtk_button_new_with_label (_("Reset image size")); - gtk_box_pack_start (GTK_BOX (wvbox), wbutton, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (wbutton), "clicked", - GTK_SIGNAL_FUNC (size_reset_cb), - GTK_OBJECT (dialog)); - - /*-----------------------------------------------------------------*/ - /* Run dialog, and update state of object if "Applied." */ - /*-----------------------------------------------------------------*/ - gtk_widget_show_all (GTK_WIDGET (dialog)); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*---------------------------------------------------------------------------*/ -static void -changed_cb (glPropertyBox * propertybox) -{ - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback to reset size to original image size. */ -/*---------------------------------------------------------------------------*/ -static void -size_reset_cb (glPropertyBox * propertybox) -{ - PropertyDialogPassback *data = NULL; - glDisplay *display; - gchar *filename, *ext; - GdkPixbuf *image; - gdouble image_w, image_h; - - data = gtk_object_get_data (GTK_OBJECT (propertybox), "data"); - - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - filename = - gnome_pixmap_entry_get_filename (GNOME_PIXMAP_ENTRY - (data->pixmap_entry)); - if (filename != NULL) { - ext = strrchr (filename, '.'); - if (g_strcasecmp (ext, ".tga") != 0) { - image = gdk_pixbuf_new_from_file (filename); - } else { - gnome_error_dialog (_ - ("Image format not currently supported")); - return; - } - } else { - return; - } - image_w = gdk_pixbuf_get_width (image); - image_h = gdk_pixbuf_get_height (image); - gdk_pixbuf_unref (image); - - data->keep_aspect_ratio_flag = TRUE; - - gl_prop_size_set_params (GL_PROP_SIZE (data->size), - image_w, image_h, - data->keep_aspect_ratio_flag, - display->label->width, display->label->height); - - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" callback. */ -/*---------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint page, - PropertyDialogPassback * data) -{ - glLabelObject *object; - glDisplay *display; - gchar *filename, *ext; - gdouble image_w, image_h; - - object = gtk_object_get_data (GTK_OBJECT (data->item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - switch (page) { - - case 0: - /* ------ Update image ------ */ - filename = - gnome_pixmap_entry_get_filename (GNOME_PIXMAP_ENTRY - (data->pixmap_entry)); - if (filename != NULL) { - ext = strrchr (filename, '.'); - if (g_strcasecmp (ext, ".tga") != 0) { - - g_free (object->arg.image.filename); - object->arg.image.filename = filename; - gdk_pixbuf_unref (object->arg.image.image); - object->arg.image.image = - gdk_pixbuf_new_from_file (object->arg.image. - filename); - - /* save state of image entry. */ - if (image_path != NULL) - g_free (image_path); - image_path = g_dirname (filename); - if (image_path != NULL) { - image_path = - g_strconcat (image_path, "/", NULL); - } - - } else { - gnome_error_dialog (_ - ("Image format not currently supported")); - } - } - break; - - case 1: - /* ------ get updated position ------ */ - gl_prop_position_get_position (GL_PROP_POSITION - (data->position), &object->x, - &object->y); - - /* ------ get updated size ------ */ - gl_prop_size_get_size (GL_PROP_SIZE (data->size), - &object->arg.image.w, - &object->arg.image.h, - &data->keep_aspect_ratio_flag); - break; - - default: - return; - } - - /* ------ Udate state of object ------ */ - item_image_update (data->item); - gl_display_select_item (display, data->item); - - /* update size controls */ - image_w = gdk_pixbuf_get_width (object->arg.image.image); - image_h = gdk_pixbuf_get_height (object->arg.image.image); - gl_prop_size_set_params (GL_PROP_SIZE (data->size), - object->arg.image.w, object->arg.image.h, - data->keep_aspect_ratio_flag, - display->label->width, display->label->height); -} - -/****************************************************************************/ -/* Return apropos cursor for create object mode. */ -/****************************************************************************/ -GdkCursor * -gl_item_image_get_create_cursor (void) -{ - static GdkCursor *cursor = NULL; - GdkPixmap *pixmap_data, *pixmap_mask; - GdkColor fg = { 0, 0, 0, 0 }; - GdkColor bg = { 0, 65535, 65535, 65535 }; - - if (!cursor) { - pixmap_data = gdk_bitmap_create_from_data (NULL, - cursor_image_bits, - cursor_image_width, - cursor_image_height); - pixmap_mask = gdk_bitmap_create_from_data (NULL, - cursor_image_mask_bits, - cursor_image_mask_width, - cursor_image_mask_height); - cursor = - gdk_cursor_new_from_pixmap (pixmap_data, pixmap_mask, &fg, - &bg, cursor_image_x_hot, - cursor_image_y_hot); - } - - return cursor; -} - -/****************************************************************************/ -/* Canvas event handler (image mode) */ -/****************************************************************************/ -gint -gl_item_image_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glLabelObject *object; - glDisplay *display = GL_DISPLAY (data); - gdouble x, y; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gdk_pointer_grab (GTK_WIDGET (display->canvas)->window, - FALSE, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, NULL, event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - object = - gl_label_object_new (display->label, - GL_LABEL_OBJECT_IMAGE); - object->x = x; - object->y = y; - object->arg.image.w = 1.0; - object->arg.image.h = 1.0; - object->arg.image.image = NULL; - object->arg.image.filename = NULL; - item = gl_item_image_new (object, display); - x0 = x; - y0 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gdk_pointer_ungrab (event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - if ((x0 == x) || (y0 == y)) { - x = x0 + 24.0; - y = y0 + 24.0; - } - object->x = MIN (x, x0); - object->y = MIN (y, y0); - object->arg.image.w = MAX (x, x0) - MIN (x, x0); - object->arg.image.h = MAX (y, y0) - MIN (y, y0); - item_image_update (item); - gl_display_add_item (display, item); - gl_display_unselect_all (display); - gl_display_select_item (display, item); - gl_display_arrow_mode (display); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - gnome_canvas_window_to_world (canvas, - event->motion.x, - event->motion.y, &x, &y); - object->x = MIN (x, x0); - object->y = MIN (y, y0); - object->arg.image.w = MAX (x, x0) - MIN (x, x0); - object->arg.image.h = MAX (y, y0) - MIN (y, y0); - item_image_update (item); - return TRUE; - } else { - return FALSE; - } - - default: - return FALSE; - } - -} diff --git a/glabels1/src/item_image.h b/glabels1/src/item_image.h deleted file mode 100644 index 674a9c0f..00000000 --- a/glabels1/src/item_image.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_image.h: GLabels Image Object (canvas item) module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_IMAGE_H__ -#define __ITEM_IMAGE_H__ - -#include - -#include "label.h" - -extern GnomeCanvasItem *gl_item_image_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_image_highlight (GnomeCanvasItem * item); - -extern void gl_item_image_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_image_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern void gl_item_image_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_image_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_image_get_create_cursor (void); - -extern gint gl_item_image_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data); - -#endif diff --git a/glabels1/src/item_line.c b/glabels1/src/item_line.c deleted file mode 100644 index 9d14abe8..00000000 --- a/glabels1/src/item_line.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_line.c: GLabels Line Object (canvas item) module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include -#include - -#include "display.h" -#include "item_line.h" - -#include "highlight.h" - -#include "mdi.h" -#include "propertybox.h" -#include "prop_line.h" -#include "prop_position.h" -#include "prop_vector.h" - -#include "pixmaps/cursor_line.xbm" -#include "pixmaps/cursor_line_mask.xbm" - -#include "debug.h" - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GnomeCanvasItem *item; - - /* Page 0 widgets */ - GtkWidget *line; - - /* Page 1 widgets */ - GtkWidget *position; - GtkWidget *vector; -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void item_line_update (GnomeCanvasItem * item); - -static void changed_cb (glPropertyBox * propertybox); -static void apply_cb (glPropertyBox * propertybox, - gint page, PropertyDialogPassback * data); - -/****************************************************************************/ -/* Create a line object */ -/****************************************************************************/ -GnomeCanvasItem * -gl_item_line_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasGroup *group; - GnomeCanvasItem *item; - GnomeCanvasPoints *points; - - points = gnome_canvas_points_new (2); - points->coords[0] = object->x; - points->coords[1] = object->y; - points->coords[2] = object->x + object->arg.line.dx; - points->coords[3] = object->y + object->arg.line.dy; - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_line_get_type (), - "points", points, - "width_units", - object->arg.line.line_width, - "fill_color_rgba", - object->arg.line.line_color, NULL); - - gnome_canvas_points_free (points); - - /* Squirrel away pointers to object and display in the canvas item. */ - gtk_object_set_data (GTK_OBJECT (item), "label_object", object); - gtk_object_set_data (GTK_OBJECT (item), "display", display); - gtk_object_set_data (GTK_OBJECT (item), "highlight", NULL); - - gtk_signal_connect (GTK_OBJECT (item), "event", - GTK_SIGNAL_FUNC (gl_display_item_event_handler), - display); - - gl_display_new_item_menu (item); - - gl_display_set_modified (display); - - return item; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Update a line object */ -/*--------------------------------------------------------------------------*/ -static void -item_line_update (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - GnomeCanvasPoints *points; - gdouble affine[6]; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - points = gnome_canvas_points_new (2); - points->coords[0] = object->x; - points->coords[1] = object->y; - points->coords[2] = object->x + object->arg.line.dx; - points->coords[3] = object->y + object->arg.line.dy; - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, - "points", points, - "width_units", object->arg.line.line_width, - "fill_color_rgba", object->arg.line.line_color, - NULL); - - gnome_canvas_points_free (points); - - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - gl_display_set_modified (display); -} - -/****************************************************************************/ -/* Create a selection canvas item/group for given item */ -/****************************************************************************/ -void -gl_item_line_highlight (GnomeCanvasItem * item) -{ - gl_highlight (item, GL_HIGHLIGHT_LINE_RESIZABLE); -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_line_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - *x = object->x; - *y = object->y; - - *w = object->arg.line.dx; - *h = object->arg.line.dy; -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_line_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - object->x = x; - object->y = y; - - object->arg.line.dx = w; - object->arg.line.dy = h; - - item_line_update (item); -} - -/****************************************************************************/ -/* Get line item bounds. */ -/****************************************************************************/ -void -gl_item_line_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ - gnome_canvas_item_get_bounds (item, x1, y1, x2, y2); -} - -/****************************************************************************/ -/* Create and run an edit dialog on a line object. */ -/****************************************************************************/ -void -gl_item_line_edit_dialog (GnomeCanvasItem * item) -{ - GtkWidget *dialog; - static PropertyDialogPassback *data = NULL; - glLabelObject *object; - glDisplay *display; - GtkWidget *wvbox; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - /*-----------------------------------------------------------------*/ - /* Build dialog with notebook. */ - /*-----------------------------------------------------------------*/ - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - data->item = item; - - dialog = gl_property_box_new (); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Edit line object properties")); - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), data); - - /*---------------------------*/ - /* Appearance Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Appearance"))); - - /* ------ Begin Line box ------ */ - data->line = gl_prop_line_new (_("Line")); - gl_prop_line_set_params (GL_PROP_LINE (data->line), - object->arg.line.line_width, - object->arg.line.line_color); - gtk_box_pack_start (GTK_BOX (wvbox), data->line, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->line), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*----------------------------*/ - /* Position/Size Notebook Tab */ - /*----------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Position/Size"))); - - /* ------ Position Frame ------ */ - data->position = gl_prop_position_new (_("Position")); - gl_prop_position_set_params (GL_PROP_POSITION (data->position), - object->x, object->y, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->position, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->position), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /* ------ Size Frame ------ */ - data->vector = gl_prop_vector_new (_("Size")); - gl_prop_vector_set_params (GL_PROP_VECTOR (data->vector), - object->arg.line.dx, object->arg.line.dy, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->vector, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->vector), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*-----------------------------------------------------------------*/ - /* Run dialog, and update state of object if "Applied." */ - /*-----------------------------------------------------------------*/ - gtk_widget_show_all (GTK_WIDGET (dialog)); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*---------------------------------------------------------------------------*/ -static void -changed_cb (glPropertyBox * propertybox) -{ - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" callback. */ -/*---------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint page, - PropertyDialogPassback * data) -{ - glLabelObject *object; - glDisplay *display; - - object = gtk_object_get_data (GTK_OBJECT (data->item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - switch (page) { - - case 0: - /* ------- Get updated line width & color ------ */ - gl_prop_line_get_params (GL_PROP_LINE (data->line), - &object->arg.line.line_width, - &object->arg.line.line_color); - break; - - case 1: - /* ------ get updated position ------ */ - gl_prop_position_get_position (GL_PROP_POSITION - (data->position), &object->x, - &object->y); - /* ------ get updated size ------ */ - gl_prop_vector_get_params (GL_PROP_VECTOR (data->vector), - &object->arg.line.dx, - &object->arg.line.dy); - break; - - default: - return; - } - - /* ------ Udate state of object ------ */ - item_line_update (data->item); - gl_display_select_item (display, data->item); - -} - -/****************************************************************************/ -/* Return apropos cursor for create object mode. */ -/****************************************************************************/ -GdkCursor * -gl_item_line_get_create_cursor (void) -{ - static GdkCursor *cursor = NULL; - GdkPixmap *pixmap_data, *pixmap_mask; - GdkColor fg = { 0, 0, 0, 0 }; - GdkColor bg = { 0, 65535, 65535, 65535 }; - - if (!cursor) { - pixmap_data = gdk_bitmap_create_from_data (NULL, - cursor_line_bits, - cursor_line_width, - cursor_line_height); - pixmap_mask = gdk_bitmap_create_from_data (NULL, - cursor_line_mask_bits, - cursor_line_mask_width, - cursor_line_mask_height); - cursor = - gdk_cursor_new_from_pixmap (pixmap_data, pixmap_mask, &fg, - &bg, cursor_line_x_hot, - cursor_line_y_hot); - } - - return cursor; -} - -/****************************************************************************/ -/* Canvas event handler (line mode) */ -/****************************************************************************/ -gint -gl_item_line_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - static gdouble x0, y0; - static gboolean dragging = FALSE; - static GnomeCanvasItem *item; - static glLabelObject *object; - glDisplay *display = GL_DISPLAY (data); - gdouble x, y; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - dragging = TRUE; - gdk_pointer_grab (GTK_WIDGET (display->canvas)->window, - FALSE, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, - NULL, NULL, event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - object = - gl_label_object_new (display->label, - GL_LABEL_OBJECT_LINE); - object->x = x; - object->y = y; - object->arg.line.dx = 0.0; - object->arg.line.dy = 0.0; - object->arg.line.line_width = 1.0; - object->arg.line.line_color = - GNOME_CANVAS_COLOR_A (0, 0, 255, 128); - item = gl_item_line_new (object, display); - x0 = x; - y0 = y; - return TRUE; - - default: - return FALSE; - } - - case GDK_BUTTON_RELEASE: - switch (event->button.button) { - case 1: - dragging = FALSE; - gdk_pointer_ungrab (event->button.time); - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - if ((x0 == x) && (y0 == y)) { - x = x0 + 36.0; - y = y0 + 36.0; - } - object->x = x0; - object->y = y0; - object->arg.line.dx = (x - x0); - object->arg.line.dy = (y - y0); - object->arg.line.line_color = - GNOME_CANVAS_COLOR (0, 0, 0); - item_line_update (item); - gl_display_add_item (display, item); - gl_display_unselect_all (display); - gl_display_select_item (display, item); - gl_display_arrow_mode (display); - return TRUE; - - default: - return FALSE; - } - - case GDK_MOTION_NOTIFY: - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - gnome_canvas_window_to_world (canvas, - event->motion.x, - event->motion.y, &x, &y); - object->x = x0; - object->y = y0; - object->arg.line.dx = (x - x0); - object->arg.line.dy = (y - y0); - item_line_update (item); - return TRUE; - } else { - return FALSE; - } - - default: - return FALSE; - } - -} diff --git a/glabels1/src/item_line.h b/glabels1/src/item_line.h deleted file mode 100644 index 3bb48fe8..00000000 --- a/glabels1/src/item_line.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_line.h: GLabels Line Object (canvas item) module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_LINE_H__ -#define __ITEM_LINE_H__ - -#include - -#include "label.h" - -extern GnomeCanvasItem *gl_item_line_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_line_highlight (GnomeCanvasItem * item); - -extern void gl_item_line_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_line_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern void gl_item_line_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_line_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_line_get_create_cursor (void); - -extern gint gl_item_line_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data); - -#endif diff --git a/glabels1/src/item_text.c b/glabels1/src/item_text.c deleted file mode 100644 index 0a0172af..00000000 --- a/glabels1/src/item_text.c +++ /dev/null @@ -1,780 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_text.c: GLabels Text Object (canvas item) module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -#include "display.h" -#include "item_text.h" - -#include "highlight.h" - -#include "mdi.h" -#include "propertybox.h" -#include "prop_text_entry.h" -#include "prop_text.h" -#include "prop_position.h" - -#include "pixmaps/cursor_text.xbm" -#include "pixmaps/cursor_text_mask.xbm" - -#ifdef HACKTEXT -#include "gnome-canvas-hacktext.h" -#include -#include "hack.h" -#endif - -#include "debug.h" - -#define DEFAULT_FONT_FAMILY "Helvetica" -#define DEFAULT_FONT_SIZE 14.0 -#define DEFAULT_FONT_WEIGHT GNOME_FONT_BOOK -#define DEFAULT_FONT_ITALIC_FLAG FALSE - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GnomeCanvasItem *item; - - /* Page 0 widgets */ - GtkWidget *text_entry; - - /* Page 1 widgets */ - GtkWidget *text; - - /* Page 2 widgets */ - GtkWidget *position; -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void item_text_update (GnomeCanvasItem * item); - -static void changed_cb (glPropertyBox * propertybox); -static void apply_cb (glPropertyBox * propertybox, - gint page, PropertyDialogPassback * data); - -#ifdef HACKTEXT -static void draw_hacktext (GnomeCanvasItem * group, - gchar * text, - gchar * font_family, - GnomeFontWeight font_weight, - gboolean font_italic_flag, - gdouble font_size, - guint color, - GtkJustification just, - gdouble scale); - -static void hacktext_get_size (gchar * text, - gchar * font_family, - GnomeFontWeight font_weight, - gboolean font_italic_flag, - gdouble font_size, - gdouble * w, - gdouble * h); -#endif - -/****************************************************************************/ -/* Create a text object */ -/****************************************************************************/ -GnomeCanvasItem * -gl_item_text_new (glLabelObject * object, - glDisplay * display) -{ - GnomeCanvasGroup *group; - GnomeCanvasItem *item; -#ifndef HACKTEXT - GdkFont *gdk_font; - GnomeDisplayFont *display_font; - GtkAnchorType anchor; -#endif - gchar *text; - - text = gl_text_node_lines_expand (object->arg.text.lines, NULL); - -#ifdef HACKTEXT - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_group_get_type (), - "x", object->x, "y", object->y, NULL); - draw_hacktext (item, - text, - object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text.font_italic_flag, - object->arg.text.font_size, - object->arg.text.color, - object->arg.text.just, display->scale); - -#else - - display_font = gnome_get_display_font (object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text. - font_italic_flag, - object->arg.text.font_size, - display->scale); - gdk_font = gnome_display_font_get_gdk_font (display_font); - - switch (object->arg.text.just) { - case GTK_JUSTIFY_LEFT: - anchor = GTK_ANCHOR_NW; - break; - case GTK_JUSTIFY_CENTER: - anchor = GTK_ANCHOR_N; - break; - case GTK_JUSTIFY_RIGHT: - anchor = GTK_ANCHOR_NE; - break; - default: - anchor = GTK_ANCHOR_NW; - break; - } - - group = gnome_canvas_root (GNOME_CANVAS (display->canvas)); - item = gnome_canvas_item_new (group, gnome_canvas_text_get_type (), - "x", object->x, - "y", object->y, - "text", g_strdup (text), - "font_gdk", gdk_font, - "justification", object->arg.text.just, - "anchor", anchor, - "fill_color_rgba", object->arg.text.color, - NULL); - -#endif - - /* Squirrel away pointers to object and display in the canvas item. */ - gtk_object_set_data (GTK_OBJECT (item), "label_object", object); - gtk_object_set_data (GTK_OBJECT (item), "display", display); - gtk_object_set_data (GTK_OBJECT (item), "highlight", NULL); - - gtk_signal_connect (GTK_OBJECT (item), "event", - GTK_SIGNAL_FUNC (gl_display_item_event_handler), - display); - - gl_display_new_item_menu (item); - - gl_display_set_modified (display); - - g_free (text); - return item; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Update a text object */ -/*--------------------------------------------------------------------------*/ -static void -item_text_update (GnomeCanvasItem * item) -{ - glLabelObject *object; - glDisplay *display; - gdouble affine[6]; -#ifdef HACKTEXT - GList *item_list, *li; -#else - GdkFont *gdk_font; - GnomeDisplayFont *display_font; - GtkAnchorType anchor; -#endif - gchar *text; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - text = gl_text_node_lines_expand (object->arg.text.lines, NULL); - -#ifdef HACKTEXT - - item_list = gtk_object_get_data (GTK_OBJECT (item), "item_list"); - for (li = item_list; li != NULL; li = li->next) { - gtk_object_destroy (GTK_OBJECT (li->data)); - } - g_list_free (item_list); - gtk_object_set_data (GTK_OBJECT (item), "item_list", NULL); - - draw_hacktext (item, - text, - object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text.font_italic_flag, - object->arg.text.font_size, - object->arg.text.color, - object->arg.text.just, display->scale); - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, "x", object->x, "y", object->y, NULL); - -#else - - display_font = gnome_get_display_font (object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text. - font_italic_flag, - object->arg.text.font_size, - display->scale); - gdk_font = gnome_display_font_get_gdk_font (display_font); - - switch (object->arg.text.just) { - case GTK_JUSTIFY_LEFT: - anchor = GTK_ANCHOR_NW; - break; - case GTK_JUSTIFY_CENTER: - anchor = GTK_ANCHOR_N; - break; - case GTK_JUSTIFY_RIGHT: - anchor = GTK_ANCHOR_NE; - break; - default: - anchor = GTK_ANCHOR_NW; - break; - } - - art_affine_identity (affine); - gnome_canvas_item_affine_absolute (item, affine); - gnome_canvas_item_set (item, - "x", object->x, - "y", object->y, - "text", g_strdup (text), - "font_gdk", gdk_font, - "justification", object->arg.text.just, - "anchor", anchor, - "fill_color_rgba", object->arg.text.color, NULL); - -#endif - - g_free (text); - - gl_display_set_modified (display); -} - -/****************************************************************************/ -/* Highlight item. */ -/****************************************************************************/ -void -gl_item_text_highlight (GnomeCanvasItem * item) -{ - gl_highlight (item, GL_HIGHLIGHT_SIMPLE); -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_text_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h) -{ - glLabelObject *object; -#ifndef HACKTEXT - GtkArg arg_info; - gdouble x1, y1, x2, y2; -#else - gchar *text; -#endif - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - *x = object->x; - *y = object->y; - -#ifdef HACKTEXT - text = gl_text_node_lines_expand (object->arg.text.lines, NULL); - - hacktext_get_size (text, - object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text.font_italic_flag, - object->arg.text.font_size, w, h); - - g_free (text); -#else - - gnome_canvas_item_get_bounds (item, &x1, &y1, &x2, &y2); - *h = y2 - y1; - - /* workaround: the above bounding box is too wide, correct the width. */ - arg_info.name = "text_width"; - gtk_object_getv (GTK_OBJECT (item), 1, &arg_info); - *w = GTK_VALUE_DOUBLE (arg_info); - -#endif -} - -/****************************************************************************/ -/* Get position and size of object. */ -/****************************************************************************/ -void -gl_item_text_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h) -{ - glLabelObject *object; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - object->x = x; - object->y = y; - - /* Ignore w,h for now */ - - item_text_update (item); -} - -/****************************************************************************/ -/* Get text item bounds. */ -/****************************************************************************/ -void -gl_item_text_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2) -{ -#ifdef HACKTEXT - - glLabelObject *object; - gdouble w, h, x_offset, y_offset; - gchar *text; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - - text = gl_text_node_lines_expand (object->arg.text.lines, NULL); - - hacktext_get_size (text, - object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text.font_italic_flag, - object->arg.text.font_size, &w, &h); - - g_free (text); - - switch (object->arg.text.just) { - case GTK_JUSTIFY_LEFT: - x_offset = 0.0; - break; - case GTK_JUSTIFY_CENTER: - x_offset = -w / 2.0; - break; - case GTK_JUSTIFY_RIGHT: - x_offset = -w; - break; - default: - x_offset = 0.0; - break; /* shouldn't happen */ - } - - y_offset = 0.0; - - *x1 = object->x + x_offset; - *y1 = object->y + y_offset; - *x2 = *x1 + w; - *y2 = *y1 + h; - -#else - - GtkArg arg_info; - - gnome_canvas_item_get_bounds (item, x1, y1, x2, y2); - - /* workaround: the above bounding box is too wide, correct the width. */ - arg_info.name = "text_width"; - gtk_object_getv (GTK_OBJECT (item), 1, &arg_info); - *x2 = *x1 + GTK_VALUE_DOUBLE (arg_info); - -#endif - -} - -/****************************************************************************/ -/* Create and run an edit dialog on a text object. */ -/****************************************************************************/ -void -gl_item_text_edit_dialog (GnomeCanvasItem * item) -{ - GtkWidget *dialog; - static PropertyDialogPassback *data = NULL; - glLabelObject *object; - glDisplay *display; - GtkWidget *wvbox; - - object = gtk_object_get_data (GTK_OBJECT (item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (item), "display"); - - /*-----------------------------------------------------------------*/ - /* Build dialog with notebook. */ - /*-----------------------------------------------------------------*/ - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - data->item = item; - - dialog = gl_property_box_new (); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Edit text object properties")); - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), data); - - /*---------------------------*/ - /* Text Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Text"))); - - /* Text entry widget */ - data->text_entry = - gl_prop_text_entry_new (_("Text"), object->parent->merge_fields); - gl_prop_text_entry_set_text (GL_PROP_TEXT_ENTRY (data->text_entry), - (object->parent->merge_type != - GL_MERGE_NONE), object->arg.text.lines); - gtk_box_pack_start (GTK_BOX (wvbox), data->text_entry, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->text_entry), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*---------------------------*/ - /* Appearance Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Appearance"))); - - /* ------ Begin Text Properties box ------ */ - data->text = gl_prop_text_new (_("Text Properties")); - gl_prop_text_set_params (GL_PROP_TEXT (data->text), - object->arg.text.font_family, - object->arg.text.font_size, - object->arg.text.font_weight, - object->arg.text.font_italic_flag, - object->arg.text.color, object->arg.text.just); - gtk_box_pack_start (GTK_BOX (wvbox), data->text, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->text), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*---------------------------*/ - /* Position Notebook Tab */ - /*---------------------------*/ - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 10); - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, - gtk_label_new (_("Position"))); - - /* ------ Position Frame ------ */ - data->position = gl_prop_position_new (_("Position")); - gl_prop_position_set_params (GL_PROP_POSITION (data->position), - object->x, object->y, - display->label->width, - display->label->height); - gtk_box_pack_start (GTK_BOX (wvbox), data->position, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (data->position), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (dialog)); - - /*-----------------------------------------------------------------*/ - /* Run dialog, and update state of object if "Applied." */ - /*-----------------------------------------------------------------*/ - gtk_widget_show_all (GTK_WIDGET (dialog)); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*---------------------------------------------------------------------------*/ -static void -changed_cb (glPropertyBox * propertybox) -{ - gl_property_box_changed (propertybox); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" callback. */ -/*---------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint page, - PropertyDialogPassback * data) -{ - glLabelObject *object; - glDisplay *display; - - object = gtk_object_get_data (GTK_OBJECT (data->item), "label_object"); - display = gtk_object_get_data (GTK_OBJECT (data->item), "display"); - - switch (page) { - - case 0: - /* ------- Get updated text ------ */ - gl_text_node_lines_free (&object->arg.text.lines); - object->arg.text.lines = - gl_prop_text_entry_get_text (GL_PROP_TEXT_ENTRY - (data->text_entry)); - break; - - case 1: - /* ------ Get updated text parameter information ------ */ - gl_prop_text_get_params (GL_PROP_TEXT (data->text), - &object->arg.text.font_family, - &object->arg.text.font_size, - &object->arg.text.font_weight, - &object->arg.text.font_italic_flag, - &object->arg.text.color, - &object->arg.text.just); - break; - - case 2: - /* ------ get updated position ------ */ - gl_prop_position_get_position (GL_PROP_POSITION - (data->position), &object->x, - &object->y); - break; - - default: - return; - } - - /* ------ Udate state of object ------ */ - item_text_update (data->item); - gl_display_select_item (display, data->item); - -} - -/****************************************************************************/ -/* Return apropos cursor for create object mode. */ -/****************************************************************************/ -GdkCursor * -gl_item_text_get_create_cursor (void) -{ - static GdkCursor *cursor = NULL; - GdkPixmap *pixmap_data, *pixmap_mask; - GdkColor fg = { 0, 0, 0, 0 }; - GdkColor bg = { 0, 65535, 65535, 65535 }; - - if (!cursor) { - pixmap_data = gdk_bitmap_create_from_data (NULL, - cursor_text_bits, - cursor_text_width, - cursor_text_height); - pixmap_mask = gdk_bitmap_create_from_data (NULL, - cursor_text_mask_bits, - cursor_text_mask_width, - cursor_text_mask_height); - cursor = - gdk_cursor_new_from_pixmap (pixmap_data, pixmap_mask, &fg, - &bg, cursor_text_x_hot, - cursor_text_y_hot); - } - - return cursor; -} - -/****************************************************************************/ -/* Canvas event handler (text mode) */ -/****************************************************************************/ -gint -gl_item_text_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - glDisplay *display = GL_DISPLAY (data); - gdouble x, y; - glLabelObject *object; - GnomeCanvasItem *item; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - switch (event->button.button) { - case 1: - gnome_canvas_window_to_world (canvas, - event->button.x, - event->button.y, &x, &y); - object = - gl_label_object_new (display->label, - GL_LABEL_OBJECT_TEXT); - object->x = x; - object->y = y; - object->arg.text.lines = - gl_text_node_lines_new_from_text (_("Text")); - object->arg.text.font_family = - g_strdup (DEFAULT_FONT_FAMILY); - object->arg.text.font_size = DEFAULT_FONT_SIZE; - object->arg.text.font_weight = DEFAULT_FONT_WEIGHT; - object->arg.text.font_italic_flag = - DEFAULT_FONT_ITALIC_FLAG; - object->arg.text.just = GTK_JUSTIFY_LEFT; - object->arg.text.color = GNOME_CANVAS_COLOR (0, 0, 0); - item = gl_item_text_new (object, display); - gl_display_add_item (display, item); - gl_display_unselect_all (display); - gl_display_select_item (display, item); - gl_display_arrow_mode (display); - return TRUE; - - default: - return FALSE; - } - - default: - return FALSE; - } - -} - -#ifdef HACKTEXT -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Draw hacktext to item (group). */ -/*--------------------------------------------------------------------------*/ -static void -draw_hacktext (GnomeCanvasItem * group, - gchar * text, - gchar * font_family, - GnomeFontWeight font_weight, - gboolean font_italic_flag, - gdouble font_size, - guint color, - GtkJustification just, - gdouble scale) -{ - GnomeFont *font; - GnomeGlyphList *glyphlist; - gdouble x_offset, y_offset; - gint i; - gdouble w; - gchar **line, *utf8_text; - GnomeCanvasItem *item; - GList *item_list = NULL; - - font = gnome_font_new_closest (font_family, - font_weight, - font_italic_flag, font_size); - - line = g_strsplit (text, "\n", -1); - - for (i = 0; line[i] != NULL; i++) { - - utf8_text = gl_hack_text_to_utf8 (line[i]); - - w = gl_hack_get_width_string (font, line[i]); - - glyphlist = gnome_glyphlist_from_text_sized_dumb (font, - color, - 0.0, 0.0, - utf8_text, - strlen - (utf8_text)); - switch (just) { - case GTK_JUSTIFY_LEFT: - x_offset = 0.0; - break; - case GTK_JUSTIFY_CENTER: - x_offset = -w / 2.0; - break; - case GTK_JUSTIFY_RIGHT: - x_offset = -w; - break; - default: - x_offset = 0.0; - break; /* shouldn't happen */ - } - - y_offset = - (i + 1) * font_size - gnome_font_get_descender (font); - - item = gnome_canvas_item_new (GNOME_CANVAS_GROUP (group), - gnome_canvas_hacktext_get_type (), - "x", x_offset, - "y", y_offset, - "glyphlist", glyphlist, NULL); - item_list = g_list_prepend (item_list, item); - - g_free (utf8_text); - } - - g_strfreev (line); - - /* attach item list to group, so we can get at these again */ - gtk_object_set_data (GTK_OBJECT (group), "item_list", item_list); -} -#endif - -#ifdef HACKTEXT -/*--------------------------------------------------------------------------*/ -/* PRIVATE. get size of hacktext item. */ -/*--------------------------------------------------------------------------*/ -static void -hacktext_get_size (gchar * text, - gchar * font_family, - GnomeFontWeight font_weight, - gboolean font_italic_flag, - gdouble font_size, - gdouble * w, - gdouble * h) -{ - GnomeFont *font; - gchar **line; - gdouble wline; - gint i; - - *w = 0.0; - *h = 0.0; - - font = gnome_font_new_closest (font_family, - font_weight, - font_italic_flag, font_size); - - line = g_strsplit (text, "\n", -1); - - for (i = 0; line[i] != NULL; i++) { - - wline = gl_hack_get_width_string (font, line[i]); - - if (wline > *w) - *w = wline; - *h += font_size; - - } - - g_strfreev (line); - -} -#endif diff --git a/glabels1/src/item_text.h b/glabels1/src/item_text.h deleted file mode 100644 index 091e0628..00000000 --- a/glabels1/src/item_text.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * item_text.h: GLabels Text Object (canvas item) module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __ITEM_TEXT_H__ -#define __ITEM_TEXT_H__ - -#include - -#include "label.h" - -extern GnomeCanvasItem *gl_item_text_new (glLabelObject * object, - glDisplay * display); - -extern void gl_item_text_highlight (GnomeCanvasItem * item); - -extern void gl_item_text_get_position_size (GnomeCanvasItem * item, - gdouble * x, - gdouble * y, - gdouble * w, - gdouble * h); - -extern void gl_item_text_set_position_size (GnomeCanvasItem * item, - gdouble x, - gdouble y, - gdouble w, - gdouble h); - -extern void gl_item_text_get_bounds (GnomeCanvasItem * item, - gdouble * x1, - gdouble * y1, - gdouble * x2, - gdouble * y2); - -extern void gl_item_text_edit_dialog (GnomeCanvasItem * item); - -extern GdkCursor *gl_item_text_get_create_cursor (void); - -extern gint gl_item_text_create_event_handler (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data); - -#endif diff --git a/glabels1/src/label.c b/glabels1/src/label.c deleted file mode 100644 index c33f97cb..00000000 --- a/glabels1/src/label.c +++ /dev/null @@ -1,1212 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * label.c: GLabels label module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include - -/* LibXML */ -#include -#include - -#include "label.h" -#include "template.h" - -#include "debug.h" - -#define NAME_SPACE "http://snaught.com/glabels/0.4/" -#define COMPAT01_NAME_SPACE "http://snaught.com/glabels/0.1/" - -static glLabelStatus xml_doc_to_label (xmlDocPtr doc, glLabel ** label); -static gboolean xml_parse_media_description (xmlNodePtr node, glLabel * label); -static void xml_parse_object(xmlNodePtr node, glLabelObject * object, - gboolean compat01_flag); -static void xml_parse_text_props (xmlNodePtr node, glLabelObject * object); -static void xml_parse_text_props_compat01( xmlNodePtr node, - glLabelObject *object ); -static void xml_parse_box_props (xmlNodePtr node, glLabelObject * object); -static void xml_parse_line_props (xmlNodePtr node, glLabelObject * object); -static void xml_parse_ellipse_props (xmlNodePtr node, glLabelObject * object); -static void xml_parse_image_props (xmlNodePtr node, glLabelObject * object); -static void xml_parse_barcode_props (xmlNodePtr node, glLabelObject * object); -static void xml_parse_merge_properties (xmlNodePtr node, glLabel * label); - -static glLabelStatus xml_label_to_doc (glLabel * label, xmlDocPtr * doc); -static void xml_create_media_description (xmlNodePtr root, xmlNsPtr ns, - glLabel * label); -static void xml_create_object (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_text_props (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_box_props (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_line_props (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_ellipse_props (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_image_props (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_barcode_props (xmlNodePtr root, xmlNsPtr ns, - glLabelObject * object); -static void xml_create_merge_properties (xmlNodePtr root, xmlNsPtr ns, - glLabel * label); - -static const gchar *just_to_text (GtkJustification just); -static GtkJustification text_to_just (const gchar * text); - -static const gchar *weight_to_text (GnomeFontWeight weight); -static GnomeFontWeight text_to_weight (const gchar * text); - -/****************************************************************************/ -/* Create a new label. */ -/****************************************************************************/ -glLabel * -gl_label_new (void) -{ - glLabel *label; - - label = g_new0 (glLabel, 1); - - return label; -} - -/****************************************************************************/ -/* Create a new label. */ -/****************************************************************************/ -glLabel * -gl_label_new_with_template (const gchar * tmplt_name, - gboolean rotate_flag) -{ - glLabel *label; - glTemplate *template; - - label = gl_label_new (); - - label->template_name = g_strdup (tmplt_name); - label->template = template = gl_template_from_name (tmplt_name); - label->rotate_flag = rotate_flag; - - switch (template->style) { - - case GL_TEMPLATE_STYLE_RECT: - if (!rotate_flag) { - label->width = template->label_width; - label->height = template->label_height; - } else { - label->width = template->label_height; - label->height = template->label_width; - } - break; - - case GL_TEMPLATE_STYLE_ROUND: - case GL_TEMPLATE_STYLE_CD: - label->width = label->height = 2.0 * template->label_radius; - break; - - default: - WARN ("Unknown template label style"); - break; - } - - label->objects = NULL; - - return label; -} - -/****************************************************************************/ -/* Free a previously allocated label. */ -/****************************************************************************/ -void -gl_label_free (glLabel ** label) -{ - GList *p, *p_next; - glLabelObject *object; - - if (*label != NULL) { - g_free ((*label)->template_name); - (*label)->template_name = NULL; - - gl_template_free (&(*label)->template); - - for (p = (*label)->objects; p != NULL; p = p_next) { - p_next = p->next; /* NOTE: p will be left dangling */ - object = (glLabelObject *) p->data; - gl_label_object_free (&object); - } - - g_free (*label); - *label = NULL; - } -} - -/****************************************************************************/ -/* Open and read label from xml file. */ -/****************************************************************************/ -glLabelStatus -gl_label_open_xml (glLabel ** label, - const gchar * filename) -{ - xmlDocPtr doc; - glLabelStatus status; - - xmlUseNewParser (TRUE); - doc = xmlParseFile (filename); - if (!doc) { - WARN (_("xmlParseFile error")); - *label = NULL; - return LABEL_ERROR_OPEN_XML_PARSE; - } - - status = xml_doc_to_label (doc, label); - - xmlFreeDoc (doc); - - return status; -} - -/****************************************************************************/ -/* Read label from xml buffer. */ -/****************************************************************************/ -glLabelStatus -gl_label_open_xml_buffer (glLabel ** label, - const gchar * buffer) -{ - xmlDocPtr doc; - glLabelStatus status; - - xmlUseNewParser (TRUE); - doc = xmlParseDoc ((xmlChar *) buffer); - if (!doc) { - WARN (_("xmlParseFile error")); - *label = NULL; - return LABEL_ERROR_OPEN_XML_PARSE; - } - - status = xml_doc_to_label (doc, label); - - xmlFreeDoc (doc); - - return status; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse xml doc structure and create label. */ -/*--------------------------------------------------------------------------*/ -static glLabelStatus -xml_doc_to_label (xmlDocPtr doc, - glLabel ** label) -{ - xmlNodePtr root, node; - xmlNsPtr ns; - glLabelObject *object; - glLabelStatus status = LABEL_OK; - gboolean compat01_flag = FALSE; - - LIBXML_TEST_VERSION; - - gl_label_free (label); - - root = xmlDocGetRootElement (doc); - if (!root || !root->name) { - WARN (_("No document root")); - return LABEL_ERROR_OPEN_XML_PARSE; - } - ns = xmlSearchNsByHref (doc, root, NAME_SPACE); - if (ns == NULL) { - /* Try compatability mode */ - ns = xmlSearchNsByHref (doc, root, COMPAT01_NAME_SPACE); - if (ns != NULL) compat01_flag = TRUE; - } - if (ns == NULL) { - WARN (_ - ("document of the wrong type, glabels Namespace not found")); - return LABEL_ERROR_OPEN_XML_PARSE; - } - - if (g_strcasecmp (root->name, "Label") != 0) { - WARN (_("Bad root node = \"%s\""), root->name); - return LABEL_ERROR_OPEN_XML_PARSE; - } - - *label = gl_label_new (); - - (*label)->rotate_flag = - !(g_strcasecmp (xmlGetProp (root, "rotate"), "false") == 0); - (*label)->width = g_strtod (xmlGetProp (root, "width"), NULL); - (*label)->height = g_strtod (xmlGetProp (root, "height"), NULL); - - for (node = root->xmlChildrenNode; node != NULL; node = node->next) { - - if (g_strcasecmp (node->name, "Media_Type") == 0) { - if (!xml_parse_media_description (node, *label)) { - status = LABEL_UNKNOWN_MEDIA; - } - } else if (g_strcasecmp (node->name, "Text") == 0) { - object = - gl_label_object_new (*label, GL_LABEL_OBJECT_TEXT); - xml_parse_object (node, object, compat01_flag); - } else if (g_strcasecmp (node->name, "Box") == 0) { - object = - gl_label_object_new (*label, GL_LABEL_OBJECT_BOX); - xml_parse_object (node, object, compat01_flag); - } else if (g_strcasecmp (node->name, "Line") == 0) { - object = - gl_label_object_new (*label, GL_LABEL_OBJECT_LINE); - xml_parse_object (node, object, compat01_flag); - } else if (g_strcasecmp (node->name, "Ellipse") == 0) { - object = - gl_label_object_new (*label, - GL_LABEL_OBJECT_ELLIPSE); - xml_parse_object (node, object, compat01_flag); - } else if (g_strcasecmp (node->name, "Image") == 0) { - object = - gl_label_object_new (*label, GL_LABEL_OBJECT_IMAGE); - xml_parse_object (node, object, compat01_flag); - } else if (g_strcasecmp (node->name, "Barcode") == 0) { - object = - gl_label_object_new (*label, - GL_LABEL_OBJECT_BARCODE); - xml_parse_object (node, object, compat01_flag); - } else if (g_strcasecmp (node->name, "Merge_Properties") == 0) { - xml_parse_merge_properties (node, *label); - } else { - if (!xmlNodeIsText (node)) { - WARN (_("bad node = \"%s\""), node->name); - } - } - } - - return status; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse Media Description node. */ -/*--------------------------------------------------------------------------*/ -static gboolean -xml_parse_media_description (xmlNodePtr node, - glLabel * label) -{ - label->template_name = xmlNodeGetContent (node); - label->template = gl_template_from_name (label->template_name); - if (label->template == NULL) { - WARN ("Undefined template \"%s\"", label->template_name); - /* Get a default */ - label->template = gl_template_from_name (NULL); - return FALSE; - } - return TRUE; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Object Node */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_object (xmlNodePtr object_node, - glLabelObject * object, - gboolean compat01_flag) -{ - object->x = g_strtod (xmlGetProp (object_node, "x"), NULL); - object->y = g_strtod (xmlGetProp (object_node, "y"), NULL); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - if (compat01_flag) { - xml_parse_text_props_compat01 (object_node, object); - } else { - xml_parse_text_props (object_node, object); - } - break; - case GL_LABEL_OBJECT_BOX: - xml_parse_box_props (object_node, object); - break; - case GL_LABEL_OBJECT_LINE: - xml_parse_line_props (object_node, object); - break; - case GL_LABEL_OBJECT_ELLIPSE: - xml_parse_ellipse_props (object_node, object); - break; - case GL_LABEL_OBJECT_IMAGE: - xml_parse_image_props (object_node, object); - break; - case GL_LABEL_OBJECT_BARCODE: - xml_parse_barcode_props (object_node, object); - break; - default: - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Text Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_text_props (xmlNodePtr object_node, - glLabelObject * object) -{ - xmlNodePtr line_node, text_node; - glTextNode *node_text; - GList *nodes; - - object->arg.text.font_family = xmlGetProp (object_node, "font_family"); - object->arg.text.font_size = - g_strtod (xmlGetProp (object_node, "font_size"), NULL); - object->arg.text.font_weight = - text_to_weight (xmlGetProp (object_node, "font_weight")); - object->arg.text.font_italic_flag = - !(g_strcasecmp (xmlGetProp (object_node, "font_italic"), "false") == - 0); - - object->arg.text.just = - text_to_just (xmlGetProp (object_node, "justify")); - - sscanf (xmlGetProp (object_node, "color"), "%x", - &object->arg.text.color); - - object->arg.text.lines = NULL; - for (line_node = object_node->xmlChildrenNode; line_node != NULL; - line_node = line_node->next) { - - if (g_strcasecmp (line_node->name, "Line") == 0) { - - nodes = NULL; - for (text_node = line_node->xmlChildrenNode; - text_node != NULL; text_node = text_node->next) { - - if (g_strcasecmp (text_node->name, "Field") == - 0) { - node_text = g_new0 (glTextNode, 1); - node_text->field_flag = TRUE; - node_text->data = - xmlGetProp (text_node, "name"); - nodes = - g_list_append (nodes, node_text); - } else if (xmlNodeIsText (text_node)) { - node_text = g_new0 (glTextNode, 1); - node_text->field_flag = FALSE; - node_text->data = - xmlNodeGetContent (text_node); - nodes = - g_list_append (nodes, node_text); - } else { - WARN ("Unexpected Text Line child: \"%s\"", - text_node->name); - } - - } - object->arg.text.lines = - g_list_append (object->arg.text.lines, nodes); - - } else { - WARN ("Unexpected Text child: \"%s\"", line_node->name); - } - - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML label->Text node (Compatability with 0.1 version) */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_text_props_compat01( xmlNodePtr node, glLabelObject *object ) -{ - gchar *text; - - text = xmlNodeGetContent( node ); - object->arg.text.lines = gl_text_node_lines_new_from_text( text ); - g_free( text ); - - object->arg.text.font_family = xmlGetProp( node, "font_family" ); - object->arg.text.font_size = g_strtod( xmlGetProp( node, "font_size" ), - NULL ); - object->arg.text.font_weight = - text_to_weight( xmlGetProp( node, "font_weight" ) ); - object->arg.text.font_italic_flag = - !( g_strcasecmp( xmlGetProp( node, "font_italic" ), - "false" ) == 0 ); - - object->arg.text.just = text_to_just( xmlGetProp( node, "justify" ) ); - - sscanf( xmlGetProp( node, "color" ), "%x", &object->arg.text.color ); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Box Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_box_props (xmlNodePtr node, - glLabelObject * object) -{ - object->arg.box.w = g_strtod (xmlGetProp (node, "w"), NULL); - object->arg.box.h = g_strtod (xmlGetProp (node, "h"), NULL); - - object->arg.box.line_width = g_strtod (xmlGetProp (node, "line_width"), - NULL); - - sscanf (xmlGetProp (node, "line_color"), "%x", - &object->arg.box.line_color); - sscanf (xmlGetProp (node, "fill_color"), "%x", - &object->arg.box.fill_color); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Line Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_line_props (xmlNodePtr node, - glLabelObject * object) -{ - object->arg.line.dx = g_strtod (xmlGetProp (node, "dx"), NULL); - object->arg.line.dy = g_strtod (xmlGetProp (node, "dy"), NULL); - - object->arg.line.line_width = g_strtod (xmlGetProp (node, "line_width"), - NULL); - - sscanf (xmlGetProp (node, "line_color"), "%x", - &object->arg.line.line_color); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Ellipse Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_ellipse_props (xmlNodePtr node, - glLabelObject * object) -{ - object->arg.ellipse.w = g_strtod (xmlGetProp (node, "w"), NULL); - object->arg.ellipse.h = g_strtod (xmlGetProp (node, "h"), NULL); - - object->arg.ellipse.line_width = - g_strtod (xmlGetProp (node, "line_width"), NULL); - - sscanf (xmlGetProp (node, "line_color"), "%x", - &object->arg.ellipse.line_color); - sscanf (xmlGetProp (node, "fill_color"), "%x", - &object->arg.ellipse.fill_color); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Image Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_image_props (xmlNodePtr node, - glLabelObject * object) -{ - object->arg.image.w = g_strtod (xmlGetProp (node, "w"), NULL); - object->arg.image.h = g_strtod (xmlGetProp (node, "h"), NULL); - - object->arg.image.filename = xmlGetProp (node, "filename"); - - object->arg.image.image = - gdk_pixbuf_new_from_file (object->arg.image.filename); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Barcode Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_barcode_props (xmlNodePtr node, - glLabelObject * object) -{ - xmlNodePtr child; - - sscanf (xmlGetProp (node, "color"), "%x", &object->arg.barcode.color); - - object->arg.barcode.style = - gl_barcode_text_to_style (xmlGetProp (node, "style")); - - object->arg.barcode.text_flag = - !(g_strcasecmp (xmlGetProp (node, "text"), "false") == 0); - - object->arg.barcode.scale = - g_strtod (xmlGetProp (node, "scale"), NULL); - if (object->arg.barcode.scale == 0.0) { - object->arg.barcode.scale = 0.5; /* Set to a valid value */ - } - - child = node->xmlChildrenNode; - object->arg.barcode.text_node = g_new0 (glTextNode, 1); - if (g_strcasecmp (child->name, "Field") == 0) { - object->arg.barcode.text_node->field_flag = TRUE; - object->arg.barcode.text_node->data = - xmlGetProp (child, "name"); - } else if (xmlNodeIsText (child)) { - object->arg.barcode.text_node->field_flag = FALSE; - object->arg.barcode.text_node->data = - xmlNodeGetContent (child); - } else { - WARN ("Unexpected Barcode child: \"%s\"", child->name); - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML merge properties tag. */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_merge_properties (xmlNodePtr node, - glLabel * label) -{ - xmlNodePtr child; - glMergeFieldDefinition *field_def; - - label->merge_type = gl_merge_text_to_type (xmlGetProp (node, "type")); - label->merge_src = xmlGetProp (node, "src"); - - for (child = node->xmlChildrenNode; child != NULL; child = child->next) { - - if (g_strcasecmp (child->name, "Field") == 0) { - field_def = g_new0 (glMergeFieldDefinition, 1); - field_def->key = xmlGetProp (child, "key"); - field_def->loc = xmlGetProp (child, "loc"); - label->merge_fields = - g_list_append (label->merge_fields, field_def); - } else { - WARN ("Unexpected Merge_Properties child: \"%s\"", - child->name); - } - - } - -} - -/****************************************************************************/ -/* Save label to xml label file. */ -/****************************************************************************/ -glLabelStatus -gl_label_save_xml (glLabel * label, - const gchar * filename) -{ - xmlDocPtr doc; - glLabelStatus status; - gint xml_ret; - - status = xml_label_to_doc (label, &doc); - - xml_ret = xmlSaveFile (filename, doc); - xmlFreeDoc (doc); - if (xml_ret == -1) { - WARN (_("Problem saving xml file.")); - return LABEL_ERROR_SAVE_XML_FILE; - } - - return status; -} - -/****************************************************************************/ -/* Save label to xml buffer. */ -/****************************************************************************/ -glLabelStatus -gl_label_save_xml_buffer (glLabel * label, - gchar ** buffer) -{ - xmlDocPtr doc; - glLabelStatus status; - gint size; - - status = xml_label_to_doc (label, &doc); - - xmlDocDumpMemory (doc, (xmlChar **) buffer, &size); - xmlFreeDoc (doc); - - return status; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Convert label to xml doc structure. */ -/*--------------------------------------------------------------------------*/ -static glLabelStatus -xml_label_to_doc (glLabel * label, - xmlDocPtr * doc) -{ - xmlNsPtr ns; - gchar *string; - GList *p; - glLabelObject *object; - - LIBXML_TEST_VERSION; - - *doc = xmlNewDoc ("1.0"); - (*doc)->xmlRootNode = xmlNewDocNode (*doc, NULL, "Label", NULL); - - ns = xmlNewNs ((*doc)->xmlRootNode, NAME_SPACE, "glabels"); - xmlSetNs ((*doc)->xmlRootNode, ns); - - xmlSetProp ((*doc)->xmlRootNode, "rotate", - label->rotate_flag ? "True" : "False"); - - string = g_strdup_printf ("%g", label->width); - xmlSetProp ((*doc)->xmlRootNode, "width", string); - g_free (string); - - string = g_strdup_printf ("%g", label->height); - xmlSetProp ((*doc)->xmlRootNode, "height", string); - g_free (string); - - xml_create_media_description ((*doc)->xmlRootNode, ns, label); - - for (p = label->objects; p != NULL; p = p->next) { - object = (glLabelObject *) p->data; - xml_create_object ((*doc)->xmlRootNode, ns, object); - } - - if (label->merge_type != GL_MERGE_NONE) { - xml_create_merge_properties ((*doc)->xmlRootNode, ns, label); - } - - return LABEL_OK; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Label->Text Node */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_media_description (xmlNodePtr root, - xmlNsPtr ns, - glLabel * label) -{ - xmlNodePtr node; - - node = xmlNewTextChild (root, ns, "Media_Type", label->template_name); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML label object Node */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_object (xmlNodePtr root, - xmlNsPtr ns, - glLabelObject * object) -{ - xmlNodePtr object_node; - gchar *string; - - object_node = xmlNewChild (root, ns, "Object", NULL); - - string = g_strdup_printf ("%g", object->x); - xmlSetProp (object_node, "x", string); - g_free (string); - - string = g_strdup_printf ("%g", object->y); - xmlSetProp (object_node, "y", string); - g_free (string); - - switch (object->type) { - case GL_LABEL_OBJECT_TEXT: - xml_create_text_props (object_node, ns, object); - break; - case GL_LABEL_OBJECT_BOX: - xml_create_box_props (object_node, ns, object); - break; - case GL_LABEL_OBJECT_LINE: - xml_create_line_props (object_node, ns, object); - break; - case GL_LABEL_OBJECT_ELLIPSE: - xml_create_ellipse_props (object_node, ns, object); - break; - case GL_LABEL_OBJECT_IMAGE: - xml_create_image_props (object_node, ns, object); - break; - case GL_LABEL_OBJECT_BARCODE: - xml_create_barcode_props (object_node, ns, object); - break; - default: - WARN ("Unknown label object"); - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label->Text Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_text_props (xmlNodePtr object_node, - xmlNsPtr ns, - glLabelObject * object) -{ - xmlNodePtr line_node, field_node; - gchar *string; - GList *p_line, *p_node; - glTextNode *node_text; - - xmlNodeSetName (object_node, "Text"); - - xmlSetProp (object_node, "font_family", object->arg.text.font_family); - - string = g_strdup_printf ("%g", object->arg.text.font_size); - xmlSetProp (object_node, "font_size", string); - g_free (string); - - xmlSetProp (object_node, "font_weight", - weight_to_text (object->arg.text.font_weight)); - - if (object->arg.text.font_italic_flag) { - xmlSetProp (object_node, "font_italic", "True"); - } else { - xmlSetProp (object_node, "font_italic", "False"); - } - - xmlSetProp (object_node, "justify", - just_to_text (object->arg.text.just)); - - string = g_strdup_printf ("0x%08x", object->arg.text.color); - xmlSetProp (object_node, "color", string); - g_free (string); - - for (p_line = object->arg.text.lines; p_line != NULL; - p_line = p_line->next) { - line_node = xmlNewChild (object_node, ns, "Line", NULL); - - for (p_node = (GList *) p_line->data; p_node != NULL; - p_node = p_node->next) { - node_text = (glTextNode *) p_node->data; - - if (node_text->field_flag) { - field_node = - xmlNewChild (line_node, ns, "Field", NULL); - xmlSetProp (field_node, "name", - node_text->data); - } else { - xmlNodeAddContent (line_node, node_text->data); - } - - } - - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label->Box Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_box_props (xmlNodePtr object_node, - xmlNsPtr ns, - glLabelObject * object) -{ - gchar *string; - - xmlNodeSetName (object_node, "Box"); - - string = g_strdup_printf ("%g", object->arg.box.w); - xmlSetProp (object_node, "w", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.box.h); - xmlSetProp (object_node, "h", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.box.line_width); - xmlSetProp (object_node, "line_width", string); - g_free (string); - - string = g_strdup_printf ("0x%08x", object->arg.box.line_color); - xmlSetProp (object_node, "line_color", string); - g_free (string); - - string = g_strdup_printf ("0x%08x", object->arg.box.fill_color); - xmlSetProp (object_node, "fill_color", string); - g_free (string); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label->Line Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_line_props (xmlNodePtr object_node, - xmlNsPtr ns, - glLabelObject * object) -{ - gchar *string; - - xmlNodeSetName (object_node, "Line"); - - string = g_strdup_printf ("%g", object->arg.line.dx); - xmlSetProp (object_node, "dx", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.line.dy); - xmlSetProp (object_node, "dy", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.line.line_width); - xmlSetProp (object_node, "line_width", string); - g_free (string); - - string = g_strdup_printf ("0x%08x", object->arg.line.line_color); - xmlSetProp (object_node, "line_color", string); - g_free (string); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label->Ellipse Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_ellipse_props (xmlNodePtr object_node, - xmlNsPtr ns, - glLabelObject * object) -{ - gchar *string; - - xmlNodeSetName (object_node, "Ellipse"); - - string = g_strdup_printf ("%g", object->arg.ellipse.w); - xmlSetProp (object_node, "w", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.ellipse.h); - xmlSetProp (object_node, "h", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.ellipse.line_width); - xmlSetProp (object_node, "line_width", string); - g_free (string); - - string = g_strdup_printf ("0x%08x", object->arg.ellipse.line_color); - xmlSetProp (object_node, "line_color", string); - g_free (string); - - string = g_strdup_printf ("0x%08x", object->arg.ellipse.fill_color); - xmlSetProp (object_node, "fill_color", string); - g_free (string); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label->Image Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_image_props (xmlNodePtr object_node, - xmlNsPtr ns, - glLabelObject * object) -{ - gchar *string; - - xmlNodeSetName (object_node, "Image"); - - string = g_strdup_printf ("%g", object->arg.image.w); - xmlSetProp (object_node, "w", string); - g_free (string); - - string = g_strdup_printf ("%g", object->arg.image.h); - xmlSetProp (object_node, "h", string); - g_free (string); - - xmlSetProp (object_node, "filename", object->arg.image.filename); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label->Barcode Node Properties */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_barcode_props (xmlNodePtr object_node, - xmlNsPtr ns, - glLabelObject * object) -{ - xmlNodePtr child; - gchar *string; - - xmlNodeSetName (object_node, "Barcode"); - - string = g_strdup_printf ("0x%08x", object->arg.barcode.color); - xmlSetProp (object_node, "color", string); - g_free (string); - - xmlSetProp (object_node, "style", - gl_barcode_style_to_text (object->arg.barcode.style)); - - if (object->arg.barcode.text_flag) { - xmlSetProp (object_node, "text", "True"); - } else { - xmlSetProp (object_node, "text", "False"); - } - - string = g_strdup_printf ("%g", object->arg.barcode.scale); - xmlSetProp (object_node, "scale", string); - g_free (string); - - if (object->arg.barcode.text_node->field_flag) { - child = xmlNewChild (object_node, ns, "Field", NULL); - xmlSetProp (child, "name", - object->arg.barcode.text_node->data); - } else { - xmlNodeSetContent (object_node, - object->arg.barcode.text_node->data); - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Label Merge Properties Node */ -/*--------------------------------------------------------------------------*/ -static void -xml_create_merge_properties (xmlNodePtr root, - xmlNsPtr ns, - glLabel * label) -{ - xmlNodePtr node, child; - gchar *string; - GList *p; - glMergeFieldDefinition *field_def; - - node = xmlNewChild (root, ns, "Merge_Properties", NULL); - - string = gl_merge_type_to_text (label->merge_type); - xmlSetProp (node, "type", string); - g_free (string); - - xmlSetProp (node, "src", label->merge_src); - - for (p = label->merge_fields; p != NULL; p = p->next) { - field_def = (glMergeFieldDefinition *) p->data; - - child = xmlNewChild (node, ns, "Field", NULL); - xmlSetProp (child, "key", field_def->key); - xmlSetProp (child, "loc", field_def->loc); - } - -} - -/****************************************************************************/ -/* Create a new label object of the given type. */ -/****************************************************************************/ -glLabelObject * -gl_label_object_new (glLabel * label, - glLabelObjectType type) -{ - glLabelObject *object; - - object = g_new0 (glLabelObject, 1); - object->parent = label; - object->type = type; - - if (label != NULL) { - label->objects = g_list_append (label->objects, object); - } - - return object; -} - -/****************************************************************************/ -/* Create a new label object from an existing object */ -/****************************************************************************/ -glLabelObject * -gl_label_object_new_from_object (glLabel * label, - glLabelObject * src_object) -{ - glLabelObject *object; - GList *p_line, *nodes, *p_node; - glTextNode *node, *src_node; - - object = g_new0 (glLabelObject, 1); - *object = *src_object; - - /* deep copy */ - switch (object->type) { - - case GL_LABEL_OBJECT_TEXT: - /* deep copy */ - gl_text_node_lines_print (src_object->arg.text.lines); - object->arg.text.lines = NULL; - for (p_line = src_object->arg.text.lines; p_line != NULL; - p_line = p_line->next) { - nodes = NULL; - for (p_node = (GList *) p_line->data; p_node != NULL; - p_node = p_node->next) { - src_node = (glTextNode *) p_node->data; - node = g_new0 (glTextNode, 1); - node->field_flag = src_node->field_flag; - node->data = g_strdup (src_node->data); - nodes = g_list_append (nodes, node); - } - object->arg.text.lines = - g_list_append (object->arg.text.lines, nodes); - } - object->arg.text.font_family = - g_strdup (src_object->arg.text.font_family); - break; - - case GL_LABEL_OBJECT_IMAGE: - object->arg.image.filename - = g_strdup (src_object->arg.image.filename); - object->arg.image.image - = gdk_pixbuf_copy (src_object->arg.image.image); - break; - - case GL_LABEL_OBJECT_BARCODE: - object->arg.barcode.text_node = g_new0 (glTextNode, 1); - object->arg.barcode.text_node->field_flag = - src_object->arg.barcode.text_node->field_flag; - object->arg.barcode.text_node->data = - g_strdup (src_object->arg.barcode.text_node->data); - break; - - default: - break; - - } - - /* set parent */ - object->parent = label; - if (label != NULL) { - label->objects = g_list_append (label->objects, object); - } - - return object; -} - -/****************************************************************************/ -/* Free a previously allocated label object. */ -/****************************************************************************/ -void -gl_label_object_free (glLabelObject ** object) -{ - glLabel *label; - - switch ((*object)->type) { - - case GL_LABEL_OBJECT_TEXT: - gl_text_node_lines_free (&((*object)->arg.text.lines)); - g_free ((*object)->arg.text.font_family); - (*object)->arg.text.font_family = NULL; - break; - - case GL_LABEL_OBJECT_IMAGE: - g_free ((*object)->arg.image.filename); - (*object)->arg.image.filename = NULL; - gdk_pixbuf_unref ((*object)->arg.image.image); - (*object)->arg.image.image = NULL; - break; - - case GL_LABEL_OBJECT_BARCODE: - gl_text_node_free (&((*object)->arg.barcode.text_node)); - break; - - default: - break; - - } - - label = (*object)->parent; - if (label != NULL) { - label->objects = g_list_remove (label->objects, *object); - } - - g_free (*object); - *object = NULL; -} - -/****************************************************************************/ -/* Bring label object to front/top. */ -/****************************************************************************/ -void -gl_label_object_raise_to_front (glLabelObject * object) -{ - glLabel *label; - - label = object->parent; - - /* Move to end of list, representing front most object */ - label->objects = g_list_remove (label->objects, object); - label->objects = g_list_append (label->objects, object); -} - -/****************************************************************************/ -/* Send label object to rear/bottom. */ -/****************************************************************************/ -void -gl_label_object_lower_to_back (glLabelObject * object) -{ - glLabel *label; - - label = object->parent; - - /* Move to front of list, representing rear most object */ - label->objects = g_list_remove (label->objects, object); - label->objects = g_list_prepend (label->objects, object); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Utilities to deal with GTK_JUSTIFICATION types */ -/*--------------------------------------------------------------------------*/ -static const gchar * -just_to_text (GtkJustification just) -{ - switch (just) { - case GTK_JUSTIFY_LEFT: - return "Left"; - case GTK_JUSTIFY_CENTER: - return "Center"; - case GTK_JUSTIFY_RIGHT: - return "Right"; - default: - return "?"; - } -} - -static GtkJustification -text_to_just (const gchar * text) -{ - - if (g_strcasecmp (text, "Left") == 0) { - return GTK_JUSTIFY_LEFT; - } else if (g_strcasecmp (text, "Center") == 0) { - return GTK_JUSTIFY_CENTER; - } else if (g_strcasecmp (text, "Right") == 0) { - return GTK_JUSTIFY_RIGHT; - } else { - return GTK_JUSTIFY_LEFT; - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Utilities to deal with GNOME_FONT_WEIGHT types */ -/*--------------------------------------------------------------------------*/ -static const gchar * -weight_to_text (GnomeFontWeight weight) -{ - switch (weight) { - case GNOME_FONT_BOOK: - return "Regular"; - case GNOME_FONT_BOLD: - return "Bold"; - default: - return "?"; - } -} - -static GnomeFontWeight -text_to_weight (const gchar * text) -{ - - if (g_strcasecmp (text, "Regular") == 0) { - return GNOME_FONT_BOOK; - } else if (g_strcasecmp (text, "Bold") == 0) { - return GNOME_FONT_BOLD; - } else { - return GNOME_FONT_BOOK; - } - -} diff --git a/glabels1/src/label.h b/glabels1/src/label.h deleted file mode 100644 index e0ca5f9d..00000000 --- a/glabels1/src/label.h +++ /dev/null @@ -1,151 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * label.h: GLabels label module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __LABEL_H__ -#define __LABEL_H__ - -#include -#include -#include - -#include "merge.h" -#include "text_node.h" -#include "template.h" -#include "bc.h" - -typedef struct { - - gchar *template_name; - glTemplate *template; - gboolean rotate_flag; - - gdouble width, height; - - GList *objects; - - glMergeType merge_type; - gchar *merge_src; - GList *merge_fields; /* Merge Field Definitions */ - -} glLabel; - -typedef enum { - GL_LABEL_OBJECT_TEXT, - GL_LABEL_OBJECT_BOX, - GL_LABEL_OBJECT_LINE, - GL_LABEL_OBJECT_ELLIPSE, - GL_LABEL_OBJECT_IMAGE, - GL_LABEL_OBJECT_BARCODE, - GL_LABEL_OBJECT_N_TYPES -} glLabelObjectType; - -typedef struct { - - glLabel *parent; - - glLabelObjectType type; - gdouble x, y; - - union { - - struct { - GList *lines; /* list of glLabelTextNode lists */ - gchar *font_family; - gdouble font_size; - GnomeFontWeight font_weight; - gboolean font_italic_flag; - GtkJustification just; - guint color; - } text; - - struct { - gdouble w, h; - gdouble line_width; - guint line_color; - guint fill_color; - } box; - - struct { - gdouble dx, dy; - gdouble line_width; - guint line_color; - } line; - - struct { - gdouble w, h; - gdouble line_width; - guint line_color; - guint fill_color; - } ellipse; - - struct { - gchar *filename; - gdouble w, h; - GdkPixbuf *image; - } image; - - struct { - glTextNode *text_node; - glBarcodeStyle style; - guint color; - gboolean text_flag; - gdouble scale; - } barcode; - - } arg; - -} glLabelObject; - -typedef enum { - LABEL_UNKNOWN_MEDIA = 1, - LABEL_OK = 0, - LABEL_ERROR_OPEN_XML_PARSE = -10, - LABEL_ERROR_SAVE_XML_FILE = -20, -} glLabelStatus; - -extern glLabel *gl_label_new (void); -extern glLabel *gl_label_new_with_template (const gchar * tmplt_name, - gboolean rotate_flag); -extern void gl_label_free (glLabel ** label); - -extern glLabelStatus gl_label_open_xml (glLabel ** label, - const gchar * filename); -extern glLabelStatus gl_label_open_xml_buffer (glLabel ** label, - const gchar * buffer); - -extern glLabelStatus gl_label_save_xml (glLabel * label, - const gchar * filename); - -glLabelStatus gl_label_save_xml_buffer (glLabel * label, - gchar ** buffer); - -extern glLabelObject *gl_label_object_new (glLabel * label, - glLabelObjectType type); - -extern glLabelObject *gl_label_object_new_from_object (glLabel * label, - glLabelObject * object); - -extern void gl_label_object_free (glLabelObject ** object); - -extern void gl_label_object_raise_to_front (glLabelObject * object); -extern void gl_label_object_lower_to_back (glLabelObject * object); - -#endif diff --git a/glabels1/src/mdi.c b/glabels1/src/mdi.c deleted file mode 100644 index 4a1b17af..00000000 --- a/glabels1/src/mdi.c +++ /dev/null @@ -1,746 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * mdi.c: GLabels MDI module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include -#include -#include -#include -#include -#include - -#include "mdi.h" -#include "menu.h" -#include "display.h" -#include "label.h" -#include "util.h" - -#define DONT_DISPLAY_EXTENSION - -/*============================================*/ -/* Private types. */ -/*============================================*/ -typedef struct _Document Document; -struct _Document { - glLabel *label; - gchar *filename; - gint id; -}; - -/*============================================*/ -/* Private globals. */ -/*============================================*/ -static GnomeMDI *mdi = NULL; -static gint i_unnamed = 0; -static gint next_id = 0; - -/*===========================================*/ -/* Private function prototypes. */ -/*===========================================*/ -static void set_filename (GnomeMDIChild * child, const gchar * filename); - -static gboolean remove_child_handler (GnomeMDI * mdi, GnomeMDIChild * child, - gpointer data); - -static GnomeMDIChild *child_creator (const char *name, glLabel * label, - const char *abs_filename); - -static void child_destroyed (GnomeMDIChild * child, gpointer data); - -static void app_created_handler (GnomeMDI * mdi, GnomeApp * app, gpointer data); - -static GtkWidget *view_creator (GnomeMDIChild * child, gpointer data); - -static gchar *construct_name (GnomeMDIChild * child, const gchar * filename); - -static gboolean close_save (GnomeMDIChild * child); - -static gboolean close_save_as_dialog (GnomeMDIChild * child); - -static void close_save_as_ok_cb (GtkWidget * widget, GtkFileSelection * fsel); - -static void close_save_as_cancel_cb (GtkWidget * widget, GtkFileSelection * fsel); - -static void close_save_as_destroy_cb (GtkWidget * widget, gboolean * destroy_flag); - -/*--------------------------------------------------------------------------*/ -/* Initialize mdi module. */ -/*--------------------------------------------------------------------------*/ -GnomeMDI * -gl_mdi_init (void) -{ - mdi = GNOME_MDI (gnome_mdi_new (PACKAGE, "gLabels")); - - gl_menu_install_menus (mdi); - gl_menu_install_toolbar (mdi); - - gtk_signal_connect (GTK_OBJECT (mdi), "destroy", - GTK_SIGNAL_FUNC (gtk_main_quit), NULL); - - gtk_signal_connect (GTK_OBJECT (mdi), "remove_child", - GTK_SIGNAL_FUNC (remove_child_handler), NULL); - - gtk_signal_connect (GTK_OBJECT (mdi), "app-created", - GTK_SIGNAL_FUNC (app_created_handler), NULL); - - return mdi; -} - -/*--------------------------------------------------------------------------*/ -/* Get active window/app. */ -/*--------------------------------------------------------------------------*/ -GnomeApp * -gl_mdi_get_active_window (void) -{ - return gnome_mdi_get_active_window (mdi); -} - -/*--------------------------------------------------------------------------*/ -/* Create a new view/child with a blank document. */ -/*--------------------------------------------------------------------------*/ -gboolean -gl_mdi_new_child (const gchar * tmplt_name, - gboolean rotate_flag) -{ - gchar *name = NULL; - GnomeMDIChild *child; - - i_unnamed++; - name = g_strdup_printf ("Label%d", i_unnamed); - child = child_creator (name, - gl_label_new_with_template (tmplt_name, - rotate_flag), NULL); - g_free (name); - if (child == NULL) { - return FALSE; - } - - gnome_mdi_add_child (mdi, child); - gnome_mdi_add_view (mdi, child); - - return TRUE; -} - -/*--------------------------------------------------------------------------*/ -/* Create a new view, from xml document. */ -/*--------------------------------------------------------------------------*/ -gboolean -gl_mdi_new_child_from_xml_file (const gchar * filename) -{ - GList *p_child; - GnomeMDIChild *child; - Document *document; - gchar *abs_filename, *name; - glLabel *label = NULL; - glLabelStatus status; - GtkWidget *wdialog; - gchar *msg; - GnomeApp *app; - - abs_filename = gl_util_make_absolute (filename); - - for (p_child = mdi->children; p_child != NULL; p_child = p_child->next) { - child = GNOME_MDI_CHILD (p_child->data); - document = gtk_object_get_user_data (GTK_OBJECT (child)); - if (document->filename != NULL) { - if (strcmp (document->filename, abs_filename) == 0) { - msg = - g_strdup_printf (_ - ("Revert to saved copy of %s?"), - abs_filename); - wdialog = - gnome_message_box_new (msg, - GNOME_MESSAGE_BOX_QUESTION, - GNOME_STOCK_BUTTON_YES, - GNOME_STOCK_BUTTON_NO, - NULL); - g_free (msg); - app = - gnome_mdi_get_app_from_view (GTK_WIDGET - (child->views-> - data)); - gtk_window_set_transient_for (GTK_WINDOW - (wdialog), - GTK_WINDOW (app)); - if (gnome_dialog_run (GNOME_DIALOG (wdialog)) == - 0) { - gnome_mdi_remove_child (mdi, child, - FALSE); - break; - } else { - g_free (abs_filename); - return TRUE; - } - } - } - } - - status = gl_label_open_xml (&label, abs_filename); - if (status < LABEL_OK) { - g_free (abs_filename); - return FALSE; - } - if (status == LABEL_UNKNOWN_MEDIA) { - app = gl_mdi_get_active_window (); - wdialog = - gnome_error_dialog_parented (_ - ("Unknown media type. Using default."), - GTK_WINDOW (app)); - gtk_window_set_modal (GTK_WINDOW (wdialog), TRUE); - } - - name = construct_name (NULL, abs_filename); - child = child_creator (name, label, abs_filename); - g_free (name); - if (child == NULL) { - g_free (abs_filename); - return FALSE; - } - - gnome_mdi_add_child (mdi, child); - gnome_mdi_add_view (mdi, child); - - g_free (abs_filename); - return TRUE; -} - -/*--------------------------------------------------------------------------*/ -/* Save view to xml file. */ -/*--------------------------------------------------------------------------*/ -gboolean -gl_mdi_save_child_to_xml_file (GnomeMDIChild * child, - const gchar * filename) -{ - glDisplay *display; - glLabel *label; - - display = gl_mdi_get_display (child); - label = display->label; - if (gl_label_save_xml (label, filename) == LABEL_OK) { - gl_display_clear_modified (display); - set_filename (child, filename); - return TRUE; - } else { - return FALSE; - } - -} - -/*--------------------------------------------------------------------------*/ -/* Close view. */ -/*--------------------------------------------------------------------------*/ -void -gl_mdi_close_child (GnomeMDIChild * child) -{ - if (child != NULL) { - gnome_mdi_remove_child (mdi, child, FALSE); - } -} - -/*--------------------------------------------------------------------------*/ -/* Close all views, and exit if successful. */ -/*--------------------------------------------------------------------------*/ -void -gl_mdi_close_all (void) -{ - if (gnome_mdi_remove_all (mdi, FALSE)) { - gtk_object_destroy (GTK_OBJECT (mdi)); - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Set filename associated with document. */ -/*--------------------------------------------------------------------------*/ -void -set_filename (GnomeMDIChild * child, - const gchar * filename) -{ - Document *document; - gchar *name; - - document = gtk_object_get_user_data (GTK_OBJECT (child)); - - g_free (document->filename); - document->filename = g_strdup (filename); - - name = construct_name (child, filename); - gnome_mdi_child_set_name (child, name); - g_free (name); -} - -/*--------------------------------------------------------------------------*/ -/* Get filename associated with document. */ -/*--------------------------------------------------------------------------*/ -gchar * -gl_mdi_get_filename (GnomeMDIChild * child) -{ - Document *document; - - document = gtk_object_get_user_data (GTK_OBJECT (child)); - - return g_strdup (document->filename); -} - -/*--------------------------------------------------------------------------*/ -/* Get base filename of document. */ -/*--------------------------------------------------------------------------*/ -gchar * -gl_mdi_get_basename (GnomeMDIChild * child) -{ - Document *document; - - document = gtk_object_get_user_data (GTK_OBJECT (child)); - - if (document->filename != NULL) { - return g_strdup (g_basename (document->filename)); - } else { - return NULL; - } -} - -/*--------------------------------------------------------------------------*/ -/*--------------------------------------------------------------------------*/ -GList * -gl_mdi_get_displays_in_current_window (void) -{ - GnomeApp *app; - GList *p_child; - GnomeMDIChild *child; - GtkWidget *view; - GList *views = NULL; - - app = gnome_mdi_get_active_window (mdi); - - for (p_child = mdi->children; p_child != NULL; p_child = p_child->next) { - child = GNOME_MDI_CHILD (p_child->data); - view = GTK_WIDGET (child->views->data); - if (gnome_mdi_get_app_from_view (view) == app) { - views = g_list_prepend (views, view); - } - } - - return views; -} - -/*--------------------------------------------------------------------------*/ -/* Get label display associated with document. */ -/*--------------------------------------------------------------------------*/ -glDisplay * -gl_mdi_get_display (GnomeMDIChild * child) -{ - if (child == NULL) - return NULL; - if (child->views == NULL) - return NULL; - return GL_DISPLAY (child->views->data); -} - -/*--------------------------------------------------------------------------*/ -/* Get label associated with document. */ -/*--------------------------------------------------------------------------*/ -glLabel * -gl_mdi_get_label (GnomeMDIChild * child) -{ - glDisplay *display; - - display = gl_mdi_get_display (child); - return display->label; -} - -/*--------------------------------------------------------------------------*/ -/* Get uniq id associated with document. */ -/*--------------------------------------------------------------------------*/ -gint -gl_mdi_get_id (GnomeMDIChild * child) -{ - Document *document; - - document = gtk_object_get_user_data (GTK_OBJECT (child)); - - return document->id; -} - -/*--------------------------------------------------------------------------*/ -/* Find child associated with given id. This allows us to verify that a */ -/* child still exists from a non-modal dialog, e.g. if you close a child */ -/* while you have a print or save as dialog open for that child. */ -/*--------------------------------------------------------------------------*/ -GnomeMDIChild * -gl_mdi_find_child (gint id) -{ - GList *p_child; - GnomeMDIChild *child; - Document *document; - - for (p_child = mdi->children; p_child != NULL; p_child = p_child->next) { - child = GNOME_MDI_CHILD (p_child->data); - document = gtk_object_get_user_data (GTK_OBJECT (child)); - if (document->id == id) { - return child; - } - } - - return NULL; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Create a new child. */ -/*--------------------------------------------------------------------------*/ -static GnomeMDIChild * -child_creator (const char *name, - glLabel * label, - const char *abs_filename) -{ - GnomeMDIGenericChild *child; - Document *document; - - document = g_new0 (Document, 1); - - document->label = label; - document->filename = g_strdup (abs_filename); - document->id = next_id++; - - child = gnome_mdi_generic_child_new (name); - - gtk_object_set_user_data (GTK_OBJECT (child), document); - - gnome_mdi_generic_child_set_view_creator (child, view_creator, NULL); - - gtk_signal_connect (GTK_OBJECT (child), "destroy", - GTK_SIGNAL_FUNC (child_destroyed), document); - - return GNOME_MDI_CHILD (child); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Handle remove child signal. */ -/*--------------------------------------------------------------------------*/ -static gboolean -remove_child_handler (GnomeMDI * mdi, - GnomeMDIChild * child, - gpointer data) -{ - GtkWidget *wdialog; - gchar *msg; - GnomeApp *app = gnome_mdi_get_active_window (mdi); - Document *document; - glDisplay *display; - - display = gl_mdi_get_display (child); - document = gtk_object_get_user_data (GTK_OBJECT (child)); - - if (gl_display_modified (display)) { - msg = - g_strdup_printf (_ - ("``%s'' has been modified.\n\nDo you wish to save it?"), - child->name); - wdialog = - gnome_message_box_new (msg, GNOME_MESSAGE_BOX_WARNING, - "Save", _("Don't save"), - GNOME_STOCK_BUTTON_CANCEL, NULL); - g_free (msg); - gtk_window_set_transient_for (GTK_WINDOW (wdialog), - GTK_WINDOW (app)); - switch (gnome_dialog_run (GNOME_DIALOG (wdialog))) { - - case 0: /* Yes / Save */ - if (document->filename != NULL) { - return close_save (child); - } else { - return close_save_as_dialog (child); - } - - case 1: /* No / Don't save */ - return TRUE; - - default: /* Cancel operation */ - return FALSE; - } - } else { - return TRUE; - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Handle destroy child signal. */ -/*--------------------------------------------------------------------------*/ -static void -child_destroyed (GnomeMDIChild * child, - gpointer data) -{ - Document *document = data; - - gl_label_free (&document->label); - g_free (document->filename); - document->filename = NULL; - - g_free (document); - gtk_object_set_user_data (GTK_OBJECT (child), NULL); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Handle "app-created" signal. */ -/*--------------------------------------------------------------------------*/ -static void -app_created_handler (GnomeMDI * mdi, - GnomeApp * app, - gpointer data) -{ - GtkWidget *status; - - status = gnome_appbar_new (FALSE, TRUE, GNOME_PREFERENCES_NEVER); - gnome_app_set_statusbar (app, status); - - gnome_app_install_menu_hints (app, - gnome_mdi_get_menubar_info (mdi-> - active_window)); - - gl_menu_install_tools_toolbar (mdi, app); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. View creator. */ -/*--------------------------------------------------------------------------*/ -static GtkWidget * -view_creator (GnomeMDIChild * child, - gpointer data) -{ - GtkWidget *widget; - Document *document; - - document = gtk_object_get_user_data (GTK_OBJECT (child)); - - widget = gl_display_new (document->label); - gtk_widget_show_all (widget); - - return widget; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Construct a child name, based on filename. */ -/*--------------------------------------------------------------------------*/ -static gchar * -construct_name (GnomeMDIChild * my_child, - const gchar * filename) -{ - gchar *name, *test_name, *final_name; - gint test_name_length; - GList *p_child; - gint duplicates = 0; - GnomeMDIChild *child; - - name = g_strdup (g_basename (filename)); -#ifdef DONT_DISPLAY_EXTENSION - { - gchar *p_extension = strrchr (name, '.'); - if (p_extension != NULL) - *p_extension = 0; /* wipe out extension */ - } -#endif - test_name = g_strdup_printf ("%s <", name); - test_name_length = strlen (test_name); - - for (p_child = mdi->children; p_child != NULL; p_child = p_child->next) { - child = GNOME_MDI_CHILD (p_child->data); - if (my_child != child) { - if (strcmp (child->name, name) == 0) { - duplicates++; - } - if (strncmp (child->name, test_name, test_name_length) - == 0) { - duplicates++; - } - } - } - g_free (test_name); - - if (duplicates > 0) { - final_name = g_strdup_printf ("%s <%d>", name, duplicates + 1); - } else { - final_name = g_strdup (name); - } - - g_free (name); - return final_name; - -} - -/*=================================================================*/ -/* PRIVATE. Save a document on close. */ -/*=================================================================*/ -static gboolean -close_save (GnomeMDIChild * child) -{ - Document *document = gtk_object_get_user_data (GTK_OBJECT (child)); - GtkWidget *dlg; - GnomeApp *app = gnome_mdi_get_active_window (mdi); - - if (gl_mdi_save_child_to_xml_file (child, document->filename)) { - return TRUE; - } else { - dlg = gnome_error_dialog_parented (_("Cannot save file"), - GTK_WINDOW (app)); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - return FALSE; - } -} - -/*=================================================================*/ -/* PRIVATE. Special modal "Save As" dialog for closing children. */ -/*=================================================================*/ -static gboolean -close_save_as_dialog (GnomeMDIChild * child) -{ - GtkFileSelection *fsel; - GnomeApp *app = gnome_mdi_get_active_window (mdi); - gint id; - gboolean flag = FALSE; - gboolean destroy_flag = FALSE; - - g_return_val_if_fail (child != NULL, FALSE); - g_return_val_if_fail (app != NULL, FALSE); - - fsel = GTK_FILE_SELECTION (gtk_file_selection_new (_("Save As"))); - gtk_window_set_modal (GTK_WINDOW (fsel), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (fsel), GTK_WINDOW (app)); - gtk_window_set_title (GTK_WINDOW (fsel), _("Close / Save label as")); - - id = gl_mdi_get_id (child); - gtk_object_set_data (GTK_OBJECT (fsel), "id", GINT_TO_POINTER (id)); - gtk_object_set_data (GTK_OBJECT (fsel), "flag", &flag); - - gtk_signal_connect (GTK_OBJECT (fsel->ok_button), "clicked", - GTK_SIGNAL_FUNC (close_save_as_ok_cb), fsel); - - gtk_signal_connect (GTK_OBJECT (fsel->cancel_button), "clicked", - GTK_SIGNAL_FUNC (close_save_as_cancel_cb), fsel); - - gtk_signal_connect (GTK_OBJECT (fsel), "destroy", - GTK_SIGNAL_FUNC (close_save_as_destroy_cb), - &destroy_flag); - - /* show the dialog */ - gtk_widget_show (GTK_WIDGET (fsel)); - - /* Hold here and process events until we are done with this dialog. */ - gtk_main (); - - /* Destroy dialog if not already destroyed. */ - if (!destroy_flag) { - /* Disconnect our destroy callback first, so that we don't kill the - * current gtk_main() loop. */ - gtk_signal_disconnect_by_func (GTK_OBJECT (fsel), - GTK_SIGNAL_FUNC - (close_save_as_destroy_cb), - &destroy_flag); - gtk_widget_destroy (GTK_WIDGET (fsel)); - } - - /* Return flag as set by one of the above callbacks, TRUE = saved */ - return flag; -} - -/*==============================================*/ -/* PRIVATE. "Save As" ok button callback. */ -/*==============================================*/ -static void -close_save_as_ok_cb (GtkWidget * widget, - GtkFileSelection * fsel) -{ - gchar *raw_filename, *filename; - GtkWidget *dlg; - gint id = - GPOINTER_TO_INT (gtk_object_get_data (GTK_OBJECT (fsel), "id")); - GnomeMDIChild *child = gl_mdi_find_child (id); - gboolean *flag = gtk_object_get_data (GTK_OBJECT (fsel), "flag"); - - g_return_if_fail (GTK_IS_FILE_SELECTION (fsel)); - - if (child == NULL) { - dlg = gnome_error_dialog (_("Label no longer valid!")); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - *flag = TRUE; - gtk_widget_hide (GTK_WIDGET (fsel)); - gtk_main_quit (); - return; - } - - /* get the filename */ - raw_filename = g_strdup (gtk_file_selection_get_filename (fsel)); - - if (!raw_filename || (raw_filename[strlen (raw_filename) - 1] == '/')) { - - dlg = gnome_warning_dialog_parented (_("Must supply file name"), - GTK_WINDOW (fsel)); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - - } else { - - filename = gl_util_add_extension (raw_filename); - - if (!gl_mdi_save_child_to_xml_file (child, filename)) { - - dlg = - gnome_error_dialog_parented (_ - ("Error writing file"), - GTK_WINDOW (fsel)); - gtk_window_set_modal (GTK_WINDOW (dlg), TRUE); - - } else { - *flag = TRUE; - gtk_widget_hide (GTK_WIDGET (fsel)); - gtk_main_quit (); - } - - g_free (filename); - } - - g_free (raw_filename); -} - -/*==============================================*/ -/* PRIVATE. "Save As" cancel button callback. */ -/*==============================================*/ -static void -close_save_as_cancel_cb (GtkWidget * widget, - GtkFileSelection * fsel) -{ - gboolean *flag = gtk_object_get_data (GTK_OBJECT (fsel), "flag"); - - g_return_if_fail (GTK_IS_FILE_SELECTION (fsel)); - - *flag = FALSE; - gtk_widget_hide (GTK_WIDGET (fsel)); - gtk_main_quit (); -} - -/*==============================================*/ -/* PRIVATE. "Save As" destroy callback. */ -/*==============================================*/ -static void -close_save_as_destroy_cb (GtkWidget * widget, - gboolean * destroy_flag) -{ - *destroy_flag = TRUE; - gtk_main_quit (); -} diff --git a/glabels1/src/mdi.h b/glabels1/src/mdi.h deleted file mode 100644 index faeeedcf..00000000 --- a/glabels1/src/mdi.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * mdi.h: GLabels MDI module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __MDI_H__ -#define __MDI_H__ - -#include -#include - -extern GnomeMDI *gl_mdi_init (void); -extern GnomeApp *gl_mdi_get_active_window (void); - -extern gboolean gl_mdi_new_child (const gchar * tmplt_name, - gboolean rotate_flag); -extern gboolean gl_mdi_new_child_from_xml_file (const gchar * filename); - -extern gboolean gl_mdi_save_child_to_xml_file (GnomeMDIChild * child, - const gchar * filename); - -extern void gl_mdi_close_child (GnomeMDIChild * child); -extern void gl_mdi_close_all (void); - -extern gchar *gl_mdi_get_filename (GnomeMDIChild * child); -extern gchar *gl_mdi_get_basename (GnomeMDIChild * child); - -extern GList *gl_mdi_get_displays_in_current_window (void); -extern glDisplay *gl_mdi_get_display (GnomeMDIChild * child); -extern glLabel *gl_mdi_get_label (GnomeMDIChild * child); - -extern gint gl_mdi_get_id (GnomeMDIChild * child); -extern GnomeMDIChild *gl_mdi_find_child (gint id); - -#endif /* __MDI_H__ */ diff --git a/glabels1/src/media_select.c b/glabels1/src/media_select.c deleted file mode 100644 index 6d829466..00000000 --- a/glabels1/src/media_select.c +++ /dev/null @@ -1,457 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * media_select.c: media selection widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "media_select.h" -#include "template.h" -#include "mini_preview.h" -#include "prefs.h" -#include "util.h" - -#include "debug.h" - -#define MINI_PREVIEW_WIDTH 160 -#define MINI_PREVIEW_HEIGHT 200 - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glMediaSelectSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint media_select_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_media_select_class_init (glMediaSelectClass * class); -static void gl_media_select_init (glMediaSelect * media_select); -static void gl_media_select_destroy (GtkObject * object); - -static void gl_media_select_construct (glMediaSelect * media_select); - -static void page_size_entry_changed_cb (GtkEntry * entry, gpointer user_data); -static void template_entry_changed_cb (GtkEntry * entry, gpointer user_data); - -static void details_update (glMediaSelect * media_select, gchar * name); - -/****************************************************************************/ -/* Boilerplate Object stuff. */ -/****************************************************************************/ -guint -gl_media_select_get_type (void) -{ - static guint media_select_type = 0; - - if (!media_select_type) { - GtkTypeInfo media_select_info = { - "glMediaSelect", - sizeof (glMediaSelect), - sizeof (glMediaSelectClass), - (GtkClassInitFunc) gl_media_select_class_init, - (GtkObjectInitFunc) gl_media_select_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - media_select_type = gtk_type_unique (gtk_vbox_get_type (), - &media_select_info); - } - - return media_select_type; -} - -static void -gl_media_select_class_init (glMediaSelectClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_media_select_destroy; - - media_select_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMediaSelectClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, media_select_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_media_select_init (glMediaSelect * media_select) -{ - media_select->page_size_entry = NULL; - media_select->template_entry = NULL; - - media_select->mini_preview = NULL; - - media_select->desc_label = NULL; - media_select->sheet_size_label = NULL; - media_select->number_label = NULL; - media_select->label_size_label = NULL; -} - -static void -gl_media_select_destroy (GtkObject * object) -{ - glMediaSelect *media_select; - glMediaSelectClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_MEDIA_SELECT (object)); - - media_select = GL_MEDIA_SELECT (object); - class = GL_MEDIA_SELECT_CLASS (GTK_OBJECT (media_select)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_media_select_new (void) -{ - glMediaSelect *media_select; - - media_select = gtk_type_new (gl_media_select_get_type ()); - - gl_media_select_construct (media_select); - - return GTK_WIDGET (media_select); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Construct composite widget. */ -/*--------------------------------------------------------------------------*/ -static void -gl_media_select_construct (glMediaSelect * media_select) -{ - GtkWidget *whbox, *wvbox, *wcombo, *wvbox1, *whbox1; - gchar *name; - GList *template_names, *page_sizes = NULL; - const gchar *page_size; - - page_size = gl_prefs_get_page_size (); - - wvbox = GTK_WIDGET (media_select); - - whbox = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (wvbox), whbox, TRUE, TRUE, GNOME_PAD); - - /* Page size selection control */ - wcombo = gtk_combo_new (); - page_sizes = g_list_append (page_sizes, "US-Letter"); - page_sizes = g_list_append (page_sizes, "A4"); - gtk_combo_set_popdown_strings (GTK_COMBO (wcombo), page_sizes); - g_list_free (page_sizes); - media_select->page_size_entry = GTK_COMBO (wcombo)->entry; - gtk_entry_set_editable (GTK_ENTRY (media_select->page_size_entry), - FALSE); - gtk_widget_set_usize (media_select->page_size_entry, 100, 0); - gtk_entry_set_text (GTK_ENTRY (media_select->page_size_entry), - page_size); - gtk_box_pack_start (GTK_BOX (whbox), wcombo, FALSE, FALSE, GNOME_PAD); - - /* Actual selection control */ - template_names = gl_template_get_name_list (page_size); - media_select->template_combo = gtk_combo_new (); - gtk_combo_set_popdown_strings (GTK_COMBO (media_select->template_combo), - template_names); - gl_template_free_name_list (&template_names); - media_select->template_entry = - GTK_COMBO (media_select->template_combo)->entry; - gtk_entry_set_editable (GTK_ENTRY (media_select->template_entry), - FALSE); - gtk_widget_set_usize (media_select->template_entry, 400, 0); - gtk_box_pack_start (GTK_BOX (whbox), media_select->template_combo, - FALSE, FALSE, GNOME_PAD); - - whbox = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (wvbox), whbox, TRUE, TRUE, GNOME_PAD); - - /* mini_preview canvas */ - media_select->mini_preview = gl_mini_preview_new ( MINI_PREVIEW_HEIGHT, - MINI_PREVIEW_WIDTH); - gtk_box_pack_start (GTK_BOX (whbox), media_select->mini_preview, - FALSE, FALSE, GNOME_PAD); - - /* Label column */ - wvbox1 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (whbox), wvbox1, FALSE, FALSE, 0); - - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (whbox1), - gtk_label_new (_("Description:")), - FALSE, FALSE, GNOME_PAD); - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (whbox1), - gtk_label_new (_("Page size:")), - FALSE, FALSE, GNOME_PAD); - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (whbox1), - gtk_label_new (_("Label size:")), - FALSE, FALSE, GNOME_PAD); - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (whbox1), - gtk_label_new (_("Layout:")), - FALSE, FALSE, GNOME_PAD); - - /* detail widgets column */ - wvbox1 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (whbox), wvbox1, FALSE, FALSE, 0); - - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - media_select->desc_label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (whbox1), media_select->desc_label, - FALSE, FALSE, GNOME_PAD); - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - media_select->sheet_size_label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (whbox1), media_select->sheet_size_label, - FALSE, FALSE, GNOME_PAD); - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - media_select->label_size_label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (whbox1), media_select->label_size_label, - FALSE, FALSE, GNOME_PAD); - whbox1 = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start (GTK_BOX (wvbox1), whbox1, FALSE, FALSE, 0); - media_select->number_label = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (whbox1), media_select->number_label, - FALSE, FALSE, GNOME_PAD); - - /* Update mini_preview and details from default template */ - name = - gtk_editable_get_chars (GTK_EDITABLE (media_select->template_entry), - 0, -1); - gl_mini_preview_set_label (GL_MINI_PREVIEW (media_select->mini_preview), - name); - details_update (media_select, name); - g_free (name); - - /* Connect signals to controls */ - gtk_signal_connect (GTK_OBJECT (media_select->page_size_entry), - "changed", - GTK_SIGNAL_FUNC (page_size_entry_changed_cb), - media_select); - gtk_signal_connect (GTK_OBJECT (media_select->template_entry), - "changed", - GTK_SIGNAL_FUNC (template_entry_changed_cb), - media_select); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. modify widget due to change in selection */ -/*--------------------------------------------------------------------------*/ -static void -page_size_entry_changed_cb (GtkEntry * entry, - gpointer user_data) -{ - glMediaSelect *media_select = GL_MEDIA_SELECT (user_data); - gchar *page_size; - GList *template_names; - - /* Update template selections for new page size */ - page_size = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); - template_names = gl_template_get_name_list (page_size); - gtk_combo_set_popdown_strings (GTK_COMBO (media_select->template_combo), - template_names); - gl_template_free_name_list (&template_names); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. modify widget due to change in selection */ -/*--------------------------------------------------------------------------*/ -static void -template_entry_changed_cb (GtkEntry * entry, - gpointer user_data) -{ - glMediaSelect *media_select = GL_MEDIA_SELECT (user_data); - gchar *name; - - /* Update mini_preview canvas & details with template */ - name = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1); - gl_mini_preview_set_label (GL_MINI_PREVIEW (media_select->mini_preview), - name); - details_update (media_select, name); - g_free (name); - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (user_data), media_select_signals[CHANGED]); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. update "details" widgets from new template. */ -/*--------------------------------------------------------------------------*/ -static void -details_update (glMediaSelect * media_select, - gchar * name) -{ - glTemplate *template; - gchar *text; - glPrefsUnits units; - const gchar *units_string; - gdouble units_per_point; - - units = gl_prefs_get_units (); - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - - /* Fetch template */ - template = gl_template_from_name (name); - - gtk_label_set_text (GTK_LABEL (media_select->desc_label), - template->description); - - gtk_label_set_text (GTK_LABEL (media_select->sheet_size_label), - template->page_size); - - text = g_strdup_printf (_("%d x %d (%d per sheet)"), - template->nx, template->ny, - template->nx * template->ny); - - gtk_label_set_text (GTK_LABEL (media_select->number_label), text); - g_free (text); - - if ( units == GL_PREFS_UNITS_INCHES ) { - gchar *xstr, *ystr; - - xstr = gl_util_fraction (template->label_height - * units_per_point); - ystr = gl_util_fraction (template->label_width - * units_per_point); - text = g_strdup_printf (_("%s x %s %s"), - xstr, ystr, units_string); - g_free (xstr); - g_free (ystr); - } else { - text = g_strdup_printf (_("%.5g x %.5g %s"), - template->label_height*units_per_point, - template->label_width*units_per_point, - units_string); - } - gtk_label_set_text (GTK_LABEL (media_select->label_size_label), text); - g_free (text); - - gl_template_free( &template ); -} - -/****************************************************************************/ -/* query selected label template name. */ -/****************************************************************************/ -gchar * -gl_media_select_get_name (glMediaSelect * media_select) -{ - return - gtk_editable_get_chars (GTK_EDITABLE (media_select->template_entry), - 0, -1); -} - -/****************************************************************************/ -/* set selected label template name. */ -/****************************************************************************/ -void -gl_media_select_set_name (glMediaSelect * media_select, - gchar * name) -{ - gint pos; - - gtk_signal_handler_block_by_func (GTK_OBJECT - (media_select->template_entry), - GTK_SIGNAL_FUNC - (template_entry_changed_cb), - media_select); - gtk_editable_delete_text (GTK_EDITABLE (media_select->template_entry), - 0, -1); - gtk_signal_handler_unblock_by_func (GTK_OBJECT - (media_select->template_entry), - GTK_SIGNAL_FUNC - (template_entry_changed_cb), - media_select); - - pos = 0; - gtk_editable_insert_text (GTK_EDITABLE (media_select->template_entry), - name, strlen (name), &pos); -} - -/****************************************************************************/ -/* query selected label template page size. */ -/****************************************************************************/ -gchar * -gl_media_select_get_page_size (glMediaSelect * media_select) -{ - return - gtk_editable_get_chars (GTK_EDITABLE - (media_select->page_size_entry), 0, -1); -} - -/****************************************************************************/ -/* set selected label template page size. */ -/****************************************************************************/ -void -gl_media_select_set_page_size (glMediaSelect * media_select, - gchar * page_size) -{ - gint pos; - - gtk_signal_handler_block_by_func (GTK_OBJECT - (media_select->page_size_entry), - GTK_SIGNAL_FUNC - (page_size_entry_changed_cb), - media_select); - gtk_editable_delete_text (GTK_EDITABLE (media_select->page_size_entry), - 0, -1); - gtk_signal_handler_unblock_by_func (GTK_OBJECT - (media_select->page_size_entry), - GTK_SIGNAL_FUNC - (page_size_entry_changed_cb), - media_select); - - pos = 0; - gtk_editable_insert_text (GTK_EDITABLE (media_select->page_size_entry), - page_size, strlen (page_size), &pos); -} diff --git a/glabels1/src/media_select.h b/glabels1/src/media_select.h deleted file mode 100644 index 4d4af21c..00000000 --- a/glabels1/src/media_select.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * media_select.h: media selection widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __MEDIA_SELECT_H__ -#define __MEDIA_SELECT_H__ - -#include - -#define GL_TYPE_MEDIA_SELECT (gl_media_select_get_type ()) -#define GL_MEDIA_SELECT(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_MEDIA_SELECT, glMediaSelect )) -#define GL_MEDIA_SELECT_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MEDIA_SELECT, glMediaSelectClass)) -#define GL_IS_MEDIA_SELECT(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_MEDIA_SELECT)) -#define GL_IS_MEDIA_SELECT_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MEDIA_SELECT)) - -typedef struct _glMediaSelect glMediaSelect; -typedef struct _glMediaSelectClass glMediaSelectClass; - -struct _glMediaSelect { - GtkVBox parent_widget; - - GtkWidget *page_size_entry; - GtkWidget *template_combo; - GtkWidget *template_entry; - - GtkWidget *mini_preview; - - GtkWidget *desc_label; - GtkWidget *sheet_size_label; - GtkWidget *number_label; - GtkWidget *label_size_label; -}; - -struct _glMediaSelectClass { - GtkVBoxClass parent_class; - - void (*changed) (glMediaSelect * media_select, gpointer user_data); -}; - -extern guint gl_media_select_get_type (void); - -extern GtkWidget *gl_media_select_new (void); - -extern gchar *gl_media_select_get_name (glMediaSelect * media_select); - -extern void gl_media_select_set_name (glMediaSelect * media_select, - gchar * name); - -extern gchar *gl_media_select_get_page_size (glMediaSelect * media_select); - -extern void gl_media_select_set_page_size (glMediaSelect * media_select, - gchar * page_size); - -#endif diff --git a/glabels1/src/menu.c b/glabels1/src/menu.c deleted file mode 100644 index 283e2f59..00000000 --- a/glabels1/src/menu.c +++ /dev/null @@ -1,328 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * menu.c: Menu module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "menu.h" -#include "stock.h" -#include "file.h" -#include "print_dialog.h" -#include "edit.h" -#include "prefs.h" -#include "tools.h" - -#ifdef PACKAGE_DATA_DIR -#define LOGO_PIXMAP (PACKAGE_DATA_DIR "/pixmaps/glabels/glabels-about-logo.png") -#else -#define LOGO_PIXMAP gnome_pixmap_file("glabels/glabels-about-logo.png") -#endif - -/*===========================================*/ -/* Private function prototypes. */ -/*===========================================*/ -static void about_cb (GtkWidget * widget, gpointer data); -static void nothing_cb (GtkWidget * widget, gpointer data); - -/*===========================================*/ -/* Menu definitions */ -/*===========================================*/ - -static GnomeUIInfo menu_file[] = { - GNOMEUIINFO_MENU_NEW_ITEM (N_("_New"), - N_("Make a new, empty label"), - gl_file_new_cb, NULL), - - GNOMEUIINFO_MENU_OPEN_ITEM (gl_file_open_cb, NULL), - - GNOMEUIINFO_MENU_SAVE_ITEM (gl_file_save_cb, NULL), - - GNOMEUIINFO_MENU_SAVE_AS_ITEM (gl_file_save_as_cb, NULL), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_MENU_PRINT_ITEM (gl_print_dialog_cb, NULL), - - GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_MENU_CLOSE_ITEM (gl_file_close_cb, NULL), - GNOMEUIINFO_MENU_EXIT_ITEM (gl_file_exit_cb, NULL), - GNOMEUIINFO_END -}; - -static GnomeUIInfo menu_edit[] = { -#ifdef UNDO_REDO - GNOMEUIINFO_MENU_UNDO_ITEM (nothing_cb, NULL), - GNOMEUIINFO_MENU_REDO_ITEM (nothing_cb, NULL), - - GNOMEUIINFO_SEPARATOR, -#endif - - GNOMEUIINFO_MENU_CUT_ITEM (gl_edit_cut_cb, NULL), - GNOMEUIINFO_MENU_COPY_ITEM (gl_edit_copy_cb, NULL), - GNOMEUIINFO_MENU_PASTE_ITEM (gl_edit_paste_cb, NULL), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_MENU_SELECT_ALL_ITEM (gl_edit_select_all_cb, NULL), - GNOMEUIINFO_ITEM_NONE (N_("U_nselect All "), - N_("Remove all selections"), - gl_edit_unselect_cb), - - GNOMEUIINFO_END -}; - -static GnomeUIInfo menu_tools[] = { - - GNOMEUIINFO_ITEM_STOCK (N_("Select"), - N_("Select, move and modify objects"), - gl_tools_arrow_cb, GL_STOCK_PIXMAP_ARROW), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_ITEM_NONE (N_("Text"), N_("Create text object"), - gl_tools_text_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Box"), N_("Create box/rectangle object"), - gl_tools_box_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Line"), N_("Create line object"), - gl_tools_line_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Ellipse"), - N_("Create ellipse/circle object"), - gl_tools_ellipse_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Image"), N_("Create image object"), - gl_tools_image_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Barcode"), N_("Create barcode object"), - gl_tools_barcode_cb), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_ITEM_NONE (N_("Zoom in"), N_("Zoom in"), - gl_tools_zoomin_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Zoom out"), N_("Zoom out"), - gl_tools_zoomout_cb), - - GNOMEUIINFO_ITEM_NONE (N_("Zoom 1:1"), N_("Zoom to 1:1"), - gl_tools_zoom1to1_cb), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_ITEM_NONE (N_("Merge properties"), - N_("Edit merge properties"), - gl_tools_merge_properties_cb), - - GNOMEUIINFO_END -}; - -static GnomeUIInfo menu_settings[] = { - GNOMEUIINFO_MENU_PREFERENCES_ITEM (gl_prefs_cb, NULL), - GNOMEUIINFO_END -}; - -static GnomeUIInfo menu_windows[] = { - GNOMEUIINFO_END -}; - -static GnomeUIInfo menu_help[] = { - GNOMEUIINFO_HELP ("glabels"), - GNOMEUIINFO_MENU_ABOUT_ITEM (about_cb, NULL), - GNOMEUIINFO_END -}; - -static GnomeUIInfo menu_main[] = { - GNOMEUIINFO_MENU_FILE_TREE (menu_file), - GNOMEUIINFO_MENU_EDIT_TREE (menu_edit), - GNOMEUIINFO_SUBTREE (N_("_Tools"), menu_tools), - GNOMEUIINFO_MENU_SETTINGS_TREE (menu_settings), - GNOMEUIINFO_MENU_WINDOWS_TREE (menu_windows), - GNOMEUIINFO_MENU_HELP_TREE (menu_help), - GNOMEUIINFO_END -}; - -/*===========================================*/ -/* Toolbar definitions */ -/*===========================================*/ -static GnomeUIInfo toolbar[] = { - GNOMEUIINFO_ITEM_STOCK (N_(" New "), N_("New Label/Card"), - gl_file_new_cb, GNOME_STOCK_PIXMAP_NEW), - GNOMEUIINFO_ITEM_STOCK (N_(" Open "), N_("Open a file"), - gl_file_open_cb, GNOME_STOCK_PIXMAP_OPEN), - GNOMEUIINFO_ITEM_STOCK (N_(" Save "), N_("Save current file"), - gl_file_save_cb, GNOME_STOCK_PIXMAP_SAVE), - GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_ITEM_STOCK (N_(" Print "), N_("Print current file"), - gl_print_dialog_cb, GNOME_STOCK_PIXMAP_PRINT), - GNOMEUIINFO_SEPARATOR, - GNOMEUIINFO_END -}; - -/*****************************************************************************/ -/* Drawing tools toolbar definitions */ -/*****************************************************************************/ -static GnomeUIInfo tools_toolbar[] = { - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Select, move and modify objects"), - gl_tools_arrow_cb, GL_STOCK_PIXMAP_ARROW), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Create text object"), - gl_tools_text_cb, GL_STOCK_PIXMAP_TEXT), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Create box/rectangle object"), - gl_tools_box_cb, GL_STOCK_PIXMAP_BOX), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Create line object"), - gl_tools_line_cb, GL_STOCK_PIXMAP_LINE), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Create ellipse/circle object"), - gl_tools_ellipse_cb, GL_STOCK_PIXMAP_ELLIPSE), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Create image object"), - gl_tools_image_cb, GL_STOCK_PIXMAP_IMAGE), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Create barcode object"), - gl_tools_barcode_cb, GL_STOCK_PIXMAP_BARCODE), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Zoom in"), - gl_tools_zoomin_cb, GL_STOCK_PIXMAP_ZOOMIN), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Zoom out"), - gl_tools_zoomout_cb, GL_STOCK_PIXMAP_ZOOMOUT), - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Zoom to 1:1"), - gl_tools_zoom1to1_cb, - GL_STOCK_PIXMAP_ZOOM1TO1), - - GNOMEUIINFO_SEPARATOR, - - GNOMEUIINFO_ITEM_STOCK (NULL, N_("Merge properties"), - gl_tools_merge_properties_cb, - GL_STOCK_PIXMAP_MERGE), - - GNOMEUIINFO_END -}; - - -/****************************************************************************/ -/* Install menus templates in mdi. */ -/****************************************************************************/ -void -gl_menu_install_menus (GnomeMDI * mdi) -{ - gnome_mdi_set_menubar_template (mdi, menu_main); - gnome_mdi_set_child_list_path (mdi, GNOME_MENU_WINDOWS_PATH); -} - -/****************************************************************************/ -/* Install toolbar in application window. */ -/****************************************************************************/ -void -gl_menu_install_toolbar (GnomeMDI * mdi) -{ - gnome_mdi_set_toolbar_template (mdi, toolbar); -} - -/*****************************************************************************/ -/* Install drawing tools toolbar in application window. */ -/*****************************************************************************/ -void -gl_menu_install_tools_toolbar (GnomeMDI * mdi, - GnomeApp * app) -{ - GtkWidget *toolbar; - - toolbar = gtk_toolbar_new (GTK_ORIENTATION_VERTICAL, - GTK_TOOLBAR_ICONS); - - gnome_app_fill_toolbar_with_data (GTK_TOOLBAR (toolbar), tools_toolbar, - NULL, mdi); - gnome_app_add_toolbar (GNOME_APP (app), GTK_TOOLBAR (toolbar), - "ToolsToolbar", GNOME_DOCK_ITEM_BEH_NORMAL, - GNOME_DOCK_LEFT, 1, 1, 0); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE about menu callback. */ -/*--------------------------------------------------------------------------*/ -static void -about_cb (GtkWidget * widget, - gpointer data) -{ - static GtkWidget *dialog = NULL; - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - - if (dialog != NULL) { - g_assert (GTK_WIDGET_REALIZED (dialog)); - gdk_window_show (dialog->window); - gdk_window_raise (dialog->window); - } else { - const gchar *authors[] = { - "Jim Evins ", - NULL - }; - gchar *copy_text = "Copyright 2001 Jim Evins"; - gchar *about_text = - _("A label and business card creation program for GNOME.\n" - " \n" - "Glabels 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.\n" " \n" - "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.\n"); - - dialog = gnome_about_new ("glabels", VERSION, - copy_text, authors, about_text, - LOGO_PIXMAP); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (app)); - - gtk_signal_connect (GTK_OBJECT (dialog), "destroy", - GTK_SIGNAL_FUNC (gtk_widget_destroyed), - &dialog); - - gtk_widget_show (dialog); - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. place-holder callback. */ -/*--------------------------------------------------------------------------*/ -static void -nothing_cb (GtkWidget * widget, - gpointer data) -{ - GtkWidget *dialog; - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - - dialog = gnome_ok_dialog (_("Function is not implemented!")); - gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (app)); -} diff --git a/glabels1/src/menu.h b/glabels1/src/menu.h deleted file mode 100644 index 01e119df..00000000 --- a/glabels1/src/menu.h +++ /dev/null @@ -1,32 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * menu.h: Menu module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __MENU_H__ -#define __MENU_H__ - -#include - -extern void gl_menu_install_menus (GnomeMDI * mdi); -extern void gl_menu_install_toolbar (GnomeMDI * mdi); -extern void gl_menu_install_tools_toolbar (GnomeMDI * mdi, GnomeApp * app); - - -#endif diff --git a/glabels1/src/merge.c b/glabels1/src/merge.c deleted file mode 100644 index 603ae25b..00000000 --- a/glabels1/src/merge.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge.c: document merge module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include - -#include "merge.h" -#include "merge_text.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ -typedef struct { - gchar *short_text; - gchar *long_text; -} TypeTexts; - -typedef struct { - - glMergeInput * (*open) (glMergeType, GList *, gchar *); - void (*close) (glMergeInput *); - glMergeRecord * (*get_record) (glMergeInput *); - GList * (*get_raw_record) (glMergeInput *); - -} BackendFunctions; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static TypeTexts type_text[GL_MERGE_N_TYPES]; - -static BackendFunctions func[GL_MERGE_N_TYPES]; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - - -/*****************************************************************************/ -/* Initialize module. */ -/*****************************************************************************/ -void -gl_merge_init (void) -{ - gint i; - - /* Register backend functions and data. */ - - i = GL_MERGE_NONE; - func[i].open = NULL; - func[i].close = NULL; - func[i].get_record = NULL; - func[i].get_raw_record = NULL; - type_text[i].short_text = "None"; - type_text[i].long_text = _("None"); - - i = GL_MERGE_TEXT_TAB; - func[i].open = gl_merge_text_open; - func[i].close = gl_merge_text_close; - func[i].get_record = gl_merge_text_get_record; - func[i].get_raw_record = gl_merge_text_get_raw_record; - type_text[i].short_text = "Text/Tab"; - type_text[i].long_text = _("Text with tab separators"); - - i = GL_MERGE_TEXT_COMMA; - func[i].open = gl_merge_text_open; - func[i].close = gl_merge_text_close; - func[i].get_record = gl_merge_text_get_record; - func[i].get_raw_record = gl_merge_text_get_raw_record; - type_text[i].short_text = "Text/Comma"; - type_text[i].long_text = _("Text with comma separators (CSV)"); - - i = GL_MERGE_TEXT_COLON; - func[i].open = gl_merge_text_open; - func[i].close = gl_merge_text_close; - func[i].get_record = gl_merge_text_get_record; - func[i].get_raw_record = gl_merge_text_get_raw_record; - type_text[i].short_text = "Text/Colon"; - type_text[i].long_text = _("Text with colon separators"); - -} - -/*****************************************************************************/ -/* Lookup type from short text. */ -/*****************************************************************************/ -glMergeType -gl_merge_text_to_type (gchar * text) -{ - glMergeType type; - - for (type = 0; type < GL_MERGE_N_TYPES; type++) { - if (g_strcasecmp (text, type_text[type].short_text) == 0) { - return type; - } - } - - return GL_MERGE_NONE; - -} - -/*****************************************************************************/ -/* Lookup short text for given type. */ -/*****************************************************************************/ -gchar * -gl_merge_type_to_text (glMergeType type) -{ - return g_strdup (type_text[type].short_text); -} - -/*****************************************************************************/ -/* Lookup type from long descriptive text. */ -/*****************************************************************************/ -glMergeType -gl_merge_long_text_to_type (gchar * text) -{ - glMergeType type; - - for (type = 0; type < GL_MERGE_N_TYPES; type++) { - if (g_strcasecmp (text, type_text[type].long_text) == 0) { - return type; - } - } - - return GL_MERGE_NONE; -} - -/*****************************************************************************/ -/* Lookup longer, more descriptive text for given type. */ -/*****************************************************************************/ -gchar * -gl_merge_type_to_long_text (glMergeType type) -{ - return g_strdup (type_text[type].long_text); -} - -/*****************************************************************************/ -/* Retrieve a list of descriptive texts for all available types. */ -/*****************************************************************************/ -GList * -gl_merge_get_long_texts_list (void) -{ - glMergeType type; - GList *list = NULL; - - for (type = 0; type < GL_MERGE_N_TYPES; type++) { - - list = g_list_append (list, gl_merge_type_to_long_text (type)); - - } - - return list; -} - -/*****************************************************************************/ -/* Free list of descriptive texts. */ -/*****************************************************************************/ -void -gl_merge_free_long_texts_list (GList ** list) -{ - GList *p; - - for (p = *list; p != NULL; p = p->next) { - g_free (p->data); - p->data = NULL; - } - - g_list_free (*list); - *list = NULL; -} - -/*****************************************************************************/ -/* Free list of field definitions. */ -/*****************************************************************************/ -void -gl_merge_free_field_def_list (GList ** list) -{ - GList *p; - glMergeFieldDefinition *field_def; - - for (p = *list; p != NULL; p = p->next) { - field_def = (glMergeFieldDefinition *) p->data; - - g_free (field_def->key); - field_def->key = NULL; - g_free (field_def->loc); - field_def->loc = NULL; - - g_free (p->data); - p->data = NULL; - } - - g_list_free (*list); - *list = NULL; - -} - -/*****************************************************************************/ -/* Extract a list of valid keys from field definitions list */ -/*****************************************************************************/ -GList * -gl_merge_get_key_list (GList * field_defs) -{ - GList *p, *keys; - glMergeFieldDefinition *field_def; - - keys = NULL; - for (p = field_defs; p != NULL; p = p->next) { - field_def = (glMergeFieldDefinition *) p->data; - - keys = g_list_append (keys, g_strdup (field_def->key)); - } - - return keys; -} - -/*****************************************************************************/ -/* Free a list of keys. */ -/*****************************************************************************/ -void -gl_merge_free_key_list (GList ** keys) -{ - GList *p; - - for (p = *keys; p != NULL; p = p->next) { - g_free (p->data); - p->data = NULL; - } - - g_list_free (*keys); - *keys = NULL; -} - -/*****************************************************************************/ -/* Lookup key for given locator. */ -/*****************************************************************************/ -gchar * -gl_merge_find_key (GList * field_defs, - gchar * loc) -{ - GList *p; - glMergeFieldDefinition *field_def; - - for (p = field_defs; p != NULL; p = p->next) { - field_def = (glMergeFieldDefinition *) p->data; - - if (strcmp (loc, field_def->loc) == 0) { - return g_strdup (field_def->key); - } - - } - - return NULL; -} - -/*****************************************************************************/ -/* Open merge source front-end. */ -/*****************************************************************************/ -glMergeInput * -gl_merge_open (glMergeType type, - GList * field_defs, - gchar * src) -{ - return func[type].open (type, field_defs, src); -} - -/*****************************************************************************/ -/* Close merge source front-end. */ -/*****************************************************************************/ -void -gl_merge_close (glMergeInput * input) -{ - if ( input != NULL ) { - func[input->type].close (input); - } -} - -/*****************************************************************************/ -/* Get next record from merge source, NULL if exhausted (front-end). */ -/*****************************************************************************/ -glMergeRecord * -gl_merge_get_record (glMergeInput * input) -{ - if ( input == NULL ) { - return NULL; - } - return func[input->type].get_record (input); -} - -/*****************************************************************************/ -/* Get next record (raw) from merge source, NULL if exhausted (front-end). */ -/*****************************************************************************/ -GList * -gl_merge_get_raw_record (glMergeInput * input) -{ - if ( input == NULL ) { - return NULL; - } - return func[input->type].get_raw_record (input); -} - -/*****************************************************************************/ -/* Free a merge record (list of fields) */ -/*****************************************************************************/ -void -gl_merge_free_record (glMergeRecord ** record) -{ - GList *p; - glMergeField *field; - - for (p = (*record)->field_list; p != NULL; p = p->next) { - field = (glMergeField *) p->data; - - g_free (field->key); - field->key = NULL; - g_free (field->value); - field->value = NULL; - - g_free (p->data); - p->data = NULL; - - } - g_list_free ((*record)->field_list); - (*record)->field_list = NULL; - - g_free (*record); - *record = NULL; -} - -/*****************************************************************************/ -/* Free a merge record (list of fields) */ -/*****************************************************************************/ -void -gl_merge_free_raw_record (GList ** record) -{ - GList *p; - glMergeRawField *field; - - for (p = *record; p != NULL; p = p->next) { - field = (glMergeRawField *) p->data; - - g_free (field->loc); - field->loc = NULL; - g_free (field->value); - field->value = NULL; - - g_free (p->data); - p->data = NULL; - - } - - g_list_free (*record); - *record = NULL; -} - -/*****************************************************************************/ -/* Find key in given record and evaluate. */ -/*****************************************************************************/ -extern gchar * -gl_merge_eval_key (gchar * key, - glMergeRecord * record) -{ - GList *p; - glMergeField *field; - - if ( record != NULL ) { - for (p = record->field_list; p != NULL; p = p->next) { - field = (glMergeField *) p->data; - - if (strcmp (key, field->key) == 0) { - return g_strdup (field->value); - } - - } - } - return NULL; -} - -/*****************************************************************************/ -/* Read all records from merge source. */ -/*****************************************************************************/ -GList * -gl_merge_read_data(glMergeType type, - GList *field_defs, - gchar *src) -{ - glMergeInput *mp; - glMergeRecord *record; - GList *record_list = NULL; - - mp = gl_merge_open (type, field_defs, src); - while ( (record = gl_merge_get_record (mp)) != NULL ) { - record_list = g_list_append( record_list, record ); - } - gl_merge_close(mp); - - return record_list; -} - -/*****************************************************************************/ -/* Free a list of records. */ -/*****************************************************************************/ -void -gl_merge_free_data (GList ** record_list) -{ - GList *p; - glMergeRecord *record; - - for (p = *record_list; p != NULL; p = p->next) { - record = (glMergeRecord *) p->data; - - gl_merge_free_record( &record ); - - } - - g_list_free (*record_list); - *record_list = NULL; -} - -/*****************************************************************************/ -/* Count selected records. */ -/*****************************************************************************/ -gint -gl_merge_count_records (GList *record_list) -{ - GList *p; - glMergeRecord *record; - gint count; - - count = 0; - for ( p=record_list; p!=NULL; p=p->next ) { - record = (glMergeRecord *)p->data; - - if ( record->select_flag ) count ++; - } - return count; -} - diff --git a/glabels1/src/merge.h b/glabels1/src/merge.h deleted file mode 100644 index ce870199..00000000 --- a/glabels1/src/merge.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge.h: document merge module header file - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - */ -#ifndef __MERGE_H__ -#define __MERGE_H__ - -#include - -typedef enum { - - GL_MERGE_NONE, - GL_MERGE_TEXT_TAB, - GL_MERGE_TEXT_COMMA, - GL_MERGE_TEXT_COLON, - - GL_MERGE_N_TYPES -} glMergeType; - -typedef struct { - glMergeType type; - GList *field_defs; - gpointer handle; -} glMergeInput; - -typedef struct { - gchar *key; - gchar *loc; -} glMergeFieldDefinition; - -typedef struct { - gchar *loc; - gchar *value; -} glMergeRawField; - -typedef struct { - gchar *key; - gchar *value; -} glMergeField; - -typedef struct { - gboolean select_flag; - GList *field_list; /* List of glMergeFields */ -} glMergeRecord; - -extern void - gl_merge_init (void); - -extern glMergeType gl_merge_text_to_type (gchar * text); -extern gchar *gl_merge_type_to_text (glMergeType type); -extern glMergeType gl_merge_long_text_to_type (gchar * text); -extern gchar *gl_merge_type_to_long_text (glMergeType type); -extern GList *gl_merge_get_long_texts_list (void); -extern void gl_merge_free_long_texts_list (GList ** list); - -extern void gl_merge_free_field_def_list (GList ** field_defs); - -extern GList *gl_merge_get_key_list (GList * field_defs); -extern void gl_merge_free_key_list (GList ** keys); - -extern gchar *gl_merge_find_key (GList * field_defs, gchar * loc); - -extern glMergeInput *gl_merge_open (glMergeType type, GList * field_defs, - gchar * src); -extern void gl_merge_close (glMergeInput * input); -extern glMergeRecord *gl_merge_get_record (glMergeInput * input); -extern GList *gl_merge_get_raw_record (glMergeInput * input); -extern void gl_merge_free_record (glMergeRecord ** record); -extern void gl_merge_free_raw_record (GList ** record); -extern gchar *gl_merge_eval_key (gchar * key, glMergeRecord * record); - -extern GList *gl_merge_read_data (glMergeType type, GList * field_defs, - gchar * src); -extern void gl_merge_free_data (GList **record_list); -extern gint gl_merge_count_records (GList *record_list); - -#endif diff --git a/glabels1/src/merge_properties.c b/glabels1/src/merge_properties.c deleted file mode 100644 index a2fc1c2f..00000000 --- a/glabels1/src/merge_properties.c +++ /dev/null @@ -1,258 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_properties.c: document merge properties dialog module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include "mdi.h" -#include "display.h" -#include "merge.h" -#include "merge_ui.h" -#include "merge_properties.h" - -#include "debug.h" - -/*===========================================*/ -/* Private data types */ -/*===========================================*/ - -typedef struct { - GtkWidget *dialog; - - glDisplay *display; - glLabel *label; - gchar *name; - - GtkWidget *type_entry; - GtkWidget *src_entry; - GtkWidget *field_ws; - - glMergeType src_type; - gchar *field_ws_src; - -} PropertyDialogPassback; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void create_merge_dialog_widgets (GnomeDialog * dialog, - PropertyDialogPassback * data); - -static void type_changed_cb (GtkWidget * widget, PropertyDialogPassback * data); -static void src_changed_cb (GtkWidget * widget, PropertyDialogPassback * data); - -static void ok_cb (GtkWidget * widget, PropertyDialogPassback * data); - -/****************************************************************************/ -/* Launch merge properties dialog. */ -/****************************************************************************/ -void -gl_merge_properties_dialog (glDisplay * display, - gchar * basename) -{ - static PropertyDialogPassback *data = NULL; - GtkWidget *dialog; - - if (data == NULL) { - data = g_new0 (PropertyDialogPassback, 1); - } - - dialog = gnome_dialog_new (_("Edit document-merge properties"), - GNOME_STOCK_BUTTON_OK, - GNOME_STOCK_BUTTON_CANCEL, NULL); - gtk_window_set_modal (GTK_WINDOW (dialog), TRUE); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (gl_mdi_get_active_window ())); - - data->dialog = dialog; - data->display = display; - data->label = display->label; - data->name = basename; - - data->type_entry = NULL; - data->src_entry = NULL; - data->field_ws = NULL; - - create_merge_dialog_widgets (GNOME_DIALOG (dialog), data); - - gnome_dialog_button_connect (GNOME_DIALOG (dialog), 0, - GTK_SIGNAL_FUNC (ok_cb), data); - - gnome_dialog_button_connect_object (GNOME_DIALOG (dialog), 1, - GTK_SIGNAL_FUNC - (gtk_widget_destroy), - GTK_OBJECT (dialog)); - - gtk_widget_show_all (GTK_WIDGET (dialog)); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Create and add start page to druid. */ -/*--------------------------------------------------------------------------*/ -static void -create_merge_dialog_widgets (GnomeDialog * dialog, - PropertyDialogPassback * data) -{ - GtkWidget *wvbox, *wframe, *whbox, *wtable, *wlabel, *wcombo, *wscroll; - GList *texts; - glMergeType type; - gchar *src; - GList *fields; - - type = data->label->merge_type; - src = data->label->merge_src; - fields = data->label->merge_fields; - - wvbox = dialog->vbox; - - wframe = gtk_frame_new (_("Source")); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - whbox = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_container_add (GTK_CONTAINER (wframe), whbox); - - wtable = gtk_table_new (2, 2, FALSE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_box_pack_start (GTK_BOX (whbox), wtable, FALSE, FALSE, GNOME_PAD); - - wlabel = gtk_label_new (_("Format:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - - wcombo = gtk_combo_new (); - gtk_widget_set_usize (wcombo, 400, -1); - texts = gl_merge_get_long_texts_list (); - gtk_combo_set_popdown_strings (GTK_COMBO (wcombo), texts); - gl_merge_free_long_texts_list (&texts); - data->type_entry = GTK_COMBO (wcombo)->entry; - gtk_entry_set_editable (GTK_ENTRY (data->type_entry), FALSE); - gtk_table_attach_defaults (GTK_TABLE (wtable), wcombo, 1, 2, 0, 1); - gtk_entry_set_text (GTK_ENTRY (data->type_entry), - gl_merge_type_to_long_text (type)); - - wlabel = gtk_label_new (_("Location:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - - data->src_entry = gl_merge_ui_src_new (); - gtk_table_attach_defaults (GTK_TABLE (wtable), data->src_entry, 1, 2, 1, - 2); - gl_merge_ui_src_set_type (GL_MERGE_UI_SRC (data->src_entry), type); - gl_merge_ui_src_set_value (GL_MERGE_UI_SRC (data->src_entry), src); - - wframe = gtk_frame_new (_("Fields")); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wscroll = gtk_scrolled_window_new (NULL, NULL); - gtk_container_set_border_width (GTK_CONTAINER (wscroll), 5); - gtk_widget_set_usize (wscroll, 500, 300); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (wscroll), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_container_add (GTK_CONTAINER (wframe), wscroll); - - data->field_ws = gl_merge_ui_field_ws_new (); - gtk_container_set_border_width (GTK_CONTAINER (data->field_ws), 10); - gl_merge_ui_field_ws_set_type_src (GL_MERGE_UI_FIELD_WS - (data->field_ws), type, src); - gl_merge_ui_field_ws_set_field_defs (GL_MERGE_UI_FIELD_WS - (data->field_ws), fields); - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (wscroll), - data->field_ws); - - gtk_signal_connect (GTK_OBJECT (data->type_entry), "changed", - GTK_SIGNAL_FUNC (type_changed_cb), data); - gtk_signal_connect (GTK_OBJECT (data->src_entry), "changed", - GTK_SIGNAL_FUNC (src_changed_cb), data); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. type "changed" callback. */ -/*--------------------------------------------------------------------------*/ -static void -type_changed_cb (GtkWidget * widget, - PropertyDialogPassback * data) -{ - glMergeType type; - gchar *type_text; - - type_text = gtk_editable_get_chars (GTK_EDITABLE (data->type_entry), - 0, -1); - type = gl_merge_long_text_to_type (type_text); - g_free (type_text); - - gl_merge_ui_src_set_type (GL_MERGE_UI_SRC (data->src_entry), type); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. source "changed" callback. */ -/*--------------------------------------------------------------------------*/ -static void -src_changed_cb (GtkWidget * widget, - PropertyDialogPassback * data) -{ - glMergeType type; - gchar *type_text, *src; - - type_text = gtk_editable_get_chars (GTK_EDITABLE (data->type_entry), - 0, -1); - type = gl_merge_long_text_to_type (type_text); - g_free (type_text); - - src = gl_merge_ui_src_get_value (GL_MERGE_UI_SRC (data->src_entry)); - gl_merge_ui_field_ws_set_type_src (GL_MERGE_UI_FIELD_WS - (data->field_ws), type, src); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. "OK" callback. */ -/*--------------------------------------------------------------------------*/ -static void -ok_cb (GtkWidget * widget, - PropertyDialogPassback * data) -{ - gchar *type_text; - - type_text = gtk_editable_get_chars (GTK_EDITABLE (data->type_entry), - 0, -1); - data->label->merge_type = gl_merge_long_text_to_type (type_text); - g_free (type_text); - - data->label->merge_src = - gl_merge_ui_src_get_value (GL_MERGE_UI_SRC (data->src_entry)); - - gl_merge_free_field_def_list (&data->label->merge_fields); - data->label->merge_fields = - gl_merge_ui_field_ws_get_field_defs (GL_MERGE_UI_FIELD_WS - (data->field_ws)); - - gl_display_set_modified (data->display); - - gtk_widget_destroy (data->dialog); -} diff --git a/glabels1/src/merge_properties.h b/glabels1/src/merge_properties.h deleted file mode 100644 index ba134394..00000000 --- a/glabels1/src/merge_properties.h +++ /dev/null @@ -1,29 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_properties.h: document merge properties dialog module header file - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - */ -#ifndef __MERGE_PROPERTIES_H__ -#define __MERGE_PROPERTIES_H__ - -#include - -extern void gl_merge_properties_dialog (glDisplay * display, gchar * basename); - -#endif diff --git a/glabels1/src/merge_text.c b/glabels1/src/merge_text.c deleted file mode 100644 index c39b05b7..00000000 --- a/glabels1/src/merge_text.c +++ /dev/null @@ -1,385 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_text.c: text-file merge backend module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include - -#include "merge_text.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ -static GList * parse_line ( FILE *handle, gchar delim ); -static void free_fields( GList **fields ); - - -/****************************************************************************/ -/* Open merge source. */ -/****************************************************************************/ -glMergeInput * -gl_merge_text_open (glMergeType type, - GList * field_defs, - gchar * src) -{ - FILE *fp; - glMergeInput *input; - - fp = fopen (src, "r"); - if (fp == NULL) { - return NULL; - } - - input = g_new0 (glMergeInput, 1); - input->type = type; - input->field_defs = field_defs; - input->handle = fp; - - return input; -} - -/****************************************************************************/ -/* Close merge source. */ -/****************************************************************************/ -void -gl_merge_text_close (glMergeInput * input) -{ - if (input != NULL) { - - fclose ((FILE *) input->handle); - g_free (input); - - } -} - -/****************************************************************************/ -/* Get next record from merge source, NULL if no records left (i.e EOF) */ -/****************************************************************************/ -glMergeRecord * -gl_merge_text_get_record (glMergeInput * input) -{ - gchar *loc; - GList *fields, *p; - gint i_field; - glMergeRecord *record = NULL; - glMergeField *field; - - if (input != NULL) { - - switch (input->type) { - case GL_MERGE_TEXT_TAB: - fields = parse_line( input->handle, '\t' ); - break; - case GL_MERGE_TEXT_COLON: - fields = parse_line( input->handle, ':' ); - break; - case GL_MERGE_TEXT_COMMA: - fields = parse_line( input->handle, ',' ); - break; - default: - WARN ("Unexpected merge type"); - return NULL; - } - - if ( fields != NULL ) { - record = g_new0 (glMergeRecord, 1); - record->select_flag = TRUE; - i_field = 1; - for (p=fields; p != NULL; p=p->next) { - loc = g_strdup_printf ("%d", i_field++); - field = g_new0 (glMergeField, 1); - field->value = g_strdup (p->data); - field->key = gl_merge_find_key (input->field_defs, loc); - record->field_list = g_list_append (record->field_list, field); - g_free (loc); - } - free_fields (&fields); - return record; - } - - } - return NULL; -} - -/****************************************************************************/ -/* Retrieve a list of raw fields (columns in this case) */ -/****************************************************************************/ -GList * -gl_merge_text_get_raw_record (glMergeInput * input) -{ - GList *list = NULL; - GList *fields, *p; - gint i_field; - glMergeRawField *raw_field; - - if (input != NULL) { - - switch (input->type) { - case GL_MERGE_TEXT_TAB: - fields = parse_line( input->handle, '\t' ); - break; - case GL_MERGE_TEXT_COLON: - fields = parse_line( input->handle, ':' ); - break; - case GL_MERGE_TEXT_COMMA: - fields = parse_line( input->handle, ',' ); - break; - default: - WARN ("Unexpected merge type"); - return NULL; - } - - if ( fields != NULL ) { - i_field = 1; - for (p=fields; p != NULL; p=p->next) { - raw_field = g_new0 (glMergeRawField, 1); - raw_field->loc = g_strdup_printf ("%d", - i_field++); - raw_field->value = g_strdup (p->data); - list = g_list_append (list, raw_field); - } - free_fields (&fields); - } - - } - return list; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Parse line (quoted values may span multiple lines). */ -/*---------------------------------------------------------------------------*/ -static GList * parse_line ( FILE *handle, - gchar delim ) -{ - GList *list = NULL; - GString *string; - gint c; - enum { BEGIN, NORMAL, NORMAL_ESCAPED, - QUOTED, QUOTED_ESCAPED, QUOTED_QUOTE1, - DONE } state; - - state = BEGIN; - string = g_string_new( "" ); - while ( state != DONE ) { - c=getc (handle); - - switch (state) { - - case BEGIN: - switch (c) { - case '\\': - state = NORMAL_ESCAPED; - break; - case '"': - state = QUOTED; - break; - case '\r': - /* Strip CR. */ - state = NORMAL; - break; - case '\n': - case EOF: - state = DONE; - break; - default: - if ( c != delim ) { - string = g_string_append_c (string, c); - } else { - list = g_list_append (list, - g_strdup (string->str)); - string = g_string_assign( string, "" ); - } - state = NORMAL; - break; - } - break; - - case NORMAL: - switch (c) { - case '\\': - state = NORMAL_ESCAPED; - break; - case '"': - state = QUOTED; - break; - case '\r': - /* Strip CR. */ - break; - case '\n': - case EOF: - list = g_list_append (list, - g_strdup (string->str)); - state = DONE; - break; - default: - if ( c != delim ) { - string = g_string_append_c (string, c); - } else { - list = g_list_append (list, - g_strdup (string->str)); - string = g_string_assign( string, "" ); - } - break; - } - break; - - case NORMAL_ESCAPED: - switch (c) { - case 'n': - string = g_string_append_c (string, '\n'); - state = NORMAL; - break; - case 't': - string = g_string_append_c (string, '\t'); - state = NORMAL; - break; - case '\r': - /* Strip CR, stay ESCAPED. */ - break; - case EOF: - state = DONE; - break; - default: - string = g_string_append_c (string, c); - state = NORMAL; - break; - } - break; - - case QUOTED: - switch (c) { - case '\\': - state = QUOTED_ESCAPED; - break; - case '"': - state = QUOTED_QUOTE1; - break; - case '\r': - /* Strip CR. */ - break; - case EOF: - /* File ended mid way through quoted item */ - list = g_list_append (list, - g_strdup (string->str)); - state = DONE; - break; - default: - string = g_string_append_c (string, c); - break; - } - break; - - case QUOTED_ESCAPED: - switch (c) { - case 'n': - string = g_string_append_c (string, '\n'); - state = QUOTED; - break; - case 't': - string = g_string_append_c (string, '\t'); - state = QUOTED; - break; - case '\r': - /* Strip CR, stay ESCAPED. */ - break; - case EOF: - /* File ended mid way through quoted item */ - list = g_list_append (list, - g_strdup (string->str)); - state = DONE; - break; - default: - string = g_string_append_c (string, c); - state = QUOTED; - break; - } - break; - - case QUOTED_QUOTE1: - switch (c) { - case '"': - /* insert quotes in string, stay quoted. */ - string = g_string_append_c (string, c); - state = QUOTED; - break; - case '\r': - /* Strip CR, return to NORMAL. */ - state = NORMAL; - break; - case '\n': - case EOF: - /* line or file ended after quoted item */ - list = g_list_append (list, - g_strdup (string->str)); - state = DONE; - break; - default: - if ( c != delim ) { - string = g_string_append_c (string, c); - } else { - list = g_list_append (list, - g_strdup (string->str)); - string = g_string_assign( string, "" ); - } - state = NORMAL; - break; - } - break; - - default: - g_assert_not_reached(); - break; - } - - } - g_string_free( string, TRUE ); - - return list; -} - -/*---------------------------------------------------------------------------*/ -/* Free list of fields. */ -/*---------------------------------------------------------------------------*/ -void -free_fields (GList ** list) -{ - GList *p; - - for (p = *list; p != NULL; p = p->next) { - g_free (p->data); - p->data = NULL; - } - - g_list_free (*list); - *list = NULL; -} - diff --git a/glabels1/src/merge_text.h b/glabels1/src/merge_text.h deleted file mode 100644 index b1dddef7..00000000 --- a/glabels1/src/merge_text.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_text.h: text-file merge backend module header file - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - */ -#ifndef __MERGE_TEXT_H__ -#define __MERGE_TEXT_H__ - -#include - -#include "merge.h" - -extern glMergeInput *gl_merge_text_open (glMergeType type, GList * field_defs, - gchar * src); -extern void gl_merge_text_close (glMergeInput * input); -extern glMergeRecord *gl_merge_text_get_record (glMergeInput * input); -extern GList *gl_merge_text_get_raw_record (glMergeInput * input); - -#endif diff --git a/glabels1/src/merge_ui.c b/glabels1/src/merge_ui.c deleted file mode 100644 index fb422545..00000000 --- a/glabels1/src/merge_ui.c +++ /dev/null @@ -1,498 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_ui.c: document merge user interface module - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - -#include "merge_ui.h" - -/* Backends */ -#include "merge_ui_text.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef struct { - - GtkWidget * (*src_new) (glMergeType); - void (*src_set_value) (); - gchar * (*src_get_value) (); - - GtkWidget * (*field_ws_new) (glMergeType, gchar *); - void (*field_ws_set_field_defs) (); - GList * (*field_ws_get_field_defs) (); - -} BackendFunctions; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint merge_ui_src_signals[LAST_SIGNAL] = { 0 }; -static gint merge_ui_field_ws_signals[LAST_SIGNAL] = { 0 }; - -static BackendFunctions func[GL_MERGE_N_TYPES]; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_merge_ui_src_class_init (glMergeUISrcClass * class); -static void gl_merge_ui_src_init (glMergeUISrc * src); -static void gl_merge_ui_src_destroy (GtkObject * object); - -static void src_changed_cb (glMergeUISrc * src); - -static void gl_merge_ui_field_ws_class_init (glMergeUIFieldWSClass * class); -static void gl_merge_ui_field_ws_init (glMergeUIFieldWS * field_ws); -static void gl_merge_ui_field_ws_destroy (GtkObject * object); - -static void field_ws_changed_cb (glMergeUIFieldWS * field_ws); - -/*****************************************************************************/ -/* Initialize module. */ -/*****************************************************************************/ -void -gl_merge_ui_init (void) -{ - gint i; - - /* Register backend functions. */ - - i = GL_MERGE_NONE; - func[i].src_new = NULL; - func[i].src_set_value = NULL; - func[i].src_get_value = NULL; - func[i].field_ws_new = NULL; - func[i].field_ws_set_field_defs = NULL; - func[i].field_ws_get_field_defs = NULL; - - i = GL_MERGE_TEXT_TAB; - func[i].src_new = gl_merge_ui_text_src_new; - func[i].src_set_value = gl_merge_ui_text_src_set_value; - func[i].src_get_value = gl_merge_ui_text_src_get_value; - func[i].field_ws_new = gl_merge_ui_text_field_ws_new; - func[i].field_ws_set_field_defs = - gl_merge_ui_text_field_ws_set_field_defs; - func[i].field_ws_get_field_defs = - gl_merge_ui_text_field_ws_get_field_defs; - - i = GL_MERGE_TEXT_COMMA; - func[i].src_new = gl_merge_ui_text_src_new; - func[i].src_set_value = gl_merge_ui_text_src_set_value; - func[i].src_get_value = gl_merge_ui_text_src_get_value; - func[i].field_ws_new = gl_merge_ui_text_field_ws_new; - func[i].field_ws_set_field_defs = - gl_merge_ui_text_field_ws_set_field_defs; - func[i].field_ws_get_field_defs = - gl_merge_ui_text_field_ws_get_field_defs; - - i = GL_MERGE_TEXT_COLON; - func[i].src_new = gl_merge_ui_text_src_new; - func[i].src_set_value = gl_merge_ui_text_src_set_value; - func[i].src_get_value = gl_merge_ui_text_src_get_value; - func[i].field_ws_new = gl_merge_ui_text_field_ws_new; - func[i].field_ws_set_field_defs = - gl_merge_ui_text_field_ws_set_field_defs; - func[i].field_ws_get_field_defs = - gl_merge_ui_text_field_ws_get_field_defs; - -} - -/*****************************************************************************/ -/* Boilerplate Object stuff. */ -/*****************************************************************************/ -guint -gl_merge_ui_src_get_type (void) -{ - static guint merge_ui_src_type = 0; - - if (!merge_ui_src_type) { - GtkTypeInfo merge_ui_src_info = { - "glMergeUISrc", - sizeof (glMergeUISrc), - sizeof (glMergeUISrcClass), - (GtkClassInitFunc) gl_merge_ui_src_class_init, - (GtkObjectInitFunc) gl_merge_ui_src_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - merge_ui_src_type = gtk_type_unique (gtk_vbox_get_type (), - &merge_ui_src_info); - } - - return merge_ui_src_type; -} - -static void -gl_merge_ui_src_class_init (glMergeUISrcClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_merge_ui_src_destroy; - - merge_ui_src_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMergeUISrcClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, - merge_ui_src_signals, LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_merge_ui_src_init (glMergeUISrc * src) -{ - src->backend_widget = NULL; -} - -static void -gl_merge_ui_src_destroy (GtkObject * object) -{ - glMergeUISrc *src; - glMergeUISrcClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_MERGE_UI_SRC (object)); - - src = GL_MERGE_UI_SRC (object); - class = GL_MERGE_UI_SRC_CLASS (GTK_OBJECT (src)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_merge_ui_src_new (void) -{ - glMergeUISrc *src; - - src = gtk_type_new (gl_merge_ui_src_get_type ()); - - src->type = GL_MERGE_NONE; - src->backend_widget = gtk_label_new (_("N/A")); - gtk_misc_set_alignment (GTK_MISC (src->backend_widget), 0, 0.5); - gtk_box_pack_start (GTK_BOX (src), src->backend_widget, FALSE, FALSE, - 0); - - return GTK_WIDGET (src); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when our backend widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -src_changed_cb (glMergeUISrc * src) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (src), merge_ui_src_signals[CHANGED]); -} - -/*****************************************************************************/ -/* Set type. */ -/*****************************************************************************/ -void -gl_merge_ui_src_set_type (glMergeUISrc * src, - glMergeType type) -{ - - if (type != src->type) { - - gtk_widget_destroy (src->backend_widget); - - src->type = type; - - if (type != GL_MERGE_NONE) { - src->backend_widget = (func[type].src_new) (type); - } else { - src->backend_widget = gtk_label_new (_("N/A")); - gtk_misc_set_alignment (GTK_MISC (src->backend_widget), - 0, 0.5); - } - - gtk_box_pack_start (GTK_BOX (src), src->backend_widget, - FALSE, FALSE, 0); - - if (GTK_WIDGET_VISIBLE (src)) { - gtk_widget_show_all (src->backend_widget); - } - - if (type != GL_MERGE_NONE) { - gtk_signal_connect_object (GTK_OBJECT - (src->backend_widget), - "changed", - GTK_SIGNAL_FUNC - (src_changed_cb), - GTK_OBJECT (src)); - } - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (src), - merge_ui_src_signals[CHANGED]); - } - -} - -/*****************************************************************************/ -/* Set src. */ -/*****************************************************************************/ -void -gl_merge_ui_src_set_value (glMergeUISrc * src, - gchar * text) -{ - glMergeType type; - - type = src->type; - - if (type != GL_MERGE_NONE) { - func[type].src_set_value (src->backend_widget, text); - } else { - return; - } - -} - -/*****************************************************************************/ -/* Get src name. */ -/*****************************************************************************/ -gchar * -gl_merge_ui_src_get_value (glMergeUISrc * src) -{ - glMergeType type; - - type = src->type; - - if (type != GL_MERGE_NONE) { - return func[type].src_get_value (src->backend_widget); - } else { - return NULL; - } - -} - -/*****************************************************************************/ -/* Boilerplate Object stuff. */ -/*****************************************************************************/ -guint -gl_merge_ui_field_ws_get_type (void) -{ - static guint merge_ui_field_ws_type = 0; - - if (!merge_ui_field_ws_type) { - GtkTypeInfo merge_ui_field_ws_info = { - "glMergeUIFieldWS", - sizeof (glMergeUIFieldWS), - sizeof (glMergeUIFieldWSClass), - (GtkClassInitFunc) gl_merge_ui_field_ws_class_init, - (GtkObjectInitFunc) gl_merge_ui_field_ws_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - merge_ui_field_ws_type = gtk_type_unique (gtk_vbox_get_type (), - &merge_ui_field_ws_info); - } - - return merge_ui_field_ws_type; -} - -static void -gl_merge_ui_field_ws_class_init (glMergeUIFieldWSClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_merge_ui_field_ws_destroy; - - merge_ui_field_ws_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMergeUIFieldWSClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, - merge_ui_field_ws_signals, LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_merge_ui_field_ws_init (glMergeUIFieldWS * field_ws) -{ - field_ws->type = GL_MERGE_NONE; - field_ws->src = NULL; - field_ws->backend_widget = NULL; -} - -static void -gl_merge_ui_field_ws_destroy (GtkObject * object) -{ - glMergeUIFieldWS *field_ws; - glMergeUIFieldWSClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_MERGE_UI_FIELD_WS (object)); - - field_ws = GL_MERGE_UI_FIELD_WS (object); - class = GL_MERGE_UI_FIELD_WS_CLASS (GTK_OBJECT (field_ws)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_merge_ui_field_ws_new (void) -{ - glMergeUIFieldWS *field_ws; - - field_ws = gtk_type_new (gl_merge_ui_field_ws_get_type ()); - - field_ws->type = GL_MERGE_NONE; - field_ws->backend_widget = gtk_label_new (_("N/A")); - gtk_misc_set_alignment (GTK_MISC (field_ws->backend_widget), 0, 0.5); - gtk_box_pack_start (GTK_BOX (field_ws), field_ws->backend_widget, - FALSE, FALSE, 0); - - return GTK_WIDGET (field_ws); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when our backend widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -field_ws_changed_cb (glMergeUIFieldWS * field_ws) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (field_ws), - merge_ui_field_ws_signals[CHANGED]); -} - -/*****************************************************************************/ -/* set type and src data, create appropriate backend widget. */ -/*****************************************************************************/ -void -gl_merge_ui_field_ws_set_type_src (glMergeUIFieldWS * field_ws, - glMergeType type, - gchar * src) -{ - - if (field_ws->src != NULL) - g_free (field_ws->src); - if (field_ws->backend_widget != NULL) { - gtk_widget_destroy (field_ws->backend_widget); - } - - field_ws->type = type; - field_ws->src = g_strdup (src); - - if (type != GL_MERGE_NONE) { - field_ws->backend_widget = - (func[type].field_ws_new) (type, src); - } else { - field_ws->backend_widget = gtk_label_new (_("N/A")); - gtk_misc_set_alignment (GTK_MISC (field_ws->backend_widget), 0, - 0.5); - } - - gtk_box_pack_start (GTK_BOX (field_ws), field_ws->backend_widget, - FALSE, FALSE, 0); - - if (type != GL_MERGE_NONE) { - gtk_signal_connect_object (GTK_OBJECT - (field_ws->backend_widget), - "changed", - GTK_SIGNAL_FUNC - (field_ws_changed_cb), - GTK_OBJECT (field_ws)); - } - - if (GTK_WIDGET_VISIBLE (field_ws)) { - gtk_widget_show_all (field_ws->backend_widget); - } - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (field_ws), - merge_ui_field_ws_signals[CHANGED]); - -} - -/*****************************************************************************/ -/* Set field definitions (associate ids with raw fields). */ -/*****************************************************************************/ -void -gl_merge_ui_field_ws_set_field_defs (glMergeUIFieldWS * field_ws, - GList * field_defs) -{ - glMergeType type; - - type = field_ws->type; - - if (type != GL_MERGE_NONE) { - - (func[type].field_ws_set_field_defs) (field_ws->backend_widget, - field_defs); - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (field_ws), - merge_ui_field_ws_signals[CHANGED]); - - } -} - -/*****************************************************************************/ -/* Get field definitions (associate ids with raw fields). */ -/*****************************************************************************/ -GList * -gl_merge_ui_field_ws_get_field_defs (glMergeUIFieldWS * field_ws) -{ - glMergeType type; - - type = field_ws->type; - - if (type != GL_MERGE_NONE) { - - return (func[type].field_ws_get_field_defs) (field_ws-> - backend_widget); - - } else { - - return NULL; - - } - -} diff --git a/glabels1/src/merge_ui.h b/glabels1/src/merge_ui.h deleted file mode 100644 index e5a7e719..00000000 --- a/glabels1/src/merge_ui.h +++ /dev/null @@ -1,106 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_ui.h: document merge user interface module header file - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - */ -#ifndef __MERGE_UI_H__ -#define __MERGE_UI_H__ - -#include - -#include "merge.h" - -extern void - gl_merge_ui_init (void); - -/*======================================================*/ -/* Merge source selection widget */ -/*======================================================*/ -#define GL_TYPE_MERGE_UI_SRC (gl_merge_ui_src_get_type ()) -#define GL_MERGE_UI_SRC(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_MERGE_UI_SRC, glMergeUISrc )) -#define GL_MERGE_UI_SRC_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MERGE_UI_SRC, glMergeUISrcClass)) -#define GL_IS_MERGE_UI_SRC(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_MERGE_UI_SRC)) -#define GL_IS_MERGE_UI_SRC_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MERGE_UI_SRC)) - -typedef struct _glMergeUISrc glMergeUISrc; -typedef struct _glMergeUISrcClass glMergeUISrcClass; - -struct _glMergeUISrc { - GtkVBox parent_widget; - - glMergeType type; - GtkWidget *backend_widget; -}; - -struct _glMergeUISrcClass { - GtkVBoxClass parent_class; - - void (*changed) (glMergeUISrc * src, gpointer user_data); -}; - -extern guint gl_merge_ui_src_get_type (void); -extern GtkWidget *gl_merge_ui_src_new (void); -extern void gl_merge_ui_src_set_type (glMergeUISrc * src, glMergeType type); -extern void gl_merge_ui_src_set_value (glMergeUISrc * src, gchar * text); -extern gchar *gl_merge_ui_src_get_value (glMergeUISrc * src); - -/*======================================================*/ -/* Merge field selection/definition widget. */ -/*======================================================*/ -#define GL_TYPE_MERGE_UI_FIELD_WS (gl_merge_ui_field_ws_get_type ()) -#define GL_MERGE_UI_FIELD_WS(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_MERGE_UI_FIELD_WS, glMergeUIFieldWS )) -#define GL_MERGE_UI_FIELD_WS_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MERGE_UI_FIELD_WS, glMergeUIFieldWSClass)) -#define GL_IS_MERGE_UI_FIELD_WS(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_MERGE_UI_FIELD_WS)) -#define GL_IS_MERGE_UI_FIELD_WS_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MERGE_UI_FIELD_WS)) - -typedef struct _glMergeUIFieldWS glMergeUIFieldWS; -typedef struct _glMergeUIFieldWSClass glMergeUIFieldWSClass; - -struct _glMergeUIFieldWS { - GtkVBox parent_widget; - - glMergeType type; - gchar *src; - GtkWidget *backend_widget; -}; - -struct _glMergeUIFieldWSClass { - GtkVBoxClass parent_class; - - void (*changed) (glMergeUIFieldWS * field_ws, gpointer user_data); -}; - -extern guint gl_merge_ui_field_ws_get_type (void); -extern GtkWidget *gl_merge_ui_field_ws_new (void); -extern void gl_merge_ui_field_ws_set_type_src (glMergeUIFieldWS * field_ws, - glMergeType type, - gchar * src); -extern void gl_merge_ui_field_ws_set_field_defs (glMergeUIFieldWS * field_ws, - GList * field_defs); -extern GList *gl_merge_ui_field_ws_get_field_defs (glMergeUIFieldWS * field_ws); - -#endif diff --git a/glabels1/src/merge_ui_text.c b/glabels1/src/merge_ui_text.c deleted file mode 100644 index 5e7954db..00000000 --- a/glabels1/src/merge_ui_text.c +++ /dev/null @@ -1,449 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_ui_text.c: text-file document merge user interface backend module - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - -#include "merge_ui_text.h" -#include "merge_text.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef struct { - gchar *loc; - GtkWidget *entry; -} EntryNode; - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint merge_ui_text_src_signals[LAST_SIGNAL] = { 0 }; -static gint merge_ui_text_field_ws_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_merge_ui_text_src_class_init (glMergeUITextSrcClass * class); -static void gl_merge_ui_text_src_init (glMergeUITextSrc * src); -static void gl_merge_ui_text_src_destroy (GtkObject * object); -static void gl_merge_ui_text_src_construct (glMergeUITextSrc * src, - glMergeType type); - -static void src_changed_cb (glMergeUITextSrc * src); - -static void gl_merge_ui_text_field_ws_class_init (glMergeUITextFieldWSClass * class); -static void gl_merge_ui_text_field_ws_init (glMergeUITextFieldWS * field_ws); -static void gl_merge_ui_text_field_ws_destroy (GtkObject * object); -static void gl_merge_ui_text_field_ws_construct (glMergeUITextFieldWS * field_ws, - glMergeType type, - gchar * src); - -static void field_ws_changed_cb (glMergeUITextFieldWS * field_ws); - -/*****************************************************************************/ -/* Boilerplate Object stuff. */ -/*****************************************************************************/ -guint -gl_merge_ui_text_src_get_type (void) -{ - static guint merge_ui_text_src_type = 0; - - if (!merge_ui_text_src_type) { - GtkTypeInfo merge_ui_text_src_info = { - "glMergeUITextSrc", - sizeof (glMergeUITextSrc), - sizeof (glMergeUITextSrcClass), - (GtkClassInitFunc) gl_merge_ui_text_src_class_init, - (GtkObjectInitFunc) gl_merge_ui_text_src_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - merge_ui_text_src_type = gtk_type_unique (gtk_vbox_get_type (), - &merge_ui_text_src_info); - } - - return merge_ui_text_src_type; -} - -static void -gl_merge_ui_text_src_class_init (glMergeUITextSrcClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_merge_ui_text_src_destroy; - - merge_ui_text_src_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMergeUITextSrcClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, - merge_ui_text_src_signals, LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_merge_ui_text_src_init (glMergeUITextSrc * src) -{ - src->type = GL_MERGE_NONE; - src->entry = NULL; -} - -static void -gl_merge_ui_text_src_destroy (GtkObject * object) -{ - glMergeUITextSrc *src; - glMergeUITextSrcClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_MERGE_UI_TEXT_SRC (object)); - - src = GL_MERGE_UI_TEXT_SRC (object); - class = GL_MERGE_UI_TEXT_SRC_CLASS (GTK_OBJECT (src)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_merge_ui_text_src_new (glMergeType type) -{ - glMergeUITextSrc *src; - - src = gtk_type_new (gl_merge_ui_text_src_get_type ()); - - gl_merge_ui_text_src_construct (src, type); - - return GTK_WIDGET (src); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Construct composite widget. */ -/*---------------------------------------------------------------------------*/ -static void -gl_merge_ui_text_src_construct (glMergeUITextSrc * src, - glMergeType type) -{ - GtkWidget *wvbox, *wentry; - - wvbox = GTK_WIDGET (src); - - src->type = type; - - src->entry = - gnome_file_entry_new (NULL, _("Select merge-database source")); - gtk_box_pack_start (GTK_BOX (wvbox), src->entry, TRUE, TRUE, 0); - - wentry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (src->entry)); - gtk_signal_connect_object (GTK_OBJECT (wentry), "changed", - GTK_SIGNAL_FUNC (src_changed_cb), - GTK_OBJECT (src)); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when our backend widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -src_changed_cb (glMergeUITextSrc * src) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (src), merge_ui_text_src_signals[CHANGED]); -} - -/*****************************************************************************/ -/* Set src name. */ -/*****************************************************************************/ -void -gl_merge_ui_text_src_set_value (glMergeUITextSrc * src, - gchar * text) -{ - GtkWidget *wentry; - - wentry = gnome_file_entry_gtk_entry (GNOME_FILE_ENTRY (src->entry)); - - gtk_entry_set_text (GTK_ENTRY (wentry), text); -} - -/*****************************************************************************/ -/* Get src name. */ -/*****************************************************************************/ -gchar * -gl_merge_ui_text_src_get_value (glMergeUITextSrc * src) -{ - return gnome_file_entry_get_full_path (GNOME_FILE_ENTRY (src->entry), - TRUE); -} - -/*****************************************************************************/ -/* Boilerplate Object stuff. */ -/*****************************************************************************/ -guint -gl_merge_ui_text_field_ws_get_type (void) -{ - static guint merge_ui_text_field_ws_type = 0; - - if (!merge_ui_text_field_ws_type) { - GtkTypeInfo merge_ui_text_field_ws_info = { - "glMergeUITextFieldWS", - sizeof (glMergeUITextFieldWS), - sizeof (glMergeUITextFieldWSClass), - (GtkClassInitFunc) gl_merge_ui_text_field_ws_class_init, - (GtkObjectInitFunc) gl_merge_ui_text_field_ws_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - merge_ui_text_field_ws_type = - gtk_type_unique (gtk_hbox_get_type (), - &merge_ui_text_field_ws_info); - } - - return merge_ui_text_field_ws_type; -} - -static void -gl_merge_ui_text_field_ws_class_init (glMergeUITextFieldWSClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_hbox_get_type ()); - - object_class->destroy = gl_merge_ui_text_field_ws_destroy; - - merge_ui_text_field_ws_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMergeUITextFieldWSClass, - changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, - merge_ui_text_field_ws_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_merge_ui_text_field_ws_init (glMergeUITextFieldWS * field_ws) -{ - field_ws->type = GL_MERGE_NONE; - field_ws->entry_list = NULL; -} - -static void -gl_merge_ui_text_field_ws_destroy (GtkObject * object) -{ - glMergeUITextFieldWS *field_ws; - glMergeUITextFieldWSClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_MERGE_UI_TEXT_FIELD_WS (object)); - - field_ws = GL_MERGE_UI_TEXT_FIELD_WS (object); - class = GL_MERGE_UI_TEXT_FIELD_WS_CLASS (GTK_OBJECT (field_ws)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_merge_ui_text_field_ws_new (glMergeType type, - gchar * src) -{ - glMergeUITextFieldWS *field_ws; - - field_ws = gtk_type_new (gl_merge_ui_text_field_ws_get_type ()); - - gl_merge_ui_text_field_ws_construct (field_ws, type, src); - - return GTK_WIDGET (field_ws); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Construct composite widget. */ -/*--------------------------------------------------------------------------*/ -static void -gl_merge_ui_text_field_ws_construct (glMergeUITextFieldWS * field_ws, - glMergeType type, - gchar * src) -{ - GtkWidget *whbox, *wtable, *wlabel, *whline, *wentry; - glMergeInput *mp; - glMergeRawField *sample_field; - GList *sample_field_list=NULL, *p; - gint n_fields, i; - EntryNode *entry_node; - - field_ws->type = type; - field_ws->entry_list = NULL; - - mp = gl_merge_open( type, NULL, src ); - sample_field_list = gl_merge_get_raw_record (mp); - gl_merge_close(mp); - n_fields = g_list_length( sample_field_list ); - - whbox = GTK_WIDGET (field_ws); - - wtable = gtk_table_new (n_fields + 2, 3, FALSE); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 20); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 10); - gtk_box_pack_start (GTK_BOX (whbox), wtable, FALSE, FALSE, GNOME_PAD); - - wlabel = gtk_label_new (_("Column")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 1, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - - wlabel = gtk_label_new (_("Custom field key")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 1, 2, 0, 1); - - wlabel = gtk_label_new (_("Sample data")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 2, 3, 0, 1); - - whline = gtk_hseparator_new (); - gtk_table_attach_defaults (GTK_TABLE (wtable), whline, 0, 1, 1, 2); - whline = gtk_hseparator_new (); - gtk_table_attach_defaults (GTK_TABLE (wtable), whline, 1, 2, 1, 2); - whline = gtk_hseparator_new (); - gtk_table_attach_defaults (GTK_TABLE (wtable), whline, 2, 3, 1, 2); - - for (p = sample_field_list, i = 0; p != NULL; p = p->next, i++) { - sample_field = p->data; - - wlabel = gtk_label_new (sample_field->loc); - gtk_misc_set_alignment (GTK_MISC (wlabel), 1, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, - 0, 1, i + 2, i + 3); - - wentry = gtk_entry_new (); - gtk_entry_set_text (GTK_ENTRY (wentry), sample_field->loc); - gtk_widget_set_usize (wentry, 100, 0); - gtk_table_attach_defaults (GTK_TABLE (wtable), wentry, - 1, 2, i + 2, i + 3); - - gtk_signal_connect_object (GTK_OBJECT (wentry), "changed", - GTK_SIGNAL_FUNC - (field_ws_changed_cb), - GTK_OBJECT (field_ws)); - - wlabel = gtk_label_new (sample_field->value); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL(wlabel), GTK_JUSTIFY_LEFT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, - 2, 3, i + 2, i + 3); - - entry_node = g_new0 (EntryNode, 1); - entry_node->loc = g_strdup (sample_field->loc); - entry_node->entry = wentry; - field_ws->entry_list = - g_list_append (field_ws->entry_list, entry_node); - - } - - gl_merge_free_raw_record (&sample_field_list); - -} - -/*****************************************************************************/ -/* Set field definitions. (associate key with locator) */ -/*****************************************************************************/ -void -gl_merge_ui_text_field_ws_set_field_defs (glMergeUITextFieldWS * field_ws, - GList * field_defs) -{ - GList *p_entry, *p_defs; - EntryNode *entry; - glMergeFieldDefinition *def; - - for (p_entry = field_ws->entry_list; p_entry != NULL; - p_entry = p_entry->next) { - entry = (EntryNode *) p_entry->data; - - for (p_defs = field_defs; p_defs != NULL; p_defs = p_defs->next) { - def = (glMergeFieldDefinition *) p_defs->data; - - if (strcmp (entry->loc, def->loc) == 0) { - gtk_entry_set_text (GTK_ENTRY (entry->entry), - def->key); - } - } - } - -} - -/*****************************************************************************/ -/* Get field definitions. (associate key with locator) */ -/*****************************************************************************/ -GList * -gl_merge_ui_text_field_ws_get_field_defs (glMergeUITextFieldWS * field_ws) -{ - GList *p_entry, *defs_list = NULL; - EntryNode *entry; - glMergeFieldDefinition *def; - - for (p_entry = field_ws->entry_list; p_entry != NULL; - p_entry = p_entry->next) { - entry = (EntryNode *) p_entry->data; - - def = g_new0 (glMergeFieldDefinition, 1); - - def->loc = g_strdup (entry->loc); - def->key = - gtk_editable_get_chars (GTK_EDITABLE (entry->entry), 0, -1); - - defs_list = g_list_append (defs_list, def); - - } - - return defs_list; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when our backend widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -field_ws_changed_cb (glMergeUITextFieldWS * field_ws) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (field_ws), - merge_ui_text_field_ws_signals[CHANGED]); -} diff --git a/glabels1/src/merge_ui_text.h b/glabels1/src/merge_ui_text.h deleted file mode 100644 index 42006f2f..00000000 --- a/glabels1/src/merge_ui_text.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * merge_ui_text.h: text-file merge user interface backend header - * - * Copyright (C) 2002 Jim Evins . - * - * 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 - */ -#ifndef __MERGE_UI_TEXT_H__ -#define __MERGE_UI_TEXT_H__ - -#include - -#include "merge.h" - -/*======================================================*/ -/* Merge source selection widget */ -/*======================================================*/ -#define GL_TYPE_MERGE_UI_TEXT_SRC (gl_merge_ui_text_src_get_type ()) -#define GL_MERGE_UI_TEXT_SRC(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_MERGE_UI_TEXT_SRC, glMergeUITextSrc )) -#define GL_MERGE_UI_TEXT_SRC_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MERGE_UI_TEXT_SRC, glMergeUITextSrcClass)) -#define GL_IS_MERGE_UI_TEXT_SRC(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_MERGE_UI_TEXT_SRC)) -#define GL_IS_MERGE_UI_TEXT_SRC_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MERGE_UI_TEXT_SRC)) - -typedef struct _glMergeUITextSrc glMergeUITextSrc; -typedef struct _glMergeUITextSrcClass glMergeUITextSrcClass; - -struct _glMergeUITextSrc { - GtkVBox parent_widget; - - glMergeType type; - GtkWidget *entry; -}; - -struct _glMergeUITextSrcClass { - GtkVBoxClass parent_class; - - void (*changed) (glMergeUITextSrc * src, gpointer user_data); -}; - -extern guint gl_merge_ui_text_src_get_type (void); -extern GtkWidget *gl_merge_ui_text_src_new (glMergeType type); -extern void gl_merge_ui_text_src_set_value (glMergeUITextSrc * src, - gchar * text); -extern gchar *gl_merge_ui_text_src_get_value (glMergeUITextSrc * src); - -/*======================================================*/ -/* Merge field selection/definition widget. */ -/*======================================================*/ -#define GL_TYPE_MERGE_UI_TEXT_FIELD_WS (gl_merge_ui_text_field_ws_get_type ()) -#define GL_MERGE_UI_TEXT_FIELD_WS(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_MERGE_UI_TEXT_FIELD_WS, glMergeUITextFieldWS )) -#define GL_MERGE_UI_TEXT_FIELD_WS_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MERGE_UI_TEXT_FIELD_WS, glMergeUITextFieldWSClass)) -#define GL_IS_MERGE_UI_TEXT_FIELD_WS(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_MERGE_UI_TEXT_FIELD_WS)) -#define GL_IS_MERGE_UI_TEXT_FIELD_WS_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MERGE_UI_TEXT_FIELD_WS)) - -typedef struct _glMergeUITextFieldWS glMergeUITextFieldWS; -typedef struct _glMergeUITextFieldWSClass glMergeUITextFieldWSClass; - -struct _glMergeUITextFieldWS { - GtkHBox parent_widget; - - glMergeType type; - GList *entry_list; -}; - -struct _glMergeUITextFieldWSClass { - GtkHBoxClass parent_class; - - void (*changed) (glMergeUITextFieldWS * field_ws, gpointer user_data); -}; - -extern guint gl_merge_ui_text_field_ws_get_type (void); -extern GtkWidget *gl_merge_ui_text_field_ws_new (glMergeType type, - gchar * src); -extern void gl_merge_ui_text_field_ws_set_field_defs (glMergeUITextFieldWS * field_ws, - GList * field_defs); -extern GList *gl_merge_ui_text_field_ws_get_field_defs (glMergeUITextFieldWS * - field_ws); - -#endif diff --git a/glabels1/src/mini_preview.c b/glabels1/src/mini_preview.c deleted file mode 100644 index 21e61fa4..00000000 --- a/glabels1/src/mini_preview.c +++ /dev/null @@ -1,498 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * mini_preview.c: mini preview widget module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include "mini_preview.h" - -#include "debug.h" - -#define MINI_PREVIEW_MAX_PIXELS 175 - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CLICKED, - PRESSED, - LAST_SIGNAL -}; - - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint mini_preview_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_mini_preview_class_init (glMiniPreviewClass * class); -static void gl_mini_preview_init (glMiniPreview * preview); -static void gl_mini_preview_destroy (GtkObject * object); - -static void gl_mini_preview_construct (glMiniPreview * preview, - gint height, gint width); - -static GList *mini_outline_list_new (GnomeCanvas *canvas, - glTemplate *template); -static void mini_outline_list_free (GList ** list); - -static gint canvas_event_cb (GnomeCanvas * canvas, GdkEvent * event, - gpointer data); - -/****************************************************************************/ -/* Boilerplate Object stuff. */ -/****************************************************************************/ -guint -gl_mini_preview_get_type (void) -{ - static guint mini_preview_type = 0; - - if (!mini_preview_type) { - GtkTypeInfo mini_preview_info = { - "glMiniPreview", - sizeof (glMiniPreview), - sizeof (glMiniPreviewClass), - (GtkClassInitFunc) gl_mini_preview_class_init, - (GtkObjectInitFunc) gl_mini_preview_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - mini_preview_type = gtk_type_unique (gtk_hbox_get_type (), - &mini_preview_info); - } - - return mini_preview_type; -} - -static void -gl_mini_preview_class_init (glMiniPreviewClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_hbox_get_type ()); - - object_class->destroy = gl_mini_preview_destroy; - - mini_preview_signals[CLICKED] = - gtk_signal_new ("clicked", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMiniPreviewClass, clicked), - gtk_marshal_NONE__INT, - GTK_TYPE_NONE, 1, GTK_TYPE_INT); - - mini_preview_signals[PRESSED] = - gtk_signal_new ("pressed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glMiniPreviewClass, pressed), - gtk_marshal_NONE__INT_INT, - GTK_TYPE_NONE, 2, GTK_TYPE_INT, GTK_TYPE_INT); - - gtk_object_class_add_signals (object_class, mini_preview_signals, - LAST_SIGNAL); - - class->clicked = NULL; - class->pressed = NULL; -} - -static void -gl_mini_preview_init (glMiniPreview * preview) -{ - preview->canvas = NULL; - preview->label_items = NULL; -} - -static void -gl_mini_preview_destroy (GtkObject * object) -{ - glMiniPreview *preview; - glMiniPreviewClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_MINI_PREVIEW (object)); - - preview = GL_MINI_PREVIEW (object); - class = GL_MINI_PREVIEW_CLASS (GTK_OBJECT (preview)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_mini_preview_new (gint height, - gint width) -{ - glMiniPreview *preview; - - preview = gtk_type_new (gl_mini_preview_get_type ()); - - gl_mini_preview_construct (preview, height, width); - - return GTK_WIDGET (preview); -} - -/*--------------------------------------------------------------------------*/ -/* Construct composite widget. */ -/*--------------------------------------------------------------------------*/ -static void -gl_mini_preview_construct (glMiniPreview * preview, - gint height, - gint width) -{ - GtkWidget *whbox; - GnomeCanvasGroup *group; - - whbox = GTK_WIDGET (preview); - - preview->height = height; - preview->width = width; - - /* create canvas */ - gtk_widget_push_visual (gdk_rgb_get_visual ()); - gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - preview->canvas = gnome_canvas_new_aa (); - gtk_widget_pop_colormap (); - gtk_widget_pop_visual (); - gtk_box_pack_start (GTK_BOX (whbox), preview->canvas, TRUE, TRUE, 0); - gtk_widget_set_usize (preview->canvas, width, height); - gnome_canvas_set_scroll_region (GNOME_CANVAS (preview->canvas), - 0.0, 0.0, width, height); - - /* draw an initial paper outline */ - gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (preview->canvas), 1.0); - group = gnome_canvas_root (GNOME_CANVAS (preview->canvas)); - preview->paper_item = - gnome_canvas_item_new (group, - gnome_canvas_rect_get_type (), - "x1", 0.0, - "y1", 0.0, - "x2", (gdouble)width, - "y2", (gdouble)height, - "width_pixels", 1, - "outline_color", "black", - "fill_color", "white", NULL); - - /* create empty list of label canvas items */ - preview->label_items = NULL; - preview->labels_per_sheet = 0; - - /* Event handler */ - gtk_signal_connect (GTK_OBJECT (preview->canvas), "event", - GTK_SIGNAL_FUNC (canvas_event_cb), preview); - -} - -/****************************************************************************/ -/* Set label for mini-preview to determine geometry. */ -/****************************************************************************/ -void gl_mini_preview_set_label (glMiniPreview * preview, - gchar *name) -{ - glTemplate *template; - const GnomePaper *paper = NULL; - gdouble paper_width, paper_height; - gdouble canvas_scale; - gdouble w, h; - - /* Fetch template */ - template = gl_template_from_name (name); - - /* get paper size and set scale */ - paper = gnome_paper_with_name (template->page_size); - paper_width = gnome_paper_pswidth (paper); - paper_height = gnome_paper_psheight (paper); - w = preview->width - 4; - h = preview->height - 4; - if ( (w/paper_width) > (h/paper_height) ) { - canvas_scale = h / paper_height; - } else { - canvas_scale = w / paper_width; - } - gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (preview->canvas), - canvas_scale); - gnome_canvas_set_scroll_region (GNOME_CANVAS (preview->canvas), - 0.0, 0.0, paper_width, paper_height); - - /* update paper outline */ - gnome_canvas_item_set (preview->paper_item, - "x1", 0.0, - "y1", 0.0, - "x2", paper_width, - "y2", paper_height, - NULL); - - /* update label items */ - mini_outline_list_free (&preview->label_items); - preview->label_items = - mini_outline_list_new (GNOME_CANVAS(preview->canvas), - template); - - gl_template_free( &template ); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Draw label outlines and return canvas item list. */ -/*--------------------------------------------------------------------------*/ -static GList * -mini_outline_list_new (GnomeCanvas * canvas, - glTemplate * template) -{ - GnomeCanvasGroup *group = NULL; - GnomeCanvasItem *item = NULL; - GList *list = NULL; - gint i, ix, iy; - gdouble x1, y1, x2, y2, y_temp; - const GnomePaper *paper = NULL; - gdouble paper_height; - - /* get paper height */ - paper = gnome_paper_with_name (template->page_size); - paper_height = gnome_paper_psheight (paper); - - group = gnome_canvas_root (canvas); - - /* draw mini label outlines */ - i = 1; - for (iy = (template->ny - 1); iy >= 0; iy--) { - for (ix = 0; ix < template->nx; ix++, i++) { - - x1 = ix * (template->dx) + template->x0; - y1 = iy * (template->dy) + template->y0; - x2 = x1 + template->label_width; - y2 = y1 + template->label_height; - - /* transform origin from lower left to upper left */ - /* and swap y's so that (y1 < y2) */ - y_temp = y2; - y2 = paper_height - y1; - y1 = paper_height - y_temp; - - switch (template->style) { - case GL_TEMPLATE_STYLE_RECT: - item = gnome_canvas_item_new (group, - gnome_canvas_rect_get_type(), - "x1", x1, - "y1", y1, - "x2", x2, - "y2", y2, - "width_pixels", 1, - "outline_color", "black", - "fill_color", "white", - NULL); - break; - case GL_TEMPLATE_STYLE_ROUND: - case GL_TEMPLATE_STYLE_CD: - item = gnome_canvas_item_new (group, - gnome_canvas_ellipse_get_type(), - "x1", x1, - "y1", y1, - "x2", x2, - "y2", y2, - "width_pixels", 1, - "outline_color", "black", - "fill_color", "white", - NULL); - break; - default: - WARN ("Unknown label style"); - return list; - break; - } - gtk_object_set_data (GTK_OBJECT (item), "i", - GINT_TO_POINTER (i)); - - list = g_list_append (list, item); - } - } - - return list; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Draw label outlines and return canvas item list. */ -/*--------------------------------------------------------------------------*/ -static void -mini_outline_list_free (GList ** list) -{ - GnomeCanvasItem *item; - GList *p; - - if ( *list != NULL ) { - - for (p = *list; p != NULL; p = p->next) { - item = GNOME_CANVAS_ITEM (p->data); - gtk_object_destroy (GTK_OBJECT (item)); - } - - g_list_free (*list); - *list = NULL; - - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Canvas event handler, select first and last items. */ -/*--------------------------------------------------------------------------*/ -static gint -canvas_event_cb (GnomeCanvas * canvas, - GdkEvent * event, - gpointer data) -{ - glMiniPreview *preview = GL_MINI_PREVIEW (data); - GnomeCanvasItem *item; - static gboolean dragging = FALSE; - static gint prev_i = 0, first, last; - gint i; - gdouble x, y; - - switch (event->type) { - - case GDK_BUTTON_PRESS: - gnome_canvas_window_to_world (canvas, - event->button.x, event->button.y, - &x, &y); - switch (event->button.button) { - case 1: - /* Get item at cursor and make sure - it's a label object ("i" is valid) */ - item = gnome_canvas_get_item_at (GNOME_CANVAS (canvas), - x, y); - if (item == NULL) - break; - i = GPOINTER_TO_INT (gtk_object_get_data - (GTK_OBJECT (item), "i")); - if (i == 0) - break; - /* Go into dragging mode while remains pressed. */ - dragging = TRUE; - gdk_pointer_grab (GTK_WIDGET (canvas)->window, - FALSE, - GDK_POINTER_MOTION_MASK | - GDK_BUTTON_RELEASE_MASK | - GDK_BUTTON_PRESS_MASK, NULL, NULL, - event->button.time); - gtk_signal_emit (GTK_OBJECT(preview), - mini_preview_signals[CLICKED], - i); - first = i; - last = i; - gtk_signal_emit (GTK_OBJECT(preview), - mini_preview_signals[PRESSED], - first, last); - prev_i = i; - break; - - default: - break; - } - break; - - case GDK_BUTTON_RELEASE: - gnome_canvas_window_to_world (canvas, - event->button.x, event->button.y, - &x, &y); - switch (event->button.button) { - case 1: - /* Exit dragging mode */ - dragging = FALSE; - gdk_pointer_ungrab (event->button.time); - break; - - default: - break; - } - break; - - case GDK_MOTION_NOTIFY: - gnome_canvas_window_to_world (canvas, - event->motion.x, event->motion.y, - &x, &y); - if (dragging && (event->motion.state & GDK_BUTTON1_MASK)) { - /* Get item at cursor and - make sure it's a label object ("i" is valid) */ - item = gnome_canvas_get_item_at (GNOME_CANVAS (canvas), - x, y); - if (item == NULL) - break; - i = GPOINTER_TO_INT (gtk_object_get_data - (GTK_OBJECT (item), "i")); - if (i == 0) - break; - if (prev_i != i) { - /* Entered into a new item */ - last = i; - gtk_signal_emit (GTK_OBJECT(preview), - mini_preview_signals[PRESSED], - MIN (first, last), - MAX (first, last)); - prev_i = i; - } - } - break; - - default: - break; - } - - return FALSE; - -} - -/****************************************************************************/ -/* Highlight given label outlines. */ -/****************************************************************************/ -void -gl_mini_preview_highlight_range (glMiniPreview * preview, - gint first_label, - gint last_label) -{ - GnomeCanvasItem *item = NULL; - GList *p = NULL; - gint i; - - for (p = preview->label_items, i = 1; p != NULL; i++, p = p->next) { - - item = GNOME_CANVAS_ITEM (p->data); - - if ((i >= first_label) && (i <= last_label)) { - gnome_canvas_item_set (item, - "fill_color", "light blue", - NULL); - } else { - gnome_canvas_item_set (item, - "fill_color", "white", NULL); - } - - } - -} - diff --git a/glabels1/src/mini_preview.h b/glabels1/src/mini_preview.h deleted file mode 100644 index 5c08deae..00000000 --- a/glabels1/src/mini_preview.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * mini_preview.h: mini-preview widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __MINI_PREVIEW_H__ -#define __MINI_PREVIEW_H__ - -#include -#include "label.h" - -#define GL_TYPE_MINI_PREVIEW (gl_mini_preview_get_type ()) -#define GL_MINI_PREVIEW(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_MINI_PREVIEW, glMiniPreview )) -#define GL_MINI_PREVIEW_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_MINI_PREVIEW, glMiniPreviewClass)) -#define GL_IS_MINI_PREVIEW(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_MINI_PREVIEW)) -#define GL_IS_MINI_PREVIEW_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_MINI_PREVIEW)) - -typedef struct _glMiniPreview glMiniPreview; -typedef struct _glMiniPreviewClass glMiniPreviewClass; - -struct _glMiniPreview { - GtkHBox parent_widget; - - gint height; - gint width; - - GtkWidget *canvas; - GnomeCanvasItem *paper_item; - - gint labels_per_sheet; - GList *label_items; -}; - -struct _glMiniPreviewClass { - GtkHBoxClass parent_class; - - void (*clicked) (glMiniPreview *preview, - gint index, gpointer user_data); - void (*pressed) (glMiniPreview *preview, - gint index1, gint index2, - gpointer user_data); -}; - -extern guint gl_mini_preview_get_type (void); - -extern GtkWidget *gl_mini_preview_new (gint height, gint width); - -extern void gl_mini_preview_set_label (glMiniPreview * preview, - gchar * name); - -extern void gl_mini_preview_highlight_range (glMiniPreview * preview, - gint first_label, - gint last_label); - -#endif diff --git a/glabels1/src/pixmaps/Makefile.am b/glabels1/src/pixmaps/Makefile.am deleted file mode 100644 index 3d197100..00000000 --- a/glabels1/src/pixmaps/Makefile.am +++ /dev/null @@ -1,32 +0,0 @@ -EXTRA_DIST = \ - arrow.xpm \ - text.xpm \ - box.xpm \ - line.xpm \ - ellipse.xpm \ - image.xpm \ - barcode.xpm \ - zoomin.xpm \ - zoomout.xpm \ - zoom1to1.xpm \ - merge.xpm \ - collate.xpm \ - nocollate.xpm \ - checkerboard.xpm \ - cursor_text.xbm \ - cursor_text_mask.xbm \ - cursor_box.xbm \ - cursor_box_mask.xbm \ - cursor_line.xbm \ - cursor_line_mask.xbm \ - cursor_ellipse.xbm \ - cursor_ellipse_mask.xbm \ - cursor_image.xbm \ - cursor_image_mask.xbm \ - cursor_barcode.xbm \ - cursor_barcode_mask.xbm \ - cursor_zoomin.xbm \ - cursor_zoomin_mask.xbm \ - cursor_zoomout.xbm \ - cursor_zoomout_mask.xbm - diff --git a/glabels1/src/pixmaps/arrow.xpm b/glabels1/src/pixmaps/arrow.xpm deleted file mode 100644 index 60e9e66b..00000000 --- a/glabels1/src/pixmaps/arrow.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char *arrow_xpm[]={ -"24 24 2 1", -". c None", -"# c #000000", -"........................", -"........................", -"........................", -".......#................", -".......##...............", -".......###..............", -".......####.............", -".......#####............", -".......######...........", -".......#######..........", -".......########.........", -".......#####............", -".......##.##............", -".......#...##...........", -"...........##...........", -"............##..........", -"............##..........", -"........................", -"........................", -"........................", -"........................", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/barcode.xpm b/glabels1/src/pixmaps/barcode.xpm deleted file mode 100644 index 9ac15815..00000000 --- a/glabels1/src/pixmaps/barcode.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char *barcode_xpm[]={ -"24 24 2 1", -". c None", -"# c #000000", -"........................", -"........................", -"........................", -"........................", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"...#.##.##.#.#.#.##.#...", -"........................", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/box.xpm b/glabels1/src/pixmaps/box.xpm deleted file mode 100644 index b7440681..00000000 --- a/glabels1/src/pixmaps/box.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *box_xpm[]={ -"24 24 3 1", -". c None", -"# c #000000", -"a c #ede5cf", -"........................", -"........................", -"........................", -"........................", -"...##################...", -"...##################...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##################...", -"...##################...", -"........................", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/cursor_zoomin.xbm b/glabels1/src/pixmaps/cursor_zoomin.xbm deleted file mode 100644 index beb1545e..00000000 --- a/glabels1/src/pixmaps/cursor_zoomin.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_zoomin_width 32 -#define cursor_zoomin_height 32 -#define cursor_zoomin_x_hot 8 -#define cursor_zoomin_y_hot 8 -static unsigned char cursor_zoomin_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x30, 0x0c, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x88, 0x31, 0x00, 0x00, - 0x84, 0x21, 0x00, 0x00, 0xe4, 0x27, 0x00, 0x00, 0xe4, 0x27, 0x00, 0x00, - 0x84, 0x21, 0x00, 0x00, 0x8c, 0x11, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, - 0x30, 0x0c, 0x00, 0x00, 0xe0, 0x37, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels1/src/pixmaps/cursor_zoomin_mask.xbm b/glabels1/src/pixmaps/cursor_zoomin_mask.xbm deleted file mode 100644 index cada0165..00000000 --- a/glabels1/src/pixmaps/cursor_zoomin_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_zoomin_mask_width 32 -#define cursor_zoomin_mask_height 32 -#define cursor_zoomin_mask_x_hot 8 -#define cursor_zoomin_mask_y_hot 8 -static unsigned char cursor_zoomin_mask_bits[] = { - 0xc0, 0x03, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, - 0xc0, 0xf3, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, - 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels1/src/pixmaps/cursor_zoomout.xbm b/glabels1/src/pixmaps/cursor_zoomout.xbm deleted file mode 100644 index c8fac13c..00000000 --- a/glabels1/src/pixmaps/cursor_zoomout.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_zoomout_width 32 -#define cursor_zoomout_height 32 -#define cursor_zoomout_x_hot 8 -#define cursor_zoomout_y_hot 8 -static unsigned char cursor_zoomout_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, - 0x30, 0x0c, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, - 0x04, 0x20, 0x00, 0x00, 0xe4, 0x27, 0x00, 0x00, 0xe4, 0x27, 0x00, 0x00, - 0x04, 0x20, 0x00, 0x00, 0x0c, 0x10, 0x00, 0x00, 0x08, 0x10, 0x00, 0x00, - 0x30, 0x0c, 0x00, 0x00, 0xe0, 0x37, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, - 0x00, 0xe0, 0x00, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0x80, 0x03, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels1/src/pixmaps/cursor_zoomout_mask.xbm b/glabels1/src/pixmaps/cursor_zoomout_mask.xbm deleted file mode 100644 index aadc97d9..00000000 --- a/glabels1/src/pixmaps/cursor_zoomout_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_zoomout_mask_width 32 -#define cursor_zoomout_mask_height 32 -#define cursor_zoomout_mask_x_hot 8 -#define cursor_zoomout_mask_y_hot 8 -static unsigned char cursor_zoomout_mask_bits[] = { - 0xc0, 0x03, 0x00, 0x00, 0xf0, 0x0f, 0x00, 0x00, 0xf8, 0x1f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, - 0xff, 0xff, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, 0xfe, 0x7f, 0x00, 0x00, - 0xfc, 0x3f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, - 0xc0, 0xf3, 0x01, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0xc0, 0x07, 0x00, - 0x00, 0x80, 0x0f, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels1/src/pixmaps/ellipse.xpm b/glabels1/src/pixmaps/ellipse.xpm deleted file mode 100644 index f186186f..00000000 --- a/glabels1/src/pixmaps/ellipse.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *ellipse_xpm[]={ -"24 24 3 1", -". c None", -"# c #000000", -"a c #ede5cf", -"........................", -"........................", -"........................", -".........######.........", -".......##########.......", -"......###aaaaaa###......", -".....##aaaaaaaaa###.....", -"....###aaaaaaaaaaa##....", -"....##aaaaaaaaaaaa##....", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"...##aaaaaaaaaaaaaa##...", -"....##aaaaaaaaaaaa##....", -"....##aaaaaaaaaaa###....", -".....###aaaaaaaaa##.....", -"......###aaaaaa###......", -".......##########.......", -".........######.........", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/image.xpm b/glabels1/src/pixmaps/image.xpm deleted file mode 100644 index 116c20d4..00000000 --- a/glabels1/src/pixmaps/image.xpm +++ /dev/null @@ -1,42 +0,0 @@ -/* XPM */ -static char *image_xpm[]={ -"24 24 15 1", -". c None", -"# c #000000", -"i c #004000", -"f c #008000", -"e c #00c000", -"d c #00ff00", -"k c #404000", -"a c #58a8ff", -"h c #a0a0a0", -"g c #a8dcff", -"j c #c0ffff", -"l c #ff0000", -"b c #ffff00", -"c c #ffffc0", -"m c #ffffff", -"........................", -"........................", -"..####################..", -"..#aaaaaaaaaaaaaaaaaa#..", -"..#aaaaaaaaaaaabbaaaa#..", -"..#aaaaaa#aaaabbbbaaa#..", -"..#aaaaa#c#aaaabbaaaa#..", -"..#aaaa#ccc#aaaaaadef#..", -"..#aga#cchcc#agagdeei#..", -"..#ga##cchcc##agaeefi#..", -"..#ggg#ccccc#gggggfii#..", -"..#jjj#ccccc#jjjjjjij#..", -"..#####chchc#######k##..", -"..#eee#chchc#eeeeeeke#..", -"..#eee#chccc#eeelelke#..", -"..#ffe#chccc#eleieike#..", -"..#eee#######eeieilei#..", -"..#feeeemeeeeeieeeeie#..", -"..#eeeeemmmmmmmmmeeee#..", -"..#eeeeeeeeeeeeemmeee#..", -"..#eeeeeeeeeeeeeemeee#..", -"..####################..", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/line.xpm b/glabels1/src/pixmaps/line.xpm deleted file mode 100644 index 37a24c9c..00000000 --- a/glabels1/src/pixmaps/line.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char *line_xpm[]={ -"24 24 2 1", -". c None", -"# c #000000", -"........................", -"........................", -"........................", -"........................", -"...................#....", -"..................##....", -".................##.....", -"................##......", -"...............##.......", -"..............##........", -".............##.........", -"............##..........", -"...........##...........", -"..........##............", -".........##.............", -"........##..............", -".......##...............", -"......##................", -".....##.................", -"....##..................", -"....#...................", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/merge.xpm b/glabels1/src/pixmaps/merge.xpm deleted file mode 100644 index 6fd5f8f2..00000000 --- a/glabels1/src/pixmaps/merge.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *merge_xpm[]={ -"24 24 7 1", -". c None", -"# c #000000", -"c c #585858", -"d c #a0a0a0", -"a c #c0c000", -"b c #ffffc0", -"e c #ffffff", -"........................", -"........................", -"....##########..........", -"...##abbbbbbb#c.........", -"..#d#dbbbbbbb#c.........", -".####acdbcbcb#c.........", -".#adadbbbbbbe#c.........", -".#bccbcbcdecb#c.........", -".#bbbbbebebbe#c.........", -".#bcb##############.....", -".#bbb#eeeeeeeeeeee#.....", -".#bcd#e##############...", -".#bbb#e#eeeeeeeeeeee#...", -".#bcb#e#e##############.", -".#bbb#e#e#eeeeeeeeeeee#.", -".#bcb###e#eeeeeeeeeeee#.", -".#bbebb#e#eeeeeeeeeeee#.", -".#bccbb###eeeeeeeeeeee#.", -".#bbbebeb#eeeeeeeeeeee#.", -".#bcbbcce##############.", -".#ebebebebeee#c.........", -".#############c.........", -"..ccccccccccccc.........", -"........................"}; diff --git a/glabels1/src/pixmaps/text.xpm b/glabels1/src/pixmaps/text.xpm deleted file mode 100644 index 499d7409..00000000 --- a/glabels1/src/pixmaps/text.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char *text_xpm[]={ -"24 24 2 1", -". c None", -"# c #000000", -"........................", -"........................", -"........................", -"........................", -"........................", -"......###########.......", -"......##..###..##.......", -"......#...###...#.......", -"..........###...........", -"..........###...........", -"..........###...........", -"..........###...........", -"..........###...........", -"..........###...........", -"..........###...........", -"..........###...........", -"..........###...........", -".........#####..........", -"........................", -"........................", -"........................", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/zoom1to1.xpm b/glabels1/src/pixmaps/zoom1to1.xpm deleted file mode 100644 index 956f4029..00000000 --- a/glabels1/src/pixmaps/zoom1to1.xpm +++ /dev/null @@ -1,30 +0,0 @@ -/* XPM */ -static char *zoom1to1_xpm[]={ -"24 24 3 1", -". c None", -"# c #000000", -"a c #00ff00", -"........................", -"........................", -"........................", -"........................", -"......###.......###.....", -".....#aa#......#aa#.....", -".....#aa#......#aa#.....", -".....##a#......##a#.....", -"......#a#.......#a#.....", -"......#a#..###..#a#.....", -"......#a#..#a#..#a#.....", -"......#a#..#a#..#a#.....", -"......#a#..###..#a#.....", -"......#a#.......#a#.....", -"......#a#.......#a#.....", -"......#a#.......#a#.....", -"......#a#..###..#a#.....", -"......#a#..#a#..#a#.....", -"......#a#..#a#..#a#.....", -"......###..###..###.....", -"........................", -"........................", -"........................", -"........................"}; diff --git a/glabels1/src/pixmaps/zoomin.xpm b/glabels1/src/pixmaps/zoomin.xpm deleted file mode 100644 index 88f8b4d5..00000000 --- a/glabels1/src/pixmaps/zoomin.xpm +++ /dev/null @@ -1,38 +0,0 @@ -/* XPM */ -static char *zoomin_xpm[]={ -"24 24 11 1", -". c None", -"# c #000000", -"c c #0058c0", -"e c #00ff00", -"i c #404000", -"g c #58a8ff", -"f c #a8dcff", -"h c #c0c000", -"a c #c0ffff", -"b c #ffffc0", -"d c #ffffff", -"........................", -"........................", -"........................", -".......######...........", -"......##aaaaa##.........", -".....#aaaaaaaa##........", -"....##aab###aaac#.......", -"....#aabd#e#aafa##......", -"...#aaddd#e#faffa#......", -"...#aa####e####ga#......", -"...#ad#eeeeeee#ga#......", -"...#ad####e####ga#......", -"...#aaaff#e#fffga#......", -"...##aaaf#e#fgga#.......", -"....#aaff###ggaa#.......", -".....##afggggaa####.....", -"......##aaaaa##.#hb#....", -"........######..#ihb#...", -"................d#ihb#..", -".................d#ihb#.", -"..................d#ihb.", -"...................d#i..", -"....................d...", -"........................"}; diff --git a/glabels1/src/pixmaps/zoomout.xpm b/glabels1/src/pixmaps/zoomout.xpm deleted file mode 100644 index a1f8e862..00000000 --- a/glabels1/src/pixmaps/zoomout.xpm +++ /dev/null @@ -1,37 +0,0 @@ -/* XPM */ -static char *zoomout_xpm[]={ -"24 24 10 1", -". c None", -"# c #000000", -"f c #00ff00", -"h c #404000", -"e c #58a8ff", -"c c #a8dcff", -"g c #c0c000", -"a c #c0ffff", -"b c #ffffc0", -"d c #ffffff", -"........................", -"........................", -"........................", -".......######...........", -"......##aaaaa##.........", -".....#aaaaaaaa##........", -"....##aabbacaaaa#.......", -"....#aabdcacaaca##......", -"...#aadddccccacca#......", -"...#aa#########ea#......", -"...#ad#fffffff#ea#......", -"...#ad#########ea#......", -"...#aaaccccccccea#......", -"...##aaaccccceea#.......", -"....#aaccccceeaa#.......", -".....##aceeeeaa####.....", -"......##aaaaa##.#gb#....", -"........######..#hgb#...", -"................d#hgb#..", -".................d#hgb#.", -"..................d#hgb.", -"...................d#h..", -"....................d...", -"........................"}; diff --git a/glabels1/src/prefs.c b/glabels1/src/prefs.c deleted file mode 100644 index 8e76eecb..00000000 --- a/glabels1/src/prefs.c +++ /dev/null @@ -1,470 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prefs.c: Application preferences module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "mdi.h" -#include "propertybox.h" -#include "prefs.h" - -#include "debug.h" - -/*============================================*/ -/* Private types. */ -/*============================================*/ - -typedef struct { - glPrefsUnits default_units; - gchar *default_page_size; -} Prefs; - -/*============================================*/ -/* Private globals. */ -/*============================================*/ -static GtkWidget *dialog = NULL; - -static Prefs *prefs = NULL; - -static GtkWidget *unit_pts_radio, *unit_inches_radio, *unit_mm_radio; -static GtkWidget *page_size_us_letter_radio, *page_size_a4_radio; - -/*============================================*/ -/* Private function prototypes. */ -/*============================================*/ -static void apply_cb (glPropertyBox * propertybox, gint arg1, gpointer user_data); - -static void prefs_destroy_cb (void); - -static void prefs_changed_cb (void); - -static Prefs *read_prefs (void); - -static void sync_prefs (Prefs * p); - -static void free_prefs (Prefs * p); - -static void add_general_page (GtkWidget * dialog); - -static void set_general_page_from_prefs (Prefs * p); - -static void set_prefs_from_general_page (Prefs * p); - -/****************************************************************************/ -/* Create and display preferences dialog. */ -/****************************************************************************/ -void -gl_prefs_cb (GtkWidget * widget, - gpointer data) -{ - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - - if (prefs == NULL) { - prefs = read_prefs (); - } - - if (dialog == NULL) { - dialog = gl_property_box_new (); - gtk_window_set_title (GTK_WINDOW (dialog), - _("Glabels: Preferences")); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (app)); - - add_general_page (dialog); - - gtk_signal_connect (GTK_OBJECT (dialog), "destroy", - GTK_SIGNAL_FUNC (prefs_destroy_cb), NULL); - - gtk_signal_connect (GTK_OBJECT (dialog), "delete_event", - GTK_SIGNAL_FUNC (prefs_destroy_cb), NULL); - - gtk_signal_connect (GTK_OBJECT (dialog), "apply", - GTK_SIGNAL_FUNC (apply_cb), NULL); - - gtk_widget_show_all (GTK_WIDGET (dialog)); - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. "Apply" button callback. */ -/*--------------------------------------------------------------------------*/ -static void -apply_cb (glPropertyBox * propertybox, - gint arg1, - gpointer user_data) -{ - set_prefs_from_general_page (prefs); - sync_prefs (prefs); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback to finish cleaning up after tearing down dialog. */ -/*--------------------------------------------------------------------------*/ -static void -prefs_destroy_cb (void) -{ - dialog = NULL; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the dialog has changed. */ -/*--------------------------------------------------------------------------*/ -static void -prefs_changed_cb (void) -{ - gl_property_box_changed (GL_PROPERTY_BOX (dialog)); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Read and set preferences from disk. */ -/*--------------------------------------------------------------------------*/ -static Prefs * -read_prefs (void) -{ - Prefs *p; - gchar *string; - gboolean dflt; - - p = g_new0 (Prefs, 1); - - gnome_config_push_prefix ("/glabels/General/"); - - string = gnome_config_get_string_with_default ("Units=Inches", &dflt); - if (dflt) - gnome_config_set_string ("Units", "Inches"); - if (g_strcasecmp (string, "Points") == 0) { - p->default_units = GL_PREFS_UNITS_PTS; - } else if (g_strcasecmp (string, "Inches") == 0) { - p->default_units = GL_PREFS_UNITS_INCHES; - } else if (g_strcasecmp (string, "Millimeters") == 0) { - p->default_units = GL_PREFS_UNITS_MM; - } - g_free (string); - - p->default_page_size = - gnome_config_get_string_with_default ("Page_size=US-Letter", &dflt); - if (dflt) - gnome_config_set_string ("Page_size", "US-Letter"); - - gnome_config_pop_prefix (); - - return p; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Sync preferences with disk. */ -/*--------------------------------------------------------------------------*/ -static void -sync_prefs (Prefs * p) -{ - gnome_config_push_prefix ("/glabels/General/"); - switch (p->default_units) { - case GL_PREFS_UNITS_PTS: - gnome_config_set_string ("Units", "Points"); - break; - case GL_PREFS_UNITS_INCHES: - gnome_config_set_string ("Units", "Inches"); - break; - case GL_PREFS_UNITS_MM: - gnome_config_set_string ("Units", "Millimeters"); - break; - default: - WARN ("Illegal units"); - break; - } - gnome_config_set_string ("Page_size", p->default_page_size); - gnome_config_pop_prefix (); - gnome_config_sync (); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Free previously allocated preferences structure. */ -/*--------------------------------------------------------------------------*/ -static void -free_prefs (Prefs * p) -{ - g_free (p); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Create and add the general page tab with controls to the dialog.*/ -/*--------------------------------------------------------------------------*/ -static void -add_general_page (GtkWidget * dialog) -{ - GtkWidget *wframe, *wlabel, *wvbox, *wvbox1; - GSList *radio_group = NULL; - - wlabel = gtk_label_new (_("General")); - - wvbox = gtk_vbox_new (FALSE, 0); - - /* ----- Display Units Frame ------------------------------------ */ - wframe = gtk_frame_new (_("Display units")); - gtk_container_set_border_width (GTK_CONTAINER (wframe), 10); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wvbox1 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox1), 10); - gtk_container_add (GTK_CONTAINER (wframe), wvbox1); - - radio_group = NULL; - - unit_pts_radio = - gtk_radio_button_new_with_label (radio_group, _("Points")); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (unit_pts_radio)); - gtk_box_pack_start (GTK_BOX (wvbox1), unit_pts_radio, FALSE, FALSE, 0); - - unit_inches_radio = - gtk_radio_button_new_with_label (radio_group, _("Inches")); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (unit_inches_radio)); - gtk_box_pack_start (GTK_BOX (wvbox1), unit_inches_radio, FALSE, FALSE, - 0); - - unit_mm_radio = - gtk_radio_button_new_with_label (radio_group, _("Millimeters")); - radio_group = gtk_radio_button_group (GTK_RADIO_BUTTON (unit_mm_radio)); - gtk_box_pack_start (GTK_BOX (wvbox1), unit_mm_radio, FALSE, FALSE, 0); - - /* ----- Display Units Frame ------------------------------------ */ - wframe = gtk_frame_new (_("Default page size")); - gtk_container_set_border_width (GTK_CONTAINER (wframe), 10); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wvbox1 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox1), 10); - gtk_container_add (GTK_CONTAINER (wframe), wvbox1); - - radio_group = NULL; - - page_size_us_letter_radio = - gtk_radio_button_new_with_label (radio_group, "US-Letter"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON - (page_size_us_letter_radio)); - gtk_box_pack_start (GTK_BOX (wvbox1), page_size_us_letter_radio, FALSE, - FALSE, 0); - - page_size_a4_radio = - gtk_radio_button_new_with_label (radio_group, "A4"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (page_size_a4_radio)); - gtk_box_pack_start (GTK_BOX (wvbox1), page_size_a4_radio, - FALSE, FALSE, 0); - - gl_property_box_append_page (GL_PROPERTY_BOX (dialog), wvbox, wlabel); - - set_general_page_from_prefs (prefs); - - gtk_signal_connect (GTK_OBJECT (unit_pts_radio), "toggled", - GTK_SIGNAL_FUNC (prefs_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (unit_inches_radio), "toggled", - GTK_SIGNAL_FUNC (prefs_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (unit_mm_radio), "toggled", - GTK_SIGNAL_FUNC (prefs_changed_cb), NULL); - - gtk_signal_connect (GTK_OBJECT (page_size_us_letter_radio), "toggled", - GTK_SIGNAL_FUNC (prefs_changed_cb), NULL); - gtk_signal_connect (GTK_OBJECT (page_size_a4_radio), "toggled", - GTK_SIGNAL_FUNC (prefs_changed_cb), NULL); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Initialize general tab controls from current prefs. */ -/*--------------------------------------------------------------------------*/ -static void -set_general_page_from_prefs (Prefs * p) -{ - switch (p->default_units) { - case GL_PREFS_UNITS_PTS: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (unit_pts_radio), TRUE); - break; - case GL_PREFS_UNITS_INCHES: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (unit_inches_radio), TRUE); - break; - case GL_PREFS_UNITS_MM: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (unit_mm_radio), - TRUE); - break; - default: - WARN ("Illegal units"); - break; - } - - if (g_strcasecmp (p->default_page_size, "US-Letter") == 0) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (page_size_us_letter_radio), - TRUE); - } else if (g_strcasecmp (p->default_page_size, "A4") == 0) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (page_size_a4_radio), TRUE); - } else { - WARN ("Illegal page size: %s", p->default_page_size); - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Set current preferences based on general controls. */ -/*--------------------------------------------------------------------------*/ -static void -set_prefs_from_general_page (Prefs * p) -{ - if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (unit_pts_radio))) { - p->default_units = GL_PREFS_UNITS_PTS; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (unit_inches_radio))) { - p->default_units = GL_PREFS_UNITS_INCHES; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (unit_mm_radio))) { - p->default_units = GL_PREFS_UNITS_MM; - } - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (page_size_us_letter_radio))) { - g_free (p->default_page_size); - p->default_page_size = g_strdup ("US-Letter"); - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (page_size_a4_radio))) { - g_free (p->default_page_size); - p->default_page_size = g_strdup ("A4"); - } - -} - -/****************************************************************************/ -/* Get desired units. */ -/****************************************************************************/ -glPrefsUnits -gl_prefs_get_units(void) -{ - return prefs->default_units; -} - -/****************************************************************************/ -/* Get desired units per point. */ -/****************************************************************************/ -gdouble -gl_prefs_get_units_per_point (void) -{ - if (prefs == NULL) { - prefs = read_prefs (); - } - - switch (prefs->default_units) { - case GL_PREFS_UNITS_PTS: - return 1.0; /* points */ - case GL_PREFS_UNITS_INCHES: - return 1.0 / 72.0; /* inches */ - case GL_PREFS_UNITS_MM: - return 0.35277778; /* mm */ - default: - WARN ("Illegal units"); /* Should not happen */ - return 1.0; - } -} - -/****************************************************************************/ -/* Get precision for desired units. */ -/****************************************************************************/ -gint -gl_prefs_get_units_precision (void) -{ - if (prefs == NULL) { - prefs = read_prefs (); - } - - switch (prefs->default_units) { - case GL_PREFS_UNITS_PTS: - return 1; /* points */ - case GL_PREFS_UNITS_INCHES: - return 3; /* inches */ - case GL_PREFS_UNITS_MM: - return 1; /* mm */ - default: - WARN ("Illegal units"); /* Should not happen */ - return 1.0; - } -} - -/****************************************************************************/ -/* Get step size for desired units. */ -/****************************************************************************/ -gdouble -gl_prefs_get_units_step_size (void) -{ - if (prefs == NULL) { - prefs = read_prefs (); - } - - switch (prefs->default_units) { - case GL_PREFS_UNITS_PTS: - return 0.1; /* points */ - case GL_PREFS_UNITS_INCHES: - return 0.001; /* inches */ - case GL_PREFS_UNITS_MM: - return 0.1; /* mm */ - default: - WARN ("Illegal units"); /* Should not happen */ - return 1.0; - } -} - -/****************************************************************************/ -/* Get string representing desired units. */ -/****************************************************************************/ -const gchar * -gl_prefs_get_units_string (void) -{ - if (prefs == NULL) { - prefs = read_prefs (); - } - - switch (prefs->default_units) { - case GL_PREFS_UNITS_PTS: - return _("points"); - case GL_PREFS_UNITS_INCHES: - return _("inches"); - case GL_PREFS_UNITS_MM: - return _("mm"); - default: - WARN ("Illegal units"); /* Should not happen */ - return _("points"); - } -} - -/****************************************************************************/ -/* Get default page size. */ -/****************************************************************************/ -const gchar * -gl_prefs_get_page_size (void) -{ - if (prefs == NULL) { - prefs = read_prefs (); - } - - return prefs->default_page_size; -} diff --git a/glabels1/src/prefs.h b/glabels1/src/prefs.h deleted file mode 100644 index a279d58b..00000000 --- a/glabels1/src/prefs.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prefs.h: Application preferences module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PREFS_H__ -#define __PREFS_H__ - -#include - -typedef enum { - GL_PREFS_UNITS_PTS, - GL_PREFS_UNITS_INCHES, - GL_PREFS_UNITS_MM, -} glPrefsUnits; - -extern void gl_prefs_cb (GtkWidget * widget, gpointer data); - -extern glPrefsUnits gl_prefs_get_units(void); - -extern gdouble gl_prefs_get_units_per_point (void); - -extern gint gl_prefs_get_units_precision (void); - -extern gdouble gl_prefs_get_units_step_size (void); - -extern const gchar *gl_prefs_get_units_string (void); - -extern const gchar *gl_prefs_get_page_size (void); - -#endif /* __PREFS_H__ */ diff --git a/glabels1/src/print.c b/glabels1/src/print.c deleted file mode 100644 index 29e8aa70..00000000 --- a/glabels1/src/print.c +++ /dev/null @@ -1,869 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print.c: Print module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include -#include -#include -#include -#include - -#include "print.h" -#include "label.h" -#include "bc.h" -#include "template.h" -#include "hack.h" - -#include "debug.h" - -#define GL_PRINT_DEFAULT_PAPER "US-Letter" - -#define RED(x) ( (((x)>>24) & 0xff) / 255.0 ) -#define GREEN(x) ( (((x)>>16) & 0xff) / 255.0 ) -#define BLUE(x) ( (((x)>>8) & 0xff) / 255.0 ) -#define ALPHA(x) ( ( (x) & 0xff) / 255.0 ) - -/*===========================================*/ -/* Private types. */ -/*===========================================*/ -typedef struct _PrintInfo { - /* gnome print context */ - GnomePrintContext *pc; - - /* gLabels Template */ - glTemplate *template; - gboolean label_rotate_flag; - -} PrintInfo; - -/*===========================================*/ -/* Private function prototypes. */ -/*===========================================*/ -static PrintInfo *print_info_new (GnomePrintMaster * master, glLabel * label); -static void print_info_free (PrintInfo ** pi); - -static void print_label (PrintInfo * pi, glLabel * label, gint i, - glMergeRecord * record, gboolean outline_flag, - gboolean reverse_flag); - -static void draw_label (PrintInfo * pi, glLabel * label, - glMergeRecord * record); - -static void draw_text_object (PrintInfo * pi, glLabelObject * object, - glMergeRecord * record); -static void draw_box_object (PrintInfo * pi, glLabelObject * object); -static void draw_line_object (PrintInfo * pi, glLabelObject * object); -static void draw_ellipse_object (PrintInfo * pi, glLabelObject * object); -static void draw_image_object (PrintInfo * pi, glLabelObject * object); -static void draw_barcode_object (PrintInfo * pi, glLabelObject * object, - glMergeRecord * record); - -static void draw_outline (PrintInfo * pi, glLabel * label); -#ifdef CLIP_LABEL -static void clip_to_outline (PrintInfo * pi, glLabel * label); -#endif - -static void create_rectangle_path (GnomePrintContext * pc, - gdouble x0, gdouble y0, - gdouble w, gdouble h); -static void create_ellipse_path (GnomePrintContext * pc, - gdouble x0, gdouble y0, - gdouble rx, gdouble ry); -static void create_rounded_rectangle_path (GnomePrintContext * pc, - gdouble x0, gdouble y0, - gdouble w, gdouble h, gdouble r); - -/*****************************************************************************/ -/* Simple (no merge data) print command. */ -/*****************************************************************************/ -void -gl_print_simple (GnomePrintMaster * master, - glLabel * label, - gint n_sheets, - gint first, - gint last, - gboolean outline_flag, - gboolean reverse_flag) -{ - PrintInfo *pi; - gint i_sheet, i_label; - gchar *page_str = NULL; - - pi = print_info_new (master, label); - - for (i_sheet = 0; i_sheet < n_sheets; i_sheet++) { - - page_str = g_strdup_printf ("sheet %d", i_sheet + 1); - gnome_print_beginpage (pi->pc, page_str); - g_free (page_str); - - for (i_label = first - 1; i_label < last; i_label++) { - - print_label (pi, label, i_label, NULL, - outline_flag, reverse_flag); - - } - - gnome_print_showpage (pi->pc); - } - - print_info_free (&pi); -} - -/*****************************************************************************/ -/* Merge print command (collated copies) */ -/*****************************************************************************/ -void -gl_print_merge_collated (GnomePrintMaster * master, - glLabel * label, - GList * record_list, - gint n_copies, - gint first, - gboolean outline_flag, - gboolean reverse_flag) -{ - PrintInfo *pi; - gint i_sheet, i_label, n_labels_per_page, i_copy; - gchar *str = NULL; - glMergeRecord *record; - GList *p; - - pi = print_info_new (master, label); - - n_labels_per_page = (pi->template->nx) * (pi->template->ny); - - i_sheet = 0; - i_label = first - 1; - - for ( p=record_list; p!=NULL; p=p->next ) { - record = (glMergeRecord *)p->data; - - if ( record->select_flag ) { - for (i_copy = 0; i_copy < n_copies; i_copy++) { - - if ((i_label == 0) || (i_sheet == 0)) { - str = g_strdup_printf ("sheet %d", - ++i_sheet); - gnome_print_beginpage (pi->pc, str); - g_free (str); - } - - print_label (pi, label, i_label, record, - outline_flag, reverse_flag); - - i_label = (i_label + 1) % n_labels_per_page; - if (i_label == 0) { - gnome_print_showpage (pi->pc); - } - } - } - } - - if (i_label != 0) { - gnome_print_showpage (pi->pc); - } - - print_info_free (&pi); -} - -/*****************************************************************************/ -/* Merge print command (uncollated copies) */ -/*****************************************************************************/ -void -gl_print_merge_uncollated (GnomePrintMaster * master, - glLabel * label, - GList * record_list, - gint n_copies, - gint first, - gboolean outline_flag, - gboolean reverse_flag) -{ - PrintInfo *pi; - gint i_sheet, i_label, n_labels_per_page, i_copy; - gchar *str = NULL; - glMergeRecord *record; - GList *p; - - pi = print_info_new (master, label); - - n_labels_per_page = (pi->template->nx) * (pi->template->ny); - - i_sheet = 0; - i_label = first - 1; - - for (i_copy = 0; i_copy < n_copies; i_copy++) { - - for ( p=record_list; p!=NULL; p=p->next ) { - record = (glMergeRecord *)p->data; - - if ( record->select_flag ) { - - - if ((i_label == 0) || (i_sheet == 0)) { - str = g_strdup_printf ("sheet %d", - ++i_sheet); - gnome_print_beginpage (pi->pc, str); - g_free (str); - } - - print_label (pi, label, i_label, record, - outline_flag, reverse_flag); - - i_label = (i_label + 1) % n_labels_per_page; - if (i_label == 0) { - gnome_print_showpage (pi->pc); - } - } - } - - } - if (i_label != 0) { - gnome_print_showpage (pi->pc); - } - - print_info_free (&pi); -} - -/*****************************************************************************/ -/* Batch print. Call appropriate function above. */ -/*****************************************************************************/ -void -gl_print_batch (GnomePrintMaster * master, glLabel * label, - gint n_sheets, gint n_copies, - gboolean outline_flag, gboolean reverse_flag) -{ - gint n_per_page; - GList *record_list = NULL; - - if ( label->merge_type == GL_MERGE_NONE ) { - n_per_page = (label->template->nx)*(label->template->ny); - - gl_print_simple (master, label, n_sheets, 1, n_per_page, - outline_flag, reverse_flag); - } else { - record_list = gl_merge_read_data (label->merge_type, - label->merge_fields, - label->merge_src); - - gl_print_merge_collated (master, label, record_list, - n_copies, 1, - outline_flag, reverse_flag); - } -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. new print info structure */ -/*---------------------------------------------------------------------------*/ -static PrintInfo * -print_info_new (GnomePrintMaster * master, - glLabel * label) -{ - const GnomePaper *paper; - PrintInfo *pi = g_new0 (PrintInfo, 1); - glTemplate *template = label->template; - - if (template == NULL) { - WARN ("Undefined template \"%s\"", label->template_name); - return NULL; - } - - pi->pc = gnome_print_master_get_context (master); - - if ((template != NULL) && (template->page_size != NULL)) { - paper = gnome_paper_with_name (template->page_size); - } else { - paper = gnome_paper_with_name (GL_PRINT_DEFAULT_PAPER); - } - gnome_print_master_set_paper (master, paper); - - pi->template = template; - pi->label_rotate_flag = label->rotate_flag; - - return pi; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. free print info structure */ -/*---------------------------------------------------------------------------*/ -static void -print_info_free (PrintInfo ** pi) -{ - gnome_print_context_close ((*pi)->pc); - - g_free (*pi); - *pi = NULL; -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Print i'th label. */ -/*---------------------------------------------------------------------------*/ -static void -print_label (PrintInfo * pi, - glLabel * label, - gint i_label, - glMergeRecord * record, - gboolean outline_flag, - gboolean reverse_flag) -{ - gdouble a[6]; - gint ix, iy; - - ix = i_label % (pi->template->nx); - iy = ((pi->template->ny) - 1) - (i_label / (pi->template->nx)); - - gnome_print_gsave (pi->pc); - - /* Transform coordinate system to be relative to upper corner */ - /* of the current label */ - gnome_print_translate (pi->pc, - ix * (pi->template->dx) + pi->template->x0, - iy * (pi->template->dy) + pi->template->y0); - if (!label->rotate_flag) { - art_affine_scale (a, 1.0, -1.0); - a[5] = label->height; - gnome_print_concat (pi->pc, a); - } else { - gnome_print_rotate (pi->pc, 90.0); - gnome_print_scale (pi->pc, 1.0, -1.0); - } - if ( reverse_flag ) { - gnome_print_translate (pi->pc, label->width, 0.0); - art_affine_scale (a, -1.0, 1.0); - gnome_print_concat (pi->pc, a); - } - if (outline_flag) { - draw_outline (pi, label); - } -#ifdef CLIP_LABEL /* FIXME: this may be causing problems for some people. */ - clip_to_outline (pi, label); -#endif - draw_label (pi, label, record); - - gnome_print_grestore (pi->pc); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw label. */ -/*---------------------------------------------------------------------------*/ -static void -draw_label (PrintInfo * pi, - glLabel * label, - glMergeRecord * record) -{ - GList *p_obj; - glLabelObject *object; - - for (p_obj = label->objects; p_obj != NULL; p_obj = p_obj->next) { - object = (glLabelObject *) p_obj->data; - - if (object->type == GL_LABEL_OBJECT_TEXT) { - draw_text_object (pi, object, record); - } else if (object->type == GL_LABEL_OBJECT_BOX) { - draw_box_object (pi, object); - } else if (object->type == GL_LABEL_OBJECT_LINE) { - draw_line_object (pi, object); - } else if (object->type == GL_LABEL_OBJECT_ELLIPSE) { - draw_ellipse_object (pi, object); - } else if (object->type == GL_LABEL_OBJECT_IMAGE) { - draw_image_object (pi, object); - } else if (object->type == GL_LABEL_OBJECT_BARCODE) { - draw_barcode_object (pi, object, record); - } - - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw text object. */ -/*---------------------------------------------------------------------------*/ -static void -draw_text_object (PrintInfo * pi, - glLabelObject * object, - glMergeRecord * record) -{ - GnomeFont *font; - gchar **line; - gint i; - gdouble w; - gdouble x_offset, y_offset; - gdouble x, y; - gchar *text, *utf8_text; - - font = gnome_font_new_closest (object->arg.text.font_family, - object->arg.text.font_weight, - object->arg.text.font_italic_flag, - object->arg.text.font_size); - gnome_print_setfont (pi->pc, font); - - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.text.color), - GREEN (object->arg.text.color), - BLUE (object->arg.text.color)); - gnome_print_setopacity (pi->pc, ALPHA (object->arg.text.color)); - - text = gl_text_node_lines_expand (object->arg.text.lines, record); - line = g_strsplit (text, "\n", -1); - g_free (text); - - for (i = 0; line[i] != NULL; i++) { - - utf8_text = gl_hack_text_to_utf8 (line[i]); - - w = gl_hack_get_width_string (font, line[i]); - - switch (object->arg.text.just) { - case GTK_JUSTIFY_LEFT: - x_offset = 0.0; - break; - case GTK_JUSTIFY_CENTER: - x_offset = -w / 2.0; - break; - case GTK_JUSTIFY_RIGHT: - x_offset = -w; - break; - default: - x_offset = 0.0; - break; /* shouldn't happen */ - } - - y_offset = (i + 1) * object->arg.text.font_size - - gnome_font_get_descender (font); - - x = object->x + x_offset; - y = object->y + y_offset; - gnome_print_moveto (pi->pc, x, y); - - gnome_print_gsave (pi->pc); - gnome_print_scale (pi->pc, 1.0, -1.0); - gnome_print_show (pi->pc, utf8_text); - gnome_print_grestore (pi->pc); - - g_free (utf8_text); - } - - g_strfreev (line); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw box object. */ -/*---------------------------------------------------------------------------*/ -static void -draw_box_object (PrintInfo * pi, - glLabelObject * object) -{ - gdouble x, y, w, h; - - x = object->x; - y = object->y; - w = object->arg.box.w; - h = object->arg.box.h; - - /* Paint fill color */ - create_rectangle_path (pi->pc, x, y, w, h); - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.box.fill_color), - GREEN (object->arg.box.fill_color), - BLUE (object->arg.box.fill_color)); - gnome_print_setopacity (pi->pc, ALPHA (object->arg.box.fill_color)); - gnome_print_fill (pi->pc); - - /* Draw outline */ - create_rectangle_path (pi->pc, x, y, w, h); - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.box.line_color), - GREEN (object->arg.box.line_color), - BLUE (object->arg.box.line_color)); - gnome_print_setopacity (pi->pc, ALPHA (object->arg.box.line_color)); - gnome_print_setlinewidth (pi->pc, object->arg.box.line_width); - gnome_print_stroke (pi->pc); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw line object. */ -/*---------------------------------------------------------------------------*/ -static void -draw_line_object (PrintInfo * pi, - glLabelObject * object) -{ - gdouble x, y, dx, dy; - - x = object->x; - y = object->y; - dx = object->arg.line.dx; - dy = object->arg.line.dy; - - gnome_print_moveto (pi->pc, x, y); - gnome_print_lineto (pi->pc, x + dx, y + dy); - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.line.line_color), - GREEN (object->arg.line.line_color), - BLUE (object->arg.line.line_color)); - gnome_print_setopacity (pi->pc, ALPHA (object->arg.line.line_color)); - gnome_print_setlinewidth (pi->pc, object->arg.line.line_width); - gnome_print_stroke (pi->pc); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw ellipse object. */ -/*---------------------------------------------------------------------------*/ -static void -draw_ellipse_object (PrintInfo * pi, - glLabelObject * object) -{ - gdouble x0, y0, rx, ry; - - rx = object->arg.ellipse.w / 2.0; - ry = object->arg.ellipse.h / 2.0; - x0 = object->x + rx; - y0 = object->y + ry; - - /* Paint fill color */ - create_ellipse_path (pi->pc, x0, y0, rx, ry); - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.ellipse.fill_color), - GREEN (object->arg.ellipse.fill_color), - BLUE (object->arg.ellipse.fill_color)); - gnome_print_setopacity (pi->pc, ALPHA (object->arg.ellipse.fill_color)); - gnome_print_fill (pi->pc); - - /* Draw outline */ - create_ellipse_path (pi->pc, x0, y0, rx, ry); - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.ellipse.line_color), - GREEN (object->arg.ellipse.line_color), - BLUE (object->arg.ellipse.line_color)); - gnome_print_setopacity (pi->pc, ALPHA (object->arg.ellipse.line_color)); - gnome_print_setlinewidth (pi->pc, object->arg.ellipse.line_width); - gnome_print_stroke (pi->pc); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw image object. */ -/*---------------------------------------------------------------------------*/ -static void -draw_image_object (PrintInfo * pi, - glLabelObject * object) -{ - gdouble x, y, w, h; - GdkPixbuf *pixbuf; - - x = object->x; - y = object->y; - w = object->arg.image.w; - h = object->arg.image.h; - - pixbuf = object->arg.image.image; - - gnome_print_gsave (pi->pc); - gnome_print_translate (pi->pc, x, y + h); - gnome_print_scale (pi->pc, w, -h); - gnome_print_pixbuf (pi->pc, pixbuf); - gnome_print_grestore (pi->pc); - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw box object. */ -/*---------------------------------------------------------------------------*/ -static void -draw_barcode_object (PrintInfo * pi, - glLabelObject * object, - glMergeRecord * record) -{ - glBarcode *gbc; - glBarcodeLine *line; - glBarcodeChar *bchar; - GList *li; - gdouble x, y, y_offset; - GnomeFont *font; - gchar *text, *cstring; - - x = object->x; - y = object->y; - - text = gl_text_node_expand (object->arg.barcode.text_node, record); - gbc = gl_barcode (object->arg.barcode.style, - object->arg.barcode.text_flag, - object->arg.barcode.scale, text); - g_free (text); - - if (gbc == NULL) { - - font = gnome_font_new_closest (GL_BARCODE_FONT_FAMILY, - GL_BARCODE_FONT_WEIGHT, - FALSE, 12.0); - gnome_print_setfont (pi->pc, font); - - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.barcode.color), - GREEN (object->arg.barcode.color), - BLUE (object->arg.barcode.color)); - gnome_print_setopacity (pi->pc, - ALPHA (object->arg.barcode.color)); - - y_offset = 12.0 - gnome_font_get_descender (font); - gnome_print_moveto (pi->pc, x, y + y_offset); - - gnome_print_gsave (pi->pc); - gnome_print_scale (pi->pc, 1.0, -1.0); - gnome_print_show (pi->pc, _("Invalid barcode")); - gnome_print_grestore (pi->pc); - - } else { - - for (li = gbc->lines; li != NULL; li = li->next) { - line = (glBarcodeLine *) li->data; - - gnome_print_moveto (pi->pc, x + line->x, y + line->y); - gnome_print_lineto (pi->pc, x + line->x, - y + line->y + line->length); - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.barcode. - color), - GREEN (object->arg.barcode. - color), - BLUE (object->arg.barcode. - color)); - gnome_print_setopacity (pi->pc, - ALPHA (object->arg.barcode. - color)); - gnome_print_setlinewidth (pi->pc, line->width); - gnome_print_stroke (pi->pc); - } - - for (li = gbc->chars; li != NULL; li = li->next) { - bchar = (glBarcodeChar *) li->data; - - font = gnome_font_new_closest (GL_BARCODE_FONT_FAMILY, - GL_BARCODE_FONT_WEIGHT, - FALSE, bchar->fsize); - gnome_print_setfont (pi->pc, font); - - gnome_print_setrgbcolor (pi->pc, - RED (object->arg.barcode. - color), - GREEN (object->arg.barcode. - color), - BLUE (object->arg.barcode. - color)); - gnome_print_setopacity (pi->pc, - ALPHA (object->arg.barcode. - color)); - - y_offset = - bchar->y + bchar->fsize - - gnome_font_get_descender (font); - gnome_print_moveto (pi->pc, x + bchar->x, y + y_offset); - - cstring = g_strdup_printf ("%c", bchar->c); - gnome_print_gsave (pi->pc); - gnome_print_scale (pi->pc, 1.0, -1.0); - gnome_print_show (pi->pc, cstring); - gnome_print_grestore (pi->pc); - g_free (cstring); - - } - - gl_barcode_free (&gbc); - - } - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Draw outline. */ -/*---------------------------------------------------------------------------*/ -static void -draw_outline (PrintInfo * pi, - glLabel * label) -{ - gdouble w, h, r; - gdouble r1, r2; - - gnome_print_setrgbcolor (pi->pc, 0.25, 0.25, 0.25); - gnome_print_setopacity (pi->pc, 1.0); - gnome_print_setlinewidth (pi->pc, 0.25); - - switch (label->template->style) { - - case GL_TEMPLATE_STYLE_RECT: - w = label->width; - h = label->height; - r = label->template->label_round; - if (r == 0.0) { - /* simple rectangle */ - create_rectangle_path (pi->pc, 0.0, 0.0, w, h); - } else { - /* rectangle with rounded corners */ - create_rounded_rectangle_path (pi->pc, 0.0, 0.0, - w, h, r); - } - gnome_print_stroke (pi->pc); - break; - - case GL_TEMPLATE_STYLE_ROUND: - /* Round style */ - r1 = label->template->label_radius; - create_ellipse_path (pi->pc, r1, r1, r1, r1); - gnome_print_stroke (pi->pc); - break; - - case GL_TEMPLATE_STYLE_CD: - /* CD style, round label w/ concentric round hole */ - r1 = label->template->label_radius; - r2 = label->template->label_hole; - create_ellipse_path (pi->pc, r1, r1, r1, r1); - gnome_print_stroke (pi->pc); - create_ellipse_path (pi->pc, r1, r1, r2, r2); - gnome_print_stroke (pi->pc); - break; - - default: - WARN ("Unknown template label style"); - break; - } - -} - -#ifdef CLIP_LABEL -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Clip to outline. */ -/*---------------------------------------------------------------------------*/ -static void -clip_to_outline (PrintInfo * pi, - glLabel * label) -{ - gdouble w, h, r; - gdouble r1; - - switch (label->template->style) { - - case GL_TEMPLATE_STYLE_RECT: - w = label->width; - h = label->height; - r = label->template->label_round; - if (r == 0.0) { - /* simple rectangle */ - create_rectangle_path (pi->pc, 0.0, 0.0, w, h); - } else { - /* rectangle with rounded corners */ - create_rounded_rectangle_path (pi->pc, 0.0, 0.0, - w, h, r); - } - gnome_print_clip (pi->pc); - break; - - case GL_TEMPLATE_STYLE_ROUND: - case GL_TEMPLATE_STYLE_CD: - r1 = label->template->label_radius; - create_ellipse_path (pi->pc, r1, r1, r1, r1); - gnome_print_clip (pi->pc); - break; - - default: - WARN ("Unknown template label style"); - break; - } - -} -#endif - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. Path creation utilities. */ -/*---------------------------------------------------------------------------*/ -static void -create_rectangle_path (GnomePrintContext * pc, - gdouble x0, - gdouble y0, - gdouble w, - gdouble h) -{ - gnome_print_newpath (pc); - gnome_print_moveto (pc, x0, y0); - gnome_print_lineto (pc, x0 + w, y0); - gnome_print_lineto (pc, x0 + w, y0 + h); - gnome_print_lineto (pc, x0, y0 + h); - gnome_print_lineto (pc, x0, y0); - gnome_print_closepath (pc); -} - -static void -create_ellipse_path (GnomePrintContext * pc, - gdouble x0, - gdouble y0, - gdouble rx, - gdouble ry) -{ - gdouble x, y; - gint i_theta; - - gnome_print_newpath (pc); - gnome_print_moveto (pc, x0 + rx, y0); - for (i_theta = 2; i_theta <= 360; i_theta += 2) { - x = x0 + rx * cos (i_theta * M_PI / 180.0); - y = y0 + ry * sin (i_theta * M_PI / 180.0); - gnome_print_lineto (pc, x, y); - } - gnome_print_closepath (pc); -} - -static void -create_rounded_rectangle_path (GnomePrintContext * pc, - gdouble x0, - gdouble y0, - gdouble w, - gdouble h, - gdouble r) -{ - gdouble x, y; - gint i_theta; - - gnome_print_newpath (pc); - - gnome_print_moveto (pc, x0 + r, y0); - for (i_theta = 5; i_theta <= 90; i_theta += 5) { - x = x0 + r - r * sin (i_theta * M_PI / 180.0); - y = y0 + r - r * cos (i_theta * M_PI / 180.0); - gnome_print_lineto (pc, x, y); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - x = x0 + r - r * cos (i_theta * M_PI / 180.0); - y = y0 + (h - r) + r * sin (i_theta * M_PI / 180.0); - gnome_print_lineto (pc, x, y); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - x = x0 + (w - r) + r * sin (i_theta * M_PI / 180.0); - y = y0 + (h - r) + r * cos (i_theta * M_PI / 180.0); - gnome_print_lineto (pc, x, y); - } - for (i_theta = 0; i_theta <= 90; i_theta += 5) { - x = x0 + (w - r) + r * cos (i_theta * M_PI / 180.0); - y = y0 + r - r * sin (i_theta * M_PI / 180.0); - gnome_print_lineto (pc, x, y); - } - gnome_print_lineto (pc, x0 + r, y0); - - gnome_print_closepath (pc); -} diff --git a/glabels1/src/print.h b/glabels1/src/print.h deleted file mode 100644 index 25aec93c..00000000 --- a/glabels1/src/print.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print.h: Print module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __PRINT_H__ -#define __PRINT_H__ - -#include -#include -#include -#include "label.h" - -extern void gl_print_simple (GnomePrintMaster * master, glLabel * label, - gint n_sheets, gint first, gint last, - gboolean outline_flag, gboolean reverse_flag); - -extern void gl_print_merge_collated (GnomePrintMaster * master, - glLabel * label, - GList *record_list, - gint n_copies, gint first, - gboolean outline_flag, - gboolean reverse_flag); - -extern void gl_print_merge_uncollated (GnomePrintMaster * master, - glLabel * label, - GList *record_list, - gint n_copies, gint first, - gboolean outline_flag, - gboolean reverse_flag); - -extern void gl_print_batch (GnomePrintMaster * master, glLabel * label, - gint n_sheets, gint n_copies, - gboolean outline_flag, gboolean reverse_flag); - - -#endif diff --git a/glabels1/src/print_copies.c b/glabels1/src/print_copies.c deleted file mode 100644 index 4d8d625f..00000000 --- a/glabels1/src/print_copies.c +++ /dev/null @@ -1,387 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print_copies.c: custom print copies widget module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include "print_copies.h" -#include "mini_preview.h" - -#include "debug.h" - -#define MINI_PREVIEW_HEIGHT 175 -#define MINI_PREVIEW_WIDTH 150 - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_print_copies_class_init (glPrintCopiesClass * class); -static void gl_print_copies_init (glPrintCopies * copies); -static void gl_print_copies_destroy (GtkObject * object); - -static void gl_print_copies_construct (glPrintCopies * copies, glLabel * label); - -static void sheets_radio_cb (GtkToggleButton * togglebutton, gpointer user_data); -static void first_spin_cb (GtkSpinButton * spinbutton, gpointer user_data); -static void last_spin_cb (GtkSpinButton * spinbutton, gpointer user_data); - -static void -preview_pressed (glMiniPreview *mini_preview, - gint first, gint last, gpointer user_data); - - -/****************************************************************************/ -/* Boilerplate Object stuff. */ -/****************************************************************************/ -guint -gl_print_copies_get_type (void) -{ - static guint print_copies_type = 0; - - if (!print_copies_type) { - GtkTypeInfo print_copies_info = { - "glPrintCopies", - sizeof (glPrintCopies), - sizeof (glPrintCopiesClass), - (GtkClassInitFunc) gl_print_copies_class_init, - (GtkObjectInitFunc) gl_print_copies_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - print_copies_type = gtk_type_unique (gtk_hbox_get_type (), - &print_copies_info); - } - - return print_copies_type; -} - -static void -gl_print_copies_class_init (glPrintCopiesClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_hbox_get_type ()); - - object_class->destroy = gl_print_copies_destroy; -} - -static void -gl_print_copies_init (glPrintCopies * copies) -{ - copies->labels_per_sheet = 0; - - copies->mini_preview = NULL; - - copies->sheets_radio = NULL; - copies->sheets_spin = NULL; - - copies->labels_radio = NULL; - copies->first_spin = NULL; - copies->last_spin = NULL; -} - -static void -gl_print_copies_destroy (GtkObject * object) -{ - glPrintCopies *copies; - glPrintCopiesClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PRINT_COPIES (object)); - - copies = GL_PRINT_COPIES (object); - class = GL_PRINT_COPIES_CLASS (GTK_OBJECT (copies)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_print_copies_new (glLabel * label) -{ - glPrintCopies *copies; - - copies = gtk_type_new (gl_print_copies_get_type ()); - - gl_print_copies_construct (copies, label); - - return GTK_WIDGET (copies); -} - -/*--------------------------------------------------------------------------*/ -/* Construct composite widget. */ -/*--------------------------------------------------------------------------*/ -static void -gl_print_copies_construct (glPrintCopies * copies, - glLabel * label) -{ - GtkWidget *whbox, *wvbox, *whbox1; - GSList *radio_group = NULL; - GtkObject *adjust; - - whbox = GTK_WIDGET (copies); - - copies->labels_per_sheet = label->template->nx * label->template->ny; - - /* mini_preview canvas */ - copies->mini_preview = gl_mini_preview_new (MINI_PREVIEW_HEIGHT, - MINI_PREVIEW_WIDTH); - gl_mini_preview_set_label (GL_MINI_PREVIEW(copies->mini_preview), - label->template->name->data); - gtk_box_pack_start (GTK_BOX (whbox), copies->mini_preview, - TRUE, TRUE, GNOME_PAD); - - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (whbox), wvbox, TRUE, TRUE, GNOME_PAD); - - /* Sheet controls */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (wvbox), whbox1, FALSE, FALSE, GNOME_PAD); - copies->sheets_radio = - gtk_radio_button_new_with_label (radio_group, _("Sheets:")); - gtk_box_pack_start (GTK_BOX (whbox1), copies->sheets_radio, - FALSE, FALSE, 0); - adjust = gtk_adjustment_new (1, 1.0, 10.0, 1.0, 10.0, 10.0); - copies->sheets_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), - 1.0, 0); - gtk_box_pack_start (GTK_BOX (whbox1), copies->sheets_spin, - FALSE, FALSE, 0); - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview), - 1, copies->labels_per_sheet); - - /* Label controls */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (wvbox), whbox1, FALSE, FALSE, GNOME_PAD); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (copies->sheets_radio)); - copies->labels_radio = - gtk_radio_button_new_with_label (radio_group, _("Labels")); - gtk_box_pack_start (GTK_BOX (whbox1), copies->labels_radio, - FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (whbox1), gtk_label_new (_("from:")), - FALSE, FALSE, 0); - adjust = gtk_adjustment_new (1, 1.0, copies->labels_per_sheet, - 1.0, 10.0, 10.0); - copies->first_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), - 1.0, 0); - gtk_box_pack_start (GTK_BOX (whbox1), copies->first_spin, - FALSE, FALSE, 0); - gtk_box_pack_start (GTK_BOX (whbox1), gtk_label_new (_("to:")), - FALSE, FALSE, 0); - adjust = gtk_adjustment_new (copies->labels_per_sheet, - 1.0, copies->labels_per_sheet, - 1.0, 10.0, 10.0); - copies->last_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), - 1.0, 0); - gtk_box_pack_start (GTK_BOX (whbox1), copies->last_spin, - FALSE, FALSE, 0); - gtk_widget_set_sensitive (copies->first_spin, FALSE); - gtk_widget_set_sensitive (copies->last_spin, FALSE); - - /* Connect signals to controls */ - gtk_signal_connect (GTK_OBJECT (copies->mini_preview), "pressed", - GTK_SIGNAL_FUNC (preview_pressed), copies); - gtk_signal_connect (GTK_OBJECT (copies->sheets_radio), "toggled", - GTK_SIGNAL_FUNC (sheets_radio_cb), copies); - gtk_signal_connect (GTK_OBJECT (copies->first_spin), "changed", - GTK_SIGNAL_FUNC (first_spin_cb), copies); - gtk_signal_connect (GTK_OBJECT (copies->last_spin), "changed", - GTK_SIGNAL_FUNC (last_spin_cb), copies); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Enable/Disable appropriate controls due to radio button toggle.*/ -/*--------------------------------------------------------------------------*/ -static void -sheets_radio_cb (GtkToggleButton * togglebutton, - gpointer user_data) -{ - glPrintCopies *copies = GL_PRINT_COPIES (user_data); - gint first, last; - - if (gtk_toggle_button_get_active (togglebutton)) { - - gtk_widget_set_sensitive (copies->sheets_spin, TRUE); - gtk_widget_set_sensitive (copies->first_spin, FALSE); - gtk_widget_set_sensitive (copies->last_spin, FALSE); - - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview), - 1, copies->labels_per_sheet); - - } else { - - gtk_widget_set_sensitive (copies->sheets_spin, FALSE); - gtk_widget_set_sensitive (copies->first_spin, TRUE); - gtk_widget_set_sensitive (copies->last_spin, TRUE); - - first = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->first_spin)); - last = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->last_spin)); - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview), - first, last); - - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. modify widget due to change of first spin button */ -/*--------------------------------------------------------------------------*/ -static void -first_spin_cb (GtkSpinButton * spinbutton, - gpointer user_data) -{ - glPrintCopies *copies = GL_PRINT_COPIES (user_data); - gint first, last; - - first = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->first_spin)); - last = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->last_spin)); - - gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (copies->last_spin))-> - lower = first; - - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview), - first, last); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. modify widget due to change of last spin button */ -/*--------------------------------------------------------------------------*/ -static void -last_spin_cb (GtkSpinButton * spinbutton, - gpointer user_data) -{ - glPrintCopies *copies = GL_PRINT_COPIES (user_data); - gint first, last; - - first = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->first_spin)); - last = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->last_spin)); - - gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (copies->first_spin))-> - upper = last; - - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(copies->mini_preview), - first, last); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Canvas event handler, select first and last items. */ -/*--------------------------------------------------------------------------*/ -static void -preview_pressed (glMiniPreview *mini_preview, - gint first, gint last, gpointer user_data) -{ - glPrintCopies *copies = GL_PRINT_COPIES (user_data); - - gl_print_copies_set_range (copies, 1, first, last); -} - -/****************************************************************************/ -/* query selected range of labels within sheet or number of sheets. */ -/****************************************************************************/ -void -gl_print_copies_get_range (glPrintCopies * copies, - gint * n_sheets, - gint * first_label, - gint * last_label) -{ - gboolean sheets_active; - - sheets_active = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (copies->sheets_radio)); - - if (sheets_active) { - *n_sheets = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->sheets_spin)); - *first_label = 1; - *last_label = copies->labels_per_sheet; - } else { - *n_sheets = 1; - *first_label = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->first_spin)); - *last_label = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->last_spin)); - } -} - -/****************************************************************************/ -/* set range of labels within sheet or number of sheets */ -/****************************************************************************/ -void -gl_print_copies_set_range (glPrintCopies * copies, - gint n_sheets, - gint first_label, - gint last_label) -{ - gint old_first_label; - - old_first_label = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (copies->first_spin)); - - if (first_label > old_first_label) { - gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->last_spin), - last_label); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->first_spin), - first_label); - } else { - gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->first_spin), - first_label); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (copies->last_spin), - last_label); - } - if ((first_label == 1) && (last_label == copies->labels_per_sheet)) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (copies->sheets_radio), TRUE); - gtk_spin_button_set_value (GTK_SPIN_BUTTON - (copies->sheets_spin), n_sheets); - } else { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (copies->labels_radio), TRUE); - gtk_spin_button_set_value (GTK_SPIN_BUTTON - (copies->sheets_spin), 1.0); - } -} diff --git a/glabels1/src/print_copies.h b/glabels1/src/print_copies.h deleted file mode 100644 index 124c5a22..00000000 --- a/glabels1/src/print_copies.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print_copies.h: custom print copies widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PRINT_COPIES_H__ -#define __PRINT_COPIES_H__ - -#include -#include "label.h" - -#define GL_TYPE_PRINT_COPIES (gl_print_copies_get_type ()) -#define GL_PRINT_COPIES(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PRINT_COPIES, glPrintCopies )) -#define GL_PRINT_COPIES_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PRINT_COPIES, glPrintCopiesClass)) -#define GL_IS_PRINT_COPIES(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PRINT_COPIES)) -#define GL_IS_PRINT_COPIES_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PRINT_COPIES)) - -typedef struct _glPrintCopies glPrintCopies; -typedef struct _glPrintCopiesClass glPrintCopiesClass; - -struct _glPrintCopies { - GtkHBox parent_widget; - - gint labels_per_sheet; - - GtkWidget *mini_preview; - - GtkWidget *sheets_radio; - GtkWidget *sheets_spin; - - GtkWidget *labels_radio; - GtkWidget *first_spin; - GtkWidget *last_spin; -}; - -struct _glPrintCopiesClass { - GtkHBoxClass parent_class; -}; - -extern guint gl_print_copies_get_type (void); - -extern GtkWidget *gl_print_copies_new (glLabel * label); - -extern void gl_print_copies_get_range (glPrintCopies * copies, - gint * n_sheets, - gint * first_label, - gint * last_label); - -extern void gl_print_copies_set_range (glPrintCopies * copies, - gint n_sheets, - gint first_label, - gint last_label); - -#endif diff --git a/glabels1/src/print_dialog.c b/glabels1/src/print_dialog.c deleted file mode 100644 index 97aa0a3c..00000000 --- a/glabels1/src/print_dialog.c +++ /dev/null @@ -1,288 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print.c: Print module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "print_dialog.h" -#include "print.h" -#include "label.h" -#include "bc.h" -#include "template.h" -#include "mdi.h" -#include "hack.h" - -#include "print_copies.h" -#include "print_merge.h" - -#include "debug.h" - -#define RED(x) ( (((x)>>24) & 0xff) / 255.0 ) -#define GREEN(x) ( (((x)>>16) & 0xff) / 255.0 ) -#define BLUE(x) ( (((x)>>8) & 0xff) / 255.0 ) -#define ALPHA(x) ( ( (x) & 0xff) / 255.0 ) - -/*===========================================*/ -/* Private types. */ -/*===========================================*/ - -/*===========================================*/ -/* Private function prototypes. */ -/*===========================================*/ -static void print_sheets (GtkWidget * dlg, glLabel * label, - gboolean preview_flag, - gint n_sheets, gint first, gint last, - gboolean outline_flag, gboolean reverse_flag); - -static void print_sheets_merge (GtkWidget * dlg, glLabel * label, - GList *record_list, - gboolean preview_flag, - gint n_copies, gint first, - gboolean collate_flag, - gboolean outline_flag, gboolean reverse_flag); - - -/*****************************************************************************/ -/* "Print" menu item callback. */ -/*****************************************************************************/ -void -gl_print_dialog_cb (GtkWidget * widget, gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - GnomeApp *app = gnome_mdi_get_active_window (GNOME_MDI (data)); - GtkWidget *dlg = NULL; - GtkWidget *copies = NULL; - GtkWidget *merge = NULL; - GtkWidget *outline_check = NULL; - GtkWidget *reverse_check = NULL; - GtkWidget *wframe, *wvbox; - glLabel *label; - gint ret; - static gboolean outline_flag = FALSE; - static gboolean reverse_flag = FALSE; - static gboolean collate_flag = FALSE; - static gint first = 1, last = 1, n_sheets = 0, n_copies = 1; - GList *record_list = NULL; - gint n_records; - - g_return_if_fail (child != NULL); - g_return_if_fail (app != NULL); - - label = gl_mdi_get_label (child); - - dlg = gnome_print_dialog_new (_("Print"), 0); - - if (label->merge_type == GL_MERGE_NONE) { - - /* ----------- Add simple-copies widget ------------ */ - wframe = gtk_frame_new (_("Copies")); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dlg)->vbox), wframe, - FALSE, FALSE, 0); - - copies = gl_print_copies_new (label); - gtk_container_set_border_width (GTK_CONTAINER (copies), - GNOME_PAD_SMALL); - gtk_container_add (GTK_CONTAINER (wframe), copies); - - if (n_sheets) { - gl_print_copies_set_range (GL_PRINT_COPIES (copies), - n_sheets, first, last); - } - - } else { - - /* -------Otherwise add merge control widget ------------ */ - wframe = gtk_frame_new (_("Document merge control")); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dlg)->vbox), wframe, - FALSE, FALSE, 0); - - merge = gl_print_merge_new (label); - gtk_container_set_border_width (GTK_CONTAINER (merge), - GNOME_PAD_SMALL); - gtk_container_add (GTK_CONTAINER (wframe), merge); - - record_list = gl_merge_read_data (label->merge_type, - label->merge_fields, - label->merge_src); - n_records = gl_merge_count_records( record_list ); - gl_print_merge_set_copies (GL_PRINT_MERGE(merge), - n_copies, first, n_records, - collate_flag); - } - gtk_widget_show_all (wframe); - - /* ----------- Add custom print options area ------------ */ - wframe = gtk_frame_new (_("Options")); - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dlg)->vbox), wframe, - FALSE, FALSE, 0); - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), - GNOME_PAD_SMALL); - gtk_container_add (GTK_CONTAINER (wframe), wvbox); - - /* add Outline check button */ - outline_check = - gtk_check_button_new_with_label ( - _("print outlines (to test printer alignment)")); - gtk_box_pack_start (GTK_BOX (wvbox), outline_check, FALSE, FALSE, 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (outline_check), - outline_flag); - - /* add Reverse check button */ - reverse_check = - gtk_check_button_new_with_label ( - _("print in reverse (i.e. a mirror image)")); - gtk_box_pack_start (GTK_BOX (wvbox), reverse_check, FALSE, FALSE, 0); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (reverse_check), - reverse_flag); - - gtk_widget_show_all (wframe); - - gtk_signal_connect (GTK_OBJECT (dlg), "destroy", - GTK_SIGNAL_FUNC (gtk_widget_destroyed), &dlg); - - gtk_window_set_transient_for (GTK_WINDOW (dlg), GTK_WINDOW (app)); - - /* ----------- Now run the dialog and act ---------------- */ - ret = gnome_dialog_run (GNOME_DIALOG (dlg)); - - switch (ret) { - - case GNOME_PRINT_PRINT: - case GNOME_PRINT_PREVIEW: - outline_flag = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (outline_check)); - reverse_flag = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (reverse_check)); - - if (label->merge_type == GL_MERGE_NONE) { - - gl_print_copies_get_range (GL_PRINT_COPIES (copies), - &n_sheets, &first, &last); - print_sheets (dlg, label, - (ret == GNOME_PRINT_PREVIEW), - n_sheets, first, last, - outline_flag, reverse_flag); - - } else { - - gl_print_merge_get_copies (GL_PRINT_MERGE (merge), - &n_copies, &first, - &collate_flag); - print_sheets_merge (dlg, label, record_list, - (ret == GNOME_PRINT_PREVIEW), - n_copies, first, - collate_flag, - outline_flag, - reverse_flag); - } - break; - - default: - break; - - } - - if (dlg) gtk_widget_destroy (GTK_WIDGET (dlg)); - - -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. print the sheets */ -/*---------------------------------------------------------------------------*/ -static void -print_sheets (GtkWidget * dlg, - glLabel * label, - gboolean preview_flag, - gint n_sheets, - gint first, - gint last, - gboolean outline_flag, - gboolean reverse_flag) -{ - GnomePrintMaster *master; - - master = gnome_print_master_new_from_dialog (GNOME_PRINT_DIALOG (dlg)); - gl_print_simple (master, label, n_sheets, first, last, - outline_flag, reverse_flag); - gnome_print_master_close (master); - - if (preview_flag) { - GnomePrintMasterPreview *preview_widget = - gnome_print_master_preview_new (master, _("Print preview")); - gtk_widget_show (GTK_WIDGET (preview_widget)); - } else { - gnome_print_master_print (master); - } - - gtk_object_unref (GTK_OBJECT (master)); -} - -/*---------------------------------------------------------------------------*/ -/* PRIVATE. print the sheets with merge data */ -/*---------------------------------------------------------------------------*/ -static void -print_sheets_merge (GtkWidget * dlg, - glLabel * label, - GList * record_list, - gboolean preview_flag, - gint n_copies, - gint first, - gboolean collate_flag, - gboolean outline_flag, - gboolean reverse_flag) -{ - GnomePrintMaster *master; - - master = gnome_print_master_new_from_dialog (GNOME_PRINT_DIALOG (dlg)); - if ( collate_flag ) { - gl_print_merge_collated (master, label, record_list, - n_copies, first, - outline_flag, reverse_flag); - } else { - gl_print_merge_uncollated (master, label, record_list, - n_copies, first, - outline_flag, reverse_flag); - } - gnome_print_master_close (master); - - if (preview_flag) { - GnomePrintMasterPreview *preview_widget = - gnome_print_master_preview_new (master, _("Print preview")); - gtk_widget_show (GTK_WIDGET (preview_widget)); - } else { - gnome_print_master_print (master); - } - - gtk_object_unref (GTK_OBJECT (master)); -} - diff --git a/glabels1/src/print_dialog.h b/glabels1/src/print_dialog.h deleted file mode 100644 index a55b6e56..00000000 --- a/glabels1/src/print_dialog.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print_dialog.h: Print dialog module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __PRINT_DIALOG_H__ -#define __PRINT_DIALOG_H__ - -#include -#include "label.h" - -extern void gl_print_dialog_cb (GtkWidget * widget, gpointer data); - -#endif diff --git a/glabels1/src/print_merge.c b/glabels1/src/print_merge.c deleted file mode 100644 index 3ef00338..00000000 --- a/glabels1/src/print_merge.c +++ /dev/null @@ -1,324 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print_merge.c: print merge widget module - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include "print_merge.h" -#include "mini_preview.h" - -#include "pixmaps/collate.xpm" -#include "pixmaps/nocollate.xpm" - -#include "debug.h" - -#define MINI_PREVIEW_HEIGHT 175 -#define MINI_PREVIEW_WIDTH 150 - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_print_merge_class_init (glPrintMergeClass * class); -static void gl_print_merge_init (glPrintMerge * merge); -static void gl_print_merge_destroy (GtkObject * object); - -static void gl_print_merge_construct (glPrintMerge * merge, - glLabel * label); - -static void preview_clicked (glMiniPreview *mini_preview, - gint i_label, gpointer user_data); - -static void collate_check_cb (GtkToggleButton * togglebutton, - gpointer user_data); -static void spin_cb (GtkSpinButton * spinbutton, gpointer user_data); - - -/****************************************************************************/ -/* Boilerplate Object stuff. */ -/****************************************************************************/ -guint -gl_print_merge_get_type (void) -{ - static guint print_merge_type = 0; - - if (!print_merge_type) { - GtkTypeInfo print_merge_info = { - "glPrintMerge", - sizeof (glPrintMerge), - sizeof (glPrintMergeClass), - (GtkClassInitFunc) gl_print_merge_class_init, - (GtkObjectInitFunc) gl_print_merge_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - print_merge_type = gtk_type_unique (gtk_hbox_get_type (), - &print_merge_info); - } - - return print_merge_type; -} - -static void -gl_print_merge_class_init (glPrintMergeClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_hbox_get_type ()); - - object_class->destroy = gl_print_merge_destroy; -} - -static void -gl_print_merge_init (glPrintMerge * merge) -{ - merge->mini_preview = NULL; - - merge->copies_spin = NULL; - merge->first_spin = NULL; - merge->collate_image = NULL; - merge->collate_check = NULL; -} - -static void -gl_print_merge_destroy (GtkObject * object) -{ - glPrintMerge *merge; - glPrintMergeClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PRINT_MERGE (object)); - - merge = GL_PRINT_MERGE (object); - class = GL_PRINT_MERGE_CLASS (GTK_OBJECT (merge)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_print_merge_new (glLabel * label) -{ - glPrintMerge *merge; - - merge = gtk_type_new (gl_print_merge_get_type ()); - - gl_print_merge_construct (merge, label); - - return GTK_WIDGET (merge); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Construct composite widget. */ -/*--------------------------------------------------------------------------*/ -static void -gl_print_merge_construct (glPrintMerge * merge, - glLabel * label) -{ - GtkWidget *whbox, *wvbox, *whbox1; - GtkObject *adjust; - - whbox = GTK_WIDGET (merge); - - merge->labels_per_sheet = label->template->nx * label->template->ny; - - /* mini_preview canvas */ - merge->mini_preview = gl_mini_preview_new (MINI_PREVIEW_HEIGHT, - MINI_PREVIEW_WIDTH); - gl_mini_preview_set_label( GL_MINI_PREVIEW (merge->mini_preview), - label->template->name->data ); - gtk_box_pack_start (GTK_BOX (whbox), merge->mini_preview, - TRUE, TRUE, GNOME_PAD); - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(merge->mini_preview), - 1, 1); - - wvbox = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (whbox), wvbox, TRUE, TRUE, GNOME_PAD); - - /* First Label controls */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (wvbox), whbox1, FALSE, FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (whbox1), - gtk_label_new (_("Start on label")), FALSE, FALSE, - 0); - adjust = - gtk_adjustment_new (1, 1.0, merge->labels_per_sheet, 1.0, 10.0, - 10.0); - merge->first_spin = - gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 1.0, 0); - gtk_box_pack_start (GTK_BOX (whbox1), merge->first_spin, FALSE, FALSE, - 0); - gtk_box_pack_start (GTK_BOX (whbox1), gtk_label_new (_("on 1st sheet")), - FALSE, FALSE, 0); - - /* Collate controls */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_end (GTK_BOX (wvbox), whbox1, FALSE, FALSE, GNOME_PAD); - merge->collate_image = gnome_pixmap_new_from_xpm_d (nocollate_xpm); - gtk_box_pack_start (GTK_BOX (whbox1), merge->collate_image, - FALSE, FALSE, 0); - merge->collate_check = gtk_check_button_new_with_label (_("Collate")); - gtk_box_pack_start (GTK_BOX (whbox1), merge->collate_check, - FALSE, FALSE, 0); - - /* Copy controls */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_box_pack_end (GTK_BOX (wvbox), whbox1, FALSE, FALSE, GNOME_PAD); - gtk_box_pack_start (GTK_BOX (whbox1), gtk_label_new (_("Copies:")), - FALSE, FALSE, 0); - adjust = gtk_adjustment_new (1, 1.0, 10.0, 1.0, 10.0, 10.0); - merge->copies_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), - 1.0, 0); - gtk_box_pack_start (GTK_BOX (whbox1), merge->copies_spin, - FALSE, FALSE, 0); - - /* Connect signals to controls */ - gtk_signal_connect (GTK_OBJECT (merge->mini_preview), "clicked", - GTK_SIGNAL_FUNC (preview_clicked), merge); - gtk_signal_connect (GTK_OBJECT (merge->collate_check), "toggled", - GTK_SIGNAL_FUNC (collate_check_cb), merge); - gtk_signal_connect (GTK_OBJECT (merge->copies_spin), "changed", - GTK_SIGNAL_FUNC (spin_cb), merge); - gtk_signal_connect (GTK_OBJECT (merge->first_spin), "changed", - GTK_SIGNAL_FUNC (spin_cb), merge); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Enable/Disable appropriate controls due to radio button toggle.*/ -/*--------------------------------------------------------------------------*/ -static void -collate_check_cb (GtkToggleButton * togglebutton, - gpointer user_data) -{ - glPrintMerge *merge = GL_PRINT_MERGE (user_data); - - if (gtk_toggle_button_get_active (togglebutton)) { - - gnome_pixmap_load_xpm_d (GNOME_PIXMAP (merge->collate_image), - (char **) collate_xpm); - - } else { - - gnome_pixmap_load_xpm_d (GNOME_PIXMAP (merge->collate_image), - (char **) nocollate_xpm); - - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. modify widget due to change of first spin button */ -/*--------------------------------------------------------------------------*/ -static void -spin_cb (GtkSpinButton * spinbutton, - gpointer user_data) -{ - glPrintMerge *merge = GL_PRINT_MERGE (user_data); - gint first, last, n_copies; - - first = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (merge->first_spin)); - - n_copies = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (merge->copies_spin)); - last = first + (n_copies * merge->n_records) - 1; - gl_mini_preview_highlight_range (GL_MINI_PREVIEW(merge->mini_preview), - first, last ); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Canvas event handler, select first and last items. */ -/*--------------------------------------------------------------------------*/ -static void -preview_clicked (glMiniPreview *mini_preview, - gint first, gpointer user_data) -{ - glPrintMerge *merge = GL_PRINT_MERGE (user_data); - gint n_copies, last; - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (merge->first_spin), - first); - - n_copies = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (merge->copies_spin)); - last = first + (n_copies * merge->n_records) - 1; - gl_mini_preview_highlight_range (GL_MINI_PREVIEW (merge->mini_preview), - first, last); - -} - -/****************************************************************************/ -/* query selected range of labels within sheet or number of sheets. */ -/****************************************************************************/ -void -gl_print_merge_get_copies (glPrintMerge * merge, - gint * n_copies, - gint * first_label, - gboolean * collate_flag) -{ - *n_copies = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (merge->copies_spin)); - *first_label = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (merge->first_spin)); - *collate_flag = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (merge->collate_check)); -} - -/****************************************************************************/ -/* set range of labels within sheet or number of sheets */ -/****************************************************************************/ -void -gl_print_merge_set_copies (glPrintMerge * merge, - gint n_copies, - gint first_label, - gint n_records, - gboolean collate_flag) -{ - gint last_label; - - merge->n_records = n_records; - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (merge->copies_spin), - n_copies); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (merge->first_spin), - first_label); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (merge->collate_check), - collate_flag); - - last_label = first_label + (n_copies * n_records) - 1; - gl_mini_preview_highlight_range (GL_MINI_PREVIEW (merge->mini_preview), - first_label, last_label ); -} diff --git a/glabels1/src/print_merge.h b/glabels1/src/print_merge.h deleted file mode 100644 index a2a6ef89..00000000 --- a/glabels1/src/print_merge.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * print_merge.h: print merge widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PRINT_MERGE_H__ -#define __PRINT_MERGE_H__ - -#include -#include "label.h" - -#define GL_TYPE_PRINT_MERGE (gl_print_merge_get_type ()) -#define GL_PRINT_MERGE(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PRINT_MERGE, glPrintMerge )) -#define GL_PRINT_MERGE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PRINT_MERGE, glPrintMergeClass)) -#define GL_IS_PRINT_MERGE(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PRINT_MERGE)) -#define GL_IS_PRINT_MERGE_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PRINT_MERGE)) - -typedef struct _glPrintMerge glPrintMerge; -typedef struct _glPrintMergeClass glPrintMergeClass; - -struct _glPrintMerge { - GtkHBox parent_widget; - - gint labels_per_sheet; - GtkWidget *mini_preview; - - gint n_records; - - GtkWidget *copies_spin; - GtkWidget *first_spin; - GtkWidget *collate_image; - GtkWidget *collate_check; -}; - -struct _glPrintMergeClass { - GtkHBoxClass parent_class; -}; - -extern guint gl_print_merge_get_type (void); - -extern GtkWidget *gl_print_merge_new (glLabel * label); - -extern void gl_print_merge_get_copies (glPrintMerge * merge, - gint * n_copies, - gint * first_label, - gboolean * collate_flag); - -extern void gl_print_merge_set_copies (glPrintMerge * merge, - gint n_copies, - gint first_label, - gint n_records, - gboolean collate_flag); - -#endif diff --git a/glabels1/src/prop_bc.c b/glabels1/src/prop_bc.c deleted file mode 100644 index 0b0e8175..00000000 --- a/glabels1/src/prop_bc.c +++ /dev/null @@ -1,249 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_bc.c: barcode properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_bc.h" - -#include "debug.h" - -#define RED(x) ( ((x)>>24) & 0xff ) -#define GREEN(x) ( ((x)>>16) & 0xff ) -#define BLUE(x) ( ((x)>>8) & 0xff ) -#define ALPHA(x) ( (x) & 0xff ) - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropBCSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_bc_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_bc_class_init (glPropBCClass * class); -static void gl_prop_bc_init (glPropBC * prop); -static void gl_prop_bc_destroy (GtkObject * object); -static void gl_prop_bc_construct (glPropBC * prop, gchar * label); -static void changed_cb (glPropBC * prop); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_bc_get_type (void) -{ - static guint prop_bc_type = 0; - - if (!prop_bc_type) { - GtkTypeInfo prop_bc_info = { - "glPropBC", - sizeof (glPropBC), - sizeof (glPropBCClass), - (GtkClassInitFunc) gl_prop_bc_class_init, - (GtkObjectInitFunc) gl_prop_bc_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_bc_type = gtk_type_unique (gtk_vbox_get_type (), - &prop_bc_info); - } - - return prop_bc_type; -} - -static void -gl_prop_bc_class_init (glPropBCClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_bc_destroy; - - prop_bc_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropBCClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_bc_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_bc_init (glPropBC * prop) -{ - prop->scale_spin = NULL; - prop->color_picker = NULL; -} - -static void -gl_prop_bc_destroy (GtkObject * object) -{ - glPropBC *prop; - glPropBCClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_BC (object)); - - prop = GL_PROP_BC (object); - class = GL_PROP_BC_CLASS (GTK_OBJECT (prop)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_bc_new (gchar * label) -{ - glPropBC *prop; - - prop = gtk_type_new (gl_prop_bc_get_type ()); - - gl_prop_bc_construct (prop, label); - - return GTK_WIDGET (prop); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_bc_construct (glPropBC * prop, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel; - GtkObject *adjust; - - wvbox = GTK_WIDGET (prop); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (2, 3, TRUE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Scale Label */ - wlabel = gtk_label_new (_("Scale:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - /* Scale widget */ - adjust = gtk_adjustment_new (100.0, 50.0, 200.0, 10.0, 10.0, 10.0); - prop->scale_spin = - gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 10.0, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->scale_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - gtk_table_attach_defaults (GTK_TABLE (wtable), prop->scale_spin, 1, 2, - 0, 1); - /* % Label */ - wlabel = gtk_label_new (_("%")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 2, 3, 0, 1); - - /* Line Color Label */ - wlabel = gtk_label_new (_("Color:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - /* Line Color picker widget */ - prop->color_picker = gnome_color_picker_new (); - gtk_signal_connect_object (GTK_OBJECT (prop->color_picker), "color_set", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - gtk_table_attach_defaults (GTK_TABLE (wtable), prop->color_picker, 1, 3, - 1, 2); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropBC * prop) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (prop), prop_bc_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_bc_get_params (glPropBC * prop, - gdouble * scale, - guint * color) -{ - guint8 r, g, b, a; - - /* ------- Get updated scale ------ */ - *scale = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (prop->scale_spin)); - *scale /= 100.0; - - /* ------- Get updated line color ------ */ - gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (prop->color_picker), - &r, &g, &b, &a); - *color = GNOME_CANVAS_COLOR_A (r, g, b, a); - -} - -/*====================================================================*/ -/* fill in values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_bc_set_params (glPropBC * prop, - gdouble scale, - guint color) -{ - scale *= 100.0; - gtk_spin_button_set_value (GTK_SPIN_BUTTON (prop->scale_spin), scale); - - gnome_color_picker_set_i8 (GNOME_COLOR_PICKER (prop->color_picker), - RED (color), GREEN (color), BLUE (color), - ALPHA (color)); - -} diff --git a/glabels1/src/prop_bc.h b/glabels1/src/prop_bc.h deleted file mode 100644 index f009b1fb..00000000 --- a/glabels1/src/prop_bc.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_bc.h: barcode properties widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_BC_H__ -#define __PROP_BC_H__ - -#include -#include "bc.h" - -#define GL_TYPE_PROP_BC (gl_prop_bc_get_type ()) -#define GL_PROP_BC(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_BC, glPropBC )) -#define GL_PROP_BC_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_BC, glPropBCClass)) -#define GL_IS_PROP_BC(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_BC)) -#define GL_IS_PROP_BC_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_BC)) - -typedef struct _glPropBC glPropBC; -typedef struct _glPropBCClass glPropBCClass; - -struct _glPropBC { - GtkVBox parent_widget; - - GtkWidget *scale_spin; - GtkWidget *color_picker; -}; - -struct _glPropBCClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropBC * prop, gpointer user_data); -}; - -extern guint gl_prop_bc_get_type (void); - -extern GtkWidget *gl_prop_bc_new (gchar * label); - -extern void gl_prop_bc_get_params (glPropBC * prop, - gdouble * scale, - guint * color); - -extern void gl_prop_bc_set_params (glPropBC * prop, - gdouble scale, - guint color); - -#endif diff --git a/glabels1/src/prop_bc_data.c b/glabels1/src/prop_bc_data.c deleted file mode 100644 index 7464bea4..00000000 --- a/glabels1/src/prop_bc_data.c +++ /dev/null @@ -1,334 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_bc_data.c: barcode data widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_bc_data.h" -#include "merge.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropBCDataSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_bc_data_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_bc_data_class_init (glPropBCDataClass * class); -static void gl_prop_bc_data_init (glPropBCData * bc_data); -static void gl_prop_bc_data_destroy (GtkObject * object); -static void gl_prop_bc_data_construct (glPropBCData * bc_data, - gchar * label, GList * field_defs); - -static void changed_cb (glPropBCData * bc_data); -static void radio_toggled_cb (GtkToggleButton * togglebutton, - glPropBCData * bc_data); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_bc_data_get_type (void) -{ - static guint prop_bc_data_type = 0; - - if (!prop_bc_data_type) { - GtkTypeInfo prop_bc_data_info = { - "glPropBCData", - sizeof (glPropBCData), - sizeof (glPropBCDataClass), - (GtkClassInitFunc) gl_prop_bc_data_class_init, - (GtkObjectInitFunc) gl_prop_bc_data_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_bc_data_type = gtk_type_unique (gtk_vbox_get_type (), - &prop_bc_data_info); - } - - return prop_bc_data_type; -} - -static void -gl_prop_bc_data_class_init (glPropBCDataClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_bc_data_destroy; - - prop_bc_data_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropBCDataClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, - prop_bc_data_signals, LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_bc_data_init (glPropBCData * bc_data) -{ - bc_data->literal_radio = NULL; - bc_data->literal_entry = NULL; - - bc_data->key_radio = NULL; - bc_data->key_entry = NULL; -} - -static void -gl_prop_bc_data_destroy (GtkObject * object) -{ - glPropBCData *bc_data; - glPropBCDataClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_BC_DATA (object)); - - bc_data = GL_PROP_BC_DATA (object); - class = GL_PROP_BC_DATA_CLASS (GTK_OBJECT (bc_data)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_bc_data_new (gchar * label, - GList * field_defs) -{ - glPropBCData *bc_data; - - bc_data = gtk_type_new (gl_prop_bc_data_get_type ()); - - gl_prop_bc_data_construct (bc_data, label, field_defs); - - return GTK_WIDGET (bc_data); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_bc_data_construct (glPropBCData * bc_data, - gchar * label, - GList * field_defs) -{ - GtkWidget *wvbox, *wframe, *wtable, *wcombo; - GSList *radio_group = NULL; - GList *keys; - - wvbox = GTK_WIDGET (bc_data); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (2, 2, FALSE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Literal radio */ - bc_data->literal_radio = gtk_radio_button_new_with_label (radio_group, - _ - ("Literal:")); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (bc_data->literal_radio)); - gtk_signal_connect (GTK_OBJECT (bc_data->literal_radio), "toggled", - GTK_SIGNAL_FUNC (radio_toggled_cb), - GTK_OBJECT (bc_data)); - gtk_table_attach_defaults (GTK_TABLE (wtable), bc_data->literal_radio, - 0, 1, 0, 1); - - /* Literal entry widget */ - bc_data->literal_entry = gtk_entry_new (); - gtk_widget_set_usize (bc_data->literal_entry, 200, 0); - gtk_signal_connect_object (GTK_OBJECT (bc_data->literal_entry), - "changed", GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (bc_data)); - gtk_table_attach_defaults (GTK_TABLE (wtable), bc_data->literal_entry, - 1, 2, 0, 1); - - /* Key radio */ - bc_data->key_radio = gtk_radio_button_new_with_label (radio_group, - _("Key:")); - gtk_signal_connect (GTK_OBJECT (bc_data->key_radio), "toggled", - GTK_SIGNAL_FUNC (radio_toggled_cb), - GTK_OBJECT (bc_data)); - gtk_table_attach_defaults (GTK_TABLE (wtable), bc_data->key_radio, - 0, 1, 1, 2); - - /* Key entry widget */ - wcombo = gtk_combo_new (); - keys = gl_merge_get_key_list (field_defs); - if (keys != NULL) - gtk_combo_set_popdown_strings (GTK_COMBO (wcombo), keys); - gl_merge_free_key_list (&keys); - bc_data->key_entry = GTK_COMBO (wcombo)->entry; - gtk_entry_set_editable (GTK_ENTRY (bc_data->key_entry), FALSE); - gtk_widget_set_usize (wcombo, 200, 0); - gtk_signal_connect_object (GTK_OBJECT (bc_data->key_entry), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (bc_data)); - gtk_table_attach_defaults (GTK_TABLE (wtable), wcombo, 1, 2, 1, 2); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropBCData * bc_data) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (bc_data), prop_bc_data_signals[CHANGED]); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback to handle toggling of radio buttons */ -/*--------------------------------------------------------------------------*/ -static void -radio_toggled_cb (GtkToggleButton * togglebutton, - glPropBCData * bc_data) -{ - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (bc_data->literal_radio))) { - gtk_widget_set_sensitive (bc_data->literal_entry, TRUE); - gtk_widget_set_sensitive (bc_data->key_entry, FALSE); - } else { - gtk_widget_set_sensitive (bc_data->literal_entry, FALSE); - gtk_widget_set_sensitive (bc_data->key_entry, TRUE); - } - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (bc_data), prop_bc_data_signals[CHANGED]); -} - -/*--------------------------------------------------------------------------*/ -/* Get widget data. */ -/*--------------------------------------------------------------------------*/ -void -gl_prop_bc_data_get_data (glPropBCData * bc_data, - gboolean * field_flag, - gchar ** data, - gchar ** key) -{ - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (bc_data->literal_radio))) { - *field_flag = FALSE; - *data = - gtk_editable_get_chars (GTK_EDITABLE - (bc_data->literal_entry), 0, -1); - *key = NULL; - } else { - *field_flag = TRUE; - *data = NULL; - *key = - gtk_editable_get_chars (GTK_EDITABLE (bc_data->key_entry), - 0, -1); - } -} - -/*--------------------------------------------------------------------------*/ -/* Set widget data. */ -/*--------------------------------------------------------------------------*/ -void -gl_prop_bc_data_set_data (glPropBCData * bc_data, - gboolean merge_flag, - gboolean field_flag, - gchar * data, - gchar * key) -{ - gint pos; - - gtk_widget_set_sensitive (bc_data->key_radio, merge_flag); - - if (!field_flag) { - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (bc_data->literal_radio), TRUE); - - gtk_widget_set_sensitive (bc_data->literal_entry, TRUE); - gtk_widget_set_sensitive (bc_data->key_entry, FALSE); - - gtk_signal_handler_block_by_func (GTK_OBJECT - (bc_data->literal_entry), - GTK_SIGNAL_FUNC (changed_cb), - bc_data); - gtk_editable_delete_text (GTK_EDITABLE (bc_data->literal_entry), - 0, -1); - gtk_signal_handler_unblock_by_func (GTK_OBJECT - (bc_data->literal_entry), - GTK_SIGNAL_FUNC - (changed_cb), bc_data); - - pos = 0; - gtk_editable_insert_text (GTK_EDITABLE (bc_data->literal_entry), - data, strlen (data), &pos); - } else { - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (bc_data->key_radio), TRUE); - - gtk_widget_set_sensitive (bc_data->literal_entry, FALSE); - gtk_widget_set_sensitive (bc_data->key_entry, TRUE); - - gtk_signal_handler_block_by_func (GTK_OBJECT - (bc_data->key_entry), - GTK_SIGNAL_FUNC (changed_cb), - bc_data); - gtk_editable_delete_text (GTK_EDITABLE (bc_data->key_entry), 0, - -1); - gtk_signal_handler_unblock_by_func (GTK_OBJECT - (bc_data->key_entry), - GTK_SIGNAL_FUNC - (changed_cb), bc_data); - - pos = 0; - gtk_editable_insert_text (GTK_EDITABLE (bc_data->key_entry), - data, strlen (data), &pos); - } - -} diff --git a/glabels1/src/prop_bc_data.h b/glabels1/src/prop_bc_data.h deleted file mode 100644 index 0f59e3db..00000000 --- a/glabels1/src/prop_bc_data.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_bc_data.h: barcode data widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_BC_DATA_H__ -#define __PROP_BC_DATA_H__ - -#include - -#define GL_TYPE_PROP_BC_DATA (gl_prop_bc_data_get_type ()) -#define GL_PROP_BC_DATA(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_BC_DATA, glPropBCData )) -#define GL_PROP_BC_DATA_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_BC_DATA, glPropBCDataClass)) -#define GL_IS_PROP_BC_DATA(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_BC_DATA)) -#define GL_IS_PROP_BC_DATA_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_BC_DATA)) - -typedef struct _glPropBCData glPropBCData; -typedef struct _glPropBCDataClass glPropBCDataClass; - -struct _glPropBCData { - GtkVBox parent_widget; - - GtkWidget *literal_radio; - GtkWidget *literal_entry; - - GtkWidget *key_radio; - GtkWidget *key_entry; -}; - -struct _glPropBCDataClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropBCData * bc_data, gpointer user_data); -}; - -extern guint gl_prop_bc_data_get_type (void); - -extern GtkWidget *gl_prop_bc_data_new (gchar * label, GList * field_defs); - -extern void gl_prop_bc_data_get_data (glPropBCData * bc_data, - gboolean * field_flag, - gchar ** data, - gchar ** key); - -extern void gl_prop_bc_data_set_data (glPropBCData * bc_data, - gboolean merge_flag, - gboolean field_flag, - gchar * data, - gchar * key); - -#endif diff --git a/glabels1/src/prop_bc_style.c b/glabels1/src/prop_bc_style.c deleted file mode 100644 index 07432efa..00000000 --- a/glabels1/src/prop_bc_style.c +++ /dev/null @@ -1,460 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_bc_style.c: barcode style selection widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_bc_style.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropBCStyleSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_bc_style_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_bc_style_class_init (glPropBCStyleClass * class); -static void gl_prop_bc_style_init (glPropBCStyle * prop_style); -static void gl_prop_bc_style_destroy (GtkObject * object); -static void gl_prop_bc_style_construct (glPropBCStyle * prop_style, - gchar * label); -static void changed_cb (glPropBCStyle * prop_style); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_bc_style_get_type (void) -{ - static guint prop_bc_style_type = 0; - - if (!prop_bc_style_type) { - GtkTypeInfo prop_bc_style_info = { - "glPropBCStyle", - sizeof (glPropBCStyle), - sizeof (glPropBCStyleClass), - (GtkClassInitFunc) gl_prop_bc_style_class_init, - (GtkObjectInitFunc) gl_prop_bc_style_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_bc_style_type = gtk_type_unique (gtk_vbox_get_type (), - &prop_bc_style_info); - } - - return prop_bc_style_type; -} - -static void -gl_prop_bc_style_class_init (glPropBCStyleClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_bc_style_destroy; - - prop_bc_style_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropBCStyleClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_bc_style_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_bc_style_init (glPropBCStyle * prop_style) -{ - prop_style->postnet_radio = NULL; - prop_style->ean_radio = NULL; - prop_style->upc_radio = NULL; - prop_style->isbn_radio = NULL; - prop_style->code39_radio = NULL; - prop_style->code128_radio = NULL; - prop_style->code128c_radio = NULL; - prop_style->code128b_radio = NULL; - prop_style->i25_radio = NULL; - prop_style->cbr_radio = NULL; - prop_style->msi_radio = NULL; - prop_style->pls_radio = NULL; -} - -static void -gl_prop_bc_style_destroy (GtkObject * object) -{ - glPropBCStyle *prop_style; - glPropBCStyleClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_BC_STYLE (object)); - - prop_style = GL_PROP_BC_STYLE (object); - class = GL_PROP_BC_STYLE_CLASS (GTK_OBJECT (prop_style)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_bc_style_new (gchar * label) -{ - glPropBCStyle *prop_style; - - prop_style = gtk_type_new (gl_prop_bc_style_get_type ()); - - gl_prop_bc_style_construct (prop_style, label); - - return GTK_WIDGET (prop_style); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_bc_style_construct (glPropBCStyle * prop, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wvbox1, *whbox2, *wvbox2; - GSList *radio_group = NULL; - - wvbox = GTK_WIDGET (prop); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wvbox1 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox1), 10); - gtk_container_add (GTK_CONTAINER (wframe), wvbox1); - - whbox2 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_container_add (GTK_CONTAINER (wvbox1), whbox2); - - /* ... Start column ... */ - wvbox2 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox2), 10); - gtk_box_pack_start (GTK_BOX (whbox2), wvbox2, FALSE, FALSE, 0); - - /* POSTNET button */ - prop->postnet_radio = - gtk_radio_button_new_with_label (radio_group, "POSTNET"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->postnet_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->postnet_radio, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->postnet_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* EAN button */ - prop->ean_radio = gtk_radio_button_new_with_label (radio_group, "EAN"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->ean_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->ean_radio, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->ean_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* UPC button */ - prop->upc_radio = gtk_radio_button_new_with_label (radio_group, "UPC"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->upc_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->upc_radio, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->upc_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* ISBN button */ - prop->isbn_radio = - gtk_radio_button_new_with_label (radio_group, "ISBN"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->isbn_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->isbn_radio, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->isbn_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* CODE39 button */ - prop->code39_radio = - gtk_radio_button_new_with_label (radio_group, "Code 39"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->code39_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->code39_radio, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->code39_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* CODE128 button */ - prop->code128_radio = - gtk_radio_button_new_with_label (radio_group, "Code 128"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->code128_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->code128_radio, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->code128_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* ... Start column ... */ - wvbox2 = gtk_vbox_new (FALSE, GNOME_PAD); - gtk_container_set_border_width (GTK_CONTAINER (wvbox2), 10); - gtk_box_pack_start (GTK_BOX (whbox2), wvbox2, FALSE, FALSE, 0); - - /* CODE128B button */ - prop->code128b_radio = - gtk_radio_button_new_with_label (radio_group, "Code 128-B"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->code128b_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->code128b_radio, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->code128b_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* CODE128C button */ - prop->code128c_radio = - gtk_radio_button_new_with_label (radio_group, "Code 128-C"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->code128c_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->code128c_radio, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->code128c_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* I25 button */ - prop->i25_radio = - gtk_radio_button_new_with_label (radio_group, "Interleaved 2 of 5"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->i25_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->i25_radio, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->i25_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* CBR button */ - prop->cbr_radio = - gtk_radio_button_new_with_label (radio_group, "Codabar"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->cbr_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->cbr_radio, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->cbr_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* MSI button */ - prop->msi_radio = gtk_radio_button_new_with_label (radio_group, "MSI"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->msi_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->msi_radio, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->msi_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* PLS button */ - prop->pls_radio = - gtk_radio_button_new_with_label (radio_group, "Plessey"); - radio_group = - gtk_radio_button_group (GTK_RADIO_BUTTON (prop->pls_radio)); - gtk_box_pack_start (GTK_BOX (wvbox2), prop->pls_radio, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->pls_radio), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - - /* ... Separator ... */ - gtk_box_pack_start (GTK_BOX (wvbox1), gtk_hseparator_new (), FALSE, - FALSE, 0); - - /* Text checkbox widget */ - prop->text_check = - gtk_check_button_new_with_label (_("Show text with barcode")); - gtk_box_pack_start (GTK_BOX (wvbox1), prop->text_check, - FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (prop->text_check), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (prop)); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropBCStyle * prop_style) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (prop_style), - prop_bc_style_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_bc_style_get_params (glPropBCStyle * prop, - glBarcodeStyle * style, - gboolean * text_flag) -{ - *text_flag = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (prop->text_check)); - - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->postnet_radio))) { - *style = GL_BARCODE_STYLE_POSTNET; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->ean_radio))) { - *style = GL_BARCODE_STYLE_EAN; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->upc_radio))) { - *style = GL_BARCODE_STYLE_UPC; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->isbn_radio))) { - *style = GL_BARCODE_STYLE_ISBN; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->code39_radio))) { - *style = GL_BARCODE_STYLE_39; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->code128_radio))) { - *style = GL_BARCODE_STYLE_128; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->code128c_radio))) { - *style = GL_BARCODE_STYLE_128C; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->code128b_radio))) { - *style = GL_BARCODE_STYLE_128B; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->i25_radio))) { - *style = GL_BARCODE_STYLE_I25; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->cbr_radio))) { - *style = GL_BARCODE_STYLE_CBR; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->msi_radio))) { - *style = GL_BARCODE_STYLE_MSI; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (prop->pls_radio))) { - *style = GL_BARCODE_STYLE_PLS; - } - -} - -/*====================================================================*/ -/* fill in values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_bc_style_set_params (glPropBCStyle * prop, - glBarcodeStyle style, - gboolean text_flag) -{ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (prop->text_check), - text_flag); - - switch (style) { - case GL_BARCODE_STYLE_POSTNET: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->postnet_radio), TRUE); - break; - case GL_BARCODE_STYLE_EAN: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->ean_radio), TRUE); - break; - case GL_BARCODE_STYLE_UPC: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->upc_radio), TRUE); - break; - case GL_BARCODE_STYLE_ISBN: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->isbn_radio), TRUE); - break; - case GL_BARCODE_STYLE_39: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->code39_radio), TRUE); - break; - case GL_BARCODE_STYLE_128: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->code128_radio), TRUE); - break; - case GL_BARCODE_STYLE_128C: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->code128c_radio), TRUE); - break; - case GL_BARCODE_STYLE_128B: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->code128b_radio), TRUE); - break; - case GL_BARCODE_STYLE_I25: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->i25_radio), TRUE); - break; - case GL_BARCODE_STYLE_CBR: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->cbr_radio), TRUE); - break; - case GL_BARCODE_STYLE_MSI: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->msi_radio), TRUE); - break; - case GL_BARCODE_STYLE_PLS: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->pls_radio), TRUE); - break; - default: - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (prop->postnet_radio), TRUE); - break; - } -} diff --git a/glabels1/src/prop_bc_style.h b/glabels1/src/prop_bc_style.h deleted file mode 100644 index 13065e4e..00000000 --- a/glabels1/src/prop_bc_style.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_bc_style.h: barcode style selection widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_BC_STYLE_H__ -#define __PROP_BC_STYLE_H__ - -#include -#include "bc.h" - -#define GL_TYPE_PROP_BC_STYLE (gl_prop_bc_style_get_type ()) -#define GL_PROP_BC_STYLE(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_BC_STYLE, glPropBCStyle )) -#define GL_PROP_BC_STYLE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_BC_STYLE, glPropBCStyleClass)) -#define GL_IS_PROP_BC_STYLE(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_BC_STYLE)) -#define GL_IS_PROP_BC_STYLE_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_BC_STYLE)) - -typedef struct _glPropBCStyle glPropBCStyle; -typedef struct _glPropBCStyleClass glPropBCStyleClass; - -struct _glPropBCStyle { - GtkVBox parent_widget; - - GtkWidget *postnet_radio; - GtkWidget *ean_radio; - GtkWidget *upc_radio; - GtkWidget *isbn_radio; - GtkWidget *code39_radio; - GtkWidget *code128_radio; - GtkWidget *code128c_radio; - GtkWidget *code128b_radio; - GtkWidget *i25_radio; - GtkWidget *cbr_radio; - GtkWidget *msi_radio; - GtkWidget *pls_radio; - - GtkWidget *text_check; -}; - -struct _glPropBCStyleClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropBCStyle * prop, gpointer user_data); -}; - -extern guint gl_prop_bc_style_get_type (void); - -extern GtkWidget *gl_prop_bc_style_new (gchar * label); - -extern void gl_prop_bc_style_get_params (glPropBCStyle * prop_style, - glBarcodeStyle * style, - gboolean * text_flag); - -extern void gl_prop_bc_style_set_params (glPropBCStyle * prop_style, - glBarcodeStyle style, - gboolean text_flag); - -#endif diff --git a/glabels1/src/prop_fill.c b/glabels1/src/prop_fill.c deleted file mode 100644 index f9f5151c..00000000 --- a/glabels1/src/prop_fill.c +++ /dev/null @@ -1,215 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_fill.c: fill properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_fill.h" - -#include "debug.h" - -#define RED(x) ( ((x)>>24) & 0xff ) -#define GREEN(x) ( ((x)>>16) & 0xff ) -#define BLUE(x) ( ((x)>>8) & 0xff ) -#define ALPHA(x) ( (x) & 0xff ) - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropFillSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_fill_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_fill_class_init (glPropFillClass * class); -static void gl_prop_fill_init (glPropFill * fill); -static void gl_prop_fill_destroy (GtkObject * object); -static void gl_prop_fill_construct (glPropFill * fill, gchar * label); -static void changed_cb (glPropFill * fill); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_fill_get_type (void) -{ - static guint prop_fill_type = 0; - - if (!prop_fill_type) { - GtkTypeInfo prop_fill_info = { - "glPropFill", - sizeof (glPropFill), - sizeof (glPropFillClass), - (GtkClassInitFunc) gl_prop_fill_class_init, - (GtkObjectInitFunc) gl_prop_fill_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_fill_type = - gtk_type_unique (gtk_vbox_get_type (), &prop_fill_info); - } - - return prop_fill_type; -} - -static void -gl_prop_fill_class_init (glPropFillClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_fill_destroy; - - prop_fill_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropFillClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_fill_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_fill_init (glPropFill * fill) -{ - fill->color_picker = NULL; -} - -static void -gl_prop_fill_destroy (GtkObject * object) -{ - glPropFill *fill; - glPropFillClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_FILL (object)); - - fill = GL_PROP_FILL (object); - class = GL_PROP_FILL_CLASS (GTK_OBJECT (fill)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_fill_new (gchar * label) -{ - glPropFill *fill; - - fill = gtk_type_new (gl_prop_fill_get_type ()); - - gl_prop_fill_construct (fill, label); - - return GTK_WIDGET (fill); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_fill_construct (glPropFill * fill, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel; - - wvbox = GTK_WIDGET (fill); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (1, 3, TRUE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Fill Color Label */ - wlabel = gtk_label_new (_("Color:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - - /* Fill Color picker widget */ - fill->color_picker = gnome_color_picker_new (); - gtk_signal_connect_object (GTK_OBJECT (fill->color_picker), "color_set", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (fill)); - gtk_table_attach_defaults (GTK_TABLE (wtable), fill->color_picker, 1, 3, - 0, 1); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropFill * fill) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (fill), prop_fill_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_fill_get_params (glPropFill * fill, - guint * color) -{ - guint8 r, g, b, a; - - gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (fill->color_picker), - &r, &g, &b, &a); - *color = GNOME_CANVAS_COLOR_A (r, g, b, a); -} - -/*====================================================================*/ -/* fill in values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_fill_set_params (glPropFill * fill, - guint color) -{ - gnome_color_picker_set_i8 (GNOME_COLOR_PICKER (fill->color_picker), - RED (color), GREEN (color), BLUE (color), - ALPHA (color)); -} diff --git a/glabels1/src/prop_fill.h b/glabels1/src/prop_fill.h deleted file mode 100644 index 0605e209..00000000 --- a/glabels1/src/prop_fill.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_fill.h: fill properties widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_FILL_H__ -#define __PROP_FILL_H__ - -#include -#include "label.h" - -#define GL_TYPE_PROP_FILL (gl_prop_fill_get_type ()) -#define GL_PROP_FILL(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_FILL, glPropFill )) -#define GL_PROP_FILL_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_FILL, glPropFillClass)) -#define GL_IS_PROP_FILL(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_FILL)) -#define GL_IS_PROP_FILL_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_FILL)) - -typedef struct _glPropFill glPropFill; -typedef struct _glPropFillClass glPropFillClass; - -struct _glPropFill { - GtkVBox parent_widget; - - GtkWidget *color_picker; -}; - -struct _glPropFillClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropFill * fill, gpointer user_data); -}; - -extern guint gl_prop_fill_get_type (void); - -extern GtkWidget *gl_prop_fill_new (gchar * label); - -extern void gl_prop_fill_get_params (glPropFill * fill, guint * color); - -extern void gl_prop_fill_set_params (glPropFill * fill, guint color); - -#endif diff --git a/glabels1/src/prop_line.c b/glabels1/src/prop_line.c deleted file mode 100644 index a73811e9..00000000 --- a/glabels1/src/prop_line.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_line.c: line properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_line.h" - -#include "debug.h" - -#define RED(x) ( ((x)>>24) & 0xff ) -#define GREEN(x) ( ((x)>>16) & 0xff ) -#define BLUE(x) ( ((x)>>8) & 0xff ) -#define ALPHA(x) ( (x) & 0xff ) - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropLineSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_line_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_line_class_init (glPropLineClass * class); -static void gl_prop_line_init (glPropLine * line); -static void gl_prop_line_destroy (GtkObject * object); -static void gl_prop_line_construct (glPropLine * line, gchar * label); -static void changed_cb (glPropLine * line); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_line_get_type (void) -{ - static guint prop_line_type = 0; - - if (!prop_line_type) { - GtkTypeInfo prop_line_info = { - "glPropLine", - sizeof (glPropLine), - sizeof (glPropLineClass), - (GtkClassInitFunc) gl_prop_line_class_init, - (GtkObjectInitFunc) gl_prop_line_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_line_type = - gtk_type_unique (gtk_vbox_get_type (), &prop_line_info); - } - - return prop_line_type; -} - -static void -gl_prop_line_class_init (glPropLineClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_line_destroy; - - prop_line_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropLineClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_line_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_line_init (glPropLine * line) -{ - line->width_spin = NULL; - line->color_picker = NULL; - line->units_label = NULL; -} - -static void -gl_prop_line_destroy (GtkObject * object) -{ - glPropLine *line; - glPropLineClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_LINE (object)); - - line = GL_PROP_LINE (object); - class = GL_PROP_LINE_CLASS (GTK_OBJECT (line)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_line_new (gchar * label) -{ - glPropLine *line; - - line = gtk_type_new (gl_prop_line_get_type ()); - - gl_prop_line_construct (line, label); - - return GTK_WIDGET (line); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_line_construct (glPropLine * line, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel; - GtkObject *adjust; - - wvbox = GTK_WIDGET (line); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (2, 3, TRUE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Line Width Label */ - wlabel = gtk_label_new (_("Width:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - /* Line Width widget */ - adjust = gtk_adjustment_new (1.0, 0.25, 4.0, 0.25, 1.0, 1.0); - line->width_spin = - gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 0.25, 2); - gtk_signal_connect_object (GTK_OBJECT (line->width_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (line)); - gtk_table_attach_defaults (GTK_TABLE (wtable), line->width_spin, 1, 2, - 0, 1); - /* Line Width units */ - line->units_label = gtk_label_new (_("points")); - gtk_misc_set_alignment (GTK_MISC (line->units_label), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), line->units_label, - 2, 3, 0, 1); - - /* Line Color Label */ - wlabel = gtk_label_new (_("Color:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - /* Line Color picker widget */ - line->color_picker = gnome_color_picker_new (); - gtk_signal_connect_object (GTK_OBJECT (line->color_picker), "color_set", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (line)); - gtk_table_attach_defaults (GTK_TABLE (wtable), line->color_picker, 1, 3, - 1, 2); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropLine * line) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (line), prop_line_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_line_get_params (glPropLine * line, - gdouble * width, - guint * color) -{ - guint8 r, g, b, a; - - *width = - gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON - (line->width_spin)); - - gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (line->color_picker), - &r, &g, &b, &a); - *color = GNOME_CANVAS_COLOR_A (r, g, b, a); -} - -/*====================================================================*/ -/* fill in values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_line_set_params (glPropLine * line, - gdouble width, - guint color) -{ - gtk_spin_button_set_value (GTK_SPIN_BUTTON (line->width_spin), width); - - gnome_color_picker_set_i8 (GNOME_COLOR_PICKER (line->color_picker), - RED (color), GREEN (color), BLUE (color), - ALPHA (color)); -} diff --git a/glabels1/src/prop_line.h b/glabels1/src/prop_line.h deleted file mode 100644 index 1350fac0..00000000 --- a/glabels1/src/prop_line.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_line.h: line properties widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_LINE_H__ -#define __PROP_LINE_H__ - -#include -#include "label.h" - -#define GL_TYPE_PROP_LINE (gl_prop_line_get_type ()) -#define GL_PROP_LINE(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_LINE, glPropLine )) -#define GL_PROP_LINE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_LINE, glPropLineClass)) -#define GL_IS_PROP_LINE(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_LINE)) -#define GL_IS_PROP_LINE_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_LINE)) - -typedef struct _glPropLine glPropLine; -typedef struct _glPropLineClass glPropLineClass; - -struct _glPropLine { - GtkVBox parent_widget; - - GtkWidget *width_spin; - GtkWidget *color_picker; - GtkWidget *units_label; -}; - -struct _glPropLineClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropLine * line, gpointer user_data); -}; - -extern guint gl_prop_line_get_type (void); - -extern GtkWidget *gl_prop_line_new (gchar * label); - -extern void gl_prop_line_get_params (glPropLine * line, - gdouble * width, - guint * color); - -extern void gl_prop_line_set_params (glPropLine * line, - gdouble width, - guint color); - -#endif diff --git a/glabels1/src/prop_position.c b/glabels1/src/prop_position.c deleted file mode 100644 index 039afe62..00000000 --- a/glabels1/src/prop_position.c +++ /dev/null @@ -1,287 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_position.c: position properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_position.h" -#include "prefs.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropPositionSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_position_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_position_class_init (glPropPositionClass * class); -static void gl_prop_position_init (glPropPosition * position); -static void gl_prop_position_destroy (GtkObject * object); -static void gl_prop_position_construct (glPropPosition * position, - gchar * label); -static void changed_cb (glPropPosition * position); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_position_get_type (void) -{ - static guint prop_position_type = 0; - - if (!prop_position_type) { - GtkTypeInfo prop_position_info = { - "glPropPosition", - sizeof (glPropPosition), - sizeof (glPropPositionClass), - (GtkClassInitFunc) gl_prop_position_class_init, - (GtkObjectInitFunc) gl_prop_position_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_position_type = gtk_type_unique (gtk_vbox_get_type (), - &prop_position_info); - } - - return prop_position_type; -} - -static void -gl_prop_position_class_init (glPropPositionClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_position_destroy; - - prop_position_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropPositionClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_position_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_position_init (glPropPosition * position) -{ - position->x_spin = NULL; - position->y_spin = NULL; -} - -static void -gl_prop_position_destroy (GtkObject * object) -{ - glPropPosition *position; - glPropPositionClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_POSITION (object)); - - position = GL_PROP_POSITION (object); - class = GL_PROP_POSITION_CLASS (GTK_OBJECT (position)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_position_new (gchar * label) -{ - glPropPosition *position; - - position = gtk_type_new (gl_prop_position_get_type ()); - - gl_prop_position_construct (position, label); - - return GTK_WIDGET (position); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_position_construct (glPropPosition * position, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel; - GtkObject *x_adjust, *y_adjust; - const gchar *units_string; - gdouble units_per_point, climb_rate; - gint digits; - - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - climb_rate = gl_prefs_get_units_step_size (); - digits = gl_prefs_get_units_precision (); - - wvbox = GTK_WIDGET (position); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (2, 3, TRUE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* X label */ - wlabel = gtk_label_new (_("X:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - /* X spin */ - x_adjust = gtk_adjustment_new (0.0, 0.0, 100.0, climb_rate, 10.0, 10.0); - position->x_spin = gtk_spin_button_new (GTK_ADJUSTMENT (x_adjust), - climb_rate, digits); - gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (position->x_spin), - TRUE); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (position->x_spin), TRUE); - gtk_signal_connect_object (GTK_OBJECT (position->x_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (position)); - gtk_table_attach_defaults (GTK_TABLE (wtable), position->x_spin, - 1, 2, 0, 1); - - /* Y label */ - wlabel = gtk_label_new (_("Y:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - /* Y spin */ - y_adjust = gtk_adjustment_new (0.0, 0.0, 100.0, climb_rate, 10.0, 10.0); - position->y_spin = gtk_spin_button_new (GTK_ADJUSTMENT (y_adjust), - climb_rate, digits); - gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (position->y_spin), - TRUE); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (position->y_spin), TRUE); - gtk_signal_connect_object (GTK_OBJECT (position->y_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (position)); - gtk_table_attach_defaults (GTK_TABLE (wtable), position->y_spin, - 1, 2, 1, 2); - - /* Units */ - position->units_label = gtk_label_new (units_string); - gtk_misc_set_alignment (GTK_MISC (position->units_label), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), - position->units_label, 2, 3, 1, 2); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropPosition * position) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (position), prop_position_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_position_get_position (glPropPosition * position, - gdouble * x, - gdouble * y) -{ - gdouble units_per_point; - - units_per_point = gl_prefs_get_units_per_point (); - - *x = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (position->x_spin)); - *y = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (position->y_spin)); - - /* convert everything back to our internal units (points) */ - *x /= units_per_point; - *y /= units_per_point; -} - -/*====================================================================*/ -/* fill in values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_position_set_params (glPropPosition * position, - gdouble x, - gdouble y, - gdouble x_max, - gdouble y_max) -{ - GtkObject *x_adjust, *y_adjust; - const gchar *units_string; - gdouble units_per_point, climb_rate; - gint digits; - - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - climb_rate = gl_prefs_get_units_step_size (); - digits = gl_prefs_get_units_precision (); - - /* Put everything into our display units */ - x *= units_per_point; - y *= units_per_point; - x_max *= units_per_point; - y_max *= units_per_point; - - /* update X/Y spin controls */ - x_adjust = gtk_adjustment_new (x, 0.0, x_max, climb_rate, 10.0, 10.0); - gtk_spin_button_configure (GTK_SPIN_BUTTON (position->x_spin), - GTK_ADJUSTMENT (x_adjust), climb_rate, - digits); - y_adjust = gtk_adjustment_new (y, 0.0, y_max, climb_rate, 10.0, 10.0); - gtk_spin_button_configure (GTK_SPIN_BUTTON (position->y_spin), - GTK_ADJUSTMENT (y_adjust), climb_rate, - digits); - - /* Units */ - gtk_label_set_text (GTK_LABEL (position->units_label), units_string); - -} diff --git a/glabels1/src/prop_position.h b/glabels1/src/prop_position.h deleted file mode 100644 index c0637a59..00000000 --- a/glabels1/src/prop_position.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_position.h: position properties widget module header file - * - * Copyright (C) 2000, 2001 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_POSITION_H__ -#define __PROP_POSITION_H__ - -#include -#include "label.h" - -#define GL_TYPE_PROP_POSITION (gl_prop_position_get_type ()) -#define GL_PROP_POSITION(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_POSITION, glPropPosition )) -#define GL_PROP_POSITION_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_POSITION, glPropPositionClass)) -#define GL_IS_PROP_POSITION(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_POSITION)) -#define GL_IS_PROP_POSITION_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_POSITION)) - -typedef struct _glPropPosition glPropPosition; -typedef struct _glPropPositionClass glPropPositionClass; - -struct _glPropPosition { - GtkVBox parent_widget; - - GtkWidget *x_spin; - GtkWidget *y_spin; - GtkWidget *units_label; -}; - -struct _glPropPositionClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropPosition * prop, gpointer user_data); -}; - -extern guint gl_prop_position_get_type (void); - -extern GtkWidget *gl_prop_position_new (gchar * label); - -extern void gl_prop_position_get_position (glPropPosition * position, - gdouble * x, gdouble * y); - -extern void gl_prop_position_set_params (glPropPosition * position, - gdouble x, gdouble y, - gdouble x_max, gdouble y_max); - -#endif diff --git a/glabels1/src/prop_size.c b/glabels1/src/prop_size.c deleted file mode 100644 index 1f8d094d..00000000 --- a/glabels1/src/prop_size.c +++ /dev/null @@ -1,459 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_size.c: size properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_size.h" -#include "prefs.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropSizeSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_size_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_size_class_init (glPropSizeClass * class); -static void gl_prop_size_init (glPropSize * size); -static void gl_prop_size_destroy (GtkObject * object); -static void gl_prop_size_construct (glPropSize * size, gchar * label); - -static void aspect_toggle_cb (GtkToggleButton * togglebutton, - gpointer user_data); -static void w_spin_cb (GtkSpinButton * spinbutton, gpointer user_data); -static void h_spin_cb (GtkSpinButton * spinbutton, gpointer user_data); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_size_get_type (void) -{ - static guint prop_size_type = 0; - - if (!prop_size_type) { - GtkTypeInfo prop_size_info = { - "glPropSize", - sizeof (glPropSize), - sizeof (glPropSizeClass), - (GtkClassInitFunc) gl_prop_size_class_init, - (GtkObjectInitFunc) gl_prop_size_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_size_type = - gtk_type_unique (gtk_vbox_get_type (), &prop_size_info); - } - - return prop_size_type; -} - -static void -gl_prop_size_class_init (glPropSizeClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_size_destroy; - - prop_size_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropSizeClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_size_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_size_init (glPropSize * size) -{ - size->aspect_ratio = 1.0; - - size->w_spin = NULL; - size->h_spin = NULL; - - size->units_label = NULL; - - size->aspect_checkbox = NULL; -} - -static void -gl_prop_size_destroy (GtkObject * object) -{ - glPropSize *size; - glPropSizeClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_SIZE (object)); - - size = GL_PROP_SIZE (object); - class = GL_PROP_SIZE_CLASS (GTK_OBJECT (size)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_size_new (gchar * label) -{ - glPropSize *size; - - size = gtk_type_new (gl_prop_size_get_type ()); - - gl_prop_size_construct (size, label); - - return GTK_WIDGET (size); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_size_construct (glPropSize * size, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel; - GtkObject *w_adjust, *h_adjust; - const gchar *units_string; - gdouble units_per_point, climb_rate; - gint digits; - - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - climb_rate = gl_prefs_get_units_step_size (); - digits = gl_prefs_get_units_precision (); - - wvbox = GTK_WIDGET (size); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (3, 3, TRUE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* W Label */ - wlabel = gtk_label_new (_("Width:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - /* W spin */ - w_adjust = gtk_adjustment_new (climb_rate, climb_rate, 100.0, - climb_rate, 10.0, 10.0); - size->w_spin = gtk_spin_button_new (GTK_ADJUSTMENT (w_adjust), - climb_rate, digits); - gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (size->w_spin), - TRUE); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (size->w_spin), TRUE); - gtk_table_attach_defaults (GTK_TABLE (wtable), size->w_spin, - 1, 2, 0, 1); - - /* H label */ - wlabel = gtk_label_new (_("Height:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - /* H spin */ - h_adjust = gtk_adjustment_new (climb_rate, climb_rate, - 100.0, climb_rate, 10.0, 10.0); - size->h_spin = gtk_spin_button_new (GTK_ADJUSTMENT (h_adjust), - climb_rate, digits); - gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (size->h_spin), - TRUE); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (size->h_spin), TRUE); - gtk_table_attach_defaults (GTK_TABLE (wtable), size->h_spin, - 1, 2, 1, 2); - - /* Units */ - size->units_label = gtk_label_new (units_string); - gtk_misc_set_alignment (GTK_MISC (size->units_label), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), - size->units_label, 2, 3, 1, 2); - - /* Maintain aspect ratio checkbox */ - size->aspect_checkbox = - gtk_check_button_new_with_label (_ - ("Maintain current aspect ratio")); - gtk_table_attach_defaults (GTK_TABLE (wtable), size->aspect_checkbox, 0, - 3, 2, 3); - - /* Connect signals to controls */ - gtk_signal_connect (GTK_OBJECT (size->aspect_checkbox), "toggled", - GTK_SIGNAL_FUNC (aspect_toggle_cb), size); - gtk_signal_connect (GTK_OBJECT (size->w_spin), "changed", - GTK_SIGNAL_FUNC (w_spin_cb), size); - gtk_signal_connect (GTK_OBJECT (size->h_spin), "changed", - GTK_SIGNAL_FUNC (h_spin_cb), size); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Maintain aspect ratio checkbox callback. */ -/*--------------------------------------------------------------------------*/ -static void -aspect_toggle_cb (GtkToggleButton * togglebutton, - gpointer user_data) -{ - glPropSize *size = GL_PROP_SIZE (user_data); - GtkAdjustment *w_adjust, *h_adjust; - - if (gtk_toggle_button_get_active (togglebutton)) { - - size->w = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (size->w_spin)); - size->h = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (size->h_spin)); - - size->aspect_ratio = size->h / size->w; - - /* We have a new aspect ratio, adjust one of the maxes accordingly */ - if ((size->h_max_orig / size->w_max_orig) < size->aspect_ratio) { - size->w_max = size->h_max_orig / size->aspect_ratio; - size->h_max = size->h_max_orig; - } else { - size->w_max = size->w_max_orig; - size->h_max = size->w_max_orig * size->aspect_ratio; - } - - } else { - - /* Reset maximums */ - size->w_max = size->w_max_orig; - size->h_max = size->h_max_orig; - - } - - gtk_signal_handler_block_by_func (GTK_OBJECT (size->w_spin), - GTK_SIGNAL_FUNC (w_spin_cb), - user_data); - gtk_signal_handler_block_by_func (GTK_OBJECT (size->h_spin), - GTK_SIGNAL_FUNC (h_spin_cb), - user_data); - w_adjust = - gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (size->w_spin)); - w_adjust->upper = size->w_max; - gtk_spin_button_update (GTK_SPIN_BUTTON (size->w_spin)); - h_adjust = - gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (size->h_spin)); - h_adjust->upper = size->h_max; - gtk_spin_button_update (GTK_SPIN_BUTTON (size->h_spin)); - gtk_signal_handler_unblock_by_func (GTK_OBJECT (size->w_spin), - GTK_SIGNAL_FUNC (w_spin_cb), - user_data); - gtk_signal_handler_unblock_by_func (GTK_OBJECT (size->h_spin), - GTK_SIGNAL_FUNC (h_spin_cb), - user_data); - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (size), prop_size_signals[CHANGED]); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. W spin button changed callback. */ -/*--------------------------------------------------------------------------*/ -static void -w_spin_cb (GtkSpinButton * spinbutton, - gpointer user_data) -{ - glPropSize *size = GL_PROP_SIZE (user_data); - GtkToggleButton *toggle = GTK_TOGGLE_BUTTON (size->aspect_checkbox); - - size->w = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (size->w_spin)); - - if (gtk_toggle_button_get_active (toggle)) { - - size->h = size->w * size->aspect_ratio; - - /* Update our sibling control, blocking recursion. */ - gtk_signal_handler_block_by_func (GTK_OBJECT (size->h_spin), - GTK_SIGNAL_FUNC (h_spin_cb), - user_data); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (size->h_spin), - size->h); - gtk_signal_handler_unblock_by_func (GTK_OBJECT (size->h_spin), - GTK_SIGNAL_FUNC (h_spin_cb), - user_data); - } - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (size), prop_size_signals[CHANGED]); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. H spin button changed callback. */ -/*--------------------------------------------------------------------------*/ -static void -h_spin_cb (GtkSpinButton * spinbutton, - gpointer user_data) -{ - glPropSize *size = GL_PROP_SIZE (user_data); - GtkToggleButton *toggle = GTK_TOGGLE_BUTTON (size->aspect_checkbox); - - size->h = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON (size->h_spin)); - - if (gtk_toggle_button_get_active (toggle)) { - - size->w = size->h / size->aspect_ratio; - - /* Update our sibling control, blocking recursion. */ - gtk_signal_handler_block_by_func (GTK_OBJECT (size->w_spin), - GTK_SIGNAL_FUNC (w_spin_cb), - user_data); - gtk_spin_button_set_value (GTK_SPIN_BUTTON (size->w_spin), - size->w); - gtk_signal_handler_unblock_by_func (GTK_OBJECT (size->w_spin), - GTK_SIGNAL_FUNC (w_spin_cb), - user_data); - } - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (size), prop_size_signals[CHANGED]); - -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_size_get_size (glPropSize * size, - gdouble * w, - gdouble * h, - gboolean * keep_aspect_ratio_flag) -{ - gdouble units_per_point; - - units_per_point = gl_prefs_get_units_per_point (); - - *w = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (size->w_spin)); - *h = gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (size->h_spin)); - - *keep_aspect_ratio_flag = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (size->aspect_checkbox)); - - /* convert everything back to our internal units (points) */ - *w /= units_per_point; - *h /= units_per_point; -} - -/*====================================================================*/ -/* set values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_size_set_params (glPropSize * size, - gdouble w, - gdouble h, - gboolean keep_aspect_ratio_flag, - gdouble w_max, - gdouble h_max) -{ - GtkObject *w_adjust, *h_adjust; - const gchar *units_string; - gdouble units_per_point, climb_rate; - gint digits; - - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - climb_rate = gl_prefs_get_units_step_size (); - digits = gl_prefs_get_units_precision (); - - /* Put everything into our display units */ - size->w = w * units_per_point; - size->h = h * units_per_point; - size->w_max = w_max * units_per_point; - size->h_max = h_max * units_per_point; - - /* Squirrel away copies of our original maximums */ - size->w_max_orig = size->w_max; - size->h_max_orig = size->h_max; - - size->aspect_ratio = size->h / size->w; - if (keep_aspect_ratio_flag) { - - /* When tracking aspect ratio, adjust one of the maxes */ - if ((size->h_max / size->w_max) < size->aspect_ratio) { - size->w_max = size->h_max / size->aspect_ratio; - } else { - size->h_max = size->w_max * size->aspect_ratio; - } - - /* before adjusting w & h, limit to max values */ - if (size->w > size->w_max) - size->w = size->w_max; - if (size->h > size->h_max) - size->h = size->h_max; - - } - - /* update W/H spin controls */ - w_adjust = gtk_adjustment_new (size->w, climb_rate, size->w_max, - climb_rate, 10.0, 10.0); - gtk_spin_button_configure (GTK_SPIN_BUTTON (size->w_spin), - GTK_ADJUSTMENT (w_adjust), climb_rate, - digits); - h_adjust = - gtk_adjustment_new (size->h, climb_rate, size->h_max, climb_rate, - 10.0, 10.0); - gtk_spin_button_configure (GTK_SPIN_BUTTON (size->h_spin), - GTK_ADJUSTMENT (h_adjust), climb_rate, - digits); - - gtk_label_set_text (GTK_LABEL (size->units_label), units_string); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (size->aspect_checkbox), - keep_aspect_ratio_flag); - -} diff --git a/glabels1/src/prop_size.h b/glabels1/src/prop_size.h deleted file mode 100644 index 550e93f2..00000000 --- a/glabels1/src/prop_size.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_size.h: size properties widget module header file - * - * Copyright (C) 2000, 2001 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_SIZE_H__ -#define __PROP_SIZE_H__ - -#include -#include "label.h" - -#define GL_TYPE_PROP_SIZE (gl_prop_size_get_type ()) -#define GL_PROP_SIZE(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_SIZE, glPropSize )) -#define GL_PROP_SIZE_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_SIZE, glPropSizeClass)) -#define GL_IS_PROP_SIZE(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_SIZE)) -#define GL_IS_PROP_SIZE_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_SIZE)) - -typedef struct _glPropSize glPropSize; -typedef struct _glPropSizeClass glPropSizeClass; - -struct _glPropSize { - GtkVBox parent_widget; - - gdouble w, h; - gdouble aspect_ratio; - gdouble w_max, h_max; - gdouble w_max_orig, h_max_orig; - - GtkWidget *w_spin; - GtkWidget *h_spin; - GtkWidget *units_label; - GtkWidget *aspect_checkbox; -}; - -struct _glPropSizeClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropSize * size, gpointer user_data); -}; - -extern guint gl_prop_size_get_type (void); - -extern GtkWidget *gl_prop_size_new (gchar * label); - -extern void gl_prop_size_get_size (glPropSize * size, - gdouble * w, gdouble * h, - gboolean * keep_aspect_ratio_flag); - -extern void gl_prop_size_set_params (glPropSize * size, - gdouble w, gdouble h, - gboolean keep_aspect_ratio_flag, - gdouble w_max, gdouble h_max); - -#endif diff --git a/glabels1/src/prop_text.c b/glabels1/src/prop_text.c deleted file mode 100644 index c7f6a2ad..00000000 --- a/glabels1/src/prop_text.c +++ /dev/null @@ -1,426 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_text.c: text properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_text.h" - -#include "debug.h" - -#define RED(x) ( ((x)>>24) & 0xff ) -#define GREEN(x) ( ((x)>>16) & 0xff ) -#define BLUE(x) ( ((x)>>8) & 0xff ) -#define ALPHA(x) ( (x) & 0xff ) - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropTextSignal) (GtkObject * object, - gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_text_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_text_class_init (glPropTextClass * class); -static void gl_prop_text_init (glPropText * text); -static void gl_prop_text_destroy (GtkObject * object); -static void gl_prop_text_construct (glPropText * text, gchar * label); - -static void changed_cb (glPropText * text); -static void just_toggled_cb (GtkToggleButton * togglebutton, - gpointer user_data); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_text_get_type (void) -{ - static guint prop_text_type = 0; - - if (!prop_text_type) { - GtkTypeInfo prop_text_info = { - "glPropText", - sizeof (glPropText), - sizeof (glPropTextClass), - (GtkClassInitFunc) gl_prop_text_class_init, - (GtkObjectInitFunc) gl_prop_text_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_text_type = - gtk_type_unique (gtk_vbox_get_type (), &prop_text_info); - } - - return prop_text_type; -} - -static void -gl_prop_text_class_init (glPropTextClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_text_destroy; - - prop_text_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropTextClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_text_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_text_init (glPropText * text) -{ - text->font_family_entry = NULL; - text->font_size_spin = NULL; - text->font_b_button = NULL; - text->font_i_button = NULL; - - text->color_picker = NULL; - - text->left_button = NULL; - text->right_button = NULL; - text->center_button = NULL; -} - -static void -gl_prop_text_destroy (GtkObject * object) -{ - glPropText *text; - glPropTextClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_TEXT (object)); - - text = GL_PROP_TEXT (object); - class = GL_PROP_TEXT_CLASS (GTK_OBJECT (text)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_text_new (gchar * label) -{ - glPropText *text; - - text = gtk_type_new (gl_prop_text_get_type ()); - - gl_prop_text_construct (text, label); - - return GTK_WIDGET (text); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_text_construct (glPropText * text, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel, *whbox1, *wcombo; - GList *family_names = NULL; - GtkObject *adjust; - - wvbox = GTK_WIDGET (text); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (3, 3, FALSE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Font label */ - wlabel = gtk_label_new (_("Font:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - - /* Pack these widgets into an inner hbox */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_table_attach_defaults (GTK_TABLE (wtable), whbox1, 1, 3, 0, 1); - - /* Font family entry widget */ - wcombo = gtk_combo_new (); - family_names = gnome_font_family_list (); - gtk_combo_set_popdown_strings (GTK_COMBO (wcombo), family_names); - gnome_font_family_list_free (family_names); - text->font_family_entry = GTK_COMBO (wcombo)->entry; - gtk_entry_set_editable (GTK_ENTRY (text->font_family_entry), FALSE); - gtk_widget_set_usize (wcombo, 200, 0); - gtk_box_pack_start (GTK_BOX (whbox1), wcombo, FALSE, FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (text->font_family_entry), - "changed", GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (text)); - - /* Font size entry widget */ - adjust = gtk_adjustment_new (1.0, 1.0, 250.0, 1.0, 10.0, 10.0); - text->font_size_spin = - gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 1.0, 0); - gtk_box_pack_start (GTK_BOX (whbox1), text->font_size_spin, FALSE, - FALSE, 0); - gtk_signal_connect_object (GTK_OBJECT (text->font_size_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (text)); - - /* Font weight/italic button widgets */ - text->font_b_button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (text->font_b_button), - gnome_stock_new_with_icon - (GNOME_STOCK_PIXMAP_TEXT_BOLD)); - gtk_box_pack_start (GTK_BOX (whbox1), text->font_b_button, FALSE, FALSE, - 0); - gtk_signal_connect_object (GTK_OBJECT (text->font_b_button), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (text)); - text->font_i_button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (text->font_i_button), - gnome_stock_new_with_icon - (GNOME_STOCK_PIXMAP_TEXT_ITALIC)); - gtk_box_pack_start (GTK_BOX (whbox1), text->font_i_button, FALSE, FALSE, - 0); - gtk_signal_connect_object (GTK_OBJECT (text->font_i_button), "toggled", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (text)); - - /* Text Color Label */ - wlabel = gtk_label_new (_("Color:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - - /* Text Color picker widget */ - text->color_picker = gnome_color_picker_new (); - gtk_signal_connect_object (GTK_OBJECT (text->color_picker), "color_set", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (text)); - gtk_table_attach_defaults (GTK_TABLE (wtable), text->color_picker, 1, 2, - 1, 2); - - /* Alignment label */ - wlabel = gtk_label_new (_("Alignment:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 2, 3); - - /* Pack these widgets into an inner hbox */ - whbox1 = gtk_hbox_new (FALSE, GNOME_PAD); - gtk_table_attach_defaults (GTK_TABLE (wtable), whbox1, 1, 2, 2, 3); - - /* Justification entry widget */ - text->left_button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (text->left_button), - gnome_stock_new_with_icon - (GNOME_STOCK_PIXMAP_ALIGN_LEFT)); - gtk_box_pack_start (GTK_BOX (whbox1), text->left_button, FALSE, FALSE, - 0); - text->center_button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (text->center_button), - gnome_stock_new_with_icon - (GNOME_STOCK_PIXMAP_ALIGN_CENTER)); - gtk_box_pack_start (GTK_BOX (whbox1), text->center_button, FALSE, FALSE, - 0); - text->right_button = gtk_toggle_button_new (); - gtk_container_add (GTK_CONTAINER (text->right_button), - gnome_stock_new_with_icon - (GNOME_STOCK_PIXMAP_ALIGN_RIGHT)); - gtk_box_pack_start (GTK_BOX (whbox1), text->right_button, FALSE, FALSE, - 0); - - /* Now connect a callback that makes these toggles mutually exclusive */ - gtk_signal_connect (GTK_OBJECT (text->left_button), "toggled", - GTK_SIGNAL_FUNC (just_toggled_cb), text); - gtk_signal_connect (GTK_OBJECT (text->center_button), "toggled", - GTK_SIGNAL_FUNC (just_toggled_cb), text); - gtk_signal_connect (GTK_OBJECT (text->right_button), "toggled", - GTK_SIGNAL_FUNC (just_toggled_cb), text); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropText * text) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (text), prop_text_signals[CHANGED]); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Justify toggle button callback. */ -/*--------------------------------------------------------------------------*/ -static void -just_toggled_cb (GtkToggleButton * togglebutton, - gpointer user_data) -{ - glPropText *text = GL_PROP_TEXT (user_data); - - if (gtk_toggle_button_get_active (togglebutton)) { - - if (GTK_WIDGET (togglebutton) == GTK_WIDGET (text->left_button)) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (text->center_button), - FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (text->right_button), - FALSE); - } else if (GTK_WIDGET (togglebutton) == - GTK_WIDGET (text->center_button)) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (text->left_button), - FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (text->right_button), - FALSE); - } else if (GTK_WIDGET (togglebutton) == - GTK_WIDGET (text->right_button)) { - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (text->left_button), - FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (text->center_button), - FALSE); - } - - } - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (text), prop_text_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_text_get_params (glPropText * text, - gchar ** font_family, - gdouble * font_size, - GnomeFontWeight * font_weight, - gboolean * font_italic_flag, - guint * color, - GtkJustification * just) -{ - guint8 r, g, b, a; - - /* ------ Get updated font information ------ */ - *font_family = - gtk_editable_get_chars (GTK_EDITABLE (text->font_family_entry), 0, - -1); - *font_size = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (text->font_size_spin)); - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (text->font_b_button))) { - *font_weight = GNOME_FONT_BOLD; - } else { - *font_weight = GNOME_FONT_BOOK; - } - *font_italic_flag = - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (text->font_i_button)); - - /* ------ Get updated color ------ */ - gnome_color_picker_get_i8 (GNOME_COLOR_PICKER (text->color_picker), - &r, &g, &b, &a); - *color = GNOME_CANVAS_COLOR_A (r, g, b, a); - - /* ------- Get updated justification ------ */ - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (text->left_button))) { - *just = GTK_JUSTIFY_LEFT; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (text->right_button))) { - *just = GTK_JUSTIFY_RIGHT; - } else - if (gtk_toggle_button_get_active - (GTK_TOGGLE_BUTTON (text->center_button))) { - *just = GTK_JUSTIFY_CENTER; - } else { - *just = GTK_JUSTIFY_LEFT; /* Should not happen. */ - } - -} - -/*====================================================================*/ -/* fill in values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_text_set_params (glPropText * text, - gchar * font_family, - gdouble font_size, - GnomeFontWeight font_weight, - gboolean font_italic_flag, - guint color, - GtkJustification just) -{ - gtk_entry_set_text (GTK_ENTRY (text->font_family_entry), font_family); - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (text->font_size_spin), - font_size); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text->font_b_button), - (font_weight == GNOME_FONT_BOLD)); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text->font_i_button), - font_italic_flag); - - gnome_color_picker_set_i8 (GNOME_COLOR_PICKER (text->color_picker), - RED (color), GREEN (color), BLUE (color), - ALPHA (color)); - - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text->left_button), - (just == GTK_JUSTIFY_LEFT)); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text->center_button), - (just == GTK_JUSTIFY_CENTER)); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (text->right_button), - (just == GTK_JUSTIFY_RIGHT)); -} diff --git a/glabels1/src/prop_text.h b/glabels1/src/prop_text.h deleted file mode 100644 index 8d3b02ae..00000000 --- a/glabels1/src/prop_text.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_text.h: text properties widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_TEXT_H__ -#define __PROP_TEXT_H__ - -#include -#include "label.h" - -#define GL_TYPE_PROP_TEXT (gl_prop_text_get_type ()) -#define GL_PROP_TEXT(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_TEXT, glPropText )) -#define GL_PROP_TEXT_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_TEXT, glPropTextClass)) -#define GL_IS_PROP_TEXT(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_TEXT)) -#define GL_IS_PROP_TEXT_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_TEXT)) - -typedef struct _glPropText glPropText; -typedef struct _glPropTextClass glPropTextClass; - -struct _glPropText { - GtkVBox parent_widget; - - GtkWidget *font_family_entry; - GtkWidget *font_size_spin; - GtkWidget *font_b_button; - GtkWidget *font_i_button; - - GtkWidget *color_picker; - - GtkWidget *left_button, *right_button, *center_button; -}; - -struct _glPropTextClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropText * text, gpointer user_data); -}; - -extern guint gl_prop_text_get_type (void); - -extern GtkWidget *gl_prop_text_new (gchar * label); - -extern void gl_prop_text_get_params (glPropText * text, - gchar ** font_family, - gdouble * font_size, - GnomeFontWeight * font_weight, - gboolean * font_italic_flag, - guint * color, - GtkJustification * just); - -extern void gl_prop_text_set_params (glPropText * text, - gchar * font_family, - gdouble font_size, - GnomeFontWeight font_weight, - gboolean font_italic_flag, - guint color, - GtkJustification just); - -#endif diff --git a/glabels1/src/prop_text_entry.c b/glabels1/src/prop_text_entry.c deleted file mode 100644 index e82e6d1d..00000000 --- a/glabels1/src/prop_text_entry.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_text_entry.c: text entry widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_text_entry.h" -#include "merge.h" -#include "text_node.h" - -#include "debug.h" - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropTextEntrySignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_text_entry_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_text_entry_class_init (glPropTextEntryClass * class); -static void gl_prop_text_entry_init (glPropTextEntry * text_entry); -static void gl_prop_text_entry_destroy (GtkObject * object); -static void gl_prop_text_entry_construct (glPropTextEntry * text_entry, - gchar * label, GList * field_defs); - -static void changed_cb (glPropTextEntry * text_entry); -static void insert_cb (glPropTextEntry * text_entry); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_text_entry_get_type (void) -{ - static guint prop_text_entry_type = 0; - - if (!prop_text_entry_type) { - GtkTypeInfo prop_text_entry_info = { - "glPropTextEntry", - sizeof (glPropTextEntry), - sizeof (glPropTextEntryClass), - (GtkClassInitFunc) gl_prop_text_entry_class_init, - (GtkObjectInitFunc) gl_prop_text_entry_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_text_entry_type = gtk_type_unique (gtk_vbox_get_type (), - &prop_text_entry_info); - } - - return prop_text_entry_type; -} - -static void -gl_prop_text_entry_class_init (glPropTextEntryClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_text_entry_destroy; - - prop_text_entry_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropTextEntryClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, - prop_text_entry_signals, LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_text_entry_init (glPropTextEntry * text_entry) -{ - text_entry->text_entry = NULL; - text_entry->key_entry = NULL; - text_entry->insert_button = NULL; -} - -static void -gl_prop_text_entry_destroy (GtkObject * object) -{ - glPropTextEntry *text_entry; - glPropTextEntryClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_TEXT_ENTRY (object)); - - text_entry = GL_PROP_TEXT_ENTRY (object); - class = GL_PROP_TEXT_ENTRY_CLASS (GTK_OBJECT (text_entry)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_text_entry_new (gchar * label, - GList * field_defs) -{ - glPropTextEntry *text_entry; - - text_entry = gtk_type_new (gl_prop_text_entry_get_type ()); - - gl_prop_text_entry_construct (text_entry, label, field_defs); - - return GTK_WIDGET (text_entry); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_text_entry_construct (glPropTextEntry * text_entry, - gchar * label, - GList * field_defs) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel, *wcombo; - GList *keys; - - wvbox = GTK_WIDGET (text_entry); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (2, 3, FALSE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Actual text entry widget */ - text_entry->text_entry = gtk_text_new (NULL, NULL); - gtk_text_set_editable (GTK_TEXT (text_entry->text_entry), TRUE); - gtk_signal_connect_object (GTK_OBJECT (text_entry->text_entry), - "changed", GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (text_entry)); - gtk_table_attach_defaults (GTK_TABLE (wtable), text_entry->text_entry, - 0, 3, 0, 1); - - /* Insert merge field label */ - wlabel = gtk_label_new (_("Key:")); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - - /* Key entry widget */ - wcombo = gtk_combo_new (); - keys = gl_merge_get_key_list (field_defs); - if (keys != NULL) - gtk_combo_set_popdown_strings (GTK_COMBO (wcombo), keys); - gl_merge_free_key_list (&keys); - text_entry->key_entry = GTK_COMBO (wcombo)->entry; - gtk_entry_set_editable (GTK_ENTRY (text_entry->key_entry), FALSE); - gtk_widget_set_usize (wcombo, 200, 0); - gtk_table_attach_defaults (GTK_TABLE (wtable), wcombo, 1, 2, 1, 2); - - /* Insert button */ - text_entry->insert_button = - gtk_button_new_with_label (_("Insert merge field")); - gtk_signal_connect_object (GTK_OBJECT (text_entry->insert_button), - "clicked", GTK_SIGNAL_FUNC (insert_cb), - GTK_OBJECT (text_entry)); - gtk_table_attach_defaults (GTK_TABLE (wtable), - text_entry->insert_button, 2, 3, 1, 2); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropTextEntry * text_entry) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (text_entry), - prop_text_entry_signals[CHANGED]); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -insert_cb (glPropTextEntry * text_entry) -{ - gchar *key, *field; - gint pos; - - key = - gtk_editable_get_chars (GTK_EDITABLE (text_entry->key_entry), 0, - -1); - field = g_strdup_printf ("FIELD{%s}", key); - - pos = gtk_editable_get_position (GTK_EDITABLE (text_entry->text_entry)); - gtk_editable_insert_text (GTK_EDITABLE (text_entry->text_entry), - field, strlen (field), &pos); - - g_free (field); - g_free (key); - -} - -/*--------------------------------------------------------------------------*/ -/* Get widget data. */ -/*--------------------------------------------------------------------------*/ -GList * -gl_prop_text_entry_get_text (glPropTextEntry * text_entry) -{ - gchar *text; - GList *lines; - - text = - gtk_editable_get_chars (GTK_EDITABLE (text_entry->text_entry), 0, - -1); - - lines = gl_text_node_lines_new_from_text (text); - - g_free (text); - return lines; -} - -/*--------------------------------------------------------------------------*/ -/* Set widget data. */ -/*--------------------------------------------------------------------------*/ -void -gl_prop_text_entry_set_text (glPropTextEntry * text_entry, - gboolean merge_flag, - GList * lines) -{ - gint pos; - gchar *text; - - gtk_widget_set_sensitive (text_entry->key_entry, merge_flag); - gtk_widget_set_sensitive (text_entry->insert_button, merge_flag); - - gtk_signal_handler_block_by_func (GTK_OBJECT (text_entry->text_entry), - GTK_SIGNAL_FUNC (changed_cb), - text_entry); - gtk_editable_delete_text (GTK_EDITABLE (text_entry->text_entry), 0, -1); - gtk_signal_handler_unblock_by_func (GTK_OBJECT (text_entry->text_entry), - GTK_SIGNAL_FUNC (changed_cb), - text_entry); - - text = gl_text_node_lines_expand (lines, NULL); - - pos = 0; - gtk_editable_insert_text (GTK_EDITABLE (text_entry->text_entry), - text, strlen (text), &pos); - -} diff --git a/glabels1/src/prop_text_entry.h b/glabels1/src/prop_text_entry.h deleted file mode 100644 index 06c5deeb..00000000 --- a/glabels1/src/prop_text_entry.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_text_entry.h: text entry widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_TEXT_ENTRY_H__ -#define __PROP_TEXT_ENTRY_H__ - -#include - -#include "merge.h" - -#define GL_TYPE_PROP_TEXT_ENTRY (gl_prop_text_entry_get_type ()) -#define GL_PROP_TEXT_ENTRY(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_TEXT_ENTRY, glPropTextEntry )) -#define GL_PROP_TEXT_ENTRY_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_TEXT_ENTRY, glPropTextEntryClass)) -#define GL_IS_PROP_TEXT_ENTRY(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_TEXT_ENTRY)) -#define GL_IS_PROP_TEXT_ENTRY_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_TEXT_ENTRY)) - -typedef struct _glPropTextEntry glPropTextEntry; -typedef struct _glPropTextEntryClass glPropTextEntryClass; - -struct _glPropTextEntry { - GtkVBox parent_widget; - - GtkWidget *text_entry; - GtkWidget *key_entry; - GtkWidget *insert_button; -}; - -struct _glPropTextEntryClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropTextEntry * text_entry, gpointer user_data); -}; - -extern guint gl_prop_text_entry_get_type (void); - -extern GtkWidget *gl_prop_text_entry_new (gchar * label, GList * field_defs); - -extern GList *gl_prop_text_entry_get_text (glPropTextEntry * text_entry); - -extern void gl_prop_text_entry_set_text (glPropTextEntry * text_entry, - gboolean merge_flag, - GList * lines); - -#endif diff --git a/glabels1/src/prop_vector.c b/glabels1/src/prop_vector.c deleted file mode 100644 index 303aefad..00000000 --- a/glabels1/src/prop_vector.c +++ /dev/null @@ -1,305 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_vector.c: vector properties widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "prop_vector.h" -#include "prefs.h" - -#include "debug.h" - -#include - -#ifndef M_PI -#define M_PI 3.14159265358979323846 /* pi */ -#endif - -#define LENGTH(x,y) sqrt( (x)*(x) + (y)*(y) ) -#define ANGLE(x,y) ( (180.0/M_PI)*atan2( -(y), (x) ) ) -#define COMP_X(l,a) ( (l) * cos( (M_PI/180.0)*(a) ) ) -#define COMP_Y(l,a) ( -(l) * sin( (M_PI/180.0)*(a) ) ) - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glPropVectorSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint prop_vector_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_prop_vector_class_init (glPropVectorClass * class); -static void gl_prop_vector_init (glPropVector * vector); -static void gl_prop_vector_destroy (GtkObject * object); -static void gl_prop_vector_construct (glPropVector * vector, gchar * label); -static void changed_cb (glPropVector * vector); - -/*================================================================*/ -/* Boilerplate Object stuff. */ -/*================================================================*/ -guint -gl_prop_vector_get_type (void) -{ - static guint prop_vector_type = 0; - - if (!prop_vector_type) { - GtkTypeInfo prop_vector_info = { - "glPropVector", - sizeof (glPropVector), - sizeof (glPropVectorClass), - (GtkClassInitFunc) gl_prop_vector_class_init, - (GtkObjectInitFunc) gl_prop_vector_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - prop_vector_type = gtk_type_unique (gtk_vbox_get_type (), - &prop_vector_info); - } - - return prop_vector_type; -} - -static void -gl_prop_vector_class_init (glPropVectorClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_vbox_get_type ()); - - object_class->destroy = gl_prop_vector_destroy; - - prop_vector_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glPropVectorClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, prop_vector_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_prop_vector_init (glPropVector * vector) -{ - vector->len_spin = NULL; - vector->angle_spin = NULL; -} - -static void -gl_prop_vector_destroy (GtkObject * object) -{ - glPropVector *vector; - glPropVectorClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROP_VECTOR (object)); - - vector = GL_PROP_VECTOR (object); - class = GL_PROP_VECTOR_CLASS (GTK_OBJECT (vector)->klass); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_prop_vector_new (gchar * label) -{ - glPropVector *vector; - - vector = gtk_type_new (gl_prop_vector_get_type ()); - - gl_prop_vector_construct (vector, label); - - return GTK_WIDGET (vector); -} - -/*============================================================*/ -/* Construct composite widget. */ -/*============================================================*/ -static void -gl_prop_vector_construct (glPropVector * vector, - gchar * label) -{ - GtkWidget *wvbox, *wframe, *wtable, *wlabel; - GtkObject *adjust; - const gchar *units_string; - gdouble units_per_point, climb_rate; - gint digits; - - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - climb_rate = gl_prefs_get_units_step_size (); - digits = gl_prefs_get_units_precision (); - - wvbox = GTK_WIDGET (vector); - - wframe = gtk_frame_new (label); - gtk_box_pack_start (GTK_BOX (wvbox), wframe, FALSE, FALSE, 0); - - wtable = gtk_table_new (2, 3, TRUE); - gtk_container_set_border_width (GTK_CONTAINER (wtable), 10); - gtk_table_set_row_spacings (GTK_TABLE (wtable), 5); - gtk_table_set_col_spacings (GTK_TABLE (wtable), 5); - gtk_container_add (GTK_CONTAINER (wframe), wtable); - - /* Length label */ - wlabel = gtk_label_new (_("Length:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_label_set_justify (GTK_LABEL (wlabel), GTK_JUSTIFY_RIGHT); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 0, 1); - /* Length spin */ - adjust = gtk_adjustment_new (climb_rate, climb_rate, 100.0, climb_rate, - 10.0, 10.0); - vector->len_spin = gtk_spin_button_new (GTK_ADJUSTMENT (adjust), - climb_rate, digits); - gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (vector->len_spin), - TRUE); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (vector->len_spin), TRUE); - gtk_signal_connect_object (GTK_OBJECT (vector->len_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (vector)); - gtk_table_attach_defaults (GTK_TABLE (wtable), vector->len_spin, 1, 2, - 0, 1); - /* Length units label */ - vector->len_units_label = gtk_label_new (units_string); - gtk_misc_set_alignment (GTK_MISC (vector->len_units_label), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), vector->len_units_label, - 2, 3, 0, 1); - - /* Angle label */ - wlabel = gtk_label_new (_("Angle:")); - gtk_misc_set_alignment (GTK_MISC (wlabel), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), wlabel, 0, 1, 1, 2); - /* Angle spin */ - adjust = gtk_adjustment_new (0.0, -180.0, +180.0, 1.0, 10.0, 10.0); - vector->angle_spin = - gtk_spin_button_new (GTK_ADJUSTMENT (adjust), 1.0, 0); - gtk_spin_button_set_snap_to_ticks (GTK_SPIN_BUTTON (vector->angle_spin), - TRUE); - gtk_spin_button_set_numeric (GTK_SPIN_BUTTON (vector->angle_spin), - TRUE); - gtk_signal_connect_object (GTK_OBJECT (vector->angle_spin), "changed", - GTK_SIGNAL_FUNC (changed_cb), - GTK_OBJECT (vector)); - gtk_table_attach_defaults (GTK_TABLE (wtable), vector->angle_spin, 1, 2, - 1, 2); - /* Angle units label */ - vector->angle_units_label = gtk_label_new (_("degrees")); - gtk_misc_set_alignment (GTK_MISC (vector->angle_units_label), 0, 0.5); - gtk_table_attach_defaults (GTK_TABLE (wtable), - vector->angle_units_label, 2, 3, 1, 2); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Callback for when any control in the widget has changed. */ -/*--------------------------------------------------------------------------*/ -static void -changed_cb (glPropVector * vector) -{ - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (vector), prop_vector_signals[CHANGED]); -} - -/*====================================================================*/ -/* query values from controls. */ -/*====================================================================*/ -void -gl_prop_vector_get_params (glPropVector * vector, - gdouble * dx, - gdouble * dy) -{ - gdouble length, angle; - gdouble units_per_point; - - units_per_point = gl_prefs_get_units_per_point (); - - length = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (vector->len_spin)); - angle = - gtk_spin_button_get_value_as_float (GTK_SPIN_BUTTON - (vector->angle_spin)); - - length /= units_per_point; - - *dx = COMP_X (length, angle); - *dy = COMP_Y (length, angle); -} - -/*====================================================================*/ -/* set values and ranges for controls. */ -/*====================================================================*/ -void -gl_prop_vector_set_params (glPropVector * vector, - gdouble dx, - gdouble dy, - gdouble x_max, - gdouble y_max) -{ - GtkObject *length_adjust; - gdouble length, angle; - const gchar *units_string; - gdouble units_per_point, climb_rate; - gint digits; - - units_string = gl_prefs_get_units_string (); - units_per_point = gl_prefs_get_units_per_point (); - climb_rate = gl_prefs_get_units_step_size (); - digits = gl_prefs_get_units_precision (); - - /* Put everything into our display units */ - dx *= units_per_point; - dy *= units_per_point; - x_max *= units_per_point; - y_max *= units_per_point; - - length = LENGTH (dx, dy); - angle = ANGLE (dx, dy); - - length_adjust = gtk_adjustment_new (length, 0.0, LENGTH (x_max, y_max), - climb_rate, 10.0, 10.0); - gtk_spin_button_configure (GTK_SPIN_BUTTON (vector->len_spin), - GTK_ADJUSTMENT (length_adjust), - climb_rate, digits); - gtk_spin_button_update (GTK_SPIN_BUTTON (vector->len_spin)); - - gtk_spin_button_set_value (GTK_SPIN_BUTTON (vector->angle_spin), angle); -} diff --git a/glabels1/src/prop_vector.h b/glabels1/src/prop_vector.h deleted file mode 100644 index e8197ad5..00000000 --- a/glabels1/src/prop_vector.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * prop_vector.h: vector properties widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __PROP_VECTOR_H__ -#define __PROP_VECTOR_H__ - -#include -#include "label.h" - -#define GL_TYPE_PROP_VECTOR (gl_prop_vector_get_type ()) -#define GL_PROP_VECTOR(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_PROP_VECTOR, glPropVector )) -#define GL_PROP_VECTOR_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROP_VECTOR, glPropVectorClass)) -#define GL_IS_PROP_VECTOR(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_PROP_VECTOR)) -#define GL_IS_PROP_VECTOR_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROP_VECTOR)) - -typedef struct _glPropVector glPropVector; -typedef struct _glPropVectorClass glPropVectorClass; - -struct _glPropVector { - GtkVBox parent_widget; - - GtkWidget *len_spin; - GtkWidget *len_units_label; - GtkWidget *angle_spin; - GtkWidget *angle_units_label; -}; - -struct _glPropVectorClass { - GtkVBoxClass parent_class; - - void (*changed) (glPropVector * vector, gpointer user_data); -}; - -extern guint gl_prop_vector_get_type (void); - -extern GtkWidget *gl_prop_vector_new (gchar * label); - -extern void gl_prop_vector_get_params (glPropVector * vector, - gdouble * dx, gdouble * dy); - -extern void gl_prop_vector_set_params (glPropVector * vector, - gdouble dx, gdouble dy, - gdouble x_max, gdouble y_max); - -#endif diff --git a/glabels1/src/propertybox.c b/glabels1/src/propertybox.c deleted file mode 100644 index b8fe2946..00000000 --- a/glabels1/src/propertybox.c +++ /dev/null @@ -1,428 +0,0 @@ -/* Modified version of gnome-propertybox from gnome-libs-1.4 */ -/* Primarily removed the "help" button and changed the names.*/ -/* -Jim Evins 11/25/2001 */ - -/* gnome-propertybox.c - Property dialog box. - - Copyright (C) 1998 Tom Tromey - - 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, 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library 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. */ - -/* Note that the property box is constructed so that we could later - change how the buttons work. For instance, we could put an Apply - button inside each page; this kind of Apply button would only - affect the current page. Please do not change the API in a way - that would violate this goal. */ - -#include - -#include "propertybox.h" -#include -#include -#include -#include -#include - -enum { - APPLY, - LAST_SIGNAL -}; - -typedef void (*glPropertyBoxSignal) (GtkObject * object, - gint arg, - gpointer data); - -static void gl_property_box_class_init (glPropertyBoxClass * klass); -static void gl_property_box_init (glPropertyBox * property_box); -static void gl_property_box_marshal_signal (GtkObject * object, - GtkSignalFunc func, - gpointer func_data, - GtkArg * args); -static void gl_property_box_destroy (GtkObject * object); - -/* - * These four are called from dialog_clicked_cb(), depending - * on which button was clicked. - */ -static void global_apply (glPropertyBox * property_box); -static void apply_and_close (glPropertyBox * property_box); -static void just_close (glPropertyBox * property_box); - -static void dialog_clicked_cb (GnomeDialog * dialog, - gint button, - gpointer data); - -static GnomeDialogClass *parent_class = NULL; - -static gint property_box_signals[LAST_SIGNAL] = { 0 }; - -/** - * gl_property_box_get_type: - * - * Internal routine that returns the GtkType of the - * glPropertyBox widget - */ -guint -gl_property_box_get_type (void) -{ - static guint property_box_type = 0; - - if (!property_box_type) { - GtkTypeInfo property_box_info = { - "glPropertyBox", - sizeof (glPropertyBox), - sizeof (glPropertyBoxClass), - (GtkClassInitFunc) gl_property_box_class_init, - (GtkObjectInitFunc) gl_property_box_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL - }; - - property_box_type = gtk_type_unique (gnome_dialog_get_type (), - &property_box_info); - } - - return property_box_type; -} - -static void -gl_property_box_class_init (glPropertyBoxClass * klass) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - GtkWindowClass *window_class; - - object_class = (GtkObjectClass *) klass; - widget_class = (GtkWidgetClass *) klass; - window_class = (GtkWindowClass *) klass; - - object_class->destroy = gl_property_box_destroy; - - parent_class = gtk_type_class (gnome_dialog_get_type ()); - - property_box_signals[APPLY] = - gtk_signal_new ("apply", - GTK_RUN_LAST, - object_class->type, - GTK_SIGNAL_OFFSET (glPropertyBoxClass, - apply), - gl_property_box_marshal_signal, - GTK_TYPE_NONE, 1, GTK_TYPE_INT); - - gtk_object_class_add_signals (object_class, property_box_signals, - LAST_SIGNAL); - - klass->apply = NULL; -} - -static void -gl_property_box_marshal_signal (GtkObject * object, - GtkSignalFunc func, - gpointer func_data, - GtkArg * args) -{ - glPropertyBoxSignal rfunc; - - rfunc = (glPropertyBoxSignal) func; - (*rfunc) (object, GTK_VALUE_INT (args[0]), func_data); -} - -static void -gl_property_box_init (glPropertyBox * property_box) -{ - GList *button_list; - - property_box->notebook = gtk_notebook_new (); - - if (gnome_preferences_get_property_box_apply ()) { - gnome_dialog_append_buttons (GNOME_DIALOG (property_box), - GNOME_STOCK_BUTTON_OK, - GNOME_STOCK_BUTTON_APPLY, - GNOME_STOCK_BUTTON_CLOSE, NULL); - } else { - gnome_dialog_append_buttons (GNOME_DIALOG (property_box), - GNOME_STOCK_BUTTON_OK, - GNOME_STOCK_BUTTON_CANCEL, NULL); - } - - gnome_dialog_set_default (GNOME_DIALOG (property_box), 0); - - /* This is sort of unattractive */ - - button_list = GNOME_DIALOG (property_box)->buttons; - - property_box->ok_button = GTK_WIDGET (button_list->data); - button_list = button_list->next; - - if (gnome_preferences_get_property_box_apply ()) { - property_box->apply_button = GTK_WIDGET (button_list->data); - button_list = button_list->next; - gtk_widget_set_sensitive (property_box->apply_button, FALSE); - } else - property_box->apply_button = 0; - - property_box->cancel_button = GTK_WIDGET (button_list->data); - button_list = button_list->next; - - gtk_signal_connect (GTK_OBJECT (property_box), "clicked", - GTK_SIGNAL_FUNC (dialog_clicked_cb), NULL); - - gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (property_box)->vbox), - property_box->notebook, TRUE, TRUE, 0); - - gtk_widget_show (property_box->notebook); -} - -static void -gl_property_box_destroy (GtkObject * object) -{ - glPropertyBox *property_box; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_PROPERTY_BOX (object)); - - property_box = GL_PROPERTY_BOX (object); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -/** - * gl_property_box_new: [constructor] - * - * Creates a new glPropertyBox widget. The PropertyBox widget - * is useful for making consistent configuration dialog boxes. - * - * When a setting has been made to a property in the PropertyBox - * your program needs to invoke the gl_property_box_changed to signal - * a change (this will enable the Ok/Apply buttons). - * - * Returns a newly created glPropertyBox widget. - */ -GtkWidget * -gl_property_box_new (void) -{ - return gtk_type_new (gl_property_box_get_type ()); -} - -static void -dialog_clicked_cb (GnomeDialog * dialog, - gint button, - gpointer data) -{ - glPropertyBox *pbox; - GtkWidget *page; - GList *list; - gboolean dirty = FALSE; - - g_return_if_fail (dialog != NULL); - g_return_if_fail (GL_IS_PROPERTY_BOX (dialog)); - - pbox = GL_PROPERTY_BOX (dialog); - - if (GTK_NOTEBOOK (pbox->notebook)->cur_page != NULL) { - - for (list = GTK_NOTEBOOK (pbox->notebook)->children; - list != NULL; list = list->next) { - GtkNotebookPage *page = list->data; - g_assert (page != NULL); - - dirty = - GPOINTER_TO_INT (gtk_object_get_data - (GTK_OBJECT (page->child), - GL_PROPERTY_BOX_DIRTY)); - - if (dirty) - break; - } - } else { - page = NULL; - dirty = FALSE; - } - - /* Choose which style we did */ - if (pbox->apply_button) { - switch (button) { - case 0: - if (dirty) - apply_and_close (GL_PROPERTY_BOX (dialog)); - else - just_close (GL_PROPERTY_BOX (dialog)); - break; - case 1: - global_apply (GL_PROPERTY_BOX (dialog)); - break; - case 2: - just_close (GL_PROPERTY_BOX (dialog)); - break; - default: - g_assert_not_reached (); - } - } else { - switch (button) { - case 0: - if (dirty) - apply_and_close (GL_PROPERTY_BOX (dialog)); - else - just_close (GL_PROPERTY_BOX (dialog)); - break; - case 1: - just_close (GL_PROPERTY_BOX (dialog)); - break; - default: - g_assert_not_reached (); - } - } -} - -static void -set_sensitive (glPropertyBox * property_box, - gint dirty) -{ - if (property_box->apply_button) - gtk_widget_set_sensitive (property_box->apply_button, dirty); -} - -/** - * gl_property_box_changed: - * @property_box: The glPropertyBox that contains the changed data - * - * When a setting has changed, the code needs to invoke this routine - * to make the Ok/Apply buttons sensitive. - */ -void -gl_property_box_changed (glPropertyBox * property_box) -{ - GtkWidget *page; - - g_return_if_fail (property_box != NULL); - g_return_if_fail (GL_IS_PROPERTY_BOX (property_box)); - g_return_if_fail (property_box->notebook); - g_return_if_fail (GTK_NOTEBOOK (property_box->notebook)->cur_page); - - page = GTK_NOTEBOOK (property_box->notebook)->cur_page->child; - g_assert (page != NULL); - - gtk_object_set_data (GTK_OBJECT (page), - GL_PROPERTY_BOX_DIRTY, GINT_TO_POINTER (1)); - - set_sensitive (property_box, 1); -} - -/** - * gl_property_box_set_modified: - * @property_box: The glPropertyBox that contains the changed data - * @state: The state. TRUE means modified, FALSE means unmodified. - * - * This sets the modified flag of the glPropertyBox to the value in @state. - * Affects whether the OK/Apply buttons are sensitive. - */ -void -gl_property_box_set_modified (glPropertyBox * property_box, - gboolean state) -{ - GtkWidget *page; - - g_return_if_fail (property_box != NULL); - g_return_if_fail (GL_IS_PROPERTY_BOX (property_box)); - g_return_if_fail (property_box->notebook); - g_return_if_fail (GTK_NOTEBOOK (property_box->notebook)->cur_page); - - page = GTK_NOTEBOOK (property_box->notebook)->cur_page->child; - g_assert (page != NULL); - - gtk_object_set_data (GTK_OBJECT (page), - GL_PROPERTY_BOX_DIRTY, - GINT_TO_POINTER (state ? 1 : 0)); - - set_sensitive (property_box, state); -} - -static void -global_apply (glPropertyBox * property_box) -{ - GList *list; - gint n; - - g_return_if_fail (GTK_NOTEBOOK (property_box->notebook)->children != - NULL); - - for (list = GTK_NOTEBOOK (property_box->notebook)->children, n = 0; - list != NULL; list = g_list_next (list), n++) { - /* FIXME: there should be a way to report an error - during Apply. That way we could prevent closing - the window if there were a problem. */ - GtkNotebookPage *page = list->data; - if (gtk_object_get_data (GTK_OBJECT (page->child), - GL_PROPERTY_BOX_DIRTY)) { - gtk_signal_emit (GTK_OBJECT (property_box), - property_box_signals[APPLY], n); - gtk_object_set_data (GTK_OBJECT (page->child), - GL_PROPERTY_BOX_DIRTY, - GINT_TO_POINTER (0)); - } - } - - /* Emit an apply signal with a button of -1. This means we - just finished a global apply. Is this a hack? */ - gtk_signal_emit (GTK_OBJECT (property_box), - property_box_signals[APPLY], (gint) - 1); - - /* Doesn't matter which item we use. */ - set_sensitive (property_box, 0); -} - -static void -just_close (glPropertyBox * property_box) -{ - gnome_dialog_close (GNOME_DIALOG (property_box)); -} - -static void -apply_and_close (glPropertyBox * property_box) -{ - global_apply (property_box); - just_close (property_box); -} - -/** - * gl_property_box_append_page: - * @property_box: The property box where we are inserting a new page - * @child: The widget that is being inserted - * @tab_label: The widget used as the label for this confiugration page - * - * Appends a new page to the glPropertyBox. - * - * Returns the assigned index of the page inside the glPropertyBox or - * -1 if one of the arguments is invalid. - */ -gint -gl_property_box_append_page (glPropertyBox * property_box, - GtkWidget * child, - GtkWidget * tab_label) -{ - g_return_val_if_fail (property_box != NULL, -1); - g_return_val_if_fail (GL_IS_PROPERTY_BOX (property_box), -1); - g_return_val_if_fail (child != NULL, -1); - g_return_val_if_fail (GTK_IS_WIDGET (child), -1); - g_return_val_if_fail (tab_label != NULL, -1); - g_return_val_if_fail (GTK_IS_WIDGET (tab_label), -1); - - gtk_notebook_append_page (GTK_NOTEBOOK (property_box->notebook), - child, tab_label); - - return g_list_length (GTK_NOTEBOOK (property_box->notebook)->children) - - 1; -} diff --git a/glabels1/src/propertybox.h b/glabels1/src/propertybox.h deleted file mode 100644 index 403ebf08..00000000 --- a/glabels1/src/propertybox.h +++ /dev/null @@ -1,74 +0,0 @@ -/* Modified version of gnome-propertybox from gnome-libs-1.4 */ -/* Primarily removed the "help" button and changed the names.*/ -/* -Jim Evins 11/25/2001 */ - -/* gnome-propertybox.h - Property dialog box. - - Copyright (C) 1998 Tom Tromey - - 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, 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 - Library General Public License for more details. - - You should have received a copy of the GNU Library 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 __PROPERTY_BOX_H__ -#define __PROPERTY_BOX_H__ - -#include -#include - -BEGIN_GNOME_DECLS -#define GL_TYPE_PROPERTY_BOX (gl_property_box_get_type ()) -#define GL_PROPERTY_BOX(obj) (GTK_CHECK_CAST ((obj), GL_TYPE_PROPERTY_BOX, glPropertyBox)) -#define GL_PROPERTY_BOX_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_PROPERTY_BOX, glPropertyBoxClass)) -#define GL_IS_PROPERTY_BOX(obj) (GTK_CHECK_TYPE ((obj), GL_TYPE_PROPERTY_BOX)) -#define GL_IS_PROPERTY_BOX_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_PROPERTY_BOX)) -/*the flag used on the notebook pages to see if a change happened on a certain page or not*/ -#define GL_PROPERTY_BOX_DIRTY "gl_property_box_dirty" -typedef struct _glPropertyBox glPropertyBox; -typedef struct _glPropertyBoxClass glPropertyBoxClass; - -struct _glPropertyBox { - GnomeDialog dialog; - - GtkWidget *notebook; /* The notebook widget. */ - GtkWidget *ok_button; /* OK button. */ - GtkWidget *apply_button; /* Apply button. */ - GtkWidget *cancel_button; /* Cancel/Close button. */ -}; - -struct _glPropertyBoxClass { - GnomeDialogClass parent_class; - - void (*apply) (glPropertyBox * propertybox, - gint page_num); -}; - -guint gl_property_box_get_type (void); -GtkWidget *gl_property_box_new (void); - -/* - * Call this when the user changes something in the current page of - * the notebook. - */ -void gl_property_box_changed (glPropertyBox * property_box); - -void gl_property_box_set_modified (glPropertyBox * property_box, - gboolean state); - -gint gl_property_box_append_page (glPropertyBox * property_box, - GtkWidget * child, - GtkWidget * tab_label); - -END_GNOME_DECLS -#endif /* __PROPERTY_BOX_H__ */ diff --git a/glabels1/src/rotate_select.c b/glabels1/src/rotate_select.c deleted file mode 100644 index 29e0a9ef..00000000 --- a/glabels1/src/rotate_select.c +++ /dev/null @@ -1,348 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * rotate_select.c: label rotate selection widget module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "rotate_select.h" -#include "template.h" - -#include "debug.h" - -#define MINI_PREVIEW_MAX_PIXELS 48 - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -enum { - CHANGED, - LAST_SIGNAL -}; - -typedef void (*glRotateSelectSignal) (GtkObject * object, gpointer data); - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GtkContainerClass *parent_class; - -static gint rotate_select_signals[LAST_SIGNAL] = { 0 }; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static void gl_rotate_select_class_init (glRotateSelectClass * class); -static void gl_rotate_select_init (glRotateSelect * rotate_select); -static void gl_rotate_select_destroy (GtkObject * object); - -static void gl_rotate_select_construct (glRotateSelect * rotate_select); - -static void entry_changed_cb (GtkToggleButton * toggle, gpointer user_data); - -static GtkWidget *mini_preview_canvas_new (void); - -static void mini_preview_canvas_update (GnomeCanvas * canvas, - glTemplate * template, - gboolean rotate_flag); - -/****************************************************************************/ -/* Boilerplate Object stuff. */ -/****************************************************************************/ -guint -gl_rotate_select_get_type (void) -{ - static guint rotate_select_type = 0; - - if (!rotate_select_type) { - GtkTypeInfo rotate_select_info = { - "glRotateSelect", - sizeof (glRotateSelect), - sizeof (glRotateSelectClass), - (GtkClassInitFunc) gl_rotate_select_class_init, - (GtkObjectInitFunc) gl_rotate_select_init, - (GtkArgSetFunc) NULL, - (GtkArgGetFunc) NULL, - }; - - rotate_select_type = gtk_type_unique (gtk_hbox_get_type (), - &rotate_select_info); - } - - return rotate_select_type; -} - -static void -gl_rotate_select_class_init (glRotateSelectClass * class) -{ - GtkObjectClass *object_class; - GtkWidgetClass *widget_class; - - object_class = (GtkObjectClass *) class; - widget_class = (GtkWidgetClass *) class; - - parent_class = gtk_type_class (gtk_hbox_get_type ()); - - object_class->destroy = gl_rotate_select_destroy; - - rotate_select_signals[CHANGED] = - gtk_signal_new ("changed", GTK_RUN_LAST, object_class->type, - GTK_SIGNAL_OFFSET (glRotateSelectClass, changed), - gtk_signal_default_marshaller, GTK_TYPE_NONE, 0); - gtk_object_class_add_signals (object_class, rotate_select_signals, - LAST_SIGNAL); - - class->changed = NULL; -} - -static void -gl_rotate_select_init (glRotateSelect * rotate_select) -{ - rotate_select->rotate_check = NULL; - - rotate_select->canvas = NULL; - - rotate_select->template = NULL; -} - -static void -gl_rotate_select_destroy (GtkObject * object) -{ - glRotateSelect *rotate_select; - glRotateSelectClass *class; - - g_return_if_fail (object != NULL); - g_return_if_fail (GL_IS_ROTATE_SELECT (object)); - - rotate_select = GL_ROTATE_SELECT (object); - class = GL_ROTATE_SELECT_CLASS (GTK_OBJECT (rotate_select)->klass); - - gl_template_free (&rotate_select->template); - - GTK_OBJECT_CLASS (parent_class)->destroy (object); -} - -GtkWidget * -gl_rotate_select_new (void) -{ - glRotateSelect *rotate_select; - - rotate_select = gtk_type_new (gl_rotate_select_get_type ()); - - gl_rotate_select_construct (rotate_select); - - return GTK_WIDGET (rotate_select); -} - -/*--------------------------------------------------------------------------*/ -/* Construct composite widget. */ -/*--------------------------------------------------------------------------*/ -static void -gl_rotate_select_construct (glRotateSelect * rotate_select) -{ - GtkWidget *whbox; - - whbox = GTK_WIDGET (rotate_select); - - /* Actual selection control */ - rotate_select->rotate_check = - gtk_check_button_new_with_label (_("Rotate")); - gtk_box_pack_start (GTK_BOX (whbox), rotate_select->rotate_check, TRUE, - TRUE, GNOME_PAD); - - /* mini_preview canvas */ - rotate_select->canvas = mini_preview_canvas_new (); - gtk_box_pack_start (GTK_BOX (whbox), rotate_select->canvas, - TRUE, TRUE, GNOME_PAD); - - /* Connect signals to controls */ - gtk_signal_connect (GTK_OBJECT (rotate_select->rotate_check), "toggled", - GTK_SIGNAL_FUNC (entry_changed_cb), rotate_select); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. modify widget due to change of check button */ -/*--------------------------------------------------------------------------*/ -static void -entry_changed_cb (GtkToggleButton * toggle, - gpointer user_data) -{ - glRotateSelect *rotate_select = GL_ROTATE_SELECT (user_data); - - if (rotate_select->template != NULL) { - /* Update mini_preview canvas & details with template */ - mini_preview_canvas_update (GNOME_CANVAS - (rotate_select->canvas), - rotate_select->template, - gtk_toggle_button_get_active - (toggle)); - } - - /* Emit our "changed" signal */ - gtk_signal_emit (GTK_OBJECT (user_data), - rotate_select_signals[CHANGED]); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Draw a mini-preview canvas. */ -/*--------------------------------------------------------------------------*/ -static GtkWidget * -mini_preview_canvas_new (void) -{ - GtkWidget *wcanvas = NULL; - - /* Create a canvas */ - gtk_widget_push_visual (gdk_rgb_get_visual ()); - gtk_widget_push_colormap (gdk_rgb_get_cmap ()); - wcanvas = gnome_canvas_new_aa (); - gtk_widget_pop_colormap (); - gtk_widget_pop_visual (); - - gtk_widget_set_usize (GTK_WIDGET (wcanvas), - MINI_PREVIEW_MAX_PIXELS + 4, - MINI_PREVIEW_MAX_PIXELS + 4); - - gtk_object_set_data (GTK_OBJECT (wcanvas), "label_item", NULL); - - return wcanvas; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Update mini-preview canvas from new template. */ -/*--------------------------------------------------------------------------*/ -static void -mini_preview_canvas_update (GnomeCanvas * canvas, - glTemplate * template, - gboolean rotate_flag) -{ - gdouble canvas_scale; - GnomeCanvasGroup *group = NULL; - GnomeCanvasItem *label_item = NULL; - gdouble m, w, h; - - /* Fetch our data from canvas */ - label_item = gtk_object_get_data (GTK_OBJECT (canvas), "label_item"); - - m = MAX (template->label_width, template->label_height); - canvas_scale = (MINI_PREVIEW_MAX_PIXELS) / m; - - /* scale and size canvas */ - gnome_canvas_set_pixels_per_unit (GNOME_CANVAS (canvas), canvas_scale); - group = gnome_canvas_root (GNOME_CANVAS (canvas)); - gnome_canvas_set_scroll_region (GNOME_CANVAS (canvas), - -m / 2.0, -m / 2.0, +m / 2.0, +m / 2.0); - - /* remove old label outline */ - if (label_item != NULL) { - gtk_object_destroy (GTK_OBJECT (label_item)); - } - - /* draw mini label outline */ - if (!rotate_flag) { - w = template->label_width; - h = template->label_height; - } else { - w = template->label_height; - h = template->label_width; - } - switch (template->style) { - case GL_TEMPLATE_STYLE_RECT: - label_item = gnome_canvas_item_new (group, - gnome_canvas_rect_get_type(), - "x1", -w / 2.0, - "y1", -h / 2.0, - "x2", +w / 2.0, - "y2", +h / 2.0, - "width_pixels", 1, - "outline_color", "black", - "fill_color", "white", - NULL); - break; - case GL_TEMPLATE_STYLE_ROUND: - case GL_TEMPLATE_STYLE_CD: - label_item = gnome_canvas_item_new (group, - gnome_canvas_ellipse_get_type(), - "x1", -w / 2.0, - "y1", -h / 2.0, - "x2", +w / 2.0, - "y2", +h / 2.0, - "width_pixels", 1, - "outline_color", "black", - "fill_color", "white", - NULL); - break; - default: - WARN ("Unknown label style"); - break; - } - - gtk_object_set_data (GTK_OBJECT (canvas), "label_item", label_item); - -} - -/****************************************************************************/ -/* query state of widget. */ -/****************************************************************************/ -gboolean -gl_rotate_select_get_state (glRotateSelect * rotate_select) -{ - return - gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON - (rotate_select->rotate_check)); -} - -/****************************************************************************/ -/* set state of widget. */ -/****************************************************************************/ -void -gl_rotate_select_set_state (glRotateSelect * rotate_select, - gboolean state) -{ - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (rotate_select->rotate_check), state); -} - -/****************************************************************************/ -/* set template for widget. */ -/****************************************************************************/ -void -gl_rotate_select_set_template_name (glRotateSelect * rotate_select, - gchar * name) -{ - glTemplate *template; - - template = gl_template_from_name (name); - rotate_select->template = template; - - if (template->label_width != template->label_height) { - gtk_widget_set_sensitive (rotate_select->rotate_check, TRUE); - } else { - gtk_widget_set_sensitive (rotate_select->rotate_check, FALSE); - } - - mini_preview_canvas_update (GNOME_CANVAS (rotate_select->canvas), - template, FALSE); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON - (rotate_select->rotate_check), FALSE); -} diff --git a/glabels1/src/rotate_select.h b/glabels1/src/rotate_select.h deleted file mode 100644 index 7204c83b..00000000 --- a/glabels1/src/rotate_select.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * rotate_select.h: label rotate selection widget module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __ROTATE_SELECT_H__ -#define __ROTATE_SELECT_H__ - -#include -#include "template.h" - -#define GL_TYPE_ROTATE_SELECT (gl_rotate_select_get_type ()) -#define GL_ROTATE_SELECT(obj) \ - (GTK_CHECK_CAST((obj), GL_TYPE_ROTATE_SELECT, glRotateSelect )) -#define GL_ROTATE_SELECT_CLASS(klass) \ - (GTK_CHECK_CLASS_CAST ((klass), GL_TYPE_ROTATE_SELECT, glRotateSelectClass)) -#define GL_IS_ROTATE_SELECT(obj) \ - (GTK_CHECK_TYPE ((obj), GL_TYPE_ROTATE_SELECT)) -#define GL_IS_ROTATE_SELECT_CLASS(klass) \ - (GTK_CHECK_CLASS_TYPE ((klass), GL_TYPE_ROTATE_SELECT)) - -typedef struct _glRotateSelect glRotateSelect; -typedef struct _glRotateSelectClass glRotateSelectClass; - -struct _glRotateSelect { - GtkHBox parent_widget; - - GtkWidget *rotate_check; - - GtkWidget *canvas; - - glTemplate *template; -}; - -struct _glRotateSelectClass { - GtkHBoxClass parent_class; - - void (*changed) (glRotateSelect * rotate_select, gpointer user_data); -}; - -extern guint gl_rotate_select_get_type (void); - -extern GtkWidget *gl_rotate_select_new (void); - -extern gboolean gl_rotate_select_get_state (glRotateSelect * rotate_select); - -extern void gl_rotate_select_set_state (glRotateSelect * rotate_select, - gboolean state); - -extern void gl_rotate_select_set_template_name (glRotateSelect * rotate_select, - gchar * name); - -#endif diff --git a/glabels1/src/splash.c b/glabels1/src/splash.c deleted file mode 100644 index 92bb9aaa..00000000 --- a/glabels1/src/splash.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * splash.c: Splash screen module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 "config.h" - -#include - -#include "debug.h" -#include "splash.h" - -#ifdef PACKAGE_DATA_DIR -#define SPLASH_PIXMAP (PACKAGE_DATA_DIR "/pixmaps/glabels/glabels-logo.png") -#else -#define SPLASH_PIXMAP gnome_pixmap_file("glabels/glabels-logo.png") -#endif - -#define SPLASH_TIMEOUT 2000 - -static GtkWidget *splash = NULL; - -static gint splash_timeout (gpointer not_used); - - -/***************************************************************************/ -/* Create splash screen. */ -/***************************************************************************/ -void -gl_splash (void) -{ - GtkWidget *wpixmap, *wvbox, *whbox, *wframe1, *wframe2; - gchar *label; - - if (splash) - return; - - splash = gtk_window_new (GTK_WINDOW_POPUP); - gtk_window_set_position (GTK_WINDOW (splash), GTK_WIN_POS_CENTER); - - wframe1 = gtk_frame_new (NULL); - gtk_frame_set_shadow_type (GTK_FRAME (wframe1), GTK_SHADOW_OUT); - wframe2 = gtk_frame_new (NULL); - - wvbox = gtk_vbox_new (FALSE, 5); - gtk_container_set_border_width (GTK_CONTAINER (wvbox), 2); - - whbox = gtk_hbox_new (FALSE, 5); - - if (!g_file_exists (SPLASH_PIXMAP)) { - WARN ("Could not find %s", SPLASH_PIXMAP); - } - wpixmap = gnome_pixmap_new_from_file (SPLASH_PIXMAP); - if (!wpixmap) { - WARN ("can't find splash pixmap"); - gtk_widget_destroy (splash); - return; - } - - gtk_container_add (GTK_CONTAINER (splash), wframe1); - gtk_container_add (GTK_CONTAINER (wframe1), wframe2); - gtk_container_add (GTK_CONTAINER (wframe2), wvbox); - - gtk_box_pack_start (GTK_BOX (wvbox), wpixmap, TRUE, TRUE, 0); - - label = g_strdup_printf ("Version %s", VERSION); - gtk_box_pack_start (GTK_BOX (wvbox), - gtk_label_new (label), TRUE, TRUE, 0); - g_free (label); - - gtk_widget_show_all (splash); - - gtk_timeout_add (SPLASH_TIMEOUT, splash_timeout, NULL); - - while (gtk_events_pending ()) { - gtk_main_iteration (); - } -} - -/*-------------------------------------------------------------------------*/ -/* PRIVATE. Callback to tear-down splash screen once timer has expired. */ -/*-------------------------------------------------------------------------*/ -static gint -splash_timeout (gpointer not_used) -{ - if (splash) { - gtk_widget_destroy (splash); - splash = NULL; - } - - return FALSE; -} - diff --git a/glabels1/src/splash.h b/glabels1/src/splash.h deleted file mode 100644 index 25cd5b66..00000000 --- a/glabels1/src/splash.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * splash.c: Splash screen module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __SPLASH_H__ -#define __SPLASH_H__ - -void gl_splash (void); - -#endif diff --git a/glabels1/src/stock.c b/glabels1/src/stock.c deleted file mode 100644 index f3523001..00000000 --- a/glabels1/src/stock.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * stock.h: Stock image module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 -#include -#include "stock.h" -#include "pixmaps/arrow.xpm" -#include "pixmaps/text.xpm" -#include "pixmaps/line.xpm" -#include "pixmaps/box.xpm" -#include "pixmaps/ellipse.xpm" -#include "pixmaps/image.xpm" -#include "pixmaps/barcode.xpm" -#include "pixmaps/zoomin.xpm" -#include "pixmaps/zoomout.xpm" -#include "pixmaps/zoom1to1.xpm" -#include "pixmaps/merge.xpm" - -void -gl_stock_init (void) -{ - static GnomeStockPixmapEntry entries[11]; - - entries[0].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[0].data.width = 24; - entries[0].data.height = 24; - entries[0].data.xpm_data = arrow_xpm; - - entries[1].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[1].data.width = 24; - entries[1].data.height = 24; - entries[1].data.xpm_data = text_xpm; - - entries[2].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[2].data.width = 24; - entries[2].data.height = 24; - entries[2].data.xpm_data = line_xpm; - - entries[3].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[3].data.width = 24; - entries[3].data.height = 24; - entries[3].data.xpm_data = box_xpm; - - entries[4].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[4].data.width = 24; - entries[4].data.height = 24; - entries[4].data.xpm_data = ellipse_xpm; - - entries[5].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[5].data.width = 24; - entries[5].data.height = 24; - entries[5].data.xpm_data = image_xpm; - - entries[6].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[6].data.width = 24; - entries[6].data.height = 24; - entries[6].data.xpm_data = barcode_xpm; - - entries[7].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[7].data.width = 24; - entries[7].data.height = 24; - entries[7].data.xpm_data = zoomin_xpm; - - entries[8].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[8].data.width = 24; - entries[8].data.height = 24; - entries[8].data.xpm_data = zoomout_xpm; - - entries[9].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[9].data.width = 24; - entries[9].data.height = 24; - entries[9].data.xpm_data = zoom1to1_xpm; - - entries[10].data.type = GNOME_STOCK_PIXMAP_TYPE_DATA; - entries[10].data.width = 24; - entries[10].data.height = 24; - entries[10].data.xpm_data = merge_xpm; - - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_ARROW, - GNOME_STOCK_PIXMAP_REGULAR, &entries[0]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_TEXT, - GNOME_STOCK_PIXMAP_REGULAR, &entries[1]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_LINE, - GNOME_STOCK_PIXMAP_REGULAR, &entries[2]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_BOX, - GNOME_STOCK_PIXMAP_REGULAR, &entries[3]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_ELLIPSE, - GNOME_STOCK_PIXMAP_REGULAR, &entries[4]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_IMAGE, - GNOME_STOCK_PIXMAP_REGULAR, &entries[5]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_BARCODE, - GNOME_STOCK_PIXMAP_REGULAR, &entries[6]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_ZOOMIN, - GNOME_STOCK_PIXMAP_REGULAR, &entries[7]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_ZOOMOUT, - GNOME_STOCK_PIXMAP_REGULAR, &entries[8]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_ZOOM1TO1, - GNOME_STOCK_PIXMAP_REGULAR, &entries[9]); - gnome_stock_pixmap_register (GL_STOCK_PIXMAP_MERGE, - GNOME_STOCK_PIXMAP_REGULAR, &entries[10]); - -} diff --git a/glabels1/src/stock.h b/glabels1/src/stock.h deleted file mode 100644 index 4b2b20c6..00000000 --- a/glabels1/src/stock.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * stock.h: Stock image module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __STOCK_H__ -#define __STOCK_H__ - -/* Stock names */ - -#define GL_STOCK_PIXMAP_ARROW "GL_stock_arrow" -#define GL_STOCK_PIXMAP_TEXT "GL_stock_text" -#define GL_STOCK_PIXMAP_LINE "GL_stock_line" -#define GL_STOCK_PIXMAP_BOX "GL_stock_box" -#define GL_STOCK_PIXMAP_ELLIPSE "GL_stock_ellipse" -#define GL_STOCK_PIXMAP_IMAGE "GL_stock_image" -#define GL_STOCK_PIXMAP_BARCODE "GL_stock_barcode" -#define GL_STOCK_PIXMAP_ZOOMIN "GL_stock_zoomin" -#define GL_STOCK_PIXMAP_ZOOMOUT "GL_stock_zoomout" -#define GL_STOCK_PIXMAP_ZOOM1TO1 "GL_stock_zoom1to1" -#define GL_STOCK_PIXMAP_MERGE "GL_stock_merge" - -void gl_stock_init (void); - -#endif diff --git a/glabels1/src/template.c b/glabels1/src/template.c deleted file mode 100644 index aae0a896..00000000 --- a/glabels1/src/template.c +++ /dev/null @@ -1,584 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * template.c: template module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include -#include -#include -#include -#include - - -#include "template.h" - -#include "debug.h" - -#ifdef PACKAGE_DATA_DIR -#define GL_DATA_DIR (PACKAGE_DATA_DIR G_DIR_SEPARATOR_S "glabels") -#else -#define GL_DATA_DIR gnome_datadir_file("glabels") -#endif - -/*===========================================*/ -/* Private types */ -/*===========================================*/ - -/*===========================================*/ -/* Private globals */ -/*===========================================*/ - -static GList *templates = NULL; - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ -static GList *read_templates (void); - -static gchar *get_home_data_dir (void); -static GList *read_template_files_from_dir (GList * templates, - const gchar * dirname); -static GList *read_templates_from_file (GList * templates, - gchar * xml_filename); - -static void xml_parse_label (xmlNodePtr label_node, glTemplate * template); -static void xml_parse_layout (xmlNodePtr layout_node, glTemplate * template); -static void xml_parse_alias (xmlNodePtr alias_node, glTemplate * template); - -static void xml_add_label (glTemplate *template, xmlNodePtr root, xmlNsPtr ns); -static void xml_add_layout (glTemplate *template, xmlNodePtr root, xmlNsPtr ns); -static void xml_add_alias (gchar *name, xmlNodePtr root, xmlNsPtr ns); - -/*****************************************************************************/ -/* Initialize module. */ -/*****************************************************************************/ -void -gl_template_init (void) -{ - templates = read_templates (); -} - -/*****************************************************************************/ -/* Get a list of valid template names for given page size */ -/*****************************************************************************/ -GList * -gl_template_get_name_list (const gchar * page_size) -{ - GList *p_tmplt, *p_name; - glTemplate *template; - gchar *str; - GList *names = NULL; - - for (p_tmplt = templates; p_tmplt != NULL; p_tmplt = p_tmplt->next) { - template = (glTemplate *) p_tmplt->data; - if (g_strcasecmp (page_size, template->page_size) == 0) { - for (p_name = template->name; p_name != NULL; - p_name = p_name->next) { - str = g_strdup_printf("%s: %s", - (gchar *) p_name->data, - template->description); - names = g_list_insert_sorted (names, str, - (GCompareFunc)g_strcasecmp); - } - } - } - - return names; -} - -/*****************************************************************************/ -/* Free a list of template names. */ -/*****************************************************************************/ -void -gl_template_free_name_list (GList ** names) -{ - GList *p_name; - - for (p_name = *names; p_name != NULL; p_name = p_name->next) { - g_free (p_name->data); - p_name->data = NULL; - } - - g_list_free (*names); - *names = NULL; -} - -/*****************************************************************************/ -/* Return a template structure from a name. */ -/*****************************************************************************/ -glTemplate * -gl_template_from_name (const gchar * name) -{ - GList *p_tmplt, *p_name; - glTemplate *template; - gchar **split_name; - - if (name == NULL) { - /* If no name, return first template as a default */ - return (glTemplate *) templates->data; - } - - split_name = g_strsplit (name, ":", 2); - - for (p_tmplt = templates; p_tmplt != NULL; p_tmplt = p_tmplt->next) { - template = (glTemplate *) p_tmplt->data; - for (p_name = template->name; p_name != NULL; - p_name = p_name->next) { - if (g_strcasecmp (p_name->data, split_name[0]) == 0) { - g_strfreev (split_name); - return gl_template_copy(template); - } - } - } - - g_strfreev (split_name); - - return NULL; -} - -/*****************************************************************************/ -/* Copy a template. */ -/*****************************************************************************/ -glTemplate *gl_template_copy (const glTemplate *orig_template) -{ - glTemplate *template; - GList *p; - - template = g_new0 (glTemplate,1); - - /* Shallow copy first */ - *template = *orig_template; - - /* Now the deep stuff */ - template->name = NULL; - for ( p=orig_template->name; p != NULL; p=p->next ) { - template->name = g_list_append (template->name, - g_strdup (p->data)); - } - template->description = g_strdup (orig_template->description); - template->page_size = g_strdup (orig_template->page_size); - - return template; -} - -/*****************************************************************************/ -/* Free up a template. */ -/*****************************************************************************/ -void gl_template_free (glTemplate **template) -{ - GList *p; - - for ( p=(*template)->name; p != NULL; p=p->next ) { - g_free (p->data); - p->data = NULL; - } - g_list_free ((*template)->name); - (*template)->name = NULL; - - g_free ((*template)->description); - (*template)->description = NULL; - - g_free ((*template)->page_size); - (*template)->page_size = NULL; - - g_free (*template); - *template = NULL; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Read templates from various files. */ -/*--------------------------------------------------------------------------*/ -static GList * -read_templates (void) -{ - gchar *home_data_dir = get_home_data_dir (); - GList *templates = NULL; - - LIBXML_TEST_VERSION; - - templates = read_template_files_from_dir (templates, GL_DATA_DIR); - templates = read_template_files_from_dir (templates, home_data_dir); - - g_free (home_data_dir); - - if (templates == NULL) { - WARN (_("No template files found!")); - } - - return templates; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. get '~/.glabels' directory path. */ -/*--------------------------------------------------------------------------*/ -static gchar * -get_home_data_dir (void) -{ - gchar *dir = gnome_util_prepend_user_home (".glabels"); - - /* Try to create ~/.glabels directory. If it exists, no problem. */ - mkdir (dir, 0775); - - return dir; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Read all template files from given directory. Append to list. */ -/*--------------------------------------------------------------------------*/ -static GList * -read_template_files_from_dir (GList * templates, - const gchar * dirname) -{ - DIR *dp; - struct dirent *d_entry; - gchar *filename, *extension; - gchar *full_filename = NULL; - - if (dirname == NULL) - return templates; - - dp = opendir (dirname); - if (dp == NULL) - return templates; - - while ((d_entry = readdir (dp)) != NULL) { - - filename = d_entry->d_name; - extension = strrchr (filename, '.'); - - if (extension != NULL) { - - if (strcasecmp (extension, ".template") == 0) { - - full_filename = - g_concat_dir_and_file (dirname, filename); - templates = - read_templates_from_file (templates, - full_filename); - g_free (full_filename); - - } - - } - - } - - closedir (dp); - - return templates; -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Read templates from template file. */ -/*--------------------------------------------------------------------------*/ -static GList * -read_templates_from_file (GList * templates, - gchar * xml_filename) -{ - xmlDocPtr doc; - xmlNodePtr root, node; - glTemplate *template; - - doc = xmlParseFile (xml_filename); - if (!doc) { - WARN ("\"%s\" is not a glabels template file (not XML)", - xml_filename); - return templates; - } - - root = xmlDocGetRootElement (doc); - if (!root || !root->name) { - WARN ("\"%s\" is not a glabels template file (no root node)", - xml_filename); - xmlFreeDoc (doc); - return templates; - } - if (g_strcasecmp (root->name, "glabels-templates") != 0) { - WARN ("\"%s\" is not a glabels template file (wrong root node)", - xml_filename); - xmlFreeDoc (doc); - return templates; - } - - for (node = root->xmlChildrenNode; node != NULL; node = node->next) { - - if (g_strcasecmp (node->name, "Sheet") == 0) { - template = g_new0 (glTemplate, 1); - gl_template_xml_parse_sheet (template, node); - templates = g_list_append (templates, template); - } else { - if (g_strcasecmp (node->name, "text") != 0) { - WARN ("bad node = \"%s\"", node->name); - } - } - } - - xmlFreeDoc (doc); - - return templates; -} - -/*****************************************************************************/ -/* Parse XML template Node. */ -/*****************************************************************************/ -void -gl_template_xml_parse_sheet (glTemplate * template, - xmlNodePtr sheet_node) -{ - xmlNodePtr node; - - template->name = g_list_append (template->name, - xmlGetProp (sheet_node, "name")); - template->page_size = xmlGetProp (sheet_node, "size"); - template->description = xmlGetProp (sheet_node, "description"); - - for (node = sheet_node->xmlChildrenNode; node != NULL; - node = node->next) { - if (g_strcasecmp (node->name, "Label") == 0) { - xml_parse_label (node, template); - } else if (g_strcasecmp (node->name, "Alias") == 0) { - xml_parse_alias (node, template); - } else { - if (g_strcasecmp (node->name, "text") != 0) { - WARN ("bad node = \"%s\"", node->name); - } - } - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Sheet->Label Node. */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_label (xmlNodePtr label_node, - glTemplate * template) -{ - xmlNodePtr node; - gchar *style; - - style = xmlGetProp (label_node, "style"); - if (g_strcasecmp (style, "rectangle") == 0) { - template->style = GL_TEMPLATE_STYLE_RECT; - } else if (g_strcasecmp (style, "round") == 0) { - template->style = GL_TEMPLATE_STYLE_ROUND; - } else if (g_strcasecmp (style, "cd") == 0) { - template->style = GL_TEMPLATE_STYLE_CD; - } else { - WARN ("Unknown label style in template"); - } - - if (template->style == GL_TEMPLATE_STYLE_RECT) { - template->label_width = - g_strtod (xmlGetProp (label_node, "width"), NULL); - template->label_height = - g_strtod (xmlGetProp (label_node, "height"), NULL); - template->label_round = - g_strtod (xmlGetProp (label_node, "round"), NULL); - } else if (template->style == GL_TEMPLATE_STYLE_ROUND) { - template->label_radius = - g_strtod (xmlGetProp (label_node, "radius"), NULL); - template->label_width = 2.0 * template->label_radius; - template->label_height = 2.0 * template->label_radius; - } else if (template->style == GL_TEMPLATE_STYLE_CD) { - template->label_radius = - g_strtod (xmlGetProp (label_node, "radius"), NULL); - template->label_hole = - g_strtod (xmlGetProp (label_node, "hole"), NULL); - template->label_width = 2.0 * template->label_radius; - template->label_height = 2.0 * template->label_radius; - } - - template->label_margin = - g_strtod (xmlGetProp (label_node, "margin"), NULL); - - for (node = label_node->xmlChildrenNode; node != NULL; - node = node->next) { - if (g_strcasecmp (node->name, "Layout") == 0) { - xml_parse_layout (node, template); - } else { - if (g_strcasecmp (node->name, "text") != 0) { - WARN ("bad node = \"%s\"", node->name); - } - } - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Sheet->Label->Layout Node. */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_layout (xmlNodePtr layout_node, - glTemplate * template) -{ - xmlNodePtr node; - - sscanf (xmlGetProp (layout_node, "nx"), "%d", &(template->nx)); - sscanf (xmlGetProp (layout_node, "ny"), "%d", &(template->ny)); - template->x0 = g_strtod (xmlGetProp (layout_node, "x0"), NULL); - template->y0 = g_strtod (xmlGetProp (layout_node, "y0"), NULL); - template->dx = g_strtod (xmlGetProp (layout_node, "dx"), NULL); - template->dy = g_strtod (xmlGetProp (layout_node, "dy"), NULL); - - for (node = layout_node->xmlChildrenNode; node != NULL; - node = node->next) { - if (g_strcasecmp (node->name, "text") != 0) { - WARN ("bad node = \"%s\"", node->name); - } - } - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Parse XML Sheet->Alias Node. */ -/*--------------------------------------------------------------------------*/ -static void -xml_parse_alias (xmlNodePtr alias_node, - glTemplate * template) -{ - template->name = g_list_append (template->name, - xmlGetProp (alias_node, "name")); -} - -/****************************************************************************/ -/* Add XML Template Node */ -/****************************************************************************/ -void -gl_template_xml_add_sheet (glTemplate * template, - xmlNodePtr root, - xmlNsPtr ns) -{ - xmlNodePtr node; - GList *p; - - node = xmlNewChild (root, ns, "Sheet", NULL); - - xmlSetProp (node, "name", template->name->data); - xmlSetProp (node, "size", template->page_size); - xmlSetProp (node, "description", template->description); - - xml_add_label (template, node, ns); - - for ( p=template->name->next; p != NULL; p=p->next ) { - xml_add_alias( p->data, node, ns ); - } -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Sheet->Label Node. */ -/*--------------------------------------------------------------------------*/ -static void -xml_add_label (glTemplate *template, - xmlNodePtr root, - xmlNsPtr ns) -{ - xmlNodePtr node; - gchar *string; - - node = xmlNewChild(root, ns, "Label", NULL); - string = g_strdup_printf ("%g", template->label_margin); - xmlSetProp (node, "margin", string); - g_free (string); - switch (template->style) { - case GL_TEMPLATE_STYLE_RECT: - xmlSetProp (node, "style", "rectangle"); - string = g_strdup_printf ("%g", template->label_width); - xmlSetProp (node, "width", string); - g_free (string); - string = g_strdup_printf ("%g", template->label_height); - xmlSetProp (node, "height", string); - g_free (string); - string = g_strdup_printf ("%g", template->label_round); - xmlSetProp (node, "round", string); - g_free (string); - break; - case GL_TEMPLATE_STYLE_ROUND: - xmlSetProp (node, "style", "round"); - string = g_strdup_printf ("%g", template->label_radius); - xmlSetProp (node, "radius", string); - g_free (string); - break; - case GL_TEMPLATE_STYLE_CD: - xmlSetProp (node, "style", "cd"); - string = g_strdup_printf ("%g", template->label_radius); - xmlSetProp (node, "radius", string); - g_free (string); - string = g_strdup_printf ("%g", template->label_hole); - xmlSetProp (node, "hole", string); - g_free (string); - break; - default: - WARN ("Unknown label style"); - break; - } - - xml_add_layout (template, node, ns); - -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Sheet->Label->Layout Node. */ -/*--------------------------------------------------------------------------*/ -static void -xml_add_layout (glTemplate *template, - xmlNodePtr root, - xmlNsPtr ns) -{ - xmlNodePtr node; - gchar *string; - - node = xmlNewChild(root, ns, "Layout", NULL); - string = g_strdup_printf ("%d", template->nx); - xmlSetProp (node, "nx", string); - g_free (string); - string = g_strdup_printf ("%d", template->ny); - xmlSetProp (node, "ny", string); - g_free (string); - string = g_strdup_printf ("%g", template->x0); - xmlSetProp (node, "x0", string); - g_free (string); - string = g_strdup_printf ("%g", template->y0); - xmlSetProp (node, "y0", string); - g_free (string); - string = g_strdup_printf ("%g", template->dx); - xmlSetProp (node, "dx", string); - g_free (string); - string = g_strdup_printf ("%g", template->dy); - xmlSetProp (node, "dy", string); - g_free (string); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Add XML Sheet->Alias Node. */ -/*--------------------------------------------------------------------------*/ -static void -xml_add_alias (gchar *name, - xmlNodePtr root, - xmlNsPtr ns) -{ - xmlNodePtr node; - - node = xmlNewChild (root, ns, "Alias", NULL); - xmlSetProp (node, "name", name); -} - diff --git a/glabels1/src/template.h b/glabels1/src/template.h deleted file mode 100644 index 9e72c6bf..00000000 --- a/glabels1/src/template.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * template.h: template module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ - -#ifndef __TEMPLATE_H__ -#define __TEMPLATE_H__ - -#include - -/* LibXML */ -#include -#include - -typedef enum { - GL_TEMPLATE_STYLE_RECT, - GL_TEMPLATE_STYLE_ROUND, - GL_TEMPLATE_STYLE_CD, -} glTemplateStyle; - -typedef struct { - GList *name; - gchar *description; - gchar *page_size; - glTemplateStyle style; - - /* Suggested margin */ - gdouble label_margin; - - /* Simple and rounded rectangles. */ - gdouble label_width, label_height, label_round; - - /* CD/DVD labels */ - gdouble label_radius, label_hole; - - /* Layout */ - gint nx, ny; - gdouble x0, y0, dx, dy; -} glTemplate; - -extern void gl_template_init (void); - -extern GList *gl_template_get_name_list (const gchar * page_size); -extern void gl_template_free_name_list (GList ** names); - -extern glTemplate *gl_template_from_name (const gchar * name); - -extern glTemplate *gl_template_copy(const glTemplate *orig_template); -extern void gl_template_free(glTemplate **template); - -extern void gl_template_xml_parse_sheet (glTemplate * template, - xmlNodePtr sheet_node); -extern void gl_template_xml_add_sheet (glTemplate * template, - xmlNodePtr root, xmlNsPtr ns); -#endif diff --git a/glabels1/src/text_node.c b/glabels1/src/text_node.c deleted file mode 100644 index c32ab723..00000000 --- a/glabels1/src/text_node.c +++ /dev/null @@ -1,225 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * text_node.c: text node module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "text_node.h" - -#include "merge.h" - -#include "debug.h" - -/*===========================================*/ -/* Local function prototypes */ -/*===========================================*/ - -static glTextNode *extract_text_node (gchar * text, gint * n); - - -/*--------------------------------------------------------------------------*/ -/* Expand single node into representative string. */ -/*--------------------------------------------------------------------------*/ -gchar * -gl_text_node_expand (glTextNode * text_node, - glMergeRecord * record) -{ - gchar *text; - - if (text_node->field_flag) { - text = gl_merge_eval_key (text_node->data, record); - if (text != NULL) { - return text; - } else { - return g_strdup_printf ("FIELD{%s}", text_node->data); - } - } else { - return g_strdup (text_node->data); - } -} - -/*--------------------------------------------------------------------------*/ -/* Create a single text node from given text. */ -/*--------------------------------------------------------------------------*/ -glTextNode * -gl_text_node_new_from_text (gchar * text) -{ - gint n; - - return extract_text_node (text, &n); -} - -/*--------------------------------------------------------------------------*/ -/* PRIVATE. Create a single text node from given text. n = characters used */ -/*--------------------------------------------------------------------------*/ -static glTextNode * -extract_text_node (gchar * text, - gint * n) -{ - glTextNode *text_node; - gchar *p; - gint m; - - text_node = g_new0 (glTextNode, 1); - - if (strncmp (text, "FIELD{", strlen ("FIELD{")) == 0) { - /* We are at the beginning of a "FIELD" node */ - text_node->field_flag = TRUE; - *n = strlen ("FIELD{"); - text += *n; - for (p = text, m = 0; *p != 0; p++, m++, (*n)++) { - if (*p == '}') { - (*n)++; - break; - } - } - text_node->data = g_strndup (text, m); - } else { - /* We are at the beginning of a literal node */ - text_node->field_flag = FALSE; - for (p = text, *n = 0; *p != 0; p++, (*n)++) { - if (strncmp (p, "FIELD{", strlen ("FIELD{")) == 0) - break; - if (*p == '\n') - break; - } - text_node->data = g_strndup (text, *n); - } - - return text_node; -} - -/*--------------------------------------------------------------------------*/ -/* Free a single text node. */ -/*--------------------------------------------------------------------------*/ -void -gl_text_node_free (glTextNode ** text_node) -{ - g_free ((*text_node)->data); - (*text_node)->data = NULL; - g_free (*text_node); - *text_node = NULL; -} - -/*--------------------------------------------------------------------------*/ -/* Expand text lines into single string. */ -/*--------------------------------------------------------------------------*/ -gchar * -gl_text_node_lines_expand (GList * lines, - glMergeRecord * record) -{ - GList *p_line, *p_node; - glTextNode *text_node; - gchar *text, *old_text, *expanded_node; - - text = g_strdup (""); /* prime pointer for concatenation */ - for (p_line = lines; p_line != NULL; p_line = p_line->next) { - for (p_node = (GList *) p_line->data; p_node != NULL; - p_node = p_node->next) { - text_node = (glTextNode *) p_node->data; - old_text = text; - expanded_node = gl_text_node_expand (text_node, record); - text = g_strconcat (text, expanded_node, NULL); - g_free (old_text); - g_free (expanded_node); - } - old_text = text; - text = g_strconcat (text, "\n", NULL); - g_free (old_text); - } - - return text; -} - -/*--------------------------------------------------------------------------*/ -/* Parse a string back into text lines. */ -/*--------------------------------------------------------------------------*/ -GList * -gl_text_node_lines_new_from_text (gchar * text) -{ - GList *lines, *nodes; - glTextNode *text_node; - gchar *p; - gint n; - - lines = NULL; - nodes = NULL; - for (p = text; *p != 0; p += n) { - if (*p != '\n') { - text_node = extract_text_node (p, &n); - nodes = g_list_append (nodes, text_node); - } else { - n = 1; - lines = g_list_append (lines, nodes); - nodes = NULL; - } - } - if (*(p - 1) != '\n') { - lines = g_list_append (lines, nodes); - } - - return lines; -} - -/*--------------------------------------------------------------------------*/ -/* Free a list of text lines. */ -/*--------------------------------------------------------------------------*/ -void -gl_text_node_lines_free (GList ** lines) -{ - GList *p_line, *p_node; - - for (p_line = *lines; p_line != NULL; p_line = p_line->next) { - for (p_node = (GList *) p_line->data; p_node != NULL; - p_node = p_node->next) { - gl_text_node_free ( (glTextNode **) &(p_node->data) ); - } - g_list_free ((GList *) p_line->data); - p_line->data = NULL; - } - - g_list_free (*lines); - *lines = NULL; -} - -/****************************************************************************/ -/* For debugging: descend and print lines list. */ -/****************************************************************************/ -void -gl_text_node_lines_print (GList * lines ) -{ - GList *p_line, *p_node; - glTextNode *text_node; - gint i_line, i_node; - - for (p_line=lines, i_line=0; p_line != NULL; p_line=p_line->next, i_line++) { - for (p_node = (GList *) p_line->data, i_node=0; p_node != NULL; - p_node = p_node->next, i_node++) { - text_node = (glTextNode *) p_node->data; - g_print( "LINE[%d], NODE[%d] = { %d, \"%s\" }\n", - i_line, i_node, - text_node->field_flag, text_node->data ); - - } - } - -} - diff --git a/glabels1/src/text_node.h b/glabels1/src/text_node.h deleted file mode 100644 index 97adbf0c..00000000 --- a/glabels1/src/text_node.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * text_node.h: text node module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __TEXT_NODE_H__ -#define __TEXT_NODE_H__ - -#include -#include "merge.h" - -typedef struct { - gboolean field_flag; - gchar *data; -} glTextNode; - -extern gchar *gl_text_node_expand (glTextNode * text_node, - glMergeRecord * record); -extern glTextNode *gl_text_node_new_from_text (gchar * text); -extern void gl_text_node_free (glTextNode ** text_node); - -extern gchar *gl_text_node_lines_expand (GList * lines, - glMergeRecord * record); -extern GList *gl_text_node_lines_new_from_text (gchar * text); -extern void gl_text_node_lines_free (GList ** lines); - -/* debug function */ -extern void gl_text_node_lines_print (GList * lines ); - -#endif diff --git a/glabels1/src/tools.c b/glabels1/src/tools.c deleted file mode 100644 index ede7625e..00000000 --- a/glabels1/src/tools.c +++ /dev/null @@ -1,221 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * tools.c: toolbar module - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - -#include "tools.h" -#include "mdi.h" -#include "display.h" -#include "merge_properties.h" - -/*===========================================*/ -/* Private types. */ -/*===========================================*/ - -/*===========================================*/ -/* Private globals. */ -/*===========================================*/ - -/*===========================================*/ -/* Private function prototypes. */ -/*===========================================*/ - - - -/*****************************************************************************/ -/* arrow callback. */ -/*****************************************************************************/ -void -gl_tools_arrow_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_arrow_mode (display); - } -} - -/*****************************************************************************/ -/* text callback. */ -/*****************************************************************************/ -void -gl_tools_text_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_object_create_mode (display, GL_LABEL_OBJECT_TEXT); - } -} - -/*****************************************************************************/ -/* box callback. */ -/*****************************************************************************/ -void -gl_tools_box_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_object_create_mode (display, GL_LABEL_OBJECT_BOX); - } -} - -/*****************************************************************************/ -/* line callback. */ -/*****************************************************************************/ -void -gl_tools_line_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_object_create_mode (display, GL_LABEL_OBJECT_LINE); - } -} - -/*****************************************************************************/ -/* ellipse callback. */ -/*****************************************************************************/ -void -gl_tools_ellipse_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_object_create_mode (display, - GL_LABEL_OBJECT_ELLIPSE); - } -} - -/*****************************************************************************/ -/* image callback. */ -/*****************************************************************************/ -void -gl_tools_image_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_object_create_mode (display, GL_LABEL_OBJECT_IMAGE); - } -} - -/*****************************************************************************/ -/* barcode callback. */ -/*****************************************************************************/ -void -gl_tools_barcode_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_object_create_mode (display, - GL_LABEL_OBJECT_BARCODE); - } -} - -/*****************************************************************************/ -/* zoom in callback. */ -/*****************************************************************************/ -void -gl_tools_zoomin_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_zoom_in (display); - } -} - -/*****************************************************************************/ -/* zoom out callback. */ -/*****************************************************************************/ -void -gl_tools_zoomout_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_zoom_out (display); - } -} - -/*****************************************************************************/ -/* zoom 1:1 callback. */ -/*****************************************************************************/ -void -gl_tools_zoom1to1_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_display_set_zoom (display, 1.0); - } -} - -/*****************************************************************************/ -/* edit merge properties callback. */ -/*****************************************************************************/ -void -gl_tools_merge_properties_cb (GtkWidget * widget, - gpointer data) -{ - GnomeMDIChild *child = gnome_mdi_get_active_child (GNOME_MDI (data)); - glDisplay *display; - - display = gl_mdi_get_display (child); - if (display != NULL) { - gl_merge_properties_dialog (display, child->name); - } -} - diff --git a/glabels1/src/tools.h b/glabels1/src/tools.h deleted file mode 100644 index 814c4dd4..00000000 --- a/glabels1/src/tools.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * tools.h: toolbar module header file - * - * Copyright (C) 2001-2002 Jim Evins . - * - * 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 - */ -#ifndef __TOOLS_H__ -#define __TOOLS_H__ - -#include - -extern void gl_tools_arrow_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_text_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_box_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_line_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_ellipse_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_image_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_barcode_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_zoomin_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_zoomout_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_zoom1to1_cb (GtkWidget * widget, gpointer data); -extern void gl_tools_merge_properties_cb (GtkWidget * widget, gpointer data); - -#endif diff --git a/glabels1/src/util.c b/glabels1/src/util.c deleted file mode 100644 index 9e751102..00000000 --- a/glabels1/src/util.c +++ /dev/null @@ -1,110 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * util.c: various small utility functions - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - -#include -#include -#include - -#include "util.h" - -#define FRAC_DELTA 0.00005 - - -/****************************************************************************/ -/* Append ".glabels" extension to filename if needed. */ -/****************************************************************************/ -gchar * -gl_util_add_extension (const gchar * orig_filename) -{ - gchar *new_filename, *extension; - - extension = strrchr (orig_filename, '.'); - if (extension == NULL) { - new_filename = g_strconcat (orig_filename, ".glabels", NULL); - } else { - if (g_strcasecmp (extension, ".glabels") != 0) { - new_filename = - g_strconcat (orig_filename, ".glabels", NULL); - } else { - new_filename = g_strdup (orig_filename); - } - } - - return new_filename; -} - -/****************************************************************************/ -/* Make sure we have an absolute path to filename. */ -/****************************************************************************/ -gchar * -gl_util_make_absolute (const gchar * filename) -{ - gchar *pwd, *absolute_filename; - - if (g_path_is_absolute (filename)) { - absolute_filename = g_strdup (filename); - } else { - pwd = g_get_current_dir (); - absolute_filename = - g_strjoin (G_DIR_SEPARATOR_S, pwd, filename, NULL); - g_free (pwd); - } - - return absolute_filename; -} - -/****************************************************************************/ -/* Create fractional representation of number, if possible. */ -/****************************************************************************/ -gchar * -gl_util_fraction( gdouble x ) -{ - static gdouble denom[] = { 1., 2., 3., 4., 8., 16., 32., 0. }; - gint i; - gdouble product, remainder; - gint n, d; - - for ( i=0; denom[i] != 0.0; i++ ) { - product = x * denom[i]; - remainder = fabs(product - ((gint)(product+0.5))); - if ( remainder < FRAC_DELTA ) break; - } - - if ( denom[i] == 0.0 ) { - /* None of our denominators work. */ - return g_strdup_printf ("%.5g", x); - } - if ( denom[i] == 1.0 ) { - /* Simple integer. */ - return g_strdup_printf ("%d", (gint)x); - } - n = (gint)( x * denom[i] + 0.5 ); - d = (gint)denom[i]; - if ( n > d ) { - return g_strdup_printf ("%d_%d/%d", (n/d), (n%d), d); - } else { - return g_strdup_printf ("%d/%d", (n%d), d); - } -} - diff --git a/glabels1/src/util.h b/glabels1/src/util.h deleted file mode 100644 index b3e188d5..00000000 --- a/glabels1/src/util.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * (GLABELS) Label and Business Card Creation program for GNOME - * - * util.h: various small utility functions - * - * Copyright (C) 2001 Jim Evins . - * - * 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 - */ - -#ifndef __UTIL_H__ -#define __UTIL_H__ - -#include - -gchar *gl_util_add_extension (const gchar * orig_filename); - -gchar *gl_util_make_absolute (const gchar * filename); - -gchar *gl_util_fraction( gdouble x ); - -#endif /* __UTIL_H__ */ diff --git a/glabels1/stamp-h.in b/glabels1/stamp-h.in deleted file mode 100644 index 9788f702..00000000 --- a/glabels1/stamp-h.in +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/glabels2/barcode-0.98/COPYING b/glabels2/barcode-0.98/COPYING deleted file mode 100644 index a43ea212..00000000 --- a/glabels2/barcode-0.98/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 675 Mass Ave, Cambridge, MA 02139, 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 - - Appendix: 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) 19yy - - 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. - -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) 19yy 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. diff --git a/glabels2/barcode-0.98/ChangeLog b/glabels2/barcode-0.98/ChangeLog deleted file mode 100644 index 024706de..00000000 --- a/glabels2/barcode-0.98/ChangeLog +++ /dev/null @@ -1,460 +0,0 @@ -2002-03-01 Alessandro Rubini - - * library.c (Barcode_Encode): handle bitsets separately, like - in Barcode_Print (otherwise, you might loose NO_CHECKSUM). - - * debian/changelog: moved to 0.98 (but should fix all debian/ stuff) - - * contrib/barcode-for-delphi.tar.gz: new, contributed by Michael Geddes - - * contrib/barcode-for-delphi.tar.gz.README: short info for file above - - * main.c (main): allow "-g" to set size of code in a table as well - -- suggested and initiallt implemented by Joachim Reichelt. - (main): fixed missing "Page: 1 1" in postscript for tables - (main): for tables don't use Encode_and_Print, use a local - unrolled version, so the default margin can be removed and - we avoid problems with negative xoff in the output phase - (first column may be offset, as noted by Karl Magnus Kolstoe) - - * doc/doc.barcode: documented change above. - - * README: removed refernces to systemy.it, I'm no more there - Added link to FreeBSD ports tree and GLabels - Organized as sections with titles - - * contrib/barcode-SVG.tar.gz: new contribution, by David J. Humphreys - - * contrib/barcode-SVG.tar.gz.README: short description of file above - - * contrib/grab-0.0.4.tar.gz: new program, by Tuukka Toivonen. - - * contrib/grab-0.0.4.tar.gz.README: short description of file above - -2002-03-01 Boszormenyi Zoltan - - * barcode.spec: new file - -2002-02-27 Alessandro Rubini - - * bookland/bookland.py: updated to version 0.92 by Judah Milgram - -2001-11-13 Alessandro Rubini - - * README: Added a pointer to the Windows port. - -2001-11-09 Cloyce D. Spradling - - * code128.c (Barcode_128b_verify): prototype fix (unsigned char). - - * ps.c (Barcode_ps_print): the comment for ascii codes must only - be printed if ascii is being printed (benign bug). - -2001-11-06 Christoph Pross - - * pcl.c (Barcode_pcl_print): bugfix: bars were misplaced - -2001-10-16 Nathan D. Holmes - - ====> Version 0.97 released to ftp.systemy.it and ftp.gnu.org - - * code93.c: new file (I modified something as well - Alessandro) - - * doc/doc.barcode (Supported Encodings): added docs for code93 - - * main.c: added code93 names - - * Makefile.in (LIBOBJECTS): added code93.o - - * library.c: added code93 entry points - -2001-10-16 Alessandro Rubini - - * doc/manpager: added (trivial) support for @itemize, added copyright - - * sample.c (main): accept -P to create PCL output - - * doc/doc.barcode (PCL Output): added the section, using text - provided by Andrea Scopece and turning it into texinfo. - Removed also a few extra newlines that made bad man pages - -2001-10-16 Andrea Scopece - - * barcode.h: added BARCODE_OUT_PCL and BARCODE_OUT_PCL_III - - * library.c (Barcode_Print): use BARCODE_OUT_PCL to select pcl_print() - - * Makefile.in (LIBOBJECTS): added pcl.o - - * pcl.c: new file, with PCL output support - -2001-10-16 Alessandro Rubini - - * doc/doc.barcode (Supported Encodings): added documentation for - EAN and UPC with checksum, as coded by mr. Böszörményi (below) - -2001-10-16 Boszormenyi Zoltan - - * ean.c: - - I found that barcode-0.96 does not correctly encodes UPC-E. - This was mainly because in upc_e_to_a() the switch() branches - all ended without "break;". - - Printing UPC-E did not print the leading encoding number and - the trailing UPC-A checksum. Now it does. - - Accept EAN-13 and EAN-8 with and without the checksum. - So always treat 7 and 12 digit sequences as valid EAN codes - and accept 8 and 13 digit sequences as valid EAN codes when - the last digit is the same as the calculated one. - - Accept UPC-A as above (11 or 12 digit sequences.) - - Accepts UPC-E as: - 6 digit sequence: the middle part of the code (leading '0' assumed) - 7 digit sequence: the middle part and either a leading '0' or '1', - or a trailing UPC-A checksum. In that case, leading '0' assumed. - 8 digit sequence: a leading '0' or '1', middle part, checksum - - UPC-A, UPC-E, EAN-13, and EAN-8 may all include - an additional barcode to the right of the main barcode. - - As a 7 or a 12 digit sequence may be ambiguous, please remember - that EAN is checked before UPC if you specified BARCODE_ANY. - -2001-08-20 Alessandro Rubini - - * sample.c (main): added upc-e and ean-8 samples - -2001-08-11 Boszormenyi Zoltan - - * ps.c (Barcode_ps_print): don't output "showpage" in EPS mode - -2001-08-11 Alessandro Rubini - - * README: Changed host names, added barcode-commit list. - -2000-11-29 Alessandro Rubini - - * doc/doc.barcode (The Field List): 1pt == 0.352mm, not 0.0352 - (thanks to Stephen Irven for reporting) - -2000-11-09 Alessandro Rubini - - ====> Version 0.96 released to ftp.systemy.it and ftp.gnu.org - - * doc/Makefile.in ($(TARGET).html): fixed bug introduced on Sep 08 - - * doc/doc.barcode (top): correctly deal with "makeinfo --html" - -2000-11-08 Alessandro Rubini - - * README: new network pointers added - - * codabar.c (Barcode_cbr_encode): don't print ascii text for the - checksum. - - * doc/doc.barcode (The Intermediate Representaion): new section - Documented the new encodings by Leonid. - Promoted two sections to chapters - Added Leonid in the AUTHORS section of the manpage. - - * Makefile.in: don't remove docs in distclean, as the distribution - now includes the docs - -2000-11-07 Alessandro Rubini - - * Makefile.in (clean): don't remove docs, do that only in distclean - - * doc/Makefile.in: a new life for the former Makefile (to build - with both gmake and pmake with features added on 2000-09-08) - - * configure.in: use $MAKE in checking for gmake if set - (to allow testing with BSD make) - Check if makeinfo can manage html, used for doc/Makefile.in - -2000-11-07 Leonid A. Broukhis - - * code128.c (Barcode_encode_as): fixed a bug that prevented F - symbols to be correctly encoded. - - * plessey.c: new file, for Plessey encoding. - - * msi.c: new file, for MSI encoding. - - * codabar.c: new file, for CodaBar encoding. - - * code128.c (Barcode_128raw_encode): new encoding - (Barcode_128raw_verify): checker for new encoding - - * barcode.h, library.c, main.c: added code128raw, codabar, - MSI and Plessey - -2000-11-07 Hans Schou - - * contrib/barcodeps-0.1.tgz: new file, sent to Alessandro on Oct 7 - -2000-10-10 Alessandro Rubini - - * doc/manpager: use gsub instead of gensub, even though it may - leas to problems with some input. This achieves compatibility - with the original awk, so gawk is not needed any more - -2000-10-02 Alessandro Rubini - - * ps.c (Barcode_ps_print): add a backslash in front of '(' too. - Suggested by H Y . - (Barcode_ps_print): use ps arrays to get compact (and prettier) - PostScript output. Suggested by Hans Schou . - - * main.c (get_geometry): accept "+offset+offset" to keep default size. - Suggested by Godmar Back . - -2000-09-16 Alessandro Rubini - - * ps.c (Barcode_ps_print): use "half text height" instead of - "two text heights" as minimum bar height. Suggested by - Oliver Vecernik . - -2000-09-14 Alessandro Rubini - - * barcode.h: added the standard ``extern "C"'' stuff for C++ - (bug reported by Dany Pardo ) - -2000-09-08 Andrea Ferraris - - * doc/Makefile: added support for pdf and html via makeinfo - - * doc/doc.barcode: added a missing trailing dot in an xref - -2000-08-28 Alessandro Rubini - - * i25.c (Barcode_i25_encode): fixed checksum calculation - (thanks to Hans Schou for reporting) - -2000-05-19 Alessandro Rubini - - ====> Version 0.95.1 released to ftp.prosa.it - - * code128.c (Barcode_128_make_array): use code C if encoding 2 digits - -2000-05-08 Alessandro Rubini - - * cmdline.c (commandline_errormsg): removed "?:" gcc extension - - * configure.in: added checks for unistd.h and strcasecmp, as - windows doesn't have them (thanks Marten Karl) - -2000-04-21 Alessandro Rubini - - * doc/Makefile: modified to build with both gmake and pmake - - * Makefile: modified to build with both gmake and pmake - -2000-04-20 Alessandro Rubini - - * Makefile.in (.depend): removed gmake-specific features. - Thanks to Jukka A. Ukkonen for reporting. - - * configure.in: detect gmake and avoid its features if not there - - * ps.c (Barcode_ps_print): fix: codes with (relatively) short bars - were enlarged in height instead of reduced in width (also - the enlarging was wrong). Thanks to Rob Seace for reporting. - -2000-04-09 Alessandro Rubini - - * code128.c (Barcode_128_encode): removed extra messages to stderr, - forgot in the code when I finished code128 support - - * doc/doc.barcode: bugfix: in the description of geometry, the unit - of measure is configurable - -2000-02-03 Alessandro Rubini - -====> Version 0.95 released to ftp.prosa.it and ftp.gnu.org - -2000-01-26 Alessandro Rubini - - * code128.c (Barcode_128_encode): new encoding: full-featured code128 - - * README: added reference to original ftp site - -2000-01-05 Alessandro Rubini - - * main.c (get_page_geometry): avoid using snprintf(), missing in HP/UX - - * code39.c (Barcode_39_verify): added missing parens (a syntax error, - but only apparent where islower() is not a macro). Thanks to - Alexandre Oliva for finding it out. - -2000-01-04 Alessandro Rubini - - * doc/doc.barcode (The API): removed spurious "flags" argument - from description of Barcode_Encode_and_Print(). - Thanks to Willy Wittesaele for noting the error. - -1999-12-24 Alessandro Rubini - - * main.c (get_geometry): fixed the y margin (thanks to Steve Kunath) - -====> Version 0.94 released to ftp.prosa.it and ftp.gnu.org - -1999-10-24 Alessandro Rubini - - * INSTALL: added instructions to install on a Debian GNU/Linux system - - * debian/*: edited information for proper Debian support - - * debian/rules (binary-arch): new file, from "deb-make" - - * Makefile.in (install): added "-m 0644" to install non-executables - - * code128.c (Barcode_128b_encode): fixed checksum calculation. - -====> Version 0.93 released to ftp.prosa.it and ftp.gnu.org - -1999-09-26 Alessandro Rubini - - * doc/doc.barcode: fixed the rendering of complex options (-g and -t) - Removed extra "table of contents" heading in the ps output - Changed attribution on cover page - - * main.c (get_table and others): be more specific in error msgs - (get_page_geometry): numeric specification is according to "-u" - (get_table): accept unsymmetric margin specification - (option_table): added "-u" to accept "cm", "mm", "in", "pt" - (get_page_geometry): bugfix: numeric spec was always consideder mm - - * cmdline.c (commandline): don't always print help - - * Makefile.in ($(INFO)): added missing dependency: distributed docs - formats were out of date with distributed doc source. - -1999-09-13 Alessandro Rubini - - * main.c (main): print tables: y used xmargin (Tim Withers,Jon Bakken) - -1999-09-06 Alessandro Rubini - - * Makefile.in: prevent -Wall when compiling getopt. - - * i25.c, ean.c, ps.c: switched to unsigned char, to prevent warnings - on newer gcc's (thanks Al Piszcz) - -====> Version 0.92 released to ftp.prosa.it and ftp.gnu.org - -1999-08-31 Alessandro Rubini - - * i25.c: the right guard was thinner than other bars - - * doc/doc.barcode: spelling and manpage fixes (thanks Joachim Schaaf) - -====> Version 0.91.4 released to ftp.prosa.it - -1999-08-23 Thad Floryan - - * main.c (strerror): replacement strerror selected by autoconf - -1999-08-06 Alessandro Rubini - - * changed all "ENODATA" in "EINVAL", as some system miss ENODATA - - * Makefile.in (all): removed ".depend" from all, as it needs gcc - - * i25.c (Barcode_i25_encode): fixed wrong free() in an unlinely path - - * ean.c (Barcode_ean_encode): don't use sprintf's result, as some - systems return a char pointer instead of the number of chars. - - * configure.in: new file, as autoconf support is being added - -====> Version 0.91.3 released to ftp.prosa.it - -1999-08-05 Alessandro Rubini - - * code128.c (Barcode_128c_encode): fixed malloc of textinfo (was short) - - * i25.c (Barcode_i25_encode): new encoding: interleaved 2 of 5 - - * ean.c (Barcode_ean_encode): enlarged static "text", to fit add-5 - - * code128.c (Barcode_128b_encode): new encoding: 128-B - -====> Version 0.91.2 released to ftp.prosa.it - -1999-08-04 Alessandro Rubini - - * bookland/bookland.py: upgraded to version 0.06 (Judas Milgram) - - * ean.c (Barcode_ean_encode): fixed layout of 1st/last digit in UPC-A - - * code128.c (Barcode_128c_encode): fixed checksum calculation - -====> Version 0.91.1 released to ftp.prosa.it - -1999-07-09 Alessandro Rubini - - * sample.c (main): due changes to show code128-C - - * code128.c (Barcode_128c_encode): implemented code 128-C - - * ps.c (Barcode_ps_print): Accept float position and font size - - * code39.c (Barcode_39_encode): reduced font (looked too big) - -====> Version 0.91 released to both ftp.prosa.it and ftp.gnu.org - -1999-07-08 Alessandro Rubini - - * ps.c (Barcode_ps_print): shrink all the bars by 0.15 points - (Barcode_ps_print): Use Helvetica as font, not Courier-Bold - (Barcode_ps_print): remember previous font to make shorter ps output - -1999-07-07 Alessandro Rubini - - * bookland/bookland.py: new enntry, by Judah Milgram. - - * ean.c (Barcode_isbn_verify): fixed bug with "-X" codes (thanks Judah) - -====> Version 0.90.3 released to ftp.prosa.it/pub/software - -1999-07-07 Alessandro Rubini - - * doc/doc.barcode: fixed the "BUGS" section (remove fixed stuff) - - * ean.c (Barcode_ean_encode): added '+' markers in partial and textinfo - - * ps.c (Barcode_ps_print): added support for text over bars ('+' mode) - -====> Version 0.90.2, internal checkpoint - -1999-07-06 Alessandro Rubini - - * Makefile: dirty autodetect of libpaper - - * main.c (get_page_geometry): parse a cmdline argument (mcm@glisco.it) - (main): added "--version" - (main): added diagnostic message for unencodable strings - -====> Version 0.90.1 released to ftp.prosa.it/pub/software - -1999-07-03 Alessandro Rubini - - * barcode.h: removed BARCODE_OUT_PG_* as only the library doesn't - need to hack with the page size. - - * ean.c (Barcode_ean_encode): supplemental 2 and 5 encodings (no text) - - * library.c: use unsigned char all over the place, to prevent warnings - -1999-07-01 Alessandro Rubini - - * ean.c: added EAN-8 and UPC-E support - - * Updated the address of the FSF in any source file - - * README: new file. - -====> Version 0.90 is the first public release. No Changelog up to now. diff --git a/glabels2/barcode-0.98/INSTALL b/glabels2/barcode-0.98/INSTALL deleted file mode 100644 index 5a6cb878..00000000 --- a/glabels2/barcode-0.98/INSTALL +++ /dev/null @@ -1,31 +0,0 @@ - -Installing on generic Unix systems ----------------------------------- - -The package includes both a library and a standalone program. -To install everything try - - ./configure && make && make install - -To uninstall, try - - make uninstall - -You may have problems compiling the package on non-GNUish systems, -because the tool currently uses both gmake and gawk features, and I have -no access to non-gnu systems. If your operating system isn't able to -compile barcode and you are willing to help porting, feel free to call me. - - -Installing on Debian/GNU systems --------------------------------- - -The suggested installation here includes creation of a Debian package: - - debian/rules binary - -Then, just install using dpkg: - - dpkg -i ../barcode-0.98_*.deb - -(the "*" here will represent your architecture: "i386", "alpha", "sparc", ...) diff --git a/glabels2/barcode-0.98/README b/glabels2/barcode-0.98/README deleted file mode 100644 index d3ae2a7f..00000000 --- a/glabels2/barcode-0.98/README +++ /dev/null @@ -1,93 +0,0 @@ - -NETWORK LINKS -============= - -This is GNU-barcode. The latest release can be downloaded from ftp.gnu.org -and mirrors: - ftp://ftp.gnu.org/pub/gnu/barcode/ - -It is also available from my own ftp/http server - ftp://ar.linux.it/pub/barcode/ - http://ar.linux.it/pub/barcode/ (same as above). - -The current source tree is available by anonymous CVS. See - http://ar.linux.it/software/#cvs - -Plesae note that ar.linux.it/pub/barcode also includes CVS snapshots, -semi-atumatically taken when I commit stuff to CVS. Note that CVS -snapshots include "CVS/" directories, so you can then "cvs update" for -further updates. - -The documentation is online at: - http://ar.linux.it/software/barcode - -The MS-Windows port is maintained at: - http://gnuwin32.sourceforge.net/packages/barcode.htm - -It as also been included in the FreeBSD ports tree in the "graphics" section. -This means /usr/ports/graphics/barcode. It's thus available from: - http://www.freebsd.org/ports/graphics.html - -GLabels, at http://snaught.com/glabels/, uses barcode internally, too. - -DESCRIPTION -=========== - -The package is meant to solve most needs in barcode creation with a -conventional printer. It can create printouts for the conventional -product tagging standards: UPC-A, UPC-E, EAN-13, EAN-8, ISBN, as well -as a few other formats. Ouput is generated as either Postscript or -Encapsulated Postscript (other back-ends may be added if needed). - -The package is released as both a library and a command-line frontend, -so that you can include barcode-generation into your application. The -program is released in the hope that is proves useful but without any -warranty, according to the GPL Licence (see ./COPYING). - -If you're specifically interested in making an ISBN (Bookland EAN) -symbol, you might try to get "bookland.py" by Judah Milgram -(http://www.cgpp.com/bookland/, whose version 0.92 is also included in -the directory "bookland" within this package, for your convenience). -While my main target is flexibility his main target is strict -adherence to the standards. Bookland is free software like the barcode -library and will probabily have its role in the GNU project. -Bookland.py is a self-documenting program, you'll enjoy browsing its -source code. - -Other contributed patches and/or software are available in the -contrib/ directory. - -Please take the "no-warranty" disclaimer seriously: even though I -spent reasonable efforts to make sure the output is useable in -production you should verify it suits your needs as a faulty bar can -cost you a bundle, and you'll be on your own. It's up to you to verify -that the symbol is valid (and, obviously, I'd like to know about any -problem you encounter). [This paragraph copied verbatim from bookland.py] - - -ACKNOWLEDGMENTS -=============== - -I would like to thank both Judah Milgram and Michele Comitini -(mcm@glisco.it) for their help with this tool, as well as Jim Westveer -for introducing me to Debian packaging. Several encodings have been -implemented by Leonid A. Broukhis (leob@mailcom.com). - - -MAILING LISTS -============= - -There is a mailing list where development is coordinated, called -barcode@lists.linux.it . To get subscribed you should - echo subscribe | mail barcode-request@lists.linux.it -or anything equivalent. - -To receive notification of CVS commit messages, please subscribe to -barcode-commit@ar.linux.it, by issuing: - echo subscribe | mail barcode-commit-request@ar.linux.it - -(if you guess, "ar" or "arcana" is my own server, while lists.linux.it -is the mail server of the italian association of gnu/linux users). - -/alessandro (rubini@gnu.org) - diff --git a/glabels2/barcode-0.98/TODO b/glabels2/barcode-0.98/TODO deleted file mode 100644 index c91c79cf..00000000 --- a/glabels2/barcode-0.98/TODO +++ /dev/null @@ -1,23 +0,0 @@ - - Possible enhancements that I'd like to add - -* verbose mode, printing position information to stderr - -* document how a new encoding standard can be added - -* add Barcode_String, which has been contributed - -* EAN128 (as agreed with Dani Pardo) - -* Postnet and associated encoding-specific bar definitions - -* Use texinfo 4 with images - -* shrink the bars to account for ink spreading - - Currently, small barcodes don't get rendered well. While - version 0.91 and later subtracts 0.15 points from the size of - the bars (I found that this makes good results for small - bars), a smart alghorithm to shrink the bars is needed to get - lighter prints at small sizes without loosing readability. - diff --git a/glabels2/barcode-0.98/barcode.h b/glabels2/barcode-0.98/barcode.h deleted file mode 100644 index 6b9bdf4e..00000000 --- a/glabels2/barcode-0.98/barcode.h +++ /dev/null @@ -1,119 +0,0 @@ -/* - * barcode.h -- definitions for libbarcode - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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. - */ - -#ifndef _BARCODE_H_ -#define _BARCODE_H_ - -#include - -#define BARCODE_VERSION "0.98" -#define BARCODE_VERSION_INT 9800 - -/* - * The object - */ -struct Barcode_Item { - int flags; /* type of encoding and decoding */ - char *ascii; /* malloced */ - char *partial; /* malloced too */ - char *textinfo; /* information about text positioning */ - char *encoding; /* code name, filled by encoding engine */ - int width, height; /* output units */ - int xoff, yoff; /* output units */ - int margin; /* output units */ - double scalef; /* requested scaling for barcode */ - int error; /* an errno-like value, in case of failure */ -}; - -/* - * The flags field - */ -#define BARCODE_DEFAULT_FLAGS 0x00000000 - -#define BARCODE_ENCODING_MASK 0x000000ff /* 256 possibilites... */ -#define BARCODE_NO_ASCII 0x00000100 /* avoid text in output */ -#define BARCODE_NO_CHECKSUM 0x00000200 /* avoid checksum in output */ - -#define BARCODE_OUTPUT_MASK 0x000ff000 /* 256 output types */ -#define BARCODE_OUT_EPS 0x00001000 -#define BARCODE_OUT_PS 0x00002000 -#define BARCODE_OUT_PCL 0x00004000 /* by Andrea Scopece */ -/* PCL_III 0x00008000 */ -#define BARCODE_OUT_PCL_III 0x0000C000 -#define BARCODE_OUT_NOHEADERS 0x00100000 /* no header nor footer */ - -enum { - BARCODE_ANY = 0, /* choose best-fit */ - BARCODE_EAN, - BARCODE_UPC, /* upc == 12-digit ean */ - BARCODE_ISBN, /* isbn numbers (still EAN13) */ - BARCODE_39, /* code 39 */ - BARCODE_128, /* code 128 (a,b,c: autoselection) */ - BARCODE_128C, /* code 128 (compact form for digits) */ - BARCODE_128B, /* code 128, full printable ascii */ - BARCODE_I25, /* interleaved 2 of 5 (only digits) */ - BARCODE_128RAW, /* Raw code 128 (by Leonid A. Broukhis) */ - BARCODE_CBR, /* Codabar (by Leonid A. Broukhis) */ - BARCODE_MSI, /* MSI (by Leonid A. Broukhis) */ - BARCODE_PLS, /* Plessey (by Leonid A. Broukhis) */ - BARCODE_93 /* code 93 (by Nathan D. Holmes) */ -}; - -#define BARCODE_DEFAULT_MARGIN 10 - -#ifdef __cplusplus -extern "C" { -#endif -/* - * Create and destroy barcode structures - */ -extern struct Barcode_Item *Barcode_Create(char *text); -extern int Barcode_Delete(struct Barcode_Item *bc); - -/* - * Encode and print - */ -extern int Barcode_Encode(struct Barcode_Item *bc, int flags); -extern int Barcode_Print(struct Barcode_Item *bc, FILE *f, int flags); - -/* - * Choose the position - */ -extern int Barcode_Position(struct Barcode_Item *bc, int wid, int hei, - int xoff, int yoff, double scalef); - -/* - * Do it all in one step - */ -extern int Barcode_Encode_and_Print(char *text, FILE *f, int wid, int hei, - int xoff, int yoff, int flags); - - -/* - * Return current version (integer and string) - */ -extern int Barcode_Version(char *versionname); - -#ifdef __cplusplus -} -#endif - -#endif /* _BARCODE_H_ */ diff --git a/glabels2/barcode-0.98/barcode.spec b/glabels2/barcode-0.98/barcode.spec deleted file mode 100644 index eccb6026..00000000 --- a/glabels2/barcode-0.98/barcode.spec +++ /dev/null @@ -1,84 +0,0 @@ -%define name barcode -%define ver 0.98 -%define rel 1 -%define prefix /usr -%define sysconfdir /etc - -Summary: GNU barcode -Name: %name -Version: %ver -Release: %rel -Copyright: GPL -Group: Applications/Productivity -Source: ftp://ar.linux.it/pub/barcode/%name-%{ver}.tar.gz -BuildRoot: /var/tmp/%name-%{ver}-root -URL: http://gnu.systemy.it/software/barcode -Prefix: %prefix - -%description -This is GNU-barcode. -The package is meant to solve most needs in barcode creation with a -conventional printer. It can create printouts for the conventional -product tagging standards: UPC-A, UPC-E, EAN-13, EAN-8, ISBN, as well -as a few other formats. Ouput is generated as either Postscript or -Encapsulated Postscript (other back-ends may be added if needed). - -%package devel -Summary: GNU barcode files for development -Group: Development/Libraries - -%description devel -This is GNU-barcode. -The package is meant to solve most needs in barcode creation with a -conventional printer. It can create printouts for the conventional -product tagging standards: UPC-A, UPC-E, EAN-13, EAN-8, ISBN, as well -as a few other formats. Ouput is generated as either Postscript or -Encapsulated Postscript (other back-ends may be added if needed). - -This package contain the C header, the static library and man page -for development. - -%prep -%setup - -%ifarch alpha - ARCH_FLAGS="--host=alpha-redhat-linux" -%endif - -export -n LANG LINGUAS LC_ALL -if [ ! -f configure ]; then - CFLAGS="$RPM_OPT_FLAGS" ./autogen.sh $ARCH_FLAGS --prefix=%{prefix} --sysconfdir=%{sysconfdir} -else - CFLAGS="$RPM_OPT_FLAGS" ./configure $ARCH_FLAGS --prefix=%{prefix} --sysconfdir=%{sysconfdir} -fi - -%build -export -n LANG LINGUAS LC_ALL - -if [ "$SMP" != "" ]; then - (make "MAKE=make -k -j $SMP"; exit 0) - make -else - make -fi - -%install -[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT -make prefix=$RPM_BUILD_ROOT%{prefix} sysconfdir=$RPM_BUILD_ROOT%{sysconfdir} install - -%clean -[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-, root, root) - -%doc COPYING ChangeLog INSTALL README TODO doc/*.html doc/*.pdf doc/*.ps - -%attr(0755,root,root) %{prefix}/bin/barcode -%attr(0644,root,root) %{prefix}/info/barcode.info* -%attr(0644,root,root) %{prefix}/man/man1/barcode.1* - -%files devel -%attr(0644,root,root) %{prefix}/include/barcode.h -%attr(0644,root,root) %{prefix}/lib/libbarcode.a -%attr(0644,root,root) %{prefix}/man/man3/barcode.3* diff --git a/glabels2/barcode-0.98/bookland/bookland.py b/glabels2/barcode-0.98/bookland/bookland.py deleted file mode 100644 index 373587cb..00000000 --- a/glabels2/barcode-0.98/bookland/bookland.py +++ /dev/null @@ -1,884 +0,0 @@ -#!/usr/local/bin/python - -MYNAME="bookland.py" -MYVERSION="0.92" -COPYRIGHT="(C) 1999-2001 J. Milgram" -DATE = "Jan. 2002" -MAINTAINER = "bookland-bugs@cgpp.com" - -# Copyright (C) 1999,2000 Judah Milgram -# -# bookland.py - generate Bookland EAN symbol for ISBN encoding -# -# 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. -# -# ============================================================================== -# -# usage: bookland.py [ISBN] [price-code] > output.eps -# -# ISBN - the ISBN, with or without check digit, with or without hyphens. -# default: 1-56592-197-6 ("Programming Python"). If the check digit -# is provided on the command line, it is verified. If not, it is -# calculated. It's up to you to get the hyphenation right - it's -# important, and something the program can't calculate for you. -# -# price - the five digit add-on code. Usually used to indicate the price, -# in which case the first digit indicates the currency (4=$CAN, -# 5=$US, etc.). The remaining digits indicate the price, with -# decimal point assumed to be between the digit 3 and 4. -# For example: $US 6.95 = 50695, $CAN 35.00 = 43500. Instead of a -# price code, a 5 digit add-on ranging from 90000-98999 can be -# used for internal purposes. BISG recommends just using 90000 if -# you don't want to specify a price. Add-ons ranging from 99000 to -# 99999 have been reserved for special use. -# -# An Encapsulated Postscript file (eps) is sent to standard out. This may in turn -# be converted to other formats using the pbmplus package. You may have trouble -# getting the OCRB to map correctly. If you already have the font, you can look in -# the Fontmap file to see what your system calls it, and edit the fontnames accordingly -# (see below). If you don't have it, you might find it on your DOS system. You -# need a .pfa/.pfb (Type 1) or .ttf (TrueType). Your Postscript interpreter might -# or might not be able to deal with TrueType. In any event, in an emergency, you -# might get away with Helvetica. Note that as of 1990 BISG no longer requires the -# ISBN to be printed in OCR-A. -# -# Take the "no-warranty" disclaimer seriously. Going to print with a faulty bar -# can cost you a bundle, and you'll be on your own. It's up to you to verify that -# the symbol is valid. If you need "corporate accountability", try the Book -# Industry Study Group at (212) 929-1393 or the US ISBN Agency at (908) 665-6770 -# and ask for a list of commercial vendors. Outside the US, don't know. -# -# Feedback welcome. If you discover a case where the program generates a faulty -# symbol, I definitely want to hear about it - write me at milgram@cgpp.com or -# P.O. Box 8376, Langley Park, MD 20787, USA -# -# INSTALLATION: -# -# If you have a Python interpreter on your system, you're done. Just put this file -# somewhere in your path and give it execute permission. If you haven't installed -# Python, see http://www.python.org. It has been ported to Macs, DOS, and MS-Windows. -# -# ABOUT THE BOOKLAND EAN -# -# The most difficult part of this project was finding the documents that define -# the Bookland EAN. There appears to be no single, authoritative source that -# provides all the information required. Some good sources: -# -# [1] "Machine-Readable Coding Guidelines for the U.S. Book Industry", Book -# Industry Study Group, New York, Jan., 1992. (212) 929-1393 -# [2] "UPC Symbol Specification Manual", Uniform Code Council Inc., -# Dayton, Ohio, January 1986 (May 1995 Reprint). (937) 435-3870; I found it -# at http://www.uc-council.org/d36-t.htm -# [3] "EAN Identification for Retail/Trade Items", EAN International. I found it -# in Feb. 1999 at http://www.ean.be/html/Numbering.html -# [4] "Hyphenation Instructions", web page at: -# http://www.isbn.org/standards/home/isbn/international/hyphenation-instructions.asp -# -# The starting point of the exercise is the ISBN, assigned by the national ISBN -# Agency. This is a 10 digit number, the last being a check digit. The ISBN is -# converted to a 13 digit EAN number. The first three digits of the EAN-13 indicate -# the country or region. A prefix of 978 has been assigned to books, regardless -# of country of origin (hence, "Bookland") [3]. The remaining ten digits are the -# first 9 digits of the ISBN followed by the EAN-13 check digit. -# -# It seems the EAN-13 check digit can be calculated using the same algorithm as the -# UPC Version A number. Note that the EAN-13 check digit is always between 0 and 9, -# compare with ISBN check digit which can range to 10 ("X"). See Reference [2], -# Section 2 and Appendix G for details of creation of the EAN-13 symbol. Table 2 of -# Appendix G provides a good comparison of the UPC-A and EAN-13 symbols. -# -# The 5 digit add-on (here called, "UPC5") is defined in Ref. [2] Appendix D. -# The ">" to the right of the five digit code serves to enforce the "quiet zone" to -# the right of the bar pattern. Can't remember where I read that. It's probably -# optional. According to [1], in the UK, three horizontal bars appear over price -# add-ons. Haven't implemented that here. The UPC5 encoding is based on UPC-A and -# UPC-E. -# -# According to [2], Section 3, the EAN-13 numbers and 5-digit add-ons are supposed -# to be printed in OCR-B. The ISBN itself is printed above the EAN-13 symbol. At -# one time it was to be printed in OCR-A, but as of 1990 this requirement has been -# dropped [1], and I assume this means you can use any font you like. -# -# SEE ALSO: -# -# "TinyHelp 5 - Making ISBN Barcodes", D. Byram-Wigfield. Another approach to making -# the ISBN barcode symbol. I saw it at -# http://www.cappella.demon.co.uk/index.html/ -# but haven't tried it. -# -# "XBarcode" - nice open-source X-Windows program for generating all sorts of bar codes. -# It does much more than this program, but didn't seem to do the UPC -# 5-digit add-on or do the ISBN->EAN13 calculation (as of v. 2.11). Might -# have made more sense to add this capability, but I needed a Python project. -# In any event, their license forbids distribution in modified form! -# -# HYPHENATION -# -# bookland.py includes automatic hyphenation for ISBN's in group 0 and 1 -# (English-language). This is based on my reading of Ref [4]. If in doubt, -# users can use the "-y" option to force the program to accept the hyphenation -# as input. For other ISBN groups and for ISMN's, no hyphenation is performed -# other than to ensure a hyphen is placed after the group identifier and before -# the check digit. -# -# ABOUT THE ISMN: -# -# See the ISMN Users' Manual, 3rd Edition, 1998, ISBN 3-88053-070-X, published by -# the International ISMN Agency, Staatsbibliothek Preussischer Kulturbesitz, Berlin. -# I found my copy at http://www.ismn.spk-berlin.de/download/ISMNmanual.pdf -# -# An ISMN is just like an ISBN, except: -# - first character is an "M" -# - the "M" counts as a "3" for computing the ISMN check digit (last digit) -# - the checksum weights are 3,1,3,1,3,1,3,1,3, sum to be divisible by "10". This -# means the last character is always a numerical digit, never an "X". -# - the EAN number is "979" plus the *entire* ten character ISMN, except the -# "M" is replaced by "0". Note this means the ISMN checksum is identical to the -# corresponding EAN-13 checksum (excercise left to the reader). -# -# When bookland.py detects an "M" in the first position of the ISBN, it interprets -# it as an ISMN and proceeds accordingly. The 5-digit price code symbol is suppressed. -# -# BAR WIDTH REDUCTIONS -# -# Starting Version 0.92, the widths of the individual bars can be reduced using the -# "-r" option (units are inches). This is to compensate for bleed during printing. -# I don't know when it's a good idea to actually use this; in any event consult with -# your printer first. If not input, it defaults to zero (no reduction). -# -# ABOUT PYTHON -# -# See http://www.python.org -# -# TO DO: -# -# - Generalize to more bar codes, starting with UPC-A and UPC-E. "Plain" EAN13 is -# already built in, could add command line argument to generate that instead of -# Bookland. -# - Make font sizes and placement easier to configure - not sure I have it right. -# Does human-readable 5-digit code take wider font spacing? -# - Clean up bounding box stuff. -# - Bells and whistles. -# - GUI? -# -# HISTORY: -# -# 1/2002 - v 0.92 add ISMN support (thanks to Lars-Henrik Nysten for this suggestion) -# re-wrote bar generation to preclude possibility of white hairlines -# between adjacent black modules. Thanks to Tero Lindfors for -# reporting this bug. -# new -o option to write eps to file rather than stdout -# new -x option for "check only" (verifies check digit) -# new -r option for bar width reduction (compensate for print bleed) -# new -s option to scale module (bar) height (Lars-Henrik Nysten again) -# can suppress UPC-5 price code by entering empty string. (thanks to -# Jacques Du Pasquier for this suggestion) -# re-wrote ISBN/ISMN sanity checks -# lowercase alphas ("x" for ISBN and "m" for ISMN) now ok on input -# fix "long" command line options. -# 10/2001 - v 0.91 add -z option for quiet zone ">" -# add -f option for fonts -# re-write command line parsing to use getopt -# 1/2000 - v 0.09 eliminate use of eval -# 9/99 - v 0.08 accomodate different versions of OCRB by fitting -# all strings to prescribed width. Thanks to Toby Gadd -# for reporting this problem and Peter Deutsch for -# help finding the fix. -# 7/99 -v0.05-0.07 improve error handling. -# 3/27/99 - v0.04 add "--help" and "--version". -# 3/13/99 - v0.03, do a showpage at end (it's allowed) -# fixed checksum calculations for certain cases -# 2/7/99 - v0.02, fixed LH parity pattern for EAN13. It's not the check digit! -# 2/7/99 - initial release -# ================================================================================ - -# -# barCodeSymbol - the whole printed symbol, including bar code(s) and product code(s). -# UPC, UPCA, UPC5, EAN13 - the number itself, with check digit, string representation, -# and barcode bits -# - -import re # we should get rid of regsub and regex in favor of re - # hope there's no conflict. -import string -import sys -import regsub -from regex_syntax import * -import regex -regex.set_syntax(RE_SYNTAX_AWK) -from types import * - -BooklandError = "Something wrong" - - -A="A";B="B";C="C";O="O";E="E" -UPCABITS = [{O:"0001101",E:"1110010"}, - {O:"0011001",E:"1100110"}, - {O:"0010011",E:"1101100"}, - {O:"0111101",E:"1000010"}, - {O:"0100011",E:"1011100"}, - {O:"0110001",E:"1001110"}, - {O:"0101111",E:"1010000"}, - {O:"0111011",E:"1000100"}, - {O:"0110111",E:"1001000"}, - {O:"0001011",E:"1110100"}] -UPCAPARITY = [ "OOOOOOEEEEEE" ] * 10 -UPCEBITS = [{O:"0001101",E:"0100111"}, - {O:"0011001",E:"0110011"}, - {O:"0010011",E:"0011011"}, - {O:"0111101",E:"0100001"}, - {O:"0100011",E:"0011101"}, - {O:"0110001",E:"0111001"}, - {O:"0101111",E:"0000101"}, - {O:"0111011",E:"0010001"}, - {O:"0110111",E:"0001001"}, - {O:"0001011",E:"0010111"}] -# what about UPCEPARITY? Don't need for isbn. -UPC5BITS = UPCEBITS -UPC5PARITY = ["EEOOO","EOEOO","EOOEO","EOOOE","OEEOO", - "OOEEO","OOOEE","OEOEO","OEOOE","OOEOE"] -EAN13BITS = [{A:"0001101", B:"0100111", C:"1110010"}, - {A:"0011001", B:"0110011", C:"1100110"}, - {A:"0010011", B:"0011011", C:"1101100"}, - {A:"0111101", B:"0100001", C:"1000010"}, - {A:"0100011", B:"0011101", C:"1011100"}, - {A:"0110001", B:"0111001", C:"1001110"}, - {A:"0101111", B:"0000101", C:"1010000"}, - {A:"0111011", B:"0010001", C:"1000100"}, - {A:"0110111", B:"0001001", C:"1001000"}, - {A:"0001011", B:"0010111", C:"1110100"}] -EAN13PARITY = map(lambda x: x+"CCCCCC", - ["AAAAAA","AABABB","AABBAB","AABBBA","ABAABB", - "ABBAAB","ABBBAA","ABABAB","ABABBA","ABBABA"]) - -PSFORMAT = "%.6f" -# Default fonts. -# Fonts might have a different name on your system. -# Edit if required. -ISBNFONT = "OCRB" # Doesn't have to be OCR-B -EAN13FONT = "OCRB" -UPC5FONT = "OCRB" - -class psfile: - - def __init__(self): - self.x0 = 100; self.y0 = 100 - self.lines=[] - self.bb=[self.x0,self.y0,self.x0,self.y0] - - def orbb(self,arg): - self.bb[0] = min(self.bb[0],self.x0+arg[0]) - self.bb[1] = min(self.bb[1],self.y0+arg[1]) - self.bb[2] = max(self.bb[2],self.x0+arg[2]) - self.bb[3] = max(self.bb[3],self.y0+arg[3]) - - def translate(self,dx,dy): - self.x0 = self.x0 + dx - self.y0 = self.y0 + dy - return "%d %d translate 0 0 moveto" % (dx,dy) - - def out(self,file=None): - if file: - outfid=open(file,"w") - else: - outfid=sys.stdout - for line in self.lines: - outfid.write("%s\n"%line) - outfid.close() - - def do(self,arg): - self.lines = self.lines + arg - - def setbb(self): - for i in range(len(self.lines)): - if self.lines[i]=="%%BoundingBox: TBD": - self.lines[i]= "%%BoundingBox:" + \ - " %d"%self.bb[0] + \ - " %d"%self.bb[1] + \ - " %d"%self.bb[2] + \ - " %d"%self.bb[3] - return - - def header(self,title,comments,ean13font,isbnfont,upc5font): - for i in range(len(comments)): - comments[i] = regsub.gsub("^","% ",comments[i]) - # There's a more elegant way to do the bounding box line: - return [ "%!PS-Adobe-2.0 EPSF-1.2", - "%%Creator: " + MYNAME + " " + MYVERSION + " " + DATE, - "%%Title: " + title, - "%%BoundingBox: TBD", - "%%EndComments" ] +\ - comments + \ - [ "\n% These font names might be different on your system:", - "/ean13font { /" + ean13font + " findfont 10 scalefont setfont } def", - "/isbnfont { /" + isbnfont + " findfont 8 scalefont setfont } def", - "/upc5font { /" + upc5font +" findfont 14 scalefont setfont } def\n", - "/nextModule { moduleWidth 0 rmoveto } def", - "% The following shenanigans is to deal with different implementations", - "% of same font having different char sizes and spacing.", - "% function fitstring:", - "% usage: width string font fitstring", - "% set font, scaled so that string exactly fits desired width", - "% leave string on stack", - "/fitstring { dup findfont 1 scalefont setfont % w s f", - "3 1 roll % f w s", - "dup stringwidth pop % f w s sw", - "3 2 roll exch div % f s x", - "3 2 roll findfont exch scalefont setfont", - "} def", - "/barHeight { 72 } def", - "/nextModule { moduleWidth 0 rmoveto } def", - "/topcentershow {dup stringwidth pop neg 2 div -9 rmoveto show} def", - "/toprightshow {dup stringwidth pop neg -9 rmoveto show} def", - "/bottomcentershow {dup stringwidth pop neg 2 div 0 rmoveto show} def", - "/bottomrightshow {dup stringwidth pop neg 0 rmoveto show} def", - "/W { moduleWidth mul 0 rmoveto } def", - "/B { dup moduleWidth mul 2 div 0 rmoveto", - "dup moduleWidth mul barWidthReduction sub setlinewidth", - "0 barHeight rlineto 0 barHeight neg rmoveto", - "currentpoint stroke moveto", - "moduleWidth mul 2 div 0 rmoveto } def", - "/L { dup moduleWidth mul 2 div 0 rmoveto", - "dup moduleWidth mul barWidthReduction sub setlinewidth", - "0 -5 rmoveto 0 5 rlineto", - "0 barHeight rlineto 0 barHeight neg rmoveto", - "currentpoint stroke moveto", - "moduleWidth mul 2 div 0 rmoveto } def", - self.x0,self.y0,"translate", - "0 0 moveto" ] - - def trailer(self): - return ["stroke","% showpage supposedly OK in EPS", - "showpage","\n% Good luck!"] - - -class UPC: - - # Includes UPC-A, UPC-E, EAN-13 (sorry), UPC-5 et al. - - def __init__(self,arg): - # arg is a string, either: - # - product code including checksum - # - same, with hyphens (hyphens not verified) - # - same, but with last digit (checksum) dropped, possibly leaving a - # trailing hyphen. - # If checksum is included, it will be verified. - # N.B. "integer" representation is still a string! Just has no hyphens. - - self.s=arg - self.verifyChars(self.s) - self.n = regsub.gsub("-","",self.s) # create "integer" representation - self.x = self.checkDigit(self.n) # always calculate check digit - if len(self.n) == self.ndigits: - self.verifyCheckDigit() # if check digit given, verify it - elif len(self.n) == self.ndigits-1: - self.tackonCheckDigit() # tack on check digit - else: - raise BooklandError, "UPC: wrong number of digits in \"" + self.s + "\"" - - def setbits(self,arg): # UPC (all) - self.bits="" - parityPattern=self.parityPattern() - bitchar=self.bitchar() - for p in range(len(arg)): - digit=int(arg[p]) - # maybe better to define parityPattern with a leading blank? - parity=parityPattern[p] - bit=bitchar[digit][parity] - self.bits=self.bits + bit - - def verifyChars(self,s): # UPC (all) - # Trailing hyphen allowed. - nevergood = "--|^-|[^0-9-]" - ierr=regex.search(nevergood,s) - if ierr != -1: - raise BooklandError, \ - "UPCA: in %s: illegal characters beginning with: %s" % (s,s[ierr]) - - def verifyCheckDigit(self): # UPC (all) - # first verify correct number of digits. - soll=self.checkDigit(self.n) - ist=self.s[-1:] - if ist != soll: - raise BooklandError, "For %s checksum %s is wrong, should be %s" % \ - (self.s,ist,soll) - - def xstring(self,p): # UPC (all) - return "%d" % p - - def tackonCheckDigit(self): - self.n = self.n + self.x # UPC (all) - self.s = self.s + self.x - -class UPCA(UPC): - - def __init__(self,arg): - UPC.__init__(self,arg) - self.setbits(self.n[1:]) # skip first digit - - def parityPattern(self): - return UPCAPARITY[int(self.x)] - def bitchar(self): - return UPCABITS - - def checkDigit(self,arg): # UPCA/EAN13 - weight=[1,3]*6; magic=10; sum = 0 - for i in range(12): # checksum based on first 12 digits. - sum = sum + int(arg[i]) * weight[i] - z = ( magic - (sum % magic) ) % magic - if z < 0 or z >= magic: - raise BooklandError, "UPC checkDigit: something wrong." - return self.xstring(z) - - -class ISBN: - # Includes ISMN, if the plan falls together. - def __init__(self,arg): - self.ndigits=10 # Includes check digit! - self.s=string.upper(arg) - self.n=re.sub("[ -]","",self.s) # "integer" representation - # In ISMN, I allow spaces in place of hyphens. See ISMN User's manual. - if re.match("^M( |-)?\d(( |-)?\d){7,7}(-| )?\d?$",self.s): - # ISMN - self.name="ISMN" - self.n=re.sub("^M","3",self.n) - self.weight=[3,1,3,1,3,1,3,1,3] - self.magic=10 - elif re.match("^\d-?\d(-?\d){7,7}-?(\d|X)?$",self.s): - # ISBN - self.name="ISBN" - self.weight=[10,9,8,7,6,5,4,3,2] - self.magic=11 - else: - raise BooklandError, "%s invalid (hyphenation, characters, or length)" % self.s - self.x = self.checkDigit() - if len(self.n) == self.ndigits: - self.verifyCheckDigit() # if check digit given, verify it - elif len(self.n) == self.ndigits-1: - self.tackonCheckDigit() # tack on check digit - else: - raise BooklandError, "%s failed. Please report as bug" % self.s - - - def checkDigit(self): # ISBN and ISMN; UPCA/EAN13 similar but for weights etc. - # now that we're checking regex's in init, we don't have to check the - # argument at all. (used to check length and bad characters) - sum = 0 - for i in range(9): # checksum based on first nine digits. - sum = sum + int(self.n[i]) * self.weight[i] - z = ( self.magic - (sum % self.magic) ) % self.magic - if z < 0 or z >= self.magic: - raise BooklandError, \ - "%s: checksum %d is wrong - please report as bug" % (self.s,z) - return self.xstring(z) - - def xstring(self,p): - if p == 10: - return "X" - else: - return "%d" % p - - def tackonCheckDigit(self): - if self.s[-1:] == "-": - # Already have a trailing hyphen - self.s = self.s + self.x - else: - self.s = self.s + "-" + self.x - - def verifyCheckDigit(self): # UPC A; EAN13 - # first verify correct number of digits. - soll=self.x - ist=self.s[-1:] - if ist != soll: raise BooklandError, \ - "For %s checksum %s is wrong, should be %s\n" % (self.s,ist,soll) - -class Bar: - # a run of adjacent modules of identical value. - def __init__(self,val): - self.val=val - if not self.val in "L01": - raise BooklandError, "bar bit: %s, pls report as a bug" % self.val - self.width=1 - if self.val=="1": - self.color="Black" - elif self.val=="0": - self.color="White" - elif self.val=="L": - self.color="Long Black" - def __cmp__(self,other): - if self.val==other or (self.val=="L" and other=="1"): - return 0 - else: - return 1 - def inc(self): - self.width=self.width+1 - def pslines(self): - if self.val=="L": - rval = [ "%d L " % self.width ] - elif self.val=="1": - rval = [ "%d B " % self.width ] - else: - rval = [ "%d W " % self.width ] - return rval - def __repr__(self): - return "%s bar of width %d" % (self.color,self.width) - -class barCodeSymbol: - - def __init__(self): - self.patternWidth = len(self.bits)*self.moduleWidth - # Anything else? - - def bitsComment(self): - return [ "%% Bits:\n%% %s" % self.bits ] - - def psbars(self): - # new version, try to prevent all hairlines between adjacent modules. - bars = [] - bar=Bar(self.bits[0]) - for bit in self.bits[1:]: - if bit==bar: - bar.inc() - else: - bars.append(bar) - bar=Bar(bit) - bars.append(bar) - rval = ["0 0 moveto"] - for bar in bars: - rval = rval + bar.pslines() - rval = rval + [ "stroke" ] - return rval - - def psbarsold(self): - psbits=regsub.gsub("1","I ",self.bits) - psbits=regsub.gsub("0","O ",psbits) - psbits=regsub.gsub("L","L ",psbits) - linewidth=50 - p=0; j=linewidth; m=len(psbits); psbarlines=[]; blanks="^ | $" - while p <= m: - j = min(linewidth,m-p) - psbarlines = psbarlines + [ regsub.gsub(blanks,"",psbits[p:p+j]) ] - p=p+linewidth - return [ "0 0 moveto" ] + psbarlines + [ "stroke" ] - - def psSetBarHeight(self): - return [ "/barHeight { " + PSFORMAT % self.moduleHeight + " 72 mul } def" ] - - def psSetBarWidthReduction(self): - return [ "/barWidthReduction { " + \ - PSFORMAT % self.barWidthReduction + " 72 mul } def" ] - - def psSetModuleWidth(self): - rval = [ "/moduleWidth { " + PSFORMAT % self.moduleWidth + " 72 mul } def" ] - return rval - - def psBottomRightText(self,text,font): - # this is specifically for the upc5 price code. - # this is all starting to get messy. - return [ PSFORMAT % self.patternWidth + " 72 mul dup 2 div", - PSFORMAT % self.moduleHeight + " 72 mul 2 add moveto", - "(" + text + ") /" + font + " fitstring bottomcentershow" ] - - def psTopCenterText(self,text,font): - # the text at the top center of the bar pattern (i.e. the ISBN) - return [ PSFORMAT % self.patternWidth + " 72 mul dup 2 div", - PSFORMAT % self.moduleHeight + " 72 mul 3 add moveto", - " (" + text + ") /" + font + " fitstring bottomcentershow" ] - - def psFittedText(self,width,text,font): - return [ PSFORMAT % width + " (" + text + ") " + font + " fitstring" ] - - # This is optional; serves to enforce quiet zone to right of UPC 5 add-on - def psGreaterThan(self,font): - return [ PSFORMAT % self.patternWidth + " 72 mul", - PSFORMAT % self.moduleHeight + " 72 mul 2 add moveto", - "/%s (>) show" % font ] - -class EAN13Symbol(barCodeSymbol): - - def __init__(self,arg,font=EAN13FONT,heightMultiplier=1,barWidthReduction=0): - # arg is a string with the EAN product code - self.barWidthReduction=barWidthReduction - self.ean13 = EAN13(arg) - self.moduleWidth = 0.0130 - specModuleHeight = 1.00 - self.moduleHeight = 1.00 * heightMultiplier - self.bits = self.ean13.bits - barCodeSymbol.__init__(self) - self.font=font - - def bb(self): - return [ -12, -10, self.patternWidth*72+10, self.moduleHeight*72+12 ] - - def pslines(self): - return self.bitsComment() + \ - self.psSetModuleWidth() + \ - self.psSetBarWidthReduction() + \ - self.psSetBarHeight() + \ - self.psbars() + \ - self.psLRDigitLines() - - def psLRDigitLines(self): - # 24 = 3+6*7/2 - # 70 = 3+6*7+4+6*7/2 "4" so we center on the "L" bars (the rightmost of - # the center guard bars is an "O". - # "5" in check digit is the five-module spacing recommended by [2], section 3. - return [ "% We do the left digits first and leave the font scaled", - "% as is for the 9-digit and the right-digits.", - "% EAN13 Left Digits:", - "moduleWidth 24 mul 0 moveto", - "moduleWidth 40 mul (" + self.ean13.leftDigits + ") ", - "/" + self.font + " fitstring topcentershow", - "\n% EAN13 human-readable number", - "% The \"9\" digit (only when encoding ISBN's and ISMN's, I think):", - "-5 0 moveto (" + self.ean13.n[0] + ") toprightshow", - "% EAN13 Right Digits:", - "moduleWidth 70 mul 0 moveto", - "moduleWidth 40 mul (" + self.ean13.rightDigits + ") topcentershow" ] - -class EAN13(UPCA): - - def __init__(self,arg): - self.ndigits=13 # Includes check digit! - UPCA.__init__(self,arg) - leftBits = self.bits[0:42] - rightBits = self.bits[42:] - leftGuard="L0L" - rightGuard="L0L" - center="0L0L0" - self.bits = leftGuard + leftBits + center + rightBits + rightGuard - self.leftDigits = self.n[1:7] - self.rightDigits = self.n[7:13] - - def parityPattern(self): - # N.B. parity pattern based on leftmost digit, the UCC Spec calls this - # the "13th" digit. It's not the check digit! - return EAN13PARITY[int(self.n[0])] - def bitchar(self): - return EAN13BITS - -class UPC5Symbol(barCodeSymbol): - - def __init__(self,arg,heightMultiplier=1,barWidthReduction=0): - # arg is a string with the 5 digit add-on. - self.barWidthReduction=barWidthReduction - self.upc5 = UPC5(arg) - self.moduleWidth = 0.0130 - specModuleHeight = 0.852 - self.moduleHeight = 0.852 * heightMultiplier - self.bits = self.upc5.bits - barCodeSymbol.__init__(self) - - def pslines(self): - return self.bitsComment() + \ - self.psSetModuleWidth() + \ - self.psSetBarHeight() + \ - self.psbars() - - def bb(self): - # Note quiet zone is there even if we don't print the ">". - return [ 0, 0, self.patternWidth*72+10, self.moduleHeight*72+10 ] - -UPC5Error = "Something wrong with 5-digit price code add-on." -class UPC5(UPC): - - def __init__(self,arg): - self.ndigits=5 # Includes check digit! - p=re.search("[^0-9]",arg) - if p: - badchar=arg[p.start()] - raise UPC5Error, "\"%s\" is wrong. The character \"%s\" is not allowed. Price code add-on should contain %d digits and nothing else. Or leave blank to suppress the UPC-5 code." % (arg,badchar,self.ndigits) - elif len(arg) != self.ndigits: - raise UPC5Error, \ - "\"%s\" is wrong. Price code add-on should have exactly %d digits." % (arg,self.ndigits) - UPC.__init__(self,arg) - self.setbits(self.n) - leftGuard="1011" - # no right guard for UPC 5-digit add-on - # Have to insert pesky delineators: - delineator = "01" - self.bits = leftGuard + \ - self.bits[0:7] + delineator + \ - self.bits[7:14] + delineator + \ - self.bits[14:21] + delineator + \ - self.bits[21:28] + delineator + \ - self.bits[28:35] - - def checkDigit(self,arg): # UPC5 - weight=[3,9,3,9,3]; sum = 0 - for i in range(5): - sum = sum + int(arg[i]) * weight[i] - return self.xstring(sum % 10) - - def verifyCheckDigit(self): # UPC2/5 checksum not in number - return - - def parityPattern(self): - return UPC5PARITY[int(self.x)] - def bitchar(self): - return UPC5BITS - -class bookland(barCodeSymbol): - - def __init__(self,isbn,price="",*rest): - - - # Some defaults: - ean13font=EAN13FONT - isbnfont=ISBNFONT - upc5font = UPC5FONT - zone=None - heightMultiplier=1.0 - commandLine="" - barWidthReduction=0 - - # Maybe different fonts: - if len(rest)>0: - font=rest[0] - if font: - ean13font=font - isbnfont=font - upc5font=font - if len(rest)>1: - zone=rest[1] - if len(rest)>2: - heightMultiplier=float(rest[2]) - if len(rest) > 3: - commandLine=rest[3] - if len(rest) > 4: - barWidthReduction=float(rest[4]) - - # Initial setup: - - self.ps = psfile() - self.isbn = ISBN(isbn) - - # Header, EAN13 bars, EAN13 number, and ISBN: - - if self.isbn.name=="ISMN": - self.ean13Symbol = EAN13Symbol("9790"+self.isbn.n[1:9],ean13font,heightMultiplier,barWidthReduction) - elif self.isbn.name=="ISBN": - self.ean13Symbol = EAN13Symbol("978"+self.isbn.n[:9],ean13font,heightMultiplier,barWidthReduction) - else: - raise BooklandError, "Internal error doing %s, please report as bug" % isbn - - self.ps.orbb(self.ean13Symbol.bb()) - comments = ["", - " This is free software and comes with NO WARRANTY WHATSOVER", - " Think twice before going to press with this bar code!", - "", - "Command line: %s" % commandLine, - "" ] - self.ps.lines = self.ps.header(self.isbn.s,comments,ean13font,isbnfont,upc5font) + \ - [ "ean13font" ] + \ - self.ean13Symbol.pslines() +\ - [ "isbnfont" ] + \ - self.ean13Symbol.psTopCenterText("%s %s" % (self.isbn.name,self.isbn.s),isbnfont) - - # 5-digit add-on: (optional for ISBN only) - BLANK=re.compile("^ *$") - if self.isbn.name=="ISBN" and not BLANK.match(price): - # 105 = 95 + 10; 10 = separation (min is 9) - translate=[ self.ps.translate( self.ean13Symbol.moduleWidth * 72 * 105, 0 ) ] - self.upc5Symbol = UPC5Symbol(price,heightMultiplier,barWidthReduction) - self.ps.orbb(self.upc5Symbol.bb()) - self.ps.lines = self.ps.lines + \ - translate + \ - self.upc5Symbol.pslines() + \ - [ "upc5font" ] +\ - self.upc5Symbol.psBottomRightText(price,upc5font) - if zone: self.ps.lines=self.ps.lines + self.upc5Symbol.psGreaterThan(upc5font) - else: - self.ps.lines.append("%% Skipping UPC-5 price code symbol per request") - - self.ps.lines=self.ps.lines + self.ps.trailer() - - # Can now set bounding box. - - self.ps.setbb() - -# Here we go ... - -if __name__ == '__main__': - - def printUsage(): - print "Usage: bookland [-h|--help] [-v|--version] [-x|--check] [-f|--font=] [-s|--height=] [-r|--reduction=] [-o|outfile=] [-z|--quietzone] [| ]" - print "Report bugs to " + MAINTAINER - - def printVersion(): - sys.stderr.write("%s version %s %s.\n" % (MYNAME,MYVERSION,COPYRIGHT)) - sys.stderr.write("Bugs to %s\n" % MAINTAINER) - sys.stderr.write("This is free software and comes with NO WARRANTY\n") - - import getopt - try: - opts,args = getopt.getopt(sys.argv[1:], - "xr:s:uvf:hzo:", - ["reduction=","outfile=","height=","noupc", - "check","version","help","font=","quietzone"]) - except: - printUsage() - sys.exit(0) - - # some initial defaults: - isbn = "1-56592-197-6" # Mark Lutz, "Programming Python", - # O'Reilly, Sebastopol CA, 1996 - price = "90000" - font=None - zone=None - checkonly=None - outfile=None - heightMultiplier=1 - commandLine = string.join(sys.argv) - barWidthReduction = 0 - - # parse command line: - for opt,val in opts: - if opt in ("-v","--version"): - printVersion() - sys.exit(0) - elif opt in ("-h","--help"): - printUsage() - sys.exit(0) - elif opt in ("-f","--font"): - font=val - elif opt in ("-z","--quietzone"): - zone=1 - elif opt in ("-x","--check"): - checkonly=1 - elif opt in ("-s","--height"): - heightMultiplier = float(val) - elif opt in ("-r","--reduction"): - barWidthReduction = val - elif opt in ("-o","--outfile"): - outfile=val - if len(args)==1: - isbn=args[0] - elif len(args)==2: - isbn=args[0] - price=args[1] - - # Do stuff. - - printVersion() - try: - b = bookland(isbn,price,font,zone,heightMultiplier, - commandLine,barWidthReduction) - if not checkonly: b.ps.out(outfile) - if outfile: - sys.stderr.write("Output written to %s\n" % outfile) - except BooklandError, message: - sys.stderr.write(BooklandError + ": " + message + "\n") - sys.exit(1) diff --git a/glabels2/barcode-0.98/cmdline.c b/glabels2/barcode-0.98/cmdline.c deleted file mode 100644 index a69a825b..00000000 --- a/glabels2/barcode-0.98/cmdline.c +++ /dev/null @@ -1,177 +0,0 @@ -/* - * cmdline.c -- parse a command line using getopt, environment and defaults - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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. - * - * Changes: - * Michele Comitini (mcm@glisco.it): better handling of numeric type args. - */ - -#include -#include -#include - -#ifdef NO_GETOPT - /* use replacement */ - #include "compat/getopt.h" -#else - #include -#endif - -#include "cmdline.h" - -/* In case of error, print help string and return error (-1) */ -int commandline_errormsg(FILE *f, struct commandline *args, - char *prgname, char *messagehead) -{ - char *buffer; - char *buffer2; - int len; - struct commandline *ptr; - - if (!messagehead) { - fprintf(f,"%s: Error in cmdline\nPossible options:\n",prgname); - } else { - fprintf(f,"%s: %s",prgname,messagehead); - } - - for (ptr = args; ptr->option; ptr++) { - if (ptr->descrip) { - len = strlen(ptr->descrip); - len += ptr->default_v ? strlen(ptr->default_v) : 6; - len += ptr->env ? strlen(ptr->env) : 6; - buffer2 = malloc(len+3); /* 3 to be safe :) */ - len += 32; - if (buffer2) { - buffer = malloc(len); - if (buffer) { - sprintf(buffer2, ptr->descrip, - ptr->default_v ? ptr->default_v : "(none)", - ptr->env ? ptr->env : "(none)"); - sprintf(buffer, " -%c %s %s", ptr->option, - ptr->type ? "" : " ", buffer2); - fprintf(f, "%s\n",buffer); - free(buffer); - } - free(buffer2); - } - } - } - return -1; -} - -/* - * Associate formats to type. - */ -struct type_fmt { - enum option_type type; - char *fmt; -}; -static struct type_fmt formats[] = { - {CMDLINE_I, "%i%s"}, /* the trailing "%s" is used for error check */ - {CMDLINE_D, "%d%s"}, - {CMDLINE_X, "%x%s"}, - {CMDLINE_O, "%o%s"}, - {CMDLINE_F, "%lf%s"}, - {CMDLINE_P, "%p%s"}, - {0, NULL} /* If we get here, it's CMDLINE_S: no sscanf buf strcpy() */ -}; - - -/* Parse one argument (default or provided) */ -static int commandline_oneopt(struct commandline *ptr, char *value) -{ - struct type_fmt *tptr; - char *trash = value ? strdup(value) : NULL; - - /* convert it, if needed */ - if ((ptr->type != CMDLINE_NONE) && ptr->result) { - for (tptr = formats; tptr->type; tptr++) - if (tptr->type == ptr->type) - break; - if (!tptr->type) /* not found: it is a string */ - *(char **)(ptr->result) = value; - else - if (sscanf(value, tptr->fmt, ptr->result, trash)!=1) { - free(trash); - return -1; - } - } - if (trash) - free(trash); - - if ((ptr->type == CMDLINE_NONE) && ptr->result) /* no type, just count */ - (*(int *)(ptr->result))++; - - /* call the function, if needed */ - if (ptr->fun) { - if (ptr->type) { - if (ptr->result) return ptr->fun(ptr->result); /* converted */ - return ptr->fun(value); /* type, but not converted */ - } - return ptr->fun(NULL); /* no type: just call it */ - } - return 0; -} - -/* The main function */ -int commandline(struct commandline *args, int argc, char **argv, - char *errorhead) -{ - struct commandline *ptr; - char *getopt_desc = (char *)calloc(512, 1); - int desc_offset = 0; - int opt, retval; - char *value; - - /* Build getopt string and process defaults values */ - for (ptr = args; ptr->option; ptr++) { - getopt_desc[desc_offset++] = ptr->option; - if (ptr->type) getopt_desc[desc_offset++] = ':'; - - value = NULL; - if (ptr->env) - value = getenv(ptr->env); - if (!value) - value = ptr->default_v; - if (value && (retval = commandline_oneopt(ptr, value))) { - /* - * if the function returns a specific (not -1) value, it already - * printed its message, so avoid the generic help - */ - if (retval == -1) - commandline_errormsg(stderr, args, argv[0], errorhead); - return retval; - } - } - - /* Run getopt and process material */ - while ((opt = getopt(argc, argv, getopt_desc)) != -1) { - for (ptr = args; ptr->option; ptr++) - if (opt == ptr->option) - break; - if (!ptr->option) /* unknown option */ - return commandline_errormsg(stderr, args, argv[0], errorhead); - if ( (retval = commandline_oneopt(ptr, optarg)) ) { /* wrong arg */ - if (retval == -1) - commandline_errormsg(stderr, args, argv[0], errorhead); - return retval; - } - } - return 0; -} diff --git a/glabels2/barcode-0.98/cmdline.h b/glabels2/barcode-0.98/cmdline.h deleted file mode 100644 index 69319915..00000000 --- a/glabels2/barcode-0.98/cmdline.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * cmdline.h -- generic commandline editing (uses getopt, only short) - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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. - * - */ - -/* - * The options may have different arguments of different type - */ -enum option_type { - CMDLINE_NONE=0, /* no argument after option */ - CMDLINE_I, /* integer (any base) */ - CMDLINE_D, /* decimal integer */ - CMDLINE_X, /* hex integer */ - CMDLINE_O, /* octal integer */ - CMDLINE_S, /* string */ - CMDLINE_F, /* double float */ - CMDLINE_P, /* pointer */ -}; - - -struct commandline { - int option; /* Single byte: option id */ - int type; /* Type of argument, used in sscanf */ - void *result; /* Store data here, if non null */ - int (*fun)(void *); /* Call if defined: arg is "result" or input string */ - char *env; /* Where to get runtime defaults, may be NULL */ - char *default_v; /* The compile-time default, may be NULL */ - char *descrip; /* For err msg. May have %s's for default and env */ -}; - -/* returns: 0 or -1. "optarg" is global (see getopt) */ -extern int commandline(struct commandline *args, - int argc, char **argv, char *errorhead); - -/* prints an error message based on "args" */ -extern int commandline_errormsg(FILE *f, struct commandline *args, - char *prgname, char *messagehead); - - - - diff --git a/glabels2/barcode-0.98/codabar.c b/glabels2/barcode-0.98/codabar.c deleted file mode 100644 index 7065b9ea..00000000 --- a/glabels2/barcode-0.98/codabar.c +++ /dev/null @@ -1,182 +0,0 @@ -/* - * codabar.c -- encoding for Codabar - * - * Copyright (c) 2000 Leonid A. Broukhis (leob@mailcom.com) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - - -/* this is ordered in decades to simplify encoding */ -static char alphabet[] = - "0123456789" "-$:/.+ABCD"; - -#define CODE_A 16 -#define CODE_B 17 - -#define NARROW 12 -#define WIDE 14 - -/* Patterns */ -static char *patterns[] = { -"1111133","1111331","1113113","3311111","1131131", -"3111131","1311113","1311311","1331111","3113111", -"1113311","1133111","3111313","3131113","3131311", -"1131313","1133131","1313113","1113133","1113331" }; - -/* - * Check that the text can be encoded. Returns 0 or -1. - * If it's all lowecase convert to uppercase and accept it. - * If the first character is a letter (A to D), the last one must be too; - * no other character should be a letter. - */ -int Barcode_cbr_verify(unsigned char *text) -{ - int i, lower=0, upper=0; - int startpresent = 0; - - if (!strlen(text)) - return -1; - for (i=0; text[i]; i++) { - char * pos; - if (isupper(text[i])) upper++; - if (islower(text[i])) lower++; - pos = strchr(alphabet,toupper(text[i])); - if (!pos) - return -1; - if (i == 0 && pos - alphabet >= CODE_A) - startpresent = 1; - else if (pos - alphabet >= CODE_A && - (!startpresent || i != strlen(text) - 1)) - return -1; - } - if (lower && upper) - return -1; - return 0; -} - -static int add_one(char *ptr, int code) -{ - sprintf(ptr,"1%s", /* separator */ patterns[code]); - return 0; -} - -/* - * The encoding functions fills the "partial" and "textinfo" fields. - * Lowercase chars are converted to uppercase - */ -int Barcode_cbr_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *c, *ptr, *textptr; - int i, code, textpos, usesum, checksum = 0, startpresent; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("codabar"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - /* the partial code is 8 * (head + text + check + tail) + margin + term. */ - partial = malloc( (strlen(text) + 3) * 8 + 2); - if (!partial) { - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn:fff:c " * (strlen + check) +term */ - textinfo = malloc(10*(strlen(text) + 1) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - ptr = partial; - textptr = textinfo; - textpos = 0; - usesum = bc->flags & BARCODE_NO_CHECKSUM ? 0 : 1; - /* if no start character specified, A is used as a start character */ - if (!isalpha(text[0])) { - add_one(ptr, CODE_A); - ptr += strlen(ptr); - textpos = WIDE; - checksum = CODE_A; - startpresent = 0; - } else { - startpresent = 1; - } - for (i=0; ierror = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - return -1; - } - code = c - alphabet; - add_one(ptr, code); - sprintf(textptr, "%i:12:%c ", textpos, toupper(text[i])); - textpos += code < 12 ? NARROW : WIDE; - textptr += strlen(textptr); - ptr += strlen(ptr); - checksum += code; - if (startpresent && usesum && i == strlen(text) - 2) { - /* stuff a check symbol before the stop */ - c = strchr(alphabet, toupper(text[i+1])); - if (!c) /* impossible */ - continue; - code = c - alphabet; - checksum += code; - - /* Complement to a multiple of 16 */ - checksum = (checksum + 15) / 16 * 16 - checksum; - add_one(ptr, checksum); - ptr += strlen(ptr); - } - } - if (!startpresent) { - if (usesum) { - /* if no start character specified, B is used as a stop char */ - checksum += CODE_B; - checksum = (checksum + 15) / 16 * 16 - checksum; - add_one(ptr, checksum); - ptr += strlen(ptr); - } - add_one(ptr, CODE_B); - } - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} diff --git a/glabels2/barcode-0.98/code128.c b/glabels2/barcode-0.98/code128.c deleted file mode 100644 index cebba54c..00000000 --- a/glabels2/barcode-0.98/code128.c +++ /dev/null @@ -1,607 +0,0 @@ -/* - * code128.c -- encoding for code128 (A, B, C) - * - * Copyright (c) 1999,2000 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * Copyright (c) 2000 Leonid A. Broukhis (leob@mailcom.com) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - -static char *codeset[] = { - "212222", "222122", "222221", "121223", "121322", /* 0 - 4 */ - "131222", "122213", "122312", "132212", "221213", - "221312", "231212", "112232", "122132", "122231", /* 10 - 14 */ - "113222", "123122", "123221", "223211", "221132", - "221231", "213212", "223112", "312131", "311222", /* 20 - 24 */ - "321122", "321221", "312212", "322112", "322211", - "212123", "212321", "232121", "111323", "131123", /* 30 - 34 */ - "131321", "112313", "132113", "132311", "211313", - "231113", "231311", "112133", "112331", "132131", /* 40 - 44 */ - "113123", "113321", "133121", "313121", "211331", - "231131", "213113", "213311", "213131", "311123", /* 50 - 54 */ - "311321", "331121", "312113", "312311", "332111", - "314111", "221411", "431111", "111224", "111422", /* 60 - 64 */ - "121124", "121421", "141122", "141221", "112214", - "112412", "122114", "122411", "142112", "142211", /* 70 - 74 */ - "241211", "221114", "413111", "241112", "134111", - "111242", "121142", "121241", "114212", "124112", /* 80 - 84 */ - "124211", "411212", "421112", "421211", "212141", - "214121", "412121", "111143", "111341", "131141", /* 90 - 94 */ - "114113", "114311", "411113", "411311", "113141", - "114131", "311141", "411131", "b1a4a2", "b1a2a4", /* 100 - 104 */ - "b1a2c2", "b3c1a1b" -}; - -#define START_A 103 -#define START_B 104 -#define START_C 105 -#define STOP 106 -#define SHIFT 98 /* only A and B */ -#define CODE_A 101 /* only B and C */ -#define CODE_B 100 /* only A and C */ -#define CODE_C 99 /* only A and B */ -#define FUNC_1 102 /* all of them */ -#define FUNC_2 97 /* only A and B */ -#define FUNC_3 96 /* only A and B */ -/* FUNC_4 is CODE_A when in A and CODE_B when in B */ - -#define SYMBOL_WID 11 /* all of them are 11-bar wide */ - -/* - * code 128-b includes all printable ascii chars - */ - -int Barcode_128b_verify(unsigned char *text) -{ - if (text[0] == '\0') - return -1; - while (*text && *text>=32 && !(*text&0x80)) - text++; - if (*text) - return -1; /* a non-ascii char */ - return 0; /* ok */ -} - -int Barcode_128b_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *textptr; - int i, code, textpos, checksum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("code 128-B"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - /* the partial code is 6* (head + text + check + tail) + final + term. */ - partial = malloc( (strlen(text) + 4) * 6 +2); - if (!partial) { - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn:fff:c " * strlen +term */ - textinfo = malloc(10*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - /* up to now, it was the same code as other encodings */ - - strcpy(partial, "0"); /* the first space */ - strcat(partial, codeset[START_B]); - checksum += START_B; /* the start char is counted in the checksum */ - textptr = textinfo; - textpos = SYMBOL_WID; - - for (i=0; ierror = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - return -1; - } - code = text[i]-32; - strcat(partial, codeset[code]); - checksum += code * (i+1); /* first * 1 + second * 2 + third * 3... */ - sprintf(textptr, "%i:12:%c ", textpos, text[i]); - textptr += strlen(textptr); - textpos += SYMBOL_WID; /* width of each code */ - } - /* Add the checksum, independent of BARCODE_NO_CHECKSUM */ - checksum %= 103; - strcat(partial, codeset[checksum]); - /* and the end marker */ - strcat(partial, codeset[STOP]); - - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} - -/* - * code 128-c is only digits, but two per symbol - */ - -int Barcode_128c_verify(unsigned char *text) -{ - if (text[0] == '\0') - return -1; - /* must be an even number of digits */ - if (strlen(text)%2) - return -1; - /* and must be all digits */ - for (; *text; text++) - if (!isdigit(*text)) - return -1; - return 0; -} - -int Barcode_128c_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *textptr; - int i, code, textpos, checksum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("code 128-C"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - /* the partial code is 6* (head + text + check + tail) + final + term. */ - partial = malloc( (strlen(text) + 3) * 6 +2); - if (!partial) { - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn.5:fff:c " * strlen +term */ - textinfo = malloc(12*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - strcpy(partial, "0"); /* the first space */ - strcat(partial, codeset[START_C]); - checksum += START_C; /* the start char is counted in the checksum */ - textptr = textinfo; - textpos = SYMBOL_WID; - - for (i=0; text[i]; i+=2) { - if (!isdigit(text[i]) || !isdigit(text[i+1])) { - bc->error = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - return -1; - } - code = (text[i]-'0') * 10 + text[i+1]-'0'; - strcat(partial, codeset[code]); - checksum += code * (i/2+1); /* first * 1 + second * 2 + third * 3... */ - - /* print as "%s", because we have ".5" positions */ - sprintf(textptr, "%g:9:%c %g:9:%c ", (double)textpos, text[i], - textpos + (double)SYMBOL_WID/2, text[i+1]); - textptr += strlen(textptr); - textpos += SYMBOL_WID; /* width of each code */ - } - /* Add the checksum, independent of BARCODE_NO_CHECKSUM */ - checksum %= 103; - strcat(partial, codeset[checksum]); - /* and the end marker */ - strcat(partial, codeset[STOP]); - - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} - -/* - * generic (full-featured) code128 implementation: it selects between - * A, B, C according to the data being encoded. F1, F2, F3, F4 are expressed - * using ascii chars 0xc1, 0xc2, 0xc3, 0xc4 (0301, 0302, 0303, 0304). - * Char '\0' is expressed by 0x80 (0200). - */ - -int Barcode_128_verify(unsigned char *text) -{ - if (text[0] == '\0') - return -1; - while (*text && (*text<=0x80 || (*text >= 0xc1 && *text <= 0xc4))) - text++; - if (*text) - return -1; /* unencodable character */ - return 0; /* ok */ -} - - -/* - * These functions are extracted from Barcode_128_encode for clarity. - * It deals with choosing the symbols used to represent the text - * and returns a dynamic array of integers, terminated by -1. - * - * The algorithm used in choosing the codes comes from App 2 of - * "El Codigo Estandar EAN/UCC 128", courtesy of AECOC, Spain. - * Thanks to Dani Pardo for getting permission and giving me a copy - * of the document - */ - -#define NEED_CODE_A(c) ((c)<32 || (c)==0x80) -#define NEED_CODE_B(c) ((c)>=96 && (c)<128) - -static int Barcode_a_or_b(unsigned char *text) -{ - for ( ; *text; text++) { - if (NEED_CODE_A(*text)) - return 'A'; - if (NEED_CODE_B(*text)) - return 'B'; - } - return 0; /* any */ -} - -/* code is either 'A' or 'B', and value must be valid */ -static int Barcode_encode_as(int code, int value) -{ - - /* first check the special chars */ - if (value == 0xC1) return FUNC_1; - if (value == 0xC2) return FUNC_2; - if (value == 0xC3) return FUNC_3; - if (value == 0xC4) { /* F4 */ - if (code == 'A') return CODE_A; - return CODE_B; - } - - /* then check ascii values */ - if (value >= 0x20 && value <= 0x5F) - return value - 0x20; /* both codes */ - if (value == 0x80) return 64; /* code A */ - if (value < 0x20) return value+64; /* code A */ - if (value >= 0x60) return value - 0x20; /* code B */ - /* can't happen */ - return -1; -} - -static int *Barcode_128_make_array(struct Barcode_Item *bc, int *lptr) -{ - int len, *codes; - unsigned char *s; - int i=0, j, code, checksum; - - /* allocate twice the text length + 5, as this is the worst case */ - len = 2 * strlen(bc->ascii) + 5; - codes = malloc(len * sizeof(int)); - s = bc->ascii; - - /* choose the starting code */ - if (s[2]=='\0' && isdigit(s[0]) && isdigit(s[1])) { - code = 'C'; - } else if (isdigit(s[0])&&isdigit(s[1]) && isdigit(s[2])&&isdigit(s[3])) { - code = 'C'; - } else { - code = Barcode_a_or_b(s); - if (!code) code = 'B'; /* default */ - } - codes[i++] = START_A + code - 'A'; - - for (s = bc->ascii; *s; /* increments are in the loop */) { - switch(code) { - - case 'C': - if (s[0] == 0xC1) { /* F1 is valid */ - codes[i++] = FUNC_1; - s++; - } else if (isdigit(s[0]) && isdigit(s[1])) { - /* encode two digits */ - codes[i++] = (s[0]-'0') * 10 + s[1]-'0'; - s += 2; - } else { - /* change code */ - code = Barcode_a_or_b(s); - if (!code) code = 'B'; - codes[i++] = (code == 'A') ? CODE_A : CODE_B; - } - break; - - case 'B': - case 'A': - for (j=0; isdigit(s[j]); j++) - ; - if (j>=4) { /* if there are 4 or more digits, turn to C */ - if (j&1) { - /* odd number: encode one first */ - codes[i++] = *(s++) - ' '; - } - codes[i++] = CODE_C; - code = 'C'; - } else if (code == 'A' && NEED_CODE_B(*s)) { - /* check whether we should use SHIFT or change code */ - j = Barcode_a_or_b(s+1); - if (j == 'B') { - codes[i++] = CODE_B; - code = 'B'; - } else { - codes[i++] = SHIFT; - codes[i++] = Barcode_encode_as('B', *s); - s++; - } - } else if (code == 'B' && NEED_CODE_A(*s)) { - /* check whether we should use SHIFT or change code */ - j = Barcode_a_or_b(s+1); - if (j == 'A') { - codes[i++] = CODE_A; - code = 'A'; - } else { - codes[i++] = SHIFT; - codes[i++] = Barcode_encode_as('A', *s); - s++; - } - } else { - codes[i++] = Barcode_encode_as(code, *s); - s++; - } - break; - } - } - /* add the checksum */ - checksum = codes[0]; - for (j=1; j len) { - fprintf(stderr, "impossible: length is > allocated len\n"); - } - *lptr = i; - return codes; -} - -/* - * Encoding is tricky, in that we cannot print the ascii - * representation in an easy way. Therefore, just skip non-printable - * chars and try to fit the rest somehow. - */ -int Barcode_128_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *textptr; - int *codes; /* dynamic */ - int i, c, len; - double textpos, size, step; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("code 128"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - - codes = Barcode_128_make_array(bc, &len); - if (!codes) return -1; - - /* the partial code is 6*codelen + ini + term (+margin) */ - partial = malloc( 6 * len + 4); - if (!partial) { - bc->error = errno; - free(codes); - return -1; - } - - /* the text information is at most "nnn.n:ff.f:c " * strlen +term */ - textptr = textinfo = malloc(13*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - free(codes); - return -1; - } - - /* up to now, it was almost the same code as other encodings */ - - strcpy(partial, "0"); /* the first space */ - for (i=0; i 12.0) size = 12.0; - - /* align the text to the left, using its natural size */ - step = (int)(10 * (size/18.0 * SYMBOL_WID) + .5) / 10.0; - textpos = SYMBOL_WID; - - for (i=0; i 0xc0) c = ' '; /* F code */ - sprintf(textptr, "%g:%g:%c ", textpos, size, c); - textptr += strlen(textptr); - textpos += step; - } - - bc->partial = partial; - bc->textinfo = textinfo; - free(codes); - return 0; -} - -/* - * A raw 128 code is given as a sequence of space separated numbers - * from 0 to 105, starting from the start code to be (Leonid) - */ - -int Barcode_128raw_verify(unsigned char *text) -{ - int n; - unsigned val; - - if (!strlen(text)) - return -1; - while (*text) { - if (sscanf(text, "%u%n", &val, &n) < 1) - return -1; - if (val > 105) - return -1; - text += n; - } - return 0; -} - -int Barcode_128raw_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *textptr; - int i, n, count, code, textpos, checksum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("128raw"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - /* - * length of partial code is unknown in advance, but it is - * at most 6* (1+text/2 + check + tail) + final + terminator - */ - partial = malloc( (3+ strlen(text)/2) * 6 + 2); - if (!partial) { - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn.5:fff:c " * 1+strlen/2 +term */ - textinfo = malloc(12 * (1+strlen(text)/2) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - strcpy(partial, "0"); /* the first space */ - textptr = textinfo; - textpos = 0; - - for (i=0, count = 0; i < strlen(text); count++) { - if (sscanf(text + i, "%u%n", &code, &n) < 1) { - bc->error = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - return -1; - } - strcat(partial, codeset[code]); - - /* - * since the start code is part of the "raw" input, it is - * counted in the checksum by itself - */ - if (!count) checksum += code; /* the start code */ - else checksum += code * count; /* first * 1 + second * 2 ... */ - - /* - * print as "%s", because we have ".5" positions - * also, use a size of 9 like codeC above, as each symbol is - * represented by two chars - */ - sprintf(textptr, "%g:9:%c %g:9:%c ", (double)textpos, - code >= 100 ? 'A' : code/10 + '0', - textpos + (double)SYMBOL_WID/2, code%10 + '0'); - textptr += strlen(textptr); - textpos += SYMBOL_WID; /* width of each code */ - i += n; - } - /* Add the checksum, independent of BARCODE_NO_CHECKSUM */ - checksum %= 103; - strcat(partial, codeset[checksum]); - /* and the end marker */ - strcat(partial, codeset[STOP]); - - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} - diff --git a/glabels2/barcode-0.98/code39.c b/glabels2/barcode-0.98/code39.c deleted file mode 100644 index 3308c950..00000000 --- a/glabels2/barcode-0.98/code39.c +++ /dev/null @@ -1,173 +0,0 @@ -/* - * code39.c -- encoding for code39 - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - - -/* this is ordered in decades to simplify encoding */ -static char alphabet[] = - "1234567890" "ABCDEFGHIJ" "KLMNOPQRST" "UVWXYZ-. *" "$/+%"; - -/* the checksum alphabet has a different order */ -static char checkbet[] = - "0123456789" "ABCDEFGHIJ" "KLMNOPQRST" "UVWXYZ-. $" "/+%"; - -/* The first 40 symbols repeat this bar pattern */ -static char *bars[] = { - "31113","13113","33111","11313","31311", - "13311","11133","31131","13131","11331"}; - -/* The first 4 decades use these space patterns */ -static char *spaces[] = {"1311","1131","1113","3111"}; - -/* the last four symbols are special */ -static char *specialbars[] = { - "11111","11111","11111","11111"}; - -static char *specialspaces[] = { - "3331","3313","3133","1333"}; - -static char *fillers[]= { - "0a3a1c1c1a", - "1a3a1c1c1a" -}; - - -/* - * Check that the text can be encoded. Returns 0 or -1. - * If it's all lowecase convert to uppercase and accept it - */ -int Barcode_39_verify(unsigned char *text) -{ - int i, lower=0, upper=0; - - if (text[0] == '\0') - return -1; - for (i=0; text[i]; i++) { - if (isupper(text[i])) upper++; - if (islower(text[i])) lower++; - if (!strchr(alphabet,toupper(text[i]))) - return -1; - } - if (lower && upper) - return -1; - return 0; -} - -static int add_one(char *ptr, int code) -{ - char *b, *s; - - if (code < 40) { - b = bars[code%10]; - s = spaces[code/10]; - } else { - b = specialbars[code-40]; - s = specialspaces[code-40]; - } - sprintf(ptr,"1%c%c%c%c%c%c%c%c%c", /* separator */ - b[0], s[0], b[1], s[1], b[2], s[2], - b[3], s[3], b[4]); - return 0; -} - -/* - * The encoding functions fills the "partial" and "textinfo" fields. - * Lowercase chars are converted to uppercase - */ -int Barcode_39_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *c, *ptr, *textptr; - int i, code, textpos, checksum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("code 39"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - /* the partial code is 10* (head + text + check + tail) + margin + term. */ - partial = malloc( (strlen(text) + 3) * 10 +2); - if (!partial) { - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn:fff:c " * strlen +term */ - textinfo = malloc(10*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - strcpy(partial, fillers[0]); - ptr = partial + strlen(partial); - textptr = textinfo; - textpos = 22; - - for (i=0; text[i]; i++) { - c = strchr(alphabet, toupper(text[i])); - if (!c) { - bc->error = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - return -1; - } - code = c - alphabet; - add_one(ptr, code); - c = strchr(checkbet,*c); - if (c) /* the '*' is not there */ - checksum += (c-checkbet); - sprintf(textptr, "%i:12:%c ", textpos, toupper(text[i])); - - textpos += 16; /* width of each code */ - textptr += strlen(textptr); - ptr += strlen(ptr); - } - /* Add the checksum */ - if ( (bc->flags & BARCODE_NO_CHECKSUM)==0 ) { - code = (strchr(alphabet, checkbet[checksum % 43]) - alphabet); - add_one(ptr, code); - } - strcat(ptr, fillers[1]); /* end */ - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} diff --git a/glabels2/barcode-0.98/code93.c b/glabels2/barcode-0.98/code93.c deleted file mode 100644 index 73f8cee3..00000000 --- a/glabels2/barcode-0.98/code93.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * code39.c -- encoding for code39 - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * Copyright (c) 2001 Nathan D. Holmes / FedEx Services (ndholmes@fedex.com) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - - -/* this is ordered in decades to simplify encoding */ -static char alphabet[] = - "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%"; - -static char *codeset[] = { - "131112", "111213", "111312", "111411", "121113", /* 0 - 4 */ - "121212", "121311", "111114", "131211", "141111", /* 5 - 9 */ - "211113", "211212", "211311", "221112", "221211", /* A - E */ - "231111", "112113", "112212", "112311", "122112", /* F - J */ - "132111", "111123", "111222", "111321", "121122", /* K - O */ - "131121", "212112", "212211", "211122", "211221", /* P - T */ - "221121", "222111", "112122", "112221", "122121", /* U - Y */ - "123111", "121131", "311112", "311211", "321111", /* Z - $ */ - "112131", "113121", "211131", "121221", "312111", /* / - (%) */ - "311121", "122211", "111141" /* (/) - (terminator) */ -}; - - -/* 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111 */ -/* 00000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111122222222 */ -/* 01234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567 */ -static char shiftset[] = - "%$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%% /// ///// / /%%%%%% %%%%%%++++++++++++++++++++++++++%%%%%"; -static char shiftset2[] = - "UABCDEFGHIJKLMNOPQRSTUVWXYZABCDE ABC FGHIJ L ZFGHIJV KLMNOWABCDEFGHIJLKMNOPQRSTUVWXYZPQRST"; - -#define START_STOP 47 -#define EXTEND_DOLLAR 43 -#define EXTEND_PERCENT 44 -#define EXTEND_SLASH 45 -#define EXTEND_PLUS 46 - -/* - * Check that the text can be encoded. Returns 0 or -1. - * All of ASCII-7 is accepted. - */ -int Barcode_93_verify(unsigned char *text) -{ - int i; - - if (!strlen(text)) - return -1; - for (i=0; text[i]; i++) { - - /* Test if beyond the range of 7-bit ASCII */ - if ((int)text[i] > 127) - return -1; - } - return 0; -} - -/* - * The encoding functions fills the "partial" and "textinfo" fields. - * Lowercase chars are converted to uppercase - */ -int Barcode_93_encode(struct Barcode_Item *bc) -{ - static unsigned char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *c, *textptr; - int *checksum_str; - int i, code, textpos, checksum_len=0; - int c_checksum = 0; - int k_checksum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("code 93"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - - /* the partial code is 6 * (head + 2* text + 2* check + tail) + margin + term. */ - partial = malloc( (strlen(text) *2 + 4) * 6 +2); - if (!partial) { - bc->error = errno; - return -1; - } - - checksum_str = (int *)malloc( (strlen(text) + 3) * 2 * sizeof(int)); - if (!checksum_str) { - free(partial); - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn:fff:c " * strlen +term */ - textinfo = malloc(10*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - free(checksum_str); - return -1; - } - - textptr = textinfo; - textpos = 22; - strcpy(partial, "0"); - strcat(partial, codeset[START_STOP]); - - for (i=0; iflags & BARCODE_NO_CHECKSUM)==0 ) - { - for(i=1; i<=checksum_len; i++) - { - c_checksum += i * (int)checksum_str[checksum_len - i]; - k_checksum += (i+1) * (int)checksum_str[checksum_len - i]; - } - - c_checksum = c_checksum % 47; - k_checksum += c_checksum; - k_checksum = k_checksum % 47; - - strcat(partial, codeset[c_checksum]); - strcat(partial, codeset[k_checksum]); - - } - strcat(partial, codeset[START_STOP]); /* end */ - - /* Encodes final 1-unit width bar to turn the start character into a stop char */ - strcat(partial, "1"); - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} diff --git a/glabels2/barcode-0.98/compat/getopt.c b/glabels2/barcode-0.98/compat/getopt.c deleted file mode 100644 index 91f00b55..00000000 --- a/glabels2/barcode-0.98/compat/getopt.c +++ /dev/null @@ -1,831 +0,0 @@ -/* Getopt for GNU. - NOTE: getopt is now part of the C library, so if you don't know what - "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu - before changing it! - - Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 1996 - 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* This tells Alpha OSF/1 not to define a getopt prototype in . - Ditto for AIX 3.2 and . */ -#ifndef _NO_PROTO -#define _NO_PROTO -#endif - -#ifdef HAVE_CONFIG_H -#include -#endif - -#if !defined (__STDC__) || !__STDC__ -/* This is a separate conditional since some stdc systems - reject `defined (const)'. */ -#ifndef const -#define const -#endif -#endif - -#include - -/* Comment out all this code if we are using the GNU C Library, and are not - actually compiling the library itself. This code is part of the GNU C - Library, but also included in many other GNU distributions. Compiling - and linking in this code is a waste when using the GNU C library - (especially if it is a shared library). Rather than having every GNU - program understand `configure --with-gnu-libc' and omit the object files, - it is simpler to just do this in the source for each such file. */ - -#if defined (_LIBC) || !defined (__GNU_LIBRARY__) - - -/* This needs to come after some library #include - to get __GNU_LIBRARY__ defined. */ -#ifdef __GNU_LIBRARY__ -/* Don't include stdlib.h for non-GNU C libraries because some of them - contain conflicting prototypes for getopt. */ -#include -#if defined (_LIBC) || defined (HAVE_UNISTD_H) -#include -#endif -#endif /* GNU C library. */ - -#ifdef VMS -#include -#if HAVE_STRING_H - 0 -#include -#endif -#endif - -#ifdef WIN32 -/* It's not Unix, really. See? Capital letters. */ -#include -#define getpid() GetCurrentProcessId() -#endif - -#ifndef _ -/* This is for other GNU distributions with internationalized messages. - When compiling libc, the _ macro is predefined. */ -#ifdef HAVE_LIBINTL_H -# include -# define _(msgid) gettext (msgid) -#else -# define _(msgid) (msgid) -#endif -#endif - -/* This version of `getopt' appears to the caller like standard Unix `getopt' - but it behaves differently for the user, since it allows the user - to intersperse the options with the other arguments. - - As `getopt' works, it permutes the elements of ARGV so that, - when it is done, all the options precede everything else. Thus - all application programs are extended to handle flexible argument order. - - Setting the environment variable POSIXLY_CORRECT disables permutation. - Then the behavior is completely standard. - - GNU application programs can use a third alternative mode in which - they can distinguish the relative order of options and other arguments. */ - -#include "getopt.h" - -/* For communication from `getopt' to the caller. - When `getopt' finds an option that takes an argument, - the argument value is returned here. - Also, when `ordering' is RETURN_IN_ORDER, - each non-option ARGV-element is returned here. */ - -char *optarg = NULL; - -/* Index in ARGV of the next element to be scanned. - This is used for communication to and from the caller - and for communication between successive calls to `getopt'. - - On entry to `getopt', zero means this is the first call; initialize. - - When `getopt' returns EOF, this is the index of the first of the - non-option elements that the caller should itself scan. - - Otherwise, `optind' communicates from one call to the next - how much of ARGV has been scanned so far. */ - -/* XXX 1003.2 says this must be 1 before any call. */ -int optind = 0; - -/* The next char to be scanned in the option-element - in which the last option character we returned was found. - This allows us to pick up the scan where we left off. - - If this is zero, or a null string, it means resume the scan - by advancing to the next ARGV-element. */ - -static char *nextchar; - -/* Callers store zero here to inhibit the error message - for unrecognized options. */ - -int opterr = 1; - -/* Set to an option character which was unrecognized. - This must be initialized on some systems to avoid linking in the - system's own getopt implementation. */ - -int optopt = '?'; - -/* Describe how to deal with options that follow non-option ARGV-elements. - - If the caller did not specify anything, - the default is REQUIRE_ORDER if the environment variable - POSIXLY_CORRECT is defined, PERMUTE otherwise. - - REQUIRE_ORDER means don't recognize them as options; - stop option processing when the first non-option is seen. - This is what Unix does. - This mode of operation is selected by either setting the environment - variable POSIXLY_CORRECT, or using `+' as the first character - of the list of option characters. - - PERMUTE is the default. We permute the contents of ARGV as we scan, - so that eventually all the non-options are at the end. This allows options - to be given in any order, even with programs that were not written to - expect this. - - RETURN_IN_ORDER is an option available to programs that were written - to expect options and other ARGV-elements in any order and that care about - the ordering of the two. We describe each non-option ARGV-element - as if it were the argument of an option with character code 1. - Using `-' as the first character of the list of option characters - selects this mode of operation. - - The special argument `--' forces an end of option-scanning regardless - of the value of `ordering'. In the case of RETURN_IN_ORDER, only - `--' can cause `getopt' to return EOF with `optind' != ARGC. */ - -static enum -{ - REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER -} ordering; - -/* Value of POSIXLY_CORRECT environment variable. */ -static char *posixly_correct; - -#ifdef __GNU_LIBRARY__ -/* We want to avoid inclusion of string.h with non-GNU libraries - because there are many ways it can cause trouble. - On some systems, it contains special magic macros that don't work - in GCC. */ -#include -#define my_index strchr -#else - -/* Avoid depending on library functions or files - whose names are inconsistent. */ - -char *getenv (); - -static char * -my_index (str, chr) - const char *str; - int chr; -{ - while (*str) - { - if (*str == chr) - return (char *) str; - str++; - } - return 0; -} - -/* If using GCC, we can safely declare strlen this way. - If not using GCC, it is ok not to declare it. */ -#ifdef __GNUC__ -/* Note that Motorola Delta 68k R3V7 comes with GCC but not stddef.h. - That was relevant to code that was here before. */ -#if !defined (__STDC__) || !__STDC__ -/* gcc with -traditional declares the built-in strlen to return int, - and has done so at least since version 2.4.5. -- rms. */ -extern int strlen (const char *); -#endif /* not __STDC__ */ -#endif /* __GNUC__ */ - -#endif /* not __GNU_LIBRARY__ */ - -/* Handle permutation of arguments. */ - -/* Describe the part of ARGV that contains non-options that have - been skipped. `first_nonopt' is the index in ARGV of the first of them; - `last_nonopt' is the index after the last of them. */ - -static int first_nonopt; -static int last_nonopt; - -/* Bash 2.0 gives us an environment variable containing flags - indicating ARGV elements that should not be considered arguments. */ - -static const char *nonoption_flags; -static int nonoption_flags_len; - -/* Exchange two adjacent subsequences of ARGV. - One subsequence is elements [first_nonopt,last_nonopt) - which contains all the non-options that have been skipped so far. - The other is elements [last_nonopt,optind), which contains all - the options processed since those non-options were skipped. - - `first_nonopt' and `last_nonopt' are relocated so that they describe - the new indices of the non-options in ARGV after they are moved. */ - -#if defined (__STDC__) && __STDC__ -static void exchange (char **); -#endif - -static void -exchange (argv) - char **argv; -{ - int bottom = first_nonopt; - int middle = last_nonopt; - int top = optind; - char *tem; - - /* Exchange the shorter segment with the far end of the longer segment. - That puts the shorter segment into the right place. - It leaves the longer segment in the right place overall, - but it consists of two parts that need to be swapped next. */ - - while (top > middle && middle > bottom) - { - if (top - middle > middle - bottom) - { - /* Bottom segment is the short one. */ - int len = middle - bottom; - register int i; - - /* Swap it with the top part of the top segment. */ - for (i = 0; i < len; i++) - { - tem = argv[bottom + i]; - argv[bottom + i] = argv[top - (middle - bottom) + i]; - argv[top - (middle - bottom) + i] = tem; - } - /* Exclude the moved bottom segment from further swapping. */ - top -= len; - } - else - { - /* Top segment is the short one. */ - int len = top - middle; - register int i; - - /* Swap it with the bottom part of the bottom segment. */ - for (i = 0; i < len; i++) - { - tem = argv[bottom + i]; - argv[bottom + i] = argv[middle + i]; - argv[middle + i] = tem; - } - /* Exclude the moved top segment from further swapping. */ - bottom += len; - } - } - - /* Update records for the slots the non-options now occupy. */ - - first_nonopt += (optind - last_nonopt); - last_nonopt = optind; -} - -/* Initialize the internal data when the first call is made. */ - -#if defined (__STDC__) && __STDC__ -static const char *_getopt_initialize (const char *); -#endif -static const char * -_getopt_initialize (optstring) - const char *optstring; -{ - /* Start processing options with ARGV-element 1 (since ARGV-element 0 - is the program name); the sequence of previously skipped - non-option ARGV-elements is empty. */ - - first_nonopt = last_nonopt = optind = 1; - - nextchar = NULL; - - posixly_correct = getenv ("POSIXLY_CORRECT"); - - /* Determine how to handle the ordering of options and nonoptions. */ - - if (optstring[0] == '-') - { - ordering = RETURN_IN_ORDER; - ++optstring; - } - else if (optstring[0] == '+') - { - ordering = REQUIRE_ORDER; - ++optstring; - } - else if (posixly_correct != NULL) - ordering = REQUIRE_ORDER; - else - ordering = PERMUTE; - - if (posixly_correct == NULL) - { - /* Bash 2.0 puts a special variable in the environment for each - command it runs, specifying which ARGV elements are the results of - file name wildcard expansion and therefore should not be - considered as options. */ - char var[100]; - sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ()); - nonoption_flags = getenv (var); - if (nonoption_flags == NULL) - nonoption_flags_len = 0; - else - nonoption_flags_len = strlen (nonoption_flags); - } - - return optstring; -} - -/* Scan elements of ARGV (whose length is ARGC) for option characters - given in OPTSTRING. - - If an element of ARGV starts with '-', and is not exactly "-" or "--", - then it is an option element. The characters of this element - (aside from the initial '-') are option characters. If `getopt' - is called repeatedly, it returns successively each of the option characters - from each of the option elements. - - If `getopt' finds another option character, it returns that character, - updating `optind' and `nextchar' so that the next call to `getopt' can - resume the scan with the following option character or ARGV-element. - - If there are no more option characters, `getopt' returns `EOF'. - Then `optind' is the index in ARGV of the first ARGV-element - that is not an option. (The ARGV-elements have been permuted - so that those that are not options now come last.) - - OPTSTRING is a string containing the legitimate option characters. - If an option character is seen that is not listed in OPTSTRING, - return '?' after printing an error message. If you set `opterr' to - zero, the error message is suppressed but we still return '?'. - - If a char in OPTSTRING is followed by a colon, that means it wants an arg, - so the following text in the same ARGV-element, or the text of the following - ARGV-element, is returned in `optarg'. Two colons mean an option that - wants an optional arg; if there is text in the current ARGV-element, - it is returned in `optarg', otherwise `optarg' is set to zero. - - If OPTSTRING starts with `-' or `+', it requests different methods of - handling the non-option ARGV-elements. - See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above. - - Long-named options begin with `--' instead of `-'. - Their names may be abbreviated as long as the abbreviation is unique - or is an exact match for some defined option. If they have an - argument, it follows the option name in the same ARGV-element, separated - from the option name by a `=', or else the in next ARGV-element. - When `getopt' finds a long-named option, it returns 0 if that option's - `flag' field is nonzero, the value of the option's `val' field - if the `flag' field is zero. - - The elements of ARGV aren't really const, because we permute them. - But we pretend they're const in the prototype to be compatible - with other systems. - - LONGOPTS is a vector of `struct option' terminated by an - element containing a name which is zero. - - LONGIND returns the index in LONGOPT of the long-named option found. - It is only valid when a long-named option has been found by the most - recent call. - - If LONG_ONLY is nonzero, '-' as well as '--' can introduce - long-named options. */ - -int -_getopt_internal (argc, argv, optstring, longopts, longind, long_only) - int argc; - char *const *argv; - const char *optstring; - const struct option *longopts; - int *longind; - int long_only; -{ - optarg = NULL; - - if (optind == 0) - { - optstring = _getopt_initialize (optstring); - optind = 1; /* Don't scan ARGV[0], the program name. */ - } - - /* Test whether ARGV[optind] points to a non-option argument. - Either it does not have option syntax, or there is an environment flag - from the shell indicating it is not an option. */ -#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \ - || (optind < nonoption_flags_len \ - && nonoption_flags[optind] == '1')) - - if (nextchar == NULL || *nextchar == '\0') - { - /* Advance to the next ARGV-element. */ - - /* Give FIRST_NONOPT & LAST_NONOPT rational values if OPTIND has been - moved back by the user (who may also have changed the arguments). */ - if (last_nonopt > optind) - last_nonopt = optind; - if (first_nonopt > optind) - first_nonopt = optind; - - if (ordering == PERMUTE) - { - /* If we have just processed some options following some non-options, - exchange them so that the options come first. */ - - if (first_nonopt != last_nonopt && last_nonopt != optind) - exchange ((char **) argv); - else if (last_nonopt != optind) - first_nonopt = optind; - - /* Skip any additional non-options - and extend the range of non-options previously skipped. */ - - while (optind < argc && NONOPTION_P) - optind++; - last_nonopt = optind; - } - - /* The special ARGV-element `--' means premature end of options. - Skip it like a null option, - then exchange with previous non-options as if it were an option, - then skip everything else like a non-option. */ - - if (optind != argc && !strcmp (argv[optind], "--")) - { - optind++; - - if (first_nonopt != last_nonopt && last_nonopt != optind) - exchange ((char **) argv); - else if (first_nonopt == last_nonopt) - first_nonopt = optind; - last_nonopt = argc; - - optind = argc; - } - - /* If we have done all the ARGV-elements, stop the scan - and back over any non-options that we skipped and permuted. */ - - if (optind == argc) - { - /* Set the next-arg-index to point at the non-options - that we previously skipped, so the caller will digest them. */ - if (first_nonopt != last_nonopt) - optind = first_nonopt; - return EOF; - } - - /* If we have come to a non-option and did not permute it, - either stop the scan or describe it to the caller and pass it by. */ - - if (NONOPTION_P) - { - if (ordering == REQUIRE_ORDER) - return EOF; - optarg = argv[optind++]; - return 1; - } - - /* We have found another option-ARGV-element. - Skip the initial punctuation. */ - - nextchar = (argv[optind] + 1 - + (longopts != NULL && argv[optind][1] == '-')); - } - - /* Decode the current option-ARGV-element. */ - - /* Check whether the ARGV-element is a long option. - - If long_only and the ARGV-element has the form "-f", where f is - a valid short option, don't consider it an abbreviated form of - a long option that starts with f. Otherwise there would be no - way to give the -f short option. - - On the other hand, if there's a long option "fubar" and - the ARGV-element is "-fu", do consider that an abbreviation of - the long option, just like "--fu", and not "-f" with arg "u". - - This distinction seems to be the most useful approach. */ - - if (longopts != NULL - && (argv[optind][1] == '-' - || (long_only && (argv[optind][2] || !my_index (optstring, argv[optind][1]))))) - { - char *nameend; - const struct option *p; - const struct option *pfound = NULL; - int exact = 0; - int ambig = 0; - int indfound; - int option_index; - - for (nameend = nextchar; *nameend && *nameend != '='; nameend++) - /* Do nothing. */ ; - -#ifdef lint /* Suppress `used before initialized' warning. */ - indfound = 0; -#endif - - /* Test all long options for either exact match - or abbreviated matches. */ - for (p = longopts, option_index = 0; p->name; p++, option_index++) - if (!strncmp (p->name, nextchar, nameend - nextchar)) - { - if (nameend - nextchar == strlen (p->name)) - { - /* Exact match found. */ - pfound = p; - indfound = option_index; - exact = 1; - break; - } - else if (pfound == NULL) - { - /* First nonexact match found. */ - pfound = p; - indfound = option_index; - } - else - /* Second or later nonexact match found. */ - ambig = 1; - } - - if (ambig && !exact) - { - if (opterr) - fprintf (stderr, _("%s: option `%s' is ambiguous\n"), - argv[0], argv[optind]); - nextchar += strlen (nextchar); - optind++; - optopt = 0; - return '?'; - } - - if (pfound != NULL) - { - option_index = indfound; - optind++; - if (*nameend) - { - /* Don't test has_arg with >, because some C compilers don't - allow it to be used on enums. */ - if (pfound->has_arg) - optarg = nameend + 1; - else - { - if (opterr) - if (argv[optind - 1][1] == '-') - /* --option */ - fprintf (stderr, - _("%s: option `--%s' doesn't allow an argument\n"), - argv[0], pfound->name); - else - /* +option or -option */ - fprintf (stderr, - _("%s: option `%c%s' doesn't allow an argument\n"), - argv[0], argv[optind - 1][0], pfound->name); - - nextchar += strlen (nextchar); - - optopt = pfound->val; - return '?'; - } - } - else if (pfound->has_arg == 1) - { - if (optind < argc) - optarg = argv[optind++]; - else - { - if (opterr) - fprintf (stderr, - _("%s: option `%s' requires an argument\n"), - argv[0], argv[optind - 1]); - nextchar += strlen (nextchar); - optopt = pfound->val; - return optstring[0] == ':' ? ':' : '?'; - } - } - nextchar += strlen (nextchar); - if (longind != NULL) - *longind = option_index; - if (pfound->flag) - { - *(pfound->flag) = pfound->val; - return 0; - } - return pfound->val; - } - - /* Can't find it as a long option. If this is not getopt_long_only, - or the option starts with '--' or is not a valid short - option, then it's an error. - Otherwise interpret it as a short option. */ - if (!long_only || argv[optind][1] == '-' - || my_index (optstring, *nextchar) == NULL) - { - if (opterr) - { - if (argv[optind][1] == '-') - /* --option */ - fprintf (stderr, _("%s: unrecognized option `--%s'\n"), - argv[0], nextchar); - else - /* +option or -option */ - fprintf (stderr, _("%s: unrecognized option `%c%s'\n"), - argv[0], argv[optind][0], nextchar); - } - nextchar = (char *) ""; - optind++; - optopt = 0; - return '?'; - } - } - - /* Look at and handle the next short option-character. */ - - { - char c = *nextchar++; - char *temp = my_index (optstring, c); - - /* Increment `optind' when we start to process its last character. */ - if (*nextchar == '\0') - ++optind; - - if (temp == NULL || c == ':') - { - if (opterr) - { - if (posixly_correct) - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, _("%s: illegal option -- %c\n"), - argv[0], c); - else - fprintf (stderr, _("%s: invalid option -- %c\n"), - argv[0], c); - } - optopt = c; - return '?'; - } - if (temp[1] == ':') - { - if (temp[2] == ':') - { - /* This is an option that accepts an argument optionally. */ - if (*nextchar != '\0') - { - optarg = nextchar; - optind++; - } - else - optarg = NULL; - nextchar = NULL; - } - else - { - /* This is an option that requires an argument. */ - if (*nextchar != '\0') - { - optarg = nextchar; - /* If we end this ARGV-element by taking the rest as an arg, - we must advance to the next element now. */ - optind++; - } - else if (optind == argc) - { - if (opterr) - { - /* 1003.2 specifies the format of this message. */ - fprintf (stderr, - _("%s: option requires an argument -- %c\n"), - argv[0], c); - } - optopt = c; - if (optstring[0] == ':') - c = ':'; - else - c = '?'; - } - else - /* We already incremented `optind' once; - increment it again when taking next ARGV-elt as argument. */ - optarg = argv[optind++]; - nextchar = NULL; - } - } - return c; - } -} - -int -getopt (argc, argv, optstring) - int argc; - char *const *argv; - const char *optstring; -{ - return _getopt_internal (argc, argv, optstring, - (const struct option *) 0, - (int *) 0, - 0); -} - -#endif /* _LIBC or not __GNU_LIBRARY__. */ - -#ifdef TEST - -/* Compile with -DTEST to make an executable for use in testing - the above definition of `getopt'. */ - -int -main (argc, argv) - int argc; - char **argv; -{ - int c; - int digit_optind = 0; - - while (1) - { - int this_option_optind = optind ? optind : 1; - - c = getopt (argc, argv, "abc:d:0123456789"); - if (c == EOF) - break; - - switch (c) - { - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - if (digit_optind != 0 && digit_optind != this_option_optind) - printf ("digits occur in two different argv-elements.\n"); - digit_optind = this_option_optind; - printf ("option %c\n", c); - break; - - case 'a': - printf ("option a\n"); - break; - - case 'b': - printf ("option b\n"); - break; - - case 'c': - printf ("option c with value `%s'\n", optarg); - break; - - case '?': - break; - - default: - printf ("?? getopt returned character code 0%o ??\n", c); - } - } - - if (optind < argc) - { - printf ("non-option ARGV-elements: "); - while (optind < argc) - printf ("%s ", argv[optind++]); - printf ("\n"); - } - - exit (0); -} - -#endif /* TEST */ diff --git a/glabels2/barcode-0.98/compat/getopt.h b/glabels2/barcode-0.98/compat/getopt.h deleted file mode 100644 index 952f4830..00000000 --- a/glabels2/barcode-0.98/compat/getopt.h +++ /dev/null @@ -1,129 +0,0 @@ -/* Declarations for getopt. - Copyright (C) 1989, 90, 91, 92, 93, 94 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, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _GETOPT_H -#define _GETOPT_H 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* For communication from `getopt' to the caller. - When `getopt' finds an option that takes an argument, - the argument value is returned here. - Also, when `ordering' is RETURN_IN_ORDER, - each non-option ARGV-element is returned here. */ - -extern char *optarg; - -/* Index in ARGV of the next element to be scanned. - This is used for communication to and from the caller - and for communication between successive calls to `getopt'. - - On entry to `getopt', zero means this is the first call; initialize. - - When `getopt' returns EOF, this is the index of the first of the - non-option elements that the caller should itself scan. - - Otherwise, `optind' communicates from one call to the next - how much of ARGV has been scanned so far. */ - -extern int optind; - -/* Callers store zero here to inhibit the error message `getopt' prints - for unrecognized options. */ - -extern int opterr; - -/* Set to an option character which was unrecognized. */ - -extern int optopt; - -/* Describe the long-named options requested by the application. - The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector - of `struct option' terminated by an element containing a name which is - zero. - - The field `has_arg' is: - no_argument (or 0) if the option does not take an argument, - required_argument (or 1) if the option requires an argument, - optional_argument (or 2) if the option takes an optional argument. - - If the field `flag' is not NULL, it points to a variable that is set - to the value given in the field `val' when the option is found, but - left unchanged if the option is not found. - - To have a long-named option do something other than set an `int' to - a compiled-in constant, such as set a value from `optarg', set the - option's `flag' field to zero and its `val' field to a nonzero - value (the equivalent single-letter option character, if there is - one). For long options that have a zero `flag' field, `getopt' - returns the contents of the `val' field. */ - -struct option -{ -#if defined (__STDC__) && __STDC__ - const char *name; -#else - char *name; -#endif - /* has_arg can't be an enum because some compilers complain about - type mismatches in all the code that assumes it is an int. */ - int has_arg; - int *flag; - int val; -}; - -/* Names for the values of the `has_arg' field of `struct option'. */ - -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 - -#if defined (__STDC__) && __STDC__ -#ifdef __GNU_LIBRARY__ -/* Many other libraries have conflicting prototypes for getopt, with - differences in the consts, in stdlib.h. To avoid compilation - errors, only prototype getopt for the GNU C library. */ -extern int getopt (int argc, char *const *argv, const char *shortopts); -#else /* not __GNU_LIBRARY__ */ -extern int getopt (); -#endif /* __GNU_LIBRARY__ */ -extern int getopt_long (int argc, char *const *argv, const char *shortopts, - const struct option *longopts, int *longind); -extern int getopt_long_only (int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind); - -/* Internal only. Users should not call this directly. */ -extern int _getopt_internal (int argc, char *const *argv, - const char *shortopts, - const struct option *longopts, int *longind, - int long_only); -#else /* not __STDC__ */ -extern int getopt (); -extern int getopt_long (); -extern int getopt_long_only (); - -extern int _getopt_internal (); -#endif /* __STDC__ */ - -#ifdef __cplusplus -} -#endif - -#endif /* _GETOPT_H */ diff --git a/glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz b/glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz deleted file mode 100644 index 69df9562ce09785778516c0fb6a73a8d2181eda5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2880 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 diff --git a/glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz.README b/glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz.README deleted file mode 100644 index 1608ebaf..00000000 --- a/glabels2/barcode-0.98/contrib/barcode-SVG.tar.gz.README +++ /dev/null @@ -1,24 +0,0 @@ - -[readme written by GNU-barcode maintainer] - -This is a stripped version of what you can find at: - http://www.onefour.net/barcode/SVG/barcode097-SVG.tar.gz - -It's by David J. Humphreys, it's GPL code and the original tarball -(as per the previous URL) contains: - --rwxr--r-- david/david 243 2002-01-02 04:18:00 Makefile --rwxr--r-- david/david 1284 2002-01-08 00:26:42 main.c --rwxr--r-- david/david 37796 2002-01-02 04:33:00 screen1.png --rwxr--r-- david/david 5503 2002-01-08 00:30:00 svg.c --rwxr--r-- david/david 2499 2002-01-02 03:37:00 test1.svg --rwxr--r-- david/david 2499 2002-01-02 03:44:00 test2.svg --rwxr--r-- david/david 2499 2002-01-02 03:49:00 test3.svg --rwxr--r-- david/david 34185 2002-01-02 04:41:00 test4.png --rwxr--r-- david/david 1834 2002-01-02 04:19:00 test4.svg --rwxr--r-- david/david 92713 2002-01-02 04:36:00 transformation.png --rwxr--r-- david/david 586 2002-01-02 04:11:00 transformation.svg - -Here I only included Makefile, main.c, svg.c, after converting -newlines to unix-style and changing permissions. - diff --git a/glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz b/glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz deleted file mode 100644 index cbc8e67693f6a90df86e6aafb2debb625321e861..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19010 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 diff --git a/glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README b/glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README deleted file mode 100644 index 36d216d7..00000000 --- a/glabels2/barcode-0.98/contrib/barcode-for-delphi.tar.gz.README +++ /dev/null @@ -1,10 +0,0 @@ - -The barcode-for-delphi tarball includes a version of this package -ported to run under Delphi. Please note that you can't distribute the -executable because of the GPL (i.e., disitributing it would be -copyright violation, because the executable is a derived work of GNU -barcode, whose authors don't allow distributing under non-GPL terms. - -I still think it may be useful to some users. - -The code has been contributed by Michael Geddes . diff --git a/glabels2/barcode-0.98/contrib/barcodeps-0.1.tgz b/glabels2/barcode-0.98/contrib/barcodeps-0.1.tgz deleted file mode 100644 index 1dadb1c6a6dc085cee750585295ea63d06b5e056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2036 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 UE&rB({{nyi7cfXlfdG&J0B5`&mH+?% diff --git a/glabels2/barcode-0.98/contrib/grab-0.0.4.tar.gz.README b/glabels2/barcode-0.98/contrib/grab-0.0.4.tar.gz.README deleted file mode 100644 index 4a048075..00000000 --- a/glabels2/barcode-0.98/contrib/grab-0.0.4.tar.gz.README +++ /dev/null @@ -1,13 +0,0 @@ - -The purpose of this program is to read a (scanned) image containing a -barcode. The image is then interpreted and the barcode is decoded. -The decoded string is outputted to stdout. - -Currently, only Code-128 is supported. - -The program is GPL'd and it's the work of Tuukka Toivonen. - -The home page for this and other programs by Tuukka is - http://www.ee.oulu.fi/~tuukkat/releases.html -while a bare ls-like listing of all packages is at - http://www.ee.oulu.fi/~tuukkat/rel/ diff --git a/glabels2/barcode-0.98/debian/README.debian b/glabels2/barcode-0.98/debian/README.debian deleted file mode 100644 index 7223023a..00000000 --- a/glabels2/barcode-0.98/debian/README.debian +++ /dev/null @@ -1,9 +0,0 @@ -The Debian Package barcode ----------------------------- - -This Debian package is integrated in the upstream release of GNU -barcode, maintained by Alessandro Rubini (rubini@gnu.org, -rubini@prosa.it). Since I have no extended experience with Debian -packages, I'm willing to accept any fixes that seem fit, as well as a -real Debian maintainer for the Debian package. - diff --git a/glabels2/barcode-0.98/debian/changelog b/glabels2/barcode-0.98/debian/changelog deleted file mode 100644 index b43e686f..00000000 --- a/glabels2/barcode-0.98/debian/changelog +++ /dev/null @@ -1,27 +0,0 @@ -barcode (0.98) unstable; urgency=low - - * New upstream release - - -- Alessandro Rubini Fri, 1 Mar 2002 23:04:14 +0100 - -barcode (0.96) unstable; urgency=low - - * New upstream release - - -- Alessandro Rubini Wed, 8 Nov 2000 18:29:18 +0200 - -barcode (0.95) unstable; urgency=low - - * New upstream release - - -- Alessandro Rubini Thu, 3 Feb 2000 21:16:59 +0200 - -barcode (0.94) unstable; urgency=low - - * Initial Release. - - -- Alessandro Rubini Sun, 24 Oct 1999 01:10:23 +0200 - -Local variables: -mode: debian-changelog -End: diff --git a/glabels2/barcode-0.98/debian/control b/glabels2/barcode-0.98/debian/control deleted file mode 100644 index aacbfd49..00000000 --- a/glabels2/barcode-0.98/debian/control +++ /dev/null @@ -1,14 +0,0 @@ -Source: barcode -Section: misc -Priority: optional -Maintainer: Alessandro Rubini -Standards-Version: 2.5.0 - -Package: barcode -Architecture: any -Depends: ${shlibs:Depends} -Description: Creates barcodes in .ps format - GNU barcode can create printouts for the conventional - product packagging standards: UPC-A, UPC-E, EAN-13, EAN-8, ISBN, code 39 - code 128 (b and c), and interleaved 2 of 5 . Ouput is generated as - either Postscript or Encapsulated Postscript. diff --git a/glabels2/barcode-0.98/debian/copyright b/glabels2/barcode-0.98/debian/copyright deleted file mode 100644 index c193af2c..00000000 --- a/glabels2/barcode-0.98/debian/copyright +++ /dev/null @@ -1,8 +0,0 @@ -This package was written by Alessandro Rubini rubini@gnu.org on Sun, 24 Oct 1999 01:10:23 +0200. - -The pristine source can be downloaded from ftp://ftp.gnu.org/pub/barcode -and GNU mirrors. Latest and greatest version (also beta) are immediately -uploaded to ftp://ftp.prosa.it/pub/software. - -Copyright: GPL (see /usr/doc/copyright/GPL) - diff --git a/glabels2/barcode-0.98/debian/dirs b/glabels2/barcode-0.98/debian/dirs deleted file mode 100644 index 6822e402..00000000 --- a/glabels2/barcode-0.98/debian/dirs +++ /dev/null @@ -1,3 +0,0 @@ -usr/bin -usr/include -usr/info diff --git a/glabels2/barcode-0.98/debian/info b/glabels2/barcode-0.98/debian/info deleted file mode 100644 index 18336bfb..00000000 --- a/glabels2/barcode-0.98/debian/info +++ /dev/null @@ -1,15 +0,0 @@ -# This is a configuration files for installing a .info menu -# The Description to be placed into the directory -DESCR="Barcode library and frontend" - -# The section this info file should be placed in (Regexp) followed by -# the new section name to be created if the Regexp does not match -# (Optional. If not given the .info will be appended to the directory) -SECTION_MATCH="[cC]ommands" -SECTION_NAME="General Commands" - -# The file referred to from the Info directory -FILE=barcode.info - -# Optional. The files to be copied to /usr/info -FILES=doc/*.info diff --git a/glabels2/barcode-0.98/debian/rules b/glabels2/barcode-0.98/debian/rules deleted file mode 100755 index c48c5a1c..00000000 --- a/glabels2/barcode-0.98/debian/rules +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/make -f -# Made with the aid of debmake, by Christoph Lameter, -# based on the sample debian/rules file for GNU hello by Ian Jackson. - -package=barcode - -build: - $(checkdir) - ./configure --prefix=/usr - $(MAKE) CFLAGS="-O2 -g -Wall" - touch build - -clean: - $(checkdir) - -rm -f build - -$(MAKE) distclean - -rm -f `find . -name "*~"` - -rm -rf debian/tmp debian/files* core debian/substvars - -binary-indep: checkroot build - $(checkdir) -# There are no architecture-independent files to be uploaded -# generated by this package. If there were any they would be -# made here. - -binary-arch: checkroot build - $(checkdir) - -rm -rf debian/tmp - install -d debian/tmp - cd debian/tmp && install -d `cat ../dirs` - $(MAKE) install prefix=`pwd`/debian/tmp/usr -# Must have debmake installed for this to work. Otherwise please copy -# /usr/bin/debstd into the debian directory and change debstd to debian/debstd - debstd ChangeLog README TODO INSTALL - dpkg-gencontrol - chown -R root.root debian/tmp - chmod -R go=rX debian/tmp - dpkg --build debian/tmp .. - -define checkdir - test -f debian/rules -endef - -binary: binary-indep binary-arch - -checkroot: - $(checkdir) - test root = "`whoami`" - -.PHONY: binary binary-arch binary-indep clean checkroot diff --git a/glabels2/barcode-0.98/doc/Makefile.in b/glabels2/barcode-0.98/doc/Makefile.in deleted file mode 100644 index dae8f6b6..00000000 --- a/glabels2/barcode-0.98/doc/Makefile.in +++ /dev/null @@ -1,135 +0,0 @@ -# -# Makefile (now .in) for the documentation directory -# -# Copyright 1994,2000 rubini@gnu.org (Alessandro Rubini) -# -################# -# -# BE CAREFUL in editing: -# due to the large number of index files, and my use of a non standard -# info input file, any file $(TARGET).* is removed by "make clean" -# -# I chose to use a prefix for the input file ("doc.$(TARGET)"), to ease -# makeing clean and applying my own rules. -# -################################################################### -# -# First of all, retrieve features of makeinfo, to know if we can do images -# and --html. Also, allow MAKEINFO to be specified on the commandline to -# allow me testing with various versions. - -# NOTE: it looks like semi-old versions can do images too, so CANDOIMAGES -# is not (yet?) used - - -MAKEINFO = @MAKEINFO@ -# According to whether this makeinfo can output html, autoconf define these -REMOVEHTMLTAGS = @REMOVEHTMLTAGS@ -INFOTOHTML = @INFOTOHTML@ - -############################################## - - -TARGET = barcode -ALL = $(TARGET).ps $(TARGET).info $(TARGET)doc.txt $(TARGET).html \ - $(TARGET).pdf - -all: $(ALL) terse - -info: $(TARGET).info - -$(TARGET)doc.txt: mktxt - -mpage: all - mv $(TARGET).ps $(TARGET)1.ps - mpage -2A $(TARGET)1.ps > $(TARGET)2.ps && rm $(TARGET)1.ps - -terse: - # preserve the pdf copy - -mv -f $(TARGET).pdf PDF 2> /dev/null && \ - rm -f *~ *.dvi *.log *.aux \ - $(TARGET).*.bak $(TARGET).??? $(TARGET).texinfo && \ - mv PDF $(TARGET).pdf; - - # preserve the ps copy - -mv $(TARGET).ps PS; - -rm -f $(TARGET).??; - -mv PS $(TARGET).ps; - -clean: terse - rm -f $(ALL) $(TARGET)_toc.html - - -#################################################### - -# These rules used to be expressed as "%.texinfo: doc.%" etc. However, this -# is gmake-specific, so I turned every % to $(TARGET), thus loosing generality -# but gaining portability. I also had to drop "$^": it worked with gmake -# and not pmake, while "$<" worked with pmake and not gmake. -# with gmake and not pmake. -# ARub 2000-04-21 - -$(TARGET).texinfo: doc.$(TARGET) - @rm -f $@ 2> /dev/null - sed -f ./infofilter doc.$(TARGET) | $(REMOVEHTMLTAGS) > $@ - chmod 400 $@ - - -# This rule is somewhat a rewrite of texi2dvi. I like make more than sh :-) -# This had to be rewritten too, as "$*" is different in gmake and pmake - -$(TARGET).dvi: $(TARGET).texinfo - -# create a spurious index file to please silly sh (bash will work anyway) - touch $(TARGET).oo - -# get the index list - if test "x`ls $(TARGET).?? $(TARGET).aux`" != "x"; then \ - for i in `ls $(TARGET).?? $(TARGET).aux`; do \ - cp $$i $$i~; \ - done; \ - fi - tex $(TARGET).texinfo - -#check the file list, the file and if needed run TeX again - old="`ls $(TARGET).??~ $(TARGET).aux~ | sed 's/~//g'`"; \ - new="`ls $(TARGET).?? $(TARGET).aux`"; \ - need="n"; \ - if test "$$old" != "$$new"; then need="y"; \ - else \ - for i in `ls $(TARGET).?? $(TARGET).aux`; do \ - cmp -s $$i $$i~; if test $$? -ne 0; then need="y" break; fi; \ - done; \ - fi; \ - if test "$$need" = "y"; then \ - texindex $(TARGET).?? && tex $(TARGET).texinfo; \ - fi - - -$(TARGET).ps: $(TARGET).dvi - dvips -f $(TARGET).dvi > $@ - -$(TARGET).pdf: $(TARGET).ps - ps2pdf $(TARGET).ps > $@ - -$(TARGET).lj: $(TARGET).dvi - dvilj -e- $(TARGET).dvi > $@ - -$(TARGET).info: $(TARGET).texinfo - makeinfo $(TARGET).texinfo -o $@ - -$(TARGET).html: $(TARGET).texinfo - $(INFOTOHTML) -o $@ $< - -#$(TARGET).man: doc.$(TARGET) -# manpages are created by the toplevel Makefile - -$(TARGET)doc.txt: $(TARGET).info - awk -f ./mktxt $(TARGET).info > $@ - - - - - - - diff --git a/glabels2/barcode-0.98/doc/README b/glabels2/barcode-0.98/doc/README deleted file mode 100644 index 5af5490f..00000000 --- a/glabels2/barcode-0.98/doc/README +++ /dev/null @@ -1,5 +0,0 @@ - -The input file is "doc.barcode". I preprocess this file to -build both a "barcode.texinfo" file and manual pages. - -The intermediat diff --git a/glabels2/barcode-0.98/doc/doc.barcode b/glabels2/barcode-0.98/doc/doc.barcode deleted file mode 100644 index 7b460558..00000000 --- a/glabels2/barcode-0.98/doc/doc.barcode +++ /dev/null @@ -1,939 +0,0 @@ -\input texinfo @c -*-texinfo-*- -% -% doc.barcode - main file for the documentation -% -%%%% - -%------------------------------------------------------------------------------ -% -% NOTE FOR THE UNAWARE USER -% ========================= -% -% This file is a texinfo source. It isn't the binary file of some strange -% editor of mine. If you want ascii, you should "make barcodedoc.txt". -% -%------------------------------------------------------------------------------ - -% -% This is not a conventional info file... -% I use two extra features: -% - The '%' as a comment marker, if at beg. of line ("\%" -> "%") -% - leading blanks are allowed -% - -@comment %**start of header -@setfilename barcode.info -@settitle Barcode @value{version} -@iftex -@afourpaper -@end iftex -@comment %**end of header - -@setchapternewpage off - -@set version 0.98 -@set update-month March 2002 - -@finalout - -@ifinfo - -This file is the User's Manual for the barcode library (version -@value{version}). - -@end ifinfo - -@setchapternewpage odd -@titlepage -@c use the new format for titles -@title barcode @value{version} -@subtitle A library for drawing bar codes -@subtitle @value{update-month} - -@author by Alessandro Rubini (@code{rubini@@gnu.org}) - -@end titlepage -@setchapternewpage off -@headings single - - -@node Top, Overview, (dir), (dir) -@top Barcode tools - -This file documents version @value{version} of the barcode -library and sample programs (@value{update-month}). - -@menu -* Overview:: -* The Barcode Object:: -* Supported Flags:: -* The API:: -* The barcode Executable:: -* Supported Encodings:: -* PCL Output:: -* Bugs and Pending Issues:: -@end menu - - -%########################################################################## -%########################################################################## - -@node Overview, The Barcode Object, Top, Top -@chapter Overview - -The @dfn{barcode} package is mainly a C library for creating bar-code -output files. It also includes a command line front-end and (in a -foreseeable future) a graphic frontend. - -The package is designed as a library because we think the main use for -barcode-generation tools is inside more featured applications. The -library addresses bar code printing as two distinct problems: creation -of bar information and actual conversion to an output format. To this -aim we use an intermediate representation for bar codes, which is -currently documented in the @file{ps.c} source file (not in this -document). - -Note that the library and the accompanying material is released -according to the GPL license, not the LGPL one. A copy of the GPL is -included in the distribution tarball. - -%########################################################################## - -@node The Barcode Object, Supported Flags, Overview, Top -@chapter The Underlying Data Structure - -Every barcode-related function acts on a data structure defined in the -@file{barcode.h} header, which must be included by any C source file -that uses the library. The header is installed by @t{make install}. - -The definition of the data structure is included here for reference: - -@lisp -struct Barcode_Item @{ - int flags; /* type of encoding and other flags */ - char *ascii; /* malloced */ - char *partial; /* malloced too */ - char *textinfo; /* information about text placement */ - char *encoding; /* code name, filled by encoding engine */ - int width, height; /* output units */ - int xoff, yoff; /* output units */ - int margin; /* output units */ - double scalef; /* requested scaling for barcode */ - int error; /* an errno-like value, in case of failure */ -@}; -@end lisp - -The exact meaning of each field and the various flags implemented are -described in the following sections. - -Even though you won't usually need to act on the contents of this -structure, some of the functions in the library receive arguments that -are directly related to one or more of these fields. - -%========================================================================== - -@menu -* The Field List:: -* The Intermediate Representation:: -@end menu - -%-------------------------------------------------------------------------- -@node The Field List, The Intermediate Representation, The Barcode Object, The Barcode Object -@section The Fields - -@table @code - -@item int flags; - - The flags are, as you may suspect, meant to specify the exact - behaviour of the library. They are often passed as an argument - to @i{barcode} functions and are discussed in the next section. - -@item char *ascii; -@itemx char *partial; -@itemx char *textinfo; -@itemx char *encoding; - - These fields are internally managed by the library, and you are - not expected to touch them if you use the provided API. All - of them are allocated with @i{malloc}. - -@item int width; -@itemx int height; - - They specify the width and height of the @i{active} barcode - region (i.e., excluding the white margin), in the units used - to create output data (for postscript they are points, 1/72th - of an inch, 0.352 mm). The fields can be either assigned to - in the structure or via @i{Barcode_Position()}, at your - choice. If either value or both are left to their default - value of zero, the output engine will assign default values - according to the specified scaling factor. If the specified - width is bigger than needed (according to the scaling factor), - the output barcode will be centered in its requested - region. If either the width of the height are too small for - the specified scale factor, the output bar code will expand - symmetrically around the requested region. - -@item int xoff; -@itemx int yoff; - - The fields specify offset from the coordinate origin of the - output engine (for postscript, position 0,0 is the lower left - corner of the page). The fields can be either assigned to in - the structure or via @i{Barcode_Position()}, at your choice. - The offset specifies where the white margin begins, not where - the first bar will be printed. To print real ink to the - specified position you should set @i{margin} to 0. - -@item int margin; - - The white margin that will be left around the printed area of - the bar code. The same margin is applied to all sides of the - printed area. The default value for the margin is defined in - @file{barcode.h} as @t{BARCODE_DEFAULT_MARGIN} (10). - -@item double scalef; - - The enlarge or shrink value for the bar code over its default - dimension. The @i{width} and @i{scalef} fields interact deeply - in the creation of the output, and a complete description of - the issues appears later in this section. - -@item int error; - - The field is used when a @i{barcode} function fails to host - an @t{errno}-like integer value. - -@end table - - -@unnumberedsubsec Use of the @i{width} and @i{scalef} fields. - -A width unit is the width of the thinnest bar and/or space in the -chosen code; it defaults to 1 point if the output is postscript or -encapsulated postscript. - -Either or both the code width and the scale factor can be left -unspecified (i.e., zero). The library deals with defaults in the -following way: - -@table @i - -@item Both unspecified - - If both the width and the scale factor are unspecified, the - scale factor will default to 1.0 and the width is calculated - according to the actual width of the bar code being printed. - -@item Width unspecified - - If the width is not specified, it is calculated according to - the values of @i{scalef}. - -@item Scale factor unspecified - - If the scale factor is not specified, it will be chosen so - that the generated bar code exactly fits the specified width. - -@item Both specified - - The code will be printed inside the specified region according - to the specified scale factor. It will be aligned to the left. - If, however, the chosen width is too small for the specific - bar code and scaling factor, then the code will extend - symmetrically to the left and to the right of the chosen - region. - -@end table - -%-------------------------------------------------------------------------- -@node The Intermediate Representation, , The Field List, The Barcode Object -@section The Intermediate Representation - -The encoding functions print their output into the @t{partial} and -@t{texinfo} fields of the barcode data structure. Those fields, together -with position information, are then used to generate actual output. -This is an informal description of the intermediate format. - -The first char in @t{partial} tells how much extra space to add to the -left of the bars. For EAN-13, it is used to leave space to print the -first digit, other codes may have '0' for no-extra-space-needed. - -The next characters are alternating bars and spaces, as multiples of the -base dimension which is 1 unless the code is rescaled. Rescaling is -calculated as the ratio from the requested width and the calculated -width. Digits represent bar/space dimensions. Lower-case letters -represent those bars that should extend lower than the others: 'a' is -equivalent to '1', 'b' is '2' and so on up to 'i' which is equivalent to -'9'. Other letters will be used for encoding-specific meanings, as soon -as I implement them. - -The @t{textinfo} string is made up of fields @t{%lf:%lf:%c} separated by -blank space. The first integer is the x position of the character, -the second is the font size (before rescaling) and the char item is -the character to be printed. - -Both the @t{partial} and @t{textinfo} strings may include ``@t{-}'' or -``@t{+}'' as special characters (in @t{textinfo} the char should be a -stand-alone word). They state where the text should be printed: below -the bars (``@t{-}'', default) or above the bars. This is used, for -example, to print the add-5 and add-2 codes to the right of UPC or EAN -codes (the add-5 extension is mostly used in ISBN codes). - - - - -%========================================================================== - -@node Supported Flags, The API, The Barcode Object, Top -@chapter The Flags - -The following flags are supported by version @value{version} of the -library: - -@table @code - -@item BARCODE_ENCODING_MASK - - The mask is used to extract the encoding-type identifier from - the @i{flags} field. - -@item BARCODE_EAN -@itemx BARCODE_UPC -@itemx BARCODE_ISBN -@itemx BARCODE_128B -@itemx BARCODE_128C -@itemx BARCODE_128 -@itemx BARCODE_128RAW -@itemx BARCODE_39 -@itemx BARCODE_I25 -@itemx BARCODE_CBR -@itemx BARCODE_MSI -@itemx BARCODE_PLS -@itemx BARCODE_93 - - The currently supported encoding types: EAN (13 digits, 8 - digits, 13 + 2 add-on and 13 + 5 add-on), UPC (UPC-A, UPC-E, - UPC-A with 2 or 5 digit add-on), ISBN (with or without the - 5-digit add-on), CODE128-B (the whole set of printable - ASCII characters), CODE128-C (two digits encoded by each barcode - symbol), CODE128 (all ASCII values), a ``raw-input'' pseudo-code - that generates CODE128 output, CODE39 (alphanumeric), - "interleaved 2 of 5" (numeric), Codabar (numeric plus a few - symbols), MSI (numeric) and Plessey (hex digits). - @xref{Supported Encodings}. - -@item BARCODE_ANY - - This special encoding type (represented by a value of zero, so - it will be the default) tells the encoding procedure to look - for the first encoding type that can deal with a textual - string. Therefore, a 11-digit code will be printed as UPC (as - well as 6-digit, 11+2 and 11+5), a 12-digit (or 7-digit, or - 12+2 or 12+5) as EAN13, an ISBN code (with or without hyphens, - with or without add-5) will be encoded in its EAN13 - representation, an even number of digits is encoded using - CODE128C and a generic string is encoded using CODE128B. Since - code-39 offers a much larger representation for the same - text string, code128-b is preferred over code39 for - alphanumeric strings. - -@item BARCODE_NO_ASCII - - Instructs the engine not to print the ascii string on - output. By default the bar code is accompanied with an ascii - version of the text it encodes. - -@item BARCODE_NO_CHECKSUM - - Instructs the engine not to add the checksum character to the - output. Not all the encoding types can drop the checksum; - those where the checksum is mandatory (like EAN and UPC) - just ignore the flag. - -@item BARCODE_OUTPUT_MASK - - The mask is used to extract the output-type identifier from - the @i{flags} field. - -@item BARCODE_OUT_PS -@itemx BARCODE_OUT_EPS -@itemx BARCODE_OUT_PCL -@itemx BARCODE_OUT_PCL_III - - The currently supported encoding types: full-page postscript - and encapsulated postscript; PCL (print command language, for - HP printers) and PCL-III (same as PCL, but uses a font not - available on older printers). - -@item BARCODE_OUT_NOHEADERS - - The flag instructs the printing engine not to print the header - and footer part of the file. This makes sense for the - postscript engine but might not make sense for other engines; - such other engines will silently ignore the flag just like - the PCL back-end does. - -@end table - -%########################################################################## - -@node The API, The barcode Executable, Supported Flags, Top -@chapter Functions Exported by the Library - -%MANPAGE barcode.3 -%M .TH BARCODE 3 "October 1999" "GNU" "GNU barcode" -%M .UC 4 -%M .SH NAME -%M barcode \- a library to create and print bar codes -%M .SH SYNOPSIS -%M .B #include -%M .sp -%M .BI "struct Barcode_Item *Barcode_Create(char *" text ");" -%M .br -%M .BI "int Barcode_Delete(struct Barcode_Item *" bc ");" -%M .br -%M .BI "int Barcode_Encode(struct Barcode_Item *" bc ", int " flags ");" -%M .br -%M .BI "int Barcode_Print(struct Barcode_Item *" bc ", FILE *" f ", int " flags ");" -%M .br -%M .BI "int Barcode_Position(struct Barcode_Item *" bc ", int " wid ", int " hei ", int " xoff ", int " yoff " , double " scalef ");" -%M .br -%M .BI "int Barcode_Encode_and_Print(char *" text ", FILE *" f ", int " wid ", int " hei ", int " xoff ", int " yoff ", int " flags ");" -%M .br -%M .BI "int Barcode_Version(char *" versionname ");" -%M -%M .SH DESCRIPTION -%M -%M The barcode family of library functions is meant to ease -%M creation of bar-code printouts. -%M -%M The information below is extracted from the texinfo file, which is the -%M preferred source of information. - -The functions included in the barcode library are declared in the -header file @t{barcode.h}. They perform the following tasks: - -@table @code - -@item struct Barcode_Item *Barcode_Create(char *text); - The function creates a new barcode object to deal with a - specified text string. It returns NULL in case of failure and - a pointer to a barcode data structure in case of success. - -@item int Barcode_Delete(struct Barcode_Item *bc); - Destroy a barcode object. Always returns 0 (success) - -@item int Barcode_Encode(struct Barcode_Item *bc, int flags); - Encode the text included in the @i{bc} object. Valid flags are - the encoding type (other flags are ignored) and - BARCODE_NO_CHECKSUM (other flags are silently ignored); if the - flag argument is zero, @t{bc->flags} will apply. The function - returns 0 on success and -1 in case of error. After - successful termination the data structure will host the - description of the bar code and its textual representation, - after a failure the @t{error} field will include the reason of - the failure. - -@item int Barcode_Print(struct Barcode_Item *bc, FILE *f, int flags); - Print the bar code described by @t{bc} to the specified file. - Valid flags are the output type, @t{BARCODE_NO_ASCII} and - @t{BARCODE_OUT_NOHEADERS}, other flags are ignored. If any of - these flags is zero, it will be inherited from @t{bc->flags} - which therefore takes precedence. The function returns 0 on - success and -1 in case of error (with @t{bc->error} set - accordingly). In case of success, the bar code is printed to - the specified file, which won't be closed after use. - -@item int Barcode_Position(struct Barcode_Item *bc, int wid, int hei, int xoff, int yoff, double scalef); - The function is a shortcut to assign values to the data - structure. - -@item int Barcode_Encode_and_Print(char *text, FILE *f, int wid, int hei, int xoff, int yoff, int flags); - The function deals with the whole life of the barcode - object by calling the other functions; it uses all the specified - flags. - -@item int Barcode_Version(char *versionname); - Returns the current version as an integer number of the form - major * 10000 + minor * 100 + release. Therefore, version - 1.03.5 will be returned as 10305 and version 0.53 as 5300. If - the argument is non-null, it will be used to return the version - number as a string. Note that the same information is available from - two preprocessor macros: @t{BARCODE_VERSION} (the string) and - @t{BARCODE_VERSION_INT} (the integer number). - -@end table - -%MANPAGE END - -%########################################################################## - -@node The barcode Executable, Supported Encodings, The API, Top -@chapter The @i{barcode} frontend program - -%MANPAGE barcode.1 -%M .TH BARCODE 1 "October 2001" "GNU" "GNU barcode" -%M .UC 4 -%M .SH NAME -%M barcode \- a stand alone program to run the barcode library -%M .SH SYNOPSIS -%M .B barcode -%M [\-b - | string] [\-e encoding] [\-o - | outfile] [ -%M .I other-flags -%M ] -%M .SH DESCRIPTION -%M -%M The information below is extracted from the texinfo file, which is the -%M preferred source of information. -%M .PP -The @b{barcode} program is a front-end to access some features of the -library from the command line. It is able to read user supplied -strings from the command line or a data file (standard input by default) -and encode all of them. - -%M .SH OPTIONS -%M .PP - -@menu -* The Command Line:: -@end menu - -%-------------------------------------------------------------------------- -@node The Command Line, , The barcode Executable, The barcode Executable -@section The Command Line - - -@b{barcode} accepts the following options: - -@table @code - -@item --help or -h - Print a usage summary and exit. - -@item -i filename - Identify a file where strings to be encoded are read from. If - missing (and if @t{-b} is not used) it defaults to standard - input. Each data line of the input file will be used to create - one barcode output. - -@item -o filename - Output file. It defaults to standard output. - -@item -b string - Specify a single ``barcode'' string to be encoded. - The option can be used multiple times in order to encode - multiple strings (this will result in multi-page postscript - output or a table of barcodes if @t{-t} is specified). The - strings must match the encoding chosen; if it doesn't - match the program will print a warning to @t{stderr} and - generate ``blank'' output (although not zero-length). - Please note that a string including spaces or - other special characters must be properly quoted. - -@item -e encoding - @b{encoding} is the name of the chosen encoding format being - used. It defaults to the value of the environment variable - @t{BARCODE_ENCODING} or to auto detection if the environment is - also unset. - -@item -g geometry - The geometry argument is of the form ``[@i{} @t{x} - @i{}] [@t{+} @i{} @t{+} @i{}]'' (with - no intervening spaces). Unspecified margin values will result in - no margin; unspecified size results in default size. - The specified values represent print points by - default, and can be inches, millimeters or other units - according to the @t{-u} option or the @t{BARCODE_UNIT} - environment variable. The argument is used to place the - printout code on the page. Note that an additional white - margin of 10 points is added to the printout. If the option is - unspecified, @t{BARCODE_GEOMETRY} is looked up in the - environment, if missing a default size and no margin (but the - default 10 points) are used. - -@item -t table-geometry - Used to print several barcodes to a single page, this option - is meant to be used to print stickers. The argument is of the - form ``@i{} @t{x} @i{} [@t{+} @i{} - @t{+} @i{} [@t{-} @i{} [@t{-} - @i{}]]]'' (with no intervening spaces); if missing, - the top and right margin will default to be the same as the - bottom and left margin. The margins are specified in print - points or in the chosen unit (see @t{-u} below). If the - option is not specified, @t{BARCODE_TABLE} is looked up in the - environment, otherwise no table is printed and each barcode - will get its own page. The size (but not the position) - of a barcode item within a table can also be selected using - @t{-g} (see "geometry" above), without struggling with - external and internal margins. I still think management of - geometries in a table is suboptimal, but I can't make it - better without introducing incompatibilities. - - -@item -m margin(s) - Specifies an internal margin for each sticker in the - table. The argument is of the form - ``@i{}@t{,}@i{}'' and the margin is applied - symmetrically to the sticker. If unspecified, the environment - variable @t{BARCODE_MARGIN} is used or a default internal - margin of 10 points is used. - -@item -n - ``Numeric'' output: don't print the ASCII form of the code, - only the bars. - -@item -c - No checksum character (for encodings that allow it, like code 39, - other codes, like UPC or EAN, ignore this option). - -@item -E - Encapsulated postscript (default is normal postscript). When - the output is generated as EPS only one barcode is encoded. - -@item -P - PCL output. Please note that the Y direction goes from top - to bottom for PCL, and the origin for an image is the top-left - corner instead of the bottom-left - -@item -p pagesize - Specify a non-default page size. The page size can be specified - in millimeters, inches or plain numbers (for example: "@t{210x297mm}", - "@t{8.5x11in}", "@t{595x842}"). A page specification as numbers - will be interpreted according to the current unit specification - (see @t{-u} below). If libpaper is available, - you can also specify the page size with its name, like "@t{A3}" - or "@t{letter}" (libpaper is a standard component of Debian - GNU/Linux, but may be missing elsewhere). The default page - size is your system-wide default if libpaper is there, A4 otherwise. - -@item -u unit - Choose the unit used in size specifications. Accepted values - are ``mm'', ``cm'', ``in'' and ``pt''. By default, the program - will check @t{BARCODE_UNIT} in the environment, and assume - points otherwise (this behaviour is compatible with 0.92 and - previous versions. If @t{-u} appears more than once, each - instance will modified the behaviour for the arguments at its - right, as the command line is processes left to right. The - program internally works with points, and any size is - approximated to the nearest multiple of one point. The @t{-u} - option affect @t{-g} (geometry), @t{-t} (table) and @t{-p} - (page size). - -@end table - -%M .SH ENCODING TYPES -%M .PP - -%########################################################################## -@node Supported Encodings, PCL Output, The barcode Executable, Top -@chapter Supported Encodings - -The program encodes text strings passed either on the command line -(with -b) or retrieved from standard input. The text representation is -interpreted according to the following rules. When auto-detection -of the encoding is enabled (i.e, no explicit encoding type is specified), -the encoding types are scanned to find one that can digest the text string. -The following list of supported types is sorted in the same order -the library uses when auto-detecting a suitable encoding for a string. - -@table @var - -@item EAN - The EAN frontend is similar to UPC; it accepts strings of - digits, 12 or 7 characters long. Strings of 13 or 8 characters - are accepted if the provided checksum digit is correct. - I expect most users to feed input without a - checksum, though. The add-2 and add-5 extension are accepted for both - the EAN-13 and the EAN-8 encodings. - The following are example of valid input strings: - ``@t{123456789012}'' (EAN-13), ``@t{1234567890128}'' (EAN-13 wih - checksum), ``@t{1234567}'' (EAN-8), ``@t{12345670 12345}'' (EAN-8 - with checksum and add-5), - ``@t{123456789012 12}'' (EAN-13 with add-2), - ``@t{123456789012 12345}'' (EAN-13 with add-5). - -@item UPC - The UPC frontend accepts only strings made up of digits (and, - if a supplemental encoding is used, a blank to separate it). - It accepts strings of 11 or 12 digits (UPC-A) and 6 or 7 or 8 - digits (UPC-E). - - The 12th digit of UPC-A is the checksum and is added by the - library if not specified in the input; if it is specified, it - must be the right checksum or the code is rejected as invalid. - For UPC-E, 6 digit are considered to be the middle part of the - code, a leading 0 is assumed and the checksum is added; - 7 digits are either considered the initial part (leading digit - 0 or 1, checksum missing) or the final part (checksum specified, - leading 0 assumed); 8 digits are considered to be the complete code, - with leading 0 or 1 and checksum. - For both UPC-A and UPC-E, a trailing string of 2 digits or 5 digits - is accepted as well. Therefore, the following are examples - of valid strings that can be encoded as UPC: - ``@t{01234567890}'' (UPC-A) - ``@t{012345678905}'' (UPC-A with checksum), ``@t{012345}'' - (UPC-E), ``@t{01234567890 12}'' (UPC-A, add-2) and - ``@t{01234567890 12345}'' (UPC-A, add-5), ``@t{0123456 12}'' - (UPC-E, add-2). - Please note that when setting @t{BARCODE_ANY} to auto-detect - the encoding to be used, 12-digit strings and 7-digit strings - will always be identified as EAN. This because I expect most - user to provide input without a checksum. If you need to - specify UPC-with-checksum as input you must explicitly set - @t{BARCODE_UPC} as a flag or use @t{-e upc} on the command line. - -@item ISBN - ISBN numbers are encoded as EAN-13 symbols, with an optional - add-5 trailer. The ISBN frontend of the library accepts real - ISBN numbers and deals with any hyphen and, if present, the - ISBN checksum character before encoding data. Valid - representations for ISBN strings are for example: - ``@t{1-56592-292-1}'', ``@t{3-89721-122-X}'' and ``@t{3-89721-122-X - 06900}''. - -@item code 128-B - This encoding can represent all of the printing ASCII - characters, from the space (32) to DEL (127). The checksum - digit is mandatory in this encoding. - -@item code 128-C - The ``C'' variation of Code-128 uses Code-128 symbols to - represent two digits at a time (Code-128 is made up of 104 - symbols whose interpretation is controlled by the start symbol - being used). Code 128-C is thus the most compact way to - represent any even number of digits. The encoder refuses to - deal with an odd number of digits because the caller is - expected to provide proper padding to an even number of - digits. (Since Code-128 includes control symbols to switch - charset, it is theoretically possible to represent the odd - digit as a Code 128-A or 128-B symbol, but this tool doesn't - currently implement this option). - -@item code 128 raw - Code-128 output represented symbol-by-symbol in the input - string. To override part of the problems outlined below in - specifying code128 symbols, this pseudo-encoding allows the - used to specify a list of code128 symbols separated by - spaces. Each symbol is represented by a number in the range - 0-105. The list should include the leading character.The - checksum and the stop character are automatically added by the - library. Most likely this pseudo-encoding will be used with - @t{BARCODE_NO_ASCII} and some external program to supply the - printed text. - -@item code 39 - The code-39 standard can encode uppercase letters, digits, the - blank space, plus, minus, dot, star, dollar, slash, percent. - Any string that is only composed of such characters is - accepted by the code-39 encoder. To avoid loosing information, - the encoder refuses to encode mixed-case strings (a lowercase - string is nonetheless accepted as a shortcut, but is encoded - as uppercase). - -@item interleaved 2 of 5 - This encoding can only represent an even number of digits - (odd digits are represented by bars, and even digits by the - interleaving spaces). The name stresses the fact that two - of the five items (bars or spaces) allocated to each symbol - are wide, while the rest are narrow. The checksum digit is - optional (can be disabled via @t{BARCODE_NO_CHECKSUM}). - Since the number of digits, including the checksum, must be even, - a leading zero is inserted in the string being encoded if needed - (this is specifically stated in the specs I have access to). - -@item code 128 - Automatic selection between alphabet A, B and C of the Code-128 - standard. This encoding can represent all ASCII symbols, from - 0 (NUL) to 127 (DEL), as well as four special symbols, named - F1, F2, F3, F4. The set of symbols available in this encoding - is not easily represented as input to the @i{barcode} library, - so the following convention is used. In the input string, - which is a C-language null-terminated string, the NUL char - is represented by the value 128 (0x80, 0200) and the F1-F4 characters - are represented by the values 193-196 (0xc1-0xc4, 0301-0304). - The values have been chosen to ease their representation as - escape sequences. - - Since the shell doesn't seem to interpret escape sequences on the - command line, the "-b" option cannot be easily used to designate - the strings to be encoded. As a workaround you can resort - to the command @t{echo}, either within back-ticks or used - separately to create a file that is then fed to the standard-input - of @i{barcode} -- assuming your @t{echo} command processes escape - sequences. The newline character is especially though to encode - (but not impossible unless you use a @t{csh} variant. - - These problems only apply to the command-line tool; the use of - library functions doesn't give any problem. In needed, you can - use the ``@i{code 128 raw}'' pseudo-encoding to represent - code128 symbols by their numerical value. This encoding is - used late in the auto-selection mechanism because (almost) any - input string can be represented using code128. - -@item Codabar - Codabar can encode the ten digits and a few special symbols - (minus, plus, dollar, colon, bar, dot). The characters - ``@t{A}'', ``@t{B}'', ``@t{C}'' and ``@t{D}'' are used to - represent four different start/stop characters. The input - string to the barcode library can include the start and stop - characters or not include them (in which case ``@t{A}'' is - used as start and ``@t{B}'' as stop). Start and stop - characters in the input string can be either all lowercase or - all uppercase and are always printed as uppercase. - -@item Plessey - Plessey barcodes can encode all the hexadecimal - digits. Alphabetic digits in the input string must either be - all lowercase or all uppercase. The output text is always - uppercase. - -@item MSI - MSI can only encode the decimal digits. While the standard - specifies either one or two check digits, the current - implementation in this library only generates one check digit. - -@item code 93 - The code-93 standard can natively encode 48 different characters, - including uppercase letters, digits, the blank space, plus, minus, - dot, star, dollar, slash, percent, as well as five special - characters: a start/stop delimiter and four "shift characters" used - for extended encoding. Using this "extended encoding" method, any - standard 7-bit ASCII character can be encoded, but it takes up two - symbol lengths in barcode if the character is not natively supported - (one of the 48). - The encoder here fully implements the code 93 encoding standard. - Any characters natively supported (A-Z, 0-9, ".+-/$&%") will be - encoded as such - for any other characters (such as lower case - letters, brackets, parentheses, etc.), the encoder will revert - to extended encoding. - As a note, the option to exclude the checksum will eliminate the - two modulo-47 checksums (called C and K) from the barcode, but this - probably will make it unreadable by 99% of all scanning systems. - These checksums are specified to be used at the firmware level, - and their absence will be interpreted as an invalid barcode. - - -@end table - -%M .SH PCL OUTPUT - -%########################################################################## -@node PCL Output, Bugs and Pending Issues, Supported Encodings, Top -@chapter PCL Output - -While the default output is Postscript (possibly EPS), and Postscript -can be post-processed to almost anything, it is sometimes desirable to -create output directly usable by the specific printer at hand. -PCL is currently supported as an output format for this reason. -Please note that the Y coordinate for PCL goes from top to bottom, while -for Postscript it goes from bottom to top. Consistently, while in -Postscript you specify the bottom-left corner as origin, for PCL -you specify the top-left corner. - -Barcode output for PCL Printers (HP LaserJet and compatibles), -was developed using PCL5 Reference manuals from HP. -that really refers to these printers: -@itemize @bullet - -@item -LaserJet III, III P, III D, III Si, - -@item -LaserJet 4 family - -@item -LaserJet 5 family - -@item -LaserJet 6 family - -@item -Color LaserJet - -@item -DeskJet 1200 and 1600. - -@end itemize - -However, barcode printing uses a very small subset of PCL, probably also -LaserJet II should print it without problem, but the resulting text may -be horrible. - -The only real difference from one printer to another really depends on -which font are available in the printer, used in printing the label -associated to the bars (if requested). - -Earlier LaserJet supports only bitmaps fonts, so these are not -"scalable". (Ljet II ?), Also these fonts, when available, have a -specified direction, and not all of them are available in -both Portrait and Landscape mode. - -From LaserJet 4 series, (except 4L/5L that are entry-level printers), -Arial scalable font should be available, so it's the "default font" -used by this program. - -LaserJet III series printers (and 4L, 5L), don't feature "Arial" as a -resident font, so you should use @t{BARCODE_OUT_PCL_III} instead of -@t{BARCODE_OUT_PCL.}, and font the font used will be "Univers" instead -of "Arial". - -Results on compatible printers, may depend on consistency of -PCL5 compatibility, in doubt, try BARCODE_OUT_PCL_III - -PJL commands are not used here, as it's not very compatible. - - -Tested Printers: -@itemize @bullet -@item -Hp LaserJet 4050 -@item -Hp LaserJet 2100 -@item -Epson N-1200 emul PCL -@item -Toshiba DP2570 (copier) + PCL option -@item -Epson EPL-7100 emul. HP LaserJet II: bars print fine but text is bad. -@end itemize - - -%M .SH BUGS - -%########################################################################## -@node Bugs and Pending Issues, , PCL Output, Top -@chapter Bugs and Pending Issues. - -The current management of borders/margins is far from optimal. The -``default'' margin applied by the library interferes with the external -representation, but I feel it is mandatory to avoid creating barcode -output with no surrounding white space (the problem is especially -relevant for EPS output). - -EAN-128 is not (yet) supported. I plan to implement it pretty soon and -then bless the package as version 1.0. - -%M .SH "SEE ALSO" -%M \fBbarcode(3)\fP -%M -%M .SH AUTHORS -%M Alessandro Rubini (maintainer) -%M .PP -%M Leonid A. Broukhis (several encodings) -%M .PP -%M Andrea Scopece (PCL output) -%MANPAGE END - -@iftex -@contents -@end iftex - -@bye -@c LocalWords: barcode ifinfo titlepage iftex texinfo ascii frontend LGPL -@c LocalWords: tarball malloced textinfo scalef isbn Plessey codabar GPL Ljet -@c LocalWords: LocalWords LaserJet Univers Arial Debian libpaper pagesize -@c LocalWords: Epson MANPAGE stderr barcodes emul DeskJet xmargin ymargin -@c LocalWords: leftmargin rightmargin topmargin bottommargin unset struct -@c LocalWords: NOHEADERS yoff xoff versionname errno malloc behaviour charset diff --git a/glabels2/barcode-0.98/doc/infofilter b/glabels2/barcode-0.98/doc/infofilter deleted file mode 100755 index 92bc8b7d..00000000 --- a/glabels2/barcode-0.98/doc/infofilter +++ /dev/null @@ -1,16 +0,0 @@ -#! /usr/bin/sed -f - - -# allow "%" as a comment char, but only at the beginning of the line -s/^%/@c / -#s/[^\\]%.*$// -s/^\\%/%/ - -#preserve blanks in @lisp blocks -/@lisp/,/@end lisp/ p -/@lisp/,/@end lisp/ d - -# remove leading blanks -s/^[ ]*// - -#s/\\t/@code/g diff --git a/glabels2/barcode-0.98/doc/manpager b/glabels2/barcode-0.98/doc/manpager deleted file mode 100755 index 46de5be2..00000000 --- a/glabels2/barcode-0.98/doc/manpager +++ /dev/null @@ -1,120 +0,0 @@ -#! /usr/bin/awk -f -# Copyright (c) 1998-2001 Alessandro Rubini - -BEGIN {IN=0} - -/^%MANPAGE END/ {IN=0; next} -/^%MANPAGE/ {IN=1; USELP=NEEDLP=INTABLE=0; NAME=$2; next} -IN==0 {next} - -/^%MSKIP/ {SKIP=1;next} -/^%M/ {SKIP=0} - -/^@menu/ {SKIP=1;next} -/^@end menu/ {SKIP=0;next} - -SKIP==1 {next} -/^%M$/ {next} -/^@ignore/ {next} -/^@end ign/ {next} - -#now perform all the substitutions needed - - { gsub("^%M ?",""); } - -# Use gensub for converting tags: itz Sep 30 1998 -# -# However, the gensub function is gawk-specific, and we want things -# to work with original-awk too (for portability). -# Therefore, use a normal gsub, even though it's a subobptimal solution -# as it may step in extra braces. The good solution will be piping to sed, -# or match, extract subesxpression, replace, reinsert -- bleah... -# (ARub, Oct 10 2000) -/@b\{/ { - #$0 = gensub(/@b\{([^}]+)\}/, "\\\\fB\\1\\\\fP","g"); - gsub("@b\{","\\fB"); - gsub("\}","\\fP"); -} - -/@var\{/ { - #$0 = gensub(/@var\{([^}]+)\}/, "\\\\fI\\1\\\\fP","g"); - gsub("@var\{","\\fB"); - gsub("\}","\\fP"); -} - -/@(samp|code|file)\{/ { - #$0 = gensub(/@(samp|code|file)\{([^}]+)\}/, "`\\2'","g"); - gsub("@(samp|code|file)\{",""); - gsub("\}",""); -} - - -/@xref\{.*\}\./ { - gsub(/@xref\{.*\}\./,""); -} - -/@ref\{.*\}/ { - gsub("@ref\{",""); - gsub("\}",""); -} - -/@\*/ { - gsub(/@\* */,"\n.br\n"); -} - -/@[a-z]+\{/ { - gsub("@[a-z]+\\{",""); - gsub("}",""); - } - -/^@table/ { TABLE=1; } -/^@itemize/ { TABLE=1; next} - -/^@item/ { - gsub("^@item *",""); - printf ".TP\n%s\n",$0 > NAME; - NEEDLP=0; next; - } - -/^@end table/ {TABLE=0} -/^@end itemize/ {TABLE=0} - -# discard other texinfo commands - -/^@/ {next} - -# manage comments and '%' - -/^%/ {next} - - - { - gsub("[^\\\\]%.*$",""); - gsub("\\%","%"); - } - -# remove leading blanks - -/^[ \t]/ {gsub("^[ \t]*","");} - -# put a .LP at blank lines - -/^.nf/ {USELP=0} -/^.fi/ {USELP=1} - -/^$/ {if (USELP) {NEEDLP++; next;} } - - -/./ { if (NEEDLP) { printf "\n.LP\n" > NAME; NEEDLP=0; } } - -/^.TH/ {USELP=1} - -# Escape single slashes (e.g. in documentation for `-l' command line option) - - {gsub("\\\\ ", "\\\\ ");} - - {gsub("~", "~~");} - - {print > NAME} - - diff --git a/glabels2/barcode-0.98/doc/mktxt b/glabels2/barcode-0.98/doc/mktxt deleted file mode 100755 index bd3f88ba..00000000 --- a/glabels2/barcode-0.98/doc/mktxt +++ /dev/null @@ -1,38 +0,0 @@ -#! /usr/bin/awk -f - -# Warning: this may use gnu-awk features - -# Program to create ascii from info; -# Missing: table of contents - -# skip - -BEGIN {NODELINE=0; NODE=0; KEEP=1; printf "\n\n"} - - -/^\037$/ { NODELINE=1; NODE=NODE+1; KEEP=1; next} - -NODE==1 { next } - -NODELINE==1 { - NODELINE=2; - sub("^.*Node: ","*Node: "); - sub(",.*$",""); - printf "\n\n\n%s",$0; -#print - next; - } - -NODELINE { NODELINE=NODELINE+1 } - -NODELINE==4 { printf "\t\t\t\t"; } -NODELINE==5 { printf "\t\t\t\t"; NODELINE=0} - - -/^\* Menu:$/ { KEEP=0 } - - - -KEEP==0 { next } - -{ print } diff --git a/glabels2/barcode-0.98/doc/texi2html b/glabels2/barcode-0.98/doc/texi2html deleted file mode 100755 index 2c61aa93..00000000 --- a/glabels2/barcode-0.98/doc/texi2html +++ /dev/null @@ -1,2021 +0,0 @@ -#!/usr/local/bin/perl -'di '; -'ig 00 '; -#+############################################################################## -# # -# File: texi2html # -# # -# Description: Program to transform most Texinfo documents to HTML # -# # -#-############################################################################## - -# @(#)texi2html 1.51 09/10/96 Written (mainly) by Lionel Cons, Lionel.Cons@cern.ch - -# The man page for this program is included at the end of this file and can be -# viewed using the command 'nroff -man texi2html'. -# Please read the copyright at the end of the man page. - -#+++############################################################################ -# # -# Constants # -# # -#---############################################################################ - -$DEBUG_TOC = 1; -$DEBUG_INDEX = 2; -$DEBUG_BIB = 4; -$DEBUG_GLOSS = 8; -$DEBUG_DEF = 16; -$DEBUG_HTML = 32; -$DEBUG_USER = 64; - -$BIBRE = '\[[\w\/]+\]'; # RE for a bibliography reference -$FILERE = '[\/\w.+-]+'; # RE for a file name -$VARRE = '[^\s\{\}]+'; # RE for a variable name -$NODERE = '[^@{}:\'`",]+'; # RE for a node name -$NODESRE = '[^@{}:\'`"]+'; # RE for a list of node names -$XREFRE = '[^@{}]+'; # RE for a xref (should use NODERE) - -$ERROR = "***"; # prefix for errors and warnings -$THISPROG = "texi2html 1.51"; # program name and version -$HOMEPAGE = "http://wwwcn.cern.ch/dci/texi2html/"; # program home page -$TODAY = &pretty_date; # like "20 September 1993" -$SPLITTAG = "\n"; # tag to know where to split -$PROTECTTAG = "_ThisIsProtected_"; # tag to recognize protected sections -$html2_doctype = ''; - -# -# language dependent constants -# -#$LDC_SEE = 'see'; -#$LDC_SECTION = 'section'; -#$LDC_IN = 'in'; -#$LDC_TOC = 'Table of Contents'; -#$LDC_GOTO = 'Go to the'; -#$LDC_FOOT = 'Footnotes'; -# TODO: @def* shortcuts - -# -# pre-defined indices -# -%predefined_index = ( - 'cp', 'c', - 'fn', 'f', - 'vr', 'v', - 'ky', 'k', - 'pg', 'p', - 'tp', 't', - ); - -# -# valid indices -# -%valid_index = ( - 'c', 1, - 'f', 1, - 'v', 1, - 'k', 1, - 'p', 1, - 't', 1, - ); - -# -# texinfo section names to level -# -%sec2level = ( - 'top', 0, - 'chapter', 1, - 'unnumbered', 1, - 'majorheading', 1, - 'chapheading', 1, - 'appendix', 1, - 'section', 2, - 'unnumberedsec', 2, - 'heading', 2, - 'appendixsec', 2, - 'appendixsection', 2, - 'subsection', 3, - 'unnumberedsubsec', 3, - 'subheading', 3, - 'appendixsubsec', 3, - 'subsubsection', 4, - 'unnumberedsubsubsec', 4, - 'subsubheading', 4, - 'appendixsubsubsec', 4, - ); - -# -# accent map, TeX command to ISO name -# -%accent_map = ( - '"', 'uml', - '~', 'tilde', - '^', 'circ', - '`', 'grave', - '\'', 'acute', - ); - -# -# texinfo "simple things" (@foo) to HTML ones -# -%simple_map = ( - # cf. makeinfo.c - "*", "
    ", # HTML+ - " ", " ", - "\n", "\n", - "|", "", - # spacing commands - ":", "", - "!", "!", - "?", "?", - ".", ".", - ); - -# -# texinfo "things" (@foo{}) to HTML ones -# -%things_map = ( - 'TeX', 'TeX', - 'br', '

    ', # paragraph break - 'bullet', '*', - 'copyright', '(C)', - 'dots', '...', - 'equiv', '==', - 'error', 'error-->', - 'expansion', '==>', - 'minus', '-', - 'point', '-!-', - 'print', '-|', - 'result', '=>', - 'today', $TODAY, - ); - -# -# texinfo styles (@foo{bar}) to HTML ones -# -%style_map = ( - 'asis', '', - 'b', 'B', - 'cite', 'CITE', - 'code', 'CODE', - 'ctrl', '&do_ctrl', # special case - 'dfn', 'STRONG', # DFN tag is illegal in the standard - 'dmn', '', # useless - 'emph', 'EM', - 'file', '"TT', # will put quotes, cf. &apply_style - 'i', 'I', - 'kbd', 'KBD', - 'key', 'KBD', - 'r', '', # unsupported - 'samp', '"SAMP', # will put quotes, cf. &apply_style - 'sc', '&do_sc', # special case - 'strong', 'STRONG', - 't', 'TT', - 'titlefont', '', # useless - 'var', 'VAR', - 'w', '', # unsupported - ); - -# -# texinfo format (@foo/@end foo) to HTML ones -# -%format_map = ( - 'display', 'PRE', - 'example', 'PRE', - 'format', 'PRE', - 'lisp', 'PRE', - 'quotation', 'BLOCKQUOTE', - 'smallexample', 'PRE', - 'smalllisp', 'PRE', - # lists - 'itemize', 'UL', - 'enumerate', 'OL', - # poorly supported - 'flushleft', 'PRE', - 'flushright', 'PRE', - ); - -# -# texinfo definition shortcuts to real ones -# -%def_map = ( - # basic commands - 'deffn', 0, - 'defvr', 0, - 'deftypefn', 0, - 'deftypevr', 0, - 'defcv', 0, - 'defop', 0, - 'deftp', 0, - # basic x commands - 'deffnx', 0, - 'defvrx', 0, - 'deftypefnx', 0, - 'deftypevrx', 0, - 'defcvx', 0, - 'defopx', 0, - 'deftpx', 0, - # shortcuts - 'defun', 'deffn Function', - 'defmac', 'deffn Macro', - 'defspec', 'deffn {Special Form}', - 'defvar', 'defvr Variable', - 'defopt', 'defvr {User Option}', - 'deftypefun', 'deftypefn Function', - 'deftypevar', 'deftypevr Variable', - 'defivar', 'defcv {Instance Variable}', - 'defmethod', 'defop Method', - # x shortcuts - 'defunx', 'deffnx Function', - 'defmacx', 'deffnx Macro', - 'defspecx', 'deffnx {Special Form}', - 'defvarx', 'defvrx Variable', - 'defoptx', 'defvrx {User Option}', - 'deftypefunx', 'deftypefnx Function', - 'deftypevarx', 'deftypevrx Variable', - 'defivarx', 'defcvx {Instance Variable}', - 'defmethodx', 'defopx Method', - ); - -# -# things to skip -# -%to_skip = ( - # comments - 'c', 1, - 'comment', 1, - # useless - 'contents', 1, - 'shortcontents', 1, - 'summarycontents', 1, - 'footnotestyle', 1, - 'end ifclear', 1, - 'end ifset', 1, - 'titlepage', 1, - 'end titlepage', 1, - # unsupported commands (formatting) - 'afourpaper', 1, - 'cropmarks', 1, - 'finalout', 1, - 'headings', 1, - 'need', 1, - 'page', 1, - 'setchapternewpage', 1, - 'everyheading', 1, - 'everyfooting', 1, - 'evenheading', 1, - 'evenfooting', 1, - 'oddheading', 1, - 'oddfooting', 1, - 'smallbook', 1, - 'vskip', 1, - 'filbreak', 1, - # unsupported formats - 'cartouche', 1, - 'end cartouche', 1, - 'group', 1, - 'end group', 1, - ); - -#+++############################################################################ -# # -# Argument parsing, initialisation # -# # -#---############################################################################ - -$use_bibliography = 1; -$use_acc = 0; -$debug = 0; -$doctype = ''; -$check = 0; -$expandinfo = 0; -$use_glossary = 0; -$invisible_mark = ''; -$use_iso = 0; -@include_dirs = (); -$show_menu = 0; -$number_sections = 0; -$split_node = 0; -$split_chapter = 0; -$monolithic = 0; -$verbose = 0; -$usage = <= 0 && $ARGV[0] =~ /^-/) { - $_ = shift(@ARGV); - if (/^-acc$/) { $use_acc = 1; next; } - if (/^-d(ebug)?(\d+)?$/) { $debug = $2 || shift(@ARGV); next; } - if (/^-doctype$/) { $doctype = shift(@ARGV); next; } - if (/^-c(heck)?$/) { $check = 1; next; } - if (/^-e(xpandinfo)?$/) { $expandinfo = 1; next; } - if (/^-g(lossary)?$/) { $use_glossary = 1; next; } - if (/^-i(nvisible)?$/) { $invisible_mark = shift(@ARGV); next; } - if (/^-iso$/) { $use_iso = 1; next; } - if (/^-I(.+)?$/) { push(@include_dirs, $1 || shift(@ARGV)); next; } - if (/^-m(enu)?$/) { $show_menu = 1; next; } - if (/^-mono(lithic)?$/) { $monolithic = 1; next; } - if (/^-n(umber)?$/) { $number_sections = 1; next; } - if (/^-s(plit)?_?(n(ode)?|c(hapter)?)?$/) { - if ($2 =~ /^n/) { - $split_node = 1; - } else { - $split_chapter = 1; - } - next; - } - if (/^-v(erbose)?$/) { $verbose = 1; next; } - die $usage; -} -if ($check) { - die $usage unless @ARGV > 0; - ✓ - exit; -} - -if (($split_node || $split_chapter) && $monolithic) { - warn "Can't use -monolithic with -split, -monolithic ignored.\n"; - $monolithic = 0; -} -if ($expandinfo) { - $to_skip{'ifinfo'}++; - $to_skip{'end ifinfo'}++; -} else { - $to_skip{'iftex'}++; - $to_skip{'end iftex'}++; -} -$invisible_mark = '' if $invisible_mark eq 'xbm'; -die $usage unless @ARGV == 1; -$docu = shift(@ARGV); -if ($docu =~ /.*\//) { - chop($docu_dir = $&); - $docu_name = $'; -} else { - $docu_dir = '.'; - $docu_name = $docu; -} -unshift(@include_dirs, $docu_dir); -$docu_name =~ s/\.te?x(i|info)?$//; # basename of the document - -$docu_doc = "$docu_name.html"; # document's contents -if ($monolithic) { - $docu_toc = $docu_foot = $docu_doc; -} else { - $docu_toc = "${docu_name}_toc.html"; # document's table of contents - $docu_foot = "${docu_name}_foot.html"; # document's footnotes -} - -# -# variables -# -%value = (); # hold texinfo variables -$value{'html'} = 1; # predefine html (the output format) -$value{'texi2html'} = '1.51'; # predefine texi2html (the translator) -# _foo: internal to track @foo -foreach ('_author', '_title', '_subtitle', - '_settitle', '_setfilename') { - $value{$_} = ''; # prevent -w warnings -} -%node2sec = (); # node to section name -%node2href = (); # node to HREF -%bib2href = (); # bibliography reference to HREF -%gloss2href = (); # glossary term to HREF -@sections = (); # list of sections -%tag2pro = (); # protected sections - -# -# initial indexes -# -$bib_num = 0; -$foot_num = 0; -$gloss_num = 0; -$idx_num = 0; -$sec_num = 0; -$doc_num = 0; -$html_num = 0; - -# -# can I use ISO8879 characters? (HTML+) -# -if ($use_iso) { - $things_map{'bullet'} = "•"; - $things_map{'copyright'} = "©"; - $things_map{'dots'} = "…"; - $things_map{'equiv'} = "≡"; - $things_map{'expansion'} = "→"; - $things_map{'point'} = "∗"; - $things_map{'result'} = "⇒"; -} - -# -# read texi2html extensions (if any) -# -$extensions = 'texi2html.ext'; # extensions in working directory -if (-f $extensions) { - print "# reading extensions from $extensions\n" if $verbose; - require($extensions); -} -($progdir = $0) =~ s/[^\/]+$//; -if ($progdir && ($progdir ne './')) { - $extensions = "${progdir}texi2html.ext"; # extensions in texi2html directory - if (-f $extensions) { - print "# reading extensions from $extensions\n" if $verbose; - require($extensions); - } -} - -print "# reading from $docu\n" if $verbose; - -#+++############################################################################ -# # -# Pass 1: read source, handle command, variable, simple substitution # -# # -#---############################################################################ - -@lines = (); # whole document -@toc_lines = (); # table of contents -$toplevel = 0; # top level seen in hierarchy -$curlevel = 0; # current level in TOC -$node = ''; # current node name -$in_table = 0; # am I inside a table -$table_type = ''; # type of table ('', 'f', 'v') -@tables = (); # nested table support -$in_bibliography = 0; # am I inside a bibliography -$in_glossary = 0; # am I inside a glossary -$in_top = 0; # am I inside the top node -$in_pre = 0; # am I inside a preformatted section -$in_list = 0; # am I inside a list -$in_html = 0; # am I inside an HTML section -$first_line = 1; # is it the first line -$dont_html = 0; # don't protect HTML on this line -$split_num = 0; # split index -$deferred_ref = ''; # deferred reference for indexes -@html_stack = (); # HTML elements stack -$html_element = ''; # current HTML element -&html_reset; - -# build code for simple substitutions -# the maps used (%simple_map and %things_map) MUST be aware of this -# watch out for regexps, / and escaped characters! -$subst_code = ''; -foreach (keys(%simple_map)) { - ($re = $_) =~ s/(\W)/\\$1/g; # protect regexp chars - $subst_code .= "s/\\\@$re/$simple_map{$_}/g;\n"; -} -foreach (keys(%things_map)) { - $subst_code .= "s/\\\@$_\\{\\}/$things_map{$_}/g;\n"; -} -if ($use_acc) { - # accentuated characters - foreach (keys(%accent_map)) { - if ($_ eq "`") { - $subst_code .= "s/$;3"; - } elsif ($_ eq "'") { - $subst_code .= "s/$;4"; - } else { - $subst_code .= "s/\\\@\\$_"; - } - $subst_code .= "([aeiou])/&\${1}$accent_map{$_};/gi;\n"; - } -} -eval("sub simple_substitutions { $subst_code }"); - -&init_input; -while ($_ = &next_line) { - # - # remove \input on the first lines only - # - if ($first_line) { - next if /^\\input/; - $first_line = 0; - } - # - # parse texinfo tags - # - $tag = ''; - $end_tag = ''; - if (/^\@end\s+(\w+)\b/) { - $end_tag = $1; - } elsif (/^\@(\w+)\b/) { - $tag = $1; - } - # - # handle @ifhtml / @end ifhtml - # - if ($in_html) { - if ($end_tag eq 'ifhtml') { - $in_html = 0; - } else { - $tag2pro{$in_html} .= $_; - } - next; - } elsif ($tag eq 'ifhtml') { - $in_html = $PROTECTTAG . ++$html_num; - push(@lines, $in_html); - next; - } - # - # try to skip the line - # - if ($end_tag) { - next if $to_skip{"end $end_tag"}; - } elsif ($tag) { - next if $to_skip{$tag}; - last if $tag eq 'bye'; - } - if ($in_top) { - # parsing the top node - if ($tag eq 'node' || $tag eq 'include' || $sec2level{$tag}) { - # no more in top - $in_top = 0; - } else { - # skip it - next; - } - } - # - # try to remove inlined comments - # syntax from tex-mode.el comment-start-skip - # - s/((^|[^\@])(\@\@)*)\@c(omment)? .*/$1/; - # non-@ substitutions cf. texinfmt.el - s/``/\"/g; - s/''/\"/g; - s/([\w ])---([\w ])/$1--$2/g; - # - # analyze the tag - # - if ($tag) { - # skip lines - &skip_until($tag), next if $tag eq 'ignore'; - if ($expandinfo) { - &skip_until($tag), next if $tag eq 'iftex'; - } else { - &skip_until($tag), next if $tag eq 'ifinfo'; - } - &skip_until($tag), next if $tag eq 'tex'; - # handle special tables - if ($tag eq 'table') { - $table_type = ''; - } elsif ($tag eq 'ftable') { - $tag = 'table'; - $table_type = 'f'; - } elsif ($tag eq 'vtable') { - $tag = 'table'; - $table_type = 'v'; - } - # special cases - if ($tag eq 'top' || ($tag eq 'node' && /^\@node\s+top\s*,/i)) { - $in_top = 1; - @lines = (); # ignore all lines before top (title page garbage) - next; - } elsif ($tag eq 'node') { - $in_top = 0; - warn "$ERROR Bad node line: $_" unless $_ =~ /^\@node\s$NODESRE$/o; - $_ = &protect_html($_); # if node contains '&' for instance - s/^\@node\s+//; - ($node) = split(/,/); - &normalise_node($node); - if ($split_node) { - &next_doc; - push(@lines, $SPLITTAG) if $split_num++; - push(@sections, $node); - } - next; - } elsif ($tag eq 'include') { - if (/^\@include\s+($FILERE)\s*$/o) { - $file = $1; - unless (-e $file) { - foreach $dir (@include_dirs) { - $file = "$dir/$1"; - last if -e $file; - } - } - if (-e $file) { - &open($file); - print "# including $file\n" if $verbose; - } else { - warn "$ERROR Can't find $file, skipping"; - } - } else { - warn "$ERROR Bad include line: $_"; - } - next; - } elsif ($tag eq 'ifclear') { - if (/^\@ifclear\s+($VARRE)\s*$/o) { - next unless defined($value{$1}); - &skip_until($tag); - } else { - warn "$ERROR Bad ifclear line: $_"; - } - next; - } elsif ($tag eq 'ifset') { - if (/^\@ifset\s+($VARRE)\s*$/o) { - next if defined($value{$1}); - &skip_until($tag); - } else { - warn "$ERROR Bad ifset line: $_"; - } - next; - } elsif ($tag eq 'menu') { - unless ($show_menu) { - &skip_until($tag); - next; - } - &html_push_if($tag); - push(@lines, &html_debug("\n", __LINE__)); - } elsif ($format_map{$tag}) { - $in_pre = 1 if $format_map{$tag} eq 'PRE'; - &html_push_if($format_map{$tag}); - push(@lines, &html_debug("\n", __LINE__)); - $in_list++ if $format_map{$tag} eq 'UL' || $format_map{$tag} eq 'OL' ; - push(@lines, &debug("<$format_map{$tag}>\n", __LINE__)); - next; - } elsif ($tag eq 'table') { - if (/^\@[fv]?table\s+\@(\w+)\s*$/) { - $in_table = $1; - unshift(@tables, join($;, $table_type, $in_table)); - push(@lines, &debug("

    \n", __LINE__)); - &html_push_if('DL'); - push(@lines, &html_debug("\n", __LINE__)); - } else { - warn "$ERROR Bad table line: $_"; - } - next; - } elsif ($tag eq 'synindex' || $tag eq 'syncodeindex') { - if (/^\@$tag\s+(\w)\w\s+(\w)\w\s*$/) { - eval("*${1}index = *${2}index"); - } else { - warn "$ERROR Bad syn*index line: $_"; - } - next; - } elsif ($tag eq 'sp') { - push(@lines, &debug("

    \n", __LINE__)); - next; - } elsif ($tag eq 'setref') { - &protect_html; # if setref contains '&' for instance - if (/^\@$tag\s*{($NODERE)}\s*$/) { - $setref = $1; - $setref =~ s/\s+/ /g; # normalize - $setref =~ s/ $//; - $node2sec{$setref} = $name; - $node2href{$setref} = "$docu_doc#$docid"; - } else { - warn "$ERROR Bad setref line: $_"; - } - next; - } elsif ($tag eq 'defindex' || $tag eq 'defcodeindex') { - if (/^\@$tag\s+(\w\w)\s*$/) { - $valid_index{$1} = 1; - } else { - warn "$ERROR Bad defindex line: $_"; - } - next; - } elsif (defined($def_map{$tag})) { - if ($def_map{$tag}) { - s/^\@$tag\s+//; - $tag = $def_map{$tag}; - $_ = "\@$tag $_"; - $tag =~ s/\s.*//; - } - } elsif (defined($user_sub{$tag})) { - s/^\@$tag\s+//; - $sub = $user_sub{$tag}; - print "# user $tag = $sub, arg: $_" if $debug & $DEBUG_USER; - if (defined(&$sub)) { - chop($_); - &$sub($_); - } else { - warn "$ERROR Bad user sub for $tag: $sub\n"; - } - next; - } - if (defined($def_map{$tag})) { - s/^\@$tag\s+//; - if ($tag =~ /x$/) { - # extra definition line - $tag = $`; - $is_extra = 1; - } else { - $is_extra = 0; - } - while (/\{([^\{\}]*)\}/) { - # this is a {} construct - ($before, $contents, $after) = ($`, $1, $'); - # protect spaces - $contents =~ s/\s+/$;9/g; - # restore $_ protecting {} - $_ = "$before$;7$contents$;8$after"; - } - @args = split(/\s+/, &protect_html($_)); - foreach (@args) { - s/$;9/ /g; # unprotect spaces - s/$;7/\{/g; # ... { - s/$;8/\}/g; # ... } - } - $type = shift(@args); - $type =~ s/^\{(.*)\}$/$1/; - print "# def ($tag): {$type} ", join(', ', @args), "\n" - if $debug & $DEBUG_DEF; - $type .= ':'; # it's nicer like this - $name = shift(@args); - $name =~ s/^\{(.*)\}$/$1/; - if ($is_extra) { - $_ = &debug("

    ", __LINE__); - } else { - $_ = &debug("
    \n
    ", __LINE__); - } - if ($tag eq 'deffn' || $tag eq 'defvr' || $tag eq 'deftp') { - $_ .= "$type $name"; - $_ .= " @args" if @args; - } elsif ($tag eq 'deftypefn' || $tag eq 'deftypevr' - || $tag eq 'defcv' || $tag eq 'defop') { - $ftype = $name; - $name = shift(@args); - $name =~ s/^\{(.*)\}$/$1/; - $_ .= "$type $ftype $name"; - $_ .= " @args" if @args; - } else { - warn "$ERROR Unknown definition type: $tag\n"; - $_ .= "$type $name"; - $_ .= " @args" if @args; - } - $_ .= &debug("\n
    ", __LINE__); - $name = &unprotect_html($name); - if ($tag eq 'deffn' || $tag eq 'deftypefn') { - unshift(@input_spool, "\@findex $name\n"); - } elsif ($tag eq 'defop') { - unshift(@input_spool, "\@findex $name on $ftype\n"); - } elsif ($tag eq 'defvr' || $tag eq 'deftypevr' || $tag eq 'defcv') { - unshift(@input_spool, "\@vindex $name\n"); - } else { - unshift(@input_spool, "\@tindex $name\n"); - } - $dont_html = 1; - } - } elsif ($end_tag) { - if ($format_map{$end_tag}) { - $in_pre = 0 if $format_map{$end_tag} eq 'PRE'; - $in_list-- if $format_map{$end_tag} eq 'UL' || $format_map{$end_tag} eq 'OL' ; - &html_pop_if('LI', 'P'); - &html_pop_if(); - push(@lines, &debug("\n", __LINE__)); - push(@lines, &html_debug("\n", __LINE__)); - } elsif ($end_tag eq 'table' || - $end_tag eq 'ftable' || - $end_tag eq 'vtable') { - shift(@tables); - if (@tables) { - ($table_type, $in_table) = split($;, $tables[0]); - } else { - $in_table = 0; - } - push(@lines, "
    \n"); - &html_pop_if('DD'); - &html_pop_if(); - } elsif (defined($def_map{$end_tag})) { - push(@lines, &debug("
    \n", __LINE__)); - } elsif ($end_tag eq 'menu') { - &html_pop_if(); - push(@lines, $_); # must keep it for pass 2 - } - next; - } - # - # misc things - # - # protect texi and HTML things - &protect_texi; - $_ = &protect_html($_) unless $dont_html; - $dont_html = 0; - # substitution (unsupported things) - s/^\@center\s+//g; - s/^\@exdent\s+//g; - s/\@noindent\s+//g; - s/\@refill\s+//g; - # other substitutions - &simple_substitutions; - s/\@value{($VARRE)}/$value{$1}/eg; - s/\@footnote\{/\@footnote$docu_doc\{/g; # mark footnotes, cf. pass 4 - # - # analyze the tag again - # - if ($tag) { - if (defined($sec2level{$tag}) && $sec2level{$tag} > 0) { - if (/^\@$tag\s+(.+)$/) { - $name = $1; - $name =~ s/\s+$//; - $level = $sec2level{$tag}; - $name = &update_sec_num($tag, $level) . " $name" - if $number_sections && $tag !~ /^unnumbered/; - if ($tag =~ /heading$/) { - push(@lines, &html_debug("\n", __LINE__)); - if ($html_element ne 'body') { - # We are in a nice pickle here. We are trying to get a H? heading - # even though we are not in the body level. So, we convert it to a - # nice, bold, line by itself. - $_ = &debug("\n\n

    $name

    \n\n", __LINE__); - } else { - $_ = &debug("$name\n", __LINE__); - &html_push_if('body'); - } - print "# heading, section $name, level $level\n" - if $debug & $DEBUG_TOC; - } else { - if ($split_chapter) { - unless ($toplevel) { - # first time we see a "section" - unless ($level == 1) { - warn "$ERROR The first section found is not of level 1: $_"; - warn "$ERROR I'll split on sections of level $level...\n"; - } - $toplevel = $level; - } - if ($level == $toplevel) { - &next_doc; - push(@lines, $SPLITTAG) if $split_num++; - push(@sections, $name); - } - } - $sec_num++; - $docid = "SEC$sec_num"; - $tocid = "TOC$sec_num"; - # check biblio and glossary - $in_bibliography = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*bibliography$/i); - $in_glossary = ($name =~ /^([A-Z]|\d+)?(\.\d+)*\s*glossary$/i); - # check node - if ($node) { - if ($node2sec{$node}) { - warn "$ERROR Duplicate node found: $node\n"; - } else { - $node2sec{$node} = $name; - $node2href{$node} = "$docu_doc#$docid"; - print "# node $node, section $name, level $level\n" - if $debug & $DEBUG_TOC; - } - $node = ''; - } else { - print "# no node, section $name, level $level\n" - if $debug & $DEBUG_TOC; - } - # update TOC - while ($level > $curlevel) { - $curlevel++; - push(@toc_lines, "
      \n"); - } - while ($level < $curlevel) { - $curlevel--; - push(@toc_lines, "
    \n"); - } - $_ = "
  • " . &anchor($tocid, "$docu_doc#$docid", $name, 1); - push(@toc_lines, &substitute_style($_)); - # update DOC - push(@lines, &html_debug("\n", __LINE__)); - &html_reset; - $_ = "".&anchor($docid, "$docu_toc#$tocid", $name)."\n"; - $_ = &debug($_, __LINE__); - push(@lines, &html_debug("\n", __LINE__)); - } - # update DOC - foreach $line (split(/\n+/, $_)) { - push(@lines, "$line\n"); - } - next; - } else { - warn "$ERROR Bad section line: $_"; - } - } else { - # track variables - $value{$1} = $2, next if /^\@set\s+($VARRE)\s+(.*)$/o; - delete $value{$1}, next if /^\@clear\s+($VARRE)\s*$/o; - # store things - $value{'_setfilename'} = $1, next if /^\@setfilename\s+(.*)$/; - $value{'_settitle'} = $1, next if /^\@settitle\s+(.*)$/; - $value{'_author'} .= "$1\n", next if /^\@author\s+(.*)$/; - $value{'_subtitle'} .= "$1\n", next if /^\@subtitle\s+(.*)$/; - $value{'_title'} .= "$1\n", next if /^\@title\s+(.*)$/; - # index - if (/^\@(..?)index\s+/) { - unless ($valid_index{$1}) { - warn "$ERROR Undefined index command: $_"; - next; - } - $id = 'IDX' . ++$idx_num; - $index = $1 . 'index'; - $what = &substitute_style($'); - $what =~ s/\s+$//; - print "# found $index for '$what' id $id\n" - if $debug & $DEBUG_INDEX; - eval(<\n", __LINE__)); - push(@lines, &anchor($id, '', $invisible_mark, !$in_pre)); - &html_push('P'); - } elsif ($html_element eq 'DL' || - $html_element eq 'UL' || - $html_element eq 'OL' ) { - $deferred_ref .= &anchor($id, '', $invisible_mark, !$in_pre) . " "; - } - next; - } - # list item - if (/^\@itemx?\s+/) { - $what = $'; - $what =~ s/\s+$//; - if ($in_bibliography && $use_bibliography) { - if ($what =~ /^$BIBRE$/o) { - $id = 'BIB' . ++$bib_num; - $bib2href{$what} = "$docu_doc#$id"; - print "# found bibliography for '$what' id $id\n" - if $debug & $DEBUG_BIB; - $what = &anchor($id, '', $what); - } - } elsif ($in_glossary && $use_glossary) { - $id = 'GLOSS' . ++$gloss_num; - $entry = $what; - $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/; - $gloss2href{$entry} = "$docu_doc#$id"; - print "# found glossary for '$entry' id $id\n" - if $debug & $DEBUG_GLOSS; - $what = &anchor($id, '', $what); - } - &html_pop_if('P'); - if ($html_element eq 'DL' || $html_element eq 'DD') { - if ($things_map{$in_table} && !$what) { - # special case to allow @table @bullet for instance - push(@lines, &debug("
    $things_map{$in_table}\n", __LINE__)); - } else { - push(@lines, &debug("
    \@$in_table\{$what\}\n", __LINE__)); - } - push(@lines, "
    "); - &html_push('DD') unless $html_element eq 'DD'; - if ($table_type) { # add also an index - unshift(@input_spool, "\@${table_type}index $what\n"); - } - } else { - push(@lines, &debug("
  • $what\n", __LINE__)); - &html_push('LI') unless $html_element eq 'LI'; - } - push(@lines, &html_debug("\n", __LINE__)); - if ($deferred_ref) { - push(@lines, &debug("$deferred_ref\n", __LINE__)); - $deferred_ref = ''; - } - next; - } - } - } - # paragraph separator - if ($_ eq "\n") { - next if $#lines >= 0 && $lines[$#lines] eq "\n"; - if ($html_element eq 'P') { - push(@lines, "\n"); - $_ = &debug("

    \n", __LINE__); - &html_pop; - } - } elsif ($html_element eq 'body' || $html_element eq 'BLOCKQUOTE') { - push(@lines, "

    \n"); - &html_push('P'); - $_ = &debug($_, __LINE__); - } - # otherwise - push(@lines, $_); -} - -# finish TOC -$level = 0; -while ($level < $curlevel) { - $curlevel--; - push(@toc_lines, "

\n"); -} - -print "# end of pass 1\n" if $verbose; - -#+++############################################################################ -# # -# Pass 2/3: handle style, menu, index, cross-reference # -# # -#---############################################################################ - -@lines2 = (); # whole document (2nd pass) -@lines3 = (); # whole document (3rd pass) -$in_menu = 0; # am I inside a menu - -while (@lines) { - $_ = shift(@lines); - # - # special case (protected sections) - # - if (/^$PROTECTTAG/o) { - push(@lines2, $_); - next; - } - # - # menu - # - $in_menu = 1, push(@lines2, &debug("
    \n", __LINE__)), next if /^\@menu\b/; - $in_menu = 0, push(@lines2, &debug("
\n", __LINE__)), next if /^\@end\s+menu\b/; - if ($in_menu) { - if (/^\*\s+($NODERE)::/o) { - $descr = $'; - chop($descr); - &menu_entry($1, $1, $descr); - } elsif (/^\*\s+(.+):\s+([^\t,\.\n]+)[\t,\.\n]/) { - $descr = $'; - chop($descr); - &menu_entry($1, $2, $descr); - } elsif (/^\*/) { - warn "$ERROR Bad menu line: $_"; - } else { # description continued? - push(@lines2, $_); - } - next; - } - # - # printindex - # - if (/^\@printindex\s+(\w\w)\b/) { - local($index, *ary, @keys, $key, $letter, $last_letter, @refs); - if ($predefined_index{$1}) { - $index = $predefined_index{$1} . 'index'; - } else { - $index = $1 . 'index'; - } - eval("*ary = *$index"); - @keys = keys(%ary); - foreach $key (@keys) { - $_ = $key; - 1 while s/<(\w+)>\`(.*)\'<\/\1>/$2/; # remove HTML tags with quotes - 1 while s/<(\w+)>(.*)<\/\1>/$2/; # remove HTML tags - $_ = &unprotect_html($_); - &unprotect_texi; - tr/A-Z/a-z/; # lowercase - $key2alpha{$key} = $_; - print "# index $key sorted as $_\n" - if $key ne $_ && $debug & $DEBUG_INDEX; - } - $last_letter = undef; - foreach $key (sort byalpha @keys) { - $letter = substr($key2alpha{$key}, 0, 1); - $letter = substr($key2alpha{$key}, 0, 2) if $letter eq $;; - if (!defined($last_letter) || $letter ne $last_letter) { - push(@lines2, "\n") if defined($last_letter); - push(@lines2, "

" . &protect_html($letter) . "

\n"); - push(@lines2, "\n"); - $last_letter = $letter; - } - @refs = (); - foreach (split(/$;/, $ary{$key})) { - push(@refs, &anchor('', $_, $key, 0)); - } - push(@lines2, "
  • " . join(", ", @refs) . "\n"); - } - push(@lines2, "
  • \n") if defined($last_letter); - next; - } - # - # simple style substitutions - # - $_ = &substitute_style($_); - # - # xref - # - while (/\@(x|px|info|)ref{($XREFRE)(}?)/o) { - # note: Texinfo may accept other characters - ($type, $nodes, $full) = ($1, $2, $3); - ($before, $after) = ($`, $'); - if (! $full && $after) { - warn "$ERROR Bad xref (no ending } on line): $_"; - $_ = "$before$;0${type}ref\{$nodes$after"; - next; # while xref - } - if ($type eq 'x') { - $type = 'See '; - } elsif ($type eq 'px') { - $type = 'see '; - } elsif ($type eq 'info') { - $type = 'See Info'; - } else { - $type = ''; - } - unless ($full) { - $next = shift(@lines); - $next = &substitute_style($next); - chop($nodes); # remove final newline - if ($next =~ /\}/) { # split on 2 lines - $nodes .= " $`"; - $after = $'; - } else { - $nodes .= " $next"; - $next = shift(@lines); - $next = &substitute_style($next); - chop($nodes); - if ($next =~ /\}/) { # split on 3 lines - $nodes .= " $`"; - $after = $'; - } else { - warn "$ERROR Bad xref (no ending }): $_"; - $_ = "$before$;0xref\{$nodes$after"; - unshift(@lines, $next); - next; # while xref - } - } - } - $nodes =~ s/\s+/ /g; # remove useless spaces - @args = split(/\s*,\s*/, $nodes); - $node = $args[0]; # the node is always the first arg - &normalise_node($node); - $sec = $node2sec{$node}; - if (@args == 5) { # reference to another manual - $sec = $args[2] || $node; - $man = $args[4] || $args[3]; - $_ = "${before}${type}section `$sec' in \@cite{$man}$after"; - } elsif ($type =~ /Info/) { # inforef - warn "$ERROR Wrong number of arguments: $_" unless @args == 3; - ($nn, $_, $in) = @args; - $_ = "${before}${type} file `$in', node `$nn'$after"; - } elsif ($sec) { - $href = $node2href{$node}; - $_ = "${before}${type}section " . &anchor('', $href, $sec) . $after; - } else { - warn "$ERROR Undefined node ($node): $_"; - $_ = "$before$;0xref{$nodes}$after"; - } - } - # - # try to guess bibliography references or glossary terms - # - unless (/^/) { - $done .= $pre . &anchor('', $href, $what); - } else { - $done .= "$pre$what"; - } - $_ = $post; - } - $_ = $done . $_; - } - if ($use_glossary) { - $done = ''; - while (/\b\w+\b/) { - ($pre, $what, $post) = ($`, $&, $'); - $entry = $what; - $entry =~ tr/A-Z/a-z/ unless $entry =~ /^[A-Z\s]+$/; - $href = $gloss2href{$entry}; - if (defined($href) && $post !~ /^[^<]*<\/A>/) { - $done .= $pre . &anchor('', $href, $what); - } else { - $done .= "$pre$what"; - } - $_ = $post; - } - $_ = $done . $_; - } - } - # otherwise - push(@lines2, $_); -} -print "# end of pass 2\n" if $verbose; - -# -# split style substitutions -# -while (@lines2) { - $_ = shift(@lines2); - # - # special case (protected sections) - # - if (/^$PROTECTTAG/o) { - push(@lines3, $_); - next; - } - # - # split style substitutions - # - $old = ''; - while ($old ne $_) { - $old = $_; - if (/\@(\w+)\{/) { - ($before, $style, $after) = ($`, $1, $'); - if (defined($style_map{$style})) { - $_ = $after; - $text = ''; - $after = ''; - $failed = 1; - while (@lines2) { - if (/\}/) { - $text .= $`; - $after = $'; - $failed = 0; - last; - } else { - $text .= $_; - $_ = shift(@lines2); - } - } - if ($failed) { - die "* Bad syntax (\@$style) after: $before\n"; - } else { - $text = &apply_style($style, $text); - $_ = "$before$text$after"; - } - } - } - } - # otherwise - push(@lines3, $_); -} -print "# end of pass 3\n" if $verbose; - -#+++############################################################################ -# # -# Pass 4: foot notes, final cleanup # -# # -#---############################################################################ - -@foot_lines = (); # footnotes -@doc_lines = (); # final document -$end_of_para = 0; # true if last line is

    - -while (@lines3) { - $_ = shift(@lines3); - # - # special case (protected sections) - # - if (/^$PROTECTTAG/o) { - push(@doc_lines, $_); - $end_of_para = 0; - next; - } - # - # footnotes - # - while (/\@footnote([^\{\s]+)\{/) { - ($before, $d, $after) = ($`, $1, $'); - $_ = $after; - $text = ''; - $after = ''; - $failed = 1; - while (@lines3) { - if (/\}/) { - $text .= $`; - $after = $'; - $failed = 0; - last; - } else { - $text .= $_; - $_ = shift(@lines3); - } - } - if ($failed) { - die "* Bad syntax (\@footnote) after: $before\n"; - } else { - $foot_num++; - $docid = "DOCF$foot_num"; - $footid = "FOOT$foot_num"; - $foot = "($foot_num)"; - push(@foot_lines, "

    " . &anchor($footid, "$d#$docid", $foot) . "

    \n"); - $text = "

    $text" unless $text =~ /^\s*

    /; - push(@foot_lines, "$text\n"); - $_ = $before . &anchor($docid, "$docu_foot#$footid", $foot) . $after; - } - } - # - # remove unnecessary

    - # - if (/^\s*

    \s*$/) { - next if $end_of_para++; - } else { - $end_of_para = 0; - } - # otherwise - push(@doc_lines, $_); -} -print "# end of pass 4\n" if $verbose; - -#+++############################################################################ -# # -# Pass 5: print things # -# # -#---############################################################################ - -$header = < -EOT - -$full_title = $value{'_title'} || $value{'_settitle'} || "Untitled Document"; -$title = $value{'_settitle'} || $full_title; -$_ = &substitute_style($full_title); -&unprotect_texi; -s/\n$//; # rmv last \n (if any) -$full_title = "

    " . join("

    \n

    ", split(/\n/, $_)) . "

    \n"; - -# -# print ToC -# -if (!$monolithic && @toc_lines) { - if (open(FILE, "> $docu_toc")) { - print "# creating $docu_toc...\n" if $verbose; - &print_toplevel_header("$title - Table of Contents"); - &print_ruler; - &print(*toc_lines, FILE); - &print_toplevel_footer; - close(FILE); - } else { - warn "$ERROR Can't write to $docu_toc: $!\n"; - } -} - -# -# print footnotes -# -if (!$monolithic && @foot_lines) { - if (open(FILE, "> $docu_foot")) { - print "# creating $docu_foot...\n" if $verbose; - &print_toplevel_header("$title - Footnotes"); - &print_ruler; - &print(*foot_lines, FILE); - &print_toplevel_footer; - close(FILE); - } else { - warn "$ERROR Can't write to $docu_foot: $!\n"; - } -} - -# -# print document -# -if ($split_chapter || $split_node) { # split - $doc_num = 0; - $last_num = scalar(@sections); - $first_doc = &doc_name(1); - $last_doc = &doc_name($last_num); - while (@sections) { - $section = shift(@sections); - &next_doc; - if (open(FILE, "> $docu_doc")) { - print "# creating $docu_doc...\n" if $verbose; - &print_header("$title - $section"); - $prev_doc = ($doc_num == 1 ? undef : &doc_name($doc_num - 1)); - $next_doc = ($doc_num == $last_num ? undef : &doc_name($doc_num + 1)); - $navigation = "Go to the "; - $navigation .= ($prev_doc ? &anchor('', $first_doc, "first") : "first"); - $navigation .= ", "; - $navigation .= ($prev_doc ? &anchor('', $prev_doc, "previous") : "previous"); - $navigation .= ", "; - $navigation .= ($next_doc ? &anchor('', $next_doc, "next") : "next"); - $navigation .= ", "; - $navigation .= ($next_doc ? &anchor('', $last_doc, "last") : "last"); - $navigation .= " section, " . &anchor('', $docu_toc, "table of contents") . ".\n"; - print FILE $navigation; - &print_ruler; - # find corresponding lines - @tmp_lines = (); - while (@doc_lines) { - $_ = shift(@doc_lines); - last if ($_ eq $SPLITTAG); - push(@tmp_lines, $_); - } - &print(*tmp_lines, FILE); - &print_ruler; - print FILE $navigation; - &print_footer; - close(FILE); - } else { - warn "$ERROR Can't write to $docu_doc: $!\n"; - } - } -} else { # not split - if (open(FILE, "> $docu_doc")) { - print "# creating $docu_doc...\n" if $verbose; - if ($monolithic || !@toc_lines) { - &print_toplevel_header($title); - } else { - &print_header($title); - print FILE $full_title; - } - if ($monolithic && @toc_lines) { - &print_ruler; - print FILE "

    Table of Contents

    \n"; - &print(*toc_lines, FILE); - } - &print_ruler; - &print(*doc_lines, FILE); - if ($monolithic && @foot_lines) { - &print_ruler; - print FILE "

    Footnotes

    \n"; - &print(*foot_lines, FILE); - } - if ($monolithic || !@toc_lines) { - &print_toplevel_footer; - } else { - &print_footer; - } - close(FILE); - } else { - warn "$ERROR Can't write to $docu_doc: $!\n"; - } -} - -print "# that's all folks\n" if $verbose; - -#+++############################################################################ -# # -# Low level functions # -# # -#---############################################################################ - -sub update_sec_num { - local($name, $level) = @_; - - $level--; # here we start at 0 - if ($name =~ /^appendix/) { - # appendix style - if (defined(@appendix_sec_num)) { - &incr_sec_num($level, @appendix_sec_num); - } else { - @appendix_sec_num = ('A', 0, 0, 0); - } - return(join('.', @appendix_sec_num[0..$level])); - } else { - # normal style - if (defined(@normal_sec_num)) { - &incr_sec_num($level, @normal_sec_num); - } else { - @normal_sec_num = (1, 0, 0, 0); - } - return(join('.', @normal_sec_num[0..$level])); - } -} - -sub incr_sec_num { - local($level, $l); - $level = shift(@_); - $_[$level]++; - foreach $l ($level+1 .. 3) { - $_[$l] = 0; - } -} - -sub check { - local($_, %seen, %context, $before, $match, $after); - - while (<>) { - if (/\@(\*|\.|\:|\@|\{|\})/) { - $seen{$&}++; - $context{$&} .= "> $_" if $verbose; - $_ = "$`XX$'"; - redo; - } - if (/\@(\w+)/) { - ($before, $match, $after) = ($`, $&, $'); - if ($before =~ /\b[\w-]+$/ && $after =~ /^[\w-.]*\b/) { # e-mail address - $seen{'e-mail address'}++; - $context{'e-mail address'} .= "> $_" if $verbose; - } else { - $seen{$match}++; - $context{$match} .= "> $_" if $verbose; - } - $match =~ s/^\@/X/; - $_ = "$before$match$after"; - redo; - } - } - - foreach (sort(keys(%seen))) { - if ($verbose) { - print "$_\n"; - print $context{$_}; - } else { - print "$_ ($seen{$_})\n"; - } - } -} - -sub open { - local($name) = @_; - - ++$fh_name; - if (open($fh_name, $name)) { - unshift(@fhs, $fh_name); - } else { - warn "$ERROR Can't read file $name: $!\n"; - } -} - -sub init_input { - @fhs = (); # hold the file handles to read - @input_spool = (); # spooled lines to read - $fh_name = 'FH000'; - &open($docu); -} - -sub next_line { - local($fh, $line); - - if (@input_spool) { - $line = shift(@input_spool); - return($line); - } - while (@fhs) { - $fh = $fhs[0]; - $line = <$fh>; - return($line) if $line; - close($fh); - shift(@fhs); - } - return(undef); -} - -# used in pass 1, use &next_line -sub skip_until { - local($tag) = @_; - local($_); - - while ($_ = &next_line) { - return if /^\@end\s+$tag\s*$/; - } - die "* Failed to find '$tag' after: " . $lines[$#lines]; -} - -# -# HTML stacking to have a better HTML output -# - -sub html_reset { - @html_stack = ('html'); - $html_element = 'body'; -} - -sub html_push { - local($what) = @_; - push(@html_stack, $html_element); - $html_element = $what; -} - -sub html_push_if { - local($what) = @_; - push(@html_stack, $html_element) - if ($html_element && $html_element ne 'P'); - $html_element = $what; -} - -sub html_pop { - $html_element = pop(@html_stack); -} - -sub html_pop_if { - local($elt); - - if (@_) { - foreach $elt (@_) { - if ($elt eq $html_element) { - $html_element = pop(@html_stack) if @html_stack; - last; - } - } - } else { - $html_element = pop(@html_stack) if @html_stack; - } -} - -sub html_debug { - local($what, $line) = @_; - return("$what") - if $debug & $DEBUG_HTML; - return($what); -} - -# to debug the output... -sub debug { - local($what, $line) = @_; - return("$what") - if $debug & $DEBUG_HTML; - return($what); -} - -sub normalise_node { - $_[0] =~ s/\s+/ /g; - $_[0] =~ s/ $//; - $_[0] =~ s/^ //; -} - -sub menu_entry { - local($entry, $node, $descr) = @_; - local($href); - - &normalise_node($node); - $href = $node2href{$node}; - if ($href) { - $descr =~ s/^\s+//; - $descr = ": $descr" if $descr; - push(@lines2, "
  • " . &anchor('', $href, $entry) . "$descr\n"); - } else { - warn "$ERROR Undefined node ($node): $_"; - } -} - -sub do_ctrl { "^$_[0]" } - -sub do_sc { "\U$_[0]\E" } - -sub apply_style { - local($texi_style, $text) = @_; - local($style); - - $style = $style_map{$texi_style}; - if (defined($style)) { # known style - if ($style =~ /^\"/) { # add quotes - $style = $'; - $text = "\`$text\'"; - } - if ($style =~ /^\&/) { # custom - $style = $'; - $text = &$style($text); - } elsif ($style) { # good style - $text = "<$style>$text"; - } else { # no style - } - } else { # unknown style - $text = undef; - } - return($text); -} - -# remove Texinfo styles -sub remove_style { - local($_) = @_; - s/\@\w+{([^\{\}]+)}/$1/g; - return($_); -} - -sub substitute_style { - local($_) = @_; - local($changed, $done, $style, $text); - - $changed = 1; - while ($changed) { - $changed = 0; - $done = ''; - while (/\@(\w+){([^\{\}]+)}/) { - $text = &apply_style($1, $2); - if ($text) { - $_ = "$`$text$'"; - $changed = 1; - } else { - $done .= "$`\@$1"; - $_ = "{$2}$'"; - } - } - $_ = $done . $_; - } - return($_); -} - -sub anchor { - local($name, $href, $text, $newline) = @_; - local($result); - - $result = "

    \n"; -} - -sub print_header { - local($_); - - # clean the title - $_ = &remove_style($_[0]); - &unprotect_texi; - # print the header - if ($doctype eq 'html2') { - print FILE $html2_doctype; - } elsif ($doctype) { - print FILE $doctype; - } - print FILE < - -$header -$_ - - -EOT -} - -sub print_toplevel_header { - local($_); - - &print_header; # pass given arg... - print FILE $full_title; - if ($value{'_subtitle'}) { - $value{'_subtitle'} =~ s/\n+$//; - foreach (split(/\n/, $value{'_subtitle'})) { - $_ = &substitute_style($_); - &unprotect_texi; - print FILE "

    $_

    \n"; - } - } - if ($value{'_author'}) { - $value{'_author'} =~ s/\n+$//; - foreach (split(/\n/, $value{'_author'})) { - $_ = &substitute_style($_); - &unprotect_texi; - s/[\w.-]+\@[\w.-]+/
    $&<\/A>/g; - print FILE "
    $_
    \n"; - } - } - print FILE "

    \n"; -} - -sub print_footer { - print FILE < - -EOT -} - -sub print_toplevel_footer { - &print_ruler; - print FILE <texi2html -translator version 1.51.

    -EOT - &print_footer; -} - -sub protect_texi { - # protect @ { } ` ' - s/\@\@/$;0/go; - s/\@\{/$;1/go; - s/\@\}/$;2/go; - s/\@\`/$;3/go; - s/\@\'/$;4/go; -} - -sub protect_html { - local($what) = @_; - # protect & < > - $what =~ s/\&/\&\#38;/g; - $what =~ s/\/\&\#62;/g; - # but recognize some HTML things - $what =~ s/\&\#60;\/A\&\#62;/<\/A>/g; # - $what =~ s/\&\#60;A ([^\&]+)\&\#62;//g; # - $what =~ s/\&\#60;IMG ([^\&]+)\&\#62;//g; # - return($what); -} - -sub unprotect_texi { - s/$;0/\@/go; - s/$;1/\{/go; - s/$;2/\}/go; - s/$;3/\`/go; - s/$;4/\'/go; -} - -sub unprotect_html { - local($what) = @_; - $what =~ s/\&\#38;/\&/g; - $what =~ s/\&\#60;/\/g; - return($what); -} - -sub byalpha { - $key2alpha{$a} cmp $key2alpha{$b}; -} - -############################################################################## - - # These next few lines are legal in both Perl and nroff. - -.00 ; # finish .ig - -'di \" finish diversion--previous line must be blank -.nr nl 0-1 \" fake up transition to first page again -.nr % 0 \" start at page 1 -'; __END__ ############# From here on it's a standard manual page ############ -.TH TEXI2HTML 1 "09/10/96" -.AT 3 -.SH NAME -texi2html \- a Texinfo to HTML converter -.SH SYNOPSIS -.B texi2html [options] file -.PP -.B texi2html -check [-verbose] files -.SH DESCRIPTION -.I Texi2html -converts the given Texinfo file to a set of HTML files. It tries to handle -most of the Texinfo commands. It creates hypertext links for cross-references, -footnotes... -.PP -It also tries to add links from a reference to its corresponding entry in the -bibliography (if any). It may also handle a glossary (see the -.B \-glossary -option). -.PP -.I Texi2html -creates several files depending on the contents of the Texinfo file and on -the chosen options (see FILES). -.PP -The HTML files created by -.I texi2html -are closer to TeX than to Info, that's why -.I texi2html -converts @iftex sections and not @ifinfo ones by default. You can reverse -this with the \-expandinfo option. -.SH OPTIONS -.TP 12 -.B \-check -Check the given file and give the list of all things that may be Texinfo commands. -This may be used to check the output of -.I texi2html -to find the Texinfo commands that have been left in the HTML file. -.TP -.B \-expandinfo -Expand @ifinfo sections, not @iftex ones. -.TP -.B \-glossary -Use the section named 'Glossary' to build a list of terms and put links in the HTML -document from each term toward its definition. -.TP -.B \-invisible \fIname\fP -Use \fIname\fP to create invisible destination anchors for index links. This is a workaround -for a known bug of many WWW browsers, including xmosaic. -.TP -.B \-I \fIdir\fP -Look also in \fIdir\fP to find included files. -.TP -.B \-menu -Show the Texinfo menus; by default they are ignored. -.TP -.B \-monolithic -Output only one file, including the table of contents and footnotes. -.TP -.B \-number -Number the sections. -.TP -.B \-split_chapter -Split the output into several HTML files (one per main section: -chapter, appendix...). -.TP -.B \-split_node -Split the output into several HTML files (one per node). -.TP -.B \-usage -Print usage instructions, listing the current available command-line options. -.TP -.B \-verbose -Give a verbose output. Can be used with the -.B \-check -option. -.PP -.SH FILES -By default -.I texi2html -creates the following files (foo being the name of the Texinfo file): -.TP 16 -.B foo_toc.html -The table of contents. -.TP -.B foo.html -The document's contents. -.TP -.B foo_foot.html -The footnotes (if any). -.PP -When used with the -.B \-split -option, it creates several files (one per chapter or node), named -.B foo_n.html -(n being the indice of the chapter or node), instead of the single -.B foo.html -file. -.PP -When used with the -.B \-monolithic -option, it creates only one file: -.B foo.html -.SH VARIABLES -.I texi2html -predefines the following variables: \fBhtml\fP, \fBtexi2html\fP. -.SH ADDITIONAL COMMANDS -.I texi2html -implements the following non-Texinfo commands: -.TP 16 -.B @ifhtml -This indicates the start of an HTML section, this section will passed through -without any modofication. -.TP -.B @end ifhtml -This indcates the end of an HTML section. -.SH VERSION -This is \fItexi2html\fP version 1.51, 09/10/96. -.PP -The latest version of \fItexi2html\fP can be found in WWW, cf. URL -http://wwwcn.cern.ch/dci/texi2html/ -.SH AUTHOR -The main author is Lionel Cons, CERN CN/DCI/UWS, Lionel.Cons@cern.ch. -Many other people around the net contributed to this program. -.SH COPYRIGHT -This program is the intellectual property of the European -Laboratory for Particle Physics (known as CERN). No guarantee whatsoever is -provided by CERN. No liability whatsoever is accepted for any loss or damage -of any kind resulting from any defect or inaccuracy in this information or -code. -.PP -CERN, 1211 Geneva 23, Switzerland -.SH "SEE ALSO" -GNU Texinfo Documentation Format, -HyperText Markup Language (HTML), -World Wide Web (WWW). -.SH BUGS -This program does not understand all Texinfo commands (yet). -.PP -TeX specific commands (normally enclosed in @iftex) will be -passed unmodified. -.ex diff --git a/glabels2/barcode-0.98/ean.c b/glabels2/barcode-0.98/ean.c deleted file mode 100644 index 0801a0ef..00000000 --- a/glabels2/barcode-0.98/ean.c +++ /dev/null @@ -1,774 +0,0 @@ -/* - * ean.c -- encoding for ean, upc and isbn - * - * Copyright (c) 1999 Alessandro Rubini - * Copyright (c) 1999 Prosa Srl. - * Copyright (c) 2001 Boszormenyi Zoltan - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - -/* - * IMPORTANT NOTE: if you are reading this file to learn how to add a - * new encoding type, this is the wrong place as there are too many - * special cases. Please refer to code39.c instead. If you want to - * learn how UPC, EAN, ISBN work, on the other hand, I did my best to - * commend things and hope you enjoy it. - */ - -/* - * These following static arrays are used to describe the barcode. - * - * The various forms of UPC and EAN are documented as using three - * different alphabets to encode the ten digits. However, each digit - * has exactly one encoding; only, it is sometimes mirrored. Moreover, - * if you represent the width of each symbol (bar/space) instead of - * the sequence of 1's and 0's, you find that even-parity and odd-parity - * encoding are exactly the same. So, here are the digits: */ -static char *digits[] = { - "3211","2221","2122","1411","1132", - "1231","1114","1312","1213","3112"}; - -/* - * What EAN encoding does is adding a leading digit (the 13th digit). - * Such an extra digit is encoded by mirroring three of the six digits that - * appear in the left half of the UPC code. Here how mirroring works: - */ -static char *ean_mirrortab[] = { - "------","--1-11","--11-1","--111-","-1--11", - "-11--1","-111--","-1-1-1","-1-11-","-11-1-" -}; - -/* - * UPC-E (the 6-digit one), instead, encodes the check character as - * a mirroring of the symbols. This is similar, but the encoding for "0" is - * different (EAN uses no mirroring for "0" to be compatible with UPC). - * The same rule is used for UPC-5 (the supplemental digits for ISBN) - */ -static char *upc_mirrortab[] = { - "---111","--1-11","--11-1","--111-","-1--11", - "-11--1","-111--","-1-1-1","-1-11-","-11-1-" -}; - -/* - * UPC-E mirroring for encoding "1" - */ -static char *upc_mirrortab1[] = { - "111---","11-1--","11--1-","11---1","1-11--", - "1--11-","1---11","1-1-1-","1-1--1","1--1-1" -}; - -/* UPC-2 has just two digits to mirror */ -static char *upc_mirrortab2[] = { - "11","1-","-1","--" -}; - -/* - * initial, middle, final guard bars (first symbol is a a space). - * EAN-13 overwrites the first "0" with "9" to make space for the extra digit. - */ -static char *guard[] = {"0a1a","1a1a1","a1a"}; - -/* initial, final guard bars for UPC-E*/ -static char *guardE[] = {"0a1a","1a1a1a"}; - -/* initial and inter-char guard bars for supplementals (first is space) */ -static char *guardS[] = {"9112","11"}; - -/* - * These functions are shortcuts I use in the encoding engine - */ -static int ean_make_checksum(char *text, int mode) -{ - int esum = 0, osum = 0, i; - int even=1; /* last char is even */ - - if (strchr(text, ' ')) - i = strchr(text, ' ') - text; /* end of first part */ - else - i = strlen(text); /* end of all */ - - while (i-- > 0) { - if (even) esum += text[i]-'0'; - else osum += text[i]-'0'; - even = !even; - } - if (!mode) { /* standard upc/ean checksum */ - i = (3*esum + osum) % 10; - return (10-i) % 10; /* complement to 10 */ - } else { /* add-5 checksum */ - i = (3*esum + 9*osum); - return i%10; - } -} - -/* - * Check that the text can be encoded. Returns 0 or -1. - * Accept: - * 13 or 12 digits: EAN-13 w/ or w/o checksum - * or - * 8 or 7 digits: EAN-8 w/ or w/o checksum. - * For both EAN-13 and EAN-8, accept an addon of 2 or 5 digits, - * separated by ' ' - */ -int Barcode_ean_verify(unsigned char *text) -{ - int i, len0, len, addon; - unsigned char tmp[24], *spc; - - len = strlen(text); - spc = strchr(text, ' '); - if (spc) { - len0 = spc - text; - addon = len - len0 - 1; - if (addon != 2 && addon != 5) - return -1; - for (i=len0+1; i= '5' && text[10] <= '9') { - memcpy(&result[1], text+1, 5); - result[6] = text[10]; - } else { - return NULL; - } - result[7] = chksum + '0'; - - return result; -} - -/* - * UPC-A is the same as EAN, but accept - * 12 or 11 digits (UPC-A w/ or w/o checksum) - * or accept UPC-E as: - * 6 digits (w/o number system and checksum): number system '0' assumed, - * 7 digits (either w/o number system or checksum), - * 8 digits (w/ number system and checksum) - * plus the 2 or 5-digit add-on - */ -int Barcode_upc_verify(unsigned char *text) -{ - int i, len0, len, addon; - unsigned char tmp[24], *spc; - - len = strlen(text); - spc = strchr(text, ' '); - if (spc) { - len0 = spc - text; - addon = len - len0 - 1; - if (addon != 2 && addon != 5) - return -1; - for (i=len0+1; iascii) { - bc->error = EINVAL; - return -1; - } - - /* Find out whether the barcode has addon and - * the length of the barcode w/o the addon. - */ - len = strlen(bc->ascii); - spc = strchr(bc->ascii, ' '); - if (spc) { - len0 = spc - bc->ascii; - addon = strlen(spc + 1); - if (addon != 2 && addon != 5) { - bc->error = EINVAL; /* impossible, actually */ - return -1; - } - } else { - len0 = len; - addon = 0; - } - - if (!bc->encoding) { - /* ISBN already wrote what it is; if unknown, find it out */ - - /* - * Do not decide only by barcode length, it may be ambiguous. - * Anyway, either the user specified the barcode type or - * we already found a fitting one. - */ - switch(bc->flags & BARCODE_ENCODING_MASK) { - case BARCODE_EAN: - switch (len0) { - case 7: case 8: - bc->encoding = strdup("EAN-8"); - encoding = EAN8; - break; - case 12: case 13: - bc->encoding = strdup("EAN-13"); - encoding = EAN13; - break; - default: - bc->error = -EINVAL; - return -1; - } - break; - - case BARCODE_UPC: - switch (len0) { - case 6: case 7: case 8: - bc->encoding = strdup("UPC-E"); - encoding = UPCE; - break; - case 11: case 12: - bc->encoding = strdup("UPC-A"); - encoding = UPCA; - break; - default: - bc->error = -EINVAL; - return -1; - } - break; - default: - /* else, it's wrong (impossible, as the text is checked) */ - bc->error = -EINVAL; - return -1; - } - } - - /* better safe than sorry */ - if (bc->partial) free(bc->partial); bc->partial = NULL; - if (bc->textinfo) free(bc->textinfo); bc->textinfo = NULL; - - if (encoding == UPCA) { /* add the leading 0 (not printed) */ - text[0] = '0'; - strcpy(text+1, bc->ascii); - } else if (encoding == UPCE) { - strcpy(text, upc_a_to_e(upc_e_to_a(bc->ascii))); - } else { - strcpy(text, bc->ascii); - } - - /* - * build the checksum and the bars: any encoding is slightly different - */ - if (encoding == UPCA || encoding == EAN13 || encoding == ISBN) { - if (!(encoding == UPCA && len0 == 12) && - !(encoding == EAN13 && len0 == 13)) { - checksum = ean_make_checksum(text, 0); - text[12] = '0' + checksum; /* add it to the text */ - text[13] = '\0'; - } - - strcpy(partial, guard[0]); - if (encoding == EAN13 || encoding == ISBN) { /* The first digit */ - sprintf(tptr,"0:12:%c ",text[0]); - tptr += strlen(tptr); - partial[0] = '9'; /* extra space for the digit */ - } else if (encoding == UPCA) - partial[0] = '9'; /* UPC has one digit before the symbol, too */ - xpos = width_of_partial(partial); - mirror = ean_mirrortab[text[0]-'0']; - - /* left part */ - for (i=1;i<7;i++) { - ptr1 = partial + strlen(partial); /* target */ - ptr2 = digits[text[i]-'0']; /* source */ - strcpy(ptr1, ptr2); - if (mirror[i-1] == '1') { - /* mirror this */ - ptr1[0] = ptr2[3]; - ptr1[1] = ptr2[2]; - ptr1[2] = ptr2[1]; - ptr1[3] = ptr2[0]; - } - /* - * Write the ascii digit. UPC has a special case - * for the first digit, which is out of the bars - */ - if (encoding == UPCA && i==1) { - sprintf(tptr, "0:10:%c ", text[i]); - tptr += strlen(tptr); - ptr1[1] += 'a'-'1'; /* bars are long */ - ptr1[3] += 'a'-'1'; - } else { - sprintf(tptr, "%i:12:%c ", xpos, text[i]); - tptr += strlen(tptr); - } - /* count the width of the symbol */ - xpos += 7; /* width_of_partial(ptr2) */ - } - - strcat(partial, guard[1]); /* middle */ - xpos += width_of_partial(guard[1]); - - /* right part */ - for (i=7;i<13;i++) { - ptr1 = partial + strlen(partial); /* target */ - ptr2 = digits[text[i]-'0']; /* source */ - strcpy(ptr1, ptr2); - /* - * Ascii digit. Once again, UPC has a special - * case for the last digit - */ - if (encoding == UPCA && i==12) { - sprintf(tptr, "%i:10:%c ", xpos+13, text[i]); - tptr += strlen(tptr); - ptr1[0] += 'a'-'1'; /* bars are long */ - ptr1[2] += 'a'-'1'; - } else { - sprintf(tptr, "%i:12:%c ", xpos, text[i]); - tptr += strlen(tptr); - } - xpos += 7; /* width_of_partial(ptr2) */ - } - tptr[-1] = '\0'; /* overwrite last space */ - strcat(partial, guard[2]); /* end */ - xpos += width_of_partial(guard[2]); - - } else if (encoding == UPCE) { - checksum = text[7] - '0'; - - strcpy(partial, guardE[0]); - partial[0] = '9'; /* UPC-A has one digit before the symbol, too */ - xpos = width_of_partial(partial); - - /* UPC-E has the number system written before the bars. */ - sprintf(tptr, "0:10:%c ", text[0]); - tptr += strlen(tptr); - - if (text[0] == '0') - mirror = upc_mirrortab[checksum]; - else - mirror = upc_mirrortab1[checksum]; - - for (i=0;i<6;i++) { - ptr1 = partial + strlen(partial); /* target */ - ptr2 = digits[text[i+1]-'0']; /* source */ - strcpy(ptr1, ptr2); - if (mirror[i] != '1') { /* negated wrt EAN13 */ - /* mirror this */ - ptr1[0] = ptr2[3]; - ptr1[1] = ptr2[2]; - ptr1[2] = ptr2[1]; - ptr1[3] = ptr2[0]; - } - sprintf(tptr, "%i:12:%c ", xpos, text[i+1]); - tptr += strlen(tptr); - xpos += 7; /* width_of_partial(ptr2) */ - } - - sprintf(tptr, "%i:10:%c ", xpos+10, text[7]); - tptr += strlen(tptr); - ptr1[0] += 'a'-'1'; /* bars are long */ - ptr1[2] += 'a'-'1'; - - tptr[-1] = '\0'; /* overwrite last space */ - strcat(partial, guardE[1]); /* end */ - - } else { /* EAN-8 almost identical to EAN-13 but no mirroring */ - - if (len0 != 8) { - checksum = ean_make_checksum(text, 0); - text[7] = '0' + checksum; /* add it to the text */ - text[8] = '\0'; - } - - strcpy(partial, guard[0]); - xpos = width_of_partial(partial); - - /* left part */ - for (i=0;i<4;i++) { - strcpy(partial + strlen(partial), digits[text[i]-'0']); - sprintf(tptr, "%i:12:%c ", xpos, text[i]); - tptr += strlen(tptr); - xpos += 7; /* width_of_partial(digits[text[i]-'0' */ - } - strcat(partial, guard[1]); /* middle */ - xpos += width_of_partial(guard[1]); - - /* right part */ - for (i=4;i<8;i++) { - strcpy(partial + strlen(partial), digits[text[i]-'0']); - sprintf(tptr, "%i:12:%c ", xpos, text[i]); - tptr += strlen(tptr); - xpos += 7; /* width_of_partial(digits[text[i]-'0' */ - } - tptr[-1] = '\0'; /* overwrite last space */ - strcat(partial, guard[2]); /* end */ - } - - /* - * And that's it. Now, in case some add-on is specified it - * must be encoded too. Look for it. - */ - if ( (ptr1 = spc) ) { - ptr1++; - strcpy(text, ptr1); - if (strlen(ptr1)==5) { - checksum = ean_make_checksum(text, 1 /* special way */); - mirror = upc_mirrortab[checksum]+1; /* only last 5 digits */ - } else { - checksum = atoi(text)%4; - mirror = upc_mirrortab2[checksum]; - } - strcat(textinfo, " +"); strcat(partial, "+"); - tptr = textinfo + strlen(textinfo); - for (i=0; ipartial = strdup(partial); - if (!bc->partial) { - bc->error = errno; - return -1; - } - bc->textinfo = strdup(textinfo); - if (!bc->textinfo) { - bc->error = errno; - free(bc->partial); - bc->partial = NULL; - return -1; - } - if (!bc->width) - bc->width = width_of_partial(partial); - - return 0; /* success */ -} - -int Barcode_upc_encode(struct Barcode_Item *bc) -{ - return Barcode_ean_encode(bc); /* UPC is folded into EAN */ -} - -int Barcode_isbn_encode(struct Barcode_Item *bc) -{ - /* For ISBN we must normalize the string and prefix "978" */ - unsigned char *text = malloc(24); /* 13 + ' ' + 5 plus some slack */ - unsigned char *otext; - int i, j, retval; - - if (!text) { - bc->error = ENOMEM; - return -1; - } - strcpy(text, "978"); j=3; - - otext = bc->ascii; - for (i=0; otext[i]; i++) { - if (isdigit(otext[i])) - text[j++] = otext[i]; - if (j == 12) /* checksum added later */ - break; - } - text[j]='\0'; - if (strchr(otext, ' ')) - strcat(text, strchr(otext, ' ')); - bc->ascii = text; - bc->encoding = strdup("ISBN"); - retval = Barcode_ean_encode(bc); - bc->ascii = otext; /* restore ascii for the ps comments */ - free(text); - return retval; -} - diff --git a/glabels2/barcode-0.98/i25.c b/glabels2/barcode-0.98/i25.c deleted file mode 100644 index 72bd0358..00000000 --- a/glabels2/barcode-0.98/i25.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * i25.c -- "interleaved 2 of 5" - * - * Copyright (c) 1999,2000 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - -static char *codes[] = { - "11331", "31113", "13113", "33111", "11313", - "31311", "13311", "11133", "31131", "13131" -}; - -static char *guard[] = {"a1a1", "c1a"}; /* begin end */ - -int Barcode_i25_verify(unsigned char *text) -{ - if (!text[0]) - return -1; - while (*text && isdigit(*text)) - text++; - if (*text) - return -1; /* a non-digit char */ - return 0; /* ok */ -} - -int Barcode_i25_encode(struct Barcode_Item *bc) -{ - unsigned char *text; - unsigned char *partial; /* dynamic */ - unsigned char *textinfo; /* dynamic */ - unsigned char *textptr, *p1, *p2, *pd; - int i, len, sum[2], textpos, usesum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("interleaved 2 of 5"); - - text = bc->ascii; - if (!bc->ascii) { - bc->error = EINVAL; - return -1; - } - - if ((bc->flags & BARCODE_NO_CHECKSUM)) usesum = 0; else usesum = 1; - - /* create the real text string, padded to an even number of digits */ - text = malloc(strlen(bc->ascii) + 3); /* leading 0, checksum, term. */ - if (!text) { - bc->error = errno; - return -1; - } - /* add the leading 0 if needed */ - i = strlen(bc->ascii) + usesum; - if (i % 2) { - /* add a leading 0 */ - text[0] = '0'; - strcpy(text+1, bc->ascii); - } else { - strcpy(text, bc->ascii); - } - /* add the trailing checksum if needed, the leading 0 is ignored */ - if (usesum) { - sum[0] = sum[1] = 0; - for (i=0; text[i]; i++) - sum[i%2] += text[i]-'0'; - /* - * The "even" sum must be multiplied by three, and the * - * rightmost digit is defined as "even". The digits' position - * is already correct, whether or not we added a leading zero. - * (e.g., they are in pos. 0..4 or 1..4 of the string) - */ - i = sum[0] * 3 + sum[1]; - strcat(text, "0"); - text[strlen(text)-1] += (10 - (i%10)) % 10; - } - - /* the partial code is 5 * (text + check) + 4(head) + 3(tail) + term. */ - partial = malloc( (strlen(text) + 3) * 5 +2); /* be large... */ - if (!partial) { - bc->error = errno; - free(text); - return -1; - } - - /* the text information is at most "nnn:fff:c " * (strlen+1) +term */ - textinfo = malloc(10*(strlen(text)+1) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - free(text); - return -1; - } - - - strcpy(partial, "0"); /* the first space */ - strcat(partial, guard[0]); /* start */ - textpos = 4; /* width of initial guard */ - textptr = textinfo; - - len = strlen(text); - for (i=0; ierror = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - free(text); - return -1; - } - /* interleave two digits */ - p1 = codes[text[i]-'0']; - p2 = codes[text[i+1]-'0']; - pd = partial + strlen(partial); /* destination */ - while (*p1) { - *(pd++) = *(p1++); - *(pd++) = *(p2++); - } - *pd = '\0'; - /* and print the ascii text (but don't print the checksum, if any */ - if (usesum && strlen(text+i)==2) { - /* print only one digit, discard the checksum */ - sprintf(textptr, "%i:12:%c ", textpos, text[i]); - } else { - sprintf(textptr, "%i:12:%c %i:12:%c ", textpos, text[i], - textpos+9, text[i+1]); - } - textpos += 18; /* width of two codes */ - textptr += strlen(textptr); - } - strcat(partial, guard[1]); - - bc->partial = partial; - bc->textinfo = textinfo; - free(text); - - return 0; -} - diff --git a/glabels2/barcode-0.98/install-sh b/glabels2/barcode-0.98/install-sh deleted file mode 100644 index ab74c882..00000000 --- a/glabels2/barcode-0.98/install-sh +++ /dev/null @@ -1,238 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5. -# -# 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. -# - - -# 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}" - -tranformbasename="" -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=: - 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 diff --git a/glabels2/barcode-0.98/library.c b/glabels2/barcode-0.98/library.c deleted file mode 100644 index a8787020..00000000 --- a/glabels2/barcode-0.98/library.c +++ /dev/null @@ -1,244 +0,0 @@ -/* - * library.c -- external functions of libbarcode - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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 -#include -#include -#include -#ifdef HAVE_UNISTD_H /* sometimes (windows, for instance) it's missing */ -# include -#endif -#include - -#include "barcode.h" - -/* - * This function allocates a barcode structure and strdup()s the - * text string. It returns NULL in case of error - */ -struct Barcode_Item *Barcode_Create(char *text) -{ - struct Barcode_Item *bc; - - bc = malloc(sizeof(*bc)); - if (!bc) return NULL; - - memset(bc, 0, sizeof(*bc)); - bc->ascii = strdup(text); - bc->margin = BARCODE_DEFAULT_MARGIN; /* default margin */ - return bc; -} - - -/* - * Free a barcode structure - */ -int Barcode_Delete(struct Barcode_Item *bc) -{ - if (bc->ascii) - free(bc->ascii); - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - if (bc->encoding) - free(bc->encoding); - free(bc); - return 0; /* always success */ -} - - -/* - * The various supported encodings. This might be extended to support - * dynamic addition of extra encodings - */ -extern int Barcode_ean_verify(unsigned char *text); -extern int Barcode_ean_encode(struct Barcode_Item *bc); -extern int Barcode_upc_verify(unsigned char *text); -extern int Barcode_upc_encode(struct Barcode_Item *bc); -extern int Barcode_isbn_verify(unsigned char *text); -extern int Barcode_isbn_encode(struct Barcode_Item *bc); -extern int Barcode_39_verify(unsigned char *text); -extern int Barcode_39_encode(struct Barcode_Item *bc); -extern int Barcode_128b_verify(unsigned char *text); -extern int Barcode_128b_encode(struct Barcode_Item *bc); -extern int Barcode_128c_verify(unsigned char *text); -extern int Barcode_128c_encode(struct Barcode_Item *bc); -extern int Barcode_128_verify(unsigned char *text); -extern int Barcode_128_encode(struct Barcode_Item *bc); -extern int Barcode_128raw_verify(unsigned char *text); -extern int Barcode_128raw_encode(struct Barcode_Item *bc); -extern int Barcode_i25_verify(unsigned char *text); -extern int Barcode_i25_encode(struct Barcode_Item *bc); -extern int Barcode_cbr_verify(unsigned char *text); -extern int Barcode_cbr_encode(struct Barcode_Item *bc); -extern int Barcode_msi_verify(unsigned char *text); -extern int Barcode_msi_encode(struct Barcode_Item *bc); -extern int Barcode_pls_verify(unsigned char *text); -extern int Barcode_pls_encode(struct Barcode_Item *bc); -extern int Barcode_93_verify(unsigned char *text); -extern int Barcode_93_encode(struct Barcode_Item *bc); - - -struct encoding { - int type; - int (*verify)(unsigned char *text); - int (*encode)(struct Barcode_Item *bc); -}; - -struct encoding encodings[] = { - {BARCODE_EAN, Barcode_ean_verify, Barcode_ean_encode}, - {BARCODE_UPC, Barcode_upc_verify, Barcode_upc_encode}, - {BARCODE_ISBN, Barcode_isbn_verify, Barcode_isbn_encode}, - {BARCODE_128B, Barcode_128b_verify, Barcode_128b_encode}, - {BARCODE_128C, Barcode_128c_verify, Barcode_128c_encode}, - {BARCODE_128RAW, Barcode_128raw_verify, Barcode_128raw_encode}, - {BARCODE_39, Barcode_39_verify, Barcode_39_encode}, - {BARCODE_I25, Barcode_i25_verify, Barcode_i25_encode}, - {BARCODE_128, Barcode_128_verify, Barcode_128_encode}, - {BARCODE_CBR, Barcode_cbr_verify, Barcode_cbr_encode}, - {BARCODE_PLS, Barcode_pls_verify, Barcode_pls_encode}, - {BARCODE_MSI, Barcode_msi_verify, Barcode_msi_encode}, - {BARCODE_93, Barcode_93_verify, Barcode_93_encode}, - {0, NULL, NULL} -}; - -/* - * A function to encode a string into bc->partial, ready for - * postprocessing to the output file. Meaningful bits for "flags" are - * the encoding mask and the no-checksum flag. These bits - * get saved in the data structure. - */ -int Barcode_Encode(struct Barcode_Item *bc, int flags) -{ - int validbits = BARCODE_ENCODING_MASK | BARCODE_NO_CHECKSUM; - struct encoding *cptr; - - /* If any flag is cleared in "flags", inherit it from "bc->flags" */ - if (!(flags & BARCODE_ENCODING_MASK)) - flags |= bc->flags & BARCODE_ENCODING_MASK; - if (!(flags & BARCODE_NO_CHECKSUM)) - flags |= bc->flags & BARCODE_NO_CHECKSUM; - flags = bc->flags = (flags & validbits) | (bc->flags & ~validbits); - - if (!(flags & BARCODE_ENCODING_MASK)) { - /* get the first code able to handle the text */ - for (cptr = encodings; cptr->verify; cptr++) - if (cptr->verify((unsigned char *)bc->ascii)==0) - break; - if (!cptr->verify) { - bc->error = EINVAL; /* no code can handle this text */ - return -1; - } - flags |= cptr->type; /* this works */ - bc->flags |= cptr->type; - } - for (cptr = encodings; cptr->verify; cptr++) - if (cptr->type == (flags & BARCODE_ENCODING_MASK)) - break; - if (!cptr->verify) { - bc->error = EINVAL; /* invalid barcode type */ - return -1; - } - if (cptr->verify(bc->ascii) != 0) { - bc->error = EINVAL; - return -1; - } - return cptr->encode(bc); -} - - -/* - * When multiple output formats are supported, there will - * be a jumpt table like the one for the types. Now we don't need it - */ -extern int Barcode_ps_print(struct Barcode_Item *bc, FILE *f); -extern int Barcode_pcl_print(struct Barcode_Item *bc, FILE *f); - -/* - * A function to print a partially decoded string. Meaningful bits for - * "flags" are the output mask etc. These bits get saved in the data - * structure. - */ -int Barcode_Print(struct Barcode_Item *bc, FILE *f, int flags) -{ - int validbits = BARCODE_OUTPUT_MASK | BARCODE_NO_ASCII - | BARCODE_OUT_NOHEADERS; - - /* If any flag is clear in "flags", inherit it from "bc->flags" */ - if (!(flags & BARCODE_OUTPUT_MASK)) - flags |= bc->flags & BARCODE_OUTPUT_MASK; - if (!(flags & BARCODE_NO_ASCII)) - flags |= bc->flags & BARCODE_NO_ASCII; - if (!(flags & BARCODE_OUT_NOHEADERS)) - flags |= bc->flags & BARCODE_OUT_NOHEADERS; - flags = bc->flags = (flags & validbits) | (bc->flags & ~validbits); - - if (bc->flags & BARCODE_OUT_PCL) - return Barcode_pcl_print(bc, f); - return Barcode_ps_print(bc, f); -} - -/* - * Choose the position - */ -int Barcode_Position(struct Barcode_Item *bc, int wid, int hei, - int xoff, int yoff, double scalef) -{ - bc->width = wid; bc->height = hei; - bc->xoff = xoff; bc->yoff = yoff; - bc->scalef = scalef; - return 0; -} - -/* - * Do it all in one step - */ -int Barcode_Encode_and_Print(char *text, FILE *f, int wid, int hei, - int xoff, int yoff, int flags) -{ - struct Barcode_Item * bc; - - if (!(bc=Barcode_Create(text))) { - errno = -ENOMEM; - return -1; - } - if ( Barcode_Position(bc, wid, hei, xoff, yoff, 0.0) < 0 - || Barcode_Encode(bc, flags) < 0 - || Barcode_Print(bc, f, flags) < 0) { - errno = bc->error; - Barcode_Delete(bc); - return -1; - } - Barcode_Delete(bc); - return 0; -} - -/* - * Return the version - */ - -int Barcode_Version(char *vptr) -{ - if (vptr) - strcpy(vptr, BARCODE_VERSION); - return BARCODE_VERSION_INT; -} diff --git a/glabels2/barcode-0.98/main.c b/glabels2/barcode-0.98/main.c deleted file mode 100644 index e07e4d3c..00000000 --- a/glabels2/barcode-0.98/main.c +++ /dev/null @@ -1,604 +0,0 @@ -/* - * main.c - a commandline frontend for the barcode library - * - * Copyright (c) 1999 Michele Comitini (mcm@glisco.it) - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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 -#include -#include -#include - -#include "cmdline.h" -#include "barcode.h" - -#ifndef NO_LIBPAPER -#include -#endif - -/* - * Most of this file deals with command line options, by exploiting - * the cmdline.[ch] engine to offer defaults via environment variables - * and handling functions for complex options. - * - * In order to offer a friendly interface (for those who feel the - * cmdline *is* friendly, like me), we have to convert names to enums... - */ - -struct { - char *name; - int type; -} encode_tab[] = { - {"ean", BARCODE_EAN}, - {"ean13", BARCODE_EAN}, - {"ean-13", BARCODE_EAN}, - {"ean8", BARCODE_EAN}, - {"ean-8", BARCODE_EAN}, - {"upc", BARCODE_UPC}, - {"upc-a", BARCODE_UPC}, - {"upc-e", BARCODE_UPC}, - {"isbn", BARCODE_ISBN}, - {"39", BARCODE_39}, - {"code39", BARCODE_39}, - {"128c", BARCODE_128C}, - {"code128c", BARCODE_128C}, - {"128b", BARCODE_128B}, - {"code128b", BARCODE_128B}, - {"128", BARCODE_128}, - {"code128", BARCODE_128}, - {"128raw", BARCODE_128RAW}, - {"i25", BARCODE_I25}, - {"interleaved 2 of 5", BARCODE_I25}, - {"cbr", BARCODE_CBR}, - {"codabar", BARCODE_CBR}, - {"msi", BARCODE_MSI}, - {"pls", BARCODE_PLS}, - {"plessey", BARCODE_PLS}, - {"code93", BARCODE_93}, - {"93", BARCODE_93}, - - {NULL, 0} -}; - -/* - * Get encoding type from string rapresentation. - * Returns -1 on error. - */ -#ifndef HAVE_STRCASECMP /* some libs (windows, for example) have stricmp */ -# define strcasecmp stricmp -#endif - -int encode_id(char *encode_name) -{ - int i; - for (i = 0; encode_tab[i].name; i++) - if (!strcasecmp(encode_tab[i].name, encode_name)) - return encode_tab[i].type; - return -1; -} - -int list_encodes(FILE *f) /* used in the help message */ -{ - int prev = -1; - int i; - - fprintf(f, "Known encodings are (synonyms appear on the same line):"); - for (i = 0; encode_tab[i].name; i++) { - if (encode_tab[i].type != prev) - fprintf(f, "\n\t"); - else - fprintf(f, ", "); - fprintf(f, "\"%s\"", encode_tab[i].name); - prev = encode_tab[i].type; - } - fprintf(f, "\n"); - return 0; -} - - -/* - * Variables to hold cmdline arguments (or defaults) - */ - -char *ifilename, *ofilename; -int encoding_type; /* filled by get_encoding() */ -int code_width, code_height; /* "-g" for standalone codes */ -int lines, columns; /* "-t" for tables */ -int xmargin0, ymargin0; /* both for "-g" and "-t" */ -int xmargin1, ymargin1; /* same, but right and top */ -int ximargin, yimargin; /* "-m": internal margins */ -int eps, pcl, ps, noascii, nochecksum; /* boolean flags */ -int page_wid, page_hei; /* page size in points */ -char *page_name; /* name of the media */ -double unit = 1.0; /* unit specification */ - -char *prgname; /* used to print error msgs, initialized to argv[0] by main */ - -/* - * Functions to handle command line arguments - */ - -struct encode_item { - char *string; - struct encode_item *next; -} *list_head, *list_tail; - -/* each "-b" option adds a string to the input pool allocating its space */ -int get_input_string(void *arg) -{ - struct encode_item *item = malloc(sizeof(*item)); - if (!item) { - fprintf(stderr, "%s: malloc: %s\n", prgname, strerror(errno)); - return -2; - } - item->string = strdup(arg); - if (!list_head) { - list_head = list_tail = item; - } else { - list_tail->next = item; - list_tail = item; - } - item->next = NULL; - return 0; -} - -/* and this function extracts strings from the pool */ -unsigned char *retrieve_input_string(FILE *ifile) -{ - char *string; - static char fileline[128]; - - struct encode_item *item = list_head; - if (list_tail) { /* this means at least one "-b" was specified */ - if (!item) - return NULL; /* the list is empty */ - string = item->string; - list_head = item->next; - free(item); - return string; - } - - /* else, read from the file */ - if (!fgets(fileline, 128, ifile)) - return NULL; - if (fileline[strlen(fileline)-1]=='\n') - fileline[strlen(fileline)-1]= '\0'; - return strdup(fileline); -} - -/* accept a unit specification */ -int get_unit(void *arg) -{ - static struct { - char *str; - double unit; - } *ptr, unittab[] = { - {"pt", 1.0}, - {"in", 72.0}, - {"cm", 72.0/2.54}, - {"mm", 72.0/25.4}, - {NULL, 0.0} - }; - - for (ptr = unittab; ptr->str && strcmp((char *)arg, ptr->str); ptr++) - ; - unit = ptr->unit; - if (ptr->str) return 0; - - fprintf(stderr, "%s: incorrect unit \"%s\" (use one of", - prgname, (char *)arg); - for (ptr = unittab; ptr->str; ptr++) - fprintf(stderr, " \"%s\"", ptr->str); - fprintf(stderr, ")\n"); - return -2; -} - -/* convert an encoding name to an encoding integer code */ -int get_encoding(void *arg) -{ - encoding_type = encode_id((char *)arg); - if (encoding_type >=0) return 0; - fprintf(stderr, "%s: wrong encoding \"%s\"\n", prgname, - (char *)arg); - return -2; /* error, no help */ -} - -/* convert a geometry specification */ -int get_geometry(void *arg) -{ - double w = 0.0, h = 0.0; - double x = 0.0, y = 0.0; - int n; - - if (((char *)arg)[0]=='+') { - n = sscanf((char *)arg, "+%lf+%lf%s", &x, &y, (char *)arg); - } else { - n = sscanf((char *)arg, "%lfx%lf+%lf+%lf%s", &w, &h, &x, &y, - (char *)arg); - } - if (n!=4 && n!=2) { - fprintf(stderr, "%s: wrong geometry \"%s\"\n", prgname, (char *)arg); - return -2; - } - /* convert to points */ - code_width = w * unit; - code_height = h * unit; - xmargin0 = x * unit; - ymargin0 = y * unit; - return 0; -} - -/* convert a geometry specification */ -int get_table(void *arg) -{ - double x0 = 0.0, y0 = 0.0, x1 = 0.0, y1 = 0.0; - int n; - - n = sscanf((char *)arg, "%dx%d+%lf+%lf-%lf-%lf", - &columns, &lines, &x0, &y0, &x1, &y1); - - if (n==1 || n==3) { /* error: 2, 4, 5, 6 are fine */ - fprintf(stderr, "%s: wrong table specification \"%s\"\n", prgname, - (char *)arg); - return -2; - } - if (n < 6) y1 = y0; /* symmetric by default */ - if (n < 5) x1 = x0; - - /* convert and return */ - xmargin0 = x0 * unit; - ymargin0 = y0 * unit; - xmargin1 = x1 * unit; - ymargin1 = y1 * unit; - return 0; -} - -/* convert an internal margin specification */ -int get_margin(void *arg) -{ - char separator; - double x,y; - int n; - - /* accept one number or two, separated by any char */ - n = sscanf((char *)arg, "%lf%c%lf", &x, &separator, &y); - - if (n==1) { - n=3; y = x; - } - if (n==3) { - ximargin = x * unit; - yimargin = y * unit; - return 0; - } - fprintf(stderr, "%s: wrong margin specification \"%s\"\n", prgname, - (char *)arg); - return -2; - return 0; -} - -/* convert a page geometry specification */ -int get_page_geometry(void *arg) -{ - int n; - double dpw, dph; /* page width, height in mm or inches */ - static char tmpstr[20]; - page_name = arg; /* if undecipherable, we won't run the program :) */ - /* - * try to decode a "mm" string (eg. "210mmx297mm" or "210x297mm") - */ - n = sscanf((char *)arg, "%lfmmx%lf", &dpw, &dph); - if (n != 2 && strlen(arg)<20) { - n = sscanf((char *)arg, "%lfx%lf%s", &dpw, &dph, tmpstr); - if (n == 3 && !strcmp(tmpstr, "mm")) { - /* Ok, convert to points: 1in is 25.4mm, 1in is also 72p */ - page_wid = (int)(dpw / 25.4 * 72.0 + 0.5); - page_hei = (int)(dph / 25.4 * 72.0 + 0.5); - return 0; - } - } - - /* - * try to decode an "in" string (eg. "8.5inx11in" or "8.5x11in") - */ - n = sscanf((char *)arg, "%lfinx%lf", &dpw, &dph); - if (n != 2 && strlen(arg)<20) { - n = sscanf((char *)arg, "%lfx%lf%s", &dpw, &dph, tmpstr); - if (n == 3 && !strcmp(tmpstr, "in")) { - page_wid = (int)(dpw * 72.0 + 0.5); /* round to points */ - page_hei = (int)(dph * 72.0 + 0.5); - return 0; - } - } - - /* - * try to decode a numeric specification - */ - n = sscanf((char *)arg, "%lfx%lf", &dpw, &dph); - if (n == 2) { - page_wid = dpw * unit; - page_hei = dph * unit; - if (unit != 1.0) { /* rebuild the page name */ - page_name = malloc(32); /* big, to avoid snprintf, missing on HP */ - if (page_name) - sprintf(page_name, "%dx%d\n", page_wid, page_hei); - } - return 0; - } - -#ifndef NO_LIBPAPER - /* - * try to use libpaper, since it is available - */ - { - const struct paper* paptr; - - paperinit(); - paptr = paperinfo(arg); - if (!paptr) { /* unknown name */ - paperdone(); - return -1; - } - page_wid = (int)(paperpswidth(paptr) + 0.5); - page_hei = (int)(paperpsheight(paptr) + 0.5); - paperdone(); - return 0; - } -#endif - /* If we got here, the argument is undecipherable: fail */ - fprintf(stderr, "%s: wrong page size specification \"%s\"\n", prgname, - (char *)arg); - return -2; -} - -/* - * The table of possible arguments - */ -struct commandline option_table[] = { - {'i', CMDLINE_S, &ifilename, NULL, NULL, NULL, - "input file (strings to encode), default is stdin"}, - {'o', CMDLINE_S, &ofilename, NULL, NULL, NULL, - "output file, default is stdout"}, - {'b', CMDLINE_S, NULL, get_input_string, NULL, NULL, - "string to encode (use input file if missing)"}, - {'e', CMDLINE_S, NULL, get_encoding, "BARCODE_ENCODING", NULL, - "encoding type (default is best fit for first string)"}, - {'u', CMDLINE_S, NULL, get_unit, "BARCODE_UNIT", NULL, - "unit (\"mm\", \"in\", ...) used to decode -g, -t, -p"}, - {'g', CMDLINE_S, NULL, get_geometry, "BARCODE_GEOMETRY", NULL, - "geometry on the page: [x][++]"}, - {'t', CMDLINE_S, NULL, get_table, "BARCODE_TABLE", NULL, - "table geometry: x[++]"}, - {'m', CMDLINE_S, NULL, get_margin, "BARCODE_MARGIN", "10", - "internal margin for each item in a table: [,]"}, - {'n', CMDLINE_NONE, &noascii, NULL, NULL, NULL, - "\"numeric\": avoid printing text along with the bars"}, - {'c', CMDLINE_NONE, &nochecksum, NULL, NULL, NULL, - "no Checksum character, if the chosen encoding allows it"}, - {'E', CMDLINE_NONE, &eps, NULL, NULL, NULL, - "print one code as eps file (default: multi-page ps)"}, - {'P', CMDLINE_NONE, &pcl, NULL, NULL, NULL, - "create PCL output instead of postscript"}, - {'p', CMDLINE_S, NULL, get_page_geometry, NULL, NULL, - "page size (refer to the man page)"}, - {0,} -}; - -#ifdef NO_STRERROR -/* - * A strerror replacement (thanks to Thad Floryan ) - */ -char *strerror(int error) -{ - static char msg[16]; - if (error >= 0 && error < sys_nerr) - return sys_errlist[error]; - sprintf(msg, "Error %d", error); - return msg; -} -#endif - -/* - * The main function - */ -int main(int argc, char **argv) -{ - struct Barcode_Item * bc; - FILE *ifile = stdin; - FILE *ofile = stdout; - char *line; - int flags=0; /* for the library */ - int page, retval; - - prgname = argv[0]; - - /* First of all, accept "--help" and "-h" as a special case */ - if (argc == 2 && (!strcmp(argv[1],"--help") || !strcmp(argv[1],"-h"))) { - commandline_errormsg(stderr, option_table, argv[0], "Options:\n"); - fprintf(stderr,"\n"); - list_encodes(stderr); - exit(1); - } - /* Also, accept "--version" as a special case */ - if (argc == 2 && (!strcmp(argv[1],"--version"))) { - printf("barcode frontend (GNU barcode) " BARCODE_VERSION "\n"); - exit(0); - } - - /* Otherwise, parse the commandline */ - retval = commandline(option_table, argc, argv, "Use: %s [options]\n"); - if (retval) { - if (retval == -1) /* help printed, complete it */ - list_encodes(stderr); - else /* no help printed, suggest it */ - fprintf(stderr, "%s: try \"%s --help\"\n", prgname, prgname); - exit(1); - } - - /* If no paper size has been specified, use the default, if any */ - if (!page_name) { - page_wid = 595; page_hei = 842; - page_name = "A4"; /* I live in Europe :) */ -#ifndef NO_LIBPAPER - get_page_geometry(systempapername()); /* or the system default */ -#endif - } - - /* FIXME: print warnings for incompatible options */ - - /* open the input stream if specified */ - if (ifilename) - ifile = fopen(ifilename,"r"); - if (!ifile) { - fprintf(stderr, "%s: %s: %s\n", argv[0], ifilename, - strerror(errno)); - exit(1); - } - - /* open the output stream if specified */ - if (ofilename) - ofile = fopen(ofilename,"w"); - if (!ofile) { - fprintf(stderr, "%s: %s: %s\n", argv[0], ofilename, - strerror(errno)); - exit(1); - } - - if (encoding_type < 0) { /* unknown type specified */ - fprintf(stderr,"%s: Unknown endoding. Try \"%s --help\"\n", - argv[0], argv[0]); - exit(1); - } - flags |= encoding_type; - if (pcl) { - flags |= BARCODE_OUT_PCL; - } else { - ps = !eps; /* a shortcut */ - if (eps) - flags |= BARCODE_OUT_EPS; /* print headers too */ - else - flags |= BARCODE_OUT_PS | BARCODE_OUT_NOHEADERS; - } - if (noascii) - flags |= BARCODE_NO_ASCII; - if (nochecksum) - flags |= BARCODE_NO_CHECKSUM; - - /* the table is not available in eps mode */ - if (eps && (lines>1 || columns>1)) { - fprintf(stderr, "%s: can't print tables in EPS format\n",argv[0]); - exit(1); - } - - if (ps) { /* The header is independent of single/table mode */ - /* Headers. Don't let the library do it, we may need multi-page */ - fprintf(ofile, "%%!PS-Adobe-2.0\n"); - /* It would be nice to know the bounding box. Leave it alone */ - fprintf(ofile, "%%%%Creator: \"barcode\", " - "libbarcode sample frontend\n"); - if (page_name) - fprintf(ofile, "%%%%DocumentPaperSizes: %s\n", page_name); - fprintf(ofile, "%%%%EndComments\n"); - fprintf(ofile, "%%%%EndProlog\n\n"); - } - - /* - * Here we are, ready to work. Handle the one-per-page case first, - * as it is shorter. - */ - if (!lines && !columns) { - page = 0; - while ( (line = retrieve_input_string(ifile)) ) { - page++; - if (ps) { - fprintf(ofile, "%%%%Page: %i %i\n\n",page,page); - } - if (Barcode_Encode_and_Print(line, ofile, code_width, code_height, - xmargin0, ymargin0, flags) < 0) { - fprintf(stderr, "%s: can't encode \"%s\"\n", argv[0], line); - } - if (eps) break; /* if output is eps, do it once only */ - if (ps) fprintf(ofile, "showpage\n"); - if (pcl) fprintf(ofile, "\f"); - } - /* no more lines, print footers */ - if (ps) { - fprintf(ofile, "%%%%Trailer\n\n"); - } - } else { - - /* table mode, the header has been already printed */ - - int xstep = (page_wid - xmargin0 - xmargin1)/columns; - int ystep = (page_hei - ymargin0 - ymargin1)/lines; - int x = columns, y = -1; /* position in the table, start off-page */ - - if (!ximargin) ximargin = BARCODE_DEFAULT_MARGIN; - if (!yimargin) yimargin = BARCODE_DEFAULT_MARGIN; - /* Assign default size unless -g did it (Joachim Reichelt) */ - if ( !code_width && !code_height) { - code_width = xstep - 2*ximargin; - code_height = ystep - 2*yimargin; - } - - page=0; - while ( (line = retrieve_input_string(ifile)) ) { - x++; /* fit x and y */ - if (x >= columns) { - x=0; y--; - if (y<0) { - y = lines-1; page++; - /* flush page */ - if (ps && page > 1) fprintf(ofile, "showpage\n"); - if (pcl && page > 1) fprintf(ofile, "\f"); - /* new page */ - if (ps) fprintf(ofile, "%%%%Page: %i %i\n\n",page,page); - } - } - - /* - * Create a barcode item. This allows to set the margin to 0, as - * we have [xy]imargin to use. But don't use Encode_and_Print(), - * unroll it here instead - */ - bc = Barcode_Create(line); - if (!bc) { - fprintf(stderr, "%s: Barcode_Create(): %s\n", argv[0], - strerror(errno)); - exit(1); - } - bc->margin = 0; - if ( (Barcode_Position(bc, code_width, code_height, - xmargin0 + ximargin + x * xstep, - ymargin0 + yimargin + y * ystep, 0.0) < 0) - || (Barcode_Encode(bc, flags) < 0) - || (Barcode_Print(bc, ofile, flags) < 0) ) { - fprintf(stderr, "%s: can't encode \"%s\": %s\n", argv[0], - line, strerror(bc->error)); - } - Barcode_Delete(bc); - } - if (ps) fprintf(ofile, "showpage\n\n%%%%Trailer\n\n"); - if (pcl) fprintf(ofile, "\f"); - } - return 0; -} - - - diff --git a/glabels2/barcode-0.98/mkinstalldirs b/glabels2/barcode-0.98/mkinstalldirs deleted file mode 100755 index 6b3b5fc5..00000000 --- a/glabels2/barcode-0.98/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id$ - -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 diff --git a/glabels2/barcode-0.98/msi.c b/glabels2/barcode-0.98/msi.c deleted file mode 100644 index 77a373b2..00000000 --- a/glabels2/barcode-0.98/msi.c +++ /dev/null @@ -1,155 +0,0 @@ -/* - * msi.c -- encoding for MSI-Plessey - * - * Copyright (c) 2000 Leonid A. Broukhis (leob@mailcom.com) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - - -/* Patterns */ -static char *patterns[] = { "13", "31" }; - -static char *fillers[] = { "031", "131" }; - -static int width = 16 /* each character uses 4 patterns */, - startpos = 6 /* length of the first filler */; - -/* - * Check that the text can be encoded. Returns 0 or -1. - */ -int Barcode_msi_verify(unsigned char *text) -{ - int i; - - if (!strlen(text)) - return -1; - for (i=0; text[i]; i++) { - if (!isdigit(text[i])) - return -1; - } - return 0; -} - -static int add_one(char *ptr, int code) -{ - sprintf(ptr, "%s%s%s%s", - patterns[(code >> 3) & 1], - patterns[(code >> 2) & 1], - patterns[(code >> 1) & 1], - patterns[code & 1]); - return 0; -} - -/* - * The encoding functions fills the "partial" and "textinfo" fields. - * Lowercase chars are converted to uppercase - */ -int Barcode_msi_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *ptr, *textptr; - int i, code, textpos, usesum, checksum = 0; - - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("msi"); - - if ((bc->flags & BARCODE_NO_CHECKSUM)) - usesum = 0; - else - usesum = 1; - - text = bc->ascii; - - /* the partial code is head + 8 * (text + check) + tail + margin + term. */ - partial = malloc( 3 + 8 * (strlen(text) + 1) + 3 + 2 ); - if (!partial) { - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn:fff:c " * strlen +term */ - textinfo = malloc(10*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - strcpy(partial, fillers[0]); - ptr = partial + strlen(partial); - textptr = textinfo; - textpos = startpos; - - for (i=0; ipartial = partial; - bc->textinfo = textinfo; - - return 0; -} diff --git a/glabels2/barcode-0.98/pcl.c b/glabels2/barcode-0.98/pcl.c deleted file mode 100644 index d5ec097a..00000000 --- a/glabels2/barcode-0.98/pcl.c +++ /dev/null @@ -1,200 +0,0 @@ -/* - * pcl.c -- printing the "partial" bar encoding in PCL format - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * Copyright (c) 2001 Andrea Scopece (a.scopece@tin.it) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - -#define SHRINK_AMOUNT 0.15 /* shrink the bars to account for ink spreading */ - - -/* - * How do the "partial" and "textinfo" strings work? See file "ps.c" - */ - - -int Barcode_pcl_print(struct Barcode_Item *bc, FILE *f) -{ - int i, j, k, barlen; - double f1, f2, fsav=0; - int mode = '-'; /* text below bars */ - double scalef=1, xpos, x0, y0, yr; - unsigned char *ptr; - unsigned char c; - - char font_id[6]; /* default font, should be "scalable" */ - /* 0 Line printer, use on older LJet II, isn't scalable */ - /* 4148 Univers, use on LJet III series, and Lj 4L, 5L */ - /* 16602 Arial, default LJ family 4, 5, 6, Color, Djet */ - - if (!bc->partial || !bc->textinfo) { - bc->error = EINVAL; - return -1; - } - - /* - * Maybe this first part can be made common to several printing back-ends, - * we'll see how that works when other ouput engines are added - */ - - /* First, calculate barlen */ - barlen = bc->partial[0] - '0'; - for (ptr = bc->partial+1; *ptr; ptr++) - if (isdigit(*ptr)) - barlen += (*ptr - '0'); - else if (islower(*ptr)) - barlen += (*ptr - 'a'+1); - - /* The scale factor depends on bar length */ - if (!bc->scalef) { - if (!bc->width) bc->width = barlen; /* default */ - scalef = bc->scalef = (double)bc->width / (double)barlen; - } - - /* The width defaults to "just enough" */ - if (!bc->width) bc->width = barlen * scalef +1; - - /* But it can be too small, in this case enlarge and center the area */ - if (bc->width < barlen * scalef) { - int wid = barlen * scalef + 1; - bc->xoff -= (wid - bc->width)/2 ; - bc->width = wid; - /* Can't extend too far on the left */ - if (bc->xoff < 0) { - bc->width += -bc->xoff; - bc->xoff = 0; - } - } - - /* The height defaults to 80 points (rescaled) */ - if (!bc->height) bc->height = 80 * scalef; - -#if 0 - /* If too small (5 + text), enlarge and center */ - i = 5 + 10 * ((bc->flags & BARCODE_NO_ASCII)==0); - if (bc->height < i * scalef ) { - int hei = i * scalef; - bc->yoff -= (hei-bc->height)/2; - bc->height = hei; - if (bc->yoff < 0) { - bc->height += -bc->yoff; - bc->yoff = 0; - } - } -#else - /* If too small (5 + text), reduce the scale factor and center */ - i = 5 + 10 * ((bc->flags & BARCODE_NO_ASCII)==0); - if (bc->height < i * scalef ) { - double scaleg = ((double)bc->height) / i; - int wid = bc->width * scaleg / scalef; - bc->xoff += (bc->width - wid)/2; - bc->width = wid; - scalef = scaleg; - } -#endif - - /* - * deal with PCL output - */ - - xpos = bc->margin + (bc->partial[0]-'0') * scalef; - for (ptr = bc->partial+1, i=1; *ptr; ptr++, i++) { - /* special cases: '+' and '-' */ - if (*ptr == '+' || *ptr == '-') { - mode = *ptr; /* don't count it */ i++; continue; - } - - /* j is the width of this bar/space */ - if (isdigit (*ptr)) j = *ptr-'0'; - else j = *ptr-'a'+1; - if (i%2) { /* bar */ - x0 = bc->xoff + xpos; - y0 = bc->yoff + bc->margin; - yr = bc->height; - if (!(bc->flags & BARCODE_NO_ASCII)) { /* leave space for text */ - if (mode == '-') { - /* text below bars: 10 points or five points */ - yr -= (isdigit(*ptr) ? 10 : 5) * scalef; - } else { /* '+' */ - /* text above bars: 10 or 0 from bottom, and 10 from top */ - y0 += (isdigit(*ptr) ? 10 : 0) * scalef; - yr -= (isdigit(*ptr) ? 20 : 10) * scalef; - } - } - - fprintf(f,"%c&a%.0fH", 27, x0 * 10.0); - fprintf(f,"%c&a%.0fV", 27, y0 * 10.0); - fprintf(f,"%c*c%.0fH", 27, ((j*scalef)-SHRINK_AMOUNT) * 10.0); - fprintf(f,"%c*c%.0fV", 27, yr * 10.0); - fprintf(f,"%c*c0P\n", 27); - } - xpos += j * scalef; - } - - /* the text */ - - mode = '-'; /* reinstantiate default */ - if (!(bc->flags & BARCODE_NO_ASCII)) { - k=0; /* k is the "previous font size" */ - for (ptr = bc->textinfo; ptr; ptr = strchr(ptr, ' ')) { - while (*ptr == ' ') ptr++; - if (!*ptr) break; - if (*ptr == '+' || *ptr == '-') { - mode = *ptr; continue; - } - if (sscanf(ptr, "%lf:%lf:%c", &f1, &f2, &c) != 3) { - fprintf(stderr, "barcode: impossible data: %s\n", ptr); - continue; - } - - /* select a Scalable Font */ - - if (fsav != f2) - { - if ((bc->flags & BARCODE_OUT_PCL_III) == BARCODE_OUT_PCL_III) - { strcpy(font_id, "4148"); /* font Univers */ - } - else - { strcpy(font_id, "16602"); /* font Arial */ - } - - fprintf(f,"%c(8U%c(s1p%5.2fv0s0b%sT", 27, 27, f2 * scalef, font_id); - } - fsav = f2; - - fprintf(f,"%c&a%.0fH", 27, (bc->xoff + f1 * scalef + bc->margin) * 10.0); - fprintf(f,"%c&a%.0fV", 27, - mode != '-' - ? ((double)bc->yoff + bc->margin + 8*scalef) * 10.0 - : ((double)bc->yoff + bc->margin + bc->height ) * 10.0); - - fprintf(f, "%c", c); - } - - } - - return 0; -} diff --git a/glabels2/barcode-0.98/plessey.c b/glabels2/barcode-0.98/plessey.c deleted file mode 100644 index ec471005..00000000 --- a/glabels2/barcode-0.98/plessey.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * plessey.c -- encoding for Plessey - * - * Copyright (c) 2000 Leonid A. Broukhis (leob@mailcom.com) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - -static char * patterns[] = { "13", "31" }; - -/* this is ordered in decades to simplify encoding */ -static char alphabet[] = - "0123456789" "ABCDEF"; - -/* stop sequence may be 231311313 (barcodemill.com) */ -static char *fillers[] = { "031311331", "331311313" }; - -static int width = 16, startpos = 16; - -/* - * Check that the text can be encoded. Returns 0 or -1. - * If it's all lowecase convert to uppercase and accept it - */ -int Barcode_pls_verify(unsigned char *text) -{ - int i, upper = 0, lower = 0; - - if (!strlen(text)) - return -1; - for (i=0; text[i]; i++) { - if (!strchr(alphabet,toupper(text[i]))) - return -1; - if (isupper(text[i])) upper++; - if (islower(text[i])) lower++; - } - if (upper && lower) - return -1; - return 0; -} - -static int add_one(char *ptr, int code) -{ - sprintf(ptr, "%s%s%s%s", - patterns[code & 1], - patterns[(code >> 1) & 1], - patterns[(code >> 2) & 1], - patterns[(code >> 3) & 1] - ); - return 0; -} - -/* - * The encoding functions fills the "partial" and "textinfo" fields. - * Lowercase chars are converted to uppercase - */ -int Barcode_pls_encode(struct Barcode_Item *bc) -{ - static char *text; - static char *partial; /* dynamic */ - static char *textinfo; /* dynamic */ - char *c, *ptr, *textptr; - unsigned char *checkptr; - int i, code, textpos; - static char check[9] = {1,1,1,1,0,1,0,0,1}; - if (bc->partial) - free(bc->partial); - if (bc->textinfo) - free(bc->textinfo); - bc->partial = bc->textinfo = NULL; /* safe */ - - if (!bc->encoding) - bc->encoding = strdup("plessey"); - - text = bc->ascii; - if (!text) { - bc->error = EINVAL; - return -1; - } - /* the partial code is 8 * (head + text + check + tail) + margin + term. */ - partial = malloc( (strlen(text) + 4) * 8 + 3); - checkptr = calloc (1, strlen(text) * 4 + 8); - - if (!partial || !checkptr) { - if (partial) free(partial); - if (checkptr) free(checkptr); - bc->error = errno; - return -1; - } - - /* the text information is at most "nnn:fff:c " * strlen +term */ - textinfo = malloc(10*strlen(text) + 2); - if (!textinfo) { - bc->error = errno; - free(partial); - return -1; - } - - strcpy(partial, fillers[0]); - ptr = partial + strlen(partial); - textptr = textinfo; - textpos = startpos; - - for (i=0; ierror = EINVAL; /* impossible if text is verified */ - free(partial); - free(textinfo); - return -1; - } - code = c - alphabet; - add_one(ptr, code); - sprintf(textptr, "%i:12:%c ", textpos, toupper(text[i])); - - textpos += width; /* width of each code */ - textptr += strlen(textptr); - ptr += strlen(ptr); - checkptr[4*i] = code & 1; - checkptr[4*i+1] = (code >> 1) & 1; - checkptr[4*i+2] = (code >> 2) & 1; - checkptr[4*i+3] = (code >> 3) & 1; - } - /* The CRC checksum is required */ - for (i=0; i < 4*strlen(text); i++) { - int j; - if (checkptr[i]) - for (j = 0; j < 9; j++) - checkptr[i+j] ^= check[j]; - } - for (i = 0; i < 8; i++) { - sprintf(ptr, patterns[checkptr[strlen(text) * 4 + i]]); - ptr += 2; - } - fprintf(stderr, "CRC: "); - for (i = 0; i < 8; i++) { - fputc('0' + checkptr[strlen(text) * 4 + i], stderr); - } - fputc('\n', stderr); - strcpy(ptr, fillers[1]); - bc->partial = partial; - bc->textinfo = textinfo; - - return 0; -} diff --git a/glabels2/barcode-0.98/ps.c b/glabels2/barcode-0.98/ps.c deleted file mode 100644 index 35917517..00000000 --- a/glabels2/barcode-0.98/ps.c +++ /dev/null @@ -1,272 +0,0 @@ -/* - * ps.c -- printing the "partial" bar encoding - * - * Copyright (c) 1999 Alessandro Rubini (rubini@gnu.org) - * Copyright (c) 1999 Prosa Srl. (prosa@prosa.it) - * - * 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 -#include -#include -#include -#include - -#include "barcode.h" - -#define SHRINK_AMOUNT 0.15 /* shrink the bars to account for ink spreading */ - - -/* - * How do the "partial" and "textinfo" strings work? - * - * The first char in "partial" tells how much extra space to add to the - * left of the bars. For EAN-13, it is used to leave space to print the - * first digit, other codes may have '0' for no-extra-space-needed. - * - * The next characters are alternating bars and spaces, as multiples - * of the base dimension which is 1 unless the code is - * rescaled. Rescaling is calculated as the ratio from the requested - * width and the calculated width. Digits represent bar/space - * dimensions. Lower-case letters represent those bars that should - * extend lower than the others: 'a' is equivalent to '1', 'b' is '2' and - * so on. - * - * The "textinfo" string is made up of fields "%lf:%lf:%c" separated by - * blank space. The first integer is the x position of the character, - * the second is the font size (before rescaling) and the char item is - * the charcter to be printed. - * - * Both the "partial" and "textinfo" strings may include "-" or "+" as - * special characters (in "textinfo" the char should be a standalone - * word). They state where the text should be printed: below the bars - * ("-", default) or above the bars. This is used, for example, to - * print the add-5 and add-2 codes to the right of UPC or EAN codes - * (the add-5 extension is mostly used in ISBN codes. - */ - - -int Barcode_ps_print(struct Barcode_Item *bc, FILE *f) -{ - int i, j, k, barlen, printable=1; - double f1, f2, fsav=0; - int mode = '-'; /* text below bars */ - double scalef=1, xpos, x0, y0, yr; - unsigned char *ptr; - unsigned char c; - - if (!bc->partial || !bc->textinfo) { - bc->error = EINVAL; - return -1; - } - - - /* - * Maybe this first part can be made common to several printing back-ends, - * we'll see how that works when other ouput engines are added - */ - - /* First, calculate barlen */ - barlen = bc->partial[0] - '0'; - for (ptr = bc->partial+1; *ptr; ptr++) - if (isdigit(*ptr)) - barlen += (*ptr - '0'); - else if (islower(*ptr)) - barlen += (*ptr - 'a'+1); - - /* The scale factor depends on bar length */ - if (!bc->scalef) { - if (!bc->width) bc->width = barlen; /* default */ - scalef = bc->scalef = (double)bc->width / (double)barlen; - } - - /* The width defaults to "just enough" */ - if (!bc->width) bc->width = barlen * scalef +1; - - /* But it can be too small, in this case enlarge and center the area */ - if (bc->width < barlen * scalef) { - int wid = barlen * scalef + 1; - bc->xoff -= (wid - bc->width)/2 ; - bc->width = wid; - /* Can't extend too far on the left */ - if (bc->xoff < 0) { - bc->width += -bc->xoff; - bc->xoff = 0; - } - } - - /* The height defaults to 80 points (rescaled) */ - if (!bc->height) bc->height = 80 * scalef; - -#if 0 - /* If too small (5 + text), enlarge and center */ - i = 5 + 10 * ((bc->flags & BARCODE_NO_ASCII)==0); - if (bc->height < i * scalef ) { - int hei = i * scalef; - bc->yoff -= (hei-bc->height)/2; - bc->height = hei; - if (bc->yoff < 0) { - bc->height += -bc->yoff; - bc->yoff = 0; - } - } -#else - /* If too small (5 + text), reduce the scale factor and center */ - i = 5 + 10 * ((bc->flags & BARCODE_NO_ASCII)==0); - if (bc->height < i * scalef ) { - double scaleg = ((double)bc->height) / i; - int wid = bc->width * scaleg / scalef; - bc->xoff += (bc->width - wid)/2; - bc->width = wid; - scalef = scaleg; - } -#endif - - /* - * Ok, then deal with actual ps (eps) output - */ - - if (!(bc->flags & BARCODE_OUT_NOHEADERS)) { /* spit a header first */ - if (bc->flags & BARCODE_OUT_EPS) - fprintf(f, "%%!PS-Adobe-2.0 EPSF-1.2\n"); - else - fprintf(f, "%%!PS-Adobe-2.0\n"); - fprintf(f, "%%%%Creator: libbarcode\n"); - if (bc->flags & BARCODE_OUT_EPS) { - fprintf(f, "%%%%BoundingBox: %i %i %i %i\n", - bc->xoff, - bc->yoff, - bc->xoff + bc->width + 2* bc->margin, - bc->yoff + bc->height + 2* bc->margin); - } - fprintf(f, "%%%%EndComments\n"); - if (bc->flags & BARCODE_OUT_PS) { - fprintf(f, "%%%%EndProlog\n\n"); - fprintf(f, "%%%%Page: 1 1\n\n"); - } - } - - /* Print some informative comments */ - for (i=0; bc->ascii[i]; i++) - if (bc->ascii[i] < ' ') - printable = 0; - - fprintf(f,"%% Printing barcode for \"%s\", scaled %5.2f", - printable ? bc->ascii : "", scalef); - if (bc->encoding) - fprintf(f,", encoded using \"%s\"",bc->encoding); - fprintf(f, "\n"); - fprintf(f,"%% The space/bar succession is represented " - "by the following widths (space first):\n" - "%% "); - for (i=0; ipartial); i++) { - unsigned char c = bc->partial[i]; - if (isdigit(c)) putc(c, f); - if (islower(c)) putc(c-'a'+'1', f); - if (isupper(c)) putc(c-'A'+'1', f); - } - /* open array for "forall" */ - fprintf(f, "\n[\n%% height xpos ypos width" - " height xpos ypos width\n"); - - xpos = bc->margin + (bc->partial[0]-'0') * scalef; - for (ptr = bc->partial+1, i=1; *ptr; ptr++, i++) { - /* special cases: '+' and '-' */ - if (*ptr == '+' || *ptr == '-') { - mode = *ptr; /* don't count it */ i++; continue; - } - /* j is the width of this bar/space */ - if (isdigit (*ptr)) j = *ptr-'0'; - else j = *ptr-'a'+1; - if (i%2) { /* bar */ - x0 = bc->xoff + xpos + (j*scalef)/2; - y0 = bc->yoff + bc->margin; - yr = bc->height; - if (!(bc->flags & BARCODE_NO_ASCII)) { /* leave space for text */ - if (mode == '-') { - /* text below bars: 10 points or five points */ - y0 += (isdigit(*ptr) ? 10 : 5) * scalef; - yr -= (isdigit(*ptr) ? 10 : 5) * scalef; - } else { /* '+' */ - /* text above bars: 10 or 0 from bottom, and 10 from top */ - y0 += (isdigit(*ptr) ? 10 : 0) * scalef; - yr -= (isdigit(*ptr) ? 20 : 10) * scalef; - } - } - /* Define an array and then use "forall" (Hans Schou) */ - fprintf(f," [%5.2f %6.2f %6.2f %5.2f]%s", - yr, x0, y0, (j * scalef) - SHRINK_AMOUNT, - i%4 == 1 ? " " : "\n"); - } - xpos += j * scalef; - } - fprintf(f,"\n]\t{ {} forall setlinewidth moveto 0 exch rlineto stroke} " - "bind forall\n"); - - /* Then, the text */ - - mode = '-'; /* reinstantiate default */ - if (!(bc->flags & BARCODE_NO_ASCII)) { - fprintf(f, "[\n%% char xpos ypos fontsize\n"); - k=0; /* k is the "previous font size" */ - for (ptr = bc->textinfo; ptr; ptr = strchr(ptr, ' ')) { - while (*ptr == ' ') ptr++; - if (!*ptr) break; - if (*ptr == '+' || *ptr == '-') { - mode = *ptr; continue; - } - if (sscanf(ptr, "%lf:%lf:%c", &f1, &f2, &c) != 3) { - fprintf(stderr, "barcode: impossible data: %s\n", ptr); - continue; - } - - fprintf(f, " [("); - /* Both the backslash and the two parens are special */ - if (c=='\\' || c==')' || c=='(') - fprintf(f, "\\%c) ", c); - else - fprintf(f, "%c) ", c); - fprintf(f, "%6.2f %6.2f %5.2f]\n", - bc->xoff + f1 * scalef + bc->margin, - mode == '-' - ? (double)bc->yoff + bc->margin - : (double)bc->yoff + bc->margin+bc->height - 8*scalef, - fsav == f2 ? 0.0 : f2 * scalef); - fsav = f2; - } - fprintf(f,"] { {} forall dup 0.00 ne {\n\t" - "/Helvetica findfont exch scalefont setfont\n" - " } {pop} ifelse\n" - " moveto show} bind forall\n"); - - - } - - fprintf(f,"%% End barcode for \"%s\"\n\n", - printable ? bc->ascii : ""); - - if (!(bc->flags & BARCODE_OUT_NOHEADERS)) { - if (bc->flags & BARCODE_OUT_PS) { - fprintf(f,"showpage\n"); - fprintf(f, "%%%%Trailer\n\n"); - } - } - return 0; -} - - - - diff --git a/glabels2/barcode-0.98/sample.c b/glabels2/barcode-0.98/sample.c deleted file mode 100644 index 46e62058..00000000 --- a/glabels2/barcode-0.98/sample.c +++ /dev/null @@ -1,98 +0,0 @@ -#include -#include - -#include "barcode.h" - -int main(int argc, char **argv) -{ - int ps = 1, pcl = 0, oflags; - if (argc == 2 && !strcmp(argv[1],"-P")) { - ps = 0; pcl = 1; argc=1; - } - if (argc>2) { - fprintf(stderr, "%s: use \"%s\" for postscript or \"%s -P\" for PCL\n", - argv[0], argv[0], argv[0]); - exit(1); - } - if (pcl) { - oflags = BARCODE_OUT_PCL; - } else { - oflags = BARCODE_OUT_PS | BARCODE_OUT_NOHEADERS; - printf("%%!PS-Adobe-2.0\n"); - printf("%%%%Creator: barcode sample program\n"); - printf("%%%%EndComments\n"); - printf("%%%%EndProlog\n\n"); - printf("%%%%Page: 1 1\n\n"); - } - /* Print a few barcodes in several places in the page */ - - /* default size, bottom left */ - Barcode_Encode_and_Print("800894002700",stdout, 0, 0, 40, 40, - BARCODE_EAN | oflags); - - /* smaller */ - Barcode_Encode_and_Print("800894002700",stdout, 70, 50, 160, 55, - BARCODE_EAN | oflags); - - /* smallest */ - Barcode_Encode_and_Print("800894002700",stdout, 40, 30, 270, 70, - BARCODE_EAN | oflags); - - /* A bigger all-0 */ - Barcode_Encode_and_Print("000000000000",stdout, 170, 0, 40, 160, - BARCODE_EAN | oflags); - - /* Still bigger all-0 (but UPC, this time) */ - Barcode_Encode_and_Print("00000000000",stdout, 250, 0, 270, 160, - BARCODE_UPC | oflags); - - /* A few code-39 ones */ - Barcode_Encode_and_Print("silly code",stdout, 0, 0, 40, 320, - BARCODE_39 | oflags); - Barcode_Encode_and_Print("SAMPLE CODES",stdout, 100, 30, 400, 80, - BARCODE_39 | oflags); - - /* ISBN with add-5 */ - Barcode_Encode_and_Print("1-56592-292-1 90000",stdout, 0, 0, 40, 430, - BARCODE_ISBN | oflags); - - /* UPC with add-2 */ - Barcode_Encode_and_Print("07447084452 07",stdout, 0, 0, 300, 410, - BARCODE_UPC | oflags); - - /* code 128-C */ - Barcode_Encode_and_Print("12345678900123456789",stdout, 0, 0, 40, 530, - BARCODE_128C | oflags); - - /* and my data as code-128B autodetected */ - Barcode_Encode_and_Print("RBNLSN68T11E897W",stdout, 0, 60, 240, 510, - oflags); - /* same as code-39, forced */ - Barcode_Encode_and_Print("RBNLSN68T11E897W",stdout, 0, 60, 240, 590, - BARCODE_NO_CHECKSUM | BARCODE_39 | oflags); - - /* one interleaved 2 of 5 */ - Barcode_Encode_and_Print("0123456789",stdout, 0, 0, 40, 620, - BARCODE_I25 | oflags); - - /* upc-e and ean-8 (autotected based on code size) */ - Barcode_Encode_and_Print("012345",stdout, 0, 0, 50, 720, oflags); - Barcode_Encode_and_Print("0123456",stdout, 0, 0, 160, 720, oflags); - - - - if (pcl) { - printf("\f"); - } else { - printf("\nshowpage\n"); - printf("%%%%Trailer\n\n"); - } - return 0; -} - - - - - - - diff --git a/glabels2/src/pixmaps/checkerboard.xpm b/glabels2/src/pixmaps/checkerboard.xpm deleted file mode 100644 index 33ab7b57..00000000 --- a/glabels2/src/pixmaps/checkerboard.xpm +++ /dev/null @@ -1,29 +0,0 @@ -/* XPM */ -static char * checkerboard_xpm[] = { -"24 24 2 1", -" c #CCCCCC", -". c #000000", -".. .. .. .. .. .. ", -".. .. .. .. .. .. ", -" .. .. .. .. .. ..", -" .. .. .. .. .. ..", -".. .. .. .. .. .. ", -".. .. .. .. .. .. ", -" .. .. .. .. .. ..", -" .. .. .. .. .. ..", -".. .. .. .. .. .. ", -".. .. .. .. .. .. ", -" .. .. .. .. .. ..", -" .. .. .. .. .. ..", -".. .. .. .. .. .. ", -".. .. .. .. .. .. ", -" .. .. .. .. .. ..", -" .. .. .. .. .. ..", -".. .. .. .. .. .. ", -".. .. .. .. .. .. ", -" .. .. .. .. .. ..", -" .. .. .. .. .. ..", -".. .. .. .. .. .. ", -".. .. .. .. .. .. ", -" .. .. .. .. .. ..", -" .. .. .. .. .. .."}; diff --git a/glabels2/src/pixmaps/collate.xpm b/glabels2/src/pixmaps/collate.xpm deleted file mode 100644 index a781151a..00000000 --- a/glabels2/src/pixmaps/collate.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *collate_xpm[]={ -"58 28 3 1", -". c None", -"# c #000000", -"a c #ffffff", -"..........................................................", -".###################..###################.................", -".#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.................", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaa##aaaaaaaa#.................", -".#aaaaaaa##aaaaaaaa#..#aaaaaa#aa#aaaaaaa#.................", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaaa#aaaaaaa#..##..##..##.....", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#..##..##..##.....", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaa#aaaaaaaaa#.................", -".#aaaaaaaa#aaaaaaaa#..#aaaaaa#aaaaaaaaaa#.................", -".#aaaaaaa###aaaaaaa#..#aaaaaa####aaaaaaa#.................", -".#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.................", -".###################..###################.................", -"..........................................................", -"..........................................................", -"..........................................................", -".................###################..###################.", -".................#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.", -".................#aaaaaaaa#aaaaaaaa#..#aaaaaaa##aaaaaaaa#.", -".................#aaaaaaa##aaaaaaaa#..#aaaaaa#aa#aaaaaaa#.", -"....##..##..##...#aaaaaaaa#aaaaaaaa#..#aaaaaaaaa#aaaaaaa#.", -"....##..##..##...#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#.", -".................#aaaaaaaa#aaaaaaaa#..#aaaaaaa#aaaaaaaaa#.", -".................#aaaaaaaa#aaaaaaaa#..#aaaaaa#aaaaaaaaaa#.", -".................#aaaaaaa###aaaaaaa#..#aaaaaa####aaaaaaa#.", -".................#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.", -".................###################..###################.", -"..........................................................", -".........................................................."}; diff --git a/glabels2/src/pixmaps/cursor_barcode.xbm b/glabels2/src/pixmaps/cursor_barcode.xbm deleted file mode 100644 index 6e8d1d62..00000000 --- a/glabels2/src/pixmaps/cursor_barcode.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_barcode_width 32 -#define cursor_barcode_height 32 -#define cursor_barcode_x_hot 7 -#define cursor_barcode_y_hot 7 -static unsigned char cursor_barcode_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, - 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, - 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, - 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, - 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, 0x00, 0xa0, 0xad, 0x5a, - 0x00, 0xa0, 0xad, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_barcode_mask.xbm b/glabels2/src/pixmaps/cursor_barcode_mask.xbm deleted file mode 100644 index 52ed3ba2..00000000 --- a/glabels2/src/pixmaps/cursor_barcode_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_barcode_mask_width 32 -#define cursor_barcode_mask_height 32 -#define cursor_barcode_mask_x_hot 7 -#define cursor_barcode_mask_y_hot 7 -static unsigned char cursor_barcode_mask_bits[] = { - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0xf1, 0xff, 0xff, 0xc0, 0xf1, 0xff, 0xff, 0xc0, 0xf1, 0xff, 0xff, - 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, - 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, - 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, - 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, - 0x00, 0xf0, 0xff, 0xff, 0x00, 0xf0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_box.xbm b/glabels2/src/pixmaps/cursor_box.xbm deleted file mode 100644 index 48ae4ea2..00000000 --- a/glabels2/src/pixmaps/cursor_box.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_box_width 32 -#define cursor_box_height 32 -#define cursor_box_x_hot 7 -#define cursor_box_y_hot 7 -static unsigned char cursor_box_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x80, 0x01, 0x60, - 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, - 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, - 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, - 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x80, 0xff, 0x7f, - 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_box_mask.xbm b/glabels2/src/pixmaps/cursor_box_mask.xbm deleted file mode 100644 index b41e0559..00000000 --- a/glabels2/src/pixmaps/cursor_box_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_box_mask_width 32 -#define cursor_box_mask_height 32 -#define cursor_box_mask_x_hot 7 -#define cursor_box_mask_y_hot 7 -static unsigned char cursor_box_mask_bits[] = { - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xc1, 0xff, 0xff, - 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, - 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, - 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, - 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0x03, 0xf0, - 0x00, 0xc0, 0x03, 0xf0, 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff, - 0x00, 0xc0, 0xff, 0xff, 0x00, 0xc0, 0xff, 0xff}; diff --git a/glabels2/src/pixmaps/cursor_ellipse.xbm b/glabels2/src/pixmaps/cursor_ellipse.xbm deleted file mode 100644 index 946af9ac..00000000 --- a/glabels2/src/pixmaps/cursor_ellipse.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_ellipse_width 32 -#define cursor_ellipse_height 32 -#define cursor_ellipse_x_hot 7 -#define cursor_ellipse_y_hot 7 -static unsigned char cursor_ellipse_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x7c, 0x00, 0x80, 0x00, 0xef, 0x01, 0x00, 0x80, 0x01, 0x03, - 0x00, 0xc0, 0x00, 0x06, 0x00, 0x60, 0x00, 0x0c, 0x00, 0x20, 0x00, 0x08, - 0x00, 0x30, 0x00, 0x18, 0x00, 0x30, 0x00, 0x18, 0x00, 0x10, 0x00, 0x10, - 0x00, 0x30, 0x00, 0x18, 0x00, 0x30, 0x00, 0x18, 0x00, 0x20, 0x00, 0x08, - 0x00, 0x60, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0x06, 0x00, 0x80, 0x01, 0x03, - 0x00, 0x00, 0xef, 0x01, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_ellipse_mask.xbm b/glabels2/src/pixmaps/cursor_ellipse_mask.xbm deleted file mode 100644 index 22fb5442..00000000 --- a/glabels2/src/pixmaps/cursor_ellipse_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_ellipse_mask_width 32 -#define cursor_ellipse_mask_height 32 -#define cursor_ellipse_mask_x_hot 7 -#define cursor_ellipse_mask_y_hot 7 -static unsigned char cursor_ellipse_mask_bits[] = { - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0xfe, 0x00, - 0xc0, 0x81, 0xff, 0x03, 0xc0, 0xc1, 0xff, 0x07, 0xc0, 0xe1, 0xff, 0x0f, - 0x00, 0xf0, 0x83, 0x1f, 0x00, 0xf0, 0x01, 0x1f, 0x00, 0xf8, 0x00, 0x3e, - 0x00, 0x78, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x3c, - 0x00, 0x78, 0x00, 0x3c, 0x00, 0x78, 0x00, 0x3c, 0x00, 0xf8, 0x00, 0x3e, - 0x00, 0xf0, 0x01, 0x1f, 0x00, 0xf0, 0x83, 0x1f, 0x00, 0xe0, 0xff, 0x0f, - 0x00, 0xc0, 0xff, 0x07, 0x00, 0x80, 0xff, 0x03, 0x00, 0x00, 0xfe, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_image.xbm b/glabels2/src/pixmaps/cursor_image.xbm deleted file mode 100644 index 32308360..00000000 --- a/glabels2/src/pixmaps/cursor_image.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_image_width 32 -#define cursor_image_height 32 -#define cursor_image_x_hot 7 -#define cursor_image_y_hot 7 -static unsigned char cursor_image_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0xf0, 0xff, 0x7f, 0x80, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, - 0x00, 0x10, 0x00, 0x4c, 0x00, 0x10, 0x00, 0x52, 0x00, 0x10, 0x08, 0x4c, - 0x00, 0x10, 0x14, 0x40, 0x00, 0x10, 0x22, 0x40, 0x00, 0x10, 0x41, 0x40, - 0x00, 0x90, 0xc1, 0x40, 0x00, 0x10, 0x41, 0x40, 0x00, 0xf0, 0xc1, 0x7f, - 0x00, 0x10, 0x41, 0x40, 0x00, 0x10, 0x41, 0x40, 0x00, 0x10, 0x41, 0x40, - 0x00, 0x10, 0x7f, 0x40, 0x00, 0x10, 0x00, 0x40, 0x00, 0x10, 0x00, 0x40, - 0x00, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_image_mask.xbm b/glabels2/src/pixmaps/cursor_image_mask.xbm deleted file mode 100644 index 9c79e82e..00000000 --- a/glabels2/src/pixmaps/cursor_image_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_image_mask_width 32 -#define cursor_image_mask_height 32 -#define cursor_image_mask_x_hot 7 -#define cursor_image_mask_y_hot 7 -static unsigned char cursor_image_mask_bits[] = { - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xf9, 0xff, 0xff, - 0xc0, 0xf9, 0xff, 0xff, 0xc0, 0xf9, 0xff, 0xff, 0xc0, 0xf9, 0xff, 0xff, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff, - 0x00, 0xf8, 0xff, 0xff, 0x00, 0xf8, 0xff, 0xff}; diff --git a/glabels2/src/pixmaps/cursor_line.xbm b/glabels2/src/pixmaps/cursor_line.xbm deleted file mode 100644 index f5e2636e..00000000 --- a/glabels2/src/pixmaps/cursor_line.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_line_width 32 -#define cursor_line_height 32 -#define cursor_line_x_hot 7 -#define cursor_line_y_hot 7 -static unsigned char cursor_line_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x08, - 0x80, 0x00, 0x00, 0x0c, 0x80, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x80, 0x01, 0x00, - 0x00, 0xc0, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_line_mask.xbm b/glabels2/src/pixmaps/cursor_line_mask.xbm deleted file mode 100644 index a9359d55..00000000 --- a/glabels2/src/pixmaps/cursor_line_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_line_mask_width 32 -#define cursor_line_mask_height 32 -#define cursor_line_mask_x_hot 7 -#define cursor_line_mask_y_hot 7 -static unsigned char cursor_line_mask_bits[] = { - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x08, 0xc0, 0x01, 0x00, 0x1c, - 0xc0, 0x01, 0x00, 0x1e, 0xc0, 0x01, 0x00, 0x0f, 0xc0, 0x01, 0x80, 0x07, - 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x00, - 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0xc0, 0x03, 0x00, - 0x00, 0xe0, 0x01, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, - 0x00, 0x3c, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_text.xbm b/glabels2/src/pixmaps/cursor_text.xbm deleted file mode 100644 index 4378c1a6..00000000 --- a/glabels2/src/pixmaps/cursor_text.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_text_width 32 -#define cursor_text_height 32 -#define cursor_text_x_hot 7 -#define cursor_text_y_hot 7 -static unsigned char cursor_text_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x01, - 0x00, 0xc0, 0x9c, 0x01, 0x00, 0x40, 0x1c, 0x01, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/cursor_text_mask.xbm b/glabels2/src/pixmaps/cursor_text_mask.xbm deleted file mode 100644 index 543c2b7f..00000000 --- a/glabels2/src/pixmaps/cursor_text_mask.xbm +++ /dev/null @@ -1,16 +0,0 @@ -#define cursor_text_mask_width 32 -#define cursor_text_mask_height 32 -#define cursor_text_mask_x_hot 7 -#define cursor_text_mask_y_hot 7 -static unsigned char cursor_text_mask_bits[] = { - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, 0xff, 0x7f, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, - 0xc0, 0x01, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0x03, 0xc0, 0xe1, 0xff, 0x03, - 0x00, 0xe0, 0xff, 0x03, 0x00, 0xe0, 0xbe, 0x03, 0x00, 0x60, 0x3e, 0x03, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7f, 0x00, - 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/glabels2/src/pixmaps/nocollate.xpm b/glabels2/src/pixmaps/nocollate.xpm deleted file mode 100644 index a67cc13c..00000000 --- a/glabels2/src/pixmaps/nocollate.xpm +++ /dev/null @@ -1,34 +0,0 @@ -/* XPM */ -static char *nocollate_xpm[]={ -"58 28 3 1", -". c None", -"# c #000000", -"a c #ffffff", -"..........................................................", -".###################..###################.................", -".#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.................", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#.................", -".#aaaaaaa##aaaaaaaa#..#aaaaaaa##aaaaaaaa#.................", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#..##..##..##.....", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#..##..##..##.....", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#.................", -".#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#.................", -".#aaaaaaa###aaaaaaa#..#aaaaaaa###aaaaaaa#.................", -".#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.................", -".###################..###################.................", -"..........................................................", -"..........................................................", -"..........................................................", -".................###################..###################.", -".................#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.", -".................#aaaaaaaa##aaaaaaa#..#aaaaaaaa##aaaaaaa#.", -".................#aaaaaaa#aa#aaaaaa#..#aaaaaaa#aa#aaaaaa#.", -"....##..##..##...#aaaaaaaaaa#aaaaaa#..#aaaaaaaaaa#aaaaaa#.", -"....##..##..##...#aaaaaaaaa#aaaaaaa#..#aaaaaaaaa#aaaaaaa#.", -".................#aaaaaaaa#aaaaaaaa#..#aaaaaaaa#aaaaaaaa#.", -".................#aaaaaaa#aaaaaaaaa#..#aaaaaaa#aaaaaaaaa#.", -".................#aaaaaaa####aaaaaa#..#aaaaaaa####aaaaaa#.", -".................#aaaaaaaaaaaaaaaaa#..#aaaaaaaaaaaaaaaaa#.", -".................###################..###################.", -"..........................................................", -".........................................................."}; diff --git a/glabels2/gtk-doc.make b/gtk-doc.make similarity index 100% rename from glabels2/gtk-doc.make rename to gtk-doc.make diff --git a/glabels2/help/C/figures/glabels-template-cd.png b/help/C/figures/glabels-template-cd.png similarity index 100% rename from glabels2/help/C/figures/glabels-template-cd.png rename to help/C/figures/glabels-template-cd.png diff --git a/glabels2/help/C/figures/glabels-template-label.png b/help/C/figures/glabels-template-label.png similarity index 100% rename from glabels2/help/C/figures/glabels-template-label.png rename to help/C/figures/glabels-template-label.png diff --git a/glabels2/help/C/figures/glabels-template-layout.png b/help/C/figures/glabels-template-layout.png similarity index 100% rename from glabels2/help/C/figures/glabels-template-layout.png rename to help/C/figures/glabels-template-layout.png diff --git a/glabels2/help/C/figures/main-window-empty.png b/help/C/figures/main-window-empty.png similarity index 100% rename from glabels2/help/C/figures/main-window-empty.png rename to help/C/figures/main-window-empty.png diff --git a/glabels2/help/C/figures/merge-ex1-1.png b/help/C/figures/merge-ex1-1.png similarity index 100% rename from glabels2/help/C/figures/merge-ex1-1.png rename to help/C/figures/merge-ex1-1.png diff --git a/glabels2/help/C/figures/merge-ex1-2.png b/help/C/figures/merge-ex1-2.png similarity index 100% rename from glabels2/help/C/figures/merge-ex1-2.png rename to help/C/figures/merge-ex1-2.png diff --git a/glabels2/help/C/figures/merge-ex1-3.png b/help/C/figures/merge-ex1-3.png similarity index 100% rename from glabels2/help/C/figures/merge-ex1-3.png rename to help/C/figures/merge-ex1-3.png diff --git a/glabels2/help/C/figures/merge-ex1-4.png b/help/C/figures/merge-ex1-4.png similarity index 100% rename from glabels2/help/C/figures/merge-ex1-4.png rename to help/C/figures/merge-ex1-4.png diff --git a/glabels2/help/C/figures/merge-ex2-1.png b/help/C/figures/merge-ex2-1.png similarity index 100% rename from glabels2/help/C/figures/merge-ex2-1.png rename to help/C/figures/merge-ex2-1.png diff --git a/glabels2/help/C/figures/merge-ex2-2.png b/help/C/figures/merge-ex2-2.png similarity index 100% rename from glabels2/help/C/figures/merge-ex2-2.png rename to help/C/figures/merge-ex2-2.png diff --git a/glabels2/help/C/figures/merge-ex2-3.png b/help/C/figures/merge-ex2-3.png similarity index 100% rename from glabels2/help/C/figures/merge-ex2-3.png rename to help/C/figures/merge-ex2-3.png diff --git a/glabels2/help/C/figures/merge-ex2-4.png b/help/C/figures/merge-ex2-4.png similarity index 100% rename from glabels2/help/C/figures/merge-ex2-4.png rename to help/C/figures/merge-ex2-4.png diff --git a/glabels2/help/C/figures/object-editor-sidebar.png b/help/C/figures/object-editor-sidebar.png similarity index 100% rename from glabels2/help/C/figures/object-editor-sidebar.png rename to help/C/figures/object-editor-sidebar.png diff --git a/glabels2/help/C/figures/print-copies.png b/help/C/figures/print-copies.png similarity index 100% rename from glabels2/help/C/figures/print-copies.png rename to help/C/figures/print-copies.png diff --git a/glabels2/help/C/figures/print-merge.png b/help/C/figures/print-merge.png similarity index 100% rename from glabels2/help/C/figures/print-merge.png rename to help/C/figures/print-merge.png diff --git a/glabels2/help/C/glabels.xml b/help/C/glabels.xml similarity index 100% rename from glabels2/help/C/glabels.xml rename to help/C/glabels.xml diff --git a/glabels2/help/C/legal.xml b/help/C/legal.xml similarity index 100% rename from glabels2/help/C/legal.xml rename to help/C/legal.xml diff --git a/glabels2/help/Makefile.am b/help/Makefile.am similarity index 100% rename from glabels2/help/Makefile.am rename to help/Makefile.am diff --git a/glabels2/help/de/de.po b/help/de/de.po similarity index 100% rename from glabels2/help/de/de.po rename to help/de/de.po diff --git a/glabels2/help/de/figures/main-window-empty.png b/help/de/figures/main-window-empty.png similarity index 100% rename from glabels2/help/de/figures/main-window-empty.png rename to help/de/figures/main-window-empty.png diff --git a/glabels2/help/de/figures/merge-ex1-1.png b/help/de/figures/merge-ex1-1.png similarity index 100% rename from glabels2/help/de/figures/merge-ex1-1.png rename to help/de/figures/merge-ex1-1.png diff --git a/glabels2/help/de/figures/merge-ex1-2.png b/help/de/figures/merge-ex1-2.png similarity index 100% rename from glabels2/help/de/figures/merge-ex1-2.png rename to help/de/figures/merge-ex1-2.png diff --git a/glabels2/help/de/figures/merge-ex1-3.png b/help/de/figures/merge-ex1-3.png similarity index 100% rename from glabels2/help/de/figures/merge-ex1-3.png rename to help/de/figures/merge-ex1-3.png diff --git a/glabels2/help/de/figures/merge-ex1-4.png b/help/de/figures/merge-ex1-4.png similarity index 100% rename from glabels2/help/de/figures/merge-ex1-4.png rename to help/de/figures/merge-ex1-4.png diff --git a/glabels2/help/de/figures/merge-ex2-1.png b/help/de/figures/merge-ex2-1.png similarity index 100% rename from glabels2/help/de/figures/merge-ex2-1.png rename to help/de/figures/merge-ex2-1.png diff --git a/glabels2/help/de/figures/merge-ex2-2.png b/help/de/figures/merge-ex2-2.png similarity index 100% rename from glabels2/help/de/figures/merge-ex2-2.png rename to help/de/figures/merge-ex2-2.png diff --git a/glabels2/help/de/figures/merge-ex2-3.png b/help/de/figures/merge-ex2-3.png similarity index 100% rename from glabels2/help/de/figures/merge-ex2-3.png rename to help/de/figures/merge-ex2-3.png diff --git a/glabels2/help/de/figures/merge-ex2-4.png b/help/de/figures/merge-ex2-4.png similarity index 100% rename from glabels2/help/de/figures/merge-ex2-4.png rename to help/de/figures/merge-ex2-4.png diff --git a/glabels2/help/de/figures/object-editor-sidebar.png b/help/de/figures/object-editor-sidebar.png similarity index 100% rename from glabels2/help/de/figures/object-editor-sidebar.png rename to help/de/figures/object-editor-sidebar.png diff --git a/glabels2/help/de/figures/print-copies.png b/help/de/figures/print-copies.png similarity index 100% rename from glabels2/help/de/figures/print-copies.png rename to help/de/figures/print-copies.png diff --git a/glabels2/help/de/figures/print-merge.png b/help/de/figures/print-merge.png similarity index 100% rename from glabels2/help/de/figures/print-merge.png rename to help/de/figures/print-merge.png diff --git a/glabels2/help/glabels.omf.in b/help/glabels.omf.in similarity index 100% rename from glabels2/help/glabels.omf.in rename to help/glabels.omf.in diff --git a/glabels2/iec16022-0.2.1/BUGS b/iec16022-0.2.1/BUGS similarity index 100% rename from glabels2/iec16022-0.2.1/BUGS rename to iec16022-0.2.1/BUGS diff --git a/glabels2/iec16022-0.2.1/CHANGELOG b/iec16022-0.2.1/CHANGELOG similarity index 100% rename from glabels2/iec16022-0.2.1/CHANGELOG rename to iec16022-0.2.1/CHANGELOG diff --git a/glabels2/iec16022-0.2.1/CREDITS b/iec16022-0.2.1/CREDITS similarity index 100% rename from glabels2/iec16022-0.2.1/CREDITS rename to iec16022-0.2.1/CREDITS diff --git a/glabels2/iec16022-0.2.1/INSTALL b/iec16022-0.2.1/INSTALL similarity index 100% rename from glabels2/iec16022-0.2.1/INSTALL rename to iec16022-0.2.1/INSTALL diff --git a/glabels2/iec16022-0.2.1/LICENSE b/iec16022-0.2.1/LICENSE similarity index 100% rename from glabels2/iec16022-0.2.1/LICENSE rename to iec16022-0.2.1/LICENSE diff --git a/glabels2/iec16022-0.2.1/Makefile.am b/iec16022-0.2.1/Makefile.am similarity index 100% rename from glabels2/iec16022-0.2.1/Makefile.am rename to iec16022-0.2.1/Makefile.am diff --git a/glabels2/iec16022-0.2.1/Makefile.dist b/iec16022-0.2.1/Makefile.dist similarity index 100% rename from glabels2/iec16022-0.2.1/Makefile.dist rename to iec16022-0.2.1/Makefile.dist diff --git a/glabels2/iec16022-0.2.1/README b/iec16022-0.2.1/README similarity index 100% rename from glabels2/iec16022-0.2.1/README rename to iec16022-0.2.1/README diff --git a/glabels2/iec16022-0.2.1/README.glabels b/iec16022-0.2.1/README.glabels similarity index 100% rename from glabels2/iec16022-0.2.1/README.glabels rename to iec16022-0.2.1/README.glabels diff --git a/glabels2/iec16022-0.2.1/TODO b/iec16022-0.2.1/TODO similarity index 100% rename from glabels2/iec16022-0.2.1/TODO rename to iec16022-0.2.1/TODO diff --git a/glabels2/iec16022-0.2.1/iec16022.1 b/iec16022-0.2.1/iec16022.1 similarity index 100% rename from glabels2/iec16022-0.2.1/iec16022.1 rename to iec16022-0.2.1/iec16022.1 diff --git a/glabels2/iec16022-0.2.1/iec16022.c b/iec16022-0.2.1/iec16022.c similarity index 100% rename from glabels2/iec16022-0.2.1/iec16022.c rename to iec16022-0.2.1/iec16022.c diff --git a/glabels2/iec16022-0.2.1/iec16022ecc200.c b/iec16022-0.2.1/iec16022ecc200.c similarity index 100% rename from glabels2/iec16022-0.2.1/iec16022ecc200.c rename to iec16022-0.2.1/iec16022ecc200.c diff --git a/glabels2/iec16022-0.2.1/iec16022ecc200.h b/iec16022-0.2.1/iec16022ecc200.h similarity index 100% rename from glabels2/iec16022-0.2.1/iec16022ecc200.h rename to iec16022-0.2.1/iec16022ecc200.h diff --git a/glabels2/iec16022-0.2.1/image.c b/iec16022-0.2.1/image.c similarity index 100% rename from glabels2/iec16022-0.2.1/image.c rename to iec16022-0.2.1/image.c diff --git a/glabels2/iec16022-0.2.1/image.h b/iec16022-0.2.1/image.h similarity index 100% rename from glabels2/iec16022-0.2.1/image.h rename to iec16022-0.2.1/image.h diff --git a/glabels2/iec16022-0.2.1/reedsol.c b/iec16022-0.2.1/reedsol.c similarity index 100% rename from glabels2/iec16022-0.2.1/reedsol.c rename to iec16022-0.2.1/reedsol.c diff --git a/glabels2/iec16022-0.2.1/reedsol.h b/iec16022-0.2.1/reedsol.h similarity index 100% rename from glabels2/iec16022-0.2.1/reedsol.h rename to iec16022-0.2.1/reedsol.h diff --git a/glabels2/iec16022-0.2.1/test/testsuite-example.bin b/iec16022-0.2.1/test/testsuite-example.bin similarity index 100% rename from glabels2/iec16022-0.2.1/test/testsuite-example.bin rename to iec16022-0.2.1/test/testsuite-example.bin diff --git a/glabels2/iec16022-0.2.1/test/testsuite-example.eps b/iec16022-0.2.1/test/testsuite-example.eps similarity index 100% rename from glabels2/iec16022-0.2.1/test/testsuite-example.eps rename to iec16022-0.2.1/test/testsuite-example.eps diff --git a/glabels2/iec16022-0.2.1/test/testsuite-example.hex b/iec16022-0.2.1/test/testsuite-example.hex similarity index 100% rename from glabels2/iec16022-0.2.1/test/testsuite-example.hex rename to iec16022-0.2.1/test/testsuite-example.hex diff --git a/glabels2/iec16022-0.2.1/test/testsuite-example.png b/iec16022-0.2.1/test/testsuite-example.png similarity index 100% rename from glabels2/iec16022-0.2.1/test/testsuite-example.png rename to iec16022-0.2.1/test/testsuite-example.png diff --git a/glabels2/iec16022-0.2.1/test/testsuite-example.text b/iec16022-0.2.1/test/testsuite-example.text similarity index 100% rename from glabels2/iec16022-0.2.1/test/testsuite-example.text rename to iec16022-0.2.1/test/testsuite-example.text diff --git a/glabels2/iec16022-0.2.1/test/testsuite.sh b/iec16022-0.2.1/test/testsuite.sh similarity index 100% rename from glabels2/iec16022-0.2.1/test/testsuite.sh rename to iec16022-0.2.1/test/testsuite.sh diff --git a/glabels2/libglabels/Makefile.am b/libglabels/Makefile.am similarity index 100% rename from glabels2/libglabels/Makefile.am rename to libglabels/Makefile.am diff --git a/glabels2/libglabels/category.c b/libglabels/category.c similarity index 100% rename from glabels2/libglabels/category.c rename to libglabels/category.c diff --git a/glabels2/libglabels/category.h b/libglabels/category.h similarity index 100% rename from glabels2/libglabels/category.h rename to libglabels/category.h diff --git a/glabels2/libglabels/db.c b/libglabels/db.c similarity index 100% rename from glabels2/libglabels/db.c rename to libglabels/db.c diff --git a/glabels2/libglabels/db.h b/libglabels/db.h similarity index 100% rename from glabels2/libglabels/db.h rename to libglabels/db.h diff --git a/glabels2/libglabels/enums.h b/libglabels/enums.h similarity index 100% rename from glabels2/libglabels/enums.h rename to libglabels/enums.h diff --git a/glabels2/libglabels/libglabels-private.h b/libglabels/libglabels-private.h similarity index 100% rename from glabels2/libglabels/libglabels-private.h rename to libglabels/libglabels-private.h diff --git a/glabels2/libglabels/libglabels.h b/libglabels/libglabels.h similarity index 100% rename from glabels2/libglabels/libglabels.h rename to libglabels/libglabels.h diff --git a/glabels2/libglabels/libglabels.pc.in b/libglabels/libglabels.pc.in similarity index 100% rename from glabels2/libglabels/libglabels.pc.in rename to libglabels/libglabels.pc.in diff --git a/glabels2/libglabels/paper.c b/libglabels/paper.c similarity index 100% rename from glabels2/libglabels/paper.c rename to libglabels/paper.c diff --git a/glabels2/libglabels/paper.h b/libglabels/paper.h similarity index 100% rename from glabels2/libglabels/paper.h rename to libglabels/paper.h diff --git a/glabels2/libglabels/str.c b/libglabels/str.c similarity index 100% rename from glabels2/libglabels/str.c rename to libglabels/str.c diff --git a/glabels2/libglabels/str.h b/libglabels/str.h similarity index 100% rename from glabels2/libglabels/str.h rename to libglabels/str.h diff --git a/glabels2/libglabels/template.c b/libglabels/template.c similarity index 100% rename from glabels2/libglabels/template.c rename to libglabels/template.c diff --git a/glabels2/libglabels/template.h b/libglabels/template.h similarity index 100% rename from glabels2/libglabels/template.h rename to libglabels/template.h diff --git a/glabels2/libglabels/xml-category.c b/libglabels/xml-category.c similarity index 100% rename from glabels2/libglabels/xml-category.c rename to libglabels/xml-category.c diff --git a/glabels2/libglabels/xml-category.h b/libglabels/xml-category.h similarity index 100% rename from glabels2/libglabels/xml-category.h rename to libglabels/xml-category.h diff --git a/glabels2/libglabels/xml-paper.c b/libglabels/xml-paper.c similarity index 100% rename from glabels2/libglabels/xml-paper.c rename to libglabels/xml-paper.c diff --git a/glabels2/libglabels/xml-paper.h b/libglabels/xml-paper.h similarity index 100% rename from glabels2/libglabels/xml-paper.h rename to libglabels/xml-paper.h diff --git a/glabels2/libglabels/xml-template.c b/libglabels/xml-template.c similarity index 100% rename from glabels2/libglabels/xml-template.c rename to libglabels/xml-template.c diff --git a/glabels2/libglabels/xml-template.h b/libglabels/xml-template.h similarity index 100% rename from glabels2/libglabels/xml-template.h rename to libglabels/xml-template.h diff --git a/glabels2/libglabels/xml.c b/libglabels/xml.c similarity index 100% rename from glabels2/libglabels/xml.c rename to libglabels/xml.c diff --git a/glabels2/libglabels/xml.h b/libglabels/xml.h similarity index 100% rename from glabels2/libglabels/xml.h rename to libglabels/xml.h diff --git a/glabels2/po/LINGUAS b/po/LINGUAS similarity index 100% rename from glabels2/po/LINGUAS rename to po/LINGUAS diff --git a/glabels2/po/POTFILES.in b/po/POTFILES.in similarity index 100% rename from glabels2/po/POTFILES.in rename to po/POTFILES.in diff --git a/glabels2/po/ca.po b/po/ca.po similarity index 100% rename from glabels2/po/ca.po rename to po/ca.po diff --git a/glabels2/po/cs.po b/po/cs.po similarity index 100% rename from glabels2/po/cs.po rename to po/cs.po diff --git a/glabels2/po/de.po b/po/de.po similarity index 100% rename from glabels2/po/de.po rename to po/de.po diff --git a/glabels2/po/eo.po b/po/eo.po similarity index 100% rename from glabels2/po/eo.po rename to po/eo.po diff --git a/glabels2/po/es.po b/po/es.po similarity index 100% rename from glabels2/po/es.po rename to po/es.po diff --git a/glabels2/po/fr.po b/po/fr.po similarity index 100% rename from glabels2/po/fr.po rename to po/fr.po diff --git a/glabels2/po/it.po b/po/it.po similarity index 100% rename from glabels2/po/it.po rename to po/it.po diff --git a/glabels2/po/ja.po b/po/ja.po similarity index 100% rename from glabels2/po/ja.po rename to po/ja.po diff --git a/glabels2/po/ko.po b/po/ko.po similarity index 100% rename from glabels2/po/ko.po rename to po/ko.po diff --git a/glabels2/po/pl.po b/po/pl.po similarity index 100% rename from glabels2/po/pl.po rename to po/pl.po diff --git a/glabels2/po/pt_BR.po b/po/pt_BR.po similarity index 100% rename from glabels2/po/pt_BR.po rename to po/pt_BR.po diff --git a/glabels2/po/ru.po b/po/ru.po similarity index 100% rename from glabels2/po/ru.po rename to po/ru.po diff --git a/glabels2/po/zh_CN.po b/po/zh_CN.po similarity index 100% rename from glabels2/po/zh_CN.po rename to po/zh_CN.po diff --git a/glabels2/po/zh_TW.Big5.po b/po/zh_TW.Big5.po similarity index 100% rename from glabels2/po/zh_TW.Big5.po rename to po/zh_TW.Big5.po diff --git a/glabels2/qrencode-3.1.0/COPYING b/qrencode-3.1.0/COPYING similarity index 100% rename from glabels2/qrencode-3.1.0/COPYING rename to qrencode-3.1.0/COPYING diff --git a/glabels2/qrencode-3.1.0/ChangeLog b/qrencode-3.1.0/ChangeLog similarity index 100% rename from glabels2/qrencode-3.1.0/ChangeLog rename to qrencode-3.1.0/ChangeLog diff --git a/glabels2/qrencode-3.1.0/Doxyfile b/qrencode-3.1.0/Doxyfile similarity index 100% rename from glabels2/qrencode-3.1.0/Doxyfile rename to qrencode-3.1.0/Doxyfile diff --git a/glabels2/qrencode-3.1.0/Makefile.am b/qrencode-3.1.0/Makefile.am similarity index 100% rename from glabels2/qrencode-3.1.0/Makefile.am rename to qrencode-3.1.0/Makefile.am diff --git a/glabels2/qrencode-3.1.0/Makefile.am.dist b/qrencode-3.1.0/Makefile.am.dist similarity index 100% rename from glabels2/qrencode-3.1.0/Makefile.am.dist rename to qrencode-3.1.0/Makefile.am.dist diff --git a/glabels2/qrencode-3.1.0/Makefile.in.dist b/qrencode-3.1.0/Makefile.in.dist similarity index 100% rename from glabels2/qrencode-3.1.0/Makefile.in.dist rename to qrencode-3.1.0/Makefile.in.dist diff --git a/glabels2/qrencode-3.1.0/NEWS b/qrencode-3.1.0/NEWS similarity index 100% rename from glabels2/qrencode-3.1.0/NEWS rename to qrencode-3.1.0/NEWS diff --git a/glabels2/qrencode-3.1.0/README b/qrencode-3.1.0/README similarity index 100% rename from glabels2/qrencode-3.1.0/README rename to qrencode-3.1.0/README diff --git a/glabels2/qrencode-3.1.0/README.glabels b/qrencode-3.1.0/README.glabels similarity index 100% rename from glabels2/qrencode-3.1.0/README.glabels rename to qrencode-3.1.0/README.glabels diff --git a/glabels2/qrencode-3.1.0/TODO b/qrencode-3.1.0/TODO similarity index 100% rename from glabels2/qrencode-3.1.0/TODO rename to qrencode-3.1.0/TODO diff --git a/glabels2/qrencode-3.1.0/acinclude.m4 b/qrencode-3.1.0/acinclude.m4 similarity index 100% rename from glabels2/qrencode-3.1.0/acinclude.m4 rename to qrencode-3.1.0/acinclude.m4 diff --git a/glabels2/qrencode-3.1.0/aclocal.m4 b/qrencode-3.1.0/aclocal.m4 similarity index 100% rename from glabels2/qrencode-3.1.0/aclocal.m4 rename to qrencode-3.1.0/aclocal.m4 diff --git a/glabels2/qrencode-3.1.0/autogen.sh b/qrencode-3.1.0/autogen.sh similarity index 100% rename from glabels2/qrencode-3.1.0/autogen.sh rename to qrencode-3.1.0/autogen.sh diff --git a/glabels2/qrencode-3.1.0/bitstream.c b/qrencode-3.1.0/bitstream.c similarity index 100% rename from glabels2/qrencode-3.1.0/bitstream.c rename to qrencode-3.1.0/bitstream.c diff --git a/glabels2/qrencode-3.1.0/bitstream.h b/qrencode-3.1.0/bitstream.h similarity index 100% rename from glabels2/qrencode-3.1.0/bitstream.h rename to qrencode-3.1.0/bitstream.h diff --git a/glabels2/qrencode-3.1.0/config.h.in b/qrencode-3.1.0/config.h.in similarity index 100% rename from glabels2/qrencode-3.1.0/config.h.in rename to qrencode-3.1.0/config.h.in diff --git a/glabels2/qrencode-3.1.0/configure b/qrencode-3.1.0/configure similarity index 100% rename from glabels2/qrencode-3.1.0/configure rename to qrencode-3.1.0/configure diff --git a/glabels2/qrencode-3.1.0/configure.ac.dist b/qrencode-3.1.0/configure.ac.dist similarity index 100% rename from glabels2/qrencode-3.1.0/configure.ac.dist rename to qrencode-3.1.0/configure.ac.dist diff --git a/glabels2/qrencode-3.1.0/libqrencode.pc.in b/qrencode-3.1.0/libqrencode.pc.in similarity index 100% rename from glabels2/qrencode-3.1.0/libqrencode.pc.in rename to qrencode-3.1.0/libqrencode.pc.in diff --git a/glabels2/qrencode-3.1.0/mask.c b/qrencode-3.1.0/mask.c similarity index 100% rename from glabels2/qrencode-3.1.0/mask.c rename to qrencode-3.1.0/mask.c diff --git a/glabels2/qrencode-3.1.0/mask.h b/qrencode-3.1.0/mask.h similarity index 100% rename from glabels2/qrencode-3.1.0/mask.h rename to qrencode-3.1.0/mask.h diff --git a/glabels2/qrencode-3.1.0/qrenc.c b/qrencode-3.1.0/qrenc.c similarity index 100% rename from glabels2/qrencode-3.1.0/qrenc.c rename to qrencode-3.1.0/qrenc.c diff --git a/glabels2/qrencode-3.1.0/qrencode.1.in b/qrencode-3.1.0/qrencode.1.in similarity index 100% rename from glabels2/qrencode-3.1.0/qrencode.1.in rename to qrencode-3.1.0/qrencode.1.in diff --git a/glabels2/qrencode-3.1.0/qrencode.c b/qrencode-3.1.0/qrencode.c similarity index 100% rename from glabels2/qrencode-3.1.0/qrencode.c rename to qrencode-3.1.0/qrencode.c diff --git a/glabels2/qrencode-3.1.0/qrencode.h b/qrencode-3.1.0/qrencode.h similarity index 100% rename from glabels2/qrencode-3.1.0/qrencode.h rename to qrencode-3.1.0/qrencode.h diff --git a/glabels2/qrencode-3.1.0/qrencode.spec b/qrencode-3.1.0/qrencode.spec similarity index 100% rename from glabels2/qrencode-3.1.0/qrencode.spec rename to qrencode-3.1.0/qrencode.spec diff --git a/glabels2/qrencode-3.1.0/qrencode.spec.in b/qrencode-3.1.0/qrencode.spec.in similarity index 100% rename from glabels2/qrencode-3.1.0/qrencode.spec.in rename to qrencode-3.1.0/qrencode.spec.in diff --git a/glabels2/qrencode-3.1.0/qrencode_inner.h b/qrencode-3.1.0/qrencode_inner.h similarity index 100% rename from glabels2/qrencode-3.1.0/qrencode_inner.h rename to qrencode-3.1.0/qrencode_inner.h diff --git a/glabels2/qrencode-3.1.0/qrinput.c b/qrencode-3.1.0/qrinput.c similarity index 100% rename from glabels2/qrencode-3.1.0/qrinput.c rename to qrencode-3.1.0/qrinput.c diff --git a/glabels2/qrencode-3.1.0/qrinput.h b/qrencode-3.1.0/qrinput.h similarity index 100% rename from glabels2/qrencode-3.1.0/qrinput.h rename to qrencode-3.1.0/qrinput.h diff --git a/glabels2/qrencode-3.1.0/qrspec.c b/qrencode-3.1.0/qrspec.c similarity index 100% rename from glabels2/qrencode-3.1.0/qrspec.c rename to qrencode-3.1.0/qrspec.c diff --git a/glabels2/qrencode-3.1.0/qrspec.h b/qrencode-3.1.0/qrspec.h similarity index 100% rename from glabels2/qrencode-3.1.0/qrspec.h rename to qrencode-3.1.0/qrspec.h diff --git a/glabels2/qrencode-3.1.0/rscode.c b/qrencode-3.1.0/rscode.c similarity index 100% rename from glabels2/qrencode-3.1.0/rscode.c rename to qrencode-3.1.0/rscode.c diff --git a/glabels2/qrencode-3.1.0/rscode.h b/qrencode-3.1.0/rscode.h similarity index 100% rename from glabels2/qrencode-3.1.0/rscode.h rename to qrencode-3.1.0/rscode.h diff --git a/glabels2/qrencode-3.1.0/split.c b/qrencode-3.1.0/split.c similarity index 100% rename from glabels2/qrencode-3.1.0/split.c rename to qrencode-3.1.0/split.c diff --git a/glabels2/qrencode-3.1.0/split.h b/qrencode-3.1.0/split.h similarity index 100% rename from glabels2/qrencode-3.1.0/split.h rename to qrencode-3.1.0/split.h diff --git a/glabels2/qrencode-3.1.0/tests/Makefile.am b/qrencode-3.1.0/tests/Makefile.am similarity index 100% rename from glabels2/qrencode-3.1.0/tests/Makefile.am rename to qrencode-3.1.0/tests/Makefile.am diff --git a/glabels2/qrencode-3.1.0/tests/Makefile.in b/qrencode-3.1.0/tests/Makefile.in similarity index 100% rename from glabels2/qrencode-3.1.0/tests/Makefile.in rename to qrencode-3.1.0/tests/Makefile.in diff --git a/glabels2/qrencode-3.1.0/tests/common.h b/qrencode-3.1.0/tests/common.h similarity index 100% rename from glabels2/qrencode-3.1.0/tests/common.h rename to qrencode-3.1.0/tests/common.h diff --git a/glabels2/qrencode-3.1.0/tests/create_frame_pattern.c b/qrencode-3.1.0/tests/create_frame_pattern.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/create_frame_pattern.c rename to qrencode-3.1.0/tests/create_frame_pattern.c diff --git a/glabels2/qrencode-3.1.0/tests/frame b/qrencode-3.1.0/tests/frame similarity index 100% rename from glabels2/qrencode-3.1.0/tests/frame rename to qrencode-3.1.0/tests/frame diff --git a/glabels2/qrencode-3.1.0/tests/prof_qrencode.c b/qrencode-3.1.0/tests/prof_qrencode.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/prof_qrencode.c rename to qrencode-3.1.0/tests/prof_qrencode.c diff --git a/glabels2/qrencode-3.1.0/tests/test_all.sh b/qrencode-3.1.0/tests/test_all.sh similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_all.sh rename to qrencode-3.1.0/tests/test_all.sh diff --git a/glabels2/qrencode-3.1.0/tests/test_bitstream.c b/qrencode-3.1.0/tests/test_bitstream.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_bitstream.c rename to qrencode-3.1.0/tests/test_bitstream.c diff --git a/glabels2/qrencode-3.1.0/tests/test_estimatebit.c b/qrencode-3.1.0/tests/test_estimatebit.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_estimatebit.c rename to qrencode-3.1.0/tests/test_estimatebit.c diff --git a/glabels2/qrencode-3.1.0/tests/test_monkey.c b/qrencode-3.1.0/tests/test_monkey.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_monkey.c rename to qrencode-3.1.0/tests/test_monkey.c diff --git a/glabels2/qrencode-3.1.0/tests/test_qrencode.c b/qrencode-3.1.0/tests/test_qrencode.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_qrencode.c rename to qrencode-3.1.0/tests/test_qrencode.c diff --git a/glabels2/qrencode-3.1.0/tests/test_qrinput.c b/qrencode-3.1.0/tests/test_qrinput.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_qrinput.c rename to qrencode-3.1.0/tests/test_qrinput.c diff --git a/glabels2/qrencode-3.1.0/tests/test_qrspec.c b/qrencode-3.1.0/tests/test_qrspec.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_qrspec.c rename to qrencode-3.1.0/tests/test_qrspec.c diff --git a/glabels2/qrencode-3.1.0/tests/test_rs.c b/qrencode-3.1.0/tests/test_rs.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_rs.c rename to qrencode-3.1.0/tests/test_rs.c diff --git a/glabels2/qrencode-3.1.0/tests/test_split.c b/qrencode-3.1.0/tests/test_split.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/test_split.c rename to qrencode-3.1.0/tests/test_split.c diff --git a/glabels2/qrencode-3.1.0/tests/view_qrcode.c b/qrencode-3.1.0/tests/view_qrcode.c similarity index 100% rename from glabels2/qrencode-3.1.0/tests/view_qrcode.c rename to qrencode-3.1.0/tests/view_qrcode.c diff --git a/glabels2/qrencode-3.1.0/use/compile b/qrencode-3.1.0/use/compile similarity index 100% rename from glabels2/qrencode-3.1.0/use/compile rename to qrencode-3.1.0/use/compile diff --git a/glabels2/qrencode-3.1.0/use/config.guess b/qrencode-3.1.0/use/config.guess similarity index 100% rename from glabels2/qrencode-3.1.0/use/config.guess rename to qrencode-3.1.0/use/config.guess diff --git a/glabels2/qrencode-3.1.0/use/config.sub b/qrencode-3.1.0/use/config.sub similarity index 100% rename from glabels2/qrencode-3.1.0/use/config.sub rename to qrencode-3.1.0/use/config.sub diff --git a/glabels2/qrencode-3.1.0/use/depcomp b/qrencode-3.1.0/use/depcomp similarity index 100% rename from glabels2/qrencode-3.1.0/use/depcomp rename to qrencode-3.1.0/use/depcomp diff --git a/glabels2/qrencode-3.1.0/use/install-sh b/qrencode-3.1.0/use/install-sh similarity index 100% rename from glabels2/qrencode-3.1.0/use/install-sh rename to qrencode-3.1.0/use/install-sh diff --git a/glabels2/qrencode-3.1.0/use/ltmain.sh b/qrencode-3.1.0/use/ltmain.sh similarity index 100% rename from glabels2/qrencode-3.1.0/use/ltmain.sh rename to qrencode-3.1.0/use/ltmain.sh diff --git a/glabels2/qrencode-3.1.0/use/missing b/qrencode-3.1.0/use/missing similarity index 100% rename from glabels2/qrencode-3.1.0/use/missing rename to qrencode-3.1.0/use/missing diff --git a/glabels2/src/Makefile.am b/src/Makefile.am similarity index 100% rename from glabels2/src/Makefile.am rename to src/Makefile.am diff --git a/glabels2/src/bc-gnubarcode.c b/src/bc-gnubarcode.c similarity index 100% rename from glabels2/src/bc-gnubarcode.c rename to src/bc-gnubarcode.c diff --git a/glabels2/src/bc-gnubarcode.h b/src/bc-gnubarcode.h similarity index 100% rename from glabels2/src/bc-gnubarcode.h rename to src/bc-gnubarcode.h diff --git a/glabels2/src/bc-iec16022.c b/src/bc-iec16022.c similarity index 100% rename from glabels2/src/bc-iec16022.c rename to src/bc-iec16022.c diff --git a/glabels2/src/bc-iec16022.h b/src/bc-iec16022.h similarity index 100% rename from glabels2/src/bc-iec16022.h rename to src/bc-iec16022.h diff --git a/glabels2/src/bc-iec18004.c b/src/bc-iec18004.c similarity index 100% rename from glabels2/src/bc-iec18004.c rename to src/bc-iec18004.c diff --git a/glabels2/src/bc-iec18004.h b/src/bc-iec18004.h similarity index 100% rename from glabels2/src/bc-iec18004.h rename to src/bc-iec18004.h diff --git a/glabels2/src/bc-postnet.c b/src/bc-postnet.c similarity index 100% rename from glabels2/src/bc-postnet.c rename to src/bc-postnet.c diff --git a/glabels2/src/bc-postnet.h b/src/bc-postnet.h similarity index 100% rename from glabels2/src/bc-postnet.h rename to src/bc-postnet.h diff --git a/glabels2/src/bc.c b/src/bc.c similarity index 100% rename from glabels2/src/bc.c rename to src/bc.c diff --git a/glabels2/src/bc.h b/src/bc.h similarity index 100% rename from glabels2/src/bc.h rename to src/bc.h diff --git a/glabels2/src/builder-util.c b/src/builder-util.c similarity index 100% rename from glabels2/src/builder-util.c rename to src/builder-util.c diff --git a/glabels2/src/builder-util.h b/src/builder-util.h similarity index 100% rename from glabels2/src/builder-util.h rename to src/builder-util.h diff --git a/glabels2/src/cairo-ellipse-path.c b/src/cairo-ellipse-path.c similarity index 100% rename from glabels2/src/cairo-ellipse-path.c rename to src/cairo-ellipse-path.c diff --git a/glabels2/src/cairo-ellipse-path.h b/src/cairo-ellipse-path.h similarity index 100% rename from glabels2/src/cairo-ellipse-path.h rename to src/cairo-ellipse-path.h diff --git a/glabels2/src/cairo-label-path.c b/src/cairo-label-path.c similarity index 100% rename from glabels2/src/cairo-label-path.c rename to src/cairo-label-path.c diff --git a/glabels2/src/cairo-label-path.h b/src/cairo-label-path.h similarity index 100% rename from glabels2/src/cairo-label-path.h rename to src/cairo-label-path.h diff --git a/glabels2/src/cairo-markup-path.c b/src/cairo-markup-path.c similarity index 100% rename from glabels2/src/cairo-markup-path.c rename to src/cairo-markup-path.c diff --git a/glabels2/src/cairo-markup-path.h b/src/cairo-markup-path.h similarity index 100% rename from glabels2/src/cairo-markup-path.h rename to src/cairo-markup-path.h diff --git a/glabels2/src/color-combo-button.c b/src/color-combo-button.c similarity index 100% rename from glabels2/src/color-combo-button.c rename to src/color-combo-button.c diff --git a/glabels2/src/color-combo-button.h b/src/color-combo-button.h similarity index 100% rename from glabels2/src/color-combo-button.h rename to src/color-combo-button.h diff --git a/glabels2/src/color-combo-color-menu-item.c b/src/color-combo-color-menu-item.c similarity index 100% rename from glabels2/src/color-combo-color-menu-item.c rename to src/color-combo-color-menu-item.c diff --git a/glabels2/src/color-combo-color-menu-item.h b/src/color-combo-color-menu-item.h similarity index 100% rename from glabels2/src/color-combo-color-menu-item.h rename to src/color-combo-color-menu-item.h diff --git a/glabels2/src/color-combo-history.c b/src/color-combo-history.c similarity index 100% rename from glabels2/src/color-combo-history.c rename to src/color-combo-history.c diff --git a/glabels2/src/color-combo-history.h b/src/color-combo-history.h similarity index 100% rename from glabels2/src/color-combo-history.h rename to src/color-combo-history.h diff --git a/glabels2/src/color-combo-menu.c b/src/color-combo-menu.c similarity index 100% rename from glabels2/src/color-combo-menu.c rename to src/color-combo-menu.c diff --git a/glabels2/src/color-combo-menu.h b/src/color-combo-menu.h similarity index 100% rename from glabels2/src/color-combo-menu.h rename to src/color-combo-menu.h diff --git a/glabels2/src/color-combo.c b/src/color-combo.c similarity index 100% rename from glabels2/src/color-combo.c rename to src/color-combo.c diff --git a/glabels2/src/color-combo.h b/src/color-combo.h similarity index 100% rename from glabels2/src/color-combo.h rename to src/color-combo.h diff --git a/glabels2/src/color-swatch.c b/src/color-swatch.c similarity index 100% rename from glabels2/src/color-swatch.c rename to src/color-swatch.c diff --git a/glabels2/src/color-swatch.h b/src/color-swatch.h similarity index 100% rename from glabels2/src/color-swatch.h rename to src/color-swatch.h diff --git a/glabels2/src/color.c b/src/color.c similarity index 100% rename from glabels2/src/color.c rename to src/color.c diff --git a/glabels2/src/color.h b/src/color.h similarity index 100% rename from glabels2/src/color.h rename to src/color.h diff --git a/glabels2/src/combo-util.c b/src/combo-util.c similarity index 100% rename from glabels2/src/combo-util.c rename to src/combo-util.c diff --git a/glabels2/src/combo-util.h b/src/combo-util.h similarity index 100% rename from glabels2/src/combo-util.h rename to src/combo-util.h diff --git a/glabels2/src/critical-error-handler.c b/src/critical-error-handler.c similarity index 100% rename from glabels2/src/critical-error-handler.c rename to src/critical-error-handler.c diff --git a/glabels2/src/critical-error-handler.h b/src/critical-error-handler.h similarity index 100% rename from glabels2/src/critical-error-handler.h rename to src/critical-error-handler.h diff --git a/glabels2/src/debug.c b/src/debug.c similarity index 100% rename from glabels2/src/debug.c rename to src/debug.c diff --git a/glabels2/src/debug.h b/src/debug.h similarity index 100% rename from glabels2/src/debug.h rename to src/debug.h diff --git a/glabels2/src/file-util.c b/src/file-util.c similarity index 100% rename from glabels2/src/file-util.c rename to src/file-util.c diff --git a/glabels2/src/file-util.h b/src/file-util.h similarity index 100% rename from glabels2/src/file-util.h rename to src/file-util.h diff --git a/glabels2/src/file.c b/src/file.c similarity index 100% rename from glabels2/src/file.c rename to src/file.c diff --git a/glabels2/src/file.h b/src/file.h similarity index 100% rename from glabels2/src/file.h rename to src/file.h diff --git a/glabels2/src/font-combo-menu-item.c b/src/font-combo-menu-item.c similarity index 100% rename from glabels2/src/font-combo-menu-item.c rename to src/font-combo-menu-item.c diff --git a/glabels2/src/font-combo-menu-item.h b/src/font-combo-menu-item.h similarity index 100% rename from glabels2/src/font-combo-menu-item.h rename to src/font-combo-menu-item.h diff --git a/glabels2/src/font-combo-menu.c b/src/font-combo-menu.c similarity index 100% rename from glabels2/src/font-combo-menu.c rename to src/font-combo-menu.c diff --git a/glabels2/src/font-combo-menu.h b/src/font-combo-menu.h similarity index 100% rename from glabels2/src/font-combo-menu.h rename to src/font-combo-menu.h diff --git a/glabels2/src/font-combo.c b/src/font-combo.c similarity index 100% rename from glabels2/src/font-combo.c rename to src/font-combo.c diff --git a/glabels2/src/font-combo.h b/src/font-combo.h similarity index 100% rename from glabels2/src/font-combo.h rename to src/font-combo.h diff --git a/glabels2/src/font-sample.c b/src/font-sample.c similarity index 100% rename from glabels2/src/font-sample.c rename to src/font-sample.c diff --git a/glabels2/src/font-sample.h b/src/font-sample.h similarity index 100% rename from glabels2/src/font-sample.h rename to src/font-sample.h diff --git a/glabels2/src/font-util.c b/src/font-util.c similarity index 100% rename from glabels2/src/font-util.c rename to src/font-util.c diff --git a/glabels2/src/font-util.h b/src/font-util.h similarity index 100% rename from glabels2/src/font-util.h rename to src/font-util.h diff --git a/glabels2/src/glabels-batch.c b/src/glabels-batch.c similarity index 100% rename from glabels2/src/glabels-batch.c rename to src/glabels-batch.c diff --git a/glabels2/src/glabels.c b/src/glabels.c similarity index 100% rename from glabels2/src/glabels.c rename to src/glabels.c diff --git a/glabels2/src/hig.h b/src/hig.h similarity index 100% rename from glabels2/src/hig.h rename to src/hig.h diff --git a/glabels2/src/label-barcode.c b/src/label-barcode.c similarity index 100% rename from glabels2/src/label-barcode.c rename to src/label-barcode.c diff --git a/glabels2/src/label-barcode.h b/src/label-barcode.h similarity index 100% rename from glabels2/src/label-barcode.h rename to src/label-barcode.h diff --git a/glabels2/src/label-box.c b/src/label-box.c similarity index 100% rename from glabels2/src/label-box.c rename to src/label-box.c diff --git a/glabels2/src/label-box.h b/src/label-box.h similarity index 100% rename from glabels2/src/label-box.h rename to src/label-box.h diff --git a/glabels2/src/label-ellipse.c b/src/label-ellipse.c similarity index 100% rename from glabels2/src/label-ellipse.c rename to src/label-ellipse.c diff --git a/glabels2/src/label-ellipse.h b/src/label-ellipse.h similarity index 100% rename from glabels2/src/label-ellipse.h rename to src/label-ellipse.h diff --git a/glabels2/src/label-image.c b/src/label-image.c similarity index 100% rename from glabels2/src/label-image.c rename to src/label-image.c diff --git a/glabels2/src/label-image.h b/src/label-image.h similarity index 100% rename from glabels2/src/label-image.h rename to src/label-image.h diff --git a/glabels2/src/label-line.c b/src/label-line.c similarity index 100% rename from glabels2/src/label-line.c rename to src/label-line.c diff --git a/glabels2/src/label-line.h b/src/label-line.h similarity index 100% rename from glabels2/src/label-line.h rename to src/label-line.h diff --git a/glabels2/src/label-object.c b/src/label-object.c similarity index 100% rename from glabels2/src/label-object.c rename to src/label-object.c diff --git a/glabels2/src/label-object.h b/src/label-object.h similarity index 100% rename from glabels2/src/label-object.h rename to src/label-object.h diff --git a/glabels2/src/label-text.c b/src/label-text.c similarity index 100% rename from glabels2/src/label-text.c rename to src/label-text.c diff --git a/glabels2/src/label-text.h b/src/label-text.h similarity index 100% rename from glabels2/src/label-text.h rename to src/label-text.h diff --git a/glabels2/src/label.c b/src/label.c similarity index 100% rename from glabels2/src/label.c rename to src/label.c diff --git a/glabels2/src/label.h b/src/label.h similarity index 100% rename from glabels2/src/label.h rename to src/label.h diff --git a/glabels2/src/marshal.list b/src/marshal.list similarity index 100% rename from glabels2/src/marshal.list rename to src/marshal.list diff --git a/glabels2/src/merge-evolution.c b/src/merge-evolution.c similarity index 100% rename from glabels2/src/merge-evolution.c rename to src/merge-evolution.c diff --git a/glabels2/src/merge-evolution.h b/src/merge-evolution.h similarity index 100% rename from glabels2/src/merge-evolution.h rename to src/merge-evolution.h diff --git a/glabels2/src/merge-init.c b/src/merge-init.c similarity index 100% rename from glabels2/src/merge-init.c rename to src/merge-init.c diff --git a/glabels2/src/merge-init.h b/src/merge-init.h similarity index 100% rename from glabels2/src/merge-init.h rename to src/merge-init.h diff --git a/glabels2/src/merge-properties-dialog.c b/src/merge-properties-dialog.c similarity index 100% rename from glabels2/src/merge-properties-dialog.c rename to src/merge-properties-dialog.c diff --git a/glabels2/src/merge-properties-dialog.h b/src/merge-properties-dialog.h similarity index 100% rename from glabels2/src/merge-properties-dialog.h rename to src/merge-properties-dialog.h diff --git a/glabels2/src/merge-text.c b/src/merge-text.c similarity index 100% rename from glabels2/src/merge-text.c rename to src/merge-text.c diff --git a/glabels2/src/merge-text.h b/src/merge-text.h similarity index 100% rename from glabels2/src/merge-text.h rename to src/merge-text.h diff --git a/glabels2/src/merge-vcard.c b/src/merge-vcard.c similarity index 100% rename from glabels2/src/merge-vcard.c rename to src/merge-vcard.c diff --git a/glabels2/src/merge-vcard.h b/src/merge-vcard.h similarity index 100% rename from glabels2/src/merge-vcard.h rename to src/merge-vcard.h diff --git a/glabels2/src/merge.c b/src/merge.c similarity index 100% rename from glabels2/src/merge.c rename to src/merge.c diff --git a/glabels2/src/merge.h b/src/merge.h similarity index 100% rename from glabels2/src/merge.h rename to src/merge.h diff --git a/glabels2/src/mini-label-preview.c b/src/mini-label-preview.c similarity index 100% rename from glabels2/src/mini-label-preview.c rename to src/mini-label-preview.c diff --git a/glabels2/src/mini-label-preview.h b/src/mini-label-preview.h similarity index 100% rename from glabels2/src/mini-label-preview.h rename to src/mini-label-preview.h diff --git a/glabels2/src/mini-preview-pixbuf-cache.c b/src/mini-preview-pixbuf-cache.c similarity index 100% rename from glabels2/src/mini-preview-pixbuf-cache.c rename to src/mini-preview-pixbuf-cache.c diff --git a/glabels2/src/mini-preview-pixbuf-cache.h b/src/mini-preview-pixbuf-cache.h similarity index 100% rename from glabels2/src/mini-preview-pixbuf-cache.h rename to src/mini-preview-pixbuf-cache.h diff --git a/glabels2/src/mini-preview-pixbuf.c b/src/mini-preview-pixbuf.c similarity index 100% rename from glabels2/src/mini-preview-pixbuf.c rename to src/mini-preview-pixbuf.c diff --git a/glabels2/src/mini-preview-pixbuf.h b/src/mini-preview-pixbuf.h similarity index 100% rename from glabels2/src/mini-preview-pixbuf.h rename to src/mini-preview-pixbuf.h diff --git a/glabels2/src/mini-preview.c b/src/mini-preview.c similarity index 100% rename from glabels2/src/mini-preview.c rename to src/mini-preview.c diff --git a/glabels2/src/mini-preview.h b/src/mini-preview.h similarity index 100% rename from glabels2/src/mini-preview.h rename to src/mini-preview.h diff --git a/glabels2/src/new-label-dialog.c b/src/new-label-dialog.c similarity index 100% rename from glabels2/src/new-label-dialog.c rename to src/new-label-dialog.c diff --git a/glabels2/src/new-label-dialog.h b/src/new-label-dialog.h similarity index 100% rename from glabels2/src/new-label-dialog.h rename to src/new-label-dialog.h diff --git a/glabels2/src/object-editor-bc-page.c b/src/object-editor-bc-page.c similarity index 100% rename from glabels2/src/object-editor-bc-page.c rename to src/object-editor-bc-page.c diff --git a/glabels2/src/object-editor-data-page.c b/src/object-editor-data-page.c similarity index 100% rename from glabels2/src/object-editor-data-page.c rename to src/object-editor-data-page.c diff --git a/glabels2/src/object-editor-edit-page.c b/src/object-editor-edit-page.c similarity index 100% rename from glabels2/src/object-editor-edit-page.c rename to src/object-editor-edit-page.c diff --git a/glabels2/src/object-editor-fill-page.c b/src/object-editor-fill-page.c similarity index 100% rename from glabels2/src/object-editor-fill-page.c rename to src/object-editor-fill-page.c diff --git a/glabels2/src/object-editor-image-page.c b/src/object-editor-image-page.c similarity index 100% rename from glabels2/src/object-editor-image-page.c rename to src/object-editor-image-page.c diff --git a/glabels2/src/object-editor-line-page.c b/src/object-editor-line-page.c similarity index 100% rename from glabels2/src/object-editor-line-page.c rename to src/object-editor-line-page.c diff --git a/glabels2/src/object-editor-lsize-page.c b/src/object-editor-lsize-page.c similarity index 100% rename from glabels2/src/object-editor-lsize-page.c rename to src/object-editor-lsize-page.c diff --git a/glabels2/src/object-editor-position-page.c b/src/object-editor-position-page.c similarity index 100% rename from glabels2/src/object-editor-position-page.c rename to src/object-editor-position-page.c diff --git a/glabels2/src/object-editor-private.h b/src/object-editor-private.h similarity index 100% rename from glabels2/src/object-editor-private.h rename to src/object-editor-private.h diff --git a/glabels2/src/object-editor-shadow-page.c b/src/object-editor-shadow-page.c similarity index 100% rename from glabels2/src/object-editor-shadow-page.c rename to src/object-editor-shadow-page.c diff --git a/glabels2/src/object-editor-size-page.c b/src/object-editor-size-page.c similarity index 100% rename from glabels2/src/object-editor-size-page.c rename to src/object-editor-size-page.c diff --git a/glabels2/src/object-editor-text-page.c b/src/object-editor-text-page.c similarity index 100% rename from glabels2/src/object-editor-text-page.c rename to src/object-editor-text-page.c diff --git a/glabels2/src/object-editor.c b/src/object-editor.c similarity index 100% rename from glabels2/src/object-editor.c rename to src/object-editor.c diff --git a/glabels2/src/object-editor.h b/src/object-editor.h similarity index 100% rename from glabels2/src/object-editor.h rename to src/object-editor.h diff --git a/glabels2/src/pixbuf-cache.c b/src/pixbuf-cache.c similarity index 100% rename from glabels2/src/pixbuf-cache.c rename to src/pixbuf-cache.c diff --git a/glabels2/src/pixbuf-cache.h b/src/pixbuf-cache.h similarity index 100% rename from glabels2/src/pixbuf-cache.h rename to src/pixbuf-cache.h diff --git a/glabels2/src/pixmaps/Makefile.am b/src/pixmaps/Makefile.am similarity index 100% rename from glabels2/src/pixmaps/Makefile.am rename to src/pixmaps/Makefile.am diff --git a/glabels1/src/pixmaps/checkerboard.xpm b/src/pixmaps/checkerboard.xpm similarity index 100% rename from glabels1/src/pixmaps/checkerboard.xpm rename to src/pixmaps/checkerboard.xpm diff --git a/glabels1/src/pixmaps/collate.xpm b/src/pixmaps/collate.xpm similarity index 100% rename from glabels1/src/pixmaps/collate.xpm rename to src/pixmaps/collate.xpm diff --git a/glabels1/src/pixmaps/cursor_barcode.xbm b/src/pixmaps/cursor_barcode.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_barcode.xbm rename to src/pixmaps/cursor_barcode.xbm diff --git a/glabels1/src/pixmaps/cursor_barcode_mask.xbm b/src/pixmaps/cursor_barcode_mask.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_barcode_mask.xbm rename to src/pixmaps/cursor_barcode_mask.xbm diff --git a/glabels1/src/pixmaps/cursor_box.xbm b/src/pixmaps/cursor_box.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_box.xbm rename to src/pixmaps/cursor_box.xbm diff --git a/glabels1/src/pixmaps/cursor_box_mask.xbm b/src/pixmaps/cursor_box_mask.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_box_mask.xbm rename to src/pixmaps/cursor_box_mask.xbm diff --git a/glabels1/src/pixmaps/cursor_ellipse.xbm b/src/pixmaps/cursor_ellipse.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_ellipse.xbm rename to src/pixmaps/cursor_ellipse.xbm diff --git a/glabels1/src/pixmaps/cursor_ellipse_mask.xbm b/src/pixmaps/cursor_ellipse_mask.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_ellipse_mask.xbm rename to src/pixmaps/cursor_ellipse_mask.xbm diff --git a/glabels1/src/pixmaps/cursor_image.xbm b/src/pixmaps/cursor_image.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_image.xbm rename to src/pixmaps/cursor_image.xbm diff --git a/glabels1/src/pixmaps/cursor_image_mask.xbm b/src/pixmaps/cursor_image_mask.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_image_mask.xbm rename to src/pixmaps/cursor_image_mask.xbm diff --git a/glabels1/src/pixmaps/cursor_line.xbm b/src/pixmaps/cursor_line.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_line.xbm rename to src/pixmaps/cursor_line.xbm diff --git a/glabels1/src/pixmaps/cursor_line_mask.xbm b/src/pixmaps/cursor_line_mask.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_line_mask.xbm rename to src/pixmaps/cursor_line_mask.xbm diff --git a/glabels1/src/pixmaps/cursor_text.xbm b/src/pixmaps/cursor_text.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_text.xbm rename to src/pixmaps/cursor_text.xbm diff --git a/glabels1/src/pixmaps/cursor_text_mask.xbm b/src/pixmaps/cursor_text_mask.xbm similarity index 100% rename from glabels1/src/pixmaps/cursor_text_mask.xbm rename to src/pixmaps/cursor_text_mask.xbm diff --git a/glabels1/src/pixmaps/nocollate.xpm b/src/pixmaps/nocollate.xpm similarity index 100% rename from glabels1/src/pixmaps/nocollate.xpm rename to src/pixmaps/nocollate.xpm diff --git a/glabels2/src/prefs-dialog.c b/src/prefs-dialog.c similarity index 100% rename from glabels2/src/prefs-dialog.c rename to src/prefs-dialog.c diff --git a/glabels2/src/prefs-dialog.h b/src/prefs-dialog.h similarity index 100% rename from glabels2/src/prefs-dialog.h rename to src/prefs-dialog.h diff --git a/glabels2/src/prefs-model.c b/src/prefs-model.c similarity index 100% rename from glabels2/src/prefs-model.c rename to src/prefs-model.c diff --git a/glabels2/src/prefs-model.h b/src/prefs-model.h similarity index 100% rename from glabels2/src/prefs-model.h rename to src/prefs-model.h diff --git a/glabels2/src/prefs.c b/src/prefs.c similarity index 100% rename from glabels2/src/prefs.c rename to src/prefs.c diff --git a/glabels2/src/prefs.h b/src/prefs.h similarity index 100% rename from glabels2/src/prefs.h rename to src/prefs.h diff --git a/glabels2/src/print-op-dialog.c b/src/print-op-dialog.c similarity index 100% rename from glabels2/src/print-op-dialog.c rename to src/print-op-dialog.c diff --git a/glabels2/src/print-op-dialog.h b/src/print-op-dialog.h similarity index 100% rename from glabels2/src/print-op-dialog.h rename to src/print-op-dialog.h diff --git a/glabels2/src/print-op.c b/src/print-op.c similarity index 100% rename from glabels2/src/print-op.c rename to src/print-op.c diff --git a/glabels2/src/print-op.h b/src/print-op.h similarity index 100% rename from glabels2/src/print-op.h rename to src/print-op.h diff --git a/glabels2/src/print.c b/src/print.c similarity index 100% rename from glabels2/src/print.c rename to src/print.c diff --git a/glabels2/src/print.h b/src/print.h similarity index 100% rename from glabels2/src/print.h rename to src/print.h diff --git a/glabels2/src/recent.c b/src/recent.c similarity index 100% rename from glabels2/src/recent.c rename to src/recent.c diff --git a/glabels2/src/recent.h b/src/recent.h similarity index 100% rename from glabels2/src/recent.h rename to src/recent.h diff --git a/glabels2/src/rotate-label-button.c b/src/rotate-label-button.c similarity index 100% rename from glabels2/src/rotate-label-button.c rename to src/rotate-label-button.c diff --git a/glabels2/src/rotate-label-button.h b/src/rotate-label-button.h similarity index 100% rename from glabels2/src/rotate-label-button.h rename to src/rotate-label-button.h diff --git a/glabels2/src/stock-pixmaps/Makefile.am b/src/stock-pixmaps/Makefile.am similarity index 100% rename from glabels2/src/stock-pixmaps/Makefile.am rename to src/stock-pixmaps/Makefile.am diff --git a/glabels2/src/stock-pixmaps/stock_align_bottom_16.png b/src/stock-pixmaps/stock_align_bottom_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_align_bottom_16.png rename to src/stock-pixmaps/stock_align_bottom_16.png diff --git a/glabels2/src/stock-pixmaps/stock_align_hcenter_16.png b/src/stock-pixmaps/stock_align_hcenter_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_align_hcenter_16.png rename to src/stock-pixmaps/stock_align_hcenter_16.png diff --git a/glabels2/src/stock-pixmaps/stock_align_left_16.png b/src/stock-pixmaps/stock_align_left_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_align_left_16.png rename to src/stock-pixmaps/stock_align_left_16.png diff --git a/glabels2/src/stock-pixmaps/stock_align_right_16.png b/src/stock-pixmaps/stock_align_right_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_align_right_16.png rename to src/stock-pixmaps/stock_align_right_16.png diff --git a/glabels2/src/stock-pixmaps/stock_align_top_16.png b/src/stock-pixmaps/stock_align_top_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_align_top_16.png rename to src/stock-pixmaps/stock_align_top_16.png diff --git a/glabels2/src/stock-pixmaps/stock_align_vcenter_16.png b/src/stock-pixmaps/stock_align_vcenter_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_align_vcenter_16.png rename to src/stock-pixmaps/stock_align_vcenter_16.png diff --git a/glabels2/src/stock-pixmaps/stock_arrow_16.png b/src/stock-pixmaps/stock_arrow_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_arrow_16.png rename to src/stock-pixmaps/stock_arrow_16.png diff --git a/glabels2/src/stock-pixmaps/stock_arrow_24.png b/src/stock-pixmaps/stock_arrow_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_arrow_24.png rename to src/stock-pixmaps/stock_arrow_24.png diff --git a/glabels2/src/stock-pixmaps/stock_barcode_16.png b/src/stock-pixmaps/stock_barcode_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_barcode_16.png rename to src/stock-pixmaps/stock_barcode_16.png diff --git a/glabels2/src/stock-pixmaps/stock_barcode_24.png b/src/stock-pixmaps/stock_barcode_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_barcode_24.png rename to src/stock-pixmaps/stock_barcode_24.png diff --git a/glabels2/src/stock-pixmaps/stock_box_16.png b/src/stock-pixmaps/stock_box_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_box_16.png rename to src/stock-pixmaps/stock_box_16.png diff --git a/glabels2/src/stock-pixmaps/stock_box_24.png b/src/stock-pixmaps/stock_box_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_box_24.png rename to src/stock-pixmaps/stock_box_24.png diff --git a/glabels2/src/stock-pixmaps/stock_bucket_fill_16.png b/src/stock-pixmaps/stock_bucket_fill_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_bucket_fill_16.png rename to src/stock-pixmaps/stock_bucket_fill_16.png diff --git a/glabels2/src/stock-pixmaps/stock_bucket_fill_24.png b/src/stock-pixmaps/stock_bucket_fill_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_bucket_fill_24.png rename to src/stock-pixmaps/stock_bucket_fill_24.png diff --git a/glabels2/src/stock-pixmaps/stock_center_horiz_16.png b/src/stock-pixmaps/stock_center_horiz_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_center_horiz_16.png rename to src/stock-pixmaps/stock_center_horiz_16.png diff --git a/glabels2/src/stock-pixmaps/stock_center_vert_16.png b/src/stock-pixmaps/stock_center_vert_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_center_vert_16.png rename to src/stock-pixmaps/stock_center_vert_16.png diff --git a/glabels2/src/stock-pixmaps/stock_ellipse_16.png b/src/stock-pixmaps/stock_ellipse_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_ellipse_16.png rename to src/stock-pixmaps/stock_ellipse_16.png diff --git a/glabels2/src/stock-pixmaps/stock_ellipse_24.png b/src/stock-pixmaps/stock_ellipse_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_ellipse_24.png rename to src/stock-pixmaps/stock_ellipse_24.png diff --git a/glabels2/src/stock-pixmaps/stock_flip_horiz_16.png b/src/stock-pixmaps/stock_flip_horiz_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_flip_horiz_16.png rename to src/stock-pixmaps/stock_flip_horiz_16.png diff --git a/glabels2/src/stock-pixmaps/stock_flip_vert_16.png b/src/stock-pixmaps/stock_flip_vert_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_flip_vert_16.png rename to src/stock-pixmaps/stock_flip_vert_16.png diff --git a/glabels2/src/stock-pixmaps/stock_hchain_24.png b/src/stock-pixmaps/stock_hchain_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_hchain_24.png rename to src/stock-pixmaps/stock_hchain_24.png diff --git a/glabels2/src/stock-pixmaps/stock_hchain_broken_24.png b/src/stock-pixmaps/stock_hchain_broken_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_hchain_broken_24.png rename to src/stock-pixmaps/stock_hchain_broken_24.png diff --git a/glabels2/src/stock-pixmaps/stock_image_16.png b/src/stock-pixmaps/stock_image_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_image_16.png rename to src/stock-pixmaps/stock_image_16.png diff --git a/glabels2/src/stock-pixmaps/stock_image_24.png b/src/stock-pixmaps/stock_image_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_image_24.png rename to src/stock-pixmaps/stock_image_24.png diff --git a/glabels2/src/stock-pixmaps/stock_line_16.png b/src/stock-pixmaps/stock_line_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_line_16.png rename to src/stock-pixmaps/stock_line_16.png diff --git a/glabels2/src/stock-pixmaps/stock_line_24.png b/src/stock-pixmaps/stock_line_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_line_24.png rename to src/stock-pixmaps/stock_line_24.png diff --git a/glabels2/src/stock-pixmaps/stock_merge_16.png b/src/stock-pixmaps/stock_merge_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_merge_16.png rename to src/stock-pixmaps/stock_merge_16.png diff --git a/glabels2/src/stock-pixmaps/stock_merge_24.png b/src/stock-pixmaps/stock_merge_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_merge_24.png rename to src/stock-pixmaps/stock_merge_24.png diff --git a/glabels2/src/stock-pixmaps/stock_order_bottom_16.png b/src/stock-pixmaps/stock_order_bottom_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_order_bottom_16.png rename to src/stock-pixmaps/stock_order_bottom_16.png diff --git a/glabels2/src/stock-pixmaps/stock_order_top_16.png b/src/stock-pixmaps/stock_order_top_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_order_top_16.png rename to src/stock-pixmaps/stock_order_top_16.png diff --git a/glabels2/src/stock-pixmaps/stock_pencil_16.png b/src/stock-pixmaps/stock_pencil_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_pencil_16.png rename to src/stock-pixmaps/stock_pencil_16.png diff --git a/glabels2/src/stock-pixmaps/stock_pencil_24.png b/src/stock-pixmaps/stock_pencil_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_pencil_24.png rename to src/stock-pixmaps/stock_pencil_24.png diff --git a/glabels2/src/stock-pixmaps/stock_properties_16.png b/src/stock-pixmaps/stock_properties_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_properties_16.png rename to src/stock-pixmaps/stock_properties_16.png diff --git a/glabels2/src/stock-pixmaps/stock_properties_24.png b/src/stock-pixmaps/stock_properties_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_properties_24.png rename to src/stock-pixmaps/stock_properties_24.png diff --git a/glabels2/src/stock-pixmaps/stock_rotate_left_16.png b/src/stock-pixmaps/stock_rotate_left_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_rotate_left_16.png rename to src/stock-pixmaps/stock_rotate_left_16.png diff --git a/glabels2/src/stock-pixmaps/stock_rotate_right_16.png b/src/stock-pixmaps/stock_rotate_right_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_rotate_right_16.png rename to src/stock-pixmaps/stock_rotate_right_16.png diff --git a/glabels2/src/stock-pixmaps/stock_text_16.png b/src/stock-pixmaps/stock_text_16.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_text_16.png rename to src/stock-pixmaps/stock_text_16.png diff --git a/glabels2/src/stock-pixmaps/stock_text_24.png b/src/stock-pixmaps/stock_text_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_text_24.png rename to src/stock-pixmaps/stock_text_24.png diff --git a/glabels2/src/stock-pixmaps/stock_vchain_24.png b/src/stock-pixmaps/stock_vchain_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_vchain_24.png rename to src/stock-pixmaps/stock_vchain_24.png diff --git a/glabels2/src/stock-pixmaps/stock_vchain_broken_24.png b/src/stock-pixmaps/stock_vchain_broken_24.png similarity index 100% rename from glabels2/src/stock-pixmaps/stock_vchain_broken_24.png rename to src/stock-pixmaps/stock_vchain_broken_24.png diff --git a/glabels2/src/stock.c b/src/stock.c similarity index 100% rename from glabels2/src/stock.c rename to src/stock.c diff --git a/glabels2/src/stock.h b/src/stock.h similarity index 100% rename from glabels2/src/stock.h rename to src/stock.h diff --git a/glabels2/src/str-util.c b/src/str-util.c similarity index 100% rename from glabels2/src/str-util.c rename to src/str-util.c diff --git a/glabels2/src/str-util.h b/src/str-util.h similarity index 100% rename from glabels2/src/str-util.h rename to src/str-util.h diff --git a/glabels2/src/template-designer.c b/src/template-designer.c similarity index 100% rename from glabels2/src/template-designer.c rename to src/template-designer.c diff --git a/glabels2/src/template-designer.h b/src/template-designer.h similarity index 100% rename from glabels2/src/template-designer.h rename to src/template-designer.h diff --git a/glabels2/src/text-node.c b/src/text-node.c similarity index 100% rename from glabels2/src/text-node.c rename to src/text-node.c diff --git a/glabels2/src/text-node.h b/src/text-node.h similarity index 100% rename from glabels2/src/text-node.h rename to src/text-node.h diff --git a/glabels2/src/ui-commands.c b/src/ui-commands.c similarity index 100% rename from glabels2/src/ui-commands.c rename to src/ui-commands.c diff --git a/glabels2/src/ui-commands.h b/src/ui-commands.h similarity index 100% rename from glabels2/src/ui-commands.h rename to src/ui-commands.h diff --git a/glabels2/src/ui-property-bar.c b/src/ui-property-bar.c similarity index 100% rename from glabels2/src/ui-property-bar.c rename to src/ui-property-bar.c diff --git a/glabels2/src/ui-property-bar.h b/src/ui-property-bar.h similarity index 100% rename from glabels2/src/ui-property-bar.h rename to src/ui-property-bar.h diff --git a/glabels2/src/ui-sidebar.c b/src/ui-sidebar.c similarity index 100% rename from glabels2/src/ui-sidebar.c rename to src/ui-sidebar.c diff --git a/glabels2/src/ui-sidebar.h b/src/ui-sidebar.h similarity index 100% rename from glabels2/src/ui-sidebar.h rename to src/ui-sidebar.h diff --git a/glabels2/src/ui-util.c b/src/ui-util.c similarity index 100% rename from glabels2/src/ui-util.c rename to src/ui-util.c diff --git a/glabels2/src/ui-util.h b/src/ui-util.h similarity index 100% rename from glabels2/src/ui-util.h rename to src/ui-util.h diff --git a/glabels2/src/ui.c b/src/ui.c similarity index 100% rename from glabels2/src/ui.c rename to src/ui.c diff --git a/glabels2/src/ui.h b/src/ui.h similarity index 100% rename from glabels2/src/ui.h rename to src/ui.h diff --git a/glabels2/src/view-barcode.c b/src/view-barcode.c similarity index 100% rename from glabels2/src/view-barcode.c rename to src/view-barcode.c diff --git a/glabels2/src/view-barcode.h b/src/view-barcode.h similarity index 100% rename from glabels2/src/view-barcode.h rename to src/view-barcode.h diff --git a/glabels2/src/view-box.c b/src/view-box.c similarity index 100% rename from glabels2/src/view-box.c rename to src/view-box.c diff --git a/glabels2/src/view-box.h b/src/view-box.h similarity index 100% rename from glabels2/src/view-box.h rename to src/view-box.h diff --git a/glabels2/src/view-ellipse.c b/src/view-ellipse.c similarity index 100% rename from glabels2/src/view-ellipse.c rename to src/view-ellipse.c diff --git a/glabels2/src/view-ellipse.h b/src/view-ellipse.h similarity index 100% rename from glabels2/src/view-ellipse.h rename to src/view-ellipse.h diff --git a/glabels2/src/view-image.c b/src/view-image.c similarity index 100% rename from glabels2/src/view-image.c rename to src/view-image.c diff --git a/glabels2/src/view-image.h b/src/view-image.h similarity index 100% rename from glabels2/src/view-image.h rename to src/view-image.h diff --git a/glabels2/src/view-line.c b/src/view-line.c similarity index 100% rename from glabels2/src/view-line.c rename to src/view-line.c diff --git a/glabels2/src/view-line.h b/src/view-line.h similarity index 100% rename from glabels2/src/view-line.h rename to src/view-line.h diff --git a/glabels2/src/view-object.c b/src/view-object.c similarity index 100% rename from glabels2/src/view-object.c rename to src/view-object.c diff --git a/glabels2/src/view-object.h b/src/view-object.h similarity index 100% rename from glabels2/src/view-object.h rename to src/view-object.h diff --git a/glabels2/src/view-text.c b/src/view-text.c similarity index 100% rename from glabels2/src/view-text.c rename to src/view-text.c diff --git a/glabels2/src/view-text.h b/src/view-text.h similarity index 100% rename from glabels2/src/view-text.h rename to src/view-text.h diff --git a/glabels2/src/view.c b/src/view.c similarity index 100% rename from glabels2/src/view.c rename to src/view.c diff --git a/glabels2/src/view.h b/src/view.h similarity index 100% rename from glabels2/src/view.h rename to src/view.h diff --git a/glabels2/src/warning-handler.c b/src/warning-handler.c similarity index 100% rename from glabels2/src/warning-handler.c rename to src/warning-handler.c diff --git a/glabels2/src/warning-handler.h b/src/warning-handler.h similarity index 100% rename from glabels2/src/warning-handler.h rename to src/warning-handler.h diff --git a/glabels2/src/wdgt-chain-button.c b/src/wdgt-chain-button.c similarity index 100% rename from glabels2/src/wdgt-chain-button.c rename to src/wdgt-chain-button.c diff --git a/glabels2/src/wdgt-chain-button.h b/src/wdgt-chain-button.h similarity index 100% rename from glabels2/src/wdgt-chain-button.h rename to src/wdgt-chain-button.h diff --git a/glabels2/src/wdgt-media-select.c b/src/wdgt-media-select.c similarity index 100% rename from glabels2/src/wdgt-media-select.c rename to src/wdgt-media-select.c diff --git a/glabels2/src/wdgt-media-select.h b/src/wdgt-media-select.h similarity index 100% rename from glabels2/src/wdgt-media-select.h rename to src/wdgt-media-select.h diff --git a/glabels2/src/wdgt-merge-menu.c b/src/wdgt-merge-menu.c similarity index 100% rename from glabels2/src/wdgt-merge-menu.c rename to src/wdgt-merge-menu.c diff --git a/glabels2/src/wdgt-merge-menu.h b/src/wdgt-merge-menu.h similarity index 100% rename from glabels2/src/wdgt-merge-menu.h rename to src/wdgt-merge-menu.h diff --git a/glabels2/src/window.c b/src/window.c similarity index 100% rename from glabels2/src/window.c rename to src/window.c diff --git a/glabels2/src/window.h b/src/window.h similarity index 100% rename from glabels2/src/window.h rename to src/window.h diff --git a/glabels2/src/xml-label-04.c b/src/xml-label-04.c similarity index 100% rename from glabels2/src/xml-label-04.c rename to src/xml-label-04.c diff --git a/glabels2/src/xml-label-04.h b/src/xml-label-04.h similarity index 100% rename from glabels2/src/xml-label-04.h rename to src/xml-label-04.h diff --git a/glabels2/src/xml-label.c b/src/xml-label.c similarity index 100% rename from glabels2/src/xml-label.c rename to src/xml-label.c diff --git a/glabels2/src/xml-label.h b/src/xml-label.h similarity index 100% rename from glabels2/src/xml-label.h rename to src/xml-label.h diff --git a/glabels2/templates/Makefile.am b/templates/Makefile.am similarity index 100% rename from glabels2/templates/Makefile.am rename to templates/Makefile.am diff --git a/glabels2/templates/avery-iso-templates.xml b/templates/avery-iso-templates.xml similarity index 100% rename from glabels2/templates/avery-iso-templates.xml rename to templates/avery-iso-templates.xml diff --git a/glabels2/templates/avery-other-templates.xml b/templates/avery-other-templates.xml similarity index 100% rename from glabels2/templates/avery-other-templates.xml rename to templates/avery-other-templates.xml diff --git a/glabels2/templates/avery-us-templates.xml b/templates/avery-us-templates.xml similarity index 100% rename from glabels2/templates/avery-us-templates.xml rename to templates/avery-us-templates.xml diff --git a/glabels2/templates/brother-other-templates.xml b/templates/brother-other-templates.xml similarity index 100% rename from glabels2/templates/brother-other-templates.xml rename to templates/brother-other-templates.xml diff --git a/glabels2/templates/categories.xml b/templates/categories.xml similarity index 100% rename from glabels2/templates/categories.xml rename to templates/categories.xml diff --git a/glabels2/templates/dymo-other-templates.xml b/templates/dymo-other-templates.xml similarity index 100% rename from glabels2/templates/dymo-other-templates.xml rename to templates/dymo-other-templates.xml diff --git a/glabels2/templates/glabels-2.2.dtd b/templates/glabels-2.2.dtd similarity index 100% rename from glabels2/templates/glabels-2.2.dtd rename to templates/glabels-2.2.dtd diff --git a/glabels2/templates/misc-iso-templates.xml b/templates/misc-iso-templates.xml similarity index 100% rename from glabels2/templates/misc-iso-templates.xml rename to templates/misc-iso-templates.xml diff --git a/glabels2/templates/misc-other-templates.xml b/templates/misc-other-templates.xml similarity index 100% rename from glabels2/templates/misc-other-templates.xml rename to templates/misc-other-templates.xml diff --git a/glabels2/templates/misc-us-templates.xml b/templates/misc-us-templates.xml similarity index 100% rename from glabels2/templates/misc-us-templates.xml rename to templates/misc-us-templates.xml diff --git a/glabels2/templates/paper-sizes.xml b/templates/paper-sizes.xml similarity index 100% rename from glabels2/templates/paper-sizes.xml rename to templates/paper-sizes.xml diff --git a/glabels2/templates/zweckform-iso-templates.xml b/templates/zweckform-iso-templates.xml similarity index 100% rename from glabels2/templates/zweckform-iso-templates.xml rename to templates/zweckform-iso-templates.xml diff --git a/web/common_php.inc b/web/common_php.inc deleted file mode 100644 index b2a40375..00000000 --- a/web/common_php.inc +++ /dev/null @@ -1,255 +0,0 @@ -\n"; - ?> - -"; - print "root_dir = \"$root_dir\"
    "; - print "htroot = \"$htroot\"
    "; - print "root = \"$root\"
    "; - } - - #------------------------------------------------------- - # Print root URL - #------------------------------------------------------- - function root() - { - global $root; - - print $root; - } - - #------------------------------------------------------- - # Construct and print img tag - #------------------------------------------------------- - function img($src, $alt) - { - global $root; - global $root_dir; - - if (substr($src,0,1) == "/") { - $size = GetImageSize("$root_dir$src"); - print "\"$alt\""; - } else { - $size = GetImageSize("$src"); - print "\"$alt\""; - } - } - - #------------------------------------------------------- - # Construct and print img tag with explicit size, NULL alt - #------------------------------------------------------- - function img_size($src, $w, $h) - { - global $root; - - $alt = ""; - - if (substr($src,0,1) == "/") { - print "\"$alt\""; - } else { - print "\"$alt\""; - } - } - - #------------------------------------------------------- - # Construct and print link (a) tag - #------------------------------------------------------- - function a($href, $text) - { - global $root; - - if (substr($href,0,1) == "/") { - print "
    $text"; - } else { - print "$text"; - } - } - - #------------------------------------------------------- - # Construct and print link (a) tag to a downloadable file - #------------------------------------------------------- - function a_file($href) - { - global $root; - - $text = basename($href); - - if (substr($href,0,1) == "/") { - print "$text"; - } else { - print "$text"; - } - } - - #------------------------------------------------------- - # Construct and print link (a) tag to a sf dl file - #------------------------------------------------------- - function a_sfdownload($file) - { - print "$file"; - } - - #------------------------------------------------------- - # Construct and print link (a) tag to a web address - #------------------------------------------------------- - function a_host($host) - { - global $root; - - print "$host"; - } - - #------------------------------------------------------- - # Construct and print mailto (a) tag - #------------------------------------------------------- - function a_mailto($email) - { - print "$email"; - } - - #------------------------------------------------------- - # Common Header and navigation - #------------------------------------------------------- - function gLabelsHeader($tab) - { - global $root; - - $tabs["$root/"] = "home"; - $tabs["$root/news/"] = "news"; - $tabs["$root/screenshots/"] = "screenshots"; - $tabs["$root/download/"] = "download"; - $tabs["$root/doc/"] = "docs"; - $tabs["$root/faq/"] = "FAQ"; - $tabs["$root/contact/"] = "contact"; - $tabs["$root/links/"] = "links"; - -?> - - - - - - - - - gLabels - - - - - - - -
     
    - -
    - - - - - - -
    - -
    -
     
    -
     
    -
    - - - - - - - - -
    -
     
    -
     
    - - - -
    - - - - - - - - diff --git a/web/contact/index.php b/web/contact/index.php deleted file mode 100644 index 6a6fa1c4..00000000 --- a/web/contact/index.php +++ /dev/null @@ -1,87 +0,0 @@ - - - - -

    Contact ...

    - -

    Reporting bugs

    -

    Please report any bugs you find in gLabels at the -. -You may also join the to discuss -the problem more directly (please submit all bugs to the tracker as well). -

    -

    Please consult the following checklist when reporting a bug. -

    -
      -
    1. Verify that you are not experiencing a known bug or limitation by consulting the .
    2. -
    3. Verify that the bug is not a duplicate of an existing bug by searching the tracker. If you have additional information - on an existing bug, please add your information to the existing bug. If you - are not using the latest version of glabels, you should also look for closed - bugs since the problem may have already been resolved.
    4. -
    5. Please provide complete information: -
        -
      • version of gLabels
      • -
      • platform (operating system, version, and CPU)
      • -
      • detailed steps to reproduce the problem
      • -
      • sample file(s) (if appropriate)
      • -
      • screenshots (if appropriate)
      • -
      • locale (very important for i18n issues, e.g. problems with special characters)
      • -
      -
    6. -
    7. If this is a crash, it is important to submit a backtrace. Use gdb to get a backtrace as follows: -
      $ gdb glabels -GNU gdb ... - -(gdb) run - (Carry out the actions to make glabels crash) -(gdb) bt - (copy and paste all of this to your bug report) -(gdb) quit -$
      -
    8. - -
    - -

    Feature Requests

    -Feature requests should be submitted to the -. - -

    Mailing Lists

    -
      -
    • Developers list: -
        -
      • -
      • -
      -
    • -
    - -
      -
    • Template designers list: -
        -
      • -
      • -
      -
    • -
    - -
      -
    • Automated commit list: glabels-commit@lists.sourceforge.net -
        -
      • -
      • -
      -
    • -
    - - - -

    Want to help?

    -

    -Please start by joining one or both of the above mailing lists. -

    - - - - - diff --git a/web/css/glabels.css b/web/css/glabels.css deleted file mode 100644 index daecf0ba..00000000 --- a/web/css/glabels.css +++ /dev/null @@ -1,388 +0,0 @@ -/* GLABELS.CSS */ - - -/* -------------- Global --------------- */ -body { - font-family : Verdana, Verdana, Arial, Helvetica, sans-serif; - font-size : 77%; - background-color : #EEEAE4; - color : #000000; - margin : 0; -} - - -/****************************************/ -/* Basic layout. */ -/****************************************/ - -/* -------------- Title --------------- */ -#title { - padding: 0; - position: absolute; - top:0px; - left: 0px; - width: 150px; - height: 60px; - margin-top: 30px; - margin-left: 10px; - margin-right: 10px; - background: url("/images/glabels-title-140.png") top center no-repeat; -} - -/* -------------- Navigation --------------- */ -#nav { - padding: 0; - position: absolute; - top: 90px; - left: 0; - width: 150px; - margin-top: 30px; - margin-left: 10px; - margin-right: 10px; -} - -#nav ul { - margin: 0; - padding: 0; - background-color: #EEEAE4; -} - -#nav li { - font-weight: bold; - margin: 0; - list-style: none; - padding: 0 0 1px 0; - line-height: 1.0; -} - -#nav span { - line-height: 1.0; - color: #333333; - display: block; - border: solid 1px #DDD9D4; - margin: 0; - border-top-color: #FFFFFF; - border-left-color: #FFFFFF; - background: #F3F0EC; - padding: 5px 10px 5px 0.5em; -} - -#nav :link, #nav :visited { - line-height: 1.0; - color: #993333; - display: block; - text-decoration: none; - border: solid 1px #EEEAE4; - margin: 0; - padding: 5px 10px 5px 0.5em; - background: transparent url(/images/button-bg.png) top right repeat-y; -} - -#nav :link:hover, #nav :visited:hover { - color: #FF0000; - border: solid 1px #DDD9D4; - border-top-color: #FFFFFF; - border-left-color: #FFFFFF; - background: #F3F0EC; -} - -#nav :link:active, #nav :visited:active { - background: #FFFFFF; -} - -/* -------------- Sourceforge link --------------- */ -#sflink { - padding: 0; - position: absolute; - top: 350px; - left: 0; - width: 150px; - margin-top: 30px; - margin-left: 10px; - margin-right: 10px; - text-align: center; -} - -/* -------------- Main flow --------------- */ -#main { - font-size: 0.9em; - position: absolute; - top:0px; - left: 160px; - width: auto; - min-width: 440px; - margin-top: 10px; - margin-left: 10px; - margin-right: 20px; - padding-right: 20px; - background-color : #EEEAE4; -} - -.tlcorner, .trcorner, .blcorner, .brcorner { - background-color : #EEEAE4; - width: 19px; - height: 19px; -} - -.tlcorner, .blcorner { float: left; left: 0px; } -.trcorner, .brcorner { float: right; right: 0px; } -.tlcorner, .trcorner { top: 0px; } -.blcorner, .brcorner { bottom: 0px; margin-top: -19px; top: -18px;} - -.tlcorner { background: #EEEAE4 url("/images/corner-tl.png") no-repeat left top; } -.trcorner { background: #EEEAE4 url("/images/corner-tr.png") no-repeat right top; } -.blcorner { background: #EEEAE4 url("/images/corner-bl.png") no-repeat left bottom; } -.brcorner { background: #EEEAE4 url("/images/corner-br.png") no-repeat right bottom; } - -/* -------------- Main content --------------- */ -#content { - padding: 24px; - border: 1px solid #aaa; - background-color : #FFFFFF; -} - -/* -------------- Footer --------------- */ -#footer { - padding: 0; - margin-top: 20px; - margin-right: 10px; - margin-left: 10px; - margin-bottom: 70px; - font-weight:400; -} - -#copy { - top: 2px; - text-align: left; - float: left; - padding-right: 10px; - color : #666666; -} - -#copy>a:link { - color : #003366; -} - -#copy>a:visited { - color : #003366; -} - -#copy>a:hover { - color : #666666; -} - -#w3clinks { - top: 2px; - right: 0px; - float: right; - text-align: right; - padding-left: 20px; -} - - -/****************************************/ -/* Special content. */ -/****************************************/ - -/* -------------- News --------------- */ -.newsitem { - margin:20px 0px 10px 0px; - font-family : Verdana, Arial, Helvetica, sans-serif; - font-size : 10pt; - text-align: left; - color:#000000; -} - -.newsdate { - margin:0px 0px 3px 0px; - font-size:14px; - text-align: left; - color:#993333; -} - -.newstitle { - margin:3px 0px 6px 0px; - padding:0px; - font-size:16px; - line-height:20px; - font-weight:900; - color:#000000; -} - -/* -------------- Pre-formatted code box --------------- */ -.codebox { - margin:0px 0px 16px 0px; - padding:5px 5px 5px 5px; - border-style:solid; - border-color:#000000; - border-width:1px; - background-color:#FFFFF0; - font:11px/14px courier, monospace; - white-space: pre; -} - -/* -------------- Newest/latest item --------------- */ -.latest { - font-family : Verdana, Arial, Helvetica, sans-serif; - font-weight:900; -} - -.latest>a:link { - color : #FF0000; -} - -.latest>a:visited { - color : #FF0000; -} - -.latest>a:hover { - color : #666666; -} - -/* -------------- Top level headers --------------- */ -h1 { - padding-left: 70px; - padding-top:6px; - margin-top:15px; - line-height: 58px; - font-size:28px; - text-align: left; - font-weight:900; - color:#333399; - border-bottom-style: solid; - border-bottom-width: 1px; - border-bottom-color: #999999; -} - -h1.about { - background: url(/tango-icons/dialog-information.png) top left no-repeat; -} - -h1.news { - background: url(/tango-icons/internet-news-reader.png) top left no-repeat; -} - -h1.screenshots { - background: url(/tango-icons/emblem-photos.png) top left no-repeat; -} - -h1.download { - background: url(/tango-icons/package-x-generic.png) top left no-repeat; -} - -h1.development { - background: url(/tango-icons/applications-development.png) top left no-repeat; -} - -h1.doc { - background: url(/tango-icons/help-browser.png) top left no-repeat; -} - -h1.contact { - background: url(/tango-icons/system-users.png) top left no-repeat; -} - -h1.links { - background: url(/tango-icons/applications-internet.png) top left no-repeat; -} - - -/****************************************/ -/* Basic tags. */ -/****************************************/ - -h2 { - margin:28px 0px 4px 0px; - padding:0px; - font-size:18px; - line-height:20px; - font-weight:900; -} - -h3 { - margin:16px 0px 4px 0px; - padding:0px; - font-size:14px; - line-height:20px; - font-weight:900; -} - -h4 { - margin:16px 0px 6px 0px; - padding:0px; - font-size:12px; - line-height:20px; - font-weight:900; -} - -h5 { - margin:16px 0px 6px 0px; - padding:0px; - font-size:10px; - line-height:20px; - font-weight:900; -} - - -p { - margin-top: 8px; - margin-bottom: 8px; - font-family : Verdana, Arial, Helvetica, sans-serif; - font-size : 10pt; - text-align: left; -} - -a:link { - color : #006699; -} - -a:visited { - color : #006699; -} - -a:hover { - color : #000000; -} - -td { - font-family : Verdana, Arial, Helvetica, sans-serif; - font-size : 10pt; -} - -li { - font-family : Verdana, Arial, Helvetica, sans-serif; - font-size : 10pt; - color : #000000; -} - - - -/****************************************/ -/* Modifying classes. */ -/****************************************/ - -.noborder { - border:0; -} - -.center { - text-align: center; -} - -/****************************************/ -/* FAQ */ -/****************************************/ -div.faqtoc { - margin:0px 0px 16px 0px; - padding:5px 5px 5px 5px; - border-style:solid; - border-color:#000000; - border-width:1px; - background-color:#FFFFF0; -} - -.faqtocline { list-style: none; } - -div.faqanswer { - margin-left:4em; -} diff --git a/web/doc/glabels-2.0.dtd.txt b/web/doc/glabels-2.0.dtd.txt deleted file mode 100644 index fb8fa47d..00000000 --- a/web/doc/glabels-2.0.dtd.txt +++ /dev/null @@ -1,329 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web/doc/glabels-2.2.dtd.txt b/web/doc/glabels-2.2.dtd.txt deleted file mode 100644 index 183df8b6..00000000 --- a/web/doc/glabels-2.2.dtd.txt +++ /dev/null @@ -1,380 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web/doc/index.php b/web/doc/index.php deleted file mode 100644 index 59053f75..00000000 --- a/web/doc/index.php +++ /dev/null @@ -1,38 +0,0 @@ - - - - -

    Documentation ...

    - - - - -

    Installing gLabels from source

    -

    -The easiest way to install glabels is to use you distribution's package repository. However, if the version -offered by your distribution is not the latest stable version, you may wish to install it manually from -source. -

    -
      -
    • -
    - - - -

    Customizing

    -

    -gLabels knows about a small universe of label/card stationery. You may create new templates by using the Template Designer under the File menu. -

    -

    -If for some reason you wish to manually create templates, please read the appropriate page below. New templates can be mailed to - -for possible inclusion in future releases of gLabels. -

    -
      -
    • -
    - - - - - diff --git a/web/doc/install-src/index.php b/web/doc/install-src/index.php deleted file mode 100755 index 5ef4227c..00000000 --- a/web/doc/install-src/index.php +++ /dev/null @@ -1,64 +0,0 @@ - - - - -

    Installing gLabels from Source

    - -

    -The following outlines how to install glabels from source on various GNU/Linux distributions. -

    - - -

    Prerequisites

    - -

    -Dependencies will need to be installed as root. -Although dependecies can be installed using your distribution's graphical package manager, the directions below use command line tools because it is easier to convey. -

    - -

    Fedora and similar distributions

    -
    $ su -Password: -# yum groupinstall "Development Tools" -# yum groupinstall "GNOME Software Development" -
    - -

    Ubuntu and similar distributions

    -
    $ sudo apt-get install libgtk2.0-dev libgnomeui-dev libxml2-dev libglade2-dev -$ sudo apt-get install libebook1.2-dev (optional) -
    - -

    -The exact dependencies and their names may vary with different distributions and versions. There may also be additional dependencies depending on the baseline configuation of your distribution. If ./configure in the following step complains, you may need to return to this step and install additional dependencies. -

    - - -

    Unpack and Build

    - -

    This step should not vary with distribution.

    - -
    $ tar xvfz glabels-2.2.x.tar.gz -$ cd glabels-2.2.x -$ ./configure -$ make -
    - - -

    Install

    - -

    -Installation will need to be done as root. -

    - -

    Fedora and similar distributions

    -
    $ su -Password: -# make install -
    - -

    Ubuntu and similar distributions

    -
    $ sudo make install -
    - - - diff --git a/web/doc/templates-2.0/glabels-template-cd.png b/web/doc/templates-2.0/glabels-template-cd.png deleted file mode 100644 index 0a3de3bfaf31c0e831f7232e93c963acfda8e347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9930 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 diff --git a/web/doc/templates-2.0/glabels-template-label.png b/web/doc/templates-2.0/glabels-template-label.png deleted file mode 100644 index 87a724b9dcba29b59f807007af9f7469b82033b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3115 zcmcgu`#%%hADZXuWP z3=<(OElEO>7-l3IVtn^J-`DH=CwxCYobx%KbI#|S*E#Rk=l!N!v_b6`R}cpP0Q)V_ zNDKfVBqs1FVtWMbHOVt>f(}SDwZMvriH%L!egyy|rY(>r*ocSRiH;xzZ+X!lNk_B& zN1h##P0r9VJ8%%GVkL93@tJkJs!Oeb9n_9R4>Jt4He+uPgebeGEEolSOO+%CU)djFnKJb|#dI%q`FFE~y0_w)0Mii*PHXW!(W zEeNtZ2X@YpNa)($-j=&YX3^v1jMpRSUp6;4-RmF&Ki$@e`76>MK|z|-fr-{I&ddOn zKpAAW1y7kmWc1^9{vP9o>nYik6GKB^c<*B7C@FH9>UZi}Tm8aO`i`|Dr0{UR#?Nh} z)l(+aFULEH^S zyLy^B;1#afT8mZJfI`WeGgLxHSlfi8%6V8z;1&*@A#)&U^a(#U4xS&Nt$^adK=&=n zx^{@CvhR$>%u~!u)0udFtkITt;!8J+jL$X0$K^ZtJjGL~uX=l_RI0(#VO;02OpB&o zaHd7W*82W!31>!t12W1!22klI>W@zXXJ zY^zJFE?HMtmc8%m6O+E~uO0wH+Ib$9d3C3_yrL9pZ+)f&QlDqp(Ja9Xdd(TBt-aP^ zgCs3~p@+_6#)wCPtE#K2J9avSro>RtuD&904?3m!Z;QbK@No*vgMsC=5L(eV-=ZFMoz{6?X~tRrG9pDaYT$$hVLg@cEruZZKEp?fyT zt~p-Cmu>j<`-0e_6k8#l_C_U%auJdj!ytN-9QKiS&N)wesRe zbl2C0C>WpxssM7}YHONU0GR^!No2SiS;IQ|p|Fyr!$UIBH&G&t#8yH0y%mYBDvZz; zH9vdFQPF?rHiL!l{`Bb+x(vg>JvXAym(LCb{N`hJW5Psrihys&ua68v&-qNhJIcVp zvMmD$gckw*MtSXZb#?Xs8jaQ;0C?$n{kol9mHh7O- z2JS@xd3Df3c+X8wtz4_)!?)L7v;p`mHA#h*jX$8;?(z(C&|lXM?g^F>2HpTN0BTBA zBPK9_o)idh;J=Zt#{Y+5)ZE5SD_~c5qx0Jb<<`Lt6Yr0l1-EX%y+Horx|^>1kFYJ6 z)IZRGloh4Q&RDOWXr3KyGP5HBd7r+@^5Tlxd(GtHg{nUh;9-OQvEw{j-bPU#s=@gi zmoG{`ErF>$@uy&Gwrt^gUik;fou(FPt&P^0Thc)NP_kr?!cClUlGX0T<&#;Mcl!dT zJR3&uf{x~ei4wmvl7+|%jKW#p(A72L!u`yvS67XVZq5dlb2$r+^F5yuaDc+tz=@_* zM)_r3*w0q;rZ^;|tkW|_kM~*Vt~~A@g9g1L!2l3Jcoi(9?0+xo;d9IFhvy-{$U6~_ zPIfqO?{fB+cOt;Akk+^sUeP7~IA?FmfDZL1M{`^^gabnCor1Kgg2I|-zuYj@2nuE` zujPr=F%@WGB8NbFcT{pPAyj$m(S+-}HwUCiF`SD}eGNm8BSzFEQ(i6KprJrc()c<3g~W5)xZG zlGa|$WHL*GggcQ?F_kpb#@diA#mC#5oqXl0i;JMR);2dawZ1a|WPb3|QL7&%#1GA5 zcb7gbEcj_F@cHYLbk`t~z8FpfZmOqrfH4yy&9XzxJFBZ0#cnfoCqt`m0q{7JVA|EL z4sR@q}cbfPm^-)lVxP6clg+cL7$6c$lG~hLx@D zA-g)K^NYvti_0URV#OEHdeOY95l+nNEVIFT@N(6~+L7s%h*B0VPVF#^{KznxH_KG4 z9f{^GI-5w{KIK>=#VSRmU9KYT?(nb0@pTkZ;R^c&Cm&4d%s%BPY$BCBx3%2i{g;>X zY>gmS+|H)ATGY?){mqlHDcH^*>0Y^ek1C`dYy*4Z@%WGsOvdA@r+Z!4JN&Jn$#$n)i2J?wTPwr?gR18i+$6Z>n}@v-ZvY&1C8$JckBzqOus_`{T`Jw(RIdYF0u zxHi7EzD&)@nY$o`-fs?-HHi7Ww#ptrWDeU_PTxTIlRc%HoRV{?^V zZd-V-$9*d$OR|0xDs63Lg{`y?n_60`>78Z~dZt$deBezYIo_Ox%7Ye2>BdKJ;T^xL zFIU@GSxMQ!^X=s@#FSt?D`Ywv=@PuykAbNRvE|GfzlU+{!ARR5_q1B|gn#6ts*P^U`M=7Ew3G)eRgs1}8pv zl2?yawpY(KH#bj)6xeVIXM_cHG2*-pvb41HH<$rqVK05GC`H;SDJmWv9B*W8B$E!eJJ+uG0_(GCutU$Aj!?$s;`Ov%=MQiXuUqqtBOJwzv zs*5Q5O8aooYkb4?QxN;gf37pgMxjs?A2OL78A;oWkOhf0<|!=cTjtCNY-Qy-9M#8O ztsZOMCt#)waLoDyX^}1<`%wa~h$VXOBz0gWg!X31tX5kgl>q0gZ;c|94kYQI@U+jO zw<3Rh6>2khm@LqMwnlucdiK4KZt^k>{~CV1WJ{oby1L>A*&bWfV_Z1G4biRZw8Z5K zGG1v8q?0!>)_n;Qa;C-a1b;sf*!*%TSihiZE#BjMuWB4vE&Lhh!Lt#Lfq_BeW$r{9 z$+i%oK^+i)w;XJ-INIOeFAzQ{JvI+v+r#-u*2U0)1XH)zSe3~vAn+~c*W1BCIq`%8 cv#)lAjMY_?k(K^l0`(8DFtb6{nBwC91G#MJr~m)} diff --git a/web/doc/templates-2.0/glabels-template-layout.png b/web/doc/templates-2.0/glabels-template-layout.png deleted file mode 100644 index c71279520eb56db0701e359666bfb403f1b3e953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6012 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

    y@R+U8kVSirP1EH-|6a`3cfyvNg}eBM*WXLD+@ zIrtZlh|%&{)_krt0f15g?34v1ZEMDX3_bbbT;}H`2t*MA!NA0Xc_b@j30V0T2_5W% zKf#F+DbS~NW;90f1|KuV+AnrzFvfCSzkZ#A`^(CKjvGkrrlwP5bN%;*~*-Q^u z-wrrN$KI@Sbaal5P!qE%CxgJip8)?VSsh!5b^s^v)9KQOpZ@IVY5V$hW30mQa2pE< zq=3y*Pfy(G`%O;|Gh0l&ePyh5lE#Av5B&Z80bosNj9wCvkl*0pVV8%ed$`}Z6V~Hk z+jxVFl9pDGpWjwAL!A$rDJUcq54ulXQ**7nCR&L{RGmy=EV`(qq@=FSYR(mUFx$}r2iqTRxPk)?F2(Vl6W1jP+e!sxH=RKf9b``9jQ zlE2{RwWiLuccQ#ECZrv@(*Z?THuydTH}=wX>HOM{sxCd1W3u>p82|T25}&-+SIQAt zasf~gkuAnwQef(+d3g~4E53X8&OP!KBU*pgzwyf~Jt-#)W{w^bt4GKVpZZV53$JlC zeKS&4R8-{Txc~G26E(msV}L3lvFLXtBN1cF?klmC#rFMXvhT7->2jM8`k@Fr^a;>)agt@ zNM-jP9QZOOzlwnYC$~1;jKuk&nC4dBzkh%Er;-ErSv3v@^6v?7^K0tq>3MoeV84OX z08AUsary8xIaetzf4dM}x5?TOhO%dp-XKtu5H@o{Ut26+M0 zzB9#jvi^l^1NDbvF1%~ar{9*l8RQ9eVn7)9%09;(UgFV~VvE-BHwS3C)CIGhJa! zpnbcBPF?hOdPK3&rKWc$>5?FQAG-LLiJg*xqGNu!fLD!vS!b+!pr0 zN9w@v%D{OKMs!R9(b;6v9<#l@Eo%EUTHgFbAM}RCy?gx~f~2IRaKeyL7&-0xq9Qd- z%{+4u0@(wIzbjMr!=2#gF(X4mAJYX+$=ANUx{gAjY+Np;@QH|s+`2^o7ux1^kn$x% zPVEoFlAu=WYu=xh+_-k>6%fIvhf$Nc^cokhUX7~;6YWU%V!Y&^-7Q2=3DWKz3k4u=zlPK z*S#eEoSzVN=$}D~<@V~dph-TR-kaXByLXH!Ykp%2)^K-g;|IA6>Ar#f`jLwP<`dU? zrs%|j*~FOFlTS#zzZ~=MZHC|Bb9a_PR(=U&=s0L?Tp5S{iSHLdfF{CHmvmD8_ABor zdl;@H>u;S)Bzy9?A++Kwqj(_PP&4&=^?&QXzq&a{Vlct&N)KpZ!*IS*>7^0;CwOPeRR zOi&%Lp8_9WOuHRkk6Fa(HV6imY!SHD2x?JL(Y7$h?sWVYIt2io7hbCsj(t<$siW{S z1%coi*6d*T;|~c5iIY)pvAUV%nGQa+2R4!0w;1QVRO7@Gm1SZJt?W& zWgPn86v%HEpkFXg0r;|!+|pnpnVFdx8HejN)8ypjVhvo1`ruE3R#1g(=c8(E8NSTA zcfY>HFD^bf&YuJG1F_LSp9nLU{0XH8wa)Ni<3+uG(XCEJ&%CR`mX x&|(#{i~dec#J7lo+zjJk_`j!75J=mO!hzqTs6u848OX6A>MGjGrAk(z{{RyiE93wG diff --git a/web/doc/templates-2.0/index.php b/web/doc/templates-2.0/index.php deleted file mode 100644 index fbbb512c..00000000 --- a/web/doc/templates-2.0/index.php +++ /dev/null @@ -1,291 +0,0 @@ - - - - -

    Defining new gLabels templates for gLabels 2.0.x

    - -

    -Predefined templates are defined by XML files located in -${prefix}/share/glabels/, -where ${prefix} is usually something like -/usr/local or /usr depending -on the configuration option prefix. gLabels will -use all files of the form *-templates.xml or *.template, -that it finds in ${prefix}/share/glabels/ and ${HOME}/.glabels/. -Additional templates can be added by creating additional -*.template files in either of these directories. -

    -
      -
    • The format for these files is defined in the DTD: . (This DTD also describes other XML formats used by glabels.)
    • -
    - -

    Assumptions/caveats

    -
      -
    • A sheet contains only one size of label or card (if a sheet contains more than one size of item, it can be split into multiple templates for multiple pass printing)
    • -
    • Distances can be expressed in units of pt, in, mm, cm, or pc. For example: "1.0in" or "2.54cm". If no units are specified, computer points (pt) will be assumed (1 pt = 1/72 in = 0.352778 mm).
    • -
    - - -

    *-templates.xml and *.template files

    -
    -<?xml version="1.0"?> -<Glabels-templates> - - ...templates... - -</Glabels-templates> -
    - - -

    Example Template

    -
    - <Template name="Avery 8160" size="US-Letter" description="Mailing Labels"> - <Label-rectangle id="0" width="189" height="72" round="5"> - <Markup-margin size="5"/> - <Layout nx="3" ny="10" x0="11.25" y0="36" dx="200" dy="72"/> - </Label-rectangle> - <Alias name="Avery 5160"/> - <Alias name="Avery 6233"/> - </Template> -
    - - -

    Template Node

    -

    -A Template node describes a single stationary product. It must contain -one instance of any type of Label node (Label-rectangle, -Label-round, or Label-cd). This node can be followed by zero -or more Alias nodes. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    nameName or part # of stationary product. E.g. "Avery 8160"
    sizeSize of sheet. E.g., "US-Letter," "A4", ...
    descriptionDescription of stationary product. E.g, "Mailing Labels."
    _descriptionTranslatable description of stationary product. E.g, "Mailing Labels." (Only useful for predefined templates)
    widthPage width. Only valid if size="Other"
    heightPage height. Only valid if size="Other"
    - -

    Label-rectangle Node

    -

    -A Label-rectangle node describes the dimensions of a single label or -business card that is rectangular in shape (may have rounded edges). -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    idReserved for future use. Should always be 0.
    widthWidth of label/card
    heightHeight of label/card
    roundRadius of corners. For items with square edges (business cards) - , the radius should be 0.
    x_wasteAmount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    y_wasteAmount of vertical waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    -
    - - -

    Label-round Node

    -

    -A Label-round node describes the dimensions of a simple round label (not a CD). -

    -

    Properties

    - - - - - - - - - - - - - -
    idReserved for future use. Should always be 0.
    radiusRadius (1/2 diameter) of label
    wasteAmount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    - -

    Label-cd Node

    -

    -A Label-cd node describes the dimensions of a CD, DVD, or business card -CD. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    idReserved for future use. Should always be 0.
    radiusOuter radius of label
    holeRadius of concentric hole
    widthIf present, the label is clipped to the given width. (Useful for "business card CDs").
    heightIf present, the label is clipped to the given height. (Useful for "business card CDs").
    wasteAmount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    -
    - - - -

    Markup-margin Node

    -

    -A Markup-margin describes a margin along all edges of a label. -

    -

    Properties

    - - - - - -
    sizeSize of the margin. I.e. the distance of the margin line from the - edge of the card/label.
    - - -

    Markup-line Node

    -

    -A Markup-line describes a markup line. -

    -

    Properties

    - - - - - - - - - - - - - - - - - -
    x1x coordinate of 1st endpoint of the line segment.
    y1y coordinate of 1st endpoint of the line segment.
    x2x coordinate of 2nd endpoint of the line segment.
    y2y coordinate of 2nd endpoint of the line segment.
    - -

    Markup-circle Node

    -

    -A Markup-circle describes a markup circle. -

    -

    Properties

    - - - - - - - - - - - - - -
    x0x coordinate of circle origin (center).
    y0y coordinate of circle origin (center).
    radiusRadius of circle.
    - -

    Layout Node

    -

    -A label node may contain multiple Layout children. If labels are layed out in -a simple grid pattern, only one layout is needed. However, if labels are -layed out in multiple grids, such as a running bond pattern, multiple -layout tags can be used. Note: a single label can always be treated as -a grid of one. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    nxNumber of labels/cards across in the grid (horizontal)
    nyNumber of labels/cards up and down in the grid (vertical)
    x0Distance from left edge of sheet to the left edge of the left - column of cards/labels in the layout.
    y0Distance from the top edge of sheet to the top edge of - the top row of labels/cards in the layout.
    dxHorizontal pitch of grid.
    dyVertical pitch of grid.
    -
    - - -

    Alias Node

    -

    Properties

    - - - - - -
    nameThe name or part # of a product with the same size and layout - characteristics.
    - -
    - - - diff --git a/web/doc/templates-2.2/glabels-template-cd.png b/web/doc/templates-2.2/glabels-template-cd.png deleted file mode 100644 index 0a3de3bfaf31c0e831f7232e93c963acfda8e347..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9930 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
    V{=|8(1n!5&6#bN~ zl%Ad*47c1-swYce?0`pLue}9Jc5v;^#|iw$TDGb4ZejqNb^-d8S{yIUgAcE#bmJhd zt~*IdWN2=yQ1}qI^gExAd7{n4Le2tx+~prZ#rWBi`sDM#bp0bi8^Xvd4tLr*I`a6u zuyBdQJbw~_5oifT&sUP3VErFdsX^x-gjD%(OAd~Xc0b-k1t+S#; zGUsVD#TrZ^Ty)}l9xYp;CrF`OLEPIfT0)y2YRGEuyfb)!dV1s@S_(W*Ccc`C$iOhb zGwA8)x3fS~fr4Uq_Q;^lgr1Hr&Oj8g0GR-X7tJu?QPKn{xT)-nYy{VUuI<3o%%C&* zGCaceSVijuu-IQvvw%MjIP1M%3vjr@%Ene|@KcQT2h2DO)&?)9B_}3cp{I|3C4yLh zV1RSMXu$J4ABy9xKmu?TbAyh*4S~fQMmYZ}mk0-zb zTL9VgM%0zwh+H-g{d;4yOtZHESP#Fj2Nhp9HL61P8!k<(uzBg5H z1yq>&FZ4sr|KA)+kd z0=U)SC^em*)yp&ArsO9|zx8Mvs^`dC!^PFrV!Pyn2&OWPa4mLqWo6)&syaGJTI_nJ z9qv<;lL63XfxZ#2lKtIXZH?1!xv&K5*oi?TQP&;6h0vONCCwCT! zY3H#6!s_ax|2=;M#RF}>v2__*I{Uk>~ypw9&j78Vu;w?|O0 z)t$D(ov4+SEb2ZND&{M5VsS;qF2E7I4--_-KfVbq#gdZF@88SI$~LsVf|0}q(?>fy zG7kq>z5cvC@7oy~$ppUs=FJw<9ff12 diff --git a/web/doc/templates-2.2/glabels-template-label.png b/web/doc/templates-2.2/glabels-template-label.png deleted file mode 100644 index 87a724b9dcba29b59f807007af9f7469b82033b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3115 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 diff --git a/web/doc/templates-2.2/glabels-template-layout.png b/web/doc/templates-2.2/glabels-template-layout.png deleted file mode 100644 index c71279520eb56db0701e359666bfb403f1b3e953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6012 zcmcIocTm&Yx(yvEf_eZc3aEheYG?rjL5dWmH|a$|iby9E>4Fr2P^3hq#!!?FQUt+B zKY%ppC4>$ELKpAGd;hq1=Dj)h&77B+B$HnzJNx(TZ>?{w_2Ry^DlHWY6$ApIRaaBi zg+PeTgJ%FGF}P9;+YSM5B+r!8^(iSS$7gkBAP^=Ab!A0;->mh?fcyGbb_~8kU?%jd z64g!e7#2RNqV&5ak5`hIihIJ_I`3WQ#p)+#XbnourwrXR)qWS(pJK=u$2dh?+;JI- zPr7*B;gL`}J-YOpy~)I61#TZB)7H1@gN0?u;oug(YWv4F<*D3yD)jdRyhiLZ)KQ_o1n$3{m#YR*bZ@))1L#S-U;84V%|xrLNMPbeLa zkrZA?Of4%M2paf2Mv{kJML`ZI^N4THUGiCV)1oKsYfOpH{OBxC{Q0#`mO++w;iT)n zd1*;Wqcvm%exIJyllWl=kFK=O#zY}9Xr(SIIe8Et?05A*iGf2Jsm29`RyQ?G&AO+g zrfR2)yqyngl?n(+*g}kiWb`abPQ&%eM%;c>p6f$~=-}asN1c;Lqobo=zkaQ(l<@R$ z4&_)_Tzsv`tw^t(EyG3dfPee*?VT^Jt>xwAk#y|6Hu5_aRDC=7`T0FPJvDOWZ{KnX z2)yhUgKJn>S^4_<>gpyTkv^)leQD$J3L;U4Eg5 z^_2w$+zJZpxT#E3X{olhwh%8bGxSNiv3N$|_Q_6PX3ygKcnx~Nd{(ex4Cb}+o$Fqz zoui{(JkC#ELSh%3(d_JO@d&pw+OVYDSb#ln_mwfpSd%4o^rP+Z-uifzGm}hR2B?Kx zz@C6*)5$irD`no<$?0w!ON6$o^V;Y~SYNDsssW#hipuix^5iEUM+r-2a+=GDSy}Ld zE$hw}T3T9YW*i~u4-N^5%Hm?p-H*k(k6m0E_oo7wX^oQF+S+27gf$weYUK=3#sZ8J zguF-2&bcrcWzv`2ILHk(vXHzA)J$N*n~T{R?K`ih_k0o{H!t5}IFX{fFYUy41=)*1 z>)(!O7!C1*nl6!k?}*ihWn1l&tt_+$B36Y1I$KcW-$RauOEZ5i$tV-^Jul=SQgclN z=fxP?KCTG1XH!h^S@q{Md2vEK_1_;#koE0umb4w*fv+1Xc^nR%zSA@KGg z{VZ*qb6KPJ-kM2Ri-^ab!{b_OmxwA)O zZLM$5>sxM3hYsfEY=JQxl z`%BDfii&Qcj5tZO3&rK-Ep|VusX*W5<^~^PnR0OX7SUzs_wQ}+T_23|#eBDB0MUrD zl-|(N((3Q;Pq|L;545qF!y$uveO0!%7sM=US)_d)ZCAO^j)bxXuqKU~^vX1;?Xy#anmbZfQa za#nHwBPnl`JDbsi2cnM$@+vDUdG!iBSBJHB54X7}mB8MEf`S4A8$0Y`qNBIGiTieV zw6ol$*aT8}^jcb4?nKhy;U=-Metc}0I`dLNv+9$*aW`Ba(oxjX)aN9@d*q?dGT{ht ztb1>kw19jSM`@`V*=-^iYNo~Je>t2s%N4Q^p9$CfBf_c{ck&9z1F6aWJcXVq#&D)BmV)>`69zQF_`R6M_4a z_V)Im0!a9F$4h4MC8O@{?(eGvR!LX88fYE5s3=|P=^PjuVAx#!=-}U!D+)uy2;cQ& zvU{DXyf>$^CriE=+1q1Nc=f>DT+)FlN>4deZA^X|ajGh}NH6B%=60~NgCAnky3&N1 ze8kY=2m8~(mS$$hlRndLlQRLyjnXNcBxYx?dw=4^AZ5IqTEowomZTC|7lgRDR8k&x z-!jhM2KDI9lkr(>PyEP9Zuq@;9uvZK@4!X#vFg_k$R_OBAKSnRt5djufdH_dfA zJ%HK_EG>lzd^3B-`MPFiu_eSR&z@CGx~BOvxCi)FUI_Ug;DgrR5)X)$V2QJ_7%zAt zh5ozn71OpQesh8NKk;gu9~yvuBl6FGS)Rqob`k&A*#34m;i_C~YipiG1Wm1Z>2nf_ z7SktUn^TRvs$bjNpRyV0 z>$d@zI@F9S9IuJz_TN0RGeqsKjaB63h4;I+*Lq+z0I+6S!gwj1C0+w!kUw6lQ22Es zz8cY?@8VL@Vs%;Ep*xID{^rpZdNYOor&g>X`W7drH4qXBu44#jZY?}=6o4Vh|#}GfS z$vwEcJSZ+ErmLq%LQJfToc6oegsyx4eg$3Dv;u~dqGHRHlld)}rHRS1r;JIlRzYZJ z=-m9giKasi73Qf?srgvF*J^*RYG1Z2#->SAMOm4Yf}$`luRBN1Y^Cb+x|a$cgla~e zjE<4yubC7-O+>O*SzX<9w1Pg~-yB&bMA5OQ`b*2-0F9d4e>v`J{=GD@`g7H&l(e+8 z)Kt?F!-AS?!ZO*Vj(s_oxHY%-v`W&1Ewwc?UMmEj#$S;IJH?~9Wx&*kh={nCDj*%O zw+0BoWP%i(cF$BGHACDHyuN%%!?-z>B3xn^0Kgo0yvH2(H7koPTU)hZuGpkvZfS|_jha247 zr6v`Tz9#^NE>)&sp`pfQTEiaCo`JSHS}sJ!NF~qm$L?=T2F$jSd3sRGWV-?#;pgY) z<>i$!k4B?;v|fj6yYln$@`{Kgw%c)Ac4FeMh_l2kEevneua;6=^_@Au&!>dBKv_lk z5QEE}QRlDNh-P#c?SKxtbm2maO?fLg+`{^L(-i~AIkel!OYKmq+##oY3*!6M38a75 zMEidll>b`x+nuv|?XB|@`0PHr)+8{CN45hHNwJ;3n~Z2%_r8>{Hc~d-6nMPmEjviK zd0Rz=EVoRK8>OtOic|>BX}60&q0y_;%?enxY;8%GAC*2+eo^?Cg_8Vyd&0`l&SH

    y@R+U8kVSirP1EH-|6a`3cfyvNg}eBM*WXLD+@ zIrtZlh|%&{)_krt0f15g?34v1ZEMDX3_bbbT;}H`2t*MA!NA0Xc_b@j30V0T2_5W% zKf#F+DbS~NW;90f1|KuV+AnrzFvfCSzkZ#A`^(CKjvGkrrlwP5bN%;*~*-Q^u z-wrrN$KI@Sbaal5P!qE%CxgJip8)?VSsh!5b^s^v)9KQOpZ@IVY5V$hW30mQa2pE< zq=3y*Pfy(G`%O;|Gh0l&ePyh5lE#Av5B&Z80bosNj9wCvkl*0pVV8%ed$`}Z6V~Hk z+jxVFl9pDGpWjwAL!A$rDJUcq54ulXQ**7nCR&L{RGmy=EV`(qq@=FSYR(mUFx$}r2iqTRxPk)?F2(Vl6W1jP+e!sxH=RKf9b``9jQ zlE2{RwWiLuccQ#ECZrv@(*Z?THuydTH}=wX>HOM{sxCd1W3u>p82|T25}&-+SIQAt zasf~gkuAnwQef(+d3g~4E53X8&OP!KBU*pgzwyf~Jt-#)W{w^bt4GKVpZZV53$JlC zeKS&4R8-{Txc~G26E(msV}L3lvFLXtBN1cF?klmC#rFMXvhT7->2jM8`k@Fr^a;>)agt@ zNM-jP9QZOOzlwnYC$~1;jKuk&nC4dBzkh%Er;-ErSv3v@^6v?7^K0tq>3MoeV84OX z08AUsary8xIaetzf4dM}x5?TOhO%dp-XKtu5H@o{Ut26+M0 zzB9#jvi^l^1NDbvF1%~ar{9*l8RQ9eVn7)9%09;(UgFV~VvE-BHwS3C)CIGhJa! zpnbcBPF?hOdPK3&rKWc$>5?FQAG-LLiJg*xqGNu!fLD!vS!b+!pr0 zN9w@v%D{OKMs!R9(b;6v9<#l@Eo%EUTHgFbAM}RCy?gx~f~2IRaKeyL7&-0xq9Qd- z%{+4u0@(wIzbjMr!=2#gF(X4mAJYX+$=ANUx{gAjY+Np;@QH|s+`2^o7ux1^kn$x% zPVEoFlAu=WYu=xh+_-k>6%fIvhf$Nc^cokhUX7~;6YWU%V!Y&^-7Q2=3DWKz3k4u=zlPK z*S#eEoSzVN=$}D~<@V~dph-TR-kaXByLXH!Ykp%2)^K-g;|IA6>Ar#f`jLwP<`dU? zrs%|j*~FOFlTS#zzZ~=MZHC|Bb9a_PR(=U&=s0L?Tp5S{iSHLdfF{CHmvmD8_ABor zdl;@H>u;S)Bzy9?A++Kwqj(_PP&4&=^?&QXzq&a{Vlct&N)KpZ!*IS*>7^0;CwOPeRR zOi&%Lp8_9WOuHRkk6Fa(HV6imY!SHD2x?JL(Y7$h?sWVYIt2io7hbCsj(t<$siW{S z1%coi*6d*T;|~c5iIY)pvAUV%nGQa+2R4!0w;1QVRO7@Gm1SZJt?W& zWgPn86v%HEpkFXg0r;|!+|pnpnVFdx8HejN)8ypjVhvo1`ruE3R#1g(=c8(E8NSTA zcfY>HFD^bf&YuJG1F_LSp9nLU{0XH8wa)Ni<3+uG(XCEJ&%CR`mX x&|(#{i~dec#J7lo+zjJk_`j!75J=mO!hzqTs6u848OX6A>MGjGrAk(z{{RyiE93wG diff --git a/web/doc/templates-2.2/index.php b/web/doc/templates-2.2/index.php deleted file mode 100644 index d08f92ac..00000000 --- a/web/doc/templates-2.2/index.php +++ /dev/null @@ -1,328 +0,0 @@ - - - - -

    Defining new gLabels templates for gLabels 2.2.x

    - -

    -Predefined templates are defined by XML files located in -${prefix}/share/glabels/, -where ${prefix} is usually something like -/usr/local or /usr depending -on the configuration option prefix. gLabels will -use all files of the form *-templates.xml or *.template, -that it finds in ${prefix}/share/glabels/ and ${HOME}/.glabels/. -Additional templates can be added by creating additional -*.template files in either of these directories. -

    -
      -
    • The format for these files is defined in the DTD: . (This DTD also describes other XML formats used by glabels.)
    • -
    - -

    Assumptions/caveats

    -
      -
    • A sheet contains only one size of label or card (if a sheet contains more than one size of item, it can be split into multiple templates for multiple pass printing)
    • -
    • Distances can be expressed in units of pt, in, mm, cm, or pc. For example: "1.0in" or "2.54cm". If no units are specified, computer points (pt) will be assumed (1 pt = 1/72 in = 0.352778 mm).
    • -
    - - -

    *-templates.xml and *.template files

    -
    -<?xml version="1.0"?> -<Glabels-templates> - - ...templates... - -</Glabels-templates> -
    - - -

    Example Template

    -
    - <Template brand="Avery" part="8160" size="US-Letter" description="Mailing Labels"> - <Label-rectangle id="0" width="189" height="72" round="5"> - <Markup-margin size="5"/> - <Layout nx="3" ny="10" x0="11.25" y0="36" dx="200" dy="72"/> - </Label-rectangle> - <Alias brand="Avery" part="5160"/> - <Alias brand="Avery" part="6233"/> - </Template> -
    - - -

    Template Node

    -

    -A Template node describes a single stationary product. It must contain -one instance of any type of Label node (Label-rectangle, -Label-round, or Label-cd). This node can be followed by zero -or more Alias nodes. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    brandBrand or manufacturer of stationary product. E.g. "Avery"
    partPart number or name of stationary product. E.g. "8160"
    sizeSize of sheet. E.g., "US-Letter," "A4", ...
    descriptionDescription of stationary product. E.g, "Mailing Labels."
    _descriptionTranslatable description of stationary product. E.g, "Mailing Labels." (Only useful for predefined templates)
    widthPage width. Only valid if size="Other"
    heightPage height. Only valid if size="Other"
    - -

    Label-rectangle Node

    -

    -A Label-rectangle node describes the dimensions of a single label or -business card that is rectangular in shape (may have rounded edges). -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    idReserved for future use. Should always be 0.
    widthWidth of label/card
    heightHeight of label/card
    roundRadius of corners. For items with square edges (business cards) - , the radius should be 0.
    x_wasteAmount of horizontal waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    y_wasteAmount of vertical waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    -
    - - -

    Label-round Node

    -

    -A Label-round node describes the dimensions of a simple round label (not a CD). -

    -

    Properties

    - - - - - - - - - - - - - -
    idReserved for future use. Should always be 0.
    radiusRadius (1/2 diameter) of label
    wasteAmount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    - -

    Label-cd Node

    -

    -A Label-cd node describes the dimensions of a CD, DVD, or business card -CD. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    idReserved for future use. Should always be 0.
    radiusOuter radius of label
    holeRadius of concentric hole
    widthIf present, the label is clipped to the given width. (Useful for "business card CDs").
    heightIf present, the label is clipped to the given height. (Useful for "business card CDs").
    wasteAmount of waste (over-print) to allow. This is useful for minimizing alignment problems when using non-white backgrounds (e.g. images).
    -
    - - - -

    Markup-margin Node

    -

    -A Markup-margin describes a margin along all edges of a label. -

    -

    Properties

    - - - - - -
    sizeSize of the margin. I.e. the distance of the margin line from the - edge of the card/label.
    - - -

    Markup-line Node

    -

    -A Markup-line describes a markup line. -

    -

    Properties

    - - - - - - - - - - - - - - - - - -
    x1x coordinate of 1st endpoint of the line segment.
    y1y coordinate of 1st endpoint of the line segment.
    x2x coordinate of 2nd endpoint of the line segment.
    y2y coordinate of 2nd endpoint of the line segment.
    - -

    Markup-circle Node

    -

    -A Markup-circle describes a markup circle. -

    -

    Properties

    - - - - - - - - - - - - - -
    x0x coordinate of circle origin (center).
    y0y coordinate of circle origin (center).
    radiusRadius of circle.
    - -

    Markup-rect Node

    -

    -A Markup-rect describes a markup rectangle. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - -
    x1x coordinate of upper left corner of rectangle.
    y1y coordinate of upper left corner of rectangle.
    wWidth of rectangle.
    hHeight of rectangle.
    rRadius of rounded corners.
    - -

    Layout Node

    -

    -A label node may contain multiple Layout children. If labels are layed out in -a simple grid pattern, only one layout is needed. However, if labels are -layed out in multiple grids, such as a running bond pattern, multiple -layout tags can be used. Note: a single label can always be treated as -a grid of one. -

    -

    Properties

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    nxNumber of labels/cards across in the grid (horizontal)
    nyNumber of labels/cards up and down in the grid (vertical)
    x0Distance from left edge of sheet to the left edge of the left - column of cards/labels in the layout.
    y0Distance from the top edge of sheet to the top edge of - the top row of labels/cards in the layout.
    dxHorizontal pitch of grid.
    dyVertical pitch of grid.
    -
    - - -

    Alias Node

    -

    Properties

    - - - - - - - - - -
    brandBrand or manufacturer of the product with the same size and layout - characteristics.
    partPart number or name of the product with the same size and layout - characteristics.
    - -
    - - - diff --git a/web/download/index.php b/web/download/index.php deleted file mode 100644 index a6a3e31f..00000000 --- a/web/download/index.php +++ /dev/null @@ -1,127 +0,0 @@ - - - - - -

    Stable Version ...

    - - - -

    System Requirements

    -

    -gLabels is designed to run on GNOME 2.16+, but more specifically it requires the following libraries or newer. -

    -
      -
    • GTK+-2.10.x
    • -
    • LIBGNOME[UI]-2.16.x
    • -
    • LIBXML-2.6.x
    • -
    • LIBGLADE-2.6.x
    • -
    • LIBEBOOK-1.8.x (optional)
    • -
    -

    -Note: to compile gLabels on most GNU/Linux systems, you will need the development packages (e.g., gtk2-devel or gtk2-dev) -installed for each of these libraries and their dependencies. -Just having the base library packages installed is not enough. -

    - - -

    Source:

    -
      -
    • -
      - (latest version) -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    - - - - - -

    Third party packages

    -

    -If you are not up to , you may be able to use a third party package. gLabels is currently available for many popular GNU/Linux and BSD distributions through -their associated repositories, including the following distributions and repositories: -

    -
      -
    • Debian
    • -
    • Fedora
    • -
    • Ubuntu
    • -
    • Gentoo
    • -
    • -
    -

    -Some of these packages are more up to date than others. If you experience bugs or problems with a third party package that is not based on the most recent stable version, please contact the package maintainer and urge them to update as soon as possible. -

    - - - - - -
    -

    Development (Unstable) Version ...

    - -

    System Requirements

    -

    -The development version of gLabels is designed to run on GNOME 2.24+, but more specifically it requires the following libraries or newer. -

    -
      -
    • GTK+-2.14.x
    • -
    • LIBXML-2.7.x
    • -
    • LIBEBOOK-2.24.x (optional)
    • -
    -

    -Note: to compile gLabels on most GNU/Linux systems, you will need the development packages (e.g., gtk2-devel or gtk2-dev) -installed for each of these libraries and their dependencies. -Just having the base library packages installed is not enough. -

    - - -

    Source:

    -
      - -
    • -
      - No post 2.2.x development version available yet. -
      -
    • -
    - -

    Subversion:

    -

    -The latest bleading-edge version of gLabels can be checked out through subversion with -the following command. -

    -
    $ svn co https://glabels.svn.sourceforge.net/svnroot/glabels/trunk/glabels2 -
    -

    -The latest snapshot of the gLabels stable branch also can be checked out through subversion with -the following command. -

    -
    $ svn co https://glabels.svn.sourceforge.net/svnroot/glabels/branches/glabels-2_2/glabels2 -
    -

    -More information can be found at the . -

    -
      -
    • -
    - - - - - - - -

    - - - - - - diff --git a/web/faq/index.php b/web/faq/index.php deleted file mode 100644 index 2bfab45d..00000000 --- a/web/faq/index.php +++ /dev/null @@ -1,123 +0,0 @@ - - - - -

    Frequently Asked Questions (FAQ) ...

    - - - - -

    Index

    -
    -
      - -
    • 1. - -
        - -
      • 1.1
      • - -
      - -
    • - -
    • 2. - -
        - -
      • 2.1
      • -
      • 2.2
      • - -
      - -
    • - -
    -
    - - -

    1. Common Problems.

    - -
    -

    1.1 How can I instruct glabels to not print blank address lines when doing a document merge?

    -
    -

    -This feature can be best described by a simple example. In the following CSV -file, column 5 contains the second address line for each record. This field is -empty in records 1 and 2, but not in record 3. (For this feature to work, -the field must be completely empty -- any text, including spaces will -defeat this feature.) -

    -
    Summers,Joyce,,"1630 Revello Dr",,Sunnydale,CA,95037 -McGarret,Steve,O,"404 Piikoi Street",,Honolulu,HI,96813 -Kramer,Cosmo,,"Apt 5B","129 W. 81 St.","New York",NY,10024-7207 -
    -

    -In the following screenshot, a single multiline text object has been -created to format these addresses. Notice that ${5} representing -the second address line is on a line by itself. (Any additional text -on this line, including spaces would defeat this feature.) -

    - -

    -Printing this label results in the following output. -

    - - -
    - - -
    -

    2. Obsolete Problems (problems with older versions of gLabels).

    - -
    -

    2.1 I cannot edit text. What's wrong? (2.0.x)

    -
    -

    -This is most likely due to an - in -libbonoboui that was introduced in GNOME 2.8. The symptom is that as soon -as you select a text object, its object property editor apears briefly then -disappears. -

    -

    -The workaround for this bug is to resize the glabels window so that it is large -enough to display the text property editor in the sidebar. -Note: it is impossible for glabels to automatically do this since the size -needed will vary with different themes, font sizes, and locales. -

    -

    -This problem is fixed in the development branch of glabels (2.1.x) by using -the GtkUIManager instead of libbonoboui to build the user interface. These -changes are very extensive and require later versions of GNOME, thus are not -suitable for backport into the 2.0.x branch.. -

    -
    - - -
    -

    2.2 Why don't transparent images print correctly? (1.92.1 - 2.1.3)

    -
    -

    -There is currently a limitation in the postscript back-end of libgnomeprint -that causes images with an alpha channel to be composited in an intermediate -context at 72 DPI. Unfortunately an image only needs to have an alpha channel -to trigger this behaviour even if the image is completely opaque, therefore -in earlier versions of gLabels (before 1.92.1) all GIF and PNG images would be -printed at 72 DPI. To work around this problem image compositing was -sacrificed for full resolution rendering beginning with gLabels 1.92.1. -

    -

    -If you are compiling gLabels from source and are willing to sacrifice image -quality for image transparency, you can disable the workaround by -compiling glabels with the NO_ALPHA_HACK option: -

    -
    $ ./configure CPPFLAGS=-DNO_ALPHA_HACK -$ make -... -
    -
    - - - - diff --git a/web/faq/q1.3-output.png b/web/faq/q1.3-output.png deleted file mode 100644 index 54bffb11d8489520e275f62dafcf98b0abdf8011..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20139 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 @YiQF3F zKI^&d5gJ$j+OZGVsDhvKJD9Esn76WlganJ&4Of2f*m{o4CMKq7W@Z*-7$+ajf_)y0 zUB)@Jn{H+|J++L2LMV8FOoV`WAK*X`HLIjoaBy%=PL5G28#6O=;>8ztZATi<({Zcs zH*d|L20WS{%NwV7;NVeq#$4Z5HkJmP#kesk+<9ewpsbv@jTFP#Ip&J58}#+`4gja~ zOmKugF0TY0m&2xgiQmSj_hEfndirA&slJHpzyz_5V==57_Dtr1RcU0J%iGS68QNW~LcELf6~VQF-G;{axVUK9V9r!_&sPn@&H#3QUfgfPUQOdx+@qdS@12A7i8~Fr zf<;l4JmTZ87fz~KYidbJZNkndh%d*Uau}Wxy+zkxzV9+&o!g zQ5TJO9?V>(I?S!;6fUIpBnzE_F_fCRV7tAdX`#t}Q#nrXTjomNSS zMtor~X6?Y|s;a6F1dHphq6PPPUiq!7DOIN_EL0BbL&+pSetYeU_9rbXT-*nV)p>=4 z1`}ZW6P+W`I32WMLWMaBxHLcko@tSTERLe*$Yc_!HN#l>)tst2bG5IJPn~_j88p9( zIGTo4$Nr!YOG``7l@fyvyFWYHmTSiqrw~OYCnq=BSyZI5s8J(Av0x$OIDP2rvy)qG zY;4r8Tq$X9k8IjSQ@~!e6qs{sTpR4Xq@`u|P7e8E6c`H4F@TsGR#xwUJ%0_wN9p&L z`^kRK?sVM>c!oDjmXa#z=-B5=ccjiJ>fu9@l#~>XeHhS4Ljx_BS_-#q9-6}&=XvX# z++6VEwKxS*0A&{o9PO6o2clA)pF7PAZ_v@{Jfjm@KDB6z9v^wqi4KUs9i8t-byOqNF2jG|r2PabBqW4@-6l;bl)7ujGU6yDQ z5f|64H_0TQJGX@-d}~az&@eqcy%f?00NRt(F>ILV*RQ#XmS-c%GiYf!RURHxcxEIP z)c~;Iu$P+p0DAH{@#~IXo}5^F3Y|DOkqPDUCHiM-f5>lkxe#gGbP5+OMl?NI5@WUN zm&(eAC!u*Po!%y^d zzskx=nruNnz7L>iH_=O3JVK`Y<_Huj)|e(xl`H9nTwNyURABx(QA-4GOMvX-SAUQyaKa) zgaGAU5!>7G@dqJu#MWbVnNFD0UlcD!Ex8>P6=m)6IhafBA;dI53P182fOGZ>S!kpW zKpCU;%Y0;8{^X9YKJ#9)v<&zgr%F#hf*gP%t9x2U%h4XO;5bWokO2uh4>v zznpKMHa+xBN_=@*`JKyRR{2gU&>>FX2-$GF_Vh@T0-5aid+Z1bkMc0Exo@Pb8*~HNB-9yT$KEviXhHi{M}VT9 z(a|JLpW|06ck~Cn&H9y`Af9p3{ApkyD-K*RuR*z&S0!*y8P0sn7hl8bsH~OAPe%<= zYuJ7CHYE2t$jHd_^!Bpiq$@!ry_|m4yWCKig#|(cEdZlm`rRI4rE=`Gu)XYC7qG#2 zzBas8JHVp;Mt6<)%A5heMLPqC0s*CunKp9!87?m`r#VbrbDr-HWjLlw+9%<LsZZ6>NhElktSm)is!jl4i*BhGH33u!H7ByC zCEwvV_&J1y4C9@U2BI&u^*}g0aO4Oj4-XGx(TDT$@^7H6(FE9ma20N;`11MlKY)V#_J6D7IZm%Qh z{^}`{mX|MuDDsKl69|hE5(e7UdepvSz&hwNtVfO{H)kC!&yLog{8Vll{kw%LD&|Mo z2=ml4GlIM*f?xU@e~UX!4ibP|_U6r-+XV$DKY#g>X41eZA1Orb$9Q7xgxRq70CNn( z-o2D^a-a0GjX{-bnwly)S7rrmN1Lg!3re9Alf;~!$o)kMb=$;U7Ic^9eh~u86G2NV zEE)q7lW9YikVBKAIP((lP)&}NL3@!~k&5@iCT8d2Tf((hu7V2XxGsyJRK*3IbeLR^ zyRDvc@BmuJir$FXQ4u1{r@101|9PZ33-5UO4}QiTzrz z;kLK`$X?~@r4)IE_wVnD?Kx4qIGV}qU{?2X%PW<{yO3o}gQU)#dtX;agF?88YEMnV zYj8
  • gLabels Manual

    Copyright © 2001 by Jim Evins


    Table of Contents
    Introduction

    Introduction

    See the README file.