diff --git a/debian/README.source b/debian/README.source deleted file mode 100644 index 1154b4ef..00000000 --- a/debian/README.source +++ /dev/null @@ -1,8 +0,0 @@ - -This document has information about the packaging workflow - -Also the place that tells about "dfsg" - ( please add that information ) - - -* Do `apt install pkg-kde-tools` before you do `sbuild` diff --git a/debian/changelog b/debian/changelog deleted file mode 100644 index 527f3e8b..00000000 --- a/debian/changelog +++ /dev/null @@ -1,657 +0,0 @@ -tellico (3.0.2-1.2) unstable; urgency=medium - - * Non-maintainer upload. - * Modified tellico-doc.install to keep files at upstream place - * Not compressing docbook files. Closes: #864077 - - -- Geert Stappers Sun, 04 Jun 2017 13:35:07 +0200 - -tellico (3.0.2-1.1) unstable; urgency=medium - - * Non-maintainer upload. - * New upstream release. Closes: #856718, #859657 - * debian/watch: has content again Closes: #863323 - * debian/README.source: new file, - for further notes on packaging tellico - * debian/control: - - Dependencies lines wrapped - - trailing white spaces removed. Dank je wel Lekensteyn - * debian/patches/series: new file. - * debian/patches/unclean: new file. - for cleaning up the unclean upstream tarball - * debian/source/include-binaries: new file - tells about known binaries in the upstream tarball - * debian/rules: updated disable tests - also #716982 updated with a comment about it - * debian/tellico-data.install: - - added usr/share/*/org.kde.tellico.appdata.xml - - removed usr/share/appdata - * debian/source/lintian-overrides: new file - - -- Geert Stappers Sat, 03 Jun 2017 14:53:40 +0200 - -tellico (2.3.9+dfsg.1-1) unstable; urgency=low - - * New upstream release. - + Patch cdb95d17 is now included, drop it. - + CVS parsing update. Closes: #729503. - * Bump Stadards-Version to 3.9.6. No other change needed. - - -- Regis Boudin Sat, 18 Oct 2014 12:40:17 +0200 - -tellico (2.3.8+dfsg.2-1) unstable; urgency=low - - * Repack the upstream source further to remove sourceless jquery.js. - Closes: #736786. - * Enable parallel building. Thanks Pino Toscano. Closes: #721029. - * Take patch cdb95d17 from upstream git. Closes: #729499. - * Bump Stadards-Version to 3.9.5. No other change needed. - - -- Regis Boudin Sat, 01 Mar 2014 15:05:27 +0100 - -tellico (2.3.8+dfsg.1-2) unstable; urgency=low - - * Disable tests for now, which should at least temporarily address #716982. - - -- Regis Boudin Sat, 20 Jul 2013 13:02:17 +0200 - -tellico (2.3.8+dfsg.1-1) unstable; urgency=low - - * New upstream release. - * Split the documentation to a tellico-doc package, as it represents about - half the size of the binaries. The tellico package "only" recommends it. - * Bump Standards-Version to 3.9.4. - - -- Regis Boudin Mon, 08 Jul 2013 22:26:50 +0200 - -tellico (2.3.5+dfsg.1-4) unstable; urgency=low - - * Fix passing of hardening flags. Thanks Simon Ruderich. Closes: #669190. - - -- Regis Boudin Sun, 03 Jun 2012 10:29:26 +0200 - -tellico (2.3.5+dfsg.1-3) unstable; urgency=low - - * Actually add pkg-config to the build-depends. For real this time. - - -- Regis Boudin Tue, 10 Apr 2012 22:57:42 +0200 - -tellico (2.3.5+dfsg.1-2) unstable; urgency=low - - * Build-Depend on pkg-config. Thanks to Pino Toscano, and apologies again - for misunderstanding. Closes: #661447. - * Bump debhelper compatibility to 9. Build-depend accordingly. - - -- Regis Boudin Tue, 10 Apr 2012 20:33:24 +0200 - -tellico (2.3.5+dfsg.1-1) unstable; urgency=low - - * New upstream release. - * Further repacking to remove KDE 4.7 bits. - * Bum build-depend on KDE to 4.7. - * Update packages descriptions, thanks to Paul Stewart. Closes: #647154. - * Bump Standards-Version to 3.9.3. - - -- Regis Boudin Thu, 15 Mar 2012 22:16:59 +0100 - -tellico (2.3.4+dfsg.1-1) unstable; urgency=low - - * New upstream release - * Repack to remove the local KXmlRpc local copy. - * Drop patch for QJson, applied upstream. - * Convert debian/rules to dh. - * Bump debian/compat to 8, and update build-dependency accordingly. - - -- Regis Boudin Tue, 27 Sep 2011 21:58:23 +0100 - -tellico (2.3.3-2) unstable; urgency=low - - * Add 0001-Use-the-new-qjson-naming.patch to build with the new QJson cmake - naming scheme. - * Add build-arch and build-indep targets to debian/rules, to make lintian - happier. - - -- Regis Boudin Wed, 14 Sep 2011 21:49:51 +0100 - -tellico (2.3.3-1) unstable; urgency=low - - * New upstream release. Fixes FTBFS with kernel 2.6.38 (Closes: #622047) - - -- Regis Boudin Mon, 11 Apr 2011 20:27:14 +0100 - -tellico (2.3.2-1) experimental; urgency=low - - * New upstream release (Closes: #601502). - * Drop webcam support and remove type-handling dependency (Closes: #587868). - * Should fix the crash when using filters (Closes: #549958). - * Permissions for backup files should be fixed as well (Closes: #561238). - - -- Regis Boudin Mon, 03 Jan 2011 18:42:57 +0000 - -tellico (2.3-1) experimental; urgency=low - - * New upstream release. - * Build-depend on shared-desktop-ontologies and libqjson-dev. - * Force a check in /usr/share/apps/cmake/modules to find FindQJSON.cmake. - * Bump Standards-Version to 3.9.1. - * Follow Policy section 7.4 and use Breaks plus Replaces instead of Conflicts - plus Replaces. - - -- Regis Boudin Thu, 19 Aug 2010 12:52:35 +0100 - -tellico (2.2-5) unstable; urgency=high - - * pkg-kde-tools has moved documentation to /usr/share/doc/kde/HTML. - update the .install file and tighten the build-dependency. - (Closes: #584153). - * Set urgency high to help with the yaz transition. - - -- Regis Boudin Tue, 01 Jun 2010 22:27:01 +0100 - -tellico (2.2-4) unstable; urgency=low - - * Add build-depends on cmake. Thanks Felix Geyer ! Closes: #582179 - * Exclude akonadi-server that libkcal4 and libkabc try to force as - depends. - - -- Regis Boudin Thu, 20 May 2010 00:29:34 +0100 - -tellico (2.2-3) unstable; urgency=low - - * Bump build-depends from libyaz3-dev to libyaz4-dev. Don't bother about - about backportability for now. Closes: #576780 - - -- Regis Boudin Sun, 11 Apr 2010 23:27:48 +0100 - -tellico (2.2-2) unstable; urgency=low - - * Install the i18n files again, which were removed by mistake. Thanks to - Luigi Toscano. Closes: #572802 - - -- Regis Boudin Sat, 20 Mar 2010 13:10:30 +0000 - -tellico (2.2-1) unstable; urgency=low - - * New upstream release. - * Update debhelper compatibility level to 7. - * Bump Standards-Version to 3.8.4. - * Stop shipping now unused KDE3 desktop file for mime types. - - -- Regis Boudin Thu, 18 Feb 2010 01:33:48 +0000 - -tellico (2.1.1-2) unstable; urgency=low - - * Disable webcam support if libv4l is not present, fixing FTBFS on - kfreebsd (Closes: #559731). - * Add missing Build-depend on libksane-dev. - - -- Regis Boudin Sun, 06 Dec 2009 18:11:51 +0000 - -tellico (2.1.1-1) unstable; urgency=low - - * New upstream release. Fixes loss of loans and advance filters - (Closes: #557227, #558736). - - -- Regis Boudin Sat, 05 Dec 2009 12:35:08 +0000 - -tellico (2.1-1) unstable; urgency=low - - * New upstream release. - * Switch to package format 3.0 with quilt. - * Actually enable webcam when building. - - -- Regis Boudin Thu, 05 Nov 2009 19:00:06 +0000 - -tellico (2.0-2) unstable; urgency=low - - * Build-Depend on libv4l-dev except on non-linux architectures, to enable - webcam support. - - -- Regis Boudin Wed, 30 Sep 2009 00:22:17 +0100 - -tellico (2.0-1) unstable; urgency=low - - * New upstream release. (Closes: #547935). - * This version is now a KDE4 application. Update build-dependencies - accordingly. - * Stop calling deprecated dh_desktop, which is unnecessary now. - - -- Regis Boudin Thu, 24 Sep 2009 00:05:45 +0100 - -tellico (1.3.2-1) unstable; urgency=low - - * New upstream release. - * Recommend khelpcenter for acces to the help (Closes: #478975). - - -- Regis Boudin Fri, 23 May 2008 21:28:59 +0100 - -tellico (1.3.1-2) unstable; urgency=low - - * Move the import scripts to a separate package, tellico-scripts, which can - be updated through debian-volatile (Closes: #457949). - * Build-depend on libyaz3-dev instead of libyaz2-dev, to use the new yaz. - * Stop suggesting python2.4, and make the guilty script use straight python - (Closes: #472741). - - -- Regis Boudin Mon, 21 Apr 2008 10:38:57 +0100 - -tellico (1.3.1-1) unstable; urgency=low - - * New upstream release. - * Now that dh_icons is a complete feature, call it (Closes: #464590) - * Re-generate the manpage, to make lintian happy. Plus, it was outdated. - - -- Regis Boudin Sat, 15 Mar 2008 16:55:42 +0000 - -tellico (1.3-1) unstable; urgency=low - - * New complete upstream release, going to unstable this time. Only includes - minor code changes and documentation update since the pre3 release. - * Enable new barcore reading through webcam with --enable-webcam. - - -- Regis Boudin Wed, 30 Jan 2008 14:17:07 +0000 - -tellico (1.3~pre3-1) experimental; urgency=low - - * New upstream pre-release, upload to experimental. This release is brand - new and might break things. Back up you data ! - + Includes support for pdf files. Add libpoppler-qt-dev and libexempi-dev - to build-depends to enable it. - * Add svg icons to the xdg mimetypes. Remove hack to rename mimetypes icons, - The change is now included upstream. - * Suggest ruby for more import scripts. - * Call dh_installmime specifically for tellico-data to call - update-mime-database in postinst and postrm. - * Call dh_desktop in the tellico binary package to update the desktop - database. - - -- Regis Boudin Sun, 13 Jan 2008 18:16:45 +0000 - -tellico (1.2.14-1) unstable; urgency=low - - * New upstream release. Mainly bugfixes and translation updates. Includes - an updated German translation (Closes: #425968, #445879). - * Check for the existence of Makefile before calling distclean. - * Build-depend on debhelper (>> 5.0.0). - * Switch to the new Debian menu hierarchy, move to Applications/Office. - * Move tellico.desktop to the tellico package, so it can find the program. - * Add a sharedmimeinfo file to tellico-data for the application/x-tellico - mimetype. - * Rename the mimetype icons to application-x-tellico so Gnome can use them. - * Use the new Homepage and Vcs-Svn fields. - * Bump Standards-Version to 3.7.3.0. - * Apply some minor modifications to tellico.desktop to comply with the - freedesktop specs. - - -- Regis Boudin Sun, 23 Sep 2007 11:06:54 +0100 - -tellico (1.2.11-1) unstable; urgency=low - - * New upstream release (Closes: #402275, #422792). Also add a watch file - provided by Bastian Kleineidam. - + Include updated parsing for IMDb source (Closes: #421650). - * Stop patching to remove unnecessary links, use --enable-new-ldflags - instead, which passes the --as-needed flag at link time. - - -- Regis Boudin Mon, 8 May 2007 10:11:44 +0200 - -tellico (1.2.5-1) unstable; urgency=high - - * "New" upstream release, aimed at Etch. Differences with 1.2.4-1 are : - + Build fix for OOo plugin (disabled in the package anyway), r1206 - + Check if pointer is NULL *before* using it, r1212. - + Some minor build issues - + Use log messages instead of debug - * Also backport a bunch of bugfixes : - + r1216 : fix crashing bug in progressitem. - + r1224 : clear release list when removing an image. - + r1228 : prevent an infinite loop. - + r1245 & r1248 : fix a race condition leading to loss of images. - + r1265 : sometimes images wouldn't show up if the cover column was - visible in the list view. - + r1340 : sometimes z39.50 results would not show up. - + All this makes the package back in good shape for Etch (Closes: #411744). - * Many thanks to Robby Stephenson, the uptream author, for his help picking - the patches for inclusion. - * Only call dh_compress once so help files are not compressed and can be read - (Closes: #401247). - - -- Regis Boudin Tue, 20 Feb 2007 18:27:45 +0000 - -tellico (1.2.4-1) unstable; urgency=low - - * New upstream release. Now works with KDE 3.3.1, so I can provide Sarge - backports again. Thanks Robby for caring about that. (Closes: #396508). - This package actually includes patches from the 1.2.x branch, up top - r1203, which contains several bugfixes. - * Have tellico-data depend on kdelibs-data, so we don't have broken symlinks. - (Closes: #387795). Thanks Lars Wirzenius for pointing at it. - * All the official arch have at least kdepim 3.5.5, drop build-dep on - kdepim-dev. - * Bump Standards-Version to 3.7.2.2 - - -- Regis Boudin Thu, 2 Nov 2006 20:32:48 +0000 - -tellico (1.2.2-1) unstable; urgency=low - - * New upstream release. Skip 1.2 (Closes: #386402) - * Acknowledge NMU and build-depend on libyaz2-dev. Thanks Luk Claes ! - (Closes: #380014) - * Suggest python and python2.4 for the external scripts. - * Drop remove_zlib_link.diff patch. xml2-config and xslt-config - return only the necessary flags now. - * libkcal2-dev now contains libemailfunctions/idmapper.h, so no need to - build-depend on the whole kdepim-dev anymore. Thanks Christopher Martin - for applying the patch. Build-depend on - libkcal2-dev( >= 3.5.4-1) | kdepim-dev, so the package can build with - older versions of kdepim. - - -- Regis Boudin Fri, 8 Sep 2006 08:47:29 +0100 - -tellico (1.1.6-1.1) unstable; urgency=medium - - * Non-maintainer upload. - * Update libyaz build dependency to libyaz2-dev (Closes: #380014). - - -- Luk Claes Sat, 29 Jul 2006 16:29:00 +0200 - -tellico (1.1.6-1) unstable; urgency=low - - * New upstream release. Bugfixes and translation updates. - * Bump Standards-Version to 3.7.2. No other change. - * debian/copyright : updated to reflect the fact that the source includes - the btparse library. - * Split the package between arch-dependent and arch-independent data. Use - ${souce:Version} to be binNMU-safe - - -- Regis Boudin Mon, 8 May 2006 14:13:35 +0100 - -tellico (1.1.5-1) unstable; urgency=low - - * New upstream release. Should fix the FTBFS on non-Linux ports. - * Build-depend on libkcal2-dev and zlib1g-dev only for backports - - -- Regis Boudin Thu, 20 Apr 2006 16:15:00 +0100 - -tellico (1.1.4-1) unstable; urgency=low - - * New upstream release. - * The "transitions-clean" release. - * After a succesful try with the Amaya package, use quilt for patches - management. Also have a proper apply-patches target in debian/rules - * am_maintainer_mode.diff : use maintainer mode, see previous changelog - entries. - * libtool_for_libyaz.diff : dirty hack using "-lyaz" instead of what - yaz-config returns. This lets libtool deal with linking and removes bogus - dependencies on libssl and libwrap. - * remove_QT_links.diff : more hack to avoid QT forcing us to link against - X libraries and libpng, which we don't use directly. - * remove_zlib_link.diff : same hack as for libyaz with libxml2 and libxslt - to get rid of zlib1g dependency. - - -- Regis Boudin Tue, 4 Apr 2006 19:58:20 +0100 - -tellico (1.1.3-1) unstable; urgency=low - - * New upstream release, bugfixes and translations updates - - -- Regis Boudin Mon, 13 Mar 2006 21:10:22 +0000 - -tellico (1.1.2-1) unstable; urgency=low - - * New upstream release, bugfixes and translations updates - - -- Regis Boudin Mon, 6 Mar 2006 20:23:08 +0000 - -tellico (1.1.1-2) unstable; urgency=low - - * The "pbuider and buildds are not the same" package release - * In addition to relibtoolize, also rerun automake and add - AM_MAINTAINER_MODE - Hopefully, all this should fix the various FTBFS - - -- Regis Boudin Tue, 21 Feb 2006 21:02:08 +0000 - -tellico (1.1.1-1) unstable; urgency=low - - * New upstream release - + Patch removing the rpath merge upstream - + Now set .desktop file to the xdg directory - * No more Debian patches to include, except the relibtoolizing - - -- Regis Boudin Sat, 18 Feb 2006 21:34:16 +0000 - -tellico (1.1-1) unstable; urgency=low - - * New upstream release - + Documentation is now dual-licensed GFDL/FreeBSD Documentation License, - so it can be included in Debian. Many thanks to Robby for that. - + Hungarian translation update (Closes: #346414) - * Depends on libqt3-mt-dev again. We actually use it directly. - * Update files in admin. This removes some useless dependencies, including - libfreetype6. - - -- Regis Boudin Wed, 8 Feb 2006 20:34:50 +0000 - -tellico (1.0.99.1.1pre3-1) unstable; urgency=low - - * New upstream pre-release - - -- Regis Boudin Sat, 28 Jan 2006 20:56:42 +0000 - -tellico (1.0.3+SVNr327-1) unstable; urgency=low - - * New upstream release (Closes: #337634) - + Subversion snapshot to get extra fixes - + Fixes various bugs (including some crashes) - + Update IMDB search - + Include fix from Aurelien Jarno to build on GNU/kFreeBSD (Closes: #336949) - * Remove tight dependency on kdepim-related packages, the C++ ABI transition - is complete for them. Also remove build-dependency on libkcal2-dev, which is - pulled by kdepim-dev - * Upload sponsored by Thibaut VARENE - - -- Regis Boudin Mon, 6 Dec 2005 14:14:47 +0100 - -tellico (1.0-1) unstable; urgency=high - - * New upstream release (Closes: #310893) - +Updated license to add an exception to allow linking against the OpenSSL - library. Thanks to Daffyd for pointing it and Robby for modifing the - license. debian/copyright modified accordingly - +New feature for loans, to use the kde calendar. Added kdepim-dev to - Build-Depends to enable it. - +Builds with gcc-4.0 (Closes: #326645) - +To complete C++ ABI transition, tight dependencies on kdemultimedia-dev - and kdepim (Closes: #326850, #328009) - * Updated FSF adress in debian/copyright - * Replaced references to my old email address in debian/copyright and - debian/tellico.1x - * Due to the license change, set priority to high - * Introduced with 0.13.4 BibTex export with German special characters should - now be correct (Closes: #292165) - * Includes an updated German translation, thanks to Jens Seidel - (Closes: #313839) - * I doubt anyone still uses Bookcase now. Drop the dummy package - (Closes: #321830) - * Bump standard version to 3.6.2 (change in debian/control only) - * Get rid of build-dependency on xlibs-dev as delibs4-dev pulls everything - necessary - * Properly set CXXFLAGS as well as CFLAGS in debian/rules - - -- Regis Boudin Sat, 10 Sep 2005 21:04:37 +0100 - -tellico (0.13.3-1) unstable; urgency=low - - * New upstream release, mainly for a configure problem with FreeBSD - * Include the fix for RIS importer from upstream website - - -- Regis Boudin Tue, 15 Feb 2005 19:22:45 +0000 - -tellico (0.13.2-1) unstable; urgency=low - - * New upstream release - +Adds support for amazon.fr and amazon.ca imports (Closes: #291260) - +Fixes compile errors with gcc-4.0 (Closes: #290467). Thanks to Andreas - Jochens - +Fixed bug with character translations in bibtex export (Closes: #292165) - * updated debian/control file to remove upper-case article at the beginning - of short descriptions - - -- Regis Boudin Sun, 6 Feb 2005 13:35:06 +0000 - -tellico (0.13.1-1) unstable; urgency=low - - * New upstream release. Mainly bugfixes and translation updates. - - -- Regis Boudin Sun, 12 Dec 2004 23:23:20 +0000 - -tellico (0.13-1) unstable; urgency=low - - * New upstream release. - * Use dh_compat 4. Consequently, removed hack to fix absolute link. - * Updated pixmap icon to use the new one. - * Modified fix for rpath problem by patching src/Makefile.in instead of - configure. Removed the now useless "touch config.h.in" trick. - * Updated package description. Thanks to Matthieu Delehaye. - * Updated build dependencies. Removed libapanoia0-dev, added libyaz-dev. - - -- Regis Boudin Thu, 2 Dec 2004 18:41:54 +0000 - -tellico (0.12-1) unstable; urgency=medium - - * New upstream release and new package. This is in fact Bookcase 0.11 - rebranded as Tellico because of a trademark issue. - * For smooth transition, provide an empty bookcase package depending on - tellico. - * Build depend on kdemultimedia-dev (>> 4:3.2.2-1). This specific version of - the package has a bug which prevent tellico from building. - * Bookcase 0.11 has been in sid for ~10 days, so it is already tested. Set - the priority to medium to increase the chances of getting this package in - Sarge if KDE 3.3 is accepted. - * Move tellico.desktop to /usr/share/applications instead of - /usr/share/applnk/Applications to comply with freedesktop.org standards. - - -- Regis Boudin Wed, 22 Sep 2004 19:08:40 +0100 - -bookcase (0.11-1) unstable; urgency=low - - * New upstream release (Closes: #269903) - -Ability to import Audio CD data from Alexandria - -Ability to import Audio files metadata - * To enable previously listed new features, updated Build-Depends : - -Added kdemultidmedia-dev - -Added libcdparanoia0-dev - -Added libtag1-dev - * Previous release (0.10) fixed bug when building with gcc-3.4 - (Closes: #258542) - * debian/bookcase.xpm: only use 24 colors, lintian complained about it. - * touch config.h.in at the beginning of debian/rules. It updates the - date of the file and prevent Makefile from calling autoheader because - configure was patched. - - -- Regis Boudin Sun, 5 Sep 2004 00:23:30 +0100 - -bookcase (0.9.3-1) unstable; urgency=high - - * New upstream release. It solves a license issue, priority set to high. - (Closes: #252740) - * New maintainer mail address - * Do not gzip docbook files for khelpcenter (Closes: #248983) - * Remove useless mention of info file from manpage (thanks to Matthieu - Delahaye) - - -- Regis Boudin Thu, 3 Jun 2004 23:35:01 +0100 - -bookcase (0.9.1-1) unstable; urgency=low - - * New upstream release (Closes: #213896, #21498) - - -- Regis Boudin Wed, 5 May 2004 20:40:40 +0100 - -bookcase (0.8.5-1) unstable; urgency=low - - * New upstream release (Closes: #236020) - - -- Regis Boudin Thu, 11 Mar 2004 10:20:47 +0000 - -bookcase (0.8.4-1) unstable; urgency=low - - * Thanks to Matthieu Delahaye for sponsoring this package - * New upstream release (Closes: #230380, #213901, #213898, #211183) - * Description update (Closes: #213327) - - -- Regis Boudin Sun, 22 Feb 2004 20:18:17 +0000 - -bookcase (0.8.3-1) unstable; urgency=low - - * New upstream release - - -- Regis Boudin Fri, 6 Feb 2004 10:19:37 +0000 - -bookcase (0.8-1) unstable; urgency=low - - * New upstream release - - -- Regis Boudin Thu, 29 Jan 2004 21:40:57 +0000 - -bookcase (0.7.2-1) unstable; urgency=low - - * New upstream release - * Packaging corrections thanks to Joerg - * Copyright file update - - -- Regis Boudin Wed, 26 Nov 2003 20:52:10 +0000 - -bookcase (0.6.6-3) unstable; urgency=low - - * Correct dependencies (Closes: #211162, #211173) - * Many thanks to Antonin Kral for sponsoring the package - - -- Regis Boudin Tue, 16 Sep 2003 11:23:45 +0100 - -bookcase (0.6.6-2) unstable; urgency=low - - * New manpage - * Fix rpath compilation - * Fix typo errors - - -- Regis Boudin Tue, 2 Sep 2003 13:39:27 +0100 - -bookcase (0.6.6-1) unstable; urgency=low - - * New upstream release - - -- Regis Boudin Mon, 18 Aug 2003 11:13:37 +0100 - -bookcase (0.6.5-1) unstable; urgency=low - - * New upstream release - - -- Regis Boudin Tue, 22 Jul 2003 09:23:09 +0100 - -bookcase (0.6.4-2) unstable; urgency=low - - * Fix translation problem - - -- Regis Boudin Thu, 3 Jul 2003 22:32:16 +0100 - -bookcase (0.6.4-1) unstable; urgency=low - - * New upstream release - - -- Regis Boudin Thu, 26 Jun 2003 14:39:59 +0100 - -bookcase (0.6.3-1) unstable; urgency=low - - * Include patch for KDE 3.0 - * New upstream release - - -- Regis Boudin Sat, 31 May 2003 22:54:00 +0100 - -bookcase (0.6.2-1) unstable; urgency=low - - * Initial Release. - - -- Regis Boudin Mon, 12 May 2003 22:50:38 +0100 - diff --git a/debian/compat b/debian/compat deleted file mode 100644 index ec635144..00000000 --- a/debian/compat +++ /dev/null @@ -1 +0,0 @@ -9 diff --git a/debian/control b/debian/control deleted file mode 100644 index 03a79b80..00000000 --- a/debian/control +++ /dev/null @@ -1,127 +0,0 @@ -Source: tellico -Section: kde -Priority: optional -Maintainer: Regis Boudin -Build-Depends: debhelper (>= 9) - , cmake, extra-cmake-modules - , pkg-config, pkg-kde-tools, qtbase5-dev - , libkf5archive-dev, libkf5codecs-dev, libkf5config-dev - , libkf5configwidgets-dev, libkf5coreaddons-dev - , libkf5crash-dev, libkf5iconthemes-dev, libkf5jobwidgets-dev - , libkf5solid-dev, libkf5wallet-dev, libkf5kdelibs4support-dev - , libkf5newstuff-dev, libkf5filemetadata-dev - , libtag1-dev, libyaz4-dev, libpoppler-qt5-dev - , libexempi-dev, libdiscid-dev, libcsv-dev, libbtparse-dev -Build-Conflicts: libqimageblitz-dev -Standards-Version: 3.9.8 -Homepage: http://tellico-project.org/ -Vcs-Git: git://anongit.kde.org/tellico.git - -Package: tellico -Replaces: tellico-data (<= 1.2.14-1) -Architecture: any -Depends: tellico-data (= ${source:Version}) - , tellico-scripts - , ${shlibs:Depends}, ${misc:Depends} -Recommends: tellico-doc, khelpcenter4 -Description: Collection manager for books, videos, music, etc - Tellico is a collection manager for KDE. It includes default collections for - books, bibliographies, comic books, videos, music, coins, stamps, trading - cards, and wines. - . - Tellico capabilities include: - . - * creation of user-defined custom collections with unlimited fields, - * automatically formatted names, - * sorting and filtering by any field or property, - * ISBN validation, - * full customization for printing or display through XSLT files, - * import and export of CSV, RIS, BibTeX and BibTeXML files, - * import data from Amazon, IMDb, CDDB or any US-MARC compliant z39.50 server. - . - Tellico files are stored in XML format, avoiding the need for a database - server, and allowing other software applications to use the data. - -Package: tellico-doc -Section: doc -Architecture: all -Breaks: tellico (<< 1.1.6-1), tellico-data (<< 2.3.7-1) -Replaces: tellico (<< 1.1.6-1), tellico-data (<< 2.3.7-1) -Depends: kdelibs5-data, ${misc:Depends} -Recommends: tellico -Description: Collection manager for books, videos, music, etc [doc] - Tellico is a collection manager for KDE. It includes default collections for - books, bibliographies, comic books, videos, music, coins, stamps, trading - cards, and wines. - . - Tellico capabilities include: - . - * creation of user-defined custom collections with unlimited fields, - * automatically formatted names, - * sorting and filtering by any field or property, - * ISBN validation, - * full customization for printing or display through XSLT files, - * import and export of CSV, RIS, BibTeX and BibTeXML files, - * import data from Amazon, IMDb, CDDB or any US-MARC compliant z39.50 server. - . - Tellico files are stored in XML format, avoiding the need for a database - server, and allowing other software applications to use the data. - . - This package contains the documentation. - -Package: tellico-data -Architecture: all -Breaks: tellico (<< 1.1.6-1) -Replaces: tellico (<< 1.1.6-1) -Depends: kdelibs5-data, ${misc:Depends} -Recommends: tellico -Suggests: python -Description: Collection manager for books, videos, music, etc [data] - Tellico is a collection manager for KDE. It includes default collections for - books, bibliographies, comic books, videos, music, coins, stamps, trading - cards, and wines. - . - Tellico capabilities include: - . - * creation of user-defined custom collections with unlimited fields, - * automatically formatted names, - * sorting and filtering by any field or property, - * ISBN validation, - * full customization for printing or display through XSLT files, - * import and export of CSV, RIS, BibTeX and BibTeXML files, - * import data from Amazon, IMDb, CDDB or any US-MARC compliant z39.50 server. - . - Tellico files are stored in XML format, avoiding the need for a database - server, and allowing other software applications to use the data. - . - This package contains the architecture independent files, such data files and - documentation. - -Package: tellico-scripts -Architecture: all -Depends: ${misc:Depends} -Breaks: tellico-data (<= 1.3.1-2) -Replaces: tellico-data (<= 1.3.1-2) -Recommends: tellico -Suggests: python, ruby -Description: Collection manager for books, videos, music, etc [scripts] - Tellico is a collection manager for KDE. It includes default collections for - books, bibliographies, comic books, videos, music, coins, stamps, trading - cards, and wines. - . - Tellico capabilities include: - . - * creation of user-defined custom collections with unlimited fields, - * automatically formatted names, - * sorting and filtering by any field or property, - * ISBN validation, - * full customization for printing or display through XSLT files, - * import and export of CSV, RIS, BibTeX and BibTeXML files, - * import data from Amazon, IMDb, CDDB or any US-MARC compliant z39.50 server. - . - Tellico files are stored in XML format, avoiding the need for a database - server, and allowing other software applications to use the data. - . - This package contains the scripts to import data from external sources, such - as websites. As the format of the data may change, these scripts are provided - as a separate package which can be updated through debian-volatile. diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index e981a86f..00000000 --- a/debian/copyright +++ /dev/null @@ -1,60 +0,0 @@ -This package was debianized by Regis Boudin on -Mon, 12 May 2003 22:50:38 +0100. - -It was downloaded from http://www.periapsis.org/tellico - -Upstream Author: Robby Stephenson - -Copyright: 2001-2009 by Robby Stephenson - - This package 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; version 2 dated June, 1991. - - This package is distributed in the hope that 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 package; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02111-1301, USA. - -On Debian systems, the complete text of the GNU General -Public License can be found in `/usr/share/common-licenses/GPL-2'. - ----------------------------------------------------------------------------- - -In addition, as a special exception, the author gives permission to -link the code of this program with the OpenSSL library released by -the OpenSSL Project (or with modified versions of OpenSSL that use -the same license as OpenSSL), and distribute linked combinations -including the two. You must obey the GNU General Public License in -all respects for all of the code used other than OpenSSL. If you -modify this software, you may extend this exception to your version of, -but you are not obligated to do so. If you do not wish to do so, -delete this exception statement from your version. - ----------------------------------------------------------------------------- - -The src/3rdparty/btparse directory contains a minimal version of the -btparse library, copyright 1999 by Greg Ward, which can be found at -http://www.gerg.ca/software/btOOL/ -Version 0.33 of the btparse library was imported into the Bookcase -source code tree in October 2003. The following changes have been -made: - -- All non-source code files were removed. -- The c++ reserved word 'class' was changed to 'errclass'. -- The files bt_config.h and my_dmalloc.h were removed, along with all - references to them. Some of the definitions in bt_config.h were - moved to btparse.h. -- Some included files were changed in ast.c. - -The btparse source code was originally licensed under the terms of -the GNU Lesser General Public License (LGPL). Persuant to clause 3 of -the LGPL, this static version of btparse is being redistributed within -a software application under the terms of the GNU General Public -License (GPL). - diff --git a/debian/menu b/debian/menu deleted file mode 100644 index 4014ce08..00000000 --- a/debian/menu +++ /dev/null @@ -1,5 +0,0 @@ -?package(tellico):needs="X11"\ - section="Applications/Office"\ - title="Tellico"\ - icon="/usr/share/pixmaps/tellico.xpm"\ - command="/usr/bin/tellico" diff --git a/debian/patches/series b/debian/patches/series deleted file mode 100644 index 2a36dd17..00000000 --- a/debian/patches/series +++ /dev/null @@ -1,6 +0,0 @@ -# -# a quilt(1) patch 'series' file -# -unclean -# -# l l diff --git a/debian/patches/unclean b/debian/patches/unclean deleted file mode 100644 index 4ffe5ef3..00000000 --- a/debian/patches/unclean +++ /dev/null @@ -1,5159 +0,0 @@ -Description: unclean upstream tarball - Upstream tarball ships with generated files. - Upon `dh clean` are those removed - Then `dpkg-source` detects the difference, reports it and aborts. - This patch is a workaround for that. - . - To find out if this patch is still needed, check by - uncomment it in debian/patches/series and run - dpkg-source -b . -Author: Geert Stappers -Last-Update: 2017-06-03 - - - Origin: , - Bug: - Bug-Debian: https://bugs.debian.org/ - Bug-Ubuntu: https://launchpad.net/bugs/ - Forwarded: - Reviewed-By: - ---- /dev/null -+++ tellico-3.0.2/doc/advanced.docbook -@@ -0,0 +1,150 @@ -+ -+Advanced Usage -+ -+ -+Command Line Options -+ -+ -+When running &appname; from the command line, there are several options for opening data files. They may be seen by running tellico --help. -+ -+ -+ -+Usage: tellico [options] [filename] -+ -+Tellico - a KDE collection manager -+ -+Options: -+ --nofile Do not reopen the last open file -+ --bibtex Import <filename> as a bibtex file -+ --mods Import <filename> as a MODS file -+ --ris Import <filename> as a RIS file -+ -+Arguments: -+ filename File to open -+ -+ -+ -+ -+ -+&DBus; Interface -+ -+ -+&appname; has a minimal &DBus; interface, which can be useful for scripting or interacting with a running application from the command-line. As with all &DBus; calls, you need to specify the service you want to interface with, and the particular interface. The name of the &DBus; service is org.kde.tellico. -+ -+ -+ -+&DBus; Commands -+ -+Two &DBus; primary objects are available in the tellico interface: Tellico and Collections. -+ -+ -+The <constant>Tellico</constant> Object -+ -+The full list of &DBus; commands in the tellico object is shown below: -+ -+ -+bool importTellico(QString file, QString action) -+bool importBibtex(QString file, QString action) -+bool importMODS(QString file, QString action) -+bool importRIS(QString file, QString action) -+bool exportXML(QString file) -+bool exportZip(QString file) -+bool exportBibtex(QString file) -+bool exportHTML(QString file) -+bool exportCSV(QString file) -+QList<int> selectedEntries() -+QList<int> filteredEntries() -+void openFile(QString file) -+void setFilter(QString text) -+bool showEntry(int id) -+ -+ -+ -+For the four import commands, the first argument is the file to import, and the second is the import action. Three actions are available: replace, append, and merge. Four file formats are supported for importing: Tellico &XML; files, Bibtex files, MODS files, and RIS files. -+ -+ -+ -+The current open collection in &appname; may be exported to a file, in either Tellico &XML; format, Tellico ZIP format, Bibtex, &HTML;, or comma-separated values (CSV). -+ -+ -+A list of the entry IDs currently selected or being filtered is able to facilitate showing or updating entries in the view. -+ -+ A new data file may be opened by using the openFile() command. The full path must be specified. -+ -+A new filter may be set using the setFilter() command, which is the equivalent of typing in the filter box in the main window. -+ -+Given an entry ID, showEntry() will select that entry and show the entry details in the main window. -+ -+ -+ -+The <constant>Collections</constant> Object -+ -+The full list of &DBus; commands in the Collections object is shown below: -+ -+ -+int addEntry() -+bool removeEntry(int entryID) -+QStringList allValues(QString fieldName) -+QStringList entryValues(int entryID, QString fieldName) -+QStringList selectedBibtexKeys() -+QString entryBibtexKey(int entryID) -+bool setEntryValue(int entryID, QString fieldName, QString value) -+bool addEntryValue(int entryID, QString fieldName, QString value) -+ -+ -+ -+A new empty entry may be created in the current collection using the addEntry() command. The return value is the entry ID, which can then be used to set the field values in the entry. An entry can be deleted from the collection by calling removeEntry(). -+ -+ -+ -+Calling allValues() using just a field name will return all the values for that field for the currently selected entries. If no entries are selected, the return list is empty. If an entry ID is included in the command, the field values for that specific entry are returned. -+ -+ -+ -+If the current collection is a bibliography, calling selectedBibtexKeys() will return the Bibtex citation key for all selected entries. The bibtexKey for a specific entry may be found by using the entryBibtexKey() command. -+ -+ -+ -+Entries can be edited directly with the &DBus; interface. Given an entry ID, setEntryValue() will set the field value directly. To add a value, without affecting the existing values, use addEntryValue(). The new value gets appended to the end of the existing list. -+ -+ -+ -+ -+ -+ -+&DBus; Examples -+ -+ -+Here are some examples for scripting &appname; using the &DBus; interface. -+ -+ -+ -+Open a Bibtex file -+% qdbus org.kde.tellico /Tellico org.kde.tellico.importBibtex "/home/robby/reference.bib" "replace" -+true -+ -+ -+ -+Export a Bibtex file -+% qdbus org.kde.tellico /Tellico org.kde.tellico.exportBibtex ~/documents/reference.bib -+true -+ -+ -+ -+Echo the citation key of the current selection -+% qdbus org.kde.tellico /Collections org.kde.tellico.selectedBibtexKeys -+stephenson2004 -+ -+ -+ -+Add a new entry and set the title -+% myid=`qdbus org.kde.tellico /Collections org.kde.tellico.addEntry` -+% qdbus org.kde.tellico /Collections org.kde.tellico.setEntryValue $myid title "My New Book" -+true -+ -+ -+ -+ -+ -+ -+ ---- /dev/null -+++ tellico-3.0.2/doc/configuration.docbook -@@ -0,0 +1,482 @@ -+ -+Configuration -+ -+ -+The Configuration Dialog contains all the options for -+changing some of the default behaviour of &appname;. -+ -+ -+ -+Clicking the Apply button causes the changes to -+take effect immediately without closing the dialog, while -+OK applies the changes and closes the dialog. Cancel closes the dialog, but any changes already made -+and applied will remain. The Defaults button reverts -+the options on the current page of the dialog to their default values, -+while Help opens the &khelpcenter; to -+the relative section of the &appname; manual. -+ -+ -+ -+Some minor settings can only be changed by editing the configuration file itself. See Hidden Options. -+ -+ -+ -+<guilabel>General Options</guilabel> -+ -+ -+The General Options Dialog -+ -+ -+The General Options Dialog -+ -+ -+ -+ -+The General Options control the general behavior. Images may be included -+in the data files, or saved separately in the &appname; application folder. Also, when &appname; -+is started, it can automatically reopen the last data file that was open. The -+Tip of the Day dialog contains helpful hints on using &appname; -+and appears at program startup. You may want to read through some of the hints and -+then disable the dialog. -+ -+ -+ -+The Formatting Options control the level of automatic formatting -+that &appname; does. For examples, see the Field -+Formatting section. Capitalization and formatting are distinct options, since -+a field may be capitalized without having the order of the words changed, and -+vice-versa. The auto-capitalization can be changed to ignore certain words. -+The automatic formatting includes grammatical articles in titles, -+along with prefixes and suffixes for personal names. The values are case-insensitive, -+and should be separated by a semi-colon. -+ -+ -+ -+The formatting rules follow general English usage, which may not work for other languages. -+Articles are appended to the end of the title, with a comma. Personal names are formatted -+to have the last name first, followed by a comma, then the first name. Personal suffixes, -+such as Jr., are kept with the last name. Prefixes, such as von, -+are kept with the last name, but are ignored when the values are being sorted. -+ -+John Q. von Public, III would become -+von Public, III, John Q. and Public would -+be used as the sort key. -+ -+ -+Only single word prefixes are supported. If a name includes van der, -+for example, both van and der should be included -+in the surname prefix list. Articles ending with an apostrophe are supported for sorting -+order, as well. -+ -+ -+The actual values in the collection are not changed, -+only the visible text used for the interface. So the formatting options can be -+changed back and forth without affecting any of the data in the collection. -+ -+ -+ -+ -+<guilabel>Printing Options</guilabel> -+ -+ -+&appname; uses an &xslt; template for creating &HTML; -+and then passes that to the &kde; printing service. Only the fields visible in the Column View are printed. Furthermore, if the collection -+is being filtered, only the visible entries will be printed. Initially, a warning message -+is shown if filtering is active. -+ -+ -+ -+The Print Options Dialog -+ -+ -+The Print Options Dialog -+ -+ -+ -+ -+The Printing Options allow you to change some formatting when -+printing a collection. If Format titles and names is checked, -+then the fields are auto-formatted when they -+are printed. Otherwise, they are printed exactly as they were entered. -+ -+ -+ -+The default printing stylesheet prints the collection with the field values in columns. -+Print field headers controls whether the field title is printed -+at the top of the column. -+ -+ -+ -+In the printout, the entries will be sorted as they are in the Column View. Additionally, they may be grouped as they are in the Group View. -+ -+ -+ -+Finally, when image fields are included in the printout, the images may be resized, -+while maintaining their aspect ratio. The maximum image width and height define the -+largest possible size of the image, though it will never be increased. -+ -+ -+ -+ -+<guilabel>Template Options</guilabel> -+ -+ -+The Entry View uses templates to show the field -+values. You can specify a different template for each collection type. Some templates, -+such as the Album or Video templates are -+for a specific collection type, and a short error message will appear in the -+Entry View if they are used for other types. The -+Preview button pops up a window to show you a preview of what the template looks like. -+Custom fonts and colors may be passed to the template, and all of the default templates -+will honor those settings. However, custom template may choose to ignore them. -+ -+ -+Additional templates may be installed directly, or downloaded from -+store.kde.org by clicking -+the Download button. Any templates installed by the user may also be deleted. -+Entry templates are saved in $KDEHOME/share/apps/tellico/entry-templates/. -+ -+ -+If you create a new template, please consider submitting it at store.kde.org! -+ -+ -+The Template Options Dialog -+ -+ -+The Template Options Dialog -+ -+ -+ -+ -+ -+ -+<guilabel>Data Sources Options</guilabel> -+ -+ -+&appname; can use various sources for importing data, which can be configured -+in the Data Sources Dialog. There are many available types and sources. A few of them are listed below. -+ -+ -+Amazon.com Web Services, -+the Internet Movie Database, -+z39.50 servers, -+SRU servers, -+Entrez (PubMed) databases, -+AnimeNfo.com, -+Internet Bookshop Italia, -+ISBNdb.com, -+arxiv.org, -+bibsonomy.org, -+crossref.org, -+Discogs.com, -+Wine.com, -+TheMovieDB.org, -+TheGamesDB.net, -+OMDBAPI.com, -+MusicBrainz.org, -+GiantBomb.com, -+OpenLibrary.org, -+other external scripts or applications, and -+combinations of any of the above sources. -+ -+ -+ -+The Data Sources Options Dialog -+ -+ -+The Data Sources Options Dialog -+ -+ -+ -+ -+New sources may be added by clicking the New... button, while -+existing ones may be modified or deleted, using the Modify... or -+Delete buttons. The order of the sources, which shows up in the -+entry updating menus, can also be changed. -+ -+ -+ -+Additional templates may be downloaded from the author's online repository by clicking -+the Download button. Those scripts are gpg-signed by the author to -+guard against dangerous scripts from unknown sources, which could cause damage to your system. -+ -+ -+ -+ -+Never install and run a script from an untrusted source. They are executed with the same permissions as the user, -+and as a result, could modify or delete files or otherwise mess up your system. -+ -+ -+ -+ -+Many of the data sources offer more information than the default fields in &appname;. Those other fields are -+shown on the right of the configuration box. If any of those fields are checked, they will be added -+to the collection when an entry is added from that source. -+ -+ -+ -+ -+ -+Book and Bibliographic Data Sources -+ -+ -+z39.50 Servers -+ -+ -+The z39.50 protocol is used to access libraries and bibliographic information providers around the world. Lists of public z39.50 servers are available from indexdata.dk, among others. &appname; comes with -+several preset configurations for major libraries, or you can specify the connection information manually. -+ -+&appname; -+is able to read data in the MODS, USMARC/MARC21, or UNIMARC format, using the yaz library. -+In addition, there is limited support for the GRS-1 format. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+To use one of the preset libraries, check the box and then select the library. The other configuration entries will be disabled. If you need to set the information manually, uncheck the preset box. -+ -+ -+ -+The default port for z39.50 access is 210, but some servers may use a different one. &appname; assumes the server uses the MARC-8 character encoding, unless configured otherwise. If an incorrect character encoding is used, an error message may appear on the program output, or possibly no entries are retrieved. -+ -+ -+ -+Some servers require a username and password for access. &appname; can use and save that password, but be aware that is written to the &appname; configuration file in plain text and is not secure. For most public servers, the username and password fields may be left empty. -+ -+ -+ -+ -+ -+SRU Servers -+ -+ -+SRU stands for Search/Retrieve via &URL; and is a standard search protocol for -+Internet searches. Some libraries use it for providing access to their data catalogs. Among them, the US Library of Congress is probably -+the best known. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+Entrez Databases -+ -+Entrez is the integrated, text-based search and retrieval system used at the National Center for Biotechnology Information (NCBI). The most well-known Entrez database is PubMed, the database for life science articles from many biological journals. At the moment, the only Entrez database supported by &appname; is PubMed. -+ -+ -+ -+Bibliographic Databases -+ -+arXiv.org, Bibsonomy, and CrossRef are online databases for academic articles and bibliographic information. For access to the CrossRef source, you must request an account and add your account information to the data source configuration. -+ -+ -+ -+Internet Bookstore Italia -+ -+IBS, or Internet Bookstore Italia, is an online Italian bookstore. -+ -+ -+ -+ -+ISBNdb.com -+ -+ISBNdb.com is an online book database, with data collection libraries around the world. -+ -+ -+ -+ -+OpenLibrary.org -+ -+OpenLibrary.org is an online book database that aims to have one page for every book. -+ -+ -+ -+ -+ -+ -+ -+ -+Comic Book Data Sources -+ -+ -+AnimeNfo.com -+ -+AnimeNfo is a popular site for information on anime, or Japanese animation. -+ -+ -+ -+ -+ -+ -+ -+Movie Data Sources -+ -+ -+Internet Movie Database -+ -+ -+The Internet Movie Database provides information about movies and videos. When a search is conducted for a Person, if more than one possible result is returned, a dialog box is opened to allow you to select the correct person. The configuration options include selecting which IMDb nationality to use and whether images are fetched or not. Since IMDb can return a large number of cast members, you can limit that to a certain number. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+TheMovieDB.org -+ -+TheMovieDB.org is a free and open online movie database. Registration for a free account is required. -+ -+ -+ -+ -+OMDBAPI.com -+ -+The Open Movie Database is a free web service to obtain movie information. -+ -+ -+ -+ -+ -+ -+ -+Music Data Sources -+ -+ -+Discogs.com -+ -+Discogs.com is a user-built music database containing information on artists, labels, and their recordings. Registration for a free account is required. -+ -+ -+ -+ -+MusicBrainz.org -+ -+MusicBrainz.org is a community music metadatabase that attempts to create a comprehensive music information site. -+ -+ -+ -+ -+ -+ -+ -+Wine Data Sources -+ -+ -+Wine.com -+ -+Wine.com is an online wine seller, and offers access to a database information on wine varietals. Registration for a free account is required. -+ -+ -+ -+ -+ -+ -+ -+Video Game Data Sources -+ -+ -+GiantBomb.com -+ -+GiantBomb.com is a large community-driven video game database. Registration for a free account is required. -+ -+ -+ -+ -+TheGamesDB.net -+ -+TheGamesDB.net is an open, online database for video game fans. -+ -+ -+ -+ -+ -+ -+ -+Data Sources for Multiple Collection Types -+ -+ -+Amazon.com -+ -+ -+Using the Amazon Web Services, &appname; can search any of nine different international sites operated by Amazon.com for information: United States, United Kingdom, Germany, Japan, -+France, Canada, China, Spain, and Italy. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+Configuring each Amazon.com source involves three settings: the server location, image size, and associate's ID. Some information -+from Amazon.com may include an image, such as a book or video cover. That image may be downloaded in three different sizes, depending on the item. The associate's ID must be used to access the Amazon.com Web Services, and is included in the links back to the item, as dictated by the license agreement for the use of the Amazon.com Web Services. -+ -+ -+ -+ -+ -+External Scripts or Applications -+ -+As an easier way for &appname; to integrate with third-party plugins, external scripts or applications may be used as an interface for searching other information sources. &appname; will execute a command, and pass the search terms as command-line options. -+ -+ -+Some scripts are distributed with &appname; itself. Allocine.fr is an French website for movies. The Spanish Ministry of Culture is an online Spanish book database. Dark Horse Comics is a comic book publisher. All three of those data sources require Python. BoardGameGeek is a website with extensive data for board games, and the script requires ruby. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+The collection type returned by the script must be set, along with the data format. Not only can &appname; import data from scripts that -+use the default &appname; &XML; format, but it can also import other formats as well, such as bibtex. -+ -+ -+The full path to the application should be entered in the source options. Be aware that the application is executed on the system with the same permissions as the current user, so do not use scripts from untrusted sources. Check the boxes next to the search keys supported by the application, and enter the required command line options in the edit box. The search value will be inserted where %1 appears. -+ -+ -+ -+For updating entries already in the collection, the final check box and edit box are used to determine the command-line options. The entry fields used to find an update must be entered, in the same format as used for derived value fields. -+ -+ -+ -+ -+ -+ -+Multiple Combined Data Sources -+ -+Combinations of up to eight existing data sources can be used as a single source, where the search results from all the sources are merged. The collection type to be used must be set before adding sources. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+Only existing data sources can be used in combination. The search request is sent to each source, and the results are combined. Since the merged results depend on the order of the search results, the combined set may be different depending on network and source speed. -+ -+ -+ -+ -+ -+ ---- /dev/null -+++ tellico-3.0.2/doc/details.docbook -@@ -0,0 +1,564 @@ -+ -+&appname; Details -+ -+ -+Field Types -+ -+ -+Each collection may have an unlimited number of fields. &appname; supports -+eleven types of fields, which allow for a range of different data. -+ -+ -+ -+Simple Text -+ -+ -+The most basic field type is called Simple Text. -+No restrictions are placed on the field values, and the data entry -+widget is the standard line edit. This type is appropriate for fields -+which aren't expected to have long values, such as the author or the genre. -+ -+ -+ -+ -+Number -+ -+ -+The Number type is identical to the -+Simple Text, except that the data is restricted -+to being numerical. Entries will be sorted numerically in the column -+view if a Number field column is clicked. The -+standard line edit, with small arrow buttons for increasing or decreasing -+the value, is used for data entry. No formatting is ever -+applied. -+ -+ -+ -+ -+&URL; -+ -+ -+The &URL; type allows for links to other documents, -+using the standard &kde; file type associations for opening the linked -+documents. No validation is done on the actual value of a -+&URL; field, but non-valid links are not -+opened. The data entry is a line edit with a button for opening the -+standard File-Open dialog, but any &URL; may be used. Relative &URL;s are -+interpreted relative to the location of the data file, once it has been saved. -+ -+ -+ -+In the Entry Editor, -+the label becomes the link, while in the Entry View, an actual -+hyperlink is used. This field type is convenient for linking to PDF -+files of bibliographic entries, or to movie reviews, for example. No -+formatting is ever applied. -+ -+ -+Relative &URL;s may also be used. They are interpreted relative to the location of the -+&appname; data file. In the Entry Editor, the line -+edit provides auto-completion for local file locations. If you want the &URL; from the &kde; -+File Selector Dialog Box to be interpreted relative to the document location, then a -+property for the &URL; field should be set to relative : true. -+ -+ -+ -+ -+ -+Paragraph -+ -+ -+For longer text fields, the Paragraph type offers -+a larger text edit area, and is always in its own category. A -+Paragraph field may not have multiple values, nor -+is it automatically formatted. It cannot be used for grouping. Abstracts, plot -+summaries, or reviews should be entered using this field type. -+ -+ -+ -+ -+Choice -+ -+ -+When a field should be limited to a few preset values, a -+Choice type is used. The acceptable values are -+presented in a drop down box for selection. Obviously, multiple values -+are not applicable. Fields such as bibliography type or personal rating -+are Choice-type fields. -+ -+Semi-colons should be used to separated the allowed values. -+ -+ -+ -+ -+Checkbox -+ -+ -+For fields which take a yes or no value, the -+Checkbox type is available. By default, the field -+is toggled off. Checkbox fields are not formatted -+and are limited to single values. Internally, the field values are -+carried as true or -+false. Some examples are gift or loaned -+fields. -+ -+ -+ -+ -+Date -+ -+ -+A Date field can include a day, month, and year. The date is shown in the standard format of YYYY-MM-DD, which allows for easy sorting. The standard &kde; Date Selector may be used to choose the date with the mouse, or it may be entered directly. The field is not required to have non-empty values for the year, month, and day; only the year may be entered, for example. Multiple values are not allowed. -+ -+ -+ -+ -+ -+Table -+ -+ -+Table fields hold a one or more columns of values. -+In the Entry Editor, the field is presented using a -+spreadsheet-like view, with numbered rows. When the last row is selected, an additional -+row is then added. Auto-completion is not available. -+This field is useful for a list of chapters in a book, scenes in a movie, or songs in an album. -+Table fields are always a category by themselves. -+ -+ -+ -+The number of columns, up to a maximum of ten, is defined by adding a property to the field -+definition with the name columns. The columns may be labeled by right-clicking -+on the header, or by setting a field property named column1, etc. -+ -+ -+ -+When using the Entry Editor for Table fields, rows may be rearranged by dragging -+the mouse while holding the &Ctrl; button. A popup menu is also available by right-clicking on the table, -+which allows rows to be inserted or removed. -+ -+ -+ -+ -+ -+Image -+ -+ -+Image fields hold an image, of any format supported by &kde;. -+Some of the typical ones include PNG or JPEG. -+The image can be saved inside the &appname; data file itself or in the application data -+directory. The standard &kde; File Selector is used, so you can use a &URL; or just a -+file available locally. Images can also be dragged from a file manager or browser. -+ -+ -+ -+ -+ -+Rating -+ -+ -+Rating fields show a number of stars to represent a numerical rating -+for an entry. By default, the rating is a maximum of five. The minimum and maximum may be -+changed by setting properties in the field definition in the Collection Fields Dialog, named -+minimum and maximum, respectively. -+ -+ -+ -+ -+ -+Derived Value Fields -+ -+ -+Fields with derived values are a special case. The field type corresponds to the typical type of value -+contained in the field, but the value of the field is constructed from other fields using a format -+string in the field description. For example, if the field has -+a value template of %{title} %{year}, then the value of that field will -+be the title, followed by the year. This field type is used primarily for the title field in -+the coin, stamp, trading card, and wine collections. Either the internal field name or the field title -+may be used in the description for formatting. -+ -+ -+ -+To select only a single value for a field with multiple values, add a position index to the template, -+such as %{author:1} for the first author. The position may be negative, -+counting from the end, so %{author:-1} would be the last author. Upper and -+lower-case values may be used by setting template flags, such as %{author:1/l} -+for lower-case first author and %{author:1/u} for upper-case. -+ -+ -+ -+ -+ -+ -+ -+Collection Types -+ -+ -+&appname; supports twelve specific collection types by default: books, bibliographic entries, comic books, videos, music, video games, trading cards, coins, stamps, wines, board games, and file catalogs. In addition, an empty generic collection template is available for any other collectibles. The default collections are only meant to include a general set of fields. You should add, modify, or delete them to fit your needs. The only requirement is that a collection should always have a Title field, so that the Group View works correctly. For some collection types, that is just a derived value field combining two or more of the others. -+ -+ -+ -+In general, there's no functional difference between the collection types. You could create a custom collection for your books just as easily as using the default book collection. But &appname; chooses icons based on collection type, and there may be some specialized functionality that is unique to a certain collection, so if you can, you should use the defaults. So, if you want to create a wine collection, but don't like any of the default fields, go ahead and create a default wine collection, then delete all the defaults. That way, &appname; still knows that it's a wine collection. -+ -+ -+ -+By default, all the collection types include an ID field, which shows the ID number of the entry. In addition, except for the file catalog, each collection includes fields showing the date that the entry was created in the collection and the last time that it was modified. -+ -+ -+ -+Book Collections -+ -+Book collections have 27 default fields: -+Title, -+Subtitle, -+Author, -+Binding, -+Purchase Date, -+Purchase Price, -+Publisher, -+Edition, -+Copyright Year, -+Publication Year, -+ISBN#, -+LCCN#, -+Pages, -+Language, -+Genre, -+Keywords, -+Series, -+Series Number, -+Condition, -+Signed, -+Read, -+Gift, -+Loaned, -+Rating, -+Front Cover, -+Plot Summary, and -+Comments. -+ -+ -+ -+The ISBN# field is special, since ISBN numbers are automatically formatted and the check-digit is calculated. &appname; recognizes the ISBN field if its internal field name is isbn. If you have deleted it, or need to add it to another type of collection, create the field with the title as ISBN and apply the change, then you can return and modify the title as you want. &appname; creates the internal name based on the initial title, but never changes it if the title is later updated. -+ -+ -+ -+ -+ -+Bibliographies -+ -+Bibliographies have 25 default fields: -+Title, -+Entry Type, -+Author, -+Bibtex Key, -+Book Title, -+Editor, -+Organization, -+Publisher, -+ISBN#, -+Address, -+Edition, -+Pages, -+Year, -+Journal, -+Month, -+Number, -+How Published, -+Chapter, -+Series, -+Series Number, -+Volume, -+Cross-Reference, -+Keywords, -+Abstract, and -+Notes. -+ -+ -+ -+Although bibliographic collections are not specifically linked to bibtex, the default set of fields is taken from a typical set of bibtex fields. When exporting to bibtex, a property called bibtex is used for each field to define the corresponding bibtex field. If you add an additional field to a bibliography and want to export it to bibtex, be sure to set the bibtex property. -+ -+ -+ -+&appname; does have some specialized functions for bibliographies. Bibtex string macros can be added, modified, or deleted from within &appname; and the bibtex export gives you the option of expanding the macros. Bibtex citations can be pushed to an external application such as LyX or Kile using the so-called lyxpipe. -+ -+ -+ -+Book collections can be converted to bibliographies. Default bibtex fields are added, and the bibtex properties are set. This functionality exists primarily to convert old collections, before the bibliography type was separated from the book collection type. -+ -+ -+ -+ -+Comic Book Collections -+ -+Comic book collections have 23 default fields: -+Title, -+Subtitle, -+Writer, -+Artist, -+Series, -+Issues, -+Publisher, -+Edition, -+Publication Year, -+Pages, -+Country, -+Language, -+Genre, -+Keywords, -+Condition, -+Purchase Date, -+Purchase Price, -+Signed, -+Gift, -+Loaned, -+Front Cover, -+Plot Summary, and -+Comments. -+ -+ -+ -+ -+ -+Video Collections -+ -+Video collections have 30 default fields: -+Title, -+Medium, -+Production Year, -+Certification, -+Genre, -+Region, -+Nationality, -+Format, -+Cast, -+Director, -+Producer, -+Writer, -+Composer, -+Studio, -+Language Tracks, -+Subtitle Languages, -+Audio Tracks, -+Running Time, -+Aspect Ratio, -+Widescreen, -+Color Mode, -+Director's Cut, -+Plot Summary, -+Personal Rating, -+Purchase Date, -+Purchase Price, -+Gift, -+Loaned, -+Cover, and -+Comments. -+ -+ -+ -+The Cast field is a table with two columns, and the name of the actor is intended to be in the first column, with their role in the second. The Running Time is meant to be in minutes, though you can change that, of course. -+ -+ -+ -+ -+Music Collections -+ -+Music collections have 15 default fields: -+Title, -+Medium, -+Artist, -+Label, -+Year, -+Genre, -+Tracks, -+Rating, -+Purchase Date, -+Purchase Price, -+Gift, -+Loaned, -+Keywords, -+Cover, and -+Comments. -+ -+ -+ -+ -+ -+Game Collections -+ -+Video game collections have 16 default fields: -+Title, -+Platform, -+Genre, -+Release Year, -+Publisher, -+Developer, -+ESRB Rating, -+Description, -+Personal Rating, -+Completed, -+Purchase Date, -+Purchase Price, -+Gift, -+Loaned, -+Cover, and -+Comments. -+ -+ -+ -+ -+ -+Card Collections -+ -+Trading card collections have 17 default fields: -+Title, -+Player, -+Team, -+Brand, -+Card Number, -+Year, -+Series, -+Card Type, -+Purchase Date, -+Purchase Price, -+Location, -+Gift, -+Keywords, -+Quantity, -+Front Image, -+Back Image, and -+Comments. -+ -+ -+ -+ -+ -+Coin Collections -+ -+Coin collections have 16 default fields: -+Title, -+Type, -+Denomination, -+Year, -+Mint Mark, -+Country, -+Coin Set, -+Grade, -+Grading Service, -+Purchase Date, -+Purchase Price, -+Location, -+Gift, -+Obverse, -+Reverse, and -+Comments. -+ -+ -+ -+ -+ -+Stamp Collections -+ -+Stamp collections have 18 default fields: -+Title, -+Description, -+Denomination, -+Country, -+Issue Year, -+Color, -+Scott#, -+Grade, -+Cancelled, -+Hinged, -+Centering, -+Gummed, -+Purchase Date, -+Purchase Price, -+Location, -+Gift, -+Image, and -+Comments. -+ -+ -+ -+ -+ -+Wine Collections -+ -+Wine collections have 15 default fields. -+Title, -+Producer, -+Appellation, -+Varietal, -+Type, -+Country, -+Purchase Date, -+Purchase Price, -+Location, -+Quantity, -+Drink By, -+Rating, -+Gift, -+Label Image, and -+Comments. -+ -+ -+ -+ -+ -+Board Game Collections -+ -+Board game collections have 17 default fields. -+Title, -+Genre, -+Mechanism, -+Release Year, -+Publisher, -+Designer, -+Number of Players, -+Playing Time, -+Minimum Age, -+Description, -+Rating, -+Purchase Date, -+Purchase Price, -+Gift, -+Loaned, -+Cover, and -+Comments, -+ -+ -+ -+ -+ -+File Catalogs -+ -+File catalogs have 14 default fields. -+Name, -+&URL;, -+Description, -+Volume, -+Folder, -+Mimetype, -+Size, -+Permissions, -+Owner, -+Group, -+Created, -+Modified, -+Meta Info, and -+Icon, -+ -+ -+ -+ -+ -+Custom Collections -+ -+Custom collections have one default field, the Title. They should be used when the collectible item is not one of the default types. -+ -+ -+ -+ -+ -+ -+ ---- /dev/null -+++ tellico-3.0.2/doc/faqs.docbook -@@ -0,0 +1,232 @@ -+ -+Questions and Answers -+ -+ -+ -+ -+ -+ -+ -+How do I enter multiple authors? -+ -+ -+ -+Author names should be separated by a semi-colon, like so: -+Brian W. Kernighan; Dennis M. Ritchie. Don't -+include the word "and" or anything similar, even if you have 20 -+authors. If you have the auto-format option checked, then the last -+name will automatically be shown first for each author. -+ -+Other properties which allow multiple values, like "genre" and -+"keywords", are entered in the same way, with a semi-colon (;) -+separating each value. -+ -+ -+ -+ -+ -+ -+Can I modify what the printed page looks like? -+ -+ -+ -+Yes, most certainly. Find the file tellico-printing.xsl which -+ should be in the $KDEDIR/share/apps/tellico/ directory. You can copy -+ that to $KDEHOME/share/apps/tellico/ for personal modifications. -+ You'll have to know &xslt;, but modifying that file -+ is how you change the printing layout. &HTML; is generated from the -+ file, and the easiest way to change the appearance of the printout is -+ to modify the &CSS; in the top portion. -+ -+Be aware that the tellico-printing.xsl references another file, tellico-common.xsl, that contains some common &xslt; templates. If you copy -+tellico-printing.xsl to $KDEHOME, you must either modify the <xsl:import> element to point to the actual location of the tellico-common.xsl file or copy the common file as well. -+ -+ -+ -+ -+ -+How do I group by a property other than the ones listed in the toolbar? -+ -+ -+ -+To allow grouping by a field which doesn't allow grouping by default, check the -+"Allow Grouping" box for that particular field in the "Collection Fields" dialog. -+ -+ -+ -+ -+ -+Why does all that gobbledy-gook show up when I run &appname;? -+ -+Stuff like: -+ -+Tellico::updateCollectionToolBar -+GroupView::setGroupAttribute - author -+GroupView::slotAddCollection -+QCheckBox::property( "title" ) failed: property invalid -+or does not exist -+ -+ -+is debug info. At compile time, this can be stopped by compiling with -+the flag. You -+might also want to use -+, too, which -+takes a bit more memory when compiling, but is more efficient when -+running the application. -+ -+The last message is slightly different, it just means your &Qt; -+ installation was compiled with some debugging information. -+ -+Or, if &appname; is already installed, run -+kdebugdialog and make sure -+that "0 (generic)" is unchecked. That turns off debug messages from -+all generic &kde; apps &ie; those not distributed officially by -+&kde;. -+ -+ -+ -+ -+ -+How do I change which columns are shown? -+ -+Right-click on the header bar. You can also drag the headers to re-order -+the columns, and click on them to sort by that field. -+ -+ -+ -+ -+How do I filter by something like the "Read" -+field? -+ -+Internally, the checkbox -+fields in &appname; are saved as "true", so if you'd like to filter -+to show only the science fiction books which you've not read, for -+example, then you have two rules. Make sure the "Match all of the -+following" button is checked. Set the first rule to have "Genre" -+"contains" "Science Fiction" (no quotes) and the second rule to have -+"Read" "does not contain" "true" (no quotes). -+ -+Also, the quick filter in the toolbar will match any field, -+and if there is a non-word character, the text is interpreted as a -+regular expression. So if you quickly want to filter your books to -+show those by Weber or Bujold, then type "weber|bujold" (no quotes) in -+the toolbar. -+ -+ -+ -+ -+How do I add new entry templates? -+ -+ -+Entry templates should be saved in -+$KDEHOME/share/apps/tellico/entry-templates/ -+for access for a single user or -+$KDEDIR/share/apps/tellico/entry-templates/ -+for access by everyone. Templates in $KDEHOME will -+override any files by the same name in $KDEDIRS. The -+entry templates can be set on a per collection-type basis in the -+settings dialog. -+ -+Templates for the Report Dialog are saved in $KDEHOME/share/apps/tellico/report-templates/. -+ -+ -+ -+ -+ -+Compiling and installing went -+fine, but when &appname; starts up, the window is blank. What's -+wrong? -+ -+ -+&kde; programs look for data in the locations defined in the -+ $KDEDIRS environmental variable. If you install in -+ /usr/local for example, but -+ $KDEDIRS is empty or just /usr, -+ then &appname; won't be able to find the files it needs. This is -+ particularly true for &SuSE;, for which you should compile with -+ =/opt/kde3. Alternatively, -+ you could add a line to your .profile file to -+ set $KDEDIRS. Check the documentation for your -+ shell. -+ -+ -+ -+ -+How do I export additional bibtex fields? -+ -+&appname; uses the bibtex property to know how to export -+ bibtex fields. If you want to add additional fields to export, such -+ as an abstract, open up the Collection Fields Dialog, and click the Set -+ Properties button. Add a bibtex property with value -+ abstract. Then, when you export to bibtex or bibtexml, that -+ property will be used for the bibtex field name. -+ -+ -+ -+ -+ -+What happened to Bookcase? -+ -+ -+ -+Due to a trademark conflict, Bookcase was renamed Tellico in September 2004. -+Tellico 0.12 was then released, which was identical to -+Bookcase 0.11, except for the name change. -+ -+ -+ -+ -+ -+What does the name Tellico have to do with anything? -+ -+ -+ -+I thought about several -+other names, a few of which were connected with book collections. However, -+Tellico can handle more than just books, and besides, this is a hobby, so I chose -+a neat-sounding (to me) name, one taken from a town close to where I grew up. -+ -+ -+ -+ -+ -+What do you include those links to Amazon.com in the search results? -+ -+ -+ -+ -+The terms of agreement for accessing the Amazon.com Web Services require all images pulled from the service to be linked back to Amazon.com, as well as an additional link. The Amazon.com associate's ID is necessarily included, so any referral payments are duly collected. -+ -+ -+ -+ -+ -+ -+Why don't you use a real database? -+ -+ -+ -+ -+Part of the reason I started &appname; was to learn C++. I didn't know SQL at the time, and at the moment, I only have a faint knowledge -+of how to use it. Simply put, &appname; didn't start out as a relational database, and that won't change until sometime in the future when -+I get around to learning SQL and have the time and motivation to change the data model. If that bothers you, well, don't use &appname; then. -+ -+ -+ -+Of course, anyone is welcome to make any changes they want to with the source code. -+ -+ -+ -+ -+ -+ -+ ---- /dev/null -+++ tellico-3.0.2/doc/fundamentals.docbook -@@ -0,0 +1,586 @@ -+ -+Using &appname; -+ -+ -+Quick Start -+ -+ -+By default, &appname; starts with an empty book collection. To work with some other type of collection, create it using the FileNew menu item, or the button on the toolbar. Collections are populated with some of the more common fields, but you can add, modify, or delete them to suit your needs. -+ -+ -+ -+New entries can be added by using the Entry Editor. The CollectionNew Entry menu item will open the Entry Editor with an empty entry ready for editing. The Entry Editor can also be opened by using the SettingsShow Entry Editor menu item. Once you've entered the values for the entry, you can save it to the collection by using the Save Entry button in the Entry Editor dialog, which remains open in case you want to continue adding new entries. Once you've saved an entry in the collection, you can modify it by clicking on it in the main window. If the Entry Editor is not already open, you can double click an entry to open the editor and start editing. -+ -+ -+ -+If you want to include an image in the entry, you can use the standard &kde; File Selector by clicking the Select Image... button in the Entry Editor, or you can drag an image from the file manager or web browser into the Entry Editor. -+ -+ -+ -+When you select an entry, the Entry View shows a formatted view of the entry's contents. You can change the template used for showing the entry in the Configuration Dialog. -+ -+ -+ -+The entries in the collection are grouped together when they share the same values for certain fields, such as the author or director. You can change the field used for grouping by using the combo box in the toolbar or the SettingsGroup Selection menu item. -+ -+ -+ -+You can use the Quick Filter in the toolbar to quickly limit the visible entries to ones which contain the word you type. The filter is also useful when you want to quickly find an entry. You can type in the title or some other unique word that identifies the entry and the Column View will only show the entries that match the filter. The status bar shows you how many entries are in the collection, and how many are currently being filtered. -+ -+ -+ -+ -+ -+General Usage -+ -+ -+The main window has three distinct areas, all of which show information about the collection -+in a different manner. The primary view is the Column View in -+the upper right area, where the value of every field for each entry may be shown. On the left side, tabs -+hold the Group View, which can be used to sort the entries into groups -+in a tree-structure, the Filter View, which is used to track which -+entries meet certain criteria, and the Loan View, where any loans are -+listed. Finally, the Entry View shows a formatted view -+of the data for a single entry, or an icon view of a group of entries, in the lower right. -+ -+ -+ -+The &appname; Main Window -+ -+ -+The &appname; Main Window -+ -+ -+ -+ -+<interface>Column View</interface> -+ -+ -+Any of the fields in the collections may be shown in the Column View, although Paragraph, Image, and Table fields will probably not be useful. Right-clicking on the header of the view opens a menu for selecting the visible fields. The columns may be resized and reordered in any way, and the settings will be saved between sessions. -+ -+ -+ -+ -+<interface>Group View</interface> -+ -+ -+The Group View groups the entries in a tree-view by any field which allows grouping. -+The number of entries in each group is shown next to the group name. Groups may be expanded or collapsed by clicking the arrow sign, or by double-clicking the item. Expanding and contracting all the groups are options in the right-click context menu. The tree may be sorted either by the group name, or by the count, by clicking on the header. A group may also be used as a filter for the Column View, by right-clicking on the group item. -+ -+ -+ -+When more than one field in the collection has the Format as a name option turned on, an additional group is added to combine all those fields into one single People pseudo-group. -+ -+ -+ -+If an entry does not contain a value for the field being used to form the groups, it is placed in the (Empty) group, which uses a red folder. -+ -+ -+ -+ -+<interface>Filter View</interface> -+ -+ -+If any filters are saved for the collection, the Filter View becomes active. As you add or -+modify entries, they will automatically be checked against the filters and add or removed as -+appropriate. The filter may be modified by double-clicking on the item to open -+the Advanced Filter Dialog. Right-clicking gives you the option to delete it altogether. -+ -+ -+ -+The Filter View -+ -+ -+The Filter View -+ -+ -+ -+ -+ -+ -+<interface>Loan View</interface> -+ -+ -+Once entries are checked-out on loan, the Loan View is added to the window, so those -+borrowed entries may be tracked. Loans are tracked on a per-entry bases, so right-clicking -+on an entry item has an option for modifying the loan using the Loan Dialog. -+ -+ -+ -+The Loan View -+ -+ -+The Loan View -+ -+ -+ -+ -+ -+ -+<interface>Entry View</interface> -+ -+ -+A formatted representation of the entry's values is shown in the Entry View. Templates are used for the layout and any additional graphics. Separate templates for each type of collection may be specified in the Configuration Dialog, along with custom colors and fonts. -+ -+All of the default templates honor the color and font selection, but other custom templates might not. -+The default templates also make &URL; fields active, which will open up with the default &kde; file association. When exporting to &HTML;, the current template is used for exporting the individual entry files. -+ -+ -+ -+In addition, when multiple entries are selected, an icon view is shown, using the first Image field in the collection. Entries may be selected as in the Column View. Right-clicking in the icon view will show a menu that changes the sorting criteria for the entries. -+ -+ -+ -+ -+ -+Statusbar -+ -+ -+The status bar is used to show you what &appname; is currently doing. It also includes a total count of the entries in the collection, and if a filter is being used, how many are currently visible. -+ -+ -+ -+ -+ -+ -+Editing Entries -+ -+ -+The Entry Editor is used to add and modify entries in the collection. Double-clicking on an entry in either the Group View or the Column View opens the Entry Editor with that entry. New entries may be created using the Collection menu, the toolbar icon, or the button in the Entry Editor itself. -+ -+Closing the Entry Editor when changes have been made but not saved will cause a warning message to appear. The fields are grouped by category and appear in the order that they appear in the Collection Fields Dialog. They may also be reordered. -+ -+ -+ -+The Entry Editor -+ -+ -+The Entry Editor -+ -+ -+ -+ -+Clicking the field title for a &URL; field will open the link using the default &kde; file association. The &URL; selector button beside the text entry will open the default &kde; File Open Dialog, but the field is not limited to local files. -+ -+ -+ -+For Image fields, the Select Image... button opens up the &kde; image file selection dialog. The image is saved in the collection in the original format, and a scaled version is shown in the Entry Editor. The image may be cleared by using the Clear button. Cleared images are removed from the collection. -+ -+ -+The Entry Editor for Image fields -+ -+ -+The Entry Editor for Image fields -+ -+ -+ -+ -+The edit widget also supports drag-and-drop. Dragging an image file from a file-manager or browser window does the same thing as selecting the image in the File Selector. Dragging an image from the edit widget into a &konqueror; file manager window will save the image in that folder. -+ -+ -+ -+ -+By default, the images are stored in the collection data file, keeping everything contained in one location. However, too many images will cause &appname; to slow down significantly as well result in a very large data file. Alternatively, &appname; can save the images separately, either in the $KDEHOME/share/apps/tellico/data/ folder or in a folder in the same location as the data file. Loading and saving data files is much faster if images are stored separately, but the data files are no longer portable or archivable. -+Self-contained data files can always be created by using the FileExportExport to Zip... menu item. -+ -+ -+ -+ -+Table fields begin with five rows, but moving the cursor to the last row automatically adds another. For multi-column tables, only the first column is used for grouping or formatting. -+ -+ -+ -+The Entry Editor for Table fields -+ -+ -+The Entry Editor for Table fields -+ -+ -+ -+ -+Editing Multiple Entries -+ -+Multiple entries may be edited at the same time by selecting more than one in either the Group View or the Column View. If multiple entries are selected, the fields which contain the same value in every entry are enabled. If entries have different values, then the fields are disabled. Check boxes are added to the extreme right for each field entry which control whether the field is enabled or not, as shown in the screenshot below. -+ -+ -+ -+Only enabled fields will be modified when the entries are saved, which makes large-scale editing much easier. For example, to set the Medium of all the video entries in the collection, make sure the Medium field is enabled. Change it to DVD, then save the entries. Only the Medium field will be modified, preserving all the other field values for the entries. -+ -+ -+ -+The Entry Editor for multiple entries -+ -+ -+The Entry Editor for multiple entries -+ -+ -+ -+ -+ -+ -+Updating Entry Data -+ -+ -+Entries may be automatically updated by querying the data sources available for the current collection type, which is very useful for combining information from multiple sources. For example, you may add a movie to your collection using -+the Amazon.com Web Services, and then update the entry with additional -+information from the Internet Movie Database. -+ -+ -+ -+Only empty fields are updated unless the setting for that source allows results to overwrite existing information. For external scripts, an update field must be specified in the source options. -+ -+ -+ -+The entry updating may be started via the right-click menu for an entry, or by using the CollectionUpdate Entry menu item. -+ -+ -+ -+ -+ -+ -+Editing Fields -+ -+ -+The Collection Fields Dialog allows you to add new fields to the collection, to modify the existing ones, or to delete fields altogether. -+ -+ -+ -+The &appname; Collection Fields Dialog -+ -+ -+The &appname; Collection Fields Dialog -+ -+ -+ -+ -+Field List -+ -+ -+On the left side of the dialog is the list of the current fields. Modified fields are shown in bold italics. The buttons below the list will add or delete a field, and the arrows can be used to change their order. The order of the fields in the list is important because the Entry Editor uses the order for its layout. For each category, the fields will be laid out from left to right, according to the top-to-bottom order of the fields in the list. -+ -+ -+ -+ -+Field Properties -+ -+ -+A field is defined by its title, type, category, description, and possibly a default value or some allowed values. The title is used everywhere to refer to the field in the user interface. The Entry Editor uses it to prompt for values. The Column View uses it as a column header. The different types of fields are explained in the Field Types section. The description is used as a tooltip in the Entry Editor, perhaps to provide an explanation of the field's contents. In addition, for fields with derived values, a value template is used to format the field's value. The default value is automatically added when creating a new entry. The list of allowed values for Choice fields should be separated by a semi-colon. -+ -+ -+ -+New fields may be any type, but changing the type of existing fields is restricted to compatible types, as shown in the table below: -+ -+ -+ -+Allowable Field Type Changes -+ -+ -+ -+Current Type -+New Type Allowed -+ -+ -+ -+ -+Simple Text -+Simple Text, Paragraph, Number, &URL;, Table -+ -+ -+Paragraph -+Simple Text, Paragraph -+ -+ -+Choice -+Simple Text, Paragraph, Choice, Number, &URL;, Table -+ -+ -+Checkbox -+Simple Text, Paragraph, Checkbox, Number, &URL;, Table -+ -+ -+Number -+Simple Text, Paragraph, Number, &URL;, Table -+ -+ -+&URL; -+Simple Text, Paragraph, Number, &URL;, Table -+ -+ -+Date -+Simple Text, Date -+ -+ -+Table -+Simple Text, Paragraph, Table -+ -+ -+Image -+Image -+ -+ -+Rating -+Choice, Rating -+ -+ -+ -+
-+
-+ -+ -+Field Formatting -+ -+ -+&appname; provides some capability for automatic formatting of field values. The simplest is auto-capitalization, which capitalizes every word except the articles. Title formatting moves certain articles from the beginning to the end of the field, for example, changing "The Return of the King" to "Return of the King, The". The title articles are configurable. Finally, name formatting tries to break up the string so that the last, or family, name of the person is shown first. Name prefixes and suffixes are configurable. Also, the special People group uses all fields with name formatting, even if the global setting is turned off. -+ -+ -+ -+All automatic formatting can be disabled by changing the global options in the Configuration Dialog. Globally, capitalization is a distinct option from formatting, so a title can be auto-formatted without being capitalized. Not all field types allow auto-formatting. -+ -+ -+ -+Formatting Examples -+ -+ -+ -+Format Type -+Field Value -+Auto-Capitalized -+Auto-Formatted -+Auto-Capitalized & Auto-Formatted -+ -+ -+ -+ -+Title -+the return of the king -+The Return of the King -+return of the king, the -+Return of the King, The -+ -+ -+Name -+tom swift, jr. -+Tom Swift, Jr. -+swift, jr., tom -+Swift, Jr., Tom -+ -+ -+ -+
-+
-+ -+Field Options -+ -+ -+Fields also have three general options. If auto-completion is enabled, &appname; caches the values for each field, and the Entry Editor offers automatic completion, using the standard &kde; settings. Not all field types allow auto-completion. &appname; also needs to know if a field may have multiple values or may be used to group the entries. A semi-colon is used to separate multiple values when editing an entry. -+ -+ -+ -+For efficiency, do not enable auto-completion unless you need it for the fields. The more fields with auto-completion in the collection, the slower it takes &appname; to load the file. -+ -+ -+ -+
-+ -+ -+Filtering Entries -+ -+The Advanced Filter Dialog allows you to limit the entries visible in the Column View -+to those that match one or more filter rules. -+The filter may be used to find the entries that meet all of the rules in the dialog, or just to -+find those that meet any of them. The Advanced Filter Dialog is also useful for advanced searching within a collection. -+ -+ -+ -+The &appname; Advanced Filter Dialog -+ -+ -+The &appname; Advanced Filter Dialog -+ -+ -+ -+ -+Each row contains a single filter rule. Select the field to match in the first box in the row, then select a matching rule in the center. Rules may match values that contain a certain word, or are exactly equal. A regular expression may also be used to match entries, in which case the Edit... button becomes active for editing the expression, if &kregexpeditor; is installed on your computer. Finally, the word or string to match should be entered in the text box. -+ -+ -+ -+Up to eight (8) rules may be used in the filter. The More and Fewer buttons may be used to add or remove rules. -+ -+ -+ -+Filters may be saved, so that all entries which match are grouped together in the Filter View. The view is dynamic, so as entries are added or modified, the group is automatically updated. To save the filter, enter a name in the text box, and click the Save Filter button. -+ -+ -+ -+Previously saved filters may be modified by right-clicking on the filter item in the Filter View and selecting Modify Filter. The Advanced Filter Dialog is opened, and changes may be made to the filter's name or rules. -+ -+ -+ -+ -+To find the science fiction books you've not read, check the Match all of the following -+button, set the first rule to Genre contains Science Fiction and the second to Read does not contain true. (For Checkbox fields, the internal value is true). -+ -+ -+ -+To find the books by Bujold or Weber, check the Match any of the following -+button, set the first rule to Author contains Bujold and the second to Author contains Weber. -+ -+ -+ -+ -+ -+ -+Generating Reports -+ -+&appname; can generate various reports about your current collection. The Report Dialog checks for all &xslt; templates in the installation path and in $KDEHOME/share/apps/tellico/report-templates/. So you can create new ones, and they are automatically found and included as options in the Report Dialog. Some complex reports may take a while to generate for large collections. -+ -+ -+ -+The templates that are installed with &appname; include a list of titles only, the default column view, a group view, a summary of all of the groups and the most popular values in those groups, a loan report, and a large report with cover images. Select the desired template and click the Generate button. Any report may also be printed or saved to an &HTML; file. -+ -+ -+ -+The &appname; Report Dialog -+ -+ -+The &appname; Report Dialog -+ -+ -+ -+ -+The entries included in the report will be limited to the ones in the Column View so if you've got an active filter, the Report Dialog will use it. -+ -+ -+ -+ -+Loan Tracking -+ -+&appname; supports tracking loans of any entries in the collection. The Loan Dialog may be opened by using the Check-out menu item, or right-clicking on an entry. Multiple entries may be checked-out at once. -+ -+ -+ -+The borrower's name may be directly entered, or pulled from the default &kde; address book by clicking on the button next to the name entry. The check-out date is assumed to be the current date, but may be changed. The due date is optional, and other notes may be added about the loan. -+ -+ -+ -+If a due date is entered, and &appname; is compiled with libkcal support, a loan reminder may be added to the default &kde; calendar as a To-Do item. &korganizer; can be used to view those items. -+ -+ -+ -+When an entry is checked-out, the Loaned field is set to true. If no loaned field exists in the collection, one is added. Do not modify that field directly! Entries on-loan may be checked-in using the menu item, or right-clicking on an entry in the Loan View. -+ -+ -+ -+The &appname; Loan Dialog -+ -+ -+The &appname; Loan Dialog -+ -+ -+ -+ -+ -+ -+General Tips -+ -+ -+These are the list of tips contained in the "Tip of the Day" list for &appname;. -+ -+ -+ -+If a book has more than one author, you should separate -+their names by a semi-colon, so that Tellico will know to split them -+and use them separately. Any other field which allows multiple values should be entered the -+same way. with a semi-colon (;) separating each value. -+ -+ -+ -+ -+You can change which fields are shown in the list view by -+right-clicking on the column header. -+ -+ -+ -+ -+You can add, edit, or modify the fields in the collection using -+the Collection Fields Dialog. The arrow buttons below the field list can be used to change the -+position of the field in the list, which affects the placement in the entry -+editor. -+ -+ -+ -+ -+If you want to filter by a Checkbox field, a value of -+"true" should be used. If you'd like to filter to -+show only the science fiction books which you've not read, for -+example, check the Match all of the -+following button, set the first rule to have "Genre" -+"contains" "Science Fiction" (no quotes) and the second rule to -+have "Read" "does not contain" "true" (no quotes). -+ -+ -+ -+ -+If a non-word character is used in the Quick Filter, the text is -+interpreted as a regular expression. To show only books which are by Weber or Bujold, for example, then -+type "weber|bujold" (no quotes) in the filter box. -+ -+ -+ -+ -+You can edit more than one entry at a time, by holding down -+the &Shift; or &Ctrl; key and selecting multiple entries. -+ -+ -+ -+ -+You can convert an existing book collection to a bibliography, -+which can then be exported to bibtex or Bibtexml format. -+ -+ -+ -+ -+If more than one field is formatted as a name, then an additional -+group named "People" is added to the collection, allowing authors and editors -+to be sorted or printed together, for example. -+ -+ -+ -+ -+You can modify the appearance of the printed output by modifying -+the tellico-printing.xsl file. The file generates &HTML;, and the &CSS; -+within the stylesheet governs things like the font, the margins, etc. -+ -+ -+ -+ -+Double-clicking an entry item opens the Entry Editor. -+ -+ -+ -+ -+You can add &HTML; tags to any Paragraph field for formatting, such as -+<b>bold</b> or <i>italic</i>. -+ -+ -+ -+ -+In the Column View, you can press a letter on the -+keyboard to skip to the next entry that starts with that letter. -+ -+ -+ -+ -+You can use derived values to combine values from multiple fields -+into a single value. Just check the derived value box and use a value template -+similar to "Value: %{fielda}%{fieldb}" where %{...} gets replaced with the -+appropriate field value. This is useful to collect multiple values in a -+single field, ⪚ for better grouping, and to combine fields of different -+types by respecting proper sorting at the same time. Consider for example -+a number field followed by a text subfield with entries 3b, 14a. -+ -+ -+ -+ -+ -+
---- /dev/null -+++ tellico-3.0.2/doc/hacking.docbook -@@ -0,0 +1,390 @@ -+ -+Hacking &appname; -+ -+ -+In the spirit of Free Software, you are welcome to hack on &appname; as much as you like. You should be able to write scripts to import, export, or modify data very easily. This chapter gives you more information about doing that. -+ -+ -+ -+File Format -+ -+ -+The default &appname; data file is a zip archive, normally with a .tc file extension. Inside the archive is a top-level tellico.xml file. Images may be included inside the images/ folder in the archive, or they may be included in the &XML; data directly in a base64 encoding. Images may also be saved inside the application data folder, in which case, they are not in the data file at all. &appname; can also load the &XML; file, by itself, uncompressed. -+ -+ -+ -+&XML; Data -+ -+ -+ -+ -+ -+Collection -+ -+ -+ -+ -+ -+ -+ -+]]> -+ -+ -+ -+The file begins with the required &XML; declaration and encoding, followed by the doctype. When a new field type is added or additional properties are set on the default fields, the doctype DTD version is incremented. &appname; is always able to open and read any previous DTD version, but will save files in the current version. The DTD location does point to an actual DTD file. -+ -+ -+ -+The top-level element is a <tellico> element, containing the default namespace declaration and the syntax version of the file, which should always match the DTD. -+ -+ -+ -+The <tellico> element contains one <collection> element. Multiple collections are ignored, for now. The title attribute contains the collection title, while the type specifies what kinds of entries are contained in the collection. The allowable types are in listed in a later section. An optional entryTitle attribute may be used to specify the title of the entries for a custom collection, and should be plural. -+ -+ -+ -+ -+Fields -+ -+ -+ -+ -+ -+ -+ Paperback -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ 5 -+ 1 -+ -+ -+ %{@id} -+ -+ -+ -+]]> -+ -+ -+ -+All of the fields are defined inside a <fields> element, of which there can be only one. All of the information for a field, except for any properties, are included as attributes of the <field> element. The allowable values for the flags, format, and type attributes are given in a following section. -+ -+ -+ -+Field properties are used for setting default field values, rating value ranges, derived value templates, etc. The examples above include a default value, a maximum rating value, and a template for a derived ID field. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+Entries -+ -+ -+ -+ C++ Programming Language, The -+ -+ Stroustrup, Bjarne -+ -+ Addison-Wesley Pub Co -+ 3rd -+ 1997 -+ 0-201-88954-4 -+ -+ Non-Fiction -+ -+ -+ Programming -+ Computers -+ -+ cf65a2f023b6cb9e9233323dca10ac7c.jpeg -+ -+]]> -+ -+ -+ -+For every field in the collection, an <entry> may contain an element whose name is identical to the field name. If multiple values are allowed for the field, then the letter s is added to the field name to create an element, and each value is added as a child of the element, as in the case of the author, genre, and keyword fields above. -+ -+ -+ -+As a result, if additional fields are added to the collection, the data file will no longer conform to the DTD. However, &appname; uses a non-validating &XML; parser, so additional fields do not cause problems. -+ -+ -+ -+ -+Images -+ -+ -+ -+ -+]]> -+ -+ -+ -+Inside the <images> element, each image referenced by an entry is listed, along with attributes describing the image's size, format, and id. If the image is contained inside the Zip file, the element is empty. Otherwise, the image data may be contained in the &XML; stream as base64-encoded text. -+ -+ -+ -+ -+ -+ -+ -+ -+Collection Type Values -+ -+ -+The type of collection is given in the type attribute of the collection element. The value is equal to the Type enum value in src/collection.h. -+ -+ -+ -+Collection Type Values -+ -+ -+ -+Collection Type -+Value -+ -+ -+ -+Custom Collection1 -+Book Collection2 -+Video Collection3 -+Music Collection4 -+Bibliography5 -+Comic Book Collection6 -+Wine Collection7 -+Coin Collection8 -+Stamp Collection9 -+Trading Card Collection10 -+Video Game Collection11 -+File Catalog12 -+Board Game Collection13 -+ -+ -+
-+ -+
-+ -+ -+Field Type Values -+ -+ -+&appname; will include all the default fields for a collection if the first field element has the name _default. For Paragraph, Table, or Image fields, the field category should be identical to the field title. -+ -+ -+ -+The type of field is given in the type attribute of the field element. The value is equal to the FieldType enum value in src/field.h. -+ -+ -+ -+Field Type Values -+ -+ -+ -+Field Type -+Value -+ -+ -+ -+Simple Text1 -+Paragraph2 -+Choice3 -+Checkbox4 -+Number6 -+&URL;7 -+Single-Column Table8 -+Image10 -+Date12 -+Rating14 -+ -+ -+
-+ -+ -+The field may have different flags set, given as a bitwise OR'd value in the flags attribute on the field element. The flag for preventing the user from deleting a field is intended for such things as the citation key for bibliographic entries. -+ -+ -+ -+Field Flag Values -+ -+ -+ -+Field Flags -+Value -+ -+ -+ -+Allow Multiple Values0x01 -+Allow Grouping0x02 -+Allow Completion0x04 -+Disallow Deleting0x08 -+Disallow Editing0x10 -+Derived Value0x20 -+ -+ -+
-+ -+ -+The format of the field is given in the format attribute on the field element. Date Formatting is not currently used. Grouping by People uses all the fields which use Name Formatting. Setting the Derived Value flag implies the value for the field is generated from the template property from other field values. -+ -+ -+ -+Field Format Values -+ -+ -+ -+Field Format -+Value -+ -+ -+ -+Capitalization Only0 -+Title Formatting1 -+Name Formatting2 -+Date Formatting3 -+No Formatting4 -+ -+ -+
-+ -+
-+ -+ -+Hidden Configuration Options -+ -+ -+&appname; has some additional configuration options that are not visible in the Configuration Dialog. They are not important enough to warrant cluttering the dialog with more settings, but as they represent options which may appeal to various users, the application does read them from the configuration file. -+ -+ -+ -+The settings for &appname; are saved in a file in the user's home folder, namely $KDEHOME/share/config/tellicorc. Within that file, settings are put in groups, which appear with bracketed names, such as [General Options]. To add a setting to the General Options group, find the line in the settings file with that group name. If it does not appear, then create it yourself by adding a line saying [General Options]. Then, the setting can be added underneath the group name. -+ -+ -+ -+[General Options] -+ -+ -+These settings should be placed in the General Options group. -+ -+ -+ -+Max Icon Size -+ -+ -+The maximum size of the icons in the Icon View may be changed with this setting. The default value is 96. The size must be in the range of 32 to 512. -+ -+ -+ -+ -+Example -+ -+Max Icon Size=128 -+ -+ -+ -+ -+Icon Cache Size -+ -+ -+The maximum numbers of icons cached in memory may be changed with this setting. The default value is 1000. -+ -+ -+ -+ -+Example -+ -+Icon Cache Size=100 -+ -+ -+ -+ -+Example -+ -+Max Icon Size=128 -+ -+ -+ -+ -+Image Cache Size -+ -+ -+The maximum amount of memory in bytes used for caching all the images may be changed with this setting. The default value is 67108864. -+ -+ -+ -+ -+Example -+ -+Image Cache Size=256000000 -+ -+ -+ -+ -+ -+ -+[Options - bibtex] -+ -+ -+These settings should be placed in the Options - bibtex group. -+ -+ -+ -+lyxpipe -+ -+ -+This setting is for the location of the lyxpipe for sending bibliographic citations. It should not include the .in suffix. -+ -+ -+ -+ -+Example -+ -+lyxpipe=$HOME/.lyx/lyxpipe -+ -+ -+ -+ -+ -+ -+ -+Bibtex Character Translation -+ -+ -+When bibtex files are imported or exported, certain characters are translated between their TeX equivalents and the Unicode characters. Those character mappings are contained in the bibtex-translation.xml file, located in the installation data directory. The mappings can be modified, as desired. The key element contains the Unicode character, and the string elements within contain the TeX equivalents, which may be a one-to-many mapping. The first one is the one used when exporting to bibtex. -+ -+ -+ -+ -+ {\`A} -+ \`{A} -+ -+]]> -+ -+ -+ -+ -+ -+XSLT Tricks -+ -+ -+Here are some tips for writing XSLT to parse &appname; &XML; data: (TBD). -+ -+ -+ -+
---- /dev/null -+++ tellico-3.0.2/doc/importing-exporting.docbook -@@ -0,0 +1,398 @@ -+ -+Importing and Exporting Data -+ -+ -+&appname; is able to import and export a wide variety of data files, as well as search various Internet sites for information. -+ -+ -+ -+Importing from the Internet -+ -+&appname; is able to search various Internet sites using the Internet Search Dialog. Entries may be directly imported and added to your current collection. The various providers are configured via the Data Sources Options. -+ -+ -+ -+Searches may use different criteria: Title, Person, ISBN, UPC/EAN, LCCN, or Keyword. Not all criteria are available for certain data sources. ISBN and LCCN values are for books only, while UPC or EAN values can apply to any type of item. -+ -+Once a search is initiated, the Search button becomes Stop which will end a search. As results are found, they are added to the list directly under the search box, where selecting an item will show the result without adding it to the collection. Clicking the Add Entry button will add all the selected items to your collection. If the data source has more results than were initially requested, the Get More Results button becomes active. Clicking Clear will remove all the current results and reset the search. -+ -+ -+ -+The &appname; Internet Search Dialog -+ -+ -+The &appname; Internet Search Dialog -+ -+ -+ -+ -+Only entries that match the current collection type will be found. The Description column provides additional information about the entry, in order to differentiate between videos in different formats, or books in different bindings, for example. Once an entry is successfully added to the collection, a checkmark is added to the first column in the list. -+ -+ -+ -+Multiple entries can be added at once by using the standard &kde; method for multiple selection, which usually involves holding the &Shift; or &Ctrl; key when clicking on an item. -+ -+ -+ -+To facilitate the use of barcode scanners, searches can include multiple ISBN/UPC values. Selecting the Multiple ISBN/UPC search check box will disable the search box and enable the Edit ISBN/UPC values... button, which will open a multi-line text entry box. Each ISBN should be entered on a line by itself. After closing the box, each ISBN will be validated for correct formatting. The ISBN validation is able to convert 13-digit EAN values, as well as full UPC codes, to the proper formatting. The ISBN list may also be read from a text file. -+ -+ -+ -+ -+ -+Importing Data -+ -+ -+&appname; offers three different actions when importing data. Replace current collection will close the current collection, and create a new one with the data from the imported file. Append to current collection tells &appname; to add all the entries in the imported collection to the current one, and to add any fields which don't currently exist. The Merge collection action is the same as appending, except that each imported entry is compared to the current ones, and any identical entries are skipped. Future plans include an improved heuristic for identifying matching entries, but currently, except for music collections, they must be identical for every field. Music collections compare the artist and album only, and the tracks are merged for matching entries. The audio file importer is able to correctly build track lists by merging entries. -+ -+ -+ -+Importing &appname; Data -+ -+ -+Other &appname; data files may be imported. Replacing the current collection by importing a &appname; file is the same thing as just opening the file itself. The value of importing &appname; data is primarily for appending or merging two collections together. -+ -+ -+ -+ -+Importing CSV Data -+ -+ -+Comma-separated values (CSV) are a common way of importing and exporting tabular data. Each field value is separated by a comma, with one entry per line. The field titles may be included in the first line. The CSV importer is not limited to using a comma as the separator. Any character or string may be used. -+ -+ -+ -+The CSV Import Dialog -+ -+ -+The CSV Import Dialog -+ -+ -+ -+ -+First, select the type of collection that you are importing. If you are appending or merging to your open collection, the type is limited to your current collection type. If the first line of the CSV file contains the field titles, click the check box and the importer will automatically compare the titles against the fields in the current collection. If a field title matches, the header for that column changes to show that the column has been assigned to that field. If the file uses a delimiter other than a comma, be sure to change that option accordingly. -+ -+ -+ -+In order for &appname; to properly import the file, it must know which field corresponds to each column. If the column only has a number in the header, the data in that column will not be imported. You should assign fields to each column by selecting a column, either by clicking in it or changing the column number itself, then selecting the field to assign from the drop down box and clicking the Assign Field button. If you need to add a new field to the collection, the last item in the drop down box opens the Collection Fields Dialog. -+ -+ -+ -+Only the first five lines of the imported CSV file are shown in the dialog. -+ -+ -+ -+ -+ -+Importing Audio &CD; Data -+ -+ -+&appname; is able to use the freedb.org service to lookup -+information about a &CD;, including the track list. Depending on your distribution, -+settings for access to the service may be set in the &kde; &systemsettings;. The &CD; artist, title, genre, -+year, and track listing are all added. -+ -+ -+ -+In addition, if the disc contains &CD;-Text, that information is read and added to the imported entry. -+ -+ -+ -+ -+Importing Audio File Metadata -+ -+ -+&appname; is able to scan a folder and read the tags for common audio file formats, such as mp3 and ogg. The songs are entered in a music collection, where each entry is an album. If the song files contain the track number, the song name is inserted in the correct spot in the track list. The artist and genre information is also added to the entry. If the song tags contain comments, they are appended to the comments field in the entry, preceded by the file name. -+ -+ -+ -+In addition, if a folder contains a .directory file and the folder name matches an album title, the Icon entry in the desktop file is used as the cover image for the album. -+ -+ -+ -+The audio file metadata importer can recursively scan a folder to find all audio files in any subfolder, though symbolic links are not followed. &appname; uses the TagLib library for reading the audio file metadata, and so can import data from any file type that TagLib understands. -+ -+ -+ -+ -+ -+Importing Alexandria Libraries -+ -+ -+Alexandria is an alternate book collection manager for the GNOME desktop environment. The importer offers a choice of importing any of the libraries found in $HOME/.alexandria/. -+ -+ -+ -+ -+ -+Importing Ant Movie Catalog Data -+ -+ -+Ant Movie Catalog is an alternate movie collection manager. -+ -+ -+ -+ -+ -+Importing Bibtex Data -+ -+ -+Bibtex is a bibliography format used with the LaTeX document preparation system. Various type of bibliographic references may be included in the file. &appname; imports bibtex files as a Bibliographic collection. -+ -+ -+ -+If the bibtex importer encounters fields in the file which are not in the default bibliography collection, they are added as Simple Text fields, with two exceptions. If the field value contains more than 100 characters, it becomes a Paragraph field. If the field value appears to contain a &URL; or a file reference, then a &URL; field is created. &appname; uses an internal copy of the btparse library for parsing the bibtex files. -+ -+ -+ -+ -+Importing Bibtexml Data -+ -+ -+Bibtexml is an &XML; representation of bibtex data, and the data from the imported bibtexml file is treated in the same way as bibtex data would be. -+ -+ -+ -+ -+Importing Delicious Library Data -+ -+ -+Delicious Library is an alternate collection manager for the &Mac; OS X desktop. &appname; imports a subset of the data used by Delicious Library. -+ -+ -+ -+ -+Importing GCstar Data -+ -+ -+GCstar is an alternate collection manager. Importing books, movies, music, coins, games, board games and wine collections is currently supported. -+ -+ -+ -+&appname; can also import GCfilms data files. GCfilms is the predecessor of GCstar and was an alternate movie collection manager. Normally, GCfilms data files are found in $HOME/.local/share/gcfilms/. -+ -+ -+ -+ -+ -+Importing Griffith Data -+ -+ -+Griffith is an alternate video collection manager. &appname; is able to import most data from a Griffith database. -+ -+ -+ -+ -+Importing MODS Data -+ -+ -+MODS is a format for representing various types of media collections. Currently, only books are imported by &appname;, as a Bibliographic collection. -+ -+ -+ -+ -+ -+Importing PDF Data -+ -+If &appname; was compiled with exempi or poppler support, metadata from PDF files can be imported. Metadata may include title, author, and date information, as well as bibliographic identifiers which are then used to update other information. -+ -+ -+ -+ -+Importing Referencer Data -+ -+Referencer is a document organizer and bibliography manager for the GNOME desktop. &appname; will import most of the data found in a Referencer database. -+ -+ -+ -+ -+Importing RIS Data -+ -+The RIS format is a bibliographic file format used by Reference Manager and others. &appname; imports RIS files as a Bibliographic collection. -+ -+ -+ -+ -+Importing Goodreads Collection -+ -+Goodreads is an online social network for readers to track book collections. &appname; can import the list of books in a user's collection, given either the user name or user ID, as long as the collection is set to be publicly accessible. -+ -+ -+ -+ -+Importing File Listings -+ -+ -+The best way to create a File Catalog is to import the contents of a folder. The folder may be searched recursively, to add all files found within. This importer is most useful for backup listings and media cataloging, such as &CD; or DVD listings. In addition, image previews of the file contents may be generated, although it can take some time to read a large number of files. The file previews are same as those shown in the &kde; file manager. -+ -+ -+ -+ -+Importing &XML; Data via XSLT -+ -+ -+Any &XML; file may be imported into &appname; provided an &XSL; stylesheet is available to convert the file to &appname; format. &appname; automatically loads the stylesheet and performs the &xslt; processing needed to load the file. -+ -+ -+ -+ -+ -+ -+Drag and Drop -+ -+Dragging data files to the main &appname; window and dropping them will import the files, just as if the import command was made from the menus. Drag and drop works for the following file formats: Tellico, Bibtex, RIS, and PDF. Importing multiple files at once is also supported. -+ -+So, for example, if you want to catalog several PDF files, select them in the file manager and drag them to the &appname; window. &appname; will import as much metadata from the files as it can, and then fetch additional information from various configured Internet sources. -+ -+ -+ -+ -+Exporting Data -+ -+ -+When exporting the data in the collection, the entry values may be exported as entered, or with the automatic formatting provided by &appname;. Additionally, the export may be limited to the currently selected entries of the collection as well, where the statusbar shows the number of selected entries. -+ -+ -+ -+Exported text files, such as Bibtex or CSV, may use the Unicode (UTF-8) character encoding, or the current locale of the operating system. -+ -+ -+ -+General Export Options -+ -+ -+General Export Options -+ -+ -+ -+ -+Exporting &XML; -+ -+ -+The file format for &appname; data is a zipped &XML; file. Exporting to &XML; merely creates the &XML; file without zipping it. Images may be included in the &XML; file as base64-encoded data in an image element, but doing so can create very large text files. -+ -+ -+ -+ -+Exporting Zip -+ -+ -+The standard file format for &appname; is a zipped file, contained the &XML; collection file, and optionally, all the images referenced in the collection. If the images are being stored in the application folder instead, exporting to a Zip file will create a self-contained data file, which includes all the images in the collection. -+ -+ -+ -+ -+Exporting &HTML; -+ -+ -+The &HTML; export uses the tellico2html.xsl stylesheet. Images are exported to a folder with the same name as the exported &HTML; file with _files appended. -+ -+ -+ -+The default format is similar to the printed output, and allows various options for modifying the &HTML;. Field headers may be printed at the top of each column, but unfortunately, &kde; does not yet allow the table headers to be repeated on each page. The entries may be grouped as in the Group View, as well. -+ -+ -+ -+Additionally, individual files may be created for each entry in the collection, with links created in the top-level &HTML; file. The entry files will be created in the same folder as the images. The entry &HTML; files will use the current stylesheet template, as shown in the Entry View. -+ -+ -+ -+&HTML; Export Options -+ -+ -+&HTML; Export Options -+ -+ -+ -+ -+ -+Exporting CSV -+ -+ -+Comma-separated values (CSV) are a common way of importing and exporting tabular data. Each field value is separated by a comma, with one entry per line. The field titles may be included as headers in the first line. Any character or string other than a comma may also be used to delimit the fields. -+ -+ -+ -+CSV Export Options -+ -+ -+CSV Export Options -+ -+ -+ -+ -+ -+Exporting Alexandria -+ -+ -+Alexandria is a book collection manager for the GNOME desktop environment. &appname; is able to export a limited subset of book collection fields to the default Alexandria data location. -+ -+ -+ -+ -+ -+Exporting ONIX -+ -+ -+ONIX is an &XML; format for representing and communicating book industry product information, primarily for book vendors. &appname; can export book collections using a small subset of ONIX. -+ -+ -+ -+ -+ -+Exporting Bibtex -+ -+ -+When exporting to Bibtex, the field values may be escaped with braces or quotation marks. If any string macros -+are used in the collection, they may optionally be exported as macros or expanded. For &URL; fields, &appname; -+may enclose the field values with the \url{...} tag. Finally, entries with no citation key may be skipped rather than have &appname; auto-generate the key. -+ -+ -+ -+Bibtex Export Options -+ -+ -+Bibtex Export Options -+ -+ -+ -+ -+ -+Exporting Bibtexml -+ -+ -+Bibtexml is a format for expressing bibtex data via &XML;. -+ -+ -+ -+ -+ -+Exporting GCstar -+ -+ -+GCstar is another movie collection manager. &appname; is able to export most collection types to a GCstar data file. -+ -+ -+ -+ -+ -+Exporting &XML; via &xslt; -+ -+ -+Finally, &appname; is able to process its internal &XML; representation of the collection data through an external &XSL; stylesheet before exporting. This type of export may be useful for generating text reports or other file types. -+ -+ -+ -+ -+ -+ -+Working With Citations -+ -+When working with a bibliography, citations for the currently selected entries -+may be generated and used in various other applications. A citation in bibtex format can be copied to the clipboard, -+and then pasted in a latex file. Bibtex citations can also be pushed to an external application such as LyX or Kile using the so-called lyxpipe. -+ -+ -+ -+ -+ ---- /dev/null -+++ tellico-3.0.2/doc/index.docbook -@@ -0,0 +1,284 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ XSLT"> -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+]> -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+28/08/2009 -+2.0 -+ -+The &tellico; Handbook -+ -+ -+ -+Robby -+Stephenson -+ -+
&email;
-+
-+
-+ -+
-+ -+ -+2001 -+2002 -+2003 -+2004 -+2005 -+2006 -+2007 -+2008 -+2009 -+2010 -+2011 -+&robby; -+ -+ -+ -+ -+ -+ -+For licensing information of both the software and this documentation, please refer to the -+final section. -+ -+ -+ -+ -+ -+ -+ -+This document is a handbook for using &tellico;, a collection manager software application. -+ -+ -+ -+ -+ -+ -+KDE -+tellico -+book -+bibliography -+movie -+collection -+database -+catalog -+extragear -+ -+ -+
-+ -+ -+ -+ -+Introduction -+ -+ -+ -+ -+&tellico; -+ -+ -+&tellico; is a program for managing collections. It began as a simple -+book collection manager, and has expanded to include default -+collection templates for bibliographies, comic books, videos, music, -+coins, stamps, trading cards, video games, wines, board games, and file listings. -+In addition, custom collections can be built for any other type of collectibles. -+ -+ -+ -+What &tellico; Is -+ -+ -+&tellico; keeps track of the items in a collection, and offers -+an easy way to enter data for each entry. It provides several -+field types, and allows for an unlimited number of -+user-defined fields. The entries in a collection may be grouped by any -+field for easy organization, and customizable views show as much or as -+little information as you like. -+ -+ -+ -+Loans may be tracked, with optional integration with &korganizer;. Collections may be -+imported or exported using a variety of formats, to allow for easy exchange -+or publication of data. -+ -+ -+ -+ -+ -+What &tellico; Is Not -+ -+ -+&tellico; is not an audio or video player. It does not provide -+facilities for reading or modifying multimedia files. It also does -+not provide any image-editing functionality. Although &tellico; has some -+functionality for managing bibliography lists, it is not a full-blown -+bibliographic reference manager. &tellico; also does not pretend to have -+all the capabilities of a full-fledged relational database. -+ -+ -+ -+As somewhat of a disclaimer, &tellico; is a hobby for the author, and no -+guarantees are made about its functionality, usefullness, or otherwise. -+More information is included in the -+license declaration. -+ -+ -+ -+ -+ -+ -+Terminology -+ -+ -+Collections -+ -+In &tellico;, a collection is the document. Only one collection exists in each &tellico; -+file. A collection contains any number of fields and -+entries. &tellico; supports 12 specific collection types by -+default: books, bibliographic entries, comic books, videos, music, trading cards, coins, stamps, -+video games, wines, board games, and file listings. In addition, an empty generic collection -+template is available for any other type of collectibles or lists. -+ -+ -+ -+ -+Collection Fields -+ -+Each collection may have an unlimited number of fields. &tellico; supports eleven types of fields, -+which allow for a range of different data. The fields can be edited with the -+Collection Fields Dialog and are explained further in the -+Field Types section. -+ -+ -+ -+ -+Collection Entries -+ -+ -+An entry is the basic record in &tellico;. Each entry contains a single value for each field in -+the collection. A collection may have an unlimited number of entries, in theory, although since -+the whole collection is always resident in memory, too many entries could slow down the application. -+ -+ -+ -+&tellico; has been tested with a collection of 10,000 entries, and the speed was satisfactory. -+However, if many large images are included in the collection, the loading and processing time -+does slow down greatly. Performance can be improved by having &tellico; store images separate from -+the data file itself, either in the application-specific folder or a folder relative to -+the data file. More information can be found in the -+configuration section. -+ -+ -+ -+ -+ -+ -+ -+ -+&fundamentals-chapter; -+ -+&details-chapter; -+ -+&importing-exporting-chapter; -+ -+&advanced-chapter; -+ -+&configuration-chapter; -+ -+&hacking-chapter; -+ -+&faqs-chapter; -+ -+&menus-chapter; -+ -+ -+ -+ -+ -+Credits and License -+ -+ -+&tellico; -+ -+ -+Program copyright 2001-2011 &robby; &email; -+ -+ -+Documentation copyright 2001-2011 &robby; &email; -+ -+ -+ -+ -+&underGPL; -+&underFDL; -+ -+The author of this documentation has also granted you permission to use the content under the terms of the FreeBSD Documentation License, if you so choose. If you wish to allow use of your version of this content only under the terms of the FreeBSD Documentation License, and not to allow others to use your version of this file under the terms of the GFDL, indicate your decision by deleting the GFDL notice and replacing it with the notice and other provisions required by the FreeBSD Documentation License. If you do not delete the GFDL notice above, a recipient may use your version of this file under the terms of either the GFDL or the FreeBSD Documentation License. -+ -+ -+ -+&documentation.index; -+ -+
-+ ---- /dev/null -+++ tellico-3.0.2/doc/menus.docbook -@@ -0,0 +1,625 @@ -+ -+Command Reference -+ -+ -+ -+ -+The Main &tellico; Window -+ -+Each menu item is discussed below. When there is a keyboard shortcut that -+performs a menu item function, the default shortcut is listed with the menu item. -+ -+ -+ -+The File Menu -+ -+ -+ -+ -+ -+ -+ -+ File -+ New -+ -+ -+ -+ -+This command creates a new collection. &tellico; supports 12 default collection types along with an empty user-defined custom collection. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;O -+ -+ File -+ Open... -+ -+ -+ -+ -+This command opens a &tellico; file. -+ -+ -+ -+ -+ -+ -+ File -+ Open Recent -+ -+ -+ -+ -+This command opens a file from a submenu -+that contains a list of recently opened files. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;S -+ -+ File -+ Save... -+ -+ -+ -+ -+This command saves the collection. If the file is -+Untitled then Save... is equivalent to -+Save As. It is only enabled when the collection has been -+modified. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;&Shift;S -+ -+ File -+ Save As... -+ -+ -+ -+ -+This command saves the collection to a new file. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;P -+ -+ File -+ Print... -+ -+ -+ -+ -+This command prints the collection. Printing options may be set in the Configuration Dialog. -+ -+ -+ -+ -+ -+ -+ File -+ Import -+ -+ -+ -+ -+This command imports data from another file. &tellico; can import data from a number of other formats. -+ -+ -+ -+ -+ -+ -+ File -+ Export -+ -+ -+ -+ -+This command exports the collection to another format. &tellico; can export data to a number of other formats. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;Q -+ -+ File -+ Quit -+ -+ -+ -+ -+This command closes the &tellico; window. If the collection has unsaved changes, you will be prompted to save them before continuing. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+The Edit Menu -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;Z -+ -+ Edit -+ Undo -+ -+ -+ -+ -+This command undoes the previous action. Not all actions are supported by Undo. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;&Shift;Z -+ -+ Edit -+ Redo -+ -+ -+ -+ -+This command reverts a previous Undo. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;X -+ -+ Edit -+ Cut -+ -+ -+ -+ -+This command removes the selected text, if any, and places a copy of the removed text in the clipboard. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;C -+ -+ Edit -+ Copy -+ -+ -+ -+ -+This command copies the selected text, if any, to the clipboard. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;V -+ -+ Edit -+ Paste -+ -+ -+ -+ -+This command pastes the text in the clipboard, if any, into the editor at the cursor position. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;A -+ -+ Edit -+ Select All -+ -+ -+ -+ -+This command selects all the entries in the collection, in the Column View. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;&Shift;A -+ -+ Edit -+ Deselect -+ -+ -+ -+ -+This command deselects all the entries in the collection. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;I -+ -+ Edit -+ Internet Search... -+ -+ -+ -+ -+This command opens the Internet Search Dialog to search for and import entries from various Internet sites, including Amazon.com. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;J -+ -+ Edit -+ Advanced Filter... -+ -+ -+ -+ -+This command opens the Advanced Filter Dialog. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+The Collection Menu -+ -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;N -+ -+ Collection -+ New Entry -+ -+ -+ -+ -+This command opens the Entry Editor to edit a new entry. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;E -+ -+ Collection -+ Edit Entry -+ -+ -+ -+ -+This command opens the Entry Editor to edit the selected entries. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;Y -+ -+ Collection -+ Duplicate Entry -+ -+ -+ -+ -+This command copies, or duplicates, the selected entries as new entries in the collection. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;D -+ -+ Collection -+ Delete Entry -+ -+ -+ -+ -+This command deletes the selected entries. -+ -+ -+ -+ -+ -+ -+ -+ Collection -+ Merge Entries -+ -+ -+ -+ -+This command merges the selected entries. -+ -+ -+ -+ -+ -+ -+ Collection -+ Update Entry -+ -+ -+ -+ -+This menu contains a list of all available data sources, and can be used to automatically query the -+source and update the selected entries. -+ -+ -+ -+ -+ -+ -+ Collection -+ Check-out -+ -+ -+ -+ -+This command opens a dialog box for loaning the selected entries.. -+ -+ -+ -+ -+ -+ -+ Collection -+ Check-in -+ -+ -+ -+ -+This command checks-in any of the selected entries which are currently on-loan. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;R -+ -+ Collection -+ Rename Collection -+ -+ -+ -+ -+This command opens a dialog box for renaming the collection. -+ -+ -+ -+ -+ -+ -+ -+ &Ctrl;U -+ -+ Collection -+ Collection Fields... -+ -+ -+ -+ -+This command opens the Collection Fields Dialog. -+ -+ -+ -+ -+ -+ -+ Collection -+ Generate Reports... -+ -+ -+ -+ -+This command opens the Report Dialog for generating reports about the collection. -+ -+ -+ -+ -+ -+ -+ Collection -+ Bibliography -+ Convert to Bibliography -+ -+ -+ -+ -+This command converts a book collection to a bibliography by adding certain fields necessary for Bibtex export, and it is only enabled when a book collection is open. -+ -+ -+ -+ -+ -+ -+ Collection -+ Bibliography -+ String Macros... -+ -+ -+ -+ -+This command opens a dialog box for editing the Bibtex string macros in the collection. It is only enabled when editing a bibliography. -+ -+ -+ -+ -+ -+ -+ Collection -+ Bibliography -+ Check for Duplicate Keys -+ -+ -+ -+ -+This command checks for duplicate Bibtex keys and can filter the collection to show the entries with duplicated keys. -+ -+ -+ -+ -+ -+ -+ Collection -+ Bibliography -+ Copy Bibtex to Clipboard -+ -+ -+ -+ -+This command copies a Bibtex citation to the clipboard so that it can pasted in a LaTeX document. -+ -+ -+ -+ -+ -+ -+ Collection -+ Bibliography -+ Cite Entry in Lyx -+ -+ -+ -+ -+This command sends a citation for the selected entries to the so-called lyxpipe for use in LyX, Kile, or other LaTeX applications. It is only enabled when editing a bibliography. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+The Settings and Help Menu -+ -+Apart from the common &kde; Settings and Help menus described in the Menu -+chapter of the &kde; Fundamentals documentation &tellico; has these application specific menu entries: -+ -+ -+ -+ -+ -+ -+ -+ Settings -+ Show Group View -+ -+ -+ -+ -+This command toggles the display of the Group View. -+ -+ -+ -+ -+ -+ -+ Settings -+ Show Entry Editor -+ -+ -+ -+ -+This command toggles the display of the Entry Editor. -+ -+ -+ -+ -+ -+ -+ Settings -+ Group Selection -+ -+ -+ -+ -+This command changes the field used to group the entries in the collection. -+ -+ -+ -+ -+ -+ -+ -+ -+ ---- /dev/null -+++ tellico-3.0.2/src/fetch/dbcfetcher.cpp -@@ -0,0 +1,168 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#include "dbcfetcher.h" -+#include "../tellico_debug.h" -+ -+#include -+#include -+ -+#include -+#include -+#include -+ -+namespace { -+ static const char* DBC_API_URL = "https://oss-services.dbc.dk/opensearch/4.5/"; -+ static const int DBC_MAX_RETURNS_TOTAL = 20; -+} -+ -+using namespace Tellico; -+using Tellico::Fetch::DBCFetcher; -+ -+DBCFetcher::DBCFetcher(QObject* parent_) : XMLFetcher(parent_) { -+ setLimit(DBC_MAX_RETURNS_TOTAL); -+ setXSLTFilename(QLatin1String("dbc2tellico.xsl")); -+} -+ -+DBCFetcher::~DBCFetcher() { -+} -+ -+QString DBCFetcher::source() const { -+ return m_name.isEmpty() ? defaultName() : m_name; -+} -+ -+bool DBCFetcher::canSearch(FetchKey k) const { -+ return k == Title || k == Person || k == Keyword || k == ISBN; -+} -+ -+bool DBCFetcher::canFetch(int type) const { -+ return type == Data::Collection::Book || type == Data::Collection::Bibtex; -+} -+ -+void DBCFetcher::readConfigHook(const KConfigGroup&) { -+} -+ -+QUrl DBCFetcher::searchUrl() { -+ QUrl u(QString::fromLatin1(DBC_API_URL)); -+ -+ QUrlQuery query; -+ switch(request().key) { -+ case Title: -+ query.addQueryItem(QLatin1String("query"), QLatin1String("dkcclterm.ti=\"") + request().value + QLatin1Char('"')); -+ break; -+ -+ case Keyword: -+ query.addQueryItem(QLatin1String("query"), QLatin1String("cql.keywords=\"") + request().value + QLatin1Char('"')); -+ break; -+ -+ case Person: -+ query.addQueryItem(QLatin1String("query"), QLatin1String("term.mainCreator=\"") + request().value + QLatin1Char('"')); -+ break; -+ -+ case ISBN: -+ { -+ QString s = request().value; -+ s.remove(QLatin1Char('-')); -+ QStringList isbnList = FieldFormat::splitValue(s); -+ // only search for first ISBN for now -+ QString q = isbnList.isEmpty() ? QString() : QLatin1String("dkcclterm.ib=") + isbnList.at(0); -+ query.addQueryItem(QLatin1String("query"), q); -+ } -+ break; -+ -+ default: -+ myWarning() << "key not recognized:" << request().key; -+ return QUrl(); -+ } -+ query.addQueryItem(QLatin1String("action"), QLatin1String("search")); -+ // see https://opensource.dbc.dk/services/open-search-web-service -+ // agency and profile determine the search collections -+// query.addQueryItem(QLatin1String("agency"), QLatin1String("100200")); -+// query.addQueryItem(QLatin1String("profile"), QLatin1String("test")); -+ query.addQueryItem(QLatin1String("agency"), QLatin1String("761500")); -+ query.addQueryItem(QLatin1String("profile"), QLatin1String("opac")); -+ query.addQueryItem(QLatin1String("term.type"), QLatin1String("bog")); -+ query.addQueryItem(QLatin1String("start"), QLatin1String("1")); -+ query.addQueryItem(QLatin1String("stepValue"), QLatin1String("5")); -+ query.addQueryItem(QLatin1String("outputType"), QLatin1String("xml")); -+ u.setQuery(query); -+ -+// myDebug() << "url:" << u.url(); -+ return u; -+} -+ -+void DBCFetcher::resetSearch() { -+} -+ -+void DBCFetcher::parseData(QByteArray& data_) { -+ Q_UNUSED(data_); -+} -+ -+Tellico::Data::EntryPtr DBCFetcher::fetchEntryHookData(Data::EntryPtr entry_) { -+ Q_ASSERT(entry_); -+ return entry_; -+} -+ -+Tellico::Fetch::FetchRequest DBCFetcher::updateRequest(Data::EntryPtr entry_) { -+ QString title = entry_->field(QLatin1String("title")); -+ if(!title.isEmpty()) { -+ return FetchRequest(Keyword, title); -+ } -+ return FetchRequest(); -+} -+ -+Tellico::Fetch::ConfigWidget* DBCFetcher::configWidget(QWidget* parent_) const { -+ return new DBCFetcher::ConfigWidget(parent_, this); -+} -+ -+QString DBCFetcher::defaultName() { -+// return QLatin1String("Dansk BiblioteksCenter (DBC)"); -+ return i18n("Danish Bibliographic Center (DBC.dk)"); -+} -+ -+QString DBCFetcher::defaultIcon() { -+ return favIcon("http://dbc.dk"); -+} -+ -+Tellico::StringHash DBCFetcher::allOptionalFields() { -+ StringHash hash; -+ return hash; -+} -+ -+DBCFetcher::ConfigWidget::ConfigWidget(QWidget* parent_, const DBCFetcher* fetcher_) -+ : Fetch::ConfigWidget(parent_) { -+ QVBoxLayout* l = new QVBoxLayout(optionsWidget()); -+ l->addWidget(new QLabel(i18n("This source has no options."), optionsWidget())); -+ l->addStretch(); -+ -+ // now add additional fields widget -+ addFieldsWidget(DBCFetcher::allOptionalFields(), fetcher_ ? fetcher_->optionalFields() : QStringList()); -+} -+ -+void DBCFetcher::ConfigWidget::saveConfigHook(KConfigGroup&) { -+} -+ -+QString DBCFetcher::ConfigWidget::preferredName() const { -+ return DBCFetcher::defaultName(); -+} ---- /dev/null -+++ tellico-3.0.2/src/fetch/dbcfetcher.h -@@ -0,0 +1,86 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#ifndef TELLICO_DBCFETCHER_H -+#define TELLICO_DBCFETCHER_H -+ -+#include "xmlfetcher.h" -+#include "configwidget.h" -+#include "../datavectors.h" -+ -+namespace Tellico { -+ namespace Fetch { -+ -+/** -+ * A fetcher for https://opensource.dbc.dk/services/open-search-web-service -+ * -+ * @author Robby Stephenson -+ */ -+class DBCFetcher : public XMLFetcher { -+Q_OBJECT -+ -+public: -+ /** -+ */ -+ DBCFetcher(QObject* parent); -+ /** -+ */ -+ virtual ~DBCFetcher(); -+ -+ /** -+ */ -+ virtual QString source() const Q_DECL_OVERRIDE; -+ virtual bool canSearch(FetchKey k) const Q_DECL_OVERRIDE; -+ virtual Type type() const Q_DECL_OVERRIDE { return DBC; } -+ virtual bool canFetch(int type) const Q_DECL_OVERRIDE; -+ virtual void readConfigHook(const KConfigGroup& config) Q_DECL_OVERRIDE; -+ -+ /** -+ * Returns a widget for modifying the fetcher's config. -+ */ -+ virtual Fetch::ConfigWidget* configWidget(QWidget* parent) const Q_DECL_OVERRIDE; -+ -+ class ConfigWidget : public Fetch::ConfigWidget { -+ public: -+ explicit ConfigWidget(QWidget* parent_, const DBCFetcher* fetcher = nullptr); -+ virtual void saveConfigHook(KConfigGroup&) Q_DECL_OVERRIDE; -+ virtual QString preferredName() const Q_DECL_OVERRIDE; -+ }; -+ friend class ConfigWidget; -+ -+ static QString defaultName(); -+ static QString defaultIcon(); -+ static StringHash allOptionalFields(); -+ -+private: -+ virtual FetchRequest updateRequest(Data::EntryPtr entry) Q_DECL_OVERRIDE; -+ virtual void resetSearch() Q_DECL_OVERRIDE; -+ virtual QUrl searchUrl() Q_DECL_OVERRIDE; -+ virtual void parseData(QByteArray& data) Q_DECL_OVERRIDE; -+ virtual Data::EntryPtr fetchEntryHookData(Data::EntryPtr entry) Q_DECL_OVERRIDE; -+}; -+ -+ } // end namespace -+} // end namespace -+#endif ---- /dev/null -+++ tellico-3.0.2/src/fetch/igdbfetcher.cpp -@@ -0,0 +1,616 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#include "igdbfetcher.h" -+#include "../collections/gamecollection.h" -+#include "../images/imagefactory.h" -+#include "../core/filehandler.h" -+#include "../utils/guiproxy.h" -+#include "../utils/string_utils.h" -+#include "../tellico_debug.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+namespace { -+ static const int IGDB_MAX_RETURNS_TOTAL = 20; -+ static const char* IGDB_API_URL = "https://igdbcom-internet-game-database-v1.p.mashape.com/"; -+ static const char* IGDB_API_KEY = "Ger6nO0EnKmsh7FCyUPa3GMdeYM5p1sfrPjjsnLYoHdDf19CGG"; -+} -+ -+using namespace Tellico; -+using Tellico::Fetch::IGDBFetcher; -+ -+IGDBFetcher::IGDBFetcher(QObject* parent_) -+ : Fetcher(parent_), m_started(false), m_apiKey(QLatin1String(IGDB_API_KEY)) { -+ // setLimit(IGDB_MAX_RETURNS_TOTAL); -+ if(m_genreHash.isEmpty()) { -+ populateHashes(); -+ } -+} -+ -+IGDBFetcher::~IGDBFetcher() { -+} -+ -+QString IGDBFetcher::source() const { -+ return m_name.isEmpty() ? defaultName() : m_name; -+} -+ -+QString IGDBFetcher::attribution() const { -+ return i18n("This information was freely provided by IGDB.com."); -+} -+ -+bool IGDBFetcher::canSearch(FetchKey k) const { -+ return k == Keyword; -+} -+ -+bool IGDBFetcher::canFetch(int type) const { -+ return type == Data::Collection::Game; -+} -+ -+void IGDBFetcher::readConfigHook(const KConfigGroup& config_) { -+ QString k = config_.readEntry("API Key", IGDB_API_KEY); -+ if(!k.isEmpty()) { -+ m_apiKey = k; -+ } -+} -+ -+void IGDBFetcher::search() { -+ continueSearch(); -+} -+ -+void IGDBFetcher::continueSearch() { -+ m_started = true; -+ -+ if(m_apiKey.isEmpty()) { -+ myDebug() << "empty API key"; -+ stop(); -+ return; -+ } -+ -+ QUrl u(QString::fromLatin1(IGDB_API_URL)); -+ u.setPath(u.path() + QLatin1String("games/")); -+ QUrlQuery q; -+ switch(request().key) { -+ case Keyword: -+ q.addQueryItem(QLatin1String("search"), request().value); -+ break; -+ -+ default: -+ myWarning() << "key not recognized:" << request().key; -+ stop(); -+ return; -+ } -+// q.addQueryItem(QLatin1String("fields"), QLatin1String("id,name")); -+ q.addQueryItem(QLatin1String("fields"), QLatin1String("*")); -+ q.addQueryItem(QLatin1String("limit"), QString::number(IGDB_MAX_RETURNS_TOTAL)); -+ u.setQuery(q); -+// myDebug() << u; -+ -+ m_job = igdbJob(u, m_apiKey); -+ connect(m_job, SIGNAL(result(KJob*)), SLOT(slotComplete(KJob*))); -+} -+ -+void IGDBFetcher::stop() { -+ if(!m_started) { -+ return; -+ } -+ if(m_job) { -+ m_job->kill(); -+ m_job = nullptr; -+ } -+ m_started = false; -+ emit signalDone(this); -+} -+ -+Tellico::Data::EntryPtr IGDBFetcher::fetchEntryHook(uint uid_) { -+ if(!m_entries.contains(uid_)) { -+ myDebug() << "no entry ptr"; -+ return Data::EntryPtr(); -+ } -+ -+ Data::EntryPtr entry = m_entries.value(uid_); -+ -+ QStringList publishers; -+ // grab the publisher data -+ if(entry->field(QLatin1String("publisher")).isEmpty()) { -+ foreach(const QString& pid, FieldFormat::splitValue(entry->field(QLatin1String("pub-id")))) { -+ const QString publisher = companyName(pid); -+ if(!publisher.isEmpty()) { -+ publishers << publisher; -+ } -+ } -+ } -+ entry->setField(QLatin1String("publisher"), publishers.join(FieldFormat::delimiterString())); -+ -+ QStringList developers; -+ // grab the developer data -+ if(entry->field(QLatin1String("developer")).isEmpty()) { -+ foreach(const QString& did, FieldFormat::splitValue(entry->field(QLatin1String("dev-id")))) { -+ const QString developer = companyName(did); -+ if(!developer.isEmpty()) { -+ developers << developer; -+ } -+ } -+ } -+ entry->setField(QLatin1String("developer"), developers.join(FieldFormat::delimiterString())); -+ -+ // clear the placeholder fields -+ entry->setField(QLatin1String("pub-id"), QString()); -+ entry->setField(QLatin1String("dev-id"), QString()); -+ return entry; -+} -+ -+Tellico::Fetch::FetchRequest IGDBFetcher::updateRequest(Data::EntryPtr entry_) { -+ QString title = entry_->field(QLatin1String("title")); -+ if(!title.isEmpty()) { -+ return FetchRequest(Keyword, title); -+ } -+ return FetchRequest(); -+} -+ -+void IGDBFetcher::slotComplete(KJob* job_) { -+ KIO::StoredTransferJob* job = static_cast(job_); -+ -+ if(job->error()) { -+ job->ui()->showErrorMessage(); -+ stop(); -+ return; -+ } -+ -+ const QByteArray data = job->data(); -+ if(data.isEmpty()) { -+ myDebug() << "no data"; -+ stop(); -+ return; -+ } -+ // see bug 319662. If fetcher is cancelled, job is killed -+ // if the pointer is retained, it gets double-deleted -+ m_job = nullptr; -+ -+#if 0 -+ myWarning() << "Remove debug from igdbfetcher.cpp"; -+ QFile file(QString::fromLatin1("/tmp/test.json")); -+ if(file.open(QIODevice::WriteOnly)) { -+ QTextStream t(&file); -+ t.setCodec("UTF-8"); -+ t << data; -+ } -+ file.close(); -+#endif -+ -+ Data::CollPtr coll(new Data::GameCollection(true)); -+ if(optionalFields().contains(QLatin1String("pegi"))) { -+ QStringList pegi = QString::fromLatin1("PEGI 3, PEGI 7, PEGI 12, PEGI 16, PEGI 18") -+ .split(QRegExp(QLatin1String("\\s*,\\s*")), QString::SkipEmptyParts); -+ Data::FieldPtr field(new Data::Field(QLatin1String("pegi"), i18n("PEGI Rating"), pegi)); -+ field->setFlags(Data::Field::AllowGrouped); -+ field->setCategory(i18n("General")); -+ coll->addField(field); -+ } -+ if(optionalFields().contains(QLatin1String("igdb"))) { -+ Data::FieldPtr field(new Data::Field(QLatin1String("igdb"), i18n("IGDB Link"), Data::Field::URL)); -+ field->setCategory(i18n("General")); -+ coll->addField(field); -+ } -+ // placeholder for publisher id, to be removed later -+ Data::FieldPtr f(new Data::Field(QLatin1String("pub-id"), QString(), Data::Field::Number)); -+ f->setFlags(Data::Field::AllowMultiple); -+ coll->addField(f); -+ // placeholder for developer id, to be removed later -+ f = new Data::Field(QLatin1String("dev-id"), QString(), Data::Field::Number); -+ f->setFlags(Data::Field::AllowMultiple); -+ coll->addField(f); -+ -+ QJsonDocument doc = QJsonDocument::fromJson(data); -+ foreach(const QVariant& result, doc.array().toVariantList()) { -+ QVariantMap resultMap = result.toMap(); -+ Data::EntryPtr entry(new Data::Entry(coll)); -+ populateEntry(entry, resultMap); -+ -+ FetchResult* r = new FetchResult(Fetcher::Ptr(this), entry); -+ m_entries.insert(r->uid, entry); -+ emit signalResultFound(r); -+ } -+ -+ stop(); -+} -+ -+void IGDBFetcher::populateEntry(Data::EntryPtr entry_, const QVariantMap& resultMap_) { -+ entry_->setField(QLatin1String("title"), mapValue(resultMap_, "name")); -+ entry_->setField(QLatin1String("description"), mapValue(resultMap_, "summary")); -+ entry_->setField(QLatin1String("certification"), m_esrbHash.value(mapValue(resultMap_, "esrb", "rating"))); -+ entry_->setField(QLatin1String("pub-id"), mapValue(resultMap_, "publishers")); -+ entry_->setField(QLatin1String("dev-id"), mapValue(resultMap_, "developers")); -+ -+ QString cover = mapValue(resultMap_, "cover", "url"); -+ if(cover.startsWith(QLatin1Char('/'))) { -+ cover.prepend(QLatin1String("https:")); -+ } -+ entry_->setField(QLatin1String("cover"), cover); -+ -+ QVariantList genreIDs = resultMap_.value(QLatin1String("genres")).toList(); -+ QStringList genres; -+ foreach(const QVariant& id, genreIDs) { -+ QString g = m_genreHash.value(id.toInt()); -+ if(!g.isEmpty()) { -+ genres << g; -+ } -+ } -+ entry_->setField(QLatin1String("genre"), genres.join(FieldFormat::delimiterString())); -+ -+ QVariantList releases = resultMap_.value(QLatin1String("release_dates")).toList(); -+ if(!releases.isEmpty()) { -+ QVariantMap releaseMap = releases.at(0).toMap(); -+ // for now just grab the year of the first release -+ entry_->setField(QLatin1String("year"), mapValue(releaseMap, "y")); -+ const QString platform = m_platformHash.value(releaseMap.value(QLatin1String("platform")).toInt()); -+ if(platform == QLatin1String("Nintendo Entertainment System (NES)")) { -+ entry_->setField(QLatin1String("platform"), i18n("Nintendo")); -+ } else if(platform == QLatin1String("Nintendo PlayStation")) { -+ entry_->setField(QLatin1String("platform"), i18n("PlayStation")); -+ } else if(platform == QLatin1String("PlayStation 2")) { -+ entry_->setField(QLatin1String("platform"), i18n("PlayStation2")); -+ } else if(platform == QLatin1String("PlayStation 3")) { -+ entry_->setField(QLatin1String("platform"), i18n("PlayStation3")); -+ } else if(platform == QLatin1String("PlayStation 4")) { -+ entry_->setField(QLatin1String("platform"), i18n("PlayStation4")); -+ } else if(platform == QLatin1String("PlayStation Portable")) { -+ entry_->setField(QLatin1String("platform"), i18nc("PlayStation Portable", "PSP")); -+ } else if(platform == QLatin1String("Wii")) { -+ entry_->setField(QLatin1String("platform"), i18n("Nintendo Wii")); -+ } else if(platform == QLatin1String("Nintendo GameCube")) { -+ entry_->setField(QLatin1String("platform"), i18n("GameCube")); -+ } else if(platform == QLatin1String("PC (Microsoft Windows)")) { -+ entry_->setField(QLatin1String("platform"), i18nc("Windows Platform", "Windows")); -+ } else if(platform == QLatin1String("Mac")) { -+ entry_->setField(QLatin1String("platform"), i18n("Mac OS")); -+ } else { -+ // TODO all the other platform translations -+ // also make the assumption that if the platform name isn't already in the allowed list, it should be added -+ Data::FieldPtr f = entry_->collection()->fieldByName(QLatin1String("platform")); -+ if(f && !f->allowed().contains(platform)) { -+ f->setAllowed(QStringList(f->allowed()) << platform); -+ } -+ entry_->setField(QLatin1String("platform"), platform); -+ } -+ } -+ -+ if(optionalFields().contains(QLatin1String("pegi"))) { -+ entry_->setField(QLatin1String("pegi"), m_pegiHash.value(mapValue(resultMap_, "pegi", "rating"))); -+ } -+ -+ if(optionalFields().contains(QLatin1String("igdb"))) { -+ entry_->setField(QLatin1String("igdb"), mapValue(resultMap_, "url")); -+ } -+} -+ -+QString IGDBFetcher::companyName(const QString& companyId_) const { -+ if(m_companyHash.contains(companyId_)) { -+ return m_companyHash.value(companyId_); -+ } -+ QUrl u(QString::fromLatin1(IGDB_API_URL)); -+ u.setPath(u.path() + QLatin1String("companies/") + companyId_); -+ -+ QUrlQuery q; -+ q.addQueryItem(QLatin1String("fields"), QLatin1String("*")); -+ -+ u.setQuery(q); -+ -+ QPointer job = igdbJob(u, m_apiKey); -+ if(!job->exec()) { -+ myDebug() << job->errorString() << u; -+ return QString(); -+ } -+ const QByteArray data = job->data(); -+ if(data.isEmpty()) { -+ myDebug() << "no data for" << u; -+ return QString(); -+ } -+#if 0 -+ myWarning() << "Remove company debug from igdbfetcher.cpp"; -+ QFile file(QString::fromLatin1("/tmp/igdb-company.json")); -+ if(file.open(QIODevice::WriteOnly)) { -+ QTextStream t(&file); -+ t.setCodec("UTF-8"); -+ t << data; -+ } -+ file.close(); -+#endif -+ -+ QJsonDocument doc = QJsonDocument::fromJson(data); -+ const QString company = mapValue(doc.array().toVariantList().at(0).toMap(), "name"); -+ m_companyHash.insert(companyId_, company); -+ return company; -+} -+ -+Tellico::Fetch::ConfigWidget* IGDBFetcher::configWidget(QWidget* parent_) const { -+ return new IGDBFetcher::ConfigWidget(parent_, this); -+} -+ -+ -+// Use member hash for certain field names for now. -+// Don't expect IGDB values to change. This avoids exponentially multiplying the number of API calls -+void IGDBFetcher::populateHashes() { -+ m_genreHash.insert(2, QLatin1String("Point-and-click")); -+ m_genreHash.insert(4, QLatin1String("Fighting")); -+ m_genreHash.insert(5, QLatin1String("Shooter")); -+ m_genreHash.insert(7, QLatin1String("Music")); -+ m_genreHash.insert(8, QLatin1String("Platform")); -+ m_genreHash.insert(9, QLatin1String("Puzzle")); -+ m_genreHash.insert(10, QLatin1String("Racing")); -+ m_genreHash.insert(11, QLatin1String("Real Time Strategy (RTS)")); -+ m_genreHash.insert(12, QLatin1String("Role-playing (RPG)")); -+ m_genreHash.insert(13, QLatin1String("Simulator")); -+ m_genreHash.insert(14, QLatin1String("Sport")); -+ m_genreHash.insert(15, QLatin1String("Strategy")); -+ m_genreHash.insert(16, QLatin1String("Turn-based strategy (TBS)")); -+ m_genreHash.insert(24, QLatin1String("Tactical")); -+ m_genreHash.insert(25, QLatin1String("Hack and slash/Beat 'em up")); -+ m_genreHash.insert(26, QLatin1String("Quiz/Trivia")); -+ m_genreHash.insert(30, QLatin1String("Pinball")); -+ m_genreHash.insert(31, QLatin1String("Adventure")); -+ m_genreHash.insert(32, QLatin1String("Indie")); -+ m_genreHash.insert(33, QLatin1String("Arcade")); -+ -+ m_platformHash.insert(3, QLatin1String("Linux")); -+ m_platformHash.insert(4, QLatin1String("Nintendo 64")); -+ m_platformHash.insert(5, QLatin1String("Wii")); -+ m_platformHash.insert(6, QLatin1String("PC (Microsoft Windows)")); -+ m_platformHash.insert(7, QLatin1String("PlayStation")); -+ m_platformHash.insert(8, QLatin1String("PlayStation 2")); -+ m_platformHash.insert(9, QLatin1String("PlayStation 3")); -+ m_platformHash.insert(11, QLatin1String("Xbox")); -+ m_platformHash.insert(12, QLatin1String("Xbox 360")); -+ m_platformHash.insert(13, QLatin1String("PC DOS")); -+ m_platformHash.insert(14, QLatin1String("Mac")); -+ m_platformHash.insert(15, QLatin1String("Commodore C64/128")); -+ m_platformHash.insert(16, QLatin1String("Amiga")); -+ m_platformHash.insert(18, QLatin1String("Nintendo Entertainment System (NES)")); -+ m_platformHash.insert(19, QLatin1String("Super Nintendo Entertainment System (SNES)")); -+ m_platformHash.insert(20, QLatin1String("Nintendo DS")); -+ m_platformHash.insert(21, QLatin1String("Nintendo GameCube")); -+ m_platformHash.insert(22, QLatin1String("Game Boy Color")); -+ m_platformHash.insert(23, QLatin1String("Dreamcast")); -+ m_platformHash.insert(24, QLatin1String("Game Boy Advance")); -+ m_platformHash.insert(25, QLatin1String("Amstrad CPC")); -+ m_platformHash.insert(26, QLatin1String("ZX Spectrum")); -+ m_platformHash.insert(27, QLatin1String("MSX")); -+ m_platformHash.insert(29, QLatin1String("Sega Mega Drive/Genesis")); -+ m_platformHash.insert(30, QLatin1String("Sega 32X")); -+ m_platformHash.insert(32, QLatin1String("Sega Saturn")); -+ m_platformHash.insert(33, QLatin1String("Game Boy")); -+ m_platformHash.insert(34, QLatin1String("Android")); -+ m_platformHash.insert(35, QLatin1String("Sega Game Gear")); -+ m_platformHash.insert(36, QLatin1String("Xbox Live Arcade")); -+ m_platformHash.insert(37, QLatin1String("Nintendo 3DS")); -+ m_platformHash.insert(38, QLatin1String("PlayStation Portable")); -+ m_platformHash.insert(39, QLatin1String("iOS")); -+ m_platformHash.insert(41, QLatin1String("Wii U")); -+ m_platformHash.insert(42, QLatin1String("N-Gage")); -+ m_platformHash.insert(44, QLatin1String("Tapwave Zodiac")); -+ m_platformHash.insert(45, QLatin1String("PlayStation Network")); -+ m_platformHash.insert(46, QLatin1String("PlayStation Vita")); -+ m_platformHash.insert(47, QLatin1String("Virtual Console (Nintendo)")); -+ m_platformHash.insert(48, QLatin1String("PlayStation 4")); -+ m_platformHash.insert(49, QLatin1String("Xbox One")); -+ m_platformHash.insert(50, QLatin1String("3DO Interactive Multiplayer")); -+ m_platformHash.insert(51, QLatin1String("Family Computer Disk System")); -+ m_platformHash.insert(52, QLatin1String("Arcade")); -+ m_platformHash.insert(53, QLatin1String("MSX2")); -+ m_platformHash.insert(55, QLatin1String("Mobile")); -+ m_platformHash.insert(56, QLatin1String("WiiWare")); -+ m_platformHash.insert(57, QLatin1String("WonderSwan")); -+ m_platformHash.insert(58, QLatin1String("Super Famicom")); -+ m_platformHash.insert(59, QLatin1String("Atari 2600")); -+ m_platformHash.insert(60, QLatin1String("Atari 7800")); -+ m_platformHash.insert(61, QLatin1String("Atari Lynx")); -+ m_platformHash.insert(62, QLatin1String("Atari Jaguar")); -+ m_platformHash.insert(63, QLatin1String("Atari ST/STE")); -+ m_platformHash.insert(64, QLatin1String("Sega Master System")); -+ m_platformHash.insert(65, QLatin1String("Atari 8-bit")); -+ m_platformHash.insert(66, QLatin1String("Atari 5200")); -+ m_platformHash.insert(67, QLatin1String("Intellivision")); -+ m_platformHash.insert(68, QLatin1String("ColecoVision")); -+ m_platformHash.insert(69, QLatin1String("BBC Microcomputer System")); -+ m_platformHash.insert(70, QLatin1String("Vectrex")); -+ m_platformHash.insert(71, QLatin1String("Commodore VIC-20")); -+ m_platformHash.insert(72, QLatin1String("Ouya")); -+ m_platformHash.insert(73, QLatin1String("BlackBerry OS")); -+ m_platformHash.insert(74, QLatin1String("Windows Phone")); -+ m_platformHash.insert(75, QLatin1String("Apple II")); -+ m_platformHash.insert(77, QLatin1String("Sharp X1")); -+ m_platformHash.insert(78, QLatin1String("Sega CD")); -+ m_platformHash.insert(79, QLatin1String("Neo Geo MVS")); -+ m_platformHash.insert(80, QLatin1String("Neo Geo AES")); -+ m_platformHash.insert(82, QLatin1String("Web browser")); -+ m_platformHash.insert(84, QLatin1String("SG-1000")); -+ m_platformHash.insert(85, QLatin1String("Donner Model 30")); -+ m_platformHash.insert(86, QLatin1String("TurboGrafx-16/PC Engine")); -+ m_platformHash.insert(87, QLatin1String("Virtual Boy")); -+ m_platformHash.insert(88, QLatin1String("Odyssey")); -+ m_platformHash.insert(89, QLatin1String("Microvision")); -+ m_platformHash.insert(90, QLatin1String("Commodore PET")); -+ m_platformHash.insert(91, QLatin1String("Bally Astrocade")); -+ m_platformHash.insert(92, QLatin1String("SteamOS")); -+ m_platformHash.insert(93, QLatin1String("Commodore 16")); -+ m_platformHash.insert(94, QLatin1String("Commodore Plus/4")); -+ m_platformHash.insert(95, QLatin1String("PDP-1")); -+ m_platformHash.insert(96, QLatin1String("PDP-10")); -+ m_platformHash.insert(97, QLatin1String("PDP-8")); -+ m_platformHash.insert(98, QLatin1String("DEC GT40")); -+ m_platformHash.insert(99, QLatin1String("Family Computer")); -+ m_platformHash.insert(100, QLatin1String("Analogue electronics")); -+ m_platformHash.insert(101, QLatin1String("Ferranti Nimrod Computer")); -+ m_platformHash.insert(102, QLatin1String("EDSAC")); -+ m_platformHash.insert(103, QLatin1String("PDP-7")); -+ m_platformHash.insert(104, QLatin1String("HP 2100")); -+ m_platformHash.insert(105, QLatin1String("HP 3000")); -+ m_platformHash.insert(106, QLatin1String("SDS Sigma 7")); -+ m_platformHash.insert(107, QLatin1String("Call-A-Computer time-shared mainframe computer system")); -+ m_platformHash.insert(108, QLatin1String("PDP-11")); -+ m_platformHash.insert(109, QLatin1String("CDC Cyber 70")); -+ m_platformHash.insert(110, QLatin1String("PLATO")); -+ m_platformHash.insert(111, QLatin1String("Imlac PDS-1")); -+ m_platformHash.insert(112, QLatin1String("Microcomputer")); -+ m_platformHash.insert(113, QLatin1String("OnLive Game System")); -+ m_platformHash.insert(114, QLatin1String("Amiga CD32")); -+ m_platformHash.insert(115, QLatin1String("Apple IIGS")); -+ m_platformHash.insert(116, QLatin1String("Acorn Archimedes")); -+ m_platformHash.insert(117, QLatin1String("Philips CD-i")); -+ m_platformHash.insert(118, QLatin1String("FM Towns")); -+ m_platformHash.insert(119, QLatin1String("Neo Geo Pocket")); -+ m_platformHash.insert(120, QLatin1String("Neo Geo Pocket Color")); -+ m_platformHash.insert(121, QLatin1String("Sharp X68000")); -+ m_platformHash.insert(122, QLatin1String("Nuon")); -+ m_platformHash.insert(123, QLatin1String("WonderSwan Color")); -+ m_platformHash.insert(124, QLatin1String("SwanCrystal")); -+ m_platformHash.insert(125, QLatin1String("PC-8801")); -+ m_platformHash.insert(126, QLatin1String("TRS-80")); -+ m_platformHash.insert(127, QLatin1String("Fairchild Channel F")); -+ m_platformHash.insert(128, QLatin1String("PC Engine SuperGrafx")); -+ m_platformHash.insert(129, QLatin1String("Texas Instruments TI-99")); -+ m_platformHash.insert(130, QLatin1String("Nintendo Switch")); -+ m_platformHash.insert(131, QLatin1String("Nintendo PlayStation")); -+ m_platformHash.insert(132, QLatin1String("Amazon Fire TV")); -+ m_platformHash.insert(133, QLatin1String("Philips Videopac G7000")); -+ m_platformHash.insert(134, QLatin1String("Acorn Electron")); -+ m_platformHash.insert(135, QLatin1String("Hyper Neo Geo 64")); -+ m_platformHash.insert(136, QLatin1String("Neo Geo CD")); -+ -+ // cheat by grabbing i18n values from default collection -+ Data::CollPtr c(new Data::GameCollection(true)); -+ QStringList esrb = c->fieldByName(QLatin1String("certification"))->allowed(); -+ Q_ASSERT(esrb.size() == 8); -+ while(esrb.size() < 8) { -+ esrb << QString(); -+ } -+ m_esrbHash.insert(QLatin1String("1"), esrb.at(7)); -+ m_esrbHash.insert(QLatin1String("2"), esrb.at(6)); -+ m_esrbHash.insert(QLatin1String("3"), esrb.at(5)); -+ m_esrbHash.insert(QLatin1String("4"), esrb.at(4)); -+ m_esrbHash.insert(QLatin1String("5"), esrb.at(3)); -+ m_esrbHash.insert(QLatin1String("6"), esrb.at(2)); -+ m_esrbHash.insert(QLatin1String("7"), esrb.at(1)); -+ -+ m_pegiHash.insert(QLatin1String("1"), QLatin1String("PEGI 3")); -+ m_pegiHash.insert(QLatin1String("2"), QLatin1String("PEGI 7")); -+ m_pegiHash.insert(QLatin1String("3"), QLatin1String("PEGI 12")); -+ m_pegiHash.insert(QLatin1String("4"), QLatin1String("PEGI 16")); -+ m_pegiHash.insert(QLatin1String("5"), QLatin1String("PEGI 18")); -+} -+ -+QString IGDBFetcher::defaultName() { -+ return i18n("Internet Game Database (IGDB.com)"); -+} -+ -+QString IGDBFetcher::defaultIcon() { -+ return favIcon("http://www.igdb.com"); -+} -+ -+Tellico::StringHash IGDBFetcher::allOptionalFields() { -+ StringHash hash; -+ hash[QLatin1String("pegi")] = i18n("PEGI Rating"); -+ hash[QLatin1String("igdb")] = i18n("IGDB Link"); -+ return hash; -+} -+ -+IGDBFetcher::ConfigWidget::ConfigWidget(QWidget* parent_, const IGDBFetcher* fetcher_) -+ : Fetch::ConfigWidget(parent_) { -+ QGridLayout* l = new QGridLayout(optionsWidget()); -+ l->setSpacing(4); -+ l->setColumnStretch(1, 10); -+ -+ int row = -1; -+ -+ QLabel* al = new QLabel(i18n("Registration is required for accessing the %1 data source. " -+ "If you agree to the terms and conditions, sign " -+ "up for an account, and enter your information below.", -+ IGDBFetcher::defaultName(), -+ QLatin1String("http://igdb.github.io/api/about/welcome/")), -+ optionsWidget()); -+ al->setOpenExternalLinks(true); -+ al->setWordWrap(true); -+ ++row; -+ l->addWidget(al, row, 0, 1, 2); -+ // richtext gets weird with size -+ al->setMinimumWidth(al->sizeHint().width()); -+ -+ QLabel* label = new QLabel(i18n("Access key: "), optionsWidget()); -+ l->addWidget(label, ++row, 0); -+ -+ m_apiKeyEdit = new QLineEdit(optionsWidget()); -+ connect(m_apiKeyEdit, SIGNAL(textChanged(const QString&)), SLOT(slotSetModified())); -+ l->addWidget(m_apiKeyEdit, row, 1); -+ QString w = i18n("The default Tellico key may be used, but searching may fail due to reaching access limits."); -+ label->setWhatsThis(w); -+ m_apiKeyEdit->setWhatsThis(w); -+ label->setBuddy(m_apiKeyEdit); -+ -+ l->setRowStretch(++row, 10); -+ -+ // now add additional fields widget -+ addFieldsWidget(IGDBFetcher::allOptionalFields(), fetcher_ ? fetcher_->optionalFields() : QStringList()); -+ -+ if(fetcher_) { -+ // only show the key if it is not the default Tellico one... -+ // that way the user is prompted to apply for their own -+ if(fetcher_->m_apiKey != QLatin1String(IGDB_API_KEY)) { -+ m_apiKeyEdit->setText(fetcher_->m_apiKey); -+ } -+ } -+} -+ -+void IGDBFetcher::ConfigWidget::saveConfigHook(KConfigGroup& config_) { -+ const QString apiKey = m_apiKeyEdit->text().trimmed(); -+ if(!apiKey.isEmpty()) { -+ config_.writeEntry("API Key", apiKey); -+ } -+} -+ -+QString IGDBFetcher::ConfigWidget::preferredName() const { -+ return IGDBFetcher::defaultName(); -+} -+ -+QPointer IGDBFetcher::igdbJob(const QUrl& url_, const QString& apiKey_) { -+ QPointer job = KIO::storedGet(url_, KIO::NoReload, KIO::HideProgressInfo); -+ job->addMetaData(QLatin1String("customHTTPHeader"), QLatin1String("X-Mashape-Key: ") + apiKey_); -+ job->addMetaData(QLatin1String("accept"), QLatin1String("application/json")); -+ KJobWidgets::setWindow(job, GUI::Proxy::widget()); -+ return job; -+} ---- /dev/null -+++ tellico-3.0.2/src/fetch/igdbfetcher.h -@@ -0,0 +1,124 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#ifndef TELLICO_IGDBFETCHER_H -+#define TELLICO_IGDBFETCHER_H -+ -+#include "fetcher.h" -+#include "configwidget.h" -+#include "../datavectors.h" -+ -+#include -+#include -+#include -+ -+class KJob; -+namespace KIO { -+ class StoredTransferJob; -+} -+ -+namespace Tellico { -+ namespace Fetch { -+ -+/** -+ * A fetcher for igdb.com -+ * -+ * @author Robby Stephenson -+ */ -+class IGDBFetcher : public Fetcher { -+Q_OBJECT -+ -+public: -+ /** -+ */ -+ IGDBFetcher(QObject* parent); -+ /** -+ */ -+ virtual ~IGDBFetcher(); -+ -+ /** -+ */ -+ virtual QString source() const Q_DECL_OVERRIDE; -+ virtual QString attribution() const Q_DECL_OVERRIDE; -+ virtual bool isSearching() const Q_DECL_OVERRIDE { return m_started; } -+ virtual bool canSearch(FetchKey k) const Q_DECL_OVERRIDE; -+ virtual void stop() Q_DECL_OVERRIDE; -+ virtual Data::EntryPtr fetchEntryHook(uint uid) Q_DECL_OVERRIDE; -+ virtual Type type() const Q_DECL_OVERRIDE { return IGDB; } -+ virtual bool canFetch(int type) const Q_DECL_OVERRIDE; -+ virtual void readConfigHook(const KConfigGroup& config) Q_DECL_OVERRIDE; -+ virtual void continueSearch() Q_DECL_OVERRIDE; -+ -+ /** -+ * Returns a widget for modifying the fetcher's config. -+ */ -+ virtual Fetch::ConfigWidget* configWidget(QWidget* parent) const Q_DECL_OVERRIDE; -+ -+ class ConfigWidget; -+ friend class ConfigWidget; -+ -+ static QString defaultName(); -+ static QString defaultIcon(); -+ static StringHash allOptionalFields(); -+ -+private Q_SLOTS: -+ void slotComplete(KJob* job); -+ -+private: -+ virtual void search() Q_DECL_OVERRIDE; -+ virtual FetchRequest updateRequest(Data::EntryPtr entry) Q_DECL_OVERRIDE; -+ void populateEntry(Data::EntryPtr entry, const QVariantMap& resultMap); -+ void populateHashes(); -+ QString companyName(const QString& companyId) const; -+ -+ static QPointer igdbJob(const QUrl& url, const QString& apiKey); -+ -+ bool m_started; -+ -+ QString m_apiKey; -+ QHash m_entries; -+ QPointer m_job; -+ -+ QHash m_genreHash; -+ QHash m_platformHash; -+ QHash m_esrbHash; -+ QHash m_pegiHash; -+ mutable QHash m_companyHash; -+}; -+ -+class IGDBFetcher::ConfigWidget : public Fetch::ConfigWidget { -+Q_OBJECT -+ -+public: -+ explicit ConfigWidget(QWidget* parent_, const IGDBFetcher* fetcher = nullptr); -+ virtual void saveConfigHook(KConfigGroup&) Q_DECL_OVERRIDE; -+ virtual QString preferredName() const Q_DECL_OVERRIDE; -+ -+private: -+ QLineEdit* m_apiKeyEdit; -+}; -+ -+ } // end namespace -+} // end namespace -+#endif ---- /dev/null -+++ tellico-3.0.2/src/tests/dbcfetchertest.cpp -@@ -0,0 +1,107 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#undef QT_NO_CAST_FROM_ASCII -+ -+#include "dbcfetchertest.h" -+ -+#include "../fetch/dbcfetcher.h" -+#include "../collections/bookcollection.h" -+#include "../collectionfactory.h" -+#include "../entry.h" -+#include "../utils/datafileregistry.h" -+ -+#include -+ -+QTEST_GUILESS_MAIN( DBCFetcherTest ) -+ -+DBCFetcherTest::DBCFetcherTest() : AbstractFetcherTest() { -+} -+ -+void DBCFetcherTest::initTestCase() { -+ Tellico::RegisterCollection registerBook(Tellico::Data::Collection::Book, "book"); -+ Tellico::DataFileRegistry::self()->addDataLocation(QFINDTESTDATA("../../xslt/dbc2tellico.xsl")); -+} -+ -+void DBCFetcherTest::testTitle() { -+ Tellico::Fetch::FetchRequest request(Tellico::Data::Collection::Bibtex, Tellico::Fetch::Title, -+ QLatin1String("Min kamp")); -+ Tellico::Fetch::Fetcher::Ptr fetcher(new Tellico::Fetch::DBCFetcher(this)); -+ -+ Tellico::Data::EntryList results = DO_FETCH1(fetcher, request, 1); -+ -+ QCOMPARE(results.size(), 1); -+ -+ Tellico::Data::EntryPtr entry = results.at(0); -+ QCOMPARE(entry->field(QLatin1String("title")), QLatin1String("Min kamp")); -+ QCOMPARE(entry->field(QLatin1String("author")), QString::fromUtf8("Karl Ove Knausgård")); -+ QCOMPARE(entry->field(QLatin1String("publisher")), QLatin1String("Lindhardt og Ringhof")); -+ QCOMPARE(entry->field(QLatin1String("pub_year")), QLatin1String("2012")); -+ QCOMPARE(entry->field(QLatin1String("isbn")), QLatin1String("978-87-11-39183-9")); -+ QCOMPARE(entry->field(QLatin1String("pages")), QLatin1String("487")); -+ QCOMPARE(entry->field(QLatin1String("genre")), QLatin1String("barndomserindringer; erindringer")); -+ QVERIFY(!entry->field(QLatin1String("plot")).isEmpty()); -+} -+ -+void DBCFetcherTest::testIsbn() { -+ Tellico::Fetch::FetchRequest request(Tellico::Data::Collection::Bibtex, Tellico::Fetch::ISBN, -+ QLatin1String("9788711391839")); -+ Tellico::Fetch::Fetcher::Ptr fetcher(new Tellico::Fetch::DBCFetcher(this)); -+ -+ Tellico::Data::EntryList results = DO_FETCH1(fetcher, request, 1); -+ -+ QCOMPARE(results.size(), 1); -+ -+ Tellico::Data::EntryPtr entry = results.at(0); -+ QCOMPARE(entry->field(QLatin1String("title")), QLatin1String("Min kamp")); -+ QCOMPARE(entry->field(QLatin1String("author")), QString::fromUtf8("Karl Ove Knausgård")); -+ QCOMPARE(entry->field(QLatin1String("publisher")), QLatin1String("Lindhardt og Ringhof")); -+ QCOMPARE(entry->field(QLatin1String("pub_year")), QLatin1String("2012")); -+ QCOMPARE(entry->field(QLatin1String("isbn")), QLatin1String("978-87-11-39183-9")); -+ QCOMPARE(entry->field(QLatin1String("pages")), QLatin1String("487")); -+ QCOMPARE(entry->field(QLatin1String("language")), QLatin1String("Dansk")); -+ QCOMPARE(entry->field(QLatin1String("translator")), QLatin1String("Sara Koch")); -+ QCOMPARE(entry->field(QLatin1String("genre")), QLatin1String("barndomserindringer; erindringer")); -+ QVERIFY(!entry->field(QLatin1String("plot")).isEmpty()); -+} -+ -+void DBCFetcherTest::testKeyword() { -+ Tellico::Fetch::FetchRequest request(Tellico::Data::Collection::Bibtex, Tellico::Fetch::Keyword, -+ QLatin1String("9788711391839")); -+ Tellico::Fetch::Fetcher::Ptr fetcher(new Tellico::Fetch::DBCFetcher(this)); -+ -+ Tellico::Data::EntryList results = DO_FETCH1(fetcher, request, 1); -+ -+ QCOMPARE(results.size(), 1); -+ -+ Tellico::Data::EntryPtr entry = results.at(0); -+ QCOMPARE(entry->field(QLatin1String("title")), QLatin1String("Min kamp")); -+ QCOMPARE(entry->field(QLatin1String("author")), QString::fromUtf8("Karl Ove Knausgård")); -+ QCOMPARE(entry->field(QLatin1String("publisher")), QLatin1String("Lindhardt og Ringhof")); -+ QCOMPARE(entry->field(QLatin1String("pub_year")), QLatin1String("2012")); -+ QCOMPARE(entry->field(QLatin1String("isbn")), QLatin1String("978-87-11-39183-9")); -+ QCOMPARE(entry->field(QLatin1String("pages")), QLatin1String("487")); -+ QCOMPARE(entry->field(QLatin1String("genre")), QLatin1String("barndomserindringer; erindringer")); -+ QVERIFY(!entry->field(QLatin1String("plot")).isEmpty()); -+} ---- /dev/null -+++ tellico-3.0.2/src/tests/dbcfetchertest.h -@@ -0,0 +1,42 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#ifndef DBCFETCHERTEST_H -+#define DBCFETCHERTEST_H -+ -+#include "abstractfetchertest.h" -+ -+class DBCFetcherTest : public AbstractFetcherTest { -+Q_OBJECT -+public: -+ DBCFetcherTest(); -+ -+private Q_SLOTS: -+ void initTestCase(); -+ void testTitle(); -+ void testIsbn(); -+ void testKeyword(); -+}; -+ -+#endif ---- /dev/null -+++ tellico-3.0.2/src/tests/igdbfetchertest.cpp -@@ -0,0 +1,79 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#undef QT_NO_CAST_FROM_ASCII -+ -+#include "igdbfetchertest.h" -+ -+#include "../fetch/igdbfetcher.h" -+#include "../collections/gamecollection.h" -+#include "../entry.h" -+#include "../images/imagefactory.h" -+ -+#include -+#include -+ -+#include -+ -+QTEST_GUILESS_MAIN( IGDBFetcherTest ) -+ -+IGDBFetcherTest::IGDBFetcherTest() : AbstractFetcherTest() { -+} -+ -+void IGDBFetcherTest::initTestCase() { -+ Tellico::ImageFactory::init(); -+} -+ -+void IGDBFetcherTest::testKeyword() { -+ KConfig config(QFINDTESTDATA("tellicotest.config"), KConfig::SimpleConfig); -+ QString groupName = QLatin1String("igdb"); -+ if(!config.hasGroup(groupName)) { -+ QSKIP("This test requires a config file.", SkipAll); -+ } -+ KConfigGroup cg(&config, groupName); -+ -+ Tellico::Fetch::FetchRequest request(Tellico::Data::Collection::Game, Tellico::Fetch::Keyword, -+ QLatin1String("Zelda Twilight Princess Wii")); -+ Tellico::Fetch::Fetcher::Ptr fetcher(new Tellico::Fetch::IGDBFetcher(this)); -+ fetcher->readConfig(cg, cg.name()); -+ -+ Tellico::Data::EntryList results = DO_FETCH1(fetcher, request, 1); -+ -+ QCOMPARE(results.size(), 1); -+ -+ Tellico::Data::EntryPtr entry = results.at(0); -+ QVERIFY(entry); -+ QCOMPARE(entry->field("title"), QLatin1String("The Legend of Zelda: Twilight Princess")); -+ QCOMPARE(entry->field("year"), QLatin1String("2006")); -+ QCOMPARE(entry->field("platform"), QLatin1String("Nintendo Wii")); -+ QCOMPARE(entry->field("certification"), QLatin1String("Teen")); -+ QCOMPARE(entry->field("pegi"), QLatin1String("PEGI 12")); -+ QCOMPARE(entry->field("genre"), QLatin1String("Adventure")); -+ QCOMPARE(entry->field("publisher"), QLatin1String("Nintendo")); -+ QCOMPARE(entry->field("developer"), QLatin1String("Nintendo EAD Group No. 3")); -+ QCOMPARE(entry->field("igdb"), QLatin1String("https://www.igdb.com/games/the-legend-of-zelda-twilight-princess")); -+ QVERIFY(!entry->field(QLatin1String("description")).isEmpty()); -+ QVERIFY(!entry->field(QLatin1String("cover")).isEmpty()); -+ QVERIFY(!entry->field(QLatin1String("cover")).startsWith('/')); -+} ---- /dev/null -+++ tellico-3.0.2/src/tests/igdbfetchertest.h -@@ -0,0 +1,40 @@ -+/*************************************************************************** -+ Copyright (C) 2017 Robby Stephenson -+ ***************************************************************************/ -+ -+/*************************************************************************** -+ * * -+ * 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) version 3 or any later version * -+ * accepted by the membership of KDE e.V. (or its successor approved * -+ * by the membership of KDE e.V.), which shall act as a proxy * -+ * defined in Section 14 of version 3 of the license. * -+ * * -+ * 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, see . * -+ * * -+ ***************************************************************************/ -+ -+#ifndef IGDBFETCHERTEST_H -+#define IGDBFETCHERTEST_H -+ -+#include "abstractfetchertest.h" -+ -+class IGDBFetcherTest : public AbstractFetcherTest { -+Q_OBJECT -+public: -+ IGDBFetcherTest(); -+ -+private Q_SLOTS: -+ void initTestCase(); -+ void testKeyword(); -+}; -+ -+#endif ---- /dev/null -+++ tellico-3.0.2/xslt/dbc2tellico.xsl -@@ -0,0 +1,112 @@ -+ -+ -+ -+ -+ -+ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ <xsl:value-of select="dc:title"/> -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ diff --git a/debian/rules b/debian/rules deleted file mode 100755 index a19baf51..00000000 --- a/debian/rules +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -export DEB_LDFLAGS_MAINT_APPEND = -Wl,--no-undefined -Wl,--as-needed - -%: - dh $@ --with kf5 --parallel - -override_dh_auto_configure: - dh_auto_configure -Skf5 --parallel -- \ - -DBUILD_TESTS=false \ - -DENABLE_WEBCAM=false - -override_dh_shlibdeps: - dh_shlibdeps -- -xkdepim-runtime - -override_dh_compress: - dh_compress -Xkde -X.docbook - -override_dh_install: - dh_install --fail-missing diff --git a/debian/source/format b/debian/source/format deleted file mode 100644 index 163aaf8d..00000000 --- a/debian/source/format +++ /dev/null @@ -1 +0,0 @@ -3.0 (quilt) diff --git a/debian/source/include-binaries b/debian/source/include-binaries deleted file mode 100644 index c2b405a7..00000000 --- a/debian/source/include-binaries +++ /dev/null @@ -1,30 +0,0 @@ -# -# known binary files in the upstream tarball -# -doc/amazon-options.png -doc/csv-dialog.png -doc/entry-editor1.png -doc/entry-editor3.png -doc/entry-editor4.png -doc/entry-editor5.png -doc/export-bibtex.png -doc/export-csv.png -doc/export-html.png -doc/export-options.png -doc/externalexec-options.png -doc/fetch-dialog.png -doc/fields-dialog.png -doc/filter-dialog.png -doc/filter-view.png -doc/general-options.png -doc/imdb-options.png -doc/loan-dialog.png -doc/loan-view.png -doc/main-window.png -doc/multiple-sources-options.png -doc/print-options.png -doc/report-dialog.png -doc/source-options.png -doc/sru-options.png -doc/template-options.png -doc/z3950-options.png diff --git a/debian/source/lintian-overrides b/debian/source/lintian-overrides deleted file mode 100644 index 71d8c83a..00000000 --- a/debian/source/lintian-overrides +++ /dev/null @@ -1,7 +0,0 @@ -# -source: source-is-missing xslt/report-templates/jquery.flot.pie.js line length is 258 characters (>256) -source-is-missing xslt/report-templates/jquery.min.js -# are false positives and reported as Lintian bug -# in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=744972#85 -# -# l l diff --git a/debian/tellico-data.install b/debian/tellico-data.install deleted file mode 100644 index a4f57a9e..00000000 --- a/debian/tellico-data.install +++ /dev/null @@ -1,18 +0,0 @@ -debian/tmp/etc/xdg -debian/tmp/usr/share/config.kcfg -debian/tmp/usr/share/icons -debian/tmp/usr/share/kconf_update -debian/tmp/usr/share/kxmlgui5 -debian/tmp/usr/share/locale -debian/tmp/usr/share/mime -debian/tmp/usr/share/*/org.kde.tellico.appdata.xml -debian/tmp/usr/share/tellico/*.xsl -debian/tmp/usr/share/tellico/*.xml -debian/tmp/usr/share/tellico/*.png -debian/tmp/usr/share/tellico/*.js -debian/tmp/usr/share/tellico/*.dtd -debian/tmp/usr/share/tellico/*.tips -debian/tmp/usr/share/tellico/*.html -debian/tmp/usr/share/tellico/entry-templates -debian/tmp/usr/share/tellico/pics -debian/tmp/usr/share/tellico/report-templates diff --git a/debian/tellico-doc.install b/debian/tellico-doc.install deleted file mode 100644 index bf3f193f..00000000 --- a/debian/tellico-doc.install +++ /dev/null @@ -1 +0,0 @@ -debian/tmp/usr/share/doc diff --git a/debian/tellico-scripts.install b/debian/tellico-scripts.install deleted file mode 100644 index af2430dc..00000000 --- a/debian/tellico-scripts.install +++ /dev/null @@ -1,3 +0,0 @@ -debian/tmp/usr/share/tellico/data-sources -debian/tmp/usr/share/tellico/z3950-servers.cfg - diff --git a/debian/tellico.1x b/debian/tellico.1x deleted file mode 100644 index 6e60d5bf..00000000 --- a/debian/tellico.1x +++ /dev/null @@ -1,53 +0,0 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.40.4. -.TH TELLICO: "1x" "September 2011" "Debian" "User Commands" -.SH NAME -Tellico \- a collection manager for KDE -.SH SYNOPSIS -.B tellico -[\fIQt-options\fR] [\fIKDE-options\fR] [\fIoptions\fR] [\fIfilename\fR] -.SH DESCRIPTION -.SS "Generic options:" -.TP -\fB\-\-help\fR -Show help about options -.TP -\fB\-\-help\-qt\fR -Show Qt specific options -.TP -\fB\-\-help\-kde\fR -Show KDE specific options -.TP -\fB\-\-help\-all\fR -Show all options -.TP -\fB\-\-author\fR -Show author information -.TP -\fB\-v\fR, \fB\-\-version\fR -Show version information -.TP -\fB\-\-license\fR -Show license information -.TP -\fB\-\-\fR -End of options -.SH OPTIONS -.TP -\fB\-\-nofile\fR -Do not reopen the last open file -.TP -\fB\-\-bibtex\fR -Import as a bibtex file -.TP -\fB\-\-mods\fR -Import as a MODS file -.TP -\fB\-\-ris\fR -Import as a RIS file -.SS "Arguments:" -.TP -filename -File to open -.PP -KDE Development Platform: 4.6.5 (4.6.5) -Tellico: 2.3.4 diff --git a/debian/tellico.install b/debian/tellico.install deleted file mode 100644 index ca4918ff..00000000 --- a/debian/tellico.install +++ /dev/null @@ -1,3 +0,0 @@ -debian/tmp/usr/bin/* -debian/tellico.xpm usr/share/pixmaps/ -debian/tmp/usr/share/applications/* diff --git a/debian/tellico.manpages b/debian/tellico.manpages deleted file mode 100644 index 68831ac3..00000000 --- a/debian/tellico.manpages +++ /dev/null @@ -1 +0,0 @@ -debian/tellico.1x diff --git a/debian/tellico.xpm b/debian/tellico.xpm deleted file mode 100644 index 589d66ee..00000000 --- a/debian/tellico.xpm +++ /dev/null @@ -1,62 +0,0 @@ -/* XPM */ -static char *tellico[] = { -/* columns rows colors chars-per-pixel */ -"32 32 24 1", -" c #000404", -". c #062625", -"X c #01354A", -"o c #165536", -"O c #1C6056", -"+ c #5E0507", -"@ c #52545F", -"# c #1E5F9D", -"$ c #2B7ACF", -"% c #57B35E", -"& c #288FF2", -"* c #3486D1", -"= c #67ADB3", -"- c #A12223", -"; c #FD7070", -": c #E35555", -"> c #B84A4A", -", c #90F592", -"< c #FA8B8C", -"1 c #DC9F9F", -"2 c #FEFEFE", -"3 c #D6D8D4", -"4 c #ABB5B7", -"5 c None", -/* pixels */ -"55555555555555555555555555555555", -"55555555555555555++5555555555555", -"55555555555555+++:>+++5555555555", -"55555555555+++><<;;<<>+++5555555", -"55555555+++><<<<<;;;;;;;>+++5555", -"55555+++>1<<<<;;;<;;;;:;:;;>+++5", -"5555 +>1<<<<<<<;;;;;;;:;;;;:;>+ ", -"5555+-:>><<<<;<;<;;;:;;::;;>>>+ ", -"5555+>;;:--:;<;<;;;;;;;::><22> ", -"5555+:<;;;;:>-><<;;:::><222221 ", -"5555+><<<<;;;::->>::;32222222>+5", -"55XXX-;;<<<<<;;;:-322222222221+ ", -"XX*==-::;;;<<<<<;>22222222231-+ ", -"XO##*&@+->::;<;<<>2222222;>++ ", -"X#&&$##*#@--::;;<>2223<--++ 5", -"X&&&&&$$##*#@+-:;-21>-+@4@ 5555", -"X$&&&&&&&$###$#.+--+@1432@ 55555", -"X#&&&&&&&&&&$#32214432222=. 5555", -"XX$&&&&&&&&&�#X.. 55", -"5XXX#&$&&&&&&422222224=OXo@%O. 5", -"555.XXO$$$&&&=22223*#Xooo%%=O. 5", -"555X,,%OX##$=#ooo@o%%322% 5", -"555.,,,,%%OXO##OXo%%%%322222@ 55", -"555.%,,,,,,,%Ooo%O%322222222@ 55", -"555.%,,,,,,,,,,%O22222222222%. 5", -"555.o%%,,,,,,,,%%2222222224%X. 5", -"5555..oO%,,,,,,,3222222,%oX.. 5", -"555555 ..oO%,,,,=2223%O... 55", -"555555555 ..oO%,%3%Oo.. 55555", -"555555555555 ..ooXo. 55555555", -"555555555555555.. 55555555555", -"55555555555555555555555555555555" -}; diff --git a/debian/watch b/debian/watch deleted file mode 100644 index 50984f46..00000000 --- a/debian/watch +++ /dev/null @@ -1,13 +0,0 @@ -version=3 -# watch control file for uscan -http://tellico-project.org/ files/tellico-(.*).tar.xz -# -# FYI -# The space in 'http://tellico-project.org/ files/tellico-(.*).tar.xz' -# defines somehow two steps: -# -# First step: Fetch the page 'http://tellico-project.org/' -# -# Second step: Search for the string 'files/tellico-(.*).tar.xz' -# -#