granule-1.4.0-7/0000777000076400007640000000000011056775357010352 500000000000000granule-1.4.0-7/debian/0000777000076400007640000000000011056775356011573 500000000000000granule-1.4.0-7/debian/changelog0000644000076400007640000001210211056772337013351 00000000000000granule (1.4.0-7) unstable; urgency=low * Added picture valignment control. * [N8x0] Enabled asynchronous audio playback. * [N8x0] Disabled word completion/capitalization setting. * Fixed DeckPlayer background color change in answer entry. * Split default configuration file based on target OS. * [win32] Added support for external audio player, granule-audio-player. * [N8x0] Added full-screen mode with vertical control buttons toolbar (for models without hardware keyboard). * Redesigned DeckPlayer UI to gain bigger card real estate. * Fixed 'application hides with click on [x]' Bug #1981575. * Added fine-grained quality of answer controls to take full advantage of SM-2 algorithm. * Fixed 'text selection' bug. * Fixed 'illegal markup error erases all input' Bug #1935637. -- Vladislav Grinchenko Mon, 01 Sep 2008 09:49:46 -0400 granule (1.3.0) unstable; urgency=low * Added keyboard accelerators (shortcuts) in DeckView and CardView dialogs (FR #1823396). * Setting 'test line' spinbutton of DeckPlayer dialog checks aswer against all lines of the question on either side. * Added SM-2 alogrithm support with E-Factor and number of CardBoxes configurable beyound default of 5 (FR #1787610, FR #1655113, FR #1729475). * Added support for pictures embedded in the Front of the card under the question text (FR #1790017). * Added absolute/relative sound path selection to the Deck Preferences dialog. * Made 'Window Maximize' action non-sticky for DeckPlayer. * Added 'AutoFill' functionality to fill some text fields in CardView dialog with predefined pattern. * Refactored Appearance settings into MVC pattern with persistent storage. * Cleared *sticky* text selection in DeckPlayer. -- Vladislav Grinchenko Sun, 17 Aug 2008 20:00:00 -0500 granule (1.2.4-7) unstable; urgency=low * Ported to IT2007 - Maemo 3.0 new interface (Feature Request #1669610). * Made bg_/fg_color text settings configurable in DeckPlayer (Bug #1628956). * Added show/hide various controls of DeckPlayer dialog in PDA version to maximize usable viewing area. * Double-clicking an entry in DeckView dialog brings up CardView editing dialog for the card selected. * Load multiple DeckFiles at once (FR #1618817). * Fixed "Answer line selector is ignored" (Bug #1618820). * Changed sound command arguments to require file type extension (from %s to %s.wav for wav files). * Added custom Deck Appearance preferences available via DeckPlayer->EditDeck->DeckInfo dialog. * Added 'normalize' (remove extra newlines/whitespaces) and 'add index' edit shortcut buttons to CardView dialog. * Took [Cancel] button out of focus chain (Feature Req #1620622). * Added alternative config file command-line option with { --config-file=/path/name }. * Added pane separators to CardView dialog to adjust the height of the multiline input fields. * Added padding control for all text fields in DeckPlayer. * Added (opional) two-sided sound clip playback. * Changed sound playback to asynchronous. * Ported to OpenEmbedded GPE PDAs (240x320 screen size) (Patch #1560198). * Fixed granule.spec.in to fit FC extras strict spec rules. * Added text alignment controls for Front/Back text fields. * Fixed format of DeckInfo dialog and proper setting of alternative sound path. * Added multi-line CSV file import (Feature Request #1588158). -- Vladislav Grinchenko Sat, 13 Jan 2007 21:14:20 +0000 granule (1.2.3-1) stable; urgency=low * Fixed multi-row selection in DeckView bug (when adding new cards). * Make Front and Back fields in CardView high enough to fit two complete rows of data. * Remove duplicates from all CardDecks, when adding new card(s) to a CardDeck (Bug #1554483). * Properly handle resizing DeckPlayer window. -- Vladislav Grinchenko Sat, 07 Oct 2006 23:16:20 +0000 granule (1.2.2) stable; urgency=low * Port to Maemo 2.0 (Nokia770 IT2006). * Port to libassa-3.4.2 (mingw32 networking code support). * Memory management fix for gcc-4.0. * Added FlipSide memory to the DeckPlayer in CardBox learning mode. * Added optional 'side' attribute to 'carddeck' element in * cardfile.dtd to support *sticky* memory for the reverse cards. * Added multi-card deletion and adding to the CardDeck from DeckView. * Moved Fonts properties to Appearance tab. * Added optional lesson auto-pronunciation in every learning mode. * Added alternative word spelling for auto-pronunciation. * Fixed New CardFile save dialog. -- Vladislav Grinchenko Thur, 07 Sep 2006 23:16:20 +0000 granule (1.2.1) stable; urgency=low * Release 1.2.1. * Port to Maemo Nokia 770. -- Vladislav Grinchenko Thur, 15 Dec 2005 22:03:39 +0000 granule (1.1.6-1) unstable; urgency=low * Initial Release. * Changed DTD storage location from /etc/xml/granule to /usr/share/xml/granule -- Miriam Ruiz Wed, 1 Jun 2005 19:17:19 +0000 granule-1.4.0-7/debian/compat0000644000076400007640000000000210262643552012673 000000000000004 granule-1.4.0-7/debian/control0000644000076400007640000000107311042505466013077 00000000000000Source: granule Section: user/other Priority: optional Maintainer: Vladislav Grinchenko Build-Depends: debhelper (>= 4.0.0), libgtk2.0-dev, libxml2-dev, intltool Standards-Version: 3.6.1 Package: granule Architecture: any Depends: ${shlibs:Depends} Description: flashcard program for learning new words Granule is a flashcard program that implements Leither cardfile methodology for learning new words. It features both short-term and long-term memory training capabilities with scheduling. . Web Page: http://granule.sourceforge.net/ granule-1.4.0-7/debian/copyright0000644000076400007640000000124210262643552013427 00000000000000This package was debianized by Miriam Ruiz on Wed, 1 Jun 2005 19:17:19 +0000. It was downloaded from http://granule.sourceforge.net/ Copyright: (c) 2004-2005 by Vladislav Grinchenko Upstream Author: Vladislav Grinchenko License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. granule-1.4.0-7/debian/docs0000644000076400007640000000000710262643552012345 00000000000000README granule-1.4.0-7/debian/granule.install0000644000076400007640000000026610351051703014514 00000000000000/usr/bin/* /usr/share/granule/* /usr/share/granule/pixmaps/* /usr/share/granule/xml/* /usr/share/applications/* /usr/share/pixmaps/* /usr/share/doc/granule/* /usr/share/locale/*/*/* granule-1.4.0-7/debian/granule.xpm0000644000076400007640000001737510262643552013675 00000000000000/* XPM */ static char *granule[]={ "32 32 357 2", "cW c None", "Qt c None", ".K c #5c5c5c", "dt c #363636", "cE c #454545", "dg c #4b4b4b", "cS c #2b2b2b", ".s c #303030", ".f c #363636", "cM c #3b3b3b", "cH c #212121", "c2 c #232323", "cP c #242424", "du c #1b1b1b", "a5 c #121212", ".J c #191919", "dh c #161616", "dF c #101010", ".5 c #b9b745", ".# c #0a0a0a", ".I c #0c0c0c", "di c #0d0d0d", ".r c #0a0a0a", ".g c #050505", ".4 c #080808", "dv c #070707", ".e c #060606", "ag c #050505", "aM c #040404", "aw c #050505", "#3 c #050505", ".q c #040404", ".H c #040404", "dG c #030303", "dw c #040404", ".t c #1c1c05", "dj c #030303", "ds c #030303", "c1 c #030303", "dI c #020202", "a6 c #020202", "dE c #020202", ".d c #020202", "cV c #020202", "df c #020202", ".3 c #020202", "cB c #020202", "cL c #020202", ".p c #020202", "cG c #020202", "cR c #010101", ".a c #020202", "dx c #010101", "a8 c #020202", "c3 c #010101", ".G c #020202", "#p c #010101", "bj c #010101", "dk c #010101", ".c c #010101", ".2 c #010101", ".o c #010101", "d. c #000000", ".b c #010101", "dH c #010101", "a7 c #000000", ".L c #c1bf35", "#q c #dddd1c", ".F c #020202", ".6 c #cac92d", "dy c #000000", "dl c #040404", "bD c #010101", ".1 c #000000", ".h c #030303", "d# c #000000", "ax c #030303", "cd c #000000", "c4 c #000000", "#L c #e0e01a", ".n c #040404", "aN c #040404", ".E c #0b0b0b", "cX c #000000", "dm c #0c0c0c", "cv c #010101", "dz c #0a0a0a", "ah c #020202", "a9 c #000000", "c5 c #020202", "#4 c #c8c817", "dD c #0d0d0d", "dr c #101010", ".m c #181818", "cK c #0f0f0f", "#o c #161616", ".0 c #000000", "cU c #010101", "cA c #161616", "c0 c #111111", "de c #040404", "c9 c #0d0d0d", "da c #000000", ".D c #121212", "dA c #232323", "cO c #111111", ".u c #1f1f0d", "#K c #080808", "cQ c #0d0d0d", "c6 c #1b1b1b", "bk c #1c1c1c", "cF c #0e0e0e", ".l c #2d2d2d", "dn c #141414", "cD c #121212", "#n c #3b3b3b", "c7 c #353535", ".i c #303030", "dB c #4c4c4c", "ai c #aeae15", ".Z c #1f1f1f", ".C c #333333", "#m c #5c5c5c", ".7 c #d4d324", "cn c #111111", "ab c #121212", "aL c #141414", "#2 c #151515", "bH c #181818", "as c #191919", "bo c #1c1c1c", "bp c #1f1f1f", "ac c #212121", "db c #242424", "ce c #252525", "a1 c #282828", "ad c #2c2c2c", "ay c #2d2d2d", "#Y c #2e2e2e", "at c #2f2f2f", "aO c #333333", "bX c #343434", "bn c #353535", "ck c #363636", "au c #393939", "bI c #3a3a23", "b9 c #3e3e25", "aH c #3f3f3f", "do c #404040", "bG c #434343", "cY c #454545", "a0 c #464518", "bN c #49481a", ".Y c #4a4a4a", "aG c #4b4a14", "b8 c #4b4b48", "dc c #4d4d4d", ".k c #505050", "aI c #515151", "bh c #535353", ".P c #545454", "bJ c #57570c", "bq c #585858", "#b c #595915", "dC c #595959", "c8 c #5a5a5a", "bl c #5c5c5c", ".B c #5e5e5e", "bW c #5f5f5f", "bm c #626262", "#B c #656530", ".j c #666666", "a2 c #696969", "cq c #6a6a6a", "#c c #6f6f2a", "cf c #6f6f48", "by c #707056", "cu c #717171", "#C c #72724e", "dp c #727272", "#Z c #737373", "#e c #747474", "bE c #767676", "cC c #777777", "bK c #78782d", ".X c #787878", "bY c #79790e", "cZ c #797979", "#D c #7a7a7a", ".Q c #7c7c7c", "cw c #7d7d7d", "co c #7e7e7e", "cj c #7f7f7f", "#X c #80801b", "bR c #808080", ".N c #81811d", "#d c #828253", "cN c #828282", "cT c #848484", "b. c #878787", "cJ c #898989", "ar c #8a8a10", ".O c #8a8a3d", "b1 c #8b8a72", "#W c #8b8b16", "bV c #8b8b8b", "bZ c #8d8d14", ".A c #8d8d8d", "#l c #8e8e8e", "bg c #8f8f16", "b# c #8f8f8f", "bO c #909062", "cr c #909090", "bx c #929218", "#f c #929292", "bz c #949494", "#J c #969696", "cc c #989898", "c. c #999916", ".v c #9a9a9a", "b2 c #9b9b9b", "ch c #9c9c9c", "#E c #9d9d9d", ".W c #9e9e9e", "bi c #9f9f9f", "aa c #a1a118", "cb c #a1a17c", "aq c #a2a12b", "#a c #a2a218", "br c #a2a229", "a# c #a3a12a", "cg c #a3a384", "dd c #a4a4a4", "#z c #a6a61d", ".R c #a6a6a6", "cx c #a8a8a8", "a3 c #a9a9a9", "cm c #ababab", "a4 c #acacac", "aK c #adadad", ".z c #afafaf", "aJ c #b0b0b0", "#F c #b1b1b1", "av c #b2b2b2", "af c #b6b6b6", "#g c #b7b7b7", "#A c #b8b829", "bA c #bababa", "#1 c #bbbbbb", ".w c #bcbcbc", "bF c #bdbdbd", "#P c #bebd36", "bs c #bebe21", "az c #bebe26", "b7 c #bebebe", "ae c #bfbfbf", "aX c #c0bf35", "bT c #c0c0c0", ".9 c #c1c034", "## c #c1c125", "cy c #c1c1c1", "bd c #c2c034", "#0 c #c2c2c2", "#7 c #c3c133", "#x c #c3c232", "dq c #c3c3c3", "aS c #c4c232", "#s c #c4c332", "b3 c #c4c4c4", "aR c #c5c431", ".S c #c5c5c5", "#y c #c6c521", "aC c #c6c530", "#k c #c6c6c6", "#v c #c7c52f", "#8 c #c7c530", "#U c #c7c62f", ".8 c #c7c630", "bS c #c7c7c7", "aY c #c8c72e", "#w c #c8c72f", ".y c #c8c8c8", "#r c #c9c72d", "#6 c #c9c72e", "#. c #c9c929", "aP c #c9c931", "#G c #c9c9c9", "bc c #cac82d", "aT c #cac92d", "bL c #caca1e", ".V c #cacaca", "#Q c #cbca2c", "cI c #cbcbcb", "aW c #cccb2b", "#T c #cccc2a", ".x c #cccccc", "ak c #cdcc2a", "ba c #cdcd35", "#h c #cdcdcd", "#5 c #cecc29", "#9 c #cecd2a", "#S c #cece29", ".T c #cecece", "ap c #cfcd29", "#O c #cfce28", "aU c #cfce29", "c# c #cfcf1b", "#u c #cfcf27", "be c #cfcf28", "cp c #cfcfcf", "bt c #d0d026", "bU c #d0d0d0", "aB c #d1d026", ".M c #d1d11f", "b0 c #d1d12a", "b6 c #d1d1d1", "#i c #d2d2d2", "aj c #d3d225", "#t c #d3d325", "#j c #d3d3d3", "#N c #d4d324", "al c #d4d424", ".U c #d4d4d4", "aQ c #d5d423", "#R c #d5d522", "#V c #d5d523", "ca c #d5d52b", "cz c #d5d5d5", "am c #d6d622", "bB c #d6d6d6", "bv c #d7d622", "a. c #d7d721", "cs c #d7d7d7", "aV c #d8d720", "bM c #d8d81b", "bw c #d8d820", "#I c #d8d8d8", "aZ c #d9d820", "aF c #d9d920", "bC c #d9d9d9", "ao c #dad91f", "#H c #dadada", "bf c #dbdb1d", "aD c #dbdb1e", "cl c #dbdbdb", "bu c #dcdc1d", "ct c #dcdcdc", "aA c #dddd1c", "ci c #dddddd", "an c #dedd1b", "aE c #dfdf1a", "bb c #dfdf1b", "bQ c #dfdfdf", "#M c #e0e01a", "b5 c #e0e0e0", "bP c #e1e1e1", "b4 c #e5e5e5", "QtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.d.e.fQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.g.h.i.j.k.l.m.n.o.p.q.r.sQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.KQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.0.1.2.3.4Qt", "QtQtQtQtQtQtQtQtQt.5.6.7.8.9#.###a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p", "QtQtQtQtQtQtQtQtQt#q#r.8#s#t#u#v#w#w#x#y#z#A#B#C#D#E#F#G#H#I#J#K", "QtQtQtQtQtQtQtQtQt#L#M#M#N#O#P#w#w#Q#R#S#T#P#U#V#W#X#Y.k#Z#0#1#2", "QtQtQtQtQtQtQtQt#3#4#M#M#M#M#M#M#M#5#6#7#8#9a.#6a#aaabacadaeaf#2", "QtQtQtQtQtQtQtagahaiaj#sakalam#M#M#M#Manaoap.8aqararasatauaeav#2", "QtQtQtQtQtQtawaxayazaAa.aBaj.9#waC#VaDaE#M#MaFaGararacaHaIaJaKaL", "QtQtQtQtQtaMaNaO#DaPaQaRaSaTaU#MaVaWaXaYaZ#Mama0arara1.Ba2a3a4aL", "a5a6a7.ba8a9.Cb.b#ba#MbbaAaAbc#wbd#Qbebfbb#Mama0arbgbhb#bi.TaKaL", "bjbkblbmbnbobpatbqbrbsbt#M#M#M#Mbubvbc.8bw#Mama0bxbybzbAbBbCaKaL", "bDbE#0#G#ibF.W#DbGbHbobIbJbKbLbM#M#M#M#M#M#MambNbO#JaebPbQbCaJas", "bDbR.TbSbTbAbT.ybU.UaebVbWbXaLabbYbZ#M#M#M#Mb0b1b2b3b4b5b5bCaKaL", "bDbRb6#j.U#jb6.x#0bTb7.y#i.T.VaJ#eb8b9c.c#cacbcc.Vb5b5b5b5bCaKaL", "cdbRbU#i#i#i#i#j#i#i#h#G.y#h.S#GbBbQ.ycecfcgchaeb5cibQbQb5bCaKaL", "a9cjbU#i#i#i#i#i#i#i#i#i#i#i#j.x#k.wbBckaI.vb3cl#HclcibQb5bCcmcn", "a9co.Tb6#i#i#i#i#i#i#i#i#i#i#i#i#i#0cpcqcr#GcsbBcs#IctbQbQ#Icucv", "a9cw#hb6#i#i#i#i#i#i#i#i#i#i#i#i#i#0.xcxcy.Ub6#jczcscibQ.x.QcAcB", "a9cw#hcpb6#i#i#i#i#i#i#i#i#i#i#i#i#0.xci#j#h.xbU#j.Ucl#IcCcDcBcE", "a9cw.x#hbU#i#i#i#i#i#i#i#i#i#i#i#icy#0.x.x.x#hcpb6#i#jcwcFcGcHQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#icy#0.x.x.x.x.x.TcIcJcKcLcMQtQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#icy#0.x.x.x.x.xbScNcO.dcPQtQtQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#icyb3.x.x.x.x.xcCcQcRcSQtQtQtQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#i#0#k.x.x.x.ycTcUcVcWQtQtQtQtQt", "cXcY#fa4#0bUbUcp#i#i#i#i#i#i#i#i#i#0#k.x.xbScZc0c1c2QtQtQtQtQtQt", "c3c4c5c6c7c8cJav.S.x#i#i#i#i#i#i#i#0#k.xbSbEc9cLQtQtQtQtQtQtQtQt", "QtQtQtawcLd.d#dadbdccCdd.xcz.U#j#icy#k#GcCdedfQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtdgdhdidjdkdldmdndodpb2bAbFdqdpdrdsdtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtdudvdwdxdydzdAdBdCdDdEQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtdFdGdHcddIcEQtQtQtQtQtQtQtQtQtQtQt"}; granule-1.4.0-7/debian/menu0000644000076400007640000000021610262643552012363 00000000000000?package(granule):needs="x11" section="Apps/Education" \ title="Granule" command="/usr/bin/granule" \ icon="/usr/share/pixmaps/granule.xpm" granule-1.4.0-7/debian/rules0000644000076400007640000000374010504646301012550 00000000000000#!/usr/bin/make -f # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) CFLAGS = -Wall -g ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif config.status: configure dh_testdir # Add here commands to configure the package. CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info build: build-stamp build-stamp: config.status dh_testdir # Add here commands to compile the package. $(MAKE) #docbook-to-man debian/granule.sgml > granule.1 touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp # Add here commands to clean up after the build process. -$(MAKE) distclean ifneq "$(wildcard /usr/share/misc/config.sub)" "" cp -f /usr/share/misc/config.sub config.sub endif ifneq "$(wildcard /usr/share/misc/config.guess)" "" cp -f /usr/share/misc/config.guess config.guess endif dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/granule. $(MAKE) install DESTDIR=$(CURDIR)/debian/granule # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot dh_installchangelogs ChangeLog dh_installdocs dh_installexamples dh_install debian/granule.xpm usr/share/pixmaps dh_installmenu dh_installman dh_link dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install granule-1.4.0-7/debian.hildon/0000777000076400007640000000000011056775356013047 500000000000000granule-1.4.0-7/debian.hildon/changelog0000644000076400007640000001175711056771735014645 00000000000000granule (1.4.0-7) unstable; urgency=low * Added picture valignment control. * [N8x0] Enabled asynchronous audio playback. * [N8x0] Disabled word completion/capitalization setting. * Fixed DeckPlayer background color change in answer entry. * Split default configuration file based on target OS. * [win32] Added support for external audio player, granule-audio-player. * [N8x0] Added full-screen mode with vertical control buttons toolbar (for models without hardware keyboard). * Redesigned DeckPlayer UI to gain bigger card real estate. * Fixed 'application hides with click on [x]' Bug #1981575. * Added fine-grained quality of answer controls to take full advantage of SM-2 algorithm. * Fixed 'text selection' bug. * Fixed 'illegal markup error erases all input' Bug #1935637. -- Vladislav Grinchenko Mon, 01 Sep 2008 09:49:46 granule (1.3.0) unstable; urgency=low * Added keyboard accelerators (shortcuts) in DeckView and CardView dialogs (FR #1823396). * Setting 'test line' spinbutton of DeckPlayer dialog checks aswer against all lines of the question on either side. * Added SM-2 alogrithm support with E-Factor and number of CardBoxes configurable beyound default of 5 (FR #1787610, FR #1655113, FR #1729475). * Added support for pictures embedded in the Front of the card under the question text (FR #1790017). * Added absolute/relative sound path selection to the Deck Preferences dialog. * Made 'Window Maximize' action non-sticky for DeckPlayer. * Added 'AutoFill' functionality to fill some text fields in CardView dialog with predefined pattern. * Refactored Appearance settings into MVC pattern with persistent storage. * Cleared *sticky* text selection in DeckPlayer. -- Vladislav Grinchenko Wed, 16 Jan 2008 17:14:07 -0500 granule (1.2.4) unstable; urgency=low * Made bg_/fg_color text settings configurable in DeckPlayer (Bug #1628956). * Added show/hide various controls of DeckPlayer dialog in PDA version to maximize usable viewing area. * Double-clicking an entry in DeckView dialog brings up CardView editing dialog for the card selected. * Load multiple DeckFiles at once (FR #1618817). * Fixed "Answer line selector is ignored" (Bug #1618820). * Changed sound command arguments to require file type extension (from %s to %s.wav for wav files). * Added custom Deck Appearance preferences available via DeckPlayer->EditDeck->DeckInfo dialog. * Added 'normalize' (remove extra newlines/whitespaces) and 'add index' edit shortcut buttons to CardView dialog. * Took [Cancel] button out of focus chain (Feature Req #1620622). * Added alternative config file command-line option with { --config-file=/path/name }. * Added pane separators to CardView dialog to adjust the height of the multiline input fields. * Added padding control for all text fields in DeckPlayer. * Added (opional) two-sided sound clip playback. * Changed sound playback to asynchronous. * Ported to OpenEmbedded GPE PDAs (240x320 screen size) (Patch #1560198). * Fixed granule.spec.in to fit FC extras strict spec rules. * Added text alignment controls for Front/Back text fields. * Fixed format of DeckInfo dialog and proper setting of alternative sound path. * Added multi-line CSV file import (Feature Request #1588158). -- Vladislav Grinchenko Sat, 13 Jan 2007 21:14:20 +0000 granule (1.2.3-1) stable; urgency=low * Fixed multi-row selection in DeckView bug (when adding new cards). * Make Front and Back fields in CardView high enough to fit two complete rows of data. * Remove duplicates from all CardDecks, when adding new card(s) to a CardDeck (Bug #1554483). * Properly handle resizing DeckPlayer window. -- Vladislav Grinchenko Sat, 07 Oct 2006 23:16:20 +0000 granule (1.2.2) stable; urgency=low * Port to Maemo 2.0 (Nokia770 IT2006). * Port to libassa-3.4.2 (mingw32 networking code support). * Memory management fix for gcc-4.0. * Added FlipSide memory to the DeckPlayer in CardBox learning mode. * Added optional 'side' attribute to 'carddeck' element in * cardfile.dtd to support *sticky* memory for the reverse cards. * Added multi-card deletion and adding to the CardDeck from DeckView. * Moved Fonts properties to Appearance tab. * Added optional lesson auto-pronunciation in every learning mode. * Added alternative word spelling for auto-pronunciation. * Fixed New CardFile save dialog. -- Vladislav Grinchenko Thur, 07 Sep 2006 23:16:20 +0000 granule (1.2.1) stable; urgency=low * Release 1.2.1. * Port to Maemo Nokia 770. -- Vladislav Grinchenko Thur, 15 Dec 2005 22:03:39 +0000 granule (1.1.6-1) unstable; urgency=low * Initial Release. * Changed DTD storage location from /etc/xml/granule to /usr/share/xml/granule -- Miriam Ruiz Wed, 1 Jun 2005 19:17:19 +0000 granule-1.4.0-7/debian.hildon/compat0000644000076400007640000000000210373003714014140 000000000000004 granule-1.4.0-7/debian.hildon/control0000644000076400007640000000132611052173264014352 00000000000000Source: granule Section: user/other Priority: optional Maintainer: Vladislav Grinchenko Build-Depends: debhelper (>= 4.0.0), libxml2-dev, libhildon1-dev, libosso-dev, libosso-gnomevfs2-dev, libhildonfm2-dev, osso-af-settings, libgconf2-dev, libhildonmm-dev, libhildon-fmmm-dev, intltool, libassa-dev Standards-Version: 3.6.1 Package: granule Architecture: any Depends: ${shlibs:Depends}, gstreamer-tools Description: flashcard program for learning new words Granule is a flashcard program that implements Leither cardfile methodology for learning new words. It features both short-term and long-term memory training capabilities with scheduling. . Web Page: http://granule.sourceforge.net/ granule-1.4.0-7/debian.hildon/copyright0000644000076400007640000000124210373003714014674 00000000000000This package was debianized by Miriam Ruiz on Wed, 1 Jun 2005 19:17:19 +0000. It was downloaded from http://granule.sourceforge.net/ Copyright: (c) 2004-2005 by Vladislav Grinchenko Upstream Author: Vladislav Grinchenko License: This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. On Debian GNU/Linux systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. granule-1.4.0-7/debian.hildon/dirs0000644000076400007640000000003210373003714013621 00000000000000usr/bin usr/share usr/lib granule-1.4.0-7/debian.hildon/docs0000644000076400007640000000000710373003714013612 00000000000000README granule-1.4.0-7/debian.hildon/files0000644000076400007640000000004510373003714013766 00000000000000granule_1.2.1_i386.deb misc optional granule-1.4.0-7/debian.hildon/granule.install0000644000076400007640000000026310470232071015766 00000000000000/usr/bin/* /usr/share/granule/* /usr/share/granule/*/* /usr/share/applications/* /usr/share/dbus-1/service/* /usr/share/pixmaps/* /usr/share/doc/granule/* /usr/share/locale/*/*/* granule-1.4.0-7/debian.hildon/granule.links0000644000076400007640000000015010470232071015433 00000000000000/usr/share/applications/hildon/granule.desktop /etc/others-menu/extra_applications/0112_granule.desktop granule-1.4.0-7/debian.hildon/granule.substvars0000644000076400007640000000135310373003714016357 00000000000000shlibs:Depends=dbus-1 (>= 0.23.4), dbus-glib-1 (>= 0.23.4), hildon-fm1 (>= 0.9.44-1), hildon-lgpl0 (>= 0.9.53-1), hildon-libs0 (>= 0.9.50-2), libatk1.0-0 (>= 1.9.0), libaudiofile0 (>= 0.2.3-4), libc6 (>= 2.3.2.ds1-4), libexpat1 (>= 1.95.8), libfontconfig1 (>= 2.3.2-1osso7), libfreetype6 (>= 2.1.10-1osso1), libgcc1 (>= 1:3.3.3-1), libgconf2-6 (>= 2.6.4), libglib2.0-0 (>= 2.6.0), libgtk2.0-0 (>= 1:2.6.4-8), libmatchbox1 (>= 1.7-1), libosso-gnomevfs2-0, libosso1 (>= 0.9.19-1), libpango1.0-0 (>= 1.8.1), libpng12-0 (>= 1.2.8rel), libstdc++5 (>= 1:3.3.3-1), libx11-6 | xlibs (>> 4.1.0), libxau0, libxext6 | xlibs (>> 4.1.0), libxft2 (>= 2.1.6-1osso10), libxml2 (>= 2.6.16), libxrender1, osso-esd, osso-thumbnail0 (>= 0.3.8-1), zlib1g (>= 1:1.2.1) granule-1.4.0-7/debian.hildon/granule.xpm0000644000076400007640000001737510373003714015142 00000000000000/* XPM */ static char *granule[]={ "32 32 357 2", "cW c None", "Qt c None", ".K c #5c5c5c", "dt c #363636", "cE c #454545", "dg c #4b4b4b", "cS c #2b2b2b", ".s c #303030", ".f c #363636", "cM c #3b3b3b", "cH c #212121", "c2 c #232323", "cP c #242424", "du c #1b1b1b", "a5 c #121212", ".J c #191919", "dh c #161616", "dF c #101010", ".5 c #b9b745", ".# c #0a0a0a", ".I c #0c0c0c", "di c #0d0d0d", ".r c #0a0a0a", ".g c #050505", ".4 c #080808", "dv c #070707", ".e c #060606", "ag c #050505", "aM c #040404", "aw c #050505", "#3 c #050505", ".q c #040404", ".H c #040404", "dG c #030303", "dw c #040404", ".t c #1c1c05", "dj c #030303", "ds c #030303", "c1 c #030303", "dI c #020202", "a6 c #020202", "dE c #020202", ".d c #020202", "cV c #020202", "df c #020202", ".3 c #020202", "cB c #020202", "cL c #020202", ".p c #020202", "cG c #020202", "cR c #010101", ".a c #020202", "dx c #010101", "a8 c #020202", "c3 c #010101", ".G c #020202", "#p c #010101", "bj c #010101", "dk c #010101", ".c c #010101", ".2 c #010101", ".o c #010101", "d. c #000000", ".b c #010101", "dH c #010101", "a7 c #000000", ".L c #c1bf35", "#q c #dddd1c", ".F c #020202", ".6 c #cac92d", "dy c #000000", "dl c #040404", "bD c #010101", ".1 c #000000", ".h c #030303", "d# c #000000", "ax c #030303", "cd c #000000", "c4 c #000000", "#L c #e0e01a", ".n c #040404", "aN c #040404", ".E c #0b0b0b", "cX c #000000", "dm c #0c0c0c", "cv c #010101", "dz c #0a0a0a", "ah c #020202", "a9 c #000000", "c5 c #020202", "#4 c #c8c817", "dD c #0d0d0d", "dr c #101010", ".m c #181818", "cK c #0f0f0f", "#o c #161616", ".0 c #000000", "cU c #010101", "cA c #161616", "c0 c #111111", "de c #040404", "c9 c #0d0d0d", "da c #000000", ".D c #121212", "dA c #232323", "cO c #111111", ".u c #1f1f0d", "#K c #080808", "cQ c #0d0d0d", "c6 c #1b1b1b", "bk c #1c1c1c", "cF c #0e0e0e", ".l c #2d2d2d", "dn c #141414", "cD c #121212", "#n c #3b3b3b", "c7 c #353535", ".i c #303030", "dB c #4c4c4c", "ai c #aeae15", ".Z c #1f1f1f", ".C c #333333", "#m c #5c5c5c", ".7 c #d4d324", "cn c #111111", "ab c #121212", "aL c #141414", "#2 c #151515", "bH c #181818", "as c #191919", "bo c #1c1c1c", "bp c #1f1f1f", "ac c #212121", "db c #242424", "ce c #252525", "a1 c #282828", "ad c #2c2c2c", "ay c #2d2d2d", "#Y c #2e2e2e", "at c #2f2f2f", "aO c #333333", "bX c #343434", "bn c #353535", "ck c #363636", "au c #393939", "bI c #3a3a23", "b9 c #3e3e25", "aH c #3f3f3f", "do c #404040", "bG c #434343", "cY c #454545", "a0 c #464518", "bN c #49481a", ".Y c #4a4a4a", "aG c #4b4a14", "b8 c #4b4b48", "dc c #4d4d4d", ".k c #505050", "aI c #515151", "bh c #535353", ".P c #545454", "bJ c #57570c", "bq c #585858", "#b c #595915", "dC c #595959", "c8 c #5a5a5a", "bl c #5c5c5c", ".B c #5e5e5e", "bW c #5f5f5f", "bm c #626262", "#B c #656530", ".j c #666666", "a2 c #696969", "cq c #6a6a6a", "#c c #6f6f2a", "cf c #6f6f48", "by c #707056", "cu c #717171", "#C c #72724e", "dp c #727272", "#Z c #737373", "#e c #747474", "bE c #767676", "cC c #777777", "bK c #78782d", ".X c #787878", "bY c #79790e", "cZ c #797979", "#D c #7a7a7a", ".Q c #7c7c7c", "cw c #7d7d7d", "co c #7e7e7e", "cj c #7f7f7f", "#X c #80801b", "bR c #808080", ".N c #81811d", "#d c #828253", "cN c #828282", "cT c #848484", "b. c #878787", "cJ c #898989", "ar c #8a8a10", ".O c #8a8a3d", "b1 c #8b8a72", "#W c #8b8b16", "bV c #8b8b8b", "bZ c #8d8d14", ".A c #8d8d8d", "#l c #8e8e8e", "bg c #8f8f16", "b# c #8f8f8f", "bO c #909062", "cr c #909090", "bx c #929218", "#f c #929292", "bz c #949494", "#J c #969696", "cc c #989898", "c. c #999916", ".v c #9a9a9a", "b2 c #9b9b9b", "ch c #9c9c9c", "#E c #9d9d9d", ".W c #9e9e9e", "bi c #9f9f9f", "aa c #a1a118", "cb c #a1a17c", "aq c #a2a12b", "#a c #a2a218", "br c #a2a229", "a# c #a3a12a", "cg c #a3a384", "dd c #a4a4a4", "#z c #a6a61d", ".R c #a6a6a6", "cx c #a8a8a8", "a3 c #a9a9a9", "cm c #ababab", "a4 c #acacac", "aK c #adadad", ".z c #afafaf", "aJ c #b0b0b0", "#F c #b1b1b1", "av c #b2b2b2", "af c #b6b6b6", "#g c #b7b7b7", "#A c #b8b829", "bA c #bababa", "#1 c #bbbbbb", ".w c #bcbcbc", "bF c #bdbdbd", "#P c #bebd36", "bs c #bebe21", "az c #bebe26", "b7 c #bebebe", "ae c #bfbfbf", "aX c #c0bf35", "bT c #c0c0c0", ".9 c #c1c034", "## c #c1c125", "cy c #c1c1c1", "bd c #c2c034", "#0 c #c2c2c2", "#7 c #c3c133", "#x c #c3c232", "dq c #c3c3c3", "aS c #c4c232", "#s c #c4c332", "b3 c #c4c4c4", "aR c #c5c431", ".S c #c5c5c5", "#y c #c6c521", "aC c #c6c530", "#k c #c6c6c6", "#v c #c7c52f", "#8 c #c7c530", "#U c #c7c62f", ".8 c #c7c630", "bS c #c7c7c7", "aY c #c8c72e", "#w c #c8c72f", ".y c #c8c8c8", "#r c #c9c72d", "#6 c #c9c72e", "#. c #c9c929", "aP c #c9c931", "#G c #c9c9c9", "bc c #cac82d", "aT c #cac92d", "bL c #caca1e", ".V c #cacaca", "#Q c #cbca2c", "cI c #cbcbcb", "aW c #cccb2b", "#T c #cccc2a", ".x c #cccccc", "ak c #cdcc2a", "ba c #cdcd35", "#h c #cdcdcd", "#5 c #cecc29", "#9 c #cecd2a", "#S c #cece29", ".T c #cecece", "ap c #cfcd29", "#O c #cfce28", "aU c #cfce29", "c# c #cfcf1b", "#u c #cfcf27", "be c #cfcf28", "cp c #cfcfcf", "bt c #d0d026", "bU c #d0d0d0", "aB c #d1d026", ".M c #d1d11f", "b0 c #d1d12a", "b6 c #d1d1d1", "#i c #d2d2d2", "aj c #d3d225", "#t c #d3d325", "#j c #d3d3d3", "#N c #d4d324", "al c #d4d424", ".U c #d4d4d4", "aQ c #d5d423", "#R c #d5d522", "#V c #d5d523", "ca c #d5d52b", "cz c #d5d5d5", "am c #d6d622", "bB c #d6d6d6", "bv c #d7d622", "a. c #d7d721", "cs c #d7d7d7", "aV c #d8d720", "bM c #d8d81b", "bw c #d8d820", "#I c #d8d8d8", "aZ c #d9d820", "aF c #d9d920", "bC c #d9d9d9", "ao c #dad91f", "#H c #dadada", "bf c #dbdb1d", "aD c #dbdb1e", "cl c #dbdbdb", "bu c #dcdc1d", "ct c #dcdcdc", "aA c #dddd1c", "ci c #dddddd", "an c #dedd1b", "aE c #dfdf1a", "bb c #dfdf1b", "bQ c #dfdfdf", "#M c #e0e01a", "b5 c #e0e0e0", "bP c #e1e1e1", "b4 c #e5e5e5", "QtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.d.e.fQtQtQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.g.h.i.j.k.l.m.n.o.p.q.r.sQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.t.u.v.w.x.y.z.A.B.C.D.E.F.G.H.I.J.KQtQtQt", "QtQtQtQtQtQtQtQtQtQtQt.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.0.1.2.3.4Qt", "QtQtQtQtQtQtQtQtQt.5.6.7.8.9#.###a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p", "QtQtQtQtQtQtQtQtQt#q#r.8#s#t#u#v#w#w#x#y#z#A#B#C#D#E#F#G#H#I#J#K", "QtQtQtQtQtQtQtQtQt#L#M#M#N#O#P#w#w#Q#R#S#T#P#U#V#W#X#Y.k#Z#0#1#2", "QtQtQtQtQtQtQtQt#3#4#M#M#M#M#M#M#M#5#6#7#8#9a.#6a#aaabacadaeaf#2", "QtQtQtQtQtQtQtagahaiaj#sakalam#M#M#M#Manaoap.8aqararasatauaeav#2", "QtQtQtQtQtQtawaxayazaAa.aBaj.9#waC#VaDaE#M#MaFaGararacaHaIaJaKaL", "QtQtQtQtQtaMaNaO#DaPaQaRaSaTaU#MaVaWaXaYaZ#Mama0arara1.Ba2a3a4aL", "a5a6a7.ba8a9.Cb.b#ba#MbbaAaAbc#wbd#Qbebfbb#Mama0arbgbhb#bi.TaKaL", "bjbkblbmbnbobpatbqbrbsbt#M#M#M#Mbubvbc.8bw#Mama0bxbybzbAbBbCaKaL", "bDbE#0#G#ibF.W#DbGbHbobIbJbKbLbM#M#M#M#M#M#MambNbO#JaebPbQbCaJas", "bDbR.TbSbTbAbT.ybU.UaebVbWbXaLabbYbZ#M#M#M#Mb0b1b2b3b4b5b5bCaKaL", "bDbRb6#j.U#jb6.x#0bTb7.y#i.T.VaJ#eb8b9c.c#cacbcc.Vb5b5b5b5bCaKaL", "cdbRbU#i#i#i#i#j#i#i#h#G.y#h.S#GbBbQ.ycecfcgchaeb5cibQbQb5bCaKaL", "a9cjbU#i#i#i#i#i#i#i#i#i#i#i#j.x#k.wbBckaI.vb3cl#HclcibQb5bCcmcn", "a9co.Tb6#i#i#i#i#i#i#i#i#i#i#i#i#i#0cpcqcr#GcsbBcs#IctbQbQ#Icucv", "a9cw#hb6#i#i#i#i#i#i#i#i#i#i#i#i#i#0.xcxcy.Ub6#jczcscibQ.x.QcAcB", "a9cw#hcpb6#i#i#i#i#i#i#i#i#i#i#i#i#0.xci#j#h.xbU#j.Ucl#IcCcDcBcE", "a9cw.x#hbU#i#i#i#i#i#i#i#i#i#i#i#icy#0.x.x.x#hcpb6#i#jcwcFcGcHQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#icy#0.x.x.x.x.x.TcIcJcKcLcMQtQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#icy#0.x.x.x.x.xbScNcO.dcPQtQtQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#icyb3.x.x.x.x.xcCcQcRcSQtQtQtQt", "a9cw.x.xbU#i#i#i#i#i#i#i#i#i#i#i#i#0#k.x.x.x.ycTcUcVcWQtQtQtQtQt", "cXcY#fa4#0bUbUcp#i#i#i#i#i#i#i#i#i#0#k.x.xbScZc0c1c2QtQtQtQtQtQt", "c3c4c5c6c7c8cJav.S.x#i#i#i#i#i#i#i#0#k.xbSbEc9cLQtQtQtQtQtQtQtQt", "QtQtQtawcLd.d#dadbdccCdd.xcz.U#j#icy#k#GcCdedfQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtdgdhdidjdkdldmdndodpb2bAbFdqdpdrdsdtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtdudvdwdxdydzdAdBdCdDdEQtQtQtQtQtQtQtQtQtQtQt", "QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtdFdGdHcddIcEQtQtQtQtQtQtQtQtQtQtQt"}; granule-1.4.0-7/debian.hildon/rules0000755000076400007640000000374710373003714014035 00000000000000#!/usr/bin/make -f # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) CFLAGS = -Wall -g ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 else CFLAGS += -O2 endif #ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) # INSTALL_PROGRAM += -s #endif config.status: configure dh_testdir # Add here commands to configure the package. CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info --enable-hildon=yes build: build-stamp build-stamp: config.status dh_testdir # Add here commands to compile the package. $(MAKE) #docbook-to-man debian/granule.sgml > granule.1 touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp # Add here commands to clean up after the build process. -$(MAKE) distclean ifneq "$(wildcard /usr/share/misc/config.sub)" "" cp -f /usr/share/misc/config.sub config.sub endif ifneq "$(wildcard /usr/share/misc/config.guess)" "" cp -f /usr/share/misc/config.guess config.guess endif dh_clean install: build dh_testdir dh_testroot dh_clean -k dh_installdirs # Add here commands to install the package into debian/granule. $(MAKE) install DESTDIR=$(CURDIR)/debian/granule # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot dh_install debian/granule.xpm usr/share/pixmaps dh_link dh_strip dh_compress dh_fixperms dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install granule-1.4.0-7/hildon/0000777000076400007640000000000011056775357011627 500000000000000granule-1.4.0-7/hildon/icons/0000777000076400007640000000000011056775355012740 500000000000000granule-1.4.0-7/hildon/icons/26x26/0000777000076400007640000000000011056775356013530 500000000000000granule-1.4.0-7/hildon/icons/26x26/granule.png0000644000076400007640000000323410373003714015570 00000000000000PNG  IHDRbkbKGD pHYs  ~tIME ,)IDATxڝKl{V\wmD0DLHuYdYbl!%"E$(`eFj;a wwUwG`LL~ι9L0~FBlrPo[N$gNY^ !hm1>Z7^/TrH&SR L)e !J)(\Ӡi{kZJ ]בH$FTEkö`bbJ)H)Ay|Kۦת&PIENDB`granule-1.4.0-7/hildon/icons/40x40/0000777000076400007640000000000011056775356013520 500000000000000granule-1.4.0-7/hildon/icons/40x40/granule.png0000644000076400007640000000536510373003714015567 00000000000000PNG  IHDR(*6fbKGD pHYs  ~tIME  IDATxřo?3=/6dQD%'E/rtRھhˋ8S/J!rՑ HJr RB ?pcx왾X,=Ҽ7< ܙy>`3y`Ώpo X,6 d2r) p2:w۶mO?48s LNNNm/7o8G7;LٻcǏ 㨪(XL ԩSv.---YglC`(%~ǀo%=}t4-E6`i)A2$LӃiȲ²,Ν;'|4.\ N333S5 4p n(||%WMd.E2 nW1|9ԔCb~X,F__CCC x<~~?bY8y$}B؀<Do:z݅(qjYYAnC_ 4h4J(`&e1==ͻˡC .].GmJK(\DjxRQZuƗu/r,tl$Jbq Ea||ݻw#}wtf ժJKn1[E‘~,kYh#@[{ÇG$qc):::badY-@B=j}W+ضe]XИ!6#Z@!1;m_fjŋeQ,¶SJw('?XZ8^]Cmr #PEs2g-o4>mz~[E-x`Wne2-jٿ_g+cEAQDQl:sS@kk;h*岗T`p^/ptߔ$闽=O<gϘMw`VhQ&ճ5LSfa>JR$:=V,K¶ū^*mmm8FTcI5kzoN$LcJE?P">rLGseuegx~ àEQ | hHy7toݺT*(-@5\w)3?EX5:4дBV&TU}vllLzYZZĉQ*x饗ì[͛EO!4}9:~(2pN>ꢭ=4͟4L_ֆT*!B pvI"@$y.]ٳg9wSSS?_"Du\_& gx8weeIrضm mmQV\+2(.Ǡ(ȲLTV!$1::ʦMd2fffɓ|Ǽ,gI&uL(vUn^HdA4axx.UcI3[_ART*-$FFFcǎIXdrrcǎ駟gyZΝ cc.+ Vs3;  EIJ]jJ㴤ۍ&`6Zryyؾ};$1;;ˉ'8}4o1ŋ/69{͍(nFFFjnaMI*Y. 4Q'|R{Ǯ]x^}tȲ~bjAZ F/EkVYr\.f`0Ȇ PU?AoUuG24͖DQ.dJ\.PJBX Yz5000@"h-&JB-..bYqU :rߊٶm/W.Gy4kVZZenncǎQVWwAE0kQ[!t^xԩS o:mۭ[b6JZ݊;z[ož}8~ct<^J(WT3i^{5N>]~W)x[O+ 4:B{~4 g4L}܂ :{qT*!U JB@(b X!2mn;7{lǗc|s]9>ym>`g,Pj v@<1.ƍx0!HTUVeɊaS]6:MS5 ppVt-"tX__ou ,2AHi@s ~m9?Oq!BZrL.S8;;\p .VP*$kjɇ 8þ}D"H#aJ5,Ll6e2-ɄQv9xû6(|eE! ۇ(r\Pߏ# ׇG4"2*,//3==ɓ'G>?{-H%(v Tk TMYɆpnِq8k77|~b(CU  l_xl\.. MhdY~Μ9u`ٙA5v[@ # (Js{Xd=ηpܦ<$I L&$ DQ6_x嗯; O6:XWkX@h4C|Va/.\d}=t!I:x^@X,ơCzv}MtTq-ӠTI̶Z+0lYYzr{ ! BQ|] I-zrvu"\={n1 Ԩk ?@y$ꥭJ[;jJ]ԤՔ(r Y4 JDZ*_264\.:v{5|_:U]Wh6#N%Eo}CFSZfCF dU@Q(J`9pO`D0?bAx!e?S? +H6K6Vyg5MFoE-$=7XYN!ti,]R3D@T C$ NŚ#СN])˄ao@%HE-6.nͪHd{vޒuRы$Vxw.P^wlJ;f(xp\vh4l x?NKz(H8nw6FCZu`D*'dl"=.W(vfZu`j&YUTF_wӉnj.hV >ע(ϝw,`{eu%ѵdEQ DdC|,:^=LiW\AQ x<r`p8R\$,cjʴ)_Ewn7w}7dq ٩j] U+XePr Q4:N4Tѫ{^8H\.G$!Hشxo25J>O=pw3C6^չ5CM*\0S!.\?Nu+}}}hF__ccc c_=FL&C:hDgii^zP(D("  ]]BY4lPNB/j5W_P8~׋iDQ;wEoddw^Bz9EJ\<===12~fpZoR.i4_r&35u;xC0$ f`vs}O|h4jf ,,,099 sssLNNY[[#N_uDDQƜ| vh?g|aVxADQ축L:,oEF$IBeA@M XjlZii(bWuGGGQUJB&aqq%VVVHRr9D"Y$"]4z(v֊L^Zjgip0::ݻt]… ?ޖ9ޠ\.s` h躋lv7"2$٤'LRծx;](brp8mTUEujjZ*lv Ja߿ N:ŋ/ȑ#GgϑH$x*vRp̽jG3eYfppaX Q.6NJs2Wn\.צ{-GZIv|v\n{gx3۫˲}}}YlgSߖr VETb}} ^K$0??tG sQ0(\yܿi@WNWZ4[u0rvȊ,˛&rňD":)\-~Q'x=om͘X-ah4ls0ˈM####x}ZpjEFC\0 &,c] z zbP6ټ5Awϳ@Z]7s]wx(o_DdYs!|>L/gĵmrΝرc8q¨)K .z$ 쮯I՝nuw$Nb||7xC/ iK$BͽQ Xo"s(BVhlJp,^UkFz9vBxO u(p0 666p:x< z},[v[oueΞ=d;˭d R#25 uϸ|yVeL&#<ѣGY]]3߀2KjWpw k[sXü rj|x8KמcRA+k ̱c8|NuStvqY>Rfx8z199 < 4U+ Z~뭷ql]qA䣨 ZW_}{:"/tvWU V󌏏377Gzx|KbJtUdYO~4f^>&SXX[__ĉnd>YKgۛ<btnUU=J2ٍm`\.׶N/Zkk=~5ӧOӟQ3&o7ZjԔm1b#Zǁall Knf|>ߦڜۭV0==?/6KY?Λa\/d:NzQcoe_4Fݻw3::ͦ NAZ_'Ojͷ';5 ,2eFLvϧ~?@8t߭$e~i9f#V{m5kˠ;t"] \HDӃڊJ8z(>,Bahx[)|ة>1ْ|XLW\(>]gif251S&9.FgCm~SzL"k&)7ttӧOl Kq/n2A'­ܩ(l>)ZWRQ`2!`Aqx,c_}$IENDB`granule-1.4.0-7/hildon/com.nokia.granule.service0000644000076400007640000000014110470232071016407 00000000000000# Granule service description file [D-BUS Service] Name=com.nokia.granule Exec=/usr/bin/granule granule-1.4.0-7/hildon/granule.desktop0000644000076400007640000000037010635367122014560 00000000000000[Desktop Entry] Encoding=UTF-8 Version=1.2.4 Name=Granule Comment=The Flashcards Program Exec=/usr/bin/granule Icon=granule Terminal=false Type=Application X-HildonDesk-ShowInToolbar=true X-Osso-Service=granule X-Osso-Type=application/x-executable granule-1.4.0-7/hildon/granule.png0000644000076400007640000000323010373003714013662 00000000000000PNG  IHDRJLbKGD pHYs  ~tIME*w+cm%IDATxڝoƟ/~r^-%QՊdj6M Ωgzꡇڿ"@}hZ }njTIPZLW&eI\3CMűa̼ϼo&B)]u49MBDY y{EʛPj5̘ιX-yO~n$i$Ʌ#{vTA `9: ;N;gRʎiHٜ$-o:ɯkDpQ(x(d^c08Bw{^$`8Z_G@,>&ϕi) ^nWAV2[C8nJU C~WtW$o$;3 ARʨD(a cZup&ghۈ"z}?^}~ܹ>0>R5t#eiP*ap:먘Ug_/7fggnrA@~xhVTB`CU8DB8р4[]p`Y4MBc{Vak=ئ9!5qhZ J}X1:19r욦9*riig =$A I ?J(!I`18"<{V @uùsa,zA0;@  %R@U W9@i01.9XEQhƅ L$, C֖JLsˊ8J$0-B%VewSSh,4-pA)B)u,*7 \.#sLLL IDQ$I0 tqQux`SSx33 0M 1q )%ReAQ0Ơi!Bs8sHI M]nassKK& LMd$!).!|S,FR4A)eeloGh68sǘCXz&sy+RJ]J)1zd@)iԩzp7R!8F(#@-R )%L2" 8[[[ƍqe.zM`6 !n??y+7([9N#^[]]l~!pҥxmmRc߿ VeJ)qtt/w:0"aN]A)8؛H˗[n]vLJ(f)ݻfFCUc<Ϗj+W7oO$y9O_z] eln0N۶=]Vzn4 R`6TUELjڵkV * Makefile.in.in: New file, from gettext-0.14.1. * boldquot.sed: New file, from gettext-0.14.1. * en@boldquot.header: New file, from gettext-0.14.1. * en@quot.header: New file, from gettext-0.14.1. * insert-header.sin: New file, from gettext-0.14.1. * quot.sed: New file, from gettext-0.14.1. * remove-potcdate.sin: New file, from gettext-0.14.1. * Rules-quot: New file, from gettext-0.14.1. granule-1.4.0-7/po/Makefile.in.in0000644000076400007640000001466211056772526013362 00000000000000# Makefile for program source directory in GNU NLS utilities package. # Copyright (C) 1995, 1996, 1997 by Ulrich Drepper # # This file file be copied and used freely without restrictions. It can # be used in projects which are not available under the GNU Public License # but which still want to provide support for the GNU gettext functionality. # Please note that the actual code is *not* freely available. # # - Modified by Owen Taylor to use GETTEXT_PACKAGE # instead of PACKAGE and to look for po2tbl in ./ not in intl/ # # - Modified by jacob berkman to install # Makefile.in.in and po2tbl.sed.in for use with glib-gettextize # # - Modified by Rodney Dawes for use with intltool # # We have the following line for use by intltoolize: # INTLTOOL_MAKEFILE GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ PACKAGE = @PACKAGE@ VERSION = @VERSION@ SHELL = /bin/sh srcdir = @srcdir@ top_srcdir = @top_srcdir@ top_builddir = .. VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ datadir = @datadir@ datarootdir = @datarootdir@ libdir = @libdir@ DATADIRNAME = @DATADIRNAME@ itlocaledir = $(prefix)/$(DATADIRNAME)/locale subdir = po install_sh = @install_sh@ # Automake >= 1.8 provides @mkdir_p@. # Until it can be supposed, use the safe fallback: mkdir_p = $(install_sh) -d INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ GMSGFMT = @GMSGFMT@ MSGFMT = @MSGFMT@ XGETTEXT = @XGETTEXT@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ MSGMERGE = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --dist GENPOT = INTLTOOL_EXTRACT=$(INTLTOOL_EXTRACT) srcdir=$(srcdir) $(INTLTOOL_UPDATE) --gettext-package $(GETTEXT_PACKAGE) --pot ALL_LINGUAS = @ALL_LINGUAS@ PO_LINGUAS=$(shell if test -r $(srcdir)/LINGUAS; then grep -v "^\#" $(srcdir)/LINGUAS; fi) POFILES=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.po "; done) DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(POFILES) EXTRA_DISTFILES = POTFILES.skip Makevars LINGUAS POTFILES = \ #This Gets Replace for some reason CATALOGS=$(shell if test -n "$(PO_LINGUAS)"; then LINGUAS="$(PO_LINGUAS)"; else LINGUAS="$(ALL_LINGUAS)"; fi; for lang in $$LINGUAS; do printf "$$lang.gmo "; done) .SUFFIXES: .SUFFIXES: .po .pox .gmo .mo .msg .cat .po.pox: $(MAKE) $(GETTEXT_PACKAGE).pot $(MSGMERGE) $< $(GETTEXT_PACKAGE).pot -o $*.pox .po.mo: $(MSGFMT) -o $@ $< .po.gmo: file=`echo $* | sed 's,.*/,,'`.gmo \ && rm -f $$file && $(GMSGFMT) -o $$file $< .po.cat: sed -f ../intl/po2msg.sed < $< > $*.msg \ && rm -f $@ && gencat $@ $*.msg all: all-@USE_NLS@ all-yes: $(CATALOGS) all-no: $(GETTEXT_PACKAGE).pot: $(POTFILES) $(GENPOT) install: install-data install-data: install-data-@USE_NLS@ install-data-no: all install-data-yes: all $(mkdir_p) $(DESTDIR)$(itlocaledir) if test -n "$(PO_LINGUAS)"; then \ linguas="$(PO_LINGUAS)"; \ else \ linguas="$(ALL_LINGUAS)"; \ fi; \ for lang in $$linguas; do \ dir=$(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES; \ $(mkdir_p) $$dir; \ if test -r $$lang.gmo; then \ $(INSTALL_DATA) $$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $$lang.gmo as $$dir/$(GETTEXT_PACKAGE).mo"; \ else \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo $$dir/$(GETTEXT_PACKAGE).mo; \ echo "installing $(srcdir)/$$lang.gmo as" \ "$$dir/$(GETTEXT_PACKAGE).mo"; \ fi; \ if test -r $$lang.gmo.m; then \ $(INSTALL_DATA) $$lang.gmo.m $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $$lang.gmo.m as $$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ if test -r $(srcdir)/$$lang.gmo.m ; then \ $(INSTALL_DATA) $(srcdir)/$$lang.gmo.m \ $$dir/$(GETTEXT_PACKAGE).mo.m; \ echo "installing $(srcdir)/$$lang.gmo.m as" \ "$$dir/$(GETTEXT_PACKAGE).mo.m"; \ else \ true; \ fi; \ fi; \ done # Empty stubs to satisfy archaic automake needs dvi info tags TAGS ID: # Define this as empty until I found a useful application. installcheck: uninstall: if test -n "$(PO_LINGUAS)"; then \ linguas="$(PO_LINGUAS)"; \ else \ linguas="$(ALL_LINGUAS)"; \ fi; \ for lang in $$linguas; do \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo; \ rm -f $(DESTDIR)$(itlocaledir)/$$lang/LC_MESSAGES/$(GETTEXT_PACKAGE).mo.m; \ done check: all $(GETTEXT_PACKAGE).pot mostlyclean: rm -f *.pox $(GETTEXT_PACKAGE).pot *.old.po cat-id-tbl.tmp rm -f .intltool-merge-cache clean: mostlyclean distclean: clean rm -f Makefile Makefile.in POTFILES stamp-it rm -f *.mo *.msg *.cat *.cat.m *.gmo maintainer-clean: distclean @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." rm -f Makefile.in.in distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) dist distdir: $(DISTFILES) dists="$(DISTFILES)"; \ extra_dists="$(EXTRA_DISTFILES)"; \ for file in $$extra_dists; do \ test -f $(srcdir)/$$file && dists="$$dists $(srcdir)/$$file"; \ done; \ for file in $$dists; do \ test -f $$file || file="$(srcdir)/$$file"; \ ln $$file $(distdir) 2> /dev/null \ || cp -p $$file $(distdir); \ done update-po: Makefile $(MAKE) $(GETTEXT_PACKAGE).pot tmpdir=`pwd`; \ if test -n "$(PO_LINGUAS)"; then \ linguas="$(PO_LINGUAS)"; \ else \ linguas="$(ALL_LINGUAS)"; \ fi; \ for lang in $$linguas; do \ echo "$$lang:"; \ result="`$(MSGMERGE) -o $$tmpdir/$$lang.new.po $$lang`"; \ if $$result; then \ if cmp $(srcdir)/$$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ rm -f $$tmpdir/$$lang.new.po; \ else \ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ :; \ else \ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ rm -f $$tmpdir/$$lang.new.po; \ exit 1; \ fi; \ fi; \ else \ echo "msgmerge for $$lang.gmo failed!"; \ rm -f $$tmpdir/$$lang.new.po; \ fi; \ done Makefile POTFILES: stamp-it @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ fi stamp-it: Makefile.in.in ../config.status POTFILES.in cd .. \ && CONFIG_FILES=$(subdir)/Makefile.in CONFIG_HEADERS= CONFIG_LINKS= \ $(SHELL) ./config.status # Tell versions [3.59,3.63) of GNU make not to export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: granule-1.4.0-7/po/POTFILES.in0000644000076400007640000000034110504117710012433 00000000000000# List of source files containing translatable strings. src/AppearancePrefs.cpp src/CSVImportDialog.cpp src/CardBox.cpp src/CardDeck.cpp src/CardView.cpp src/Deck.cpp src/DeckPlayer.cpp src/GeneralPref.cpp src/MainWindow.cpp granule-1.4.0-7/po/ru.po0000644000076400007640000002606010507553262011663 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #: src/CSVImportDialog.cpp:74 #, fuzzy msgid "" msgstr "" "Project-Id-Version: granule 1.1.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-03-19 12:00-0500\n" "PO-Revision-Date: 2005-04-12 21:34-0000\n" "Last-Translator: Vladislav Grinchenko \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/CSVImportDialog.cpp:57 src/CardView.cpp:126 msgid "Cancel" msgstr "Отменить" #: src/CSVImportDialog.cpp:64 msgid "Import" msgstr "Импорт" #: src/CSVImportDialog.cpp:69 msgid "Line Break:" msgstr "Разделитель" #: src/CSVImportDialog.cpp:70 msgid "UNIX (LF)" msgstr "" #: src/CSVImportDialog.cpp:71 msgid "Windows (CR+LF)" msgstr "" #: src/CSVImportDialog.cpp:76 msgid "Space" msgstr "Пробел" #: src/CSVImportDialog.cpp:77 msgid "Tab" msgstr "Таб" #: src/CSVImportDialog.cpp:78 msgid "Semicolon (;)" msgstr "Точка с запятой (;)" #: src/CSVImportDialog.cpp:79 msgid "Colon (:)" msgstr "Двоеточие (:)" #: src/CSVImportDialog.cpp:81 msgid "Comma (,)" msgstr "Запятая (,)" #: src/CSVImportDialog.cpp:85 msgid "Separators" msgstr "Разделители" #: src/CSVImportDialog.cpp:88 msgid "See two separators as one" msgstr "Слить 2 сепаратора в один" #: src/CSVImportDialog.cpp:214 msgid "CSV Text Import" msgstr "Импортировать текст" #: src/CardBox.cpp:184 msgid "0 cards" msgstr "0 карточек" #: src/CardBox.cpp:325 msgid "" "Failed to parse file\n" " " msgstr "" "Ошибка при чтении файла\n" " " #: src/CardBox.cpp:326 msgid "" "\n" "Reason: invalid file syntax/DTD" msgstr "" "\n" "Причина: ошибка в семантике файла/ДТД" #: src/CardBox.cpp:539 msgid "File \n" msgstr "Файл \n" #: src/CardBox.cpp:540 msgid "" "\n" "already exists.\n" "Would you like to delete it first?" msgstr "" "\n" "уже существует.\n" "Не хотите-ли вначале удалить его?" #: src/CardBox.cpp:547 src/CardBox.cpp:823 src/DeckPlayer.cpp:1119 msgid "Yes" msgstr "Да" #: src/CardBox.cpp:548 src/CardBox.cpp:824 src/DeckPlayer.cpp:1120 msgid "No" msgstr "Нет" #: src/CardBox.cpp:583 msgid "Trying to access index out of range!" msgstr "Попытка чтения вне инексного предела" #: src/CardBox.cpp:594 msgid "Card Deck you've selected is empty" msgstr "Выбранная колода карточек пуста" #: src/CardBox.cpp:613 msgid "" "First, open or create\n" "a Card Box file." msgstr "" "Вначале откройте или создайте\n" "Card Box файл (для хранение картотеки)." #: src/CardBox.cpp:652 msgid "First, open or create a Card File." msgstr "Вначале откройте или создайте Card файл." #: src/CardBox.cpp:696 msgid "" "You have learnt all\n" "expired cards in this deck." msgstr "" "Вы выучили все просроченные\n" "карточки в этой колоде." #: src/CardBox.cpp:737 msgid "" "First Open or Create\n" "a New Card File!" msgstr "" "Вначале откройте или создайте\n" "новый Card File (для хранения картотеки)." #: src/CardDeck.cpp:30 msgid "Card Box 1" msgstr "1-ая Ячейка" #: src/CardDeck.cpp:30 msgid "Card Box 2" msgstr "2-ая Ячейка" #: src/CardDeck.cpp:31 msgid "Card Box 3" msgstr "3-я Ячейка" #: src/CardDeck.cpp:31 msgid "Card Box 4" msgstr "4-я Ячейка" #: src/CardDeck.cpp:32 msgid "Card Box 5" msgstr "5-я Ячейка" #: src/CardView.cpp:118 msgid "Clear" msgstr "Очистить" #: src/CardView.cpp:135 msgid "Add" msgstr "Добавить" #: src/CardView.cpp:144 msgid "Ok" msgstr "Выполнить" #: src/CardView.cpp:153 msgid "Help" msgstr "Подсказка" #: src/CardView.cpp:162 msgid "Front : " msgstr "Лицевая:" #: src/CardView.cpp:168 msgid "Back :" msgstr "Оборот: " #: src/CardView.cpp:174 msgid "Example : " msgstr "Пример : " #: src/CardView.cpp:276 msgid "Fill up the back of the card" msgstr "Заполните оборот карточки" #: src/CardView.cpp:308 msgid "Fill up an example" msgstr "Заполните пример" #: src/CardView.cpp:368 msgid "Fill up the front of the card" msgstr "Заполните лицевую сторону" #: src/CardView.cpp:664 msgid "FRONT field contains illegal markup tag(s)." msgstr "Лицевая сторона содержит неудобоваримую маркировку." #: src/CardView.cpp:673 msgid "BACK field contains illegal markup tag(s)." msgstr "Оборотная сторона содержит неудобоваримую маркировку." #: src/CardView.cpp:682 msgid "EXAMPLE field contains illegal markup tag(s)." msgstr "Пример содержит неудобоваримую маркировку." #: src/Deck.cpp:313 msgid "" "Failed to open import file.\n" "Check file permissions." msgstr "" "Ошибка при импорте файла.\n" "Проверьте аттрибуты доступа." #: src/DeckPlayer.cpp:54 msgid "Check" msgstr "Сравнить" #: src/DeckPlayer.cpp:54 msgid "Next " msgstr "Следующий" #: src/DeckPlayer.cpp:54 msgid "Correct " msgstr "Угадал " #: src/DeckPlayer.cpp:54 msgid "Incorrect" msgstr "Не угадал" #: src/DeckPlayer.cpp:332 msgid "Close" msgstr "Закрыть" #: src/DeckPlayer.cpp:334 msgid "Shuffle" msgstr "Перемешать" #: src/DeckPlayer.cpp:337 msgid "Edit Deck" msgstr "Поправка Колоды" #: src/DeckPlayer.cpp:339 msgid "Edit Card" msgstr "Поправка Карточки" #: src/DeckPlayer.cpp:445 msgid "Front" msgstr "Перед" #: src/DeckPlayer.cpp:492 src/DeckPlayer.cpp:495 msgid "Back" msgstr "Оборот" #: src/DeckPlayer.cpp:512 msgid "Ask front" msgstr "Проверь перед" #: src/DeckPlayer.cpp:518 msgid "Ask back" msgstr "Проверь оборот" #: src/DeckPlayer.cpp:529 msgid "Test line: " msgstr "Строка" #: src/DeckPlayer.cpp:592 msgid "Say It!" msgstr "Произнеси" #: src/DeckPlayer.cpp:602 msgid "I know it!" msgstr "Я знаю" #: src/DeckPlayer.cpp:612 msgid "No clue" msgstr "Я не знаю" #: src/DeckPlayer.cpp:831 msgid "" "The card you are about to see has invalid markup.\n" "To proceed further, first, fix the broken markup.\n" "If unsure about the correct syntax, consult Help." msgstr "" "Карточта которую вы сейчас увидете содержит\n" "неудобоваримую маркировку. Чтобы продолжить,\n" "пожалуйста, исправье. Обратитесь к Подсказке за помощью." #: src/DeckPlayer.cpp:1114 msgid "" "Would you like to make cards\n" "order changes permanent?" msgstr "" "Не желаете-ли сохранить новый\n" "порядок карточек?" #: src/DeckPlayer.cpp:1204 msgid "The deck is empty!" msgstr "Колода пуста!" #: src/GeneralPref.cpp:36 msgid "Question font: " msgstr "Шрифт лицевой стороны: " #: src/GeneralPref.cpp:37 msgid "Answer font: " msgstr "Шрифт оборотной стороны: " #: src/GeneralPref.cpp:38 msgid "Example font: " msgstr "Шрифт примера : " #: src/GeneralPref.cpp:39 msgid "Input font: " msgstr "Шрифт вводного окна: " #: src/GeneralPref.cpp:40 #, fuzzy msgid "Application font: " msgstr "Шрифт лицевой стороны: " #: src/GeneralPref.cpp:53 msgid "CardFile Recent History entries size" msgstr "Размер списка недавно открытых CardFile" #: src/GeneralPref.cpp:116 msgid "" "Remove duplicates when inserting new\n" "cards from a Deck to the CardBox" msgstr "" "Избавиться от дубликатов при добавлении\n" "новых карточек из Колоды в Ячейку" #: src/GeneralPref.cpp:122 msgid "Record all dynamic links in CardFile as relative paths" msgstr "Записать все динамические ссылки в CardFile как относительные" #: src/GeneralPref.cpp:128 msgid "" "Some keyboard input methods may conflict with keyboard\n" "shortcuts. If checked, disable all shortcuts in DeckPlayer\n" "dialog (requires restart)." msgstr "" "Некоторые методы клавиатурного ввода могут противоречить\n" "клавиатурным упрощениям. Если отмечено, заблокировать\n" "упрощения в DeckPlayer диалоге (перестартовка необходима)" #: src/MainWindow.cpp:110 msgid "CardBox" msgstr "Картотека" #: src/MainWindow.cpp:233 src/MainWindow.cpp:321 msgid "" "Project has been modified.\n" "Please, save and close it first" msgstr "" "Проэкт был изменен,\n" "Пожалуйста, вначале сохраните и закройте его." #: src/MainWindow.cpp:241 src/MainWindow.cpp:329 msgid "" "Project is opened.\n" "Please, close it first" msgstr "" "Проэкт открыт.\n" "Пожалуйста, закройте его вначале." #: src/MainWindow.cpp:272 msgid "" "Project has been modified\n" "Please, save and close it first" msgstr "" "Проэкт был изменен,\n" "Пожалуйста, вначале сохраните и закройте его." #: src/MainWindow.cpp:281 msgid "" "Project is opened\n" "Please, close it first" msgstr "" "Проэкт открыт.\n" "Пожалуйста, закройте его вначале." #: src/MainWindow.cpp:348 src/MainWindow.cpp:386 msgid "" "Please open or create\n" "project first" msgstr "" "Вначале, откройте или создайте\n" "новый проэкт." #: src/MainWindow.cpp:363 msgid "" "Project is not modified.\n" "Close it to proceed." msgstr "" "Проэкт не был изменен.\n" "Закройте его чтобы продолжить." #: src/MainWindow.cpp:417 msgid "" "Please open or create\n" "CardBox first" msgstr "" "Вначале, откройте или создайте\n" "новый проэкт." #: src/MainWindow.cpp:560 msgid "Choose New CardFile name" msgstr "Выберите новое имя для картотеки" #: src/MainWindow.cpp:600 msgid "Save Card File As ..." msgstr "Сохранить картотеку Как ..." #: src/MainWindow.cpp:634 msgid "" "This feature is only\n" "active on a desktop." msgstr "" "Эта особенность доступна\n" "только на стационарном компьютере" #: src/MainWindow.cpp:647 msgid "Select A Folder To Export To" msgstr "Выбирети папку для экспорта" #: src/MainWindow.cpp:651 msgid "Select" msgstr "Выбирети" #: src/MainWindow.cpp:660 msgid "Invalid folder path!" msgstr "Нелегальный имя папки!" granule-1.4.0-7/po/bg.po0000644000076400007640000002064410415063712011621 00000000000000# Bulgarian translation of granule. # Copyright (C) 2005 THE granule'S COPYRIGHT HOLDER # This file is distributed under the same license as the granule package. # Rostislav "zbrox" Raykov , 2005. # , fuzzy # # #: src/CSVImportDialog.cpp:74 msgid "" msgstr "" "Project-Id-Version: granule\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-03-19 12:00-0500\n" "PO-Revision-Date: 2005-04-13 18:23+0300\n" "Last-Translator: Rostislav \"zbrox\" Raykov \n" "Language-Team: Bulgarian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/CSVImportDialog.cpp:57 src/CardView.cpp:126 msgid "Cancel" msgstr "?????" #: src/CSVImportDialog.cpp:64 msgid "Import" msgstr "" #: src/CSVImportDialog.cpp:69 msgid "Line Break:" msgstr "" #: src/CSVImportDialog.cpp:70 msgid "UNIX (LF)" msgstr "" #: src/CSVImportDialog.cpp:71 msgid "Windows (CR+LF)" msgstr "" #: src/CSVImportDialog.cpp:76 msgid "Space" msgstr "" #: src/CSVImportDialog.cpp:77 msgid "Tab" msgstr "" #: src/CSVImportDialog.cpp:78 msgid "Semicolon (;)" msgstr "" #: src/CSVImportDialog.cpp:79 msgid "Colon (:)" msgstr "" #: src/CSVImportDialog.cpp:81 msgid "Comma (,)" msgstr "" #: src/CSVImportDialog.cpp:85 msgid "Separators" msgstr "" #: src/CSVImportDialog.cpp:88 msgid "See two separators as one" msgstr "" #: src/CSVImportDialog.cpp:214 msgid "CSV Text Import" msgstr "" #: src/CardBox.cpp:184 msgid "0 cards" msgstr "0 ?????" #: src/CardBox.cpp:325 msgid "" "Failed to parse file\n" " " msgstr "" "??????? ??? ??????????? ?? ????\n" "..." #: src/CardBox.cpp:326 msgid "" "\n" "Reason: invalid file syntax/DTD" msgstr "" "\n" "???????: ????????? ?????? ?????????/DTD" #: src/CardBox.cpp:539 msgid "File \n" msgstr "???? \n" #: src/CardBox.cpp:540 msgid "" "\n" "already exists.\n" "Would you like to delete it first?" msgstr "" "\n" "???? ??????????.\n" "??????? ?? ????? ?? ?? ?????????" #: src/CardBox.cpp:547 src/CardBox.cpp:823 src/DeckPlayer.cpp:1119 msgid "Yes" msgstr "??" #: src/CardBox.cpp:548 src/CardBox.cpp:824 src/DeckPlayer.cpp:1120 msgid "No" msgstr "??" #: src/CardBox.cpp:583 msgid "Trying to access index out of range!" msgstr "" #: src/CardBox.cpp:594 msgid "Card Deck you've selected is empty" msgstr "??????? ?????, ????? ??? ??????? ? ??????" #: src/CardBox.cpp:613 msgid "" "First, open or create\n" "a Card Box file." msgstr "" "????? ???????? ??? ????????\n" "???? ?? ????? ?? ?????." #: src/CardBox.cpp:652 msgid "First, open or create a Card File." msgstr "????? ???????? ??? ???????? ???? ?? ?????." #: src/CardBox.cpp:696 msgid "" "You have learnt all\n" "expired cards in this deck." msgstr "" "???????? ?????? ?????\n" "? ??????? ???? ? ???? ?????." #: src/CardBox.cpp:737 msgid "" "First Open or Create\n" "a New Card File!" msgstr "" "????? ???????? ??? ????????\n" "??? ???? ?? ?????!" #: src/CardDeck.cpp:30 msgid "Card Box 1" msgstr "????? ?? ????? 1" #: src/CardDeck.cpp:30 msgid "Card Box 2" msgstr "????? ?? ????? 2" #: src/CardDeck.cpp:31 msgid "Card Box 3" msgstr "????? ?? ????? 3" #: src/CardDeck.cpp:31 msgid "Card Box 4" msgstr "????? ?? ????? 4" #: src/CardDeck.cpp:32 msgid "Card Box 5" msgstr "????? ?? ????? 5" #: src/CardView.cpp:118 msgid "Clear" msgstr "??????????" #: src/CardView.cpp:135 msgid "Add" msgstr "" #: src/CardView.cpp:144 msgid "Ok" msgstr "?????" #: src/CardView.cpp:153 msgid "Help" msgstr "" #: src/CardView.cpp:162 msgid "Front : " msgstr "???? : " #: src/CardView.cpp:168 msgid "Back :" msgstr "???? : " #: src/CardView.cpp:174 msgid "Example : " msgstr "?????? : " #: src/CardView.cpp:276 msgid "Fill up the back of the card" msgstr "????????? ????? ?? ???????" #: src/CardView.cpp:308 msgid "Fill up an example" msgstr "????????? ?????? ?? ???????" #: src/CardView.cpp:368 msgid "Fill up the front of the card" msgstr "????????? ?????? ?? ???????" #: src/CardView.cpp:664 msgid "FRONT field contains illegal markup tag(s)." msgstr "?????? ?? ??????? ??????? ?????????/?? ???/???." #: src/CardView.cpp:673 msgid "BACK field contains illegal markup tag(s)." msgstr "????? ?? ??????? ??????? ?????????/?? ???/???." #: src/CardView.cpp:682 msgid "EXAMPLE field contains illegal markup tag(s)." msgstr "?????? ?? ??????? ??????? ?????????/?? ???/???." #: src/Deck.cpp:313 msgid "" "Failed to open import file.\n" "Check file permissions." msgstr "" #: src/DeckPlayer.cpp:54 msgid "Check" msgstr "????????" #: src/DeckPlayer.cpp:54 msgid "Next " msgstr "????????" #: src/DeckPlayer.cpp:54 msgid "Correct " msgstr "?????!" #: src/DeckPlayer.cpp:54 msgid "Incorrect" msgstr "??????!" #: src/DeckPlayer.cpp:332 msgid "Close" msgstr "?????????" #: src/DeckPlayer.cpp:334 msgid "Shuffle" msgstr "???????????" #: src/DeckPlayer.cpp:337 msgid "View/Edit Deck" msgstr "???????/???????? ?? ???????" #: src/DeckPlayer.cpp:339 msgid "Edit Card" msgstr "??????????? ?? ?????" #: src/DeckPlayer.cpp:445 #, fuzzy msgid "Front" msgstr "???? : " #: src/DeckPlayer.cpp:492 src/DeckPlayer.cpp:495 #, fuzzy msgid "Back" msgstr "???? : " #: src/DeckPlayer.cpp:512 msgid "Ask front" msgstr "" #: src/DeckPlayer.cpp:518 msgid "Ask back" msgstr "" #: src/DeckPlayer.cpp:529 msgid "Test line: " msgstr "" #: src/DeckPlayer.cpp:592 msgid "Say It!" msgstr "" #: src/DeckPlayer.cpp:602 msgid "I know it!" msgstr "" #: src/DeckPlayer.cpp:612 msgid "No clue" msgstr "" #: src/DeckPlayer.cpp:831 msgid "" "The card you are about to see has invalid markup.\n" "To proceed further, first, fix the broken markup.\n" "If unsure about the correct syntax, consult Help." msgstr "" #: src/DeckPlayer.cpp:1114 msgid "" "Would you like to make cards\n" "order changes permanent?" msgstr "" "??????? ?? ????????? ? ???? ?? ???????\n" "?? ????? ???????? ?? ??????????" #: src/DeckPlayer.cpp:1204 msgid "The deck is empty!" msgstr "??????? ? ??????!" #: src/GeneralPref.cpp:36 msgid "Question font: " msgstr "" #: src/GeneralPref.cpp:37 msgid "Answer font: " msgstr "" #: src/GeneralPref.cpp:38 #, fuzzy msgid "Example font: " msgstr "?????? : " #: src/GeneralPref.cpp:39 msgid "Input font: " msgstr "" #: src/GeneralPref.cpp:40 msgid "Application font: " msgstr "" #: src/GeneralPref.cpp:53 msgid "CardFile Recent History entries size" msgstr "" #: src/GeneralPref.cpp:116 msgid "" "Remove duplicates when inserting new\n" "cards from a Deck to the CardBox" msgstr "" #: src/GeneralPref.cpp:122 msgid "Record all dynamic links in CardFile as relative paths" msgstr "" #: src/GeneralPref.cpp:128 msgid "" "Some keyboard input methods may conflict with keyboard\n" "shortcuts. If checked, disable all shortcuts in DeckPlayer\n" "dialog (requires restart)." msgstr "" #: src/MainWindow.cpp:110 msgid "CardBox" msgstr "????? ?? ?????" #: src/MainWindow.cpp:233 src/MainWindow.cpp:321 msgid "" "Project has been modified.\n" "Please, save and close it first" msgstr "" "???????? ? ??? ????????.\n" "????? ?? ???????? ? ?????????." #: src/MainWindow.cpp:241 src/MainWindow.cpp:329 msgid "" "Project is opened.\n" "Please, close it first" msgstr "" "???????? ? ???????.\n" "????? ?? ?????????." #: src/MainWindow.cpp:272 msgid "" "Project has been modified\n" "Please, save and close it first" msgstr "" "???????? ? ??? ????????\n" "????? ?? ???????? ? ?????????" #: src/MainWindow.cpp:281 msgid "" "Project is opened\n" "Please, close it first" msgstr "" "???????? ? ???????.\n" "????? ?? ?????????." #: src/MainWindow.cpp:348 src/MainWindow.cpp:386 msgid "" "Please open or create\n" "project first" msgstr "????? ???????? ??? ???????? ??????." #: src/MainWindow.cpp:363 msgid "" "Project is not modified.\n" "Close it to proceed." msgstr "???????? ?? ? ????????.??????????? ??, ?? ?? ??????????." #: src/MainWindow.cpp:417 #, fuzzy msgid "" "Please open or create\n" "CardBox first" msgstr "????? ???????? ??? ???????? ??????." #: src/MainWindow.cpp:560 msgid "Choose New CardFile name" msgstr "???????? ???? ??? ?? ????? ?? ?????" #: src/MainWindow.cpp:600 msgid "Save Card File As ..." msgstr "????????? ?? ???? ?? ????? ????..." #: src/MainWindow.cpp:634 msgid "" "This feature is only\n" "active on a desktop." msgstr "" #. * #. From GTK+ Reference Manual: #. #. GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER - #. #. Indicates an Open mode for selecting folders. #. The file chooser will let the user pick an existing folder. #. #: src/MainWindow.cpp:647 msgid "Select A Folder To Export To" msgstr "" #: src/MainWindow.cpp:651 msgid "Select" msgstr "" #: src/MainWindow.cpp:660 msgid "Invalid folder path!" msgstr "" granule-1.4.0-7/po/de_DE.po0000644000076400007640000002107610415063712012171 00000000000000# German translation of Granule. # Copyright (C) 2005 THE Granule'S COPYRIGHT HOLDER # This file is distributed under the same license as the Granule package. # arzed , 2005. # , fuzzy # # #: src/CSVImportDialog.cpp:74 msgid "" msgstr "" "Project-Id-Version: Granule 1.1.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-03-19 12:00-0500\n" "PO-Revision-Date: 2005-09-23 11:12+0200\n" "Last-Translator: arzed \n" "Language-Team: German\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/CSVImportDialog.cpp:57 src/CardView.cpp:126 msgid "Cancel" msgstr "Abbrechen" #: src/CSVImportDialog.cpp:64 msgid "Import" msgstr "" #: src/CSVImportDialog.cpp:69 msgid "Line Break:" msgstr "" #: src/CSVImportDialog.cpp:70 msgid "UNIX (LF)" msgstr "" #: src/CSVImportDialog.cpp:71 msgid "Windows (CR+LF)" msgstr "" #: src/CSVImportDialog.cpp:76 msgid "Space" msgstr "" #: src/CSVImportDialog.cpp:77 msgid "Tab" msgstr "" #: src/CSVImportDialog.cpp:78 msgid "Semicolon (;)" msgstr "" #: src/CSVImportDialog.cpp:79 msgid "Colon (:)" msgstr "" #: src/CSVImportDialog.cpp:81 msgid "Comma (,)" msgstr "" #: src/CSVImportDialog.cpp:85 msgid "Separators" msgstr "" #: src/CSVImportDialog.cpp:88 msgid "See two separators as one" msgstr "" #: src/CSVImportDialog.cpp:214 msgid "CSV Text Import" msgstr "" #: src/CardBox.cpp:184 msgid "0 cards" msgstr "0 Karten" #: src/CardBox.cpp:325 msgid "" "Failed to parse file\n" " " msgstr "" "Einlesen der Datei fehlgeschlagen\n" " " #: src/CardBox.cpp:326 msgid "" "\n" "Reason: invalid file syntax/DTD" msgstr "" "\n" "Ursache: Datei ist nicht konform (DTD)" #: src/CardBox.cpp:539 msgid "File \n" msgstr "Datei \n" #: src/CardBox.cpp:540 msgid "" "\n" "already exists.\n" "Would you like to delete it first?" msgstr "" "\n" "existiert bereits.\n" "Möchten Sie sie zuerst löschen?" #: src/CardBox.cpp:547 src/CardBox.cpp:823 src/DeckPlayer.cpp:1119 msgid "Yes" msgstr "Ja" #: src/CardBox.cpp:548 src/CardBox.cpp:824 src/DeckPlayer.cpp:1120 msgid "No" msgstr "Nein" #: src/CardBox.cpp:583 msgid "Trying to access index out of range!" msgstr "" "Versuche auf einen Index außerhalb des Gültigkeitsbereiches zuzugreifen!" #: src/CardBox.cpp:594 msgid "Card Deck you've selected is empty" msgstr "Das ausgewählte Deck ist leer" #: src/CardBox.cpp:613 msgid "" "First, open or create\n" "a Card Box file." msgstr "" "Öffnen oder erstellen Sie erst\n" "eine neue Kartei." #: src/CardBox.cpp:652 msgid "First, open or create a Card File." msgstr "Erstellen oder öffnen sie zuerst eine Kartei." #: src/CardBox.cpp:696 msgid "" "You have learnt all\n" "expired cards in this deck." msgstr "" "Sie haben alle abgelaufenen Karten\n" "in diesem Karteikasten gelernt." #: src/CardBox.cpp:737 msgid "" "First Open or Create\n" "a New Card File!" msgstr "" "Öffnen oder erstellen Sie\n" "erst eine neue Kartei!" #: src/CardDeck.cpp:30 msgid "Card Box 1" msgstr "Kartei 1" #: src/CardDeck.cpp:30 msgid "Card Box 2" msgstr "Kartei 2" #: src/CardDeck.cpp:31 msgid "Card Box 3" msgstr "Kartei 3" #: src/CardDeck.cpp:31 msgid "Card Box 4" msgstr "Kartei 4" #: src/CardDeck.cpp:32 msgid "Card Box 5" msgstr "Kartei 5" #: src/CardView.cpp:118 msgid "Clear" msgstr "Löschen" #: src/CardView.cpp:135 msgid "Add" msgstr "Hinzufügen" #: src/CardView.cpp:144 msgid "Ok" msgstr "Ok" #: src/CardView.cpp:153 msgid "Help" msgstr "Hilfe" #: src/CardView.cpp:162 msgid "Front : " msgstr "Vorderseite : " #: src/CardView.cpp:168 msgid "Back :" msgstr "Rückseite : " #: src/CardView.cpp:174 msgid "Example : " msgstr "Beispiel : " #: src/CardView.cpp:276 msgid "Fill up the back of the card" msgstr "Beschreiben Sie die Kartenrückseite" #: src/CardView.cpp:308 msgid "Fill up an example" msgstr "Geben sie ein Beispiel" #: src/CardView.cpp:368 msgid "Fill up the front of the card" msgstr "Beschreiben Sie die Kartenvorderseite" #: src/CardView.cpp:664 msgid "FRONT field contains illegal markup tag(s)." msgstr "Vorderseite beinhaltet ungültige markup tags." #: src/CardView.cpp:673 msgid "BACK field contains illegal markup tag(s)." msgstr "Rückseite beinhaltet ungültige markup tags." #: src/CardView.cpp:682 msgid "EXAMPLE field contains illegal markup tag(s)." msgstr "Das Beispiel enthält ungültige markup tags." #: src/Deck.cpp:313 msgid "" "Failed to open import file.\n" "Check file permissions." msgstr "" #: src/DeckPlayer.cpp:54 msgid "Check" msgstr "Überprüfen" #: src/DeckPlayer.cpp:54 msgid "Next " msgstr "Nächste " #: src/DeckPlayer.cpp:54 msgid "Correct " msgstr "Richtig " #: src/DeckPlayer.cpp:54 msgid "Incorrect" msgstr "Falsch " #: src/DeckPlayer.cpp:332 msgid "Close" msgstr "schließen" #: src/DeckPlayer.cpp:334 msgid "Shuffle" msgstr "mischen" #: src/DeckPlayer.cpp:337 msgid "View/Edit Deck" msgstr "Deck ansehen/editieren" #: src/DeckPlayer.cpp:339 msgid "Edit Card" msgstr "Karte bearbeiten" #: src/DeckPlayer.cpp:445 #, fuzzy msgid "Front" msgstr "Vorderseite : " #: src/DeckPlayer.cpp:492 src/DeckPlayer.cpp:495 #, fuzzy msgid "Back" msgstr "Rückseite : " #: src/DeckPlayer.cpp:512 msgid "Ask front" msgstr "" #: src/DeckPlayer.cpp:518 msgid "Ask back" msgstr "" #: src/DeckPlayer.cpp:529 msgid "Test line: " msgstr "" #: src/DeckPlayer.cpp:592 msgid "Say It!" msgstr "" #: src/DeckPlayer.cpp:602 msgid "I know it!" msgstr "" #: src/DeckPlayer.cpp:612 msgid "No clue" msgstr "" #: src/DeckPlayer.cpp:831 msgid "" "The card you are about to see has invalid markup.\n" "To proceed further, first, fix the broken markup.\n" "If unsure about the correct syntax, consult Help." msgstr "" #: src/DeckPlayer.cpp:1114 msgid "" "Would you like to make cards\n" "order changes permanent?" msgstr "" "Wollen sie die Veränderungen der\n" "Karteinreihenfolge speichern?" #: src/DeckPlayer.cpp:1204 msgid "The deck is empty!" msgstr "Das Deck ist leer!" #: src/GeneralPref.cpp:36 msgid "Question font: " msgstr "" #: src/GeneralPref.cpp:37 msgid "Answer font: " msgstr "" #: src/GeneralPref.cpp:38 #, fuzzy msgid "Example font: " msgstr "Beispiel : " #: src/GeneralPref.cpp:39 msgid "Input font: " msgstr "" #: src/GeneralPref.cpp:40 msgid "Application font: " msgstr "" #: src/GeneralPref.cpp:53 msgid "CardFile Recent History entries size" msgstr "" #: src/GeneralPref.cpp:116 msgid "" "Remove duplicates when inserting new\n" "cards from a Deck to the CardBox" msgstr "" #: src/GeneralPref.cpp:122 msgid "Record all dynamic links in CardFile as relative paths" msgstr "" #: src/GeneralPref.cpp:128 msgid "" "Some keyboard input methods may conflict with keyboard\n" "shortcuts. If checked, disable all shortcuts in DeckPlayer\n" "dialog (requires restart)." msgstr "" #: src/MainWindow.cpp:110 msgid "CardBox" msgstr "Kartei" #: src/MainWindow.cpp:233 src/MainWindow.cpp:321 msgid "" "Project has been modified.\n" "Please, save and close it first" msgstr "" "Das Projekt wurde verändert.\n" "Bitte speichern und schließen Sie es erst" #: src/MainWindow.cpp:241 src/MainWindow.cpp:329 msgid "" "Project is opened.\n" "Please, close it first" msgstr "" "Ein Projekt ist offen.\n" "Bitte schließen Sie es zuerst" #: src/MainWindow.cpp:272 msgid "" "Project has been modified\n" "Please, save and close it first" msgstr "" "Das Projekt wurde verändert.\n" "Bitte speichern und schließen Sie es erst" #: src/MainWindow.cpp:281 msgid "" "Project is opened\n" "Please, close it first" msgstr "" "Ein Projekt ist geöffnet\n" "Bitte, schließen Sie es erst" #: src/MainWindow.cpp:348 src/MainWindow.cpp:386 msgid "" "Please open or create\n" "project first" msgstr "" "Bitte öffnen oder erstellen\n" "Sie zuerst ein Projekt." #: src/MainWindow.cpp:363 msgid "" "Project is not modified.\n" "Close it to proceed." msgstr "" "Das Projekt ist unverändert.\n" "Schließen Sie es um fortzufahren." #: src/MainWindow.cpp:417 #, fuzzy msgid "" "Please open or create\n" "CardBox first" msgstr "" "Bitte öffnen oder erstellen\n" "Sie zuerst ein Projekt." #: src/MainWindow.cpp:560 msgid "Choose New CardFile name" msgstr "" "Wählen Sie einen neuen\n" "Dateinamen für das Deck" #: src/MainWindow.cpp:600 msgid "Save Card File As ..." msgstr "Deck speichern unter ..." #: src/MainWindow.cpp:634 msgid "" "This feature is only\n" "active on a desktop." msgstr "" #. * #. From GTK+ Reference Manual: #. #. GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER - #. #. Indicates an Open mode for selecting folders. #. The file chooser will let the user pick an existing folder. #. #: src/MainWindow.cpp:647 msgid "Select A Folder To Export To" msgstr "" #: src/MainWindow.cpp:651 msgid "Select" msgstr "" #: src/MainWindow.cpp:660 msgid "Invalid folder path!" msgstr "" granule-1.4.0-7/po/ja_JP.po0000644000076400007640000002210710415063712012210 00000000000000# Japanese translation of Granule. # Copyright (C) 2005 THE Granule'S COPYRIGHT HOLDER # This file is distributed under the same license as the Granule package. # Jeff , 2005. # # #: src/CSVImportDialog.cpp:74 msgid "" msgstr "" "Project-Id-Version: Granule 1.1.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-03-19 12:00-0500\n" "PO-Revision-Date: 2005-09-23 11:12+0200\n" "Last-Translator: Jeff \n" "Language-Team: Japanese\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/CSVImportDialog.cpp:57 src/CardView.cpp:126 msgid "Cancel" msgstr "キャンセル" #: src/CSVImportDialog.cpp:64 msgid "Import" msgstr "" #: src/CSVImportDialog.cpp:69 msgid "Line Break:" msgstr "" #: src/CSVImportDialog.cpp:70 msgid "UNIX (LF)" msgstr "" #: src/CSVImportDialog.cpp:71 msgid "Windows (CR+LF)" msgstr "" #: src/CSVImportDialog.cpp:76 msgid "Space" msgstr "" #: src/CSVImportDialog.cpp:77 msgid "Tab" msgstr "" #: src/CSVImportDialog.cpp:78 msgid "Semicolon (;)" msgstr "" #: src/CSVImportDialog.cpp:79 msgid "Colon (:)" msgstr "" #: src/CSVImportDialog.cpp:81 msgid "Comma (,)" msgstr "" #: src/CSVImportDialog.cpp:85 msgid "Separators" msgstr "" #: src/CSVImportDialog.cpp:88 msgid "See two separators as one" msgstr "" #: src/CSVImportDialog.cpp:214 msgid "CSV Text Import" msgstr "" #: src/CardBox.cpp:184 msgid "0 cards" msgstr "0 カード" #: src/CardBox.cpp:325 msgid "" "Failed to parse file\n" " " msgstr "" "ファイルがの構文解析できません\n" " " #: src/CardBox.cpp:326 msgid "" "\n" "Reason: invalid file syntax/DTD" msgstr "" "\n" "理由: ファイル構文かDTDが間違います" #: src/CardBox.cpp:539 msgid "File \n" msgstr "ファイル \n" #: src/CardBox.cpp:540 msgid "" "\n" "already exists.\n" "Would you like to delete it first?" msgstr "" "\n" "もうあります。\n" "まず消したいですか?" #: src/CardBox.cpp:547 src/CardBox.cpp:823 src/DeckPlayer.cpp:1119 msgid "Yes" msgstr "はい" #: src/CardBox.cpp:548 src/CardBox.cpp:824 src/DeckPlayer.cpp:1120 msgid "No" msgstr "いいえ" #: src/CardBox.cpp:583 msgid "Trying to access index out of range!" msgstr "範囲外のインデックスをアクセスしようとしています!" #: src/CardBox.cpp:594 msgid "Card Deck you've selected is empty" msgstr "選ばれたカードデックが空虚です" #: src/CardBox.cpp:613 msgid "" "First, open or create\n" "a Card Box file." msgstr "" "まず、カードファイルを開くか作成するか\n" "どちらかして下さい。" #: src/CardBox.cpp:652 msgid "First, open or create a Card File." msgstr "まず、カードファイルを開くか作成するかどちらかして下さい。" #: src/CardBox.cpp:696 msgid "" "You have learnt all\n" "expired cards in this deck." msgstr "" "このデックの満期になったカードを\n" "全部習いました。" #: src/CardBox.cpp:737 msgid "" "First Open or Create\n" "a New Card File!" msgstr "" "まず、新しいカードファイルを開くか作成するか\n" "どちらかして下さい。" #: src/CardDeck.cpp:30 msgid "Card Box 1" msgstr "カードボックス 1" #: src/CardDeck.cpp:30 msgid "Card Box 2" msgstr "カードボックス 2" #: src/CardDeck.cpp:31 msgid "Card Box 3" msgstr "カードボックス 3" #: src/CardDeck.cpp:31 msgid "Card Box 4" msgstr "カードボックス 4" #: src/CardDeck.cpp:32 msgid "Card Box 5" msgstr "カードボックス 5" #: src/CardView.cpp:118 msgid "Clear" msgstr "クリア" #: src/CardView.cpp:135 msgid "Add" msgstr "追加" #: src/CardView.cpp:144 msgid "Ok" msgstr "Ok" #: src/CardView.cpp:153 msgid "Help" msgstr "ヘルプ" #: src/CardView.cpp:162 msgid "Front : " msgstr "表面:" #: src/CardView.cpp:168 msgid "Back :" msgstr "裏面:" #: src/CardView.cpp:174 msgid "Example : " msgstr "例:" #: src/CardView.cpp:276 msgid "Fill up the back of the card" msgstr "カードの裏面を記入して下さい" #: src/CardView.cpp:308 msgid "Fill up an example" msgstr "例を記入して下さい" #: src/CardView.cpp:368 msgid "Fill up the front of the card" msgstr "カードの表面を記入して下さい" #: src/CardView.cpp:664 msgid "FRONT field contains illegal markup tag(s)." msgstr "表面フィールドは違法のマークアップがあります。" #: src/CardView.cpp:673 msgid "BACK field contains illegal markup tag(s)." msgstr "裏面フィールドは違法のマークアップがあります。" #: src/CardView.cpp:682 msgid "EXAMPLE field contains illegal markup tag(s)." msgstr "例フィールドは違法のマークアップがあります。" #: src/Deck.cpp:313 msgid "" "Failed to open import file.\n" "Check file permissions." msgstr "" #: src/DeckPlayer.cpp:54 msgid "Check" msgstr "照合" #: src/DeckPlayer.cpp:54 msgid "Next " msgstr "次 " #: src/DeckPlayer.cpp:54 msgid "Correct " msgstr "正解 " #: src/DeckPlayer.cpp:54 msgid "Incorrect" msgstr "違う " #: src/DeckPlayer.cpp:332 msgid "Close" msgstr "閉じる" #: src/DeckPlayer.cpp:334 msgid "Shuffle" msgstr "シャッフル" #: src/DeckPlayer.cpp:337 msgid "View/Edit Deck" msgstr "デックを見る/編集する" #: src/DeckPlayer.cpp:339 msgid "Edit Card" msgstr "カードを編集する" #: src/DeckPlayer.cpp:445 #, fuzzy msgid "Front" msgstr "表面:" #: src/DeckPlayer.cpp:492 src/DeckPlayer.cpp:495 #, fuzzy msgid "Back" msgstr "裏面:" #: src/DeckPlayer.cpp:512 msgid "Ask front" msgstr "" #: src/DeckPlayer.cpp:518 msgid "Ask back" msgstr "" #: src/DeckPlayer.cpp:529 msgid "Test line: " msgstr "" #: src/DeckPlayer.cpp:592 msgid "Say It!" msgstr "" #: src/DeckPlayer.cpp:602 msgid "I know it!" msgstr "" #: src/DeckPlayer.cpp:612 msgid "No clue" msgstr "" #: src/DeckPlayer.cpp:831 msgid "" "The card you are about to see has invalid markup.\n" "To proceed further, first, fix the broken markup.\n" "If unsure about the correct syntax, consult Help." msgstr "" #: src/DeckPlayer.cpp:1114 msgid "" "Would you like to make cards\n" "order changes permanent?" msgstr "カードの順位が永久にしたいですか?" #: src/DeckPlayer.cpp:1204 msgid "The deck is empty!" msgstr "デックが空虚です!" #: src/GeneralPref.cpp:36 msgid "Question font: " msgstr "" #: src/GeneralPref.cpp:37 msgid "Answer font: " msgstr "" #: src/GeneralPref.cpp:38 #, fuzzy msgid "Example font: " msgstr "例:" #: src/GeneralPref.cpp:39 msgid "Input font: " msgstr "" #: src/GeneralPref.cpp:40 msgid "Application font: " msgstr "" #: src/GeneralPref.cpp:53 msgid "CardFile Recent History entries size" msgstr "" #: src/GeneralPref.cpp:116 msgid "" "Remove duplicates when inserting new\n" "cards from a Deck to the CardBox" msgstr "" #: src/GeneralPref.cpp:122 msgid "Record all dynamic links in CardFile as relative paths" msgstr "" #: src/GeneralPref.cpp:128 msgid "" "Some keyboard input methods may conflict with keyboard\n" "shortcuts. If checked, disable all shortcuts in DeckPlayer\n" "dialog (requires restart)." msgstr "" #: src/MainWindow.cpp:110 msgid "CardBox" msgstr "カードボックス" #: src/MainWindow.cpp:233 src/MainWindow.cpp:321 msgid "" "Project has been modified.\n" "Please, save and close it first" msgstr "" "プロジェクトは変わりました。\n" "まず、セーブし、閉じて下さい。" #: src/MainWindow.cpp:241 src/MainWindow.cpp:329 msgid "" "Project is opened.\n" "Please, close it first" msgstr "" "プロジェクトは開いています。\n" "まず、閉じて下さい。" #: src/MainWindow.cpp:272 msgid "" "Project has been modified\n" "Please, save and close it first" msgstr "" "プロジェクトは変わりました\n" "まず、セーブし、閉じて下さい。" #: src/MainWindow.cpp:281 msgid "" "Project is opened\n" "Please, close it first" msgstr "" "プロジェクトは開いています\n" "まず、閉じて下さい。" #: src/MainWindow.cpp:348 src/MainWindow.cpp:386 msgid "" "Please open or create\n" "project first" msgstr "" "まず、プロジェクトを\n" "開くか作成するかどちらかして下さい" #: src/MainWindow.cpp:363 msgid "" "Project is not modified.\n" "Close it to proceed." msgstr "" "プロジェクトは変わっていません。\n" "続くために閉じて下さい。" #: src/MainWindow.cpp:417 #, fuzzy msgid "" "Please open or create\n" "CardBox first" msgstr "" "まず、プロジェクトを\n" "開くか作成するかどちらかして下さい" #: src/MainWindow.cpp:560 msgid "Choose New CardFile name" msgstr "新しいカードファイル名前を選んで下さい" #: src/MainWindow.cpp:600 msgid "Save Card File As ..." msgstr "カードファイルを…でセーブする" #: src/MainWindow.cpp:634 msgid "" "This feature is only\n" "active on a desktop." msgstr "" #. * #. From GTK+ Reference Manual: #. #. GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER - #. #. Indicates an Open mode for selecting folders. #. The file chooser will let the user pick an existing folder. #. #: src/MainWindow.cpp:647 msgid "Select A Folder To Export To" msgstr "" #: src/MainWindow.cpp:651 msgid "Select" msgstr "" #: src/MainWindow.cpp:660 msgid "Invalid folder path!" msgstr "" granule-1.4.0-7/po/en_GB.po0000644000076400007640000002175110415063712012203 00000000000000# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #: src/CSVImportDialog.cpp:74 msgid "" msgstr "" "Project-Id-Version: granule 1.2.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2006-03-19 12:00-0500\n" "PO-Revision-Date: 2005-12-25 13:51-0500\n" "Last-Translator: Vladislav Grinchenko \n" "Language-Team: English_GB \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: src/CSVImportDialog.cpp:57 src/CardView.cpp:126 msgid "Cancel" msgstr "Cancel" #: src/CSVImportDialog.cpp:64 msgid "Import" msgstr "Import" #: src/CSVImportDialog.cpp:69 msgid "Line Break:" msgstr "Line Break:" #: src/CSVImportDialog.cpp:70 msgid "UNIX (LF)" msgstr "UNIX (LF)" #: src/CSVImportDialog.cpp:71 msgid "Windows (CR+LF)" msgstr "Windows (CR+LF)" #: src/CSVImportDialog.cpp:76 msgid "Space" msgstr "Space" #: src/CSVImportDialog.cpp:77 msgid "Tab" msgstr "Tab" #: src/CSVImportDialog.cpp:78 msgid "Semicolon (;)" msgstr "Semicolon (;)" #: src/CSVImportDialog.cpp:79 msgid "Colon (:)" msgstr "Colon (:)" #: src/CSVImportDialog.cpp:81 msgid "Comma (,)" msgstr "Comma (,)" #: src/CSVImportDialog.cpp:85 msgid "Separators" msgstr "Separators" #: src/CSVImportDialog.cpp:88 msgid "See two separators as one" msgstr "See two separators as one" #: src/CSVImportDialog.cpp:214 msgid "CSV Text Import" msgstr "CSV Text Import" #: src/CardBox.cpp:184 msgid "0 cards" msgstr "0 cards" #: src/CardBox.cpp:325 msgid "" "Failed to parse file\n" " " msgstr "" "Failed to parse file\n" " " #: src/CardBox.cpp:326 msgid "" "\n" "Reason: invalid file syntax/DTD" msgstr "" "\n" "Reason: invalid file syntax/DTD" #: src/CardBox.cpp:539 msgid "File \n" msgstr "File \n" #: src/CardBox.cpp:540 msgid "" "\n" "already exists.\n" "Would you like to delete it first?" msgstr "" "\n" "already exists.\n" "Would you like to delete it first?" #: src/CardBox.cpp:547 src/CardBox.cpp:823 src/DeckPlayer.cpp:1119 msgid "Yes" msgstr "Yes" #: src/CardBox.cpp:548 src/CardBox.cpp:824 src/DeckPlayer.cpp:1120 msgid "No" msgstr "No" #: src/CardBox.cpp:583 msgid "Trying to access index out of range!" msgstr "Trying to access index out of range!" #: src/CardBox.cpp:594 msgid "Card Deck you've selected is empty" msgstr "Card Deck you've selected is empty" #: src/CardBox.cpp:613 msgid "" "First, open or create\n" "a Card Box file." msgstr "" "First, open or create\n" "a Card Box file." #: src/CardBox.cpp:652 msgid "First, open or create a Card File." msgstr "First, open or create a Card File." #: src/CardBox.cpp:696 msgid "" "You have learnt all\n" "expired cards in this deck." msgstr "" "You have learnt all\n" "expired cards in this deck." #: src/CardBox.cpp:737 msgid "" "First Open or Create\n" "a New Card File!" msgstr "" "First Open or Create\n" "a New Card File!" #: src/CardDeck.cpp:30 msgid "Card Box 1" msgstr "Card Box 1" #: src/CardDeck.cpp:30 msgid "Card Box 2" msgstr "Card Box 2" #: src/CardDeck.cpp:31 msgid "Card Box 3" msgstr "Card Box 3" #: src/CardDeck.cpp:31 msgid "Card Box 4" msgstr "Card Box 4" #: src/CardDeck.cpp:32 msgid "Card Box 5" msgstr "Card Box 5" #: src/CardView.cpp:118 msgid "Clear" msgstr "Clear" #: src/CardView.cpp:135 msgid "Add" msgstr "Add" #: src/CardView.cpp:144 msgid "Ok" msgstr "Ok" #: src/CardView.cpp:153 msgid "Help" msgstr "Help" #: src/CardView.cpp:162 msgid "Front : " msgstr "Front : " #: src/CardView.cpp:168 msgid "Back :" msgstr "Back :" #: src/CardView.cpp:174 msgid "Example : " msgstr "Example : " #: src/CardView.cpp:276 msgid "Fill up the back of the card" msgstr "Fill up the back of the card" #: src/CardView.cpp:308 msgid "Fill up an example" msgstr "Fill up an example" #: src/CardView.cpp:368 msgid "Fill up the front of the card" msgstr "Fill up the front of the card" #: src/CardView.cpp:664 msgid "FRONT field contains illegal markup tag(s)." msgstr "FRONT field contains illegal markup tag(s)." #: src/CardView.cpp:673 msgid "BACK field contains illegal markup tag(s)." msgstr "BACK field contains illegal markup tag(s)." #: src/CardView.cpp:682 msgid "EXAMPLE field contains illegal markup tag(s)." msgstr "EXAMPLE field contains illegal markup tag(s)." #: src/Deck.cpp:313 msgid "" "Failed to open import file.\n" "Check file permissions." msgstr "" "Failed to open import file.\n" "Check file permissions." #: src/DeckPlayer.cpp:54 msgid "Check" msgstr "Check" #: src/DeckPlayer.cpp:54 msgid "Next " msgstr "Next " #: src/DeckPlayer.cpp:54 msgid "Correct " msgstr "Correct " #: src/DeckPlayer.cpp:54 msgid "Incorrect" msgstr "Incorrect" #: src/DeckPlayer.cpp:332 msgid "Close" msgstr "Close" #: src/DeckPlayer.cpp:334 msgid "Shuffle" msgstr "Shuffle" #: src/DeckPlayer.cpp:337 msgid "View/Edit Deck" msgstr "View/Edit Deck" #: src/DeckPlayer.cpp:339 msgid "Edit Card" msgstr "Edit Card" #: src/DeckPlayer.cpp:445 msgid "Front" msgstr "Front" #: src/DeckPlayer.cpp:492 src/DeckPlayer.cpp:495 msgid "Back" msgstr "Back" #: src/DeckPlayer.cpp:512 msgid "Ask front" msgstr "Ask front" #: src/DeckPlayer.cpp:518 msgid "Ask back" msgstr "Ask back" #: src/DeckPlayer.cpp:529 msgid "Test line: " msgstr "Test line: " #: src/DeckPlayer.cpp:592 msgid "Say It!" msgstr "Say It!" #: src/DeckPlayer.cpp:602 msgid "I know it!" msgstr "I know it!" #: src/DeckPlayer.cpp:612 msgid "No clue" msgstr "No clue" #: src/DeckPlayer.cpp:831 msgid "" "The card you are about to see has invalid markup.\n" "To proceed further, first, fix the broken markup.\n" "If unsure about the correct syntax, consult Help." msgstr "" "The card you are about to see has invalid markup.\n" "To proceed further, first, fix the broken markup.\n" "If unsure about the correct syntax, consult Help." #: src/DeckPlayer.cpp:1114 msgid "" "Would you like to make cards\n" "order changes permanent?" msgstr "" "Would you like to make cards\n" "order changes permanent?" #: src/DeckPlayer.cpp:1204 msgid "The deck is empty!" msgstr "The deck is empty!" #: src/GeneralPref.cpp:36 msgid "Question font: " msgstr "Question font: " #: src/GeneralPref.cpp:37 msgid "Answer font: " msgstr "Answer font: " #: src/GeneralPref.cpp:38 msgid "Example font: " msgstr "Example font: " #: src/GeneralPref.cpp:39 msgid "Input font: " msgstr "Input font: " #: src/GeneralPref.cpp:40 #, fuzzy msgid "Application font: " msgstr "Question font: " #: src/GeneralPref.cpp:53 msgid "CardFile Recent History entries size" msgstr "CardFile Recent History entries size" #: src/GeneralPref.cpp:116 msgid "" "Remove duplicates when inserting new\n" "cards from a Deck to the CardBox" msgstr "" "Remove duplicates when inserting new\n" "cards from a Deck to the CardBox" #: src/GeneralPref.cpp:122 msgid "Record all dynamic links in CardFile as relative paths" msgstr "Record all dynamic links in CardFile as relative paths" #: src/GeneralPref.cpp:128 msgid "" "Some keyboard input methods may conflict with keyboard\n" "shortcuts. If checked, disable all shortcuts in DeckPlayer\n" "dialog (requires restart)." msgstr "" "Some keyboard input methods may conflict with keyboard\n" "shortcuts. If checked, disable all shortcuts in DeckPlayer\n" "dialog (requires restart)." #: src/MainWindow.cpp:110 msgid "CardBox" msgstr "CardBox" #: src/MainWindow.cpp:233 src/MainWindow.cpp:321 msgid "" "Project has been modified.\n" "Please, save and close it first" msgstr "" "Project has been modified.\n" "Please, save and close it first" #: src/MainWindow.cpp:241 src/MainWindow.cpp:329 msgid "" "Project is opened.\n" "Please, close it first" msgstr "" "Project is opened.\n" "Please, close it first" #: src/MainWindow.cpp:272 msgid "" "Project has been modified\n" "Please, save and close it first" msgstr "" "Project has been modified\n" "Please, save and close it first" #: src/MainWindow.cpp:281 msgid "" "Project is opened\n" "Please, close it first" msgstr "" "Project is opened\n" "Please, close it first" #: src/MainWindow.cpp:348 src/MainWindow.cpp:386 msgid "" "Please open or create\n" "project first" msgstr "" "Please open or create\n" "project first" #: src/MainWindow.cpp:363 msgid "" "Project is not modified.\n" "Close it to proceed." msgstr "" "Project is not modified.\n" "Close it to proceed." #: src/MainWindow.cpp:417 #, fuzzy msgid "" "Please open or create\n" "CardBox first" msgstr "" "Please open or create\n" "project first" #: src/MainWindow.cpp:560 msgid "Choose New CardFile name" msgstr "Choose New CardFile name" #: src/MainWindow.cpp:600 msgid "Save Card File As ..." msgstr "Save Card File As ..." #: src/MainWindow.cpp:634 msgid "" "This feature is only\n" "active on a desktop." msgstr "" #. * #. From GTK+ Reference Manual: #. #. GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER - #. #. Indicates an Open mode for selecting folders. #. The file chooser will let the user pick an existing folder. #. #: src/MainWindow.cpp:647 msgid "Select A Folder To Export To" msgstr "" #: src/MainWindow.cpp:651 msgid "Select" msgstr "" #: src/MainWindow.cpp:660 msgid "Invalid folder path!" msgstr "" granule-1.4.0-7/po/Makevars0000644000076400007640000000344010236554114012362 00000000000000# Makefile variables for PO directory in any package using GNU gettext. # Usually the message domain is the same as the package name. DOMAIN = $(PACKAGE) # These two variables depend on the location of this directory. subdir = po top_builddir = .. # These options get passed to xgettext. XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ # This is the copyright holder that gets inserted into the header of the # $(DOMAIN).pot file. Set this to the copyright holder of the surrounding # package. (Note that the msgstr strings, extracted from the package's # sources, belong to the copyright holder of the package.) Translators are # expected to transfer the copyright for their translations to this person # or entity, or to disclaim their copyright. The empty string stands for # the public domain; in this case the translators are expected to disclaim # their copyright. COPYRIGHT_HOLDER = Vladislav Grinchenko # This is the email address or URL to which the translators shall report # bugs in the untranslated strings: # - Strings which are not entire sentences, see the maintainer guidelines # in the GNU gettext documentation, section 'Preparing Strings'. # - Strings which use unclear terms or require additional context to be # understood. # - Strings which make invalid assumptions about notation of date, time or # money. # - Pluralisation problems. # - Incorrect English spelling. # - Incorrect formatting. # It can be your email address, or a mailing list address where translators # can write to without being subscribed, or the URL of a web page through # which the translators can contact you. MSGID_BUGS_ADDRESS ='vlg@users.sourceforge.net' # This is the list of locale categories, beyond LC_MESSAGES, for which the # message catalogs shall be used. It is usually empty. EXTRA_LOCALE_CATEGORIES = granule-1.4.0-7/src/0000777000076400007640000000000011056775356011140 500000000000000granule-1.4.0-7/src/Doxyfile0000644000076400007640000012276210722442147012560 00000000000000# Doxyfile 1.3.4 # This file describes the settings to be used by the documentation system # doxygen (www.doxygen.org) for a project # # All text after a hash (#) is considered a comment and will be ignored # The format is: # TAG = value [value, ...] # For lists items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (" ") #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- # The PROJECT_NAME tag is a single word (or a sequence of words surrounded # by quotes) that should identify the project. PROJECT_NAME = Granule # The PROJECT_NUMBER tag can be used to enter a project or revision number. # This could be handy for archiving the generated documentation or # if some version control system is used. PROJECT_NUMBER = # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. # If a relative path is entered, it will be relative to the location # where doxygen was started. If left blank the current directory will be used. OUTPUT_DIRECTORY = dox # The OUTPUT_LANGUAGE tag is used to specify the language in which all # documentation generated by doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. # The default language is English, other supported languages are: # Brazilian, Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, # Finnish, French, German, Greek, Hungarian, Italian, Japanese, Japanese-en # (Japanese with English messages), Korean, Norwegian, Polish, Portuguese, # Romanian, Russian, Serbian, Slovak, Slovene, Spanish, Swedish, and Ukrainian. OUTPUT_LANGUAGE = English # This tag can be used to specify the encoding used in the generated output. # The encoding is not always determined by the language that is chosen, # but also whether or not the output is meant for Windows or non-Windows users. # In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES # forces the Windows encoding (this is the default for the Windows binary), # whereas setting the tag to NO uses a Unix-style encoding (the default for # all platforms other than Windows). USE_WINDOWS_ENCODING = NO # If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will # include brief member descriptions after the members that are listed in # the file and class documentation (similar to JavaDoc). # Set to NO to disable this. BRIEF_MEMBER_DESC = YES # If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend # the brief description of a member or function before the detailed description. # Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the # brief descriptions will be completely suppressed. REPEAT_BRIEF = YES # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then # Doxygen will generate a detailed section even if there is only a brief # description. ALWAYS_DETAILED_SEC = NO # If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited # members of a class in the documentation of that class as if those members were # ordinary class members. Constructors, destructors and assignment operators of # the base classes will not be shown. INLINE_INHERITED_MEMB = YES # If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full # path before files name in the file list and in the header files. If set # to NO the shortest path that makes the file name unique will be used. FULL_PATH_NAMES = NO # If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag # can be used to strip a user-defined part of the path. Stripping is # only done if one of the specified strings matches the left-hand part of # the path. It is allowed to use relative paths in the argument list. STRIP_FROM_PATH = # If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter # (but less readable) file names. This can be useful is your file systems # doesn't support long names like on DOS, Mac, or CD-ROM. SHORT_NAMES = NO # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen # will interpret the first line (until the first dot) of a JavaDoc-style # comment as the brief description. If set to NO, the JavaDoc # comments will behave just like the Qt-style comments (thus requiring an # explict @brief command for a brief description. JAVADOC_AUTOBRIEF = NO # The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen # treat a multi-line C++ special comment block (i.e. a block of //! or /// # comments) as a brief description. This used to be the default behaviour. # The new default is to treat a multi-line C++ comment block as a detailed # description. Set this tag to YES if you prefer the old behaviour instead. MULTILINE_CPP_IS_BRIEF = NO # If the DETAILS_AT_TOP tag is set to YES then Doxygen # will output the detailed description near the top, like JavaDoc. # If set to NO, the detailed description appears after the member # documentation. DETAILS_AT_TOP = NO # If the INHERIT_DOCS tag is set to YES (the default) then an undocumented # member inherits the documentation from any documented member that it # reimplements. INHERIT_DOCS = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC # tag is set to YES, then doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. DISTRIBUTE_GROUP_DOC = NO # The TAB_SIZE tag can be used to set the number of spaces in a tab. # Doxygen uses this value to replace tabs by spaces in code fragments. TAB_SIZE = 4 # This tag can be used to specify a number of aliases that acts # as commands in the documentation. An alias has the form "name=value". # For example adding "sideeffect=\par Side Effects:\n" will allow you to # put the command \sideeffect (or @sideeffect) in the documentation, which # will result in a user-defined paragraph with heading "Side Effects:". # You can put \n's in the value part of an alias to insert newlines. ALIASES = # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources # only. Doxygen will then generate output that is more tailored for C. # For instance, some of the names that are used will be different. The list # of all members will be omitted, etc. OPTIMIZE_OUTPUT_FOR_C = YES # Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java sources # only. Doxygen will then generate output that is more tailored for Java. # For instance, namespaces will be presented as packages, qualified scopes # will look different, etc. OPTIMIZE_OUTPUT_JAVA = NO # Set the SUBGROUPING tag to YES (the default) to allow class member groups of # the same type (for instance a group of public functions) to be put as a # subgroup of that type (e.g. under the Public Functions section). Set it to # NO to prevent subgrouping. Alternatively, this can be done per class using # the \nosubgrouping command. SUBGROUPING = YES #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- # If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in # documentation are documented, even if no documentation was available. # Private class members and static file members will be hidden unless # the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES EXTRACT_ALL = YES # If the EXTRACT_PRIVATE tag is set to YES all private members of a class # will be included in the documentation. EXTRACT_PRIVATE = YES # If the EXTRACT_STATIC tag is set to YES all static members of a file # will be included in the documentation. EXTRACT_STATIC = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) # defined locally in source files will be included in the documentation. # If set to NO only classes defined in header files are included. EXTRACT_LOCAL_CLASSES = YES # If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members of documented classes, files or namespaces. # If set to NO (the default) these members will be included in the # various overviews, but no documentation section is generated. # This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_MEMBERS = NO # If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. # If set to NO (the default) these classes will be included in the various # overviews. This option has no effect if EXTRACT_ALL is enabled. HIDE_UNDOC_CLASSES = NO # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all # friend (class|struct|union) declarations. # If set to NO (the default) these declarations will be included in the # documentation. HIDE_FRIEND_COMPOUNDS = NO # If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. # If set to NO (the default) these blocks will be appended to the # function's detailed documentation block. HIDE_IN_BODY_DOCS = NO # The INTERNAL_DOCS tag determines if documentation # that is typed after a \internal command is included. If the tag is set # to NO (the default) then the documentation will be excluded. # Set it to YES to include the internal documentation. INTERNAL_DOCS = YES # If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate # file names in lower-case letters. If set to YES upper-case letters are also # allowed. This is useful if you have classes or files whose names only differ # in case and if your file system supports case sensitive file names. Windows # users are advised to set this option to NO. CASE_SENSE_NAMES = YES # If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen # will show members with their full class and namespace scopes in the # documentation. If set to YES the scope will be hidden. HIDE_SCOPE_NAMES = NO # If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen # will put a list of the files that are included by a file in the documentation # of that file. SHOW_INCLUDE_FILES = YES # If the INLINE_INFO tag is set to YES (the default) then a tag [inline] # is inserted in the documentation for inline members. INLINE_INFO = YES # If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen # will sort the (detailed) documentation of file and class members # alphabetically by member name. If set to NO the members will appear in # declaration order. SORT_MEMBER_DOCS = YES # The GENERATE_TODOLIST tag can be used to enable (YES) or # disable (NO) the todo list. This list is created by putting \todo # commands in the documentation. GENERATE_TODOLIST = YES # The GENERATE_TESTLIST tag can be used to enable (YES) or # disable (NO) the test list. This list is created by putting \test # commands in the documentation. GENERATE_TESTLIST = YES # The GENERATE_BUGLIST tag can be used to enable (YES) or # disable (NO) the bug list. This list is created by putting \bug # commands in the documentation. GENERATE_BUGLIST = YES # The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or # disable (NO) the deprecated list. This list is created by putting # \deprecated commands in the documentation. GENERATE_DEPRECATEDLIST = YES # The ENABLED_SECTIONS tag can be used to enable conditional # documentation sections, marked by \if sectionname ... \endif. ENABLED_SECTIONS = # The MAX_INITIALIZER_LINES tag determines the maximum number of lines # the initial value of a variable or define consists of for it to appear in # the documentation. If the initializer consists of more lines than specified # here it will be hidden. Use a value of 0 to hide initializers completely. # The appearance of the initializer of individual variables and defines in the # documentation can be controlled using \showinitializer or \hideinitializer # command in the documentation regardless of this setting. MAX_INITIALIZER_LINES = 30 # Set the SHOW_USED_FILES tag to NO to disable the list of files generated # at the bottom of the documentation of classes and structs. If set to YES the # list will mention the files that were used to generate the documentation. SHOW_USED_FILES = YES #--------------------------------------------------------------------------- # configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated # by doxygen. Possible values are YES and NO. If left blank NO is used. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are # generated by doxygen. Possible values are YES and NO. If left blank # NO is used. WARNINGS = YES # If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings # for undocumented members. If EXTRACT_ALL is set to YES then this flag will # automatically be disabled. WARN_IF_UNDOCUMENTED = YES # If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for # potential errors in the documentation, such as not documenting some # parameters in a documented function, or documenting parameters that # don't exist or using markup commands wrongly. WARN_IF_DOC_ERROR = YES # The WARN_FORMAT tag determines the format of the warning messages that # doxygen can produce. The string should contain the $file, $line, and $text # tags, which will be replaced by the file and line number from which the # warning originated and the warning text. WARN_FORMAT = "$file:$line: $text" # The WARN_LOGFILE tag can be used to specify a file to which warning # and error messages should be written. If left blank the output is written # to stderr. WARN_LOGFILE = #--------------------------------------------------------------------------- # configuration options related to the input files #--------------------------------------------------------------------------- # The INPUT tag can be used to specify the files and/or directories that contain # documented source files. You may enter file names like "myfile.cpp" or # directories like "/usr/src/myproject". Separate the files or directories # with spaces. INPUT = . # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank the following patterns are tested: # *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp # *.h++ *.idl *.odl *.cs *.php *.php3 *.inc FILE_PATTERNS = *.cpp *.h *.dox # The RECURSIVE tag can be used to turn specify whether or not subdirectories # should be searched for input files as well. Possible values are YES and NO. # If left blank NO is used. RECURSIVE = NO # The EXCLUDE tag can be used to specify files and/or directories that should # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. EXCLUDE = # The EXCLUDE_SYMLINKS tag can be used select whether or not files or directories # that are symbolic links (a Unix filesystem feature) are excluded from the input. EXCLUDE_SYMLINKS = NO # If the value of the INPUT tag contains directories, you can use the # EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude # certain files from those directories. EXCLUDE_PATTERNS = # The EXAMPLE_PATH tag can be used to specify one or more files or # directories that contain example code fragments that are included (see # the \include command). EXAMPLE_PATH = # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp # and *.h) to filter out the source-files in the directories. If left # blank all files are included. EXAMPLE_PATTERNS = # If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be # searched for input files to be used with the \include or \dontinclude # commands irrespective of the value of the RECURSIVE tag. # Possible values are YES and NO. If left blank NO is used. EXAMPLE_RECURSIVE = NO # The IMAGE_PATH tag can be used to specify one or more files or # directories that contain image that are included in the documentation (see # the \image command). IMAGE_PATH = # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command , where # is the value of the INPUT_FILTER tag, and is the name of an # input file. Doxygen will then use the output that the filter program writes # to standard output. INPUT_FILTER = # If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using # INPUT_FILTER) will be used to filter the input files when producing source # files to browse (i.e. when SOURCE_BROWSER is set to YES). FILTER_SOURCE_FILES = NO #--------------------------------------------------------------------------- # configuration options related to source browsing #--------------------------------------------------------------------------- # If the SOURCE_BROWSER tag is set to YES then a list of source files will # be generated. Documented entities will be cross-referenced with these sources. SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body # of functions and classes directly in the documentation. INLINE_SOURCES = YES # Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct # doxygen to hide any special comment blocks from generated source code # fragments. Normal C and C++ comments will always remain visible. STRIP_CODE_COMMENTS = NO # If the REFERENCED_BY_RELATION tag is set to YES (the default) # then for each documented function all documented # functions referencing it will be listed. REFERENCED_BY_RELATION = YES # If the REFERENCES_RELATION tag is set to YES (the default) # then for each documented function all documented entities # called/used by that function will be listed. REFERENCES_RELATION = YES # If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen # will generate a verbatim copy of the header file for each class for # which an include is specified. Set to NO to disable this. VERBATIM_HEADERS = YES #--------------------------------------------------------------------------- # configuration options related to the alphabetical class index #--------------------------------------------------------------------------- # If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns # in which this list will be split (can be a number in the range [1..20]) COLS_IN_ALPHA_INDEX = 5 # In case all classes in a project start with a common prefix, all # classes will be put under the same header in the alphabetical index. # The IGNORE_PREFIX tag can be used to specify one or more prefixes that # should be ignored while generating the index headers. IGNORE_PREFIX = #--------------------------------------------------------------------------- # configuration options related to the HTML output #--------------------------------------------------------------------------- # If the GENERATE_HTML tag is set to YES (the default) Doxygen will # generate HTML output. GENERATE_HTML = YES # The HTML_OUTPUT tag is used to specify where the HTML docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `html' will be used as the default path. HTML_OUTPUT = html # The HTML_FILE_EXTENSION tag can be used to specify the file extension for # each generated HTML page (for example: .htm,.php,.asp). If it is left blank # doxygen will generate files with .html extension. HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a personal HTML header for # each generated HTML page. If it is left blank doxygen will generate a # standard header. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to # fine-tune the look of the HTML output. If the tag is left blank doxygen # will generate a default style sheet HTML_STYLESHEET = # If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, # files or namespaces will be aligned in HTML using tables. If set to # NO a bullet list will be used. HTML_ALIGN_MEMBERS = YES # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) # of the generated HTML documentation. GENERATE_HTMLHELP = NO # If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can # be used to specify the file name of the resulting .chm file. You # can add a path in front of the file if the result should not be # written to the html output dir. CHM_FILE = # If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can # be used to specify the location (absolute path including file name) of # the HTML help compiler (hhc.exe). If non-empty doxygen will try to run # the HTML help compiler on the generated index.hhp. HHC_LOCATION = # If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag # controls if a separate .chi index file is generated (YES) or that # it should be included in the master .chm file (NO). GENERATE_CHI = NO # If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag # controls whether a binary table of contents is generated (YES) or a # normal table of contents (NO) in the .chm file. BINARY_TOC = NO # The TOC_EXPAND flag can be set to YES to add extra items for group members # to the contents of the HTML help documentation and to the tree view. TOC_EXPAND = NO # The DISABLE_INDEX tag can be used to turn on/off the condensed index at # top of each HTML page. The value NO (the default) enables the index and # the value YES disables it. DISABLE_INDEX = NO # This tag can be used to set the number of enum values (range [1..20]) # that doxygen will group on one line in the generated HTML documentation. ENUM_VALUES_PER_LINE = 4 # If the GENERATE_TREEVIEW tag is set to YES, a side panel will be # generated containing a tree-like index structure (just like the one that # is generated for HTML Help). For this to work a browser that supports # JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+, # Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are # probably better off using the HTML help feature. GENERATE_TREEVIEW = NO # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be # used to set the initial width (in pixels) of the frame in which the tree # is shown. TREEVIEW_WIDTH = 250 #--------------------------------------------------------------------------- # configuration options related to the LaTeX output #--------------------------------------------------------------------------- # If the GENERATE_LATEX tag is set to YES (the default) Doxygen will # generate Latex output. GENERATE_LATEX = NO # The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `latex' will be used as the default path. LATEX_OUTPUT = latex # The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be # invoked. If left blank `latex' will be used as the default command name. LATEX_CMD_NAME = latex # The MAKEINDEX_CMD_NAME tag can be used to specify the command name to # generate index for LaTeX. If left blank `makeindex' will be used as the # default command name. MAKEINDEX_CMD_NAME = makeindex # If the COMPACT_LATEX tag is set to YES Doxygen generates more compact # LaTeX documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_LATEX = NO # The PAPER_TYPE tag can be used to set the paper type that is used # by the printer. Possible values are: a4, a4wide, letter, legal and # executive. If left blank a4wide will be used. PAPER_TYPE = letter # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX # packages that should be included in the LaTeX output. EXTRA_PACKAGES = # The LATEX_HEADER tag can be used to specify a personal LaTeX header for # the generated latex document. The header should contain everything until # the first chapter. If it is left blank doxygen will generate a # standard header. Notice: only use this tag if you know what you are doing! LATEX_HEADER = # If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated # is prepared for conversion to pdf (using ps2pdf). The pdf file will # contain links (just like the HTML output) instead of page references # This makes the output suitable for online browsing using a pdf viewer. PDF_HYPERLINKS = YES # If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of # plain latex in the generated Makefile. Set this option to YES to get a # higher quality PDF documentation. USE_PDFLATEX = YES # If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. # command to the generated LaTeX files. This will instruct LaTeX to keep # running if errors occur, instead of asking the user for help. # This option is also used when generating formulas in HTML. LATEX_BATCHMODE = NO # If LATEX_HIDE_INDICES is set to YES then doxygen will not # include the index chapters (such as File Index, Compound Index, etc.) # in the output. LATEX_HIDE_INDICES = NO #--------------------------------------------------------------------------- # configuration options related to the RTF output #--------------------------------------------------------------------------- # If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output # The RTF output is optimised for Word 97 and may not look very pretty with # other RTF readers or editors. GENERATE_RTF = NO # The RTF_OUTPUT tag is used to specify where the RTF docs will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `rtf' will be used as the default path. RTF_OUTPUT = rtf # If the COMPACT_RTF tag is set to YES Doxygen generates more compact # RTF documents. This may be useful for small projects and may help to # save some trees in general. COMPACT_RTF = NO # If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated # will contain hyperlink fields. The RTF file will # contain links (just like the HTML output) instead of page references. # This makes the output suitable for online browsing using WORD or other # programs which support those fields. # Note: wordpad (write) and others do not support links. RTF_HYPERLINKS = NO # Load stylesheet definitions from file. Syntax is similar to doxygen's # config file, i.e. a series of assigments. You only have to provide # replacements, missing definitions are set to their default value. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an rtf document. # Syntax is similar to doxygen's config file. RTF_EXTENSIONS_FILE = #--------------------------------------------------------------------------- # configuration options related to the man page output #--------------------------------------------------------------------------- # If the GENERATE_MAN tag is set to YES (the default) Doxygen will # generate man pages GENERATE_MAN = NO # The MAN_OUTPUT tag is used to specify where the man pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `man' will be used as the default path. MAN_OUTPUT = man # The MAN_EXTENSION tag determines the extension that is added to # the generated man pages (default is the subroutine's section .3) MAN_EXTENSION = .3 # If the MAN_LINKS tag is set to YES and Doxygen generates man output, # then it will generate one additional man file for each entity # documented in the real man page(s). These additional files # only source the real man page, but without them the man command # would be unable to find the correct page. The default is NO. MAN_LINKS = NO #--------------------------------------------------------------------------- # configuration options related to the XML output #--------------------------------------------------------------------------- # If the GENERATE_XML tag is set to YES Doxygen will # generate an XML file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_XML = NO # The XML_OUTPUT tag is used to specify where the XML pages will be put. # If a relative path is entered the value of OUTPUT_DIRECTORY will be # put in front of it. If left blank `xml' will be used as the default path. XML_OUTPUT = xml # The XML_SCHEMA tag can be used to specify an XML schema, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_SCHEMA = # The XML_DTD tag can be used to specify an XML DTD, # which can be used by a validating XML parser to check the # syntax of the XML files. XML_DTD = #--------------------------------------------------------------------------- # configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- # If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will # generate an AutoGen Definitions (see autogen.sf.net) file # that captures the structure of the code including all # documentation. Note that this feature is still experimental # and incomplete at the moment. GENERATE_AUTOGEN_DEF = NO #--------------------------------------------------------------------------- # configuration options related to the Perl module output #--------------------------------------------------------------------------- # If the GENERATE_PERLMOD tag is set to YES Doxygen will # generate a Perl module file that captures the structure of # the code including all documentation. Note that this # feature is still experimental and incomplete at the # moment. GENERATE_PERLMOD = NO # If the PERLMOD_LATEX tag is set to YES Doxygen will generate # the necessary Makefile rules, Perl scripts and LaTeX code to be able # to generate PDF and DVI output from the Perl module output. PERLMOD_LATEX = NO # If the PERLMOD_PRETTY tag is set to YES the Perl module output will be # nicely formatted so it can be parsed by a human reader. This is useful # if you want to understand what is going on. On the other hand, if this # tag is set to NO the size of the Perl module output will be much smaller # and Perl will parse it just the same. PERLMOD_PRETTY = YES # The names of the make variables in the generated doxyrules.make file # are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. # This is useful so different doxyrules.make files included by the same # Makefile don't overwrite each other's variables. PERLMOD_MAKEVAR_PREFIX = #--------------------------------------------------------------------------- # Configuration options related to the preprocessor #--------------------------------------------------------------------------- # If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will # evaluate all C-preprocessor directives found in the sources and include # files. ENABLE_PREPROCESSING = YES # If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro # names in the source code. If set to NO (the default) only conditional # compilation will be performed. Macro expansion can be done in a controlled # way by setting EXPAND_ONLY_PREDEF to YES. MACRO_EXPANSION = NO # If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES # then the macro expansion is limited to the macros specified with the # PREDEFINED and EXPAND_AS_PREDEFINED tags. EXPAND_ONLY_PREDEF = NO # If the SEARCH_INCLUDES tag is set to YES (the default) the includes files # in the INCLUDE_PATH (see below) will be search if a #include is found. SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by # the preprocessor. INCLUDE_PATH = # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the # directories. If left blank, the patterns specified with FILE_PATTERNS will # be used. INCLUDE_FILE_PATTERNS = # The PREDEFINED tag can be used to specify one or more macro names that # are defined before the preprocessor is started (similar to the -D option of # gcc). The argument of the tag is a list of macros of the form: name # or name=definition (no spaces). If the definition and the = are # omitted =1 is assumed. PREDEFINED = # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then # this tag can be used to specify a list of macro names that should be expanded. # The macro definition that is found in the sources will be used. # Use the PREDEFINED tag if you want to use a different macro definition. EXPAND_AS_DEFINED = # If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then # doxygen's preprocessor will remove all function-like macros that are alone # on a line, have an all uppercase name, and do not end with a semicolon. Such # function macros are typically used for boiler-plate code, and will confuse the # parser if not removed. SKIP_FUNCTION_MACROS = YES #--------------------------------------------------------------------------- # Configuration::addtions related to external references #--------------------------------------------------------------------------- # The TAGFILES option can be used to specify one or more tagfiles. # Optionally an initial location of the external documentation # can be added for each tagfile. The format of a tag file without # this location is as follows: # TAGFILES = file1 file2 ... # Adding location for the tag files is done as follows: # TAGFILES = file1=loc1 "file2 = loc2" ... # where "loc1" and "loc2" can be relative or absolute paths or # URLs. If a location is present for each tag, the installdox tool # does not have to be run to correct the links. # Note that each tag file must have a unique name # (where the name does NOT include the path) # If a tag file is not located in the directory in which doxygen # is run, you must also specify the path to the tagfile here. TAGFILES = # When a file name is specified after GENERATE_TAGFILE, doxygen will create # a tag file that is based on the input files it reads. GENERATE_TAGFILE = # If the ALLEXTERNALS tag is set to YES all external classes will be listed # in the class index. If set to NO only the inherited external classes # will be listed. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed # in the modules index. If set to NO, only the current project's groups will # be listed. EXTERNAL_GROUPS = YES # The PERL_PATH should be the absolute path and name of the perl script # interpreter (i.e. the result of `which perl'). PERL_PATH = /usr/bin/perl #--------------------------------------------------------------------------- # Configuration options related to the dot tool #--------------------------------------------------------------------------- # If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will # generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base or # super classes. Setting the tag to NO turns the diagrams off. Note that this # option is superceded by the HAVE_DOT option below. This is only a fallback. It is # recommended to install and use dot, since it yields more powerful graphs. CLASS_DIAGRAMS = YES # If set to YES, the inheritance and collaboration graphs will hide # inheritance and usage relations if the target is undocumented # or is not a class. HIDE_UNDOC_RELATIONS = YES # If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz, a graph visualization # toolkit from AT&T and Lucent Bell Labs. The other options in this section # have no effect if this option is set to NO (the default) HAVE_DOT = YES # If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect inheritance relations. Setting this tag to YES will force the # the CLASS_DIAGRAMS tag to NO. CLASS_GRAPH = YES # If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen # will generate a graph for each documented class showing the direct and # indirect implementation dependencies (inheritance, containment, and # class references variables) of the class with other documented classes. COLLABORATION_GRAPH = YES # If the UML_LOOK tag is set to YES doxygen will generate inheritance and # collaboration diagrams in a style similiar to the OMG's Unified Modeling # Language. UML_LOOK = NO # If set to YES, the inheritance and collaboration graphs will show the # relations between templates and their instances. TEMPLATE_RELATIONS = NO # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT # tags are set to YES then doxygen will generate a graph for each documented # file showing the direct and indirect include dependencies of the file with # other documented files. INCLUDE_GRAPH = YES # If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and # HAVE_DOT tags are set to YES then doxygen will generate a graph for each # documented header file showing the documented files that directly or # indirectly include this file. INCLUDED_BY_GRAPH = YES # If the CALL_GRAPH and HAVE_DOT tags are set to YES then doxygen will # generate a call dependency graph for every global function or class method. # Note that enabling this option will significantly increase the time of a run. # So in most cases it will be better to enable call graphs for selected # functions only using the \callgraph command. CALL_GRAPH = YES # If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen # will graphical hierarchy of all classes instead of a textual one. GRAPHICAL_HIERARCHY = YES # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. Possible values are png, jpg, or gif # If left blank png will be used. DOT_IMAGE_FORMAT = png # The tag DOT_PATH can be used to specify the path where the dot tool can be # found. If left blank, it is assumed the dot tool can be found on the path. DOT_PATH = /sw/bin # The DOTFILE_DIRS tag can be used to specify one or more directories that # contain dot files that are included in the documentation (see the # \dotfile command). DOTFILE_DIRS = # The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_WIDTH = 1024 # The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height # (in pixels) of the graphs generated by dot. If a graph becomes larger than # this value, doxygen will try to truncate the graph, so that it fits within # the specified constraint. Beware that most browsers cannot cope with very # large images. MAX_DOT_GRAPH_HEIGHT = 1024 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the # graphs generated by dot. A depth value of 3 means that only nodes reachable # from the root by following a path via at most 3 edges will be shown. Nodes that # lay further from the root node will be omitted. Note that setting this option to # 1 or 2 may greatly reduce the computation time needed for large code bases. Also # note that a graph may be further truncated if the graph's image dimensions are # not sufficient to fit the graph (see MAX_DOT_GRAPH_WIDTH and MAX_DOT_GRAPH_HEIGHT). # If 0 is used for the depth value (the default), the graph is not depth-constrained. MAX_DOT_GRAPH_DEPTH = 0 # If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will # generate a legend page explaining the meaning of the various boxes and # arrows in the dot generated graphs. GENERATE_LEGEND = YES # If the DOT_CLEANUP tag is set to YES (the default) Doxygen will # remove the intermediate dot files that are used to generate # the various graphs. DOT_CLEANUP = YES #--------------------------------------------------------------------------- # Configuration::addtions related to the search engine #--------------------------------------------------------------------------- # The SEARCHENGINE tag specifies whether or not a search engine should be # used. If set to NO the values of all tags below this one will be ignored. SEARCHENGINE = NO granule-1.4.0-7/src/Makefile.am0000644000076400007640000000715611050027537013102 00000000000000# -*- makefile -*- # ------------------------------------------------------------------------------ # src/Makefile.am # # $Id: Makefile.am,v 1.50 2008/08/11 12:23:59 vlg Exp $ # ------------------------------------------------------------------------------ bin_PROGRAMS = granule granule_SOURCES = \ Intern.h \ CSVImportDialog.h \ CSVImportDialog.cpp \ CSVExportDialog.h \ CSVExportDialog.cpp \ AboutGRAPP.h \ AboutGRAPP.cpp \ AppearanceDB.h \ AppearanceDB.cpp \ FontsSelectorUI.h \ FontsSelectorUI.cpp \ ColorsSelectorUI.h \ ColorsSelectorUI.cpp \ VDeck.h \ CardDeck.h \ CardDeck.cpp \ Deck.h \ Deck.cpp \ CardBox.h \ CardBox.cpp \ DeckView.h \ DeckView.cpp \ DeckInfo.h \ DeckInfo.cpp \ DeckPlayer.h \ DeckPlayer.cpp \ VerifyControl.h \ VerifyControl.cpp \ DeckManager.h \ DeckManager.cpp \ DeckList.h \ DeckList.cpp \ DialogWithCheckbutton.h \ DialogWithCheckbutton.cpp \ VCard.h \ VCard.cpp \ CardRef.h \ CardRef.cpp \ Card.h \ Card.cpp \ CardView.h \ CardView.cpp \ CardViewHelpDialog.h \ CardViewHelpDialog.cpp \ AutoFillDB.h \ AutoFillDB.cpp \ CardAutoFill.h \ CardAutoFill.cpp \ EditControls.h \ EditControls.cpp \ FileOpen.h \ FileOpenDialog.h \ FileOpenDialog.cpp \ FileSaveDialog.h \ FileSaveDialog.cpp \ FolderChooseDialog.h \ FolderChooseDialog.cpp \ InputDialog.h \ InputDialog.cpp \ GrappConf.h \ GrappConf.cpp \ FontsDB.h \ FontsDB.cpp \ TextColorsDB.h \ TextColorsDB.cpp \ TopMenuBar.h \ TopMenuBar.cpp \ GeneralPref.h \ GeneralPref.cpp \ CardBoxPrefsWindow.h \ CardBoxPrefsWindow.cpp \ SchedulingPrefs.h \ SchedulingPrefs.cpp \ ScheduleDB.h \ ScheduleDB.cpp \ ScheduleUI.h \ ScheduleUI.cpp \ SoundPrefs.h \ SoundPrefs.cpp \ GeometryPrefs.h \ GeometryPrefs.cpp \ AppearancePrefs.h \ AppearancePrefs.cpp \ TextAlignmentsUI.h \ TextAlignmentsUI.cpp \ TextAlignment.h \ TextAlignment.cpp \ PrefWindow.h \ PrefWindow.cpp \ PropertyBox.h \ PropertyBox.cpp \ ButtonWithImageLabel.h \ ButtonWithImageLabel.cpp \ MainWindow.h \ MainWindow.cpp \ Granule.h \ Granule.cpp \ Granule-main.h \ Granule-main.cpp localedir = $(datadir)/locale if USE_DESKTOP DEP_CFLAGS = -DIS_DESKTOP endif if USE_WIN32 DEP_CFLAGS = -DIS_WIN32 endif if USE_HILDON DEP_CFLAGS = -DIS_HILDON endif if USE_PDA DEP_CFLAGS = -DIS_PDA endif INCLUDES = \ -g \ -I$(top_srcdir) \ -I$(top_srcdir)/intl \ -DGRAPPDATDIR=\""$(runtime_datadir)"\" \ -DGRAPPXMLDIR=\""$(runtime_xmldir)"\" \ -DDATDIR=\""$(datadir)"\" \ -DLOCALEDIR=\"$(localedir)\" \ -DPACKAGE=\"$(PACKAGE)\" \ $(DEP_CFLAGS) \ @XMLCPP_CFLAGS@ \ @ASSA_CFLAGS@ \ @GTKMM_CFLAGS@ \ @HILDON_CFLAGS@ \ @OSSO_CFLAGS@ \ @DBUS_CFLAGS@ \ @GCONF_CFLAGS@ \ @CXXFLAGS@ AM_LDFLAGS= -g @LDFLAGS@ granule_LDADD = \ @ASSA_LIBS@ \ @GTKMM_LIBS@ \ @XMLCPP_LIBS@ \ @HILDON_LIBS@ \ @OSSO_LIBS@ \ @DBUS_LIBS@ \ @GCONF_LIBS@ \ @WIN32_EXTRA_LIBADD@ \ $(LIBINTL) \ @LIBS@ clean-local: -rm -f log *.log *.log.old *~ core.* -rm -rf dox # Disable autoheader. AUTOHEADER=echo granule-1.4.0-7/src/Makefile.in0000644000076400007640000006173511056772536013132 00000000000000# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # -*- makefile -*- # ------------------------------------------------------------------------------ # src/Makefile.am # # $Id: Makefile.am,v 1.50 2008/08/11 12:23:59 vlg Exp $ # ------------------------------------------------------------------------------ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = granule$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_granule_OBJECTS = CSVImportDialog.$(OBJEXT) \ CSVExportDialog.$(OBJEXT) AboutGRAPP.$(OBJEXT) \ AppearanceDB.$(OBJEXT) FontsSelectorUI.$(OBJEXT) \ ColorsSelectorUI.$(OBJEXT) CardDeck.$(OBJEXT) Deck.$(OBJEXT) \ CardBox.$(OBJEXT) DeckView.$(OBJEXT) DeckInfo.$(OBJEXT) \ DeckPlayer.$(OBJEXT) VerifyControl.$(OBJEXT) \ DeckManager.$(OBJEXT) DeckList.$(OBJEXT) \ DialogWithCheckbutton.$(OBJEXT) VCard.$(OBJEXT) \ CardRef.$(OBJEXT) Card.$(OBJEXT) CardView.$(OBJEXT) \ CardViewHelpDialog.$(OBJEXT) AutoFillDB.$(OBJEXT) \ CardAutoFill.$(OBJEXT) EditControls.$(OBJEXT) \ FileOpenDialog.$(OBJEXT) FileSaveDialog.$(OBJEXT) \ FolderChooseDialog.$(OBJEXT) InputDialog.$(OBJEXT) \ GrappConf.$(OBJEXT) FontsDB.$(OBJEXT) TextColorsDB.$(OBJEXT) \ TopMenuBar.$(OBJEXT) GeneralPref.$(OBJEXT) \ CardBoxPrefsWindow.$(OBJEXT) SchedulingPrefs.$(OBJEXT) \ ScheduleDB.$(OBJEXT) ScheduleUI.$(OBJEXT) SoundPrefs.$(OBJEXT) \ GeometryPrefs.$(OBJEXT) AppearancePrefs.$(OBJEXT) \ TextAlignmentsUI.$(OBJEXT) TextAlignment.$(OBJEXT) \ PrefWindow.$(OBJEXT) PropertyBox.$(OBJEXT) \ ButtonWithImageLabel.$(OBJEXT) MainWindow.$(OBJEXT) \ Granule.$(OBJEXT) Granule-main.$(OBJEXT) granule_OBJECTS = $(am_granule_OBJECTS) granule_DEPENDENCIES = DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \ $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(granule_SOURCES) DIST_SOURCES = $(granule_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ APP_RELEASE = @APP_RELEASE@ APP_SUBVERSION = @APP_SUBVERSION@ APP_VERSION = @APP_VERSION@ AR = @AR@ ASSA_CFLAGS = @ASSA_CFLAGS@ ASSA_LIBS = @ASSA_LIBS@ AUTOCONF = @AUTOCONF@ # Disable autoheader. AUTOHEADER = echo AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HILDON_CFLAGS = @HILDON_CFLAGS@ HILDON_LIBS = @HILDON_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_ICONV = @INTLTOOL_ICONV@ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ OSSO_CFLAGS = @OSSO_CFLAGS@ OSSO_LIBS = @OSSO_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_DESKTOP_FALSE = @USE_DESKTOP_FALSE@ USE_DESKTOP_TRUE = @USE_DESKTOP_TRUE@ USE_HILDON_FALSE = @USE_HILDON_FALSE@ USE_HILDON_TRUE = @USE_HILDON_TRUE@ USE_NLS = @USE_NLS@ USE_PDA_FALSE = @USE_PDA_FALSE@ USE_PDA_TRUE = @USE_PDA_TRUE@ USE_WIN32_FALSE = @USE_WIN32_FALSE@ USE_WIN32_TRUE = @USE_WIN32_TRUE@ VERSION = @VERSION@ WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@ XGETTEXT = @XGETTEXT@ XMLCPP_CFLAGS = @XMLCPP_CFLAGS@ XMLCPP_LIBS = @XMLCPP_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ desktopentrydir = @desktopentrydir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ icon_26x26dir = @icon_26x26dir@ icon_34x34dir = @icon_34x34dir@ icon_40x40dir = @icon_40x40dir@ icon_50x50dir = @icon_50x50dir@ icon_scalabledir = @icon_scalabledir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pkg_datadir = @pkg_datadir@ pkg_xmldir = @pkg_xmldir@ prefix = @prefix@ program_transform_name = @program_transform_name@ runtime_datadir = @runtime_datadir@ runtime_root = @runtime_root@ runtime_xmldir = @runtime_xmldir@ sbindir = @sbindir@ serviceentrydir = @serviceentrydir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ granule_SOURCES = \ Intern.h \ CSVImportDialog.h \ CSVImportDialog.cpp \ CSVExportDialog.h \ CSVExportDialog.cpp \ AboutGRAPP.h \ AboutGRAPP.cpp \ AppearanceDB.h \ AppearanceDB.cpp \ FontsSelectorUI.h \ FontsSelectorUI.cpp \ ColorsSelectorUI.h \ ColorsSelectorUI.cpp \ VDeck.h \ CardDeck.h \ CardDeck.cpp \ Deck.h \ Deck.cpp \ CardBox.h \ CardBox.cpp \ DeckView.h \ DeckView.cpp \ DeckInfo.h \ DeckInfo.cpp \ DeckPlayer.h \ DeckPlayer.cpp \ VerifyControl.h \ VerifyControl.cpp \ DeckManager.h \ DeckManager.cpp \ DeckList.h \ DeckList.cpp \ DialogWithCheckbutton.h \ DialogWithCheckbutton.cpp \ VCard.h \ VCard.cpp \ CardRef.h \ CardRef.cpp \ Card.h \ Card.cpp \ CardView.h \ CardView.cpp \ CardViewHelpDialog.h \ CardViewHelpDialog.cpp \ AutoFillDB.h \ AutoFillDB.cpp \ CardAutoFill.h \ CardAutoFill.cpp \ EditControls.h \ EditControls.cpp \ FileOpen.h \ FileOpenDialog.h \ FileOpenDialog.cpp \ FileSaveDialog.h \ FileSaveDialog.cpp \ FolderChooseDialog.h \ FolderChooseDialog.cpp \ InputDialog.h \ InputDialog.cpp \ GrappConf.h \ GrappConf.cpp \ FontsDB.h \ FontsDB.cpp \ TextColorsDB.h \ TextColorsDB.cpp \ TopMenuBar.h \ TopMenuBar.cpp \ GeneralPref.h \ GeneralPref.cpp \ CardBoxPrefsWindow.h \ CardBoxPrefsWindow.cpp \ SchedulingPrefs.h \ SchedulingPrefs.cpp \ ScheduleDB.h \ ScheduleDB.cpp \ ScheduleUI.h \ ScheduleUI.cpp \ SoundPrefs.h \ SoundPrefs.cpp \ GeometryPrefs.h \ GeometryPrefs.cpp \ AppearancePrefs.h \ AppearancePrefs.cpp \ TextAlignmentsUI.h \ TextAlignmentsUI.cpp \ TextAlignment.h \ TextAlignment.cpp \ PrefWindow.h \ PrefWindow.cpp \ PropertyBox.h \ PropertyBox.cpp \ ButtonWithImageLabel.h \ ButtonWithImageLabel.cpp \ MainWindow.h \ MainWindow.cpp \ Granule.h \ Granule.cpp \ Granule-main.h \ Granule-main.cpp localedir = $(datadir)/locale @USE_DESKTOP_TRUE@DEP_CFLAGS = -DIS_DESKTOP @USE_HILDON_TRUE@DEP_CFLAGS = -DIS_HILDON @USE_PDA_TRUE@DEP_CFLAGS = -DIS_PDA @USE_WIN32_TRUE@DEP_CFLAGS = -DIS_WIN32 INCLUDES = \ -g \ -I$(top_srcdir) \ -I$(top_srcdir)/intl \ -DGRAPPDATDIR=\""$(runtime_datadir)"\" \ -DGRAPPXMLDIR=\""$(runtime_xmldir)"\" \ -DDATDIR=\""$(datadir)"\" \ -DLOCALEDIR=\"$(localedir)\" \ -DPACKAGE=\"$(PACKAGE)\" \ $(DEP_CFLAGS) \ @XMLCPP_CFLAGS@ \ @ASSA_CFLAGS@ \ @GTKMM_CFLAGS@ \ @HILDON_CFLAGS@ \ @OSSO_CFLAGS@ \ @DBUS_CFLAGS@ \ @GCONF_CFLAGS@ \ @CXXFLAGS@ AM_LDFLAGS = -g @LDFLAGS@ granule_LDADD = \ @ASSA_LIBS@ \ @GTKMM_LIBS@ \ @XMLCPP_LIBS@ \ @HILDON_LIBS@ \ @OSSO_LIBS@ \ @DBUS_LIBS@ \ @GCONF_LIBS@ \ @WIN32_EXTRA_LIBADD@ \ $(LIBINTL) \ @LIBS@ all: all-am .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done granule$(EXEEXT): $(granule_OBJECTS) $(granule_DEPENDENCIES) @rm -f granule$(EXEEXT) $(CXXLINK) $(granule_LDFLAGS) $(granule_OBJECTS) $(granule_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AboutGRAPP.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AppearanceDB.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AppearancePrefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/AutoFillDB.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ButtonWithImageLabel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CSVExportDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CSVImportDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Card.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardAutoFill.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardBox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardBoxPrefsWindow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardDeck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardRef.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardView.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/CardViewHelpDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ColorsSelectorUI.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Deck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DeckInfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DeckList.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DeckManager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DeckPlayer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DeckView.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/DialogWithCheckbutton.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EditControls.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileOpenDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FileSaveDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FolderChooseDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontsDB.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FontsSelectorUI.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeneralPref.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GeometryPrefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Granule-main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Granule.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/GrappConf.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/InputDialog.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MainWindow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PrefWindow.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PropertyBox.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScheduleDB.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ScheduleUI.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SchedulingPrefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SoundPrefs.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextAlignment.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextAlignmentsUI.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TextColorsDB.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/TopMenuBar.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VCard.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/VerifyControl.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool clean-local \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-libtool distclean-tags dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-exec-am: install-binPROGRAMS install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-info-am .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool clean-local ctags distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-exec install-exec-am install-info \ install-info-am install-man install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags uninstall uninstall-am uninstall-binPROGRAMS \ uninstall-info-am clean-local: -rm -f log *.log *.log.old *~ core.* -rm -rf dox # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: granule-1.4.0-7/src/Intern.h0000644000076400007640000000214410254437354012455 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // $Id: Intern.h,v 1.3 2005/06/17 03:09:32 vlg Exp $ //------------------------------------------------------------------------------ // Intern.h // // Copied verbatim from /usr/share/gettext/gettext.h //------------------------------------------------------------------------------ #ifndef INTERN_H #define INTERN_H /* * Standard gettext macros. */ #ifdef ENABLE_NLS # include # undef _ # define _(String) dgettext (GETTEXT_PACKAGE, String) # ifdef gettext_noop # define N_(String) gettext_noop (String) # else # define N_(String) (String) # endif #else # undef textdomain # undef gettext # undef dgettext # undef dcgettext # undef bindtextdomain # define textdomain(String) (String) # define gettext(String) (String) # define dgettext(Domain,Message) (Message) # define dcgettext(Domain,Message,Type) (Message) # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) # define N_(String) (String) #endif #endif /* INTERN_H */ granule-1.4.0-7/src/CSVImportDialog.h0000644000076400007640000000422710504365000014152 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // CSVImportDialog.h //------------------------------------------------------------------------------ // $Id: CSVImportDialog.h,v 1.2 2006/09/21 01:25:20 vlg Exp $ //------------------------------------------------------------------------------ // Copyright (c) 2005 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // 05/14/2005 VLG Created //------------------------------------------------------------------------------ #ifndef CSV_IMPORT_DIALOG_H #define CSV_IMPORT_DIALOG_H #include #include #include #include "Granule-main.h" class CSVImportDialog : public Gtk::Dialog { public: CSVImportDialog(); /// Do we break on LF or CR+LF? bool is_windoz_linebreak () const { return m_windoz_crlf->get_active (); } /// Return separator selected const char* get_separator () const; /// Return double separator const char* get_double_separator () const; /** If true, then replace each pair of adjacent separators with one. */ bool consume_adjacent_separators () const { return m_shrink_seps->get_active (); } /** callbacks */ void on_unix_lf_checked (); void on_windoz_crlf_checked (); void on_space_sep_checked (); void on_tab_sep_checked (); void on_colon_sep_checked (); void on_semicolon_sep_checked (); void on_comma_sep_checked (); private: Gtk::Button* m_cancel_button; Gtk::Button* m_import_button; Gtk::CheckButton* m_unix_lf; Gtk::CheckButton* m_windoz_crlf; Gtk::CheckButton* m_space_sep; Gtk::CheckButton* m_tab_sep; Gtk::CheckButton* m_colon_sep; Gtk::CheckButton* m_semicolon_sep; Gtk::CheckButton* m_comma_sep; Gtk::CheckButton* m_shrink_seps; CSVSeparator m_sep_selection; bool m_recursive_call; }; #endif granule-1.4.0-7/src/CSVImportDialog.cpp0000644000076400007640000003072510635367123014524 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // CSVImportDialog.cpp //------------------------------------------------------------------------------ // $Id: CSVImportDialog.cpp,v 1.4 2007/06/18 02:30:43 vlg Exp $ //------------------------------------------------------------------------------ // Copyright (c) 2005-2006 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // 05/14/2005 VLG Created //------------------------------------------------------------------------------ #include #include #include #include #include #include #include #include #include #include "CSVImportDialog.h" #include "Intern.h" CSVImportDialog:: CSVImportDialog() : m_sep_selection (SPACE_SEP), m_recursive_call (false) { CSVImportDialog* dialog = this; Gtk::Image* image1; Gtk::Label* label4; Gtk::HBox* hbox3; Gtk::Alignment* alignment1; Gtk::Image* image2; Gtk::Label* label5; Gtk::HBox* hbox4; Gtk::Alignment* alignment2; Gtk::Label* linebrk_label; Gtk::HBox* linebrk_hbox; Gtk::Label* lb_frame_label; Gtk::Frame* linebrk_frame; Gtk::Table* sep_table; Gtk::VBox* sep_vbox; Gtk::Label* sep_frame_label; Gtk::Frame* m_sep_frame; Gtk::VBox* extra_vbox; image1 = Gtk::manage (new Gtk::Image(Gtk::StockID("gtk-cancel"), Gtk::IconSize(4))); label4 = Gtk::manage (new Gtk::Label(_("Cancel"))); hbox3 = Gtk::manage (new Gtk::HBox(false, 2)); alignment1 = Gtk::manage (new Gtk::Alignment(0.5, 0.5, 0, 0)); m_cancel_button = Gtk::manage (new Gtk::Button()); image2 = Gtk::manage (new Gtk::Image(Gtk::StockID("gtk-apply"), Gtk::IconSize(4))); label5 = Gtk::manage (new Gtk::Label(_("Import"))); hbox4 = Gtk::manage (new Gtk::HBox(false, 2)); alignment2 = Gtk::manage (new Gtk::Alignment(0.5, 0.5, 0, 0)); m_import_button = Gtk::manage (new Gtk::Button()); linebrk_label = Gtk::manage (new Gtk::Label(_("Line Break:"))); m_unix_lf = Gtk::manage (new Gtk::CheckButton(_("UNIX (LF)"))); m_windoz_crlf = Gtk::manage (new Gtk::CheckButton(_("Windows (CR+LF)"))); linebrk_hbox = Gtk::manage (new Gtk::HBox(false, 15)); lb_frame_label = Gtk::manage (new Gtk::Label(_(""))); linebrk_frame = Gtk::manage (new Gtk::Frame()); m_space_sep = Gtk::manage (new Gtk::CheckButton(_("Space"))); m_tab_sep = Gtk::manage (new Gtk::CheckButton(_("Tab"))); m_semicolon_sep = Gtk::manage (new Gtk::CheckButton(_("Semicolon (;)"))); m_colon_sep = Gtk::manage (new Gtk::CheckButton(_("Colon (:)"))); m_comma_sep = Gtk::manage (new Gtk::CheckButton(_("Comma (,)"))); sep_table = Gtk::manage (new Gtk::Table(2, 3, true)); sep_vbox = Gtk::manage (new Gtk::VBox(false, 0)); sep_frame_label = Gtk::manage (new Gtk::Label(_("Separators"))); m_sep_frame = Gtk::manage (new Gtk::Frame()); m_shrink_seps = Gtk::manage (new Gtk::CheckButton( _("See two separators as one"))); extra_vbox = Gtk::manage (new Gtk::VBox(false, 0)); image1->set_alignment(0.5,0.5); image1->set_padding(0,0); label4->set_alignment(0.5,0.5); label4->set_padding(0,0); label4->set_justify(Gtk::JUSTIFY_LEFT); label4->set_line_wrap(false); label4->set_use_markup(false); label4->set_selectable(false); hbox3->pack_start(*image1, Gtk::PACK_SHRINK, 0); hbox3->pack_start(*label4, Gtk::PACK_SHRINK, 0); alignment1->add(*hbox3); m_cancel_button->set_flags(Gtk::CAN_FOCUS); m_cancel_button->set_relief(Gtk::RELIEF_NORMAL); m_cancel_button->add(*alignment1); image2->set_alignment(0.5,0.5); image2->set_padding(0,0); label5->set_alignment(0.5,0.5); label5->set_padding(0,0); label5->set_justify(Gtk::JUSTIFY_LEFT); label5->set_line_wrap(false); label5->set_use_markup(false); label5->set_selectable(false); hbox4->pack_start(*image2, Gtk::PACK_SHRINK, 0); hbox4->pack_start(*label5, Gtk::PACK_SHRINK, 0); alignment2->add(*hbox4); m_import_button->set_flags(Gtk::CAN_FOCUS); m_import_button->set_relief(Gtk::RELIEF_NORMAL); m_import_button->add(*alignment2); #ifdef GLIBMM_PROPERTIES_ENABLED dialog->get_action_area()->property_layout_style().set_value(Gtk::BUTTONBOX_END); #endif linebrk_label->set_alignment(0.5,0.5); linebrk_label->set_padding(18,0); linebrk_label->set_justify(Gtk::JUSTIFY_LEFT); linebrk_label->set_line_wrap(false); linebrk_label->set_use_markup(false); linebrk_label->set_selectable(false); m_unix_lf->set_flags(Gtk::CAN_FOCUS); m_unix_lf->set_border_width(5); m_unix_lf->set_relief(Gtk::RELIEF_NORMAL); m_unix_lf->set_mode(true); m_unix_lf->set_active(true); m_windoz_crlf->set_flags(Gtk::CAN_FOCUS); m_windoz_crlf->set_border_width(5); m_windoz_crlf->set_relief(Gtk::RELIEF_NORMAL); m_windoz_crlf->set_mode(true); m_windoz_crlf->set_active(false); linebrk_hbox->set_border_width(2); linebrk_hbox->pack_start(*linebrk_label, Gtk::PACK_SHRINK, 0); linebrk_hbox->pack_start(*m_unix_lf, Gtk::PACK_SHRINK, 0); linebrk_hbox->pack_start(*m_windoz_crlf, Gtk::PACK_SHRINK, 0); lb_frame_label->set_alignment(0.5,0.5); lb_frame_label->set_padding(0,0); lb_frame_label->set_justify(Gtk::JUSTIFY_LEFT); lb_frame_label->set_line_wrap(false); lb_frame_label->set_use_markup(false); lb_frame_label->set_selectable(false); linebrk_frame->set_border_width(4); linebrk_frame->set_shadow_type(Gtk::SHADOW_ETCHED_IN); linebrk_frame->set_label_align(0,0.5); linebrk_frame->add(*linebrk_hbox); linebrk_frame->set_label_widget(*lb_frame_label); m_space_sep->set_flags(Gtk::CAN_FOCUS); m_space_sep->set_relief(Gtk::RELIEF_NORMAL); m_space_sep->set_mode(true); m_space_sep->set_active(true); m_tab_sep->set_flags(Gtk::CAN_FOCUS); m_tab_sep->set_relief(Gtk::RELIEF_NORMAL); m_tab_sep->set_mode(true); m_tab_sep->set_active(false); m_semicolon_sep->set_flags(Gtk::CAN_FOCUS); m_semicolon_sep->set_relief(Gtk::RELIEF_NORMAL); m_semicolon_sep->set_mode(true); m_semicolon_sep->set_active(false); m_colon_sep->set_flags(Gtk::CAN_FOCUS); m_colon_sep->set_relief(Gtk::RELIEF_NORMAL); m_colon_sep->set_mode(true); m_colon_sep->set_active(false); m_comma_sep->set_flags(Gtk::CAN_FOCUS); m_comma_sep->set_relief(Gtk::RELIEF_NORMAL); m_comma_sep->set_mode(true); m_comma_sep->set_active(false); sep_table->set_row_spacings(4); sep_table->set_col_spacings(4); sep_table->attach(*m_space_sep,0,1,0,1, Gtk::FILL,Gtk::AttachOptions (), 0,0); sep_table->attach(*m_tab_sep, 1,2,0,1, Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_table->attach(*m_semicolon_sep, 2,3,0,1, Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_table->attach(*m_colon_sep,0,1,1,2,Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_table->attach(*m_comma_sep,1,2,1,2,Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_vbox->set_border_width(2); sep_vbox->pack_start(*sep_table, Gtk::PACK_SHRINK, 3); sep_frame_label->set_alignment(0.5,0.5); sep_frame_label->set_padding(0,0); sep_frame_label->set_justify(Gtk::JUSTIFY_LEFT); sep_frame_label->set_line_wrap(false); sep_frame_label->set_use_markup(false); sep_frame_label->set_selectable(false); m_sep_frame->set_border_width(3); m_sep_frame->set_shadow_type(Gtk::SHADOW_ETCHED_IN); m_sep_frame->set_label_align(0,0.5); m_sep_frame->add(*sep_vbox); m_sep_frame->set_label_widget(*sep_frame_label); m_shrink_seps->set_flags(Gtk::CAN_FOCUS); m_shrink_seps->set_border_width(4); m_shrink_seps->set_relief(Gtk::RELIEF_NORMAL); m_shrink_seps->set_mode(true); m_shrink_seps->set_active(false); extra_vbox->set_border_width(2); extra_vbox->pack_start(*m_shrink_seps, Gtk::PACK_SHRINK, 0); dialog->get_vbox()->set_homogeneous(false); dialog->get_vbox()->set_spacing(0); dialog->get_vbox()->pack_start(*linebrk_frame, Gtk::PACK_SHRINK, 0); dialog->get_vbox()->pack_start(*m_sep_frame, Gtk::PACK_SHRINK, 0); dialog->get_vbox()->pack_start(*extra_vbox, Gtk::PACK_SHRINK, 0); dialog->set_border_width(1); dialog->set_title(_("CSV Text Import")); dialog->set_modal(true); #ifdef GLIBMM_PROPERTIES_ENABLED dialog->property_window_position().set_value(Gtk::WIN_POS_CENTER_ON_PARENT); #endif dialog->set_resizable(true); #ifdef GLIBMM_PROPERTIES_ENABLED dialog->property_destroy_with_parent().set_value(false); #endif dialog->set_has_separator(true); dialog->add_action_widget(*m_cancel_button, Gtk::RESPONSE_CANCEL); dialog->add_action_widget(*m_import_button, Gtk::RESPONSE_APPLY); m_unix_lf->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_unix_lf_checked)); m_windoz_crlf->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_windoz_crlf_checked)); m_space_sep->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_space_sep_checked)); m_tab_sep->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_tab_sep_checked)); m_colon_sep->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_colon_sep_checked)); m_semicolon_sep->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_semicolon_sep_checked)); m_comma_sep->signal_toggled().connect ( mem_fun (*this, &CSVImportDialog::on_comma_sep_checked)); dialog->show_all (); } void CSVImportDialog:: on_unix_lf_checked () { trace_with_mask("CSVImportDialog::on_unix_lf_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_windoz_crlf->set_active (false); m_recursive_call = false; } } void CSVImportDialog:: on_windoz_crlf_checked () { trace_with_mask("CSVImportDialog::on_windoz_crlf_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_unix_lf->set_active (false); m_recursive_call = false; } } void CSVImportDialog:: on_space_sep_checked () { trace_with_mask("CSVImportDialog::on_space_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_tab_sep ->set_active (false); m_colon_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = SPACE_SEP; m_recursive_call = false; } } void CSVImportDialog:: on_tab_sep_checked () { trace_with_mask("CSVImportDialog::on_tab_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_colon_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = TAB_SEP; m_recursive_call = false; } } void CSVImportDialog:: on_colon_sep_checked () { trace_with_mask("CSVImportDialog::on_colon_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_tab_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = COLON_SEP; m_recursive_call = false; } } void CSVImportDialog:: on_semicolon_sep_checked () { trace_with_mask("CSVImportDialog::on_semicolon_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_tab_sep ->set_active (false); m_colon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = SEMICOLON_SEP; m_recursive_call = false; } } void CSVImportDialog:: on_comma_sep_checked () { trace_with_mask("CSVImportDialog::",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_tab_sep ->set_active (false); m_colon_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_sep_selection = COMMA_SEP; m_recursive_call = false; } } const char* CSVImportDialog:: get_separator () const { char* ret = ""; switch (m_sep_selection) { case SPACE_SEP: ret = " "; break; case TAB_SEP: ret = "\t"; break; case COLON_SEP: ret = ":"; break; case SEMICOLON_SEP: ret = ";"; break; case COMMA_SEP: ret = ","; break; } return ret; } const char* CSVImportDialog:: get_double_separator () const { char* ret = ""; switch (m_sep_selection) { case SPACE_SEP: ret = " "; break; case TAB_SEP: ret = "\t\t"; break; case COLON_SEP: ret = "::"; break; case SEMICOLON_SEP: ret = ";;"; break; case COMMA_SEP: ret = ",,"; break; } return ret; } granule-1.4.0-7/src/CSVExportDialog.h0000644000076400007640000000421210525742312014163 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // CSVExportDialog.h //------------------------------------------------------------------------------ // $Id: CSVExportDialog.h,v 1.1 2006/11/13 01:05:14 vlg Exp $ //------------------------------------------------------------------------------ // Copyright (c) 2006 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // 11/12/2006 VLG Created //------------------------------------------------------------------------------ #ifndef CSV_EXPORT_DIALOG_H #define CSV_EXPORT_DIALOG_H #include #include #include #include "Granule-main.h" class CSVExportDialog : public Gtk::Dialog { public: CSVExportDialog(); /// Do we break on LF or CR+LF? bool is_windoz_linebreak () const { return m_windoz_crlf->get_active (); } /// Return separator selected const char* get_separator () const; /// Return double separator const char* get_double_separator () const; /** If true, then replace each pair of adjacent separators with one. */ bool with_example () const { return m_with_example->get_active (); } /** callbacks */ void on_unix_lf_checked (); void on_windoz_crlf_checked (); void on_space_sep_checked (); void on_tab_sep_checked (); void on_colon_sep_checked (); void on_semicolon_sep_checked (); void on_comma_sep_checked (); private: Gtk::Button* m_cancel_button; Gtk::Button* m_import_button; Gtk::CheckButton* m_unix_lf; Gtk::CheckButton* m_windoz_crlf; Gtk::CheckButton* m_space_sep; Gtk::CheckButton* m_tab_sep; Gtk::CheckButton* m_colon_sep; Gtk::CheckButton* m_semicolon_sep; Gtk::CheckButton* m_comma_sep; Gtk::CheckButton* m_with_example; CSVSeparator m_sep_selection; bool m_recursive_call; }; #endif granule-1.4.0-7/src/CSVExportDialog.cpp0000644000076400007640000003065610635367123014536 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // CSVExportDialog.cpp //------------------------------------------------------------------------------ // $Id: CSVExportDialog.cpp,v 1.2 2007/06/18 02:30:43 vlg Exp $ //------------------------------------------------------------------------------ // Copyright (c) 2006 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // 11/12/2006 VLG Created //------------------------------------------------------------------------------ #include #include #include #include #include #include #include #include #include #include "CSVExportDialog.h" #include "Intern.h" CSVExportDialog:: CSVExportDialog() : m_sep_selection (SPACE_SEP), m_recursive_call (false) { CSVExportDialog* dialog = this; Gtk::Image* image1; Gtk::Label* label4; Gtk::HBox* hbox3; Gtk::Alignment* alignment1; Gtk::Image* image2; Gtk::Label* label5; Gtk::HBox* hbox4; Gtk::Alignment* alignment2; Gtk::Label* linebrk_label; Gtk::HBox* linebrk_hbox; Gtk::Label* lb_frame_label; Gtk::Frame* linebrk_frame; Gtk::Table* sep_table; Gtk::VBox* sep_vbox; Gtk::Label* sep_frame_label; Gtk::Frame* m_sep_frame; Gtk::VBox* extra_vbox; image1 = Gtk::manage (new Gtk::Image(Gtk::StockID("gtk-cancel"), Gtk::IconSize(4))); label4 = Gtk::manage (new Gtk::Label(_("Cancel"))); hbox3 = Gtk::manage (new Gtk::HBox(false, 2)); alignment1 = Gtk::manage (new Gtk::Alignment(0.5, 0.5, 0, 0)); m_cancel_button = Gtk::manage (new Gtk::Button()); image2 = Gtk::manage (new Gtk::Image(Gtk::StockID("gtk-apply"), Gtk::IconSize(4))); label5 = Gtk::manage (new Gtk::Label(_("Export"))); hbox4 = Gtk::manage (new Gtk::HBox(false, 2)); alignment2 = Gtk::manage (new Gtk::Alignment(0.5, 0.5, 0, 0)); m_import_button = Gtk::manage (new Gtk::Button()); linebrk_label = Gtk::manage (new Gtk::Label(_("Line Break:"))); m_unix_lf = Gtk::manage (new Gtk::CheckButton(_("UNIX (LF)"))); m_windoz_crlf = Gtk::manage (new Gtk::CheckButton(_("Windows (CR+LF)"))); linebrk_hbox = Gtk::manage (new Gtk::HBox(false, 15)); lb_frame_label = Gtk::manage (new Gtk::Label(_(""))); linebrk_frame = Gtk::manage (new Gtk::Frame()); m_space_sep = Gtk::manage (new Gtk::CheckButton(_("Space"))); m_tab_sep = Gtk::manage (new Gtk::CheckButton(_("Tab"))); m_semicolon_sep = Gtk::manage (new Gtk::CheckButton(_("Semicolon (;)"))); m_colon_sep = Gtk::manage (new Gtk::CheckButton(_("Colon (:)"))); m_comma_sep = Gtk::manage (new Gtk::CheckButton(_("Comma (,)"))); sep_table = Gtk::manage (new Gtk::Table(2, 3, true)); sep_vbox = Gtk::manage (new Gtk::VBox(false, 0)); sep_frame_label = Gtk::manage (new Gtk::Label(_("Select Fields"))); m_sep_frame = Gtk::manage (new Gtk::Frame()); m_with_example = Gtk::manage (new Gtk::CheckButton( _("include Example field"))); extra_vbox = Gtk::manage (new Gtk::VBox(false, 0)); image1->set_alignment(0.5,0.5); image1->set_padding(0,0); label4->set_alignment(0.5,0.5); label4->set_padding(0,0); label4->set_justify(Gtk::JUSTIFY_LEFT); label4->set_line_wrap(false); label4->set_use_markup(false); label4->set_selectable(false); hbox3->pack_start(*image1, Gtk::PACK_SHRINK, 0); hbox3->pack_start(*label4, Gtk::PACK_SHRINK, 0); alignment1->add(*hbox3); m_cancel_button->set_flags(Gtk::CAN_FOCUS); m_cancel_button->set_relief(Gtk::RELIEF_NORMAL); m_cancel_button->add(*alignment1); image2->set_alignment(0.5,0.5); image2->set_padding(0,0); label5->set_alignment(0.5,0.5); label5->set_padding(0,0); label5->set_justify(Gtk::JUSTIFY_LEFT); label5->set_line_wrap(false); label5->set_use_markup(false); label5->set_selectable(false); hbox4->pack_start(*image2, Gtk::PACK_SHRINK, 0); hbox4->pack_start(*label5, Gtk::PACK_SHRINK, 0); alignment2->add(*hbox4); m_import_button->set_flags(Gtk::CAN_FOCUS); m_import_button->set_relief(Gtk::RELIEF_NORMAL); m_import_button->add(*alignment2); #ifdef GLIBMM_PROPERTIES_ENABLED dialog->get_action_area()->property_layout_style().set_value(Gtk::BUTTONBOX_END); #endif linebrk_label->set_alignment(0.5,0.5); linebrk_label->set_padding(18,0); linebrk_label->set_justify(Gtk::JUSTIFY_LEFT); linebrk_label->set_line_wrap(false); linebrk_label->set_use_markup(false); linebrk_label->set_selectable(false); m_unix_lf->set_flags(Gtk::CAN_FOCUS); m_unix_lf->set_border_width(5); m_unix_lf->set_relief(Gtk::RELIEF_NORMAL); m_unix_lf->set_mode(true); m_unix_lf->set_active(true); m_windoz_crlf->set_flags(Gtk::CAN_FOCUS); m_windoz_crlf->set_border_width(5); m_windoz_crlf->set_relief(Gtk::RELIEF_NORMAL); m_windoz_crlf->set_mode(true); m_windoz_crlf->set_active(false); linebrk_hbox->set_border_width(2); linebrk_hbox->pack_start(*linebrk_label, Gtk::PACK_SHRINK, 0); linebrk_hbox->pack_start(*m_unix_lf, Gtk::PACK_SHRINK, 0); linebrk_hbox->pack_start(*m_windoz_crlf, Gtk::PACK_SHRINK, 0); lb_frame_label->set_alignment(0.5,0.5); lb_frame_label->set_padding(0,0); lb_frame_label->set_justify(Gtk::JUSTIFY_LEFT); lb_frame_label->set_line_wrap(false); lb_frame_label->set_use_markup(false); lb_frame_label->set_selectable(false); linebrk_frame->set_border_width(4); linebrk_frame->set_shadow_type(Gtk::SHADOW_ETCHED_IN); linebrk_frame->set_label_align(0,0.5); linebrk_frame->add(*linebrk_hbox); linebrk_frame->set_label_widget(*lb_frame_label); m_space_sep->set_flags(Gtk::CAN_FOCUS); m_space_sep->set_relief(Gtk::RELIEF_NORMAL); m_space_sep->set_mode(true); m_space_sep->set_active(true); m_tab_sep->set_flags(Gtk::CAN_FOCUS); m_tab_sep->set_relief(Gtk::RELIEF_NORMAL); m_tab_sep->set_mode(true); m_tab_sep->set_active(false); m_semicolon_sep->set_flags(Gtk::CAN_FOCUS); m_semicolon_sep->set_relief(Gtk::RELIEF_NORMAL); m_semicolon_sep->set_mode(true); m_semicolon_sep->set_active(false); m_colon_sep->set_flags(Gtk::CAN_FOCUS); m_colon_sep->set_relief(Gtk::RELIEF_NORMAL); m_colon_sep->set_mode(true); m_colon_sep->set_active(false); m_comma_sep->set_flags(Gtk::CAN_FOCUS); m_comma_sep->set_relief(Gtk::RELIEF_NORMAL); m_comma_sep->set_mode(true); m_comma_sep->set_active(false); sep_table->set_row_spacings(4); sep_table->set_col_spacings(4); sep_table->attach(*m_space_sep,0,1,0,1, Gtk::FILL,Gtk::AttachOptions (), 0,0); sep_table->attach(*m_tab_sep, 1,2,0,1, Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_table->attach(*m_semicolon_sep, 2,3,0,1, Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_table->attach(*m_colon_sep,0,1,1,2,Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_table->attach(*m_comma_sep,1,2,1,2,Gtk::FILL, Gtk::AttachOptions (), 0,0); sep_vbox->set_border_width(2); sep_vbox->pack_start(*sep_table, Gtk::PACK_SHRINK, 3); sep_frame_label->set_alignment(0.5,0.5); sep_frame_label->set_padding(0,0); sep_frame_label->set_justify(Gtk::JUSTIFY_LEFT); sep_frame_label->set_line_wrap(false); sep_frame_label->set_use_markup(false); sep_frame_label->set_selectable(false); m_sep_frame->set_border_width(3); m_sep_frame->set_shadow_type(Gtk::SHADOW_ETCHED_IN); m_sep_frame->set_label_align(0,0.5); m_sep_frame->add(*sep_vbox); m_sep_frame->set_label_widget(*sep_frame_label); m_with_example->set_flags(Gtk::CAN_FOCUS); m_with_example->set_border_width(4); m_with_example->set_relief(Gtk::RELIEF_NORMAL); m_with_example->set_mode(true); m_with_example->set_active(false); extra_vbox->set_border_width(2); extra_vbox->pack_start(*m_with_example, Gtk::PACK_SHRINK, 0); dialog->get_vbox()->set_homogeneous(false); dialog->get_vbox()->set_spacing(0); dialog->get_vbox()->pack_start(*linebrk_frame, Gtk::PACK_SHRINK, 0); dialog->get_vbox()->pack_start(*m_sep_frame, Gtk::PACK_SHRINK, 0); dialog->get_vbox()->pack_start(*extra_vbox, Gtk::PACK_SHRINK, 0); dialog->set_border_width(1); dialog->set_title(_("CSV Text Import")); dialog->set_modal(true); dialog->set_resizable(true); #ifdef GLIBMM_PROPERTIES_ENABLED dialog->property_window_position().set_value(Gtk::WIN_POS_CENTER_ON_PARENT); dialog->property_destroy_with_parent().set_value(false); #endif dialog->set_has_separator(true); dialog->add_action_widget(*m_cancel_button, Gtk::RESPONSE_CANCEL); dialog->add_action_widget(*m_import_button, Gtk::RESPONSE_APPLY); m_unix_lf->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_unix_lf_checked)); m_windoz_crlf->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_windoz_crlf_checked)); m_space_sep->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_space_sep_checked)); m_tab_sep->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_tab_sep_checked)); m_colon_sep->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_colon_sep_checked)); m_semicolon_sep->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_semicolon_sep_checked)); m_comma_sep->signal_toggled().connect ( mem_fun (*this, &CSVExportDialog::on_comma_sep_checked)); dialog->show_all (); } void CSVExportDialog:: on_unix_lf_checked () { trace_with_mask("CSVExportDialog::on_unix_lf_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_windoz_crlf->set_active (false); m_recursive_call = false; } } void CSVExportDialog:: on_windoz_crlf_checked () { trace_with_mask("CSVExportDialog::on_windoz_crlf_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_unix_lf->set_active (false); m_recursive_call = false; } } void CSVExportDialog:: on_space_sep_checked () { trace_with_mask("CSVExportDialog::on_space_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_tab_sep ->set_active (false); m_colon_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = SPACE_SEP; m_recursive_call = false; } } void CSVExportDialog:: on_tab_sep_checked () { trace_with_mask("CSVExportDialog::on_tab_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_colon_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = TAB_SEP; m_recursive_call = false; } } void CSVExportDialog:: on_colon_sep_checked () { trace_with_mask("CSVExportDialog::on_colon_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_tab_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = COLON_SEP; m_recursive_call = false; } } void CSVExportDialog:: on_semicolon_sep_checked () { trace_with_mask("CSVExportDialog::on_semicolon_sep_checked",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_tab_sep ->set_active (false); m_colon_sep ->set_active (false); m_comma_sep ->set_active (false); m_sep_selection = SEMICOLON_SEP; m_recursive_call = false; } } void CSVExportDialog:: on_comma_sep_checked () { trace_with_mask("CSVExportDialog::",GUITRACE); if (!m_recursive_call) { m_recursive_call = true; m_space_sep ->set_active (false); m_tab_sep ->set_active (false); m_colon_sep ->set_active (false); m_semicolon_sep ->set_active (false); m_sep_selection = COMMA_SEP; m_recursive_call = false; } } const char* CSVExportDialog:: get_separator () const { char* ret = ""; switch (m_sep_selection) { case SPACE_SEP: ret = " "; break; case TAB_SEP: ret = "\t"; break; case COLON_SEP: ret = ":"; break; case SEMICOLON_SEP: ret = ";"; break; case COMMA_SEP: ret = ","; break; } return ret; } const char* CSVExportDialog:: get_double_separator () const { char* ret = ""; switch (m_sep_selection) { case SPACE_SEP: ret = " "; break; case TAB_SEP: ret = "\t\t"; break; case COLON_SEP: ret = "::"; break; case SEMICOLON_SEP: ret = ";;"; break; case COMMA_SEP: ret = ",,"; break; } return ret; } granule-1.4.0-7/src/AboutGRAPP.h0000644000076400007640000000227510057000612013047 00000000000000// -*- c++ -*- // generated by glade-- //------------------------------------------------------------------------------ // $Id: AboutGRAPP.h,v 1.1 2004/06/01 04:09:46 vlg Exp $ //------------------------------------------------------------------------------ // AboutGRAPP.h //------------------------------------------------------------------------------ // Copyright (c) 2004 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // // Date : Sun May 30 21:09:23 EDT 2004 // //------------------------------------------------------------------------------ #ifndef ABOUT_GRAPP_H #define ABOUT_GRAPP_H #include #include class AboutGRAPP : public Gtk::Dialog { public: AboutGRAPP (); protected: void on_close_clicked () { hide (); } private: Glib::ustring m_icon_path; Glib::ustring m_url; }; #endif /* ABOUT_GRAPP_H */ granule-1.4.0-7/src/AboutGRAPP.cpp0000644000076400007640000000705611040776310013414 00000000000000// -*- c++ -*- // generated by glade-- //------------------------------------------------------------------------------ // $Id: AboutGRAPP.cpp,v 1.16 2008/07/21 03:04:40 vlg Exp $ //------------------------------------------------------------------------------ // AboutGRAPP.cpp //------------------------------------------------------------------------------ // Copyright (c) 2004,2006 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // // Date : Sun May 30 21:09:23 EDT 2004 // //------------------------------------------------------------------------------ #include #include #include #include #ifdef HAVE_CONFIG_H # include "config.h" #endif #include "AboutGRAPP.h" #ifdef IS_PDA static const int AG_PADDING = 0; #else static const int AG_PADDING = 20; #endif AboutGRAPP:: AboutGRAPP () : m_url ("http://granule.sourceforge.net/") { #if defined (IS_WIN32) m_icon_path = "granule.ico"; #else m_icon_path = (DATDIR "/pixmaps/granule.png"); #endif Gtk::Label* label; Gtk::Alignment* align; align = manage (new Gtk::Alignment (0.5, 0.2, 0, 0)); align->set_border_width (AG_PADDING); Gtk::VBox* contents = manage (new Gtk::VBox (false, AG_PADDING)); align->add (*contents); /** HBox holds Icon image and package name */ Gtk::HBox* hbox = manage (new Gtk::HBox (false, 3)); Gtk::Image* icon = manage (new Gtk::Image (m_icon_path)); hbox->pack_start (*icon, Gtk::PACK_SHRINK, 2); icon->set_alignment (1.0, 0.5); label = manage (new Gtk::Label); hbox->pack_start (*label, Gtk::PACK_SHRINK, 2); label->set_markup ("" PACKAGE " " VERSION " \n" + m_url); contents->pack_start (*hbox); /** Label is the rest of it */ Glib::ustring info_msg ("\nThe Flashcards Program.\n"); info_msg += "by Vladislav Grinchenko\n"; info_msg += "Copyright (C) 2004-2008\n"; label = manage (new Gtk::Label (info_msg)); contents->pack_start (*label); /** Add button */ Gtk::Button* close_b = manage (new Gtk::Button ("Close")); Gtk::Box* action_box = get_action_area (); if (action_box) { action_box->pack_start (*close_b); } close_b->signal_clicked ().connect ( sigc::mem_fun (*this, &AboutGRAPP::on_close_clicked)); #if defined(IS_HILDON) || defined(IS_PDA) Gtk::ScrolledWindow* scrollw = Gtk::manage (new Gtk::ScrolledWindow); scrollw->set_flags (Gtk::CAN_FOCUS); scrollw->set_shadow_type (Gtk::SHADOW_NONE); scrollw->set_policy (Gtk::POLICY_AUTOMATIC , Gtk::POLICY_AUTOMATIC); #ifdef GLIBMM_PROPERTIES_ENABLED scrollw->property_window_placement ().set_value (Gtk::CORNER_TOP_LEFT); #endif scrollw->add (*align); get_vbox ()->pack_start (*scrollw); #ifdef IS_PDA set_resizable (false); Gdk::Geometry dp_geometry = { 240, 320, 240, 320, 240, 320,-1, -1, -1, -1}; set_geometry_hints (*this, dp_geometry, Gdk::HINT_MIN_SIZE | Gdk::HINT_MAX_SIZE | Gdk::HINT_BASE_SIZE); #endif #ifdef IS_HILDON Gdk::Geometry dp_geometry = { 640, 480, 640, 480, 640, 480, -1, -1, -1, -1}; set_geometry_hints (*this, dp_geometry, Gdk::HINT_MIN_SIZE | Gdk::HINT_MAX_SIZE | Gdk::HINT_BASE_SIZE); #endif #else /* Desktop */ get_vbox ()->pack_start (*align); #endif show_all_children (); } granule-1.4.0-7/src/AppearanceDB.h0000644000076400007640000001451011051442704013452 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // $Id: AppearanceDB.h,v 1.5 2008/08/16 03:13:08 vlg Exp $ //------------------------------------------------------------------------------ // AppearanceDB.h //------------------------------------------------------------------------------ // Copyright (c) 2007 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // // Date : Mon Sep 17 2007 // //------------------------------------------------------------------------------ #ifndef APPEAR_DB_H #define APPEAR_DB_H #include "Granule-main.h" #include using std::string; #include // xmlDocPtr #include // xmlTextWriterPtr #include class TextAlignmentsUI; /**----------------------------------------------------------------------------- * AppearanceDB is the Model for the Appearance Preferences. * It it a persistent storage manager of data. **----------------------------------------------------------------------------- */ class AppearanceDB { public: AppearanceDB () { init_global_defaults (); } void init_deck_defaults (); void init_global_defaults (); /** Persisten storage with XML (Deck) file. */ void load_from_xml_config (xmlDocPtr parser_, string& error_msg_); void save_to_xml_config (xmlTextWriterPtr writer); /** Persistent storage with INI file (application config). */ void load_from_ini_config (ASSA::IniFile* ini_filep_); void save_to_ini_config (ASSA::IniFile* ini_filep_); /** Text alignment controls */ void x_alignment (SideSelection s_, const string& v_); void y_alignment (SideSelection s_, const string& v_); void x_padding (SideSelection s_, const string& v_); void y_padding (SideSelection s_, const string& v_); void justification (SideSelection s_, const string& v_); void img_position (SideSelection s_, const string& v_); string x_alignment (SideSelection s_) const; string y_alignment (SideSelection s_) const; string x_padding (SideSelection s_) const; string y_padding (SideSelection s_) const; string justification (SideSelection s_) const; string img_position (SideSelection s_) const; /// Update View with data from Model void update_view (SideSelection s_, TextAlignmentsUI*& view_); /// Store View values in Model void fetch_from_view (SideSelection s_, TextAlignmentsUI*& view_); private: string m_front_x_alignment; string m_front_y_alignment; string m_front_x_padding; string m_front_y_padding; string m_front_justification; string m_front_img_position; string m_back_x_alignment; string m_back_y_alignment; string m_back_x_padding; string m_back_y_padding; string m_back_justification; string m_example_x_alignment; string m_example_y_alignment; string m_example_x_padding; string m_example_y_padding; string m_example_justification; string m_example_img_position; }; /**------------------------- **** Retrieve a property ** **------------------------- */ inline string AppearanceDB::x_alignment (SideSelection s_) const { if (s_ == FRONT) { return m_front_x_alignment; } else if (s_ == BACK) { return m_back_x_alignment; } else /* EXAMPLE */ { return m_example_x_alignment; } } inline string AppearanceDB::y_alignment (SideSelection s_) const { if (s_ == FRONT) { return m_front_y_alignment; } else if (s_ == BACK) { return m_back_y_alignment; } else /* EXAMPLE */ { return m_example_y_alignment; } } inline string AppearanceDB::x_padding (SideSelection s_) const { if (s_ == FRONT) { return m_front_x_padding; } else if (s_ == BACK) { return m_back_x_padding; } else /* EXAMPLE */ { return m_example_x_padding; } } inline string AppearanceDB::y_padding (SideSelection s_) const { if (s_ == FRONT) { return m_front_y_padding; } else if (s_ == BACK) { return m_back_y_padding; } else /* EXAMPLE */ { return m_example_y_padding; } } inline string AppearanceDB::justification (SideSelection s_) const { if (s_ == FRONT) { return m_front_justification; } else if (s_ == BACK) { return m_back_justification; } else /* EXAMPLE */ { return m_example_justification; } } inline string AppearanceDB::img_position (SideSelection s_) const { if (s_ == FRONT) { return m_front_img_position; } else if (s_ == BACK) { return "top"; } else /* EXAMPLE */ { return m_example_img_position; } } /**-------------------- **** Set a property ** **-------------------- */ inline void AppearanceDB::x_alignment (SideSelection s_, const string& v_) { if (s_ == FRONT) { m_front_x_alignment = v_; } else if (s_ == BACK) { m_back_x_alignment = v_; } else /* EXAMPLE */ { m_example_x_alignment = v_; } } inline void AppearanceDB::y_alignment (SideSelection s_, const string& v_) { if (s_ == FRONT) { m_front_y_alignment = v_; } else if (s_ == BACK) { m_back_y_alignment = v_; } else /* EXAMPLE */ { m_example_y_alignment = v_; } } inline void AppearanceDB::x_padding (SideSelection s_, const string& v_) { if (s_ == FRONT) { m_front_x_padding = v_; } else if (s_ == BACK) { m_back_x_padding = v_; } else /* EXAMPLE */ { m_example_x_padding = v_; } } inline void AppearanceDB::y_padding (SideSelection s_, const string& v_) { if (s_ == FRONT) { m_front_y_padding = v_; } else if (s_ == BACK) { m_back_y_padding = v_; } else /* EXAMPLE */ { m_example_y_padding = v_; } } inline void AppearanceDB::justification (SideSelection s_, const string& v_) { if (s_ == FRONT) { m_front_justification = v_; } else if (s_ == BACK) { m_back_justification = v_; } else /* EXAMPLE */ { m_example_justification = v_; } } inline void AppearanceDB::img_position (SideSelection s_, const string& v_) { if (s_ == FRONT) { m_front_img_position = v_; } else if (s_ == BACK) { /* no-op */ } else /* EXAMPLE */ { m_example_img_position = v_; } } #endif /* APPEAR_DB */ granule-1.4.0-7/src/AppearanceDB.cpp0000644000076400007640000004217211052432576014021 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // $Id: AppearanceDB.cpp,v 1.7 2008/08/19 02:52:46 vlg Exp $ //------------------------------------------------------------------------------ // AppearanceDB.cpp //------------------------------------------------------------------------------ // Copyright (c) 2007 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // // Date : Mon Sep 17 2007 // //------------------------------------------------------------------------------ #include "AppearanceDB.h" #include "Granule.h" #include "TextAlignmentsUI.h" using ASSA::IniFile; /** * Global appearance settings assume most common flashcards * usage pattern of Word-Word-ExampleText combination. */ void AppearanceDB:: init_global_defaults () { /**- FRONT --**/ m_front_x_alignment = "center"; m_front_y_alignment = "center"; m_front_justification = "center"; m_front_x_padding = "4"; m_front_y_padding = "0"; m_front_img_position = "top"; /**- BACK --**/ m_back_x_alignment = "center"; m_back_y_alignment = "center"; m_back_justification = "center"; m_back_x_padding = "1"; m_back_y_padding = "1"; /**- EXAMPLE --**/ m_example_x_alignment = "left"; m_example_y_alignment = "top"; m_example_justification = "left"; m_example_x_padding = "2"; m_example_y_padding = "0"; m_example_img_position = "top"; } /** * The Deck appearance settings are designed for displaying * text paragraphs Text-CardNumber-Text in the 'slide show' mode * (full-screen) with enlarged text fonts set to Sans 24 or higher. */ void AppearanceDB:: init_deck_defaults () { /**- FRONT --**/ m_front_x_alignment = "left"; m_front_y_alignment = "top"; m_front_justification = "left"; m_front_x_padding = "15"; m_front_y_padding = "15"; m_front_img_position = "top"; /**- BACK --**/ m_back_x_alignment = "center"; m_back_y_alignment = "center"; m_back_justification = "left"; m_back_x_padding = "0"; m_back_y_padding = "0"; /**- EXAMPLE --**/ m_example_x_alignment = "left"; m_example_y_alignment = "top"; m_example_justification = "left"; m_example_x_padding = "8"; m_example_y_padding = "8"; m_example_img_position = "top"; } /**=========================================================================** * Load text appearance settings from XML file * **=========================================================================**/ void AppearanceDB:: load_from_xml_config (xmlDocPtr parser_, std::string& error_msg_) { xmlChar* result; /********* * Front * *********/ result = Granule::get_node_by_xpath (parser_, "/deck/appearance/front_app/@x_alignment"); if (result == NULL) { return; } x_alignment (FRONT, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/front_app/@y_alignment"); if (result == NULL) { return; } y_alignment (FRONT, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/front_app/@x_padding"); if (result == NULL) { return; } x_padding (FRONT, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/front_app/@y_padding"); if (result == NULL) { return; } y_padding (FRONT, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/front_app/@justification"); if (result == NULL) { return; } justification (FRONT, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/front_app/@img_position"); if (result == NULL) { return; } img_position (FRONT, (const char*) result); xmlFree (result); /******** * Back * ****** */ result = Granule::get_node_by_xpath (parser_, "/deck/appearance/back_app/@x_alignment"); if (result == NULL) { return; } x_alignment (BACK, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/back_app/@y_alignment"); if (result == NULL) { return; } y_alignment (BACK, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/back_app/@x_padding"); if (result == NULL) { return; } x_padding (BACK, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/back_app/@y_padding"); if (result == NULL) { return; } y_padding (BACK, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/back_app/@justification"); if (result == NULL) { return; } justification (BACK, (const char*) result); xmlFree (result); /*********** * Example * ***********/ result = Granule::get_node_by_xpath (parser_, "/deck/appearance/example_app/@x_alignment"); if (result == NULL) { return; } x_alignment (EXAMPLE, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/example_app/@y_alignment"); if (result == NULL) { return; } y_alignment (EXAMPLE, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/example_app/@x_padding"); if (result == NULL) { return; } x_padding (EXAMPLE, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/example_app/@y_padding"); if (result == NULL) { return; } y_padding (EXAMPLE, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/example_app/@justification"); if (result == NULL) { return; } justification (EXAMPLE, (const char*) result); xmlFree (result); result = Granule::get_node_by_xpath (parser_, "/deck/appearance/example_app/@img_position"); if (result == NULL) { return; } img_position (EXAMPLE, (const char*) result); xmlFree (result); } void AppearanceDB:: save_to_xml_config (xmlTextWriterPtr writer_) { int ret = 0; //-------------------------------------------------------------------------- ret = xmlTextWriterStartElement (writer_, BAD_CAST "front_app"); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "x_alignment", BAD_CAST m_front_x_alignment.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "y_alignment", BAD_CAST m_front_y_alignment.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "x_padding", BAD_CAST m_front_x_padding.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "y_padding", BAD_CAST m_front_y_padding.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "justification", BAD_CAST m_front_justification.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "img_position", BAD_CAST m_front_img_position.c_str ()); ret = xmlTextWriterEndElement (writer_); // @front_app //-------------------------------------------------------------------------- ret = xmlTextWriterStartElement (writer_, BAD_CAST "back_app"); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "x_alignment", BAD_CAST m_back_x_alignment.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "y_alignment", BAD_CAST m_back_y_alignment.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "x_padding", BAD_CAST m_back_x_padding.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "y_padding", BAD_CAST m_back_y_padding.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "justification", BAD_CAST m_back_justification.c_str ()); ret = xmlTextWriterEndElement (writer_); // @back_app //-------------------------------------------------------------------------- ret = xmlTextWriterStartElement (writer_, BAD_CAST "example_app"); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "x_alignment", BAD_CAST m_example_x_alignment.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "y_alignment", BAD_CAST m_example_y_alignment.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "x_padding", BAD_CAST m_example_x_padding.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "y_padding", BAD_CAST m_example_y_padding.c_str ()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "justification", BAD_CAST m_example_justification.c_str()); ret = xmlTextWriterWriteAttribute (writer_, BAD_CAST "img_position", BAD_CAST m_example_img_position.c_str()); ret = xmlTextWriterEndElement (writer_); // @example_app } /**=========================================================================** * Load text appearance settings from INI file * **=========================================================================**/ void AppearanceDB:: load_from_ini_config (ASSA::IniFile* ini_filep_) { std::string s; if (ini_filep_ == NULL) { return; } /**-- FRONT --**/ s = ini_filep_->get_value ("Default", "front_x_alignment"); if (! s.empty ()) { m_front_x_alignment = s; } s = ini_filep_->get_value ("Default", "front_y_alignment"); if (! s.empty ()) { m_front_y_alignment = s; } s = ini_filep_->get_value ("Default", "front_x_padding"); if (! s.empty ()) { m_front_x_padding = s; } s = ini_filep_->get_value ("Default", "front_y_padding"); if (! s.empty ()) { m_front_y_padding = s; } s = ini_filep_->get_value ("Default", "front_justification"); if (! s.empty ()) { m_front_justification = s; } s = ini_filep_->get_value ("Default", "front_img_position"); if (! s.empty ()) { m_front_img_position = s; } /**-- BACK --**/ s = ini_filep_->get_value ("Default", "back_x_alignment"); if (! s.empty ()) { m_back_x_alignment = s; } s = ini_filep_->get_value ("Default", "back_y_alignment"); if (! s.empty ()) { m_back_y_alignment = s; } s = ini_filep_->get_value ("Default", "back_x_padding"); if (! s.empty ()) { m_back_x_padding = s; } s = ini_filep_->get_value ("Default", "back_y_padding"); if (! s.empty ()) { m_back_y_padding = s; } s = ini_filep_->get_value ("Default", "back_justification"); if (! s.empty ()) { m_back_justification = s; } /**-- EXAMPLE --**/ s = ini_filep_->get_value ("Default", "example_x_alignment"); if (! s.empty ()) { m_example_x_alignment = s; } s = ini_filep_->get_value ("Default", "example_y_alignment"); if (! s.empty ()) { m_example_y_alignment = s; } s = ini_filep_->get_value ("Default", "example_x_padding"); if (! s.empty ()) { m_example_x_padding = s; } s = ini_filep_->get_value ("Default", "example_y_padding"); if (! s.empty ()) { m_example_y_padding = s; } s = ini_filep_->get_value ("Default", "example_justification"); if (! s.empty ()) { m_example_justification = s; } s = ini_filep_->get_value ("Default", "example_img_position"); if (! s.empty ()) { m_example_img_position = s; } } void AppearanceDB:: save_to_ini_config (ASSA::IniFile* ini_filep_) { /**-- FRONT --**/ ini_filep_->set_pair ("Default", IniFile::tuple_type("front_x_alignment", m_front_x_alignment)); ini_filep_->set_pair ("Default", IniFile::tuple_type("front_y_alignment", m_front_y_alignment)); ini_filep_->set_pair ("Default", IniFile::tuple_type("front_x_padding", m_front_x_padding)); ini_filep_->set_pair ("Default", IniFile::tuple_type("front_y_padding", m_front_y_padding)); ini_filep_->set_pair ("Default", IniFile::tuple_type("front_justification", m_front_justification)); ini_filep_->set_pair ("Default", IniFile::tuple_type("front_img_position", m_front_img_position)); /**-- BACK --**/ ini_filep_->set_pair ("Default", IniFile::tuple_type("back_x_alignment", m_back_x_alignment)); ini_filep_->set_pair ("Default", IniFile::tuple_type("back_y_alignment", m_back_y_alignment)); ini_filep_->set_pair ("Default", IniFile::tuple_type("back_x_padding", m_back_x_padding)); ini_filep_->set_pair ("Default", IniFile::tuple_type("back_y_padding", m_back_y_padding)); ini_filep_->set_pair ("Default", IniFile::tuple_type("back_justification", m_back_justification)); /**-- EXAMPLE --**/ ini_filep_->set_pair ("Default", IniFile::tuple_type("example_x_alignment", m_example_x_alignment)); ini_filep_->set_pair ("Default", IniFile::tuple_type("example_y_alignment", m_example_y_alignment)); ini_filep_->set_pair ("Default", IniFile::tuple_type("example_x_padding", m_example_x_padding)); ini_filep_->set_pair ("Default", IniFile::tuple_type("example_y_padding", m_example_y_padding)); ini_filep_->set_pair ("Default", IniFile::tuple_type("example_justification", m_example_justification)); ini_filep_->set_pair ("Default", IniFile::tuple_type("example_img_position", m_example_img_position)); } /** From DeckView */ void AppearanceDB:: update_view (SideSelection s_, TextAlignmentsUI*& view_) { int value; string b; /**------------------------------------------------**/ b = x_alignment (s_); if (b == "center") { value = TA_X_ALIGN_CENTER; } else if (b == "left") { value = TA_X_ALIGN_LEFT; } else if (b == "right") { value = TA_X_ALIGN_RIGHT; } else { value = TA_X_ALIGN_CENTER; } view_->x_align_combo ()->set_active (value); b = y_alignment (s_); if (b == "center") { value = TA_Y_ALIGN_CENTER; } else if (b == "top") { value = TA_Y_ALIGN_TOP; } else if (b == "bottom") { value = TA_Y_ALIGN_BOTTOM; } else { value = TA_Y_ALIGN_CENTER; } view_->y_align_combo ()->set_active (value); /**------------------------------------------------**/ b = justification (s_); if (b == "center") { value = TA_JUSTIFY_CENTER; } else if (b == "left") { value = TA_JUSTIFY_LEFT; } else if (b == "right") { value = TA_JUSTIFY_RIGHT; } else if (b == "fill") { value = TA_JUSTIFY_FILL; } else { value = TA_JUSTIFY_CENTER; } view_->paragraph_combo ()->set_active (value); /**------------------------------------------------**/ view_->x_padding_entry ()->set_text (x_padding (s_)); view_->y_padding_entry ()->set_text (y_padding (s_)); /**------------------------------------------------**/ b = img_position (s_); if (b == "top") { value = TA_IMG_POSITION_TOP; } else if (b == "bottom") { value = TA_IMG_POSITION_BOTTOM; } else { value = TA_IMG_POSITION_TOP; } view_->img_position_combo ()->set_active (value); } void AppearanceDB:: fetch_from_view (SideSelection s_, TextAlignmentsUI*& view_) { std::string result; int value; /**-----------------------------------------------------**/ value = view_->x_align_combo ()->get_active_row_number (); switch (value) { case TA_X_ALIGN_CENTER: result = "center"; break; case TA_X_ALIGN_LEFT: result = "left"; break; case TA_X_ALIGN_RIGHT: result = "right"; break; default: result = "center"; } x_alignment (s_, result); /**-----------------------------------------------------**/ value = view_->y_align_combo ()->get_active_row_number (); switch (value) { case TA_Y_ALIGN_CENTER: result = "center"; break; case TA_Y_ALIGN_TOP: result = "top"; break; case TA_Y_ALIGN_BOTTOM: result = "bottom"; break; default: result = "center"; } y_alignment (s_, result); /**-----------------------------------------------------**/ value = view_->paragraph_combo ()->get_active_row_number (); switch (value) { case TA_JUSTIFY_CENTER: result = "center"; break; case TA_JUSTIFY_LEFT: result = "left"; break; case TA_JUSTIFY_RIGHT: result = "right"; break; case TA_JUSTIFY_FILL: result = "fill"; break; default: result = "center"; } justification (s_, result); /**-----------------------------------------------------**/ x_padding (s_, view_->x_padding_entry()->get_text()); y_padding (s_, view_->y_padding_entry()->get_text()); /**-----------------------------------------------------**/ value = view_->img_position_combo ()->get_active_row_number (); switch (value) { case TA_IMG_POSITION_TOP: result = "top"; break; case TA_IMG_POSITION_BOTTOM: result = "bottom"; break; default: result = "top"; } img_position (s_, result); } granule-1.4.0-7/src/FontsSelectorUI.h0000644000076400007640000000637310724376334014260 00000000000000// -*- c++ -*- //------------------------------------------------------------------------------ // FontsSelectorUI.h //------------------------------------------------------------------------------ // $Id: FontsSelectorUI.h,v 1.1 2007/12/02 00:31:24 vlg Exp $ //------------------------------------------------------------------------------ // Copyright (c) 2007 by Vladislav Grinchenko // // This program is free software; you can redistribute it and/or // modify it under the terms of the GNU General Public License // as published by the Free Software Foundation; either version // 2 of the License, or (at your option) any later version. //------------------------------------------------------------------------------ // // Date : Thu Oct 4 2007 // //------------------------------------------------------------------------------ #ifndef FONTS_SELECTOR_H #define FONTS_SELECTOR_H #include #include #include #include #include #include #include #include #include #include #include #include #include "Granule-main.h" /**----------------------------------------------------------------------------- * Compound Font Entry * * /-------\/---------------------\/-----------------\ * | Label || Entry || ) { if (s/^(\s*)_(\w+=(.*))/$1$2/) { my $string = $3; print OUTPUT; my $non_translated_line = $_; for my $lang (sort keys %po_files_by_lang) { my $translation = $translations{$lang, $string}; next if !$translation; $_ = $non_translated_line; s/(\w+)=.*/[$lang]$1=$translation/; print OUTPUT; } } else { print OUTPUT; } } close OUTPUT; close INPUT; } sub desktop_merge_translations { open INPUT, "<${FILE}" or die; open OUTPUT, ">${OUTFILE}" or die; binmode (OUTPUT) if $^O eq 'MSWin32'; while () { if (s/^(\s*)_(\w+=(.*))/$1$2/) { my $string = $3; print OUTPUT; my $non_translated_line = $_; for my $lang (sort keys %po_files_by_lang) { my $translation = $translations{$lang, $string}; next if !$translation; $_ = $non_translated_line; s/(\w+)=.*/${1}[$lang]=$translation/; print OUTPUT; } } else { print OUTPUT; } } close OUTPUT; close INPUT; } sub schemas_merge_translations { my $source; { local $/; # slurp mode open INPUT, "<$FILE" or die "can't open $FILE: $!"; $source = ; close INPUT; } open OUTPUT, ">$OUTFILE" or die; binmode (OUTPUT) if $^O eq 'MSWin32'; # FIXME: support attribute translations # Empty nodes never need translation, so unmark all of them. # For example, <_foo/> is just replaced by . $source =~ s|<\s*_($w+)\s*/>|<$1/>|g; while ($source =~ s/ (.*?) (\s+)((\s*) (\s*(?:\s*)?(.*?)\s*<\/default>)?(\s*) (\s*(?:\s*)?(.*?)\s*<\/short>)?(\s*) (\s*(?:\s*)?(.*?)\s*<\/long>)?(\s*) <\/locale>) //sx) { print OUTPUT $1; my $locale_start_spaces = $2 ? $2 : ''; my $default_spaces = $4 ? $4 : ''; my $short_spaces = $7 ? $7 : ''; my $long_spaces = $10 ? $10 : ''; my $locale_end_spaces = $13 ? $13 : ''; my $c_default_block = $3 ? $3 : ''; my $default_string = $6 ? $6 : ''; my $short_string = $9 ? $9 : ''; my $long_string = $12 ? $12 : ''; print OUTPUT "$locale_start_spaces$c_default_block"; $default_string =~ s/\s+/ /g; $default_string = entity_decode($default_string); $short_string =~ s/\s+/ /g; $short_string = entity_decode($short_string); $long_string =~ s/\s+/ /g; $long_string = entity_decode($long_string); for my $lang (sort keys %po_files_by_lang) { my $default_translation = $translations{$lang, $default_string}; my $short_translation = $translations{$lang, $short_string}; my $long_translation = $translations{$lang, $long_string}; next if (!$default_translation && !$short_translation && !$long_translation); print OUTPUT "\n$locale_start_spaces"; print OUTPUT "$default_spaces"; if ($default_translation) { $default_translation = entity_encode($default_translation); print OUTPUT "$default_translation"; } print OUTPUT "$short_spaces"; if ($short_translation) { $short_translation = entity_encode($short_translation); print OUTPUT "$short_translation"; } print OUTPUT "$long_spaces"; if ($long_translation) { $long_translation = entity_encode($long_translation); print OUTPUT "$long_translation"; } print OUTPUT "$locale_end_spaces"; } } print OUTPUT $source; close OUTPUT; } sub rfc822deb_merge_translations { my %encodings = (); for my $lang (keys %po_files_by_lang) { $encodings{$lang} = ($UTF8_ARG ? 'UTF-8' : get_po_encoding($po_files_by_lang{$lang})); } my $source; $Text::Wrap::huge = 'overflow'; $Text::Wrap::break = qr/\n|\s(?=\S)/; { local $/; # slurp mode open INPUT, "<$FILE" or die "can't open $FILE: $!"; $source = ; close INPUT; } open OUTPUT, ">${OUTFILE}" or die; binmode (OUTPUT) if $^O eq 'MSWin32'; while ($source =~ /(^|\n+)(_*)([^:\s]+)(:[ \t]*)(.*?)(?=\n[\S\n]|$)/sg) { my $sep = $1; my $non_translated_line = $3.$4; my $string = $5; my $underscore = length($2); next if $underscore eq 0 && $non_translated_line =~ /^#/; # Remove [] dummy strings my $stripped = $string; $stripped =~ s/\[\s[^\[\]]*\],/,/g if $underscore eq 2; $stripped =~ s/\[\s[^\[\]]*\]$//; $non_translated_line .= $stripped; print OUTPUT $sep.$non_translated_line; if ($underscore) { my @str_list = rfc822deb_split($underscore, $string); for my $lang (sort keys %po_files_by_lang) { my $is_translated = 1; my $str_translated = ''; my $first = 1; for my $str (@str_list) { my $translation = $translations{$lang, $str}; if (!$translation) { $is_translated = 0; last; } # $translation may also contain [] dummy # strings, mostly to indicate an empty string $translation =~ s/\[\s[^\[\]]*\]$//; if ($first) { if ($underscore eq 2) { $str_translated .= $translation; } else { $str_translated .= Text::Tabs::expand($translation) . "\n"; } } else { if ($underscore eq 2) { $str_translated .= ', ' . $translation; } else { $str_translated .= Text::Tabs::expand( Text::Wrap::wrap(' ', ' ', $translation)) . "\n .\n"; } } $first = 0; # To fix some problems with Text::Wrap::wrap $str_translated =~ s/(\n )+\n/\n .\n/g; } next unless $is_translated; $str_translated =~ s/\n \.\n$//; $str_translated =~ s/\s+$//; $_ = $non_translated_line; s/^(\w+):\s*.*/$sep${1}-$lang.$encodings{$lang}: $str_translated/s; print OUTPUT; } } } print OUTPUT "\n"; close OUTPUT; close INPUT; } sub rfc822deb_split { # Debian defines a special way to deal with rfc822-style files: # when a value contain newlines, it consists of # 1. a short form (first line) # 2. a long description, all lines begin with a space, # and paragraphs are separated by a single dot on a line # This routine returns an array of all paragraphs, and reformat # them. # When first argument is 2, the string is a comma separated list of # values. my $type = shift; my $text = shift; $text =~ s/^[ \t]//mg; return (split(/, */, $text, 0)) if $type ne 1; return ($text) if $text !~ /\n/; $text =~ s/([^\n]*)\n//; my @list = ($1); my $str = ''; for my $line (split (/\n/, $text)) { chomp $line; if ($line =~ /^\.\s*$/) { # New paragraph $str =~ s/\s*$//; push(@list, $str); $str = ''; } elsif ($line =~ /^\s/) { # Line which must not be reformatted $str .= "\n" if length ($str) && $str !~ /\n$/; $line =~ s/\s+$//; $str .= $line."\n"; } else { # Continuation line, remove newline $str .= " " if length ($str) && $str !~ /\n$/; $str .= $line; } } $str =~ s/\s*$//; push(@list, $str) if length ($str); return @list; } granule-1.4.0-7/intltool-update.in0000644000076400007640000006663511056772526013755 00000000000000#!@INTLTOOL_PERL@ -w # -*- Mode: perl; indent-tabs-mode: nil; c-basic-offset: 4 -*- # # The Intltool Message Updater # # Copyright (C) 2000-2003 Free Software Foundation. # # Intltool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # version 2 published by the Free Software Foundation. # # Intltool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # # Authors: Kenneth Christiansen # Maciej Stachowiak # Darin Adler ## Release information my $PROGRAM = "intltool-update"; my $VERSION = "0.35.0"; my $PACKAGE = "intltool"; ## Loaded modules use strict; use Getopt::Long; use Cwd; use File::Copy; use File::Find; ## Scalars used by the option stuff my $HELP_ARG = 0; my $VERSION_ARG = 0; my $DIST_ARG = 0; my $POT_ARG = 0; my $HEADERS_ARG = 0; my $MAINTAIN_ARG = 0; my $REPORT_ARG = 0; my $VERBOSE = 0; my $GETTEXT_PACKAGE = ""; my $OUTPUT_FILE = ""; my @languages; my %varhash = (); my %po_files_by_lang = (); # Regular expressions to categorize file types. # FIXME: Please check if the following is correct my $xml_support = "xml(?:\\.in)*|". # http://www.w3.org/XML/ (Note: .in is not required) "ui|". # Bonobo specific - User Interface desc. files "lang|". # ? "glade2?(?:\\.in)*|". # Glade specific - User Interface desc. files (Note: .in is not required) "scm(?:\\.in)*|". # ? (Note: .in is not required) "oaf(?:\\.in)+|". # DEPRECATED: Replaces by Bonobo .server files "etspec|". # ? "server(?:\\.in)+|". # Bonobo specific "sheet(?:\\.in)+|". # ? "schemas(?:\\.in)+|". # GConf specific "pong(?:\\.in)+|". # DEPRECATED: PONG is not used [by GNOME] any longer. "kbd(?:\\.in)+"; # GOK specific. my $ini_support = "icon(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec "desktop(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec "caves(?:\\.in)+|". # GNOME Games specific "directory(?:\\.in)+|". # http://www.freedesktop.org/Standards/menu-spec "soundlist(?:\\.in)+|". # GNOME specific "keys(?:\\.in)+|". # GNOME Mime database specific "theme(?:\\.in)+|". # http://www.freedesktop.org/Standards/icon-theme-spec "service(?:\\.in)+"; # DBus specific my $buildin_gettext_support = "c|y|cs|cc|cpp|c\\+\\+|h|hh|gob|py"; ## Always flush buffer when printing $| = 1; ## Sometimes the source tree will be rooted somewhere else. my $SRCDIR = "."; my $POTFILES_in; $SRCDIR = $ENV{"srcdir"} if $ENV{"srcdir"}; $POTFILES_in = "<$SRCDIR/POTFILES.in"; my $devnull = ($^O eq 'MSWin32' ? 'NUL:' : '/dev/null'); ## Handle options GetOptions ( "help" => \$HELP_ARG, "version" => \$VERSION_ARG, "dist|d" => \$DIST_ARG, "pot|p" => \$POT_ARG, "headers|s" => \$HEADERS_ARG, "maintain|m" => \$MAINTAIN_ARG, "report|r" => \$REPORT_ARG, "verbose|x" => \$VERBOSE, "gettext-package|g=s" => \$GETTEXT_PACKAGE, "output-file|o=s" => \$OUTPUT_FILE, ) or &Console_WriteError_InvalidOption; &Console_Write_IntltoolHelp if $HELP_ARG; &Console_Write_IntltoolVersion if $VERSION_ARG; my $arg_count = ($DIST_ARG > 0) + ($POT_ARG > 0) + ($HEADERS_ARG > 0) + ($MAINTAIN_ARG > 0) + ($REPORT_ARG > 0); &Console_Write_IntltoolHelp if $arg_count > 1; # --version and --help don't require a module name my $MODULE = $GETTEXT_PACKAGE || &FindPackageName || "unknown"; if ($POT_ARG) { &GenerateHeaders; &GeneratePOTemplate; } elsif ($HEADERS_ARG) { &GenerateHeaders; } elsif ($MAINTAIN_ARG) { &FindLeftoutFiles; } elsif ($REPORT_ARG) { &GenerateHeaders; &GeneratePOTemplate; &Console_Write_CoverageReport; } elsif ((defined $ARGV[0]) && $ARGV[0] =~ /^[a-z]/) { my $lang = $ARGV[0]; ## Report error if the language file supplied ## to the command line is non-existent &Console_WriteError_NotExisting("$SRCDIR/$lang.po") if ! -s "$SRCDIR/$lang.po"; if (!$DIST_ARG) { print "Working, please wait..." if $VERBOSE; &GenerateHeaders; &GeneratePOTemplate; } &POFile_Update ($lang, $OUTPUT_FILE); &Console_Write_TranslationStatus ($lang, $OUTPUT_FILE); } else { &Console_Write_IntltoolHelp; } exit; ######### sub Console_Write_IntltoolVersion { print <<_EOF_; ${PROGRAM} (${PACKAGE}) $VERSION Written by Kenneth Christiansen, Maciej Stachowiak, and Darin Adler. Copyright (C) 2000-2003 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. _EOF_ exit; } sub Console_Write_IntltoolHelp { print <<_EOF_; Usage: ${PROGRAM} [OPTION]... LANGCODE Updates PO template files and merge them with the translations. Mode of operation (only one is allowed): -p, --pot generate the PO template only -s, --headers generate the header files in POTFILES.in -m, --maintain search for left out files from POTFILES.in -r, --report display a status report for the module -d, --dist merge LANGCODE.po with existing PO template Extra options: -g, --gettext-package=NAME override PO template name, useful with --pot -o, --output-file=FILE write merged translation to FILE -x, --verbose display lots of feedback --help display this help and exit --version output version information and exit Examples of use: ${PROGRAM} --pot just create a new PO template ${PROGRAM} xy create new PO template and merge xy.po with it Report bugs to http://bugzilla.gnome.org/ (product name "$PACKAGE") or send email to . _EOF_ exit; } sub echo_n { my $str = shift; my $ret = `echo "$str"`; $ret =~ s/\n$//; # do we need the "s" flag? return $ret; } sub POFile_DetermineType ($) { my $type = $_; my $gettext_type; my $xml_regex = "(?:" . $xml_support . ")"; my $ini_regex = "(?:" . $ini_support . ")"; my $buildin_regex = "(?:" . $buildin_gettext_support . ")"; if ($type =~ /\[type: gettext\/([^\]].*)]/) { $gettext_type=$1; } elsif ($type =~ /schemas(\.in)+$/) { $gettext_type="schemas"; } elsif ($type =~ /glade2?(\.in)*$/) { $gettext_type="glade"; } elsif ($type =~ /scm(\.in)*$/) { $gettext_type="scheme"; } elsif ($type =~ /keys(\.in)+$/) { $gettext_type="keys"; } # bucket types elsif ($type =~ /$xml_regex$/) { $gettext_type="xml"; } elsif ($type =~ /$ini_regex$/) { $gettext_type="ini"; } elsif ($type =~ /$buildin_regex$/) { $gettext_type="buildin"; } else { $gettext_type="unknown"; } return "gettext\/$gettext_type"; } sub TextFile_DetermineEncoding ($) { my $gettext_code="ASCII"; # All files are ASCII by default my $filetype=`file $_ | cut -d ' ' -f 2`; if ($? eq "0") { if ($filetype =~ /^(ISO|UTF)/) { chomp ($gettext_code = $filetype); } elsif ($filetype =~ /^XML/) { $gettext_code="UTF-8"; # We asume that .glade and other .xml files are UTF-8 } } return $gettext_code; } sub isNotValidMissing { my ($file) = @_; return if $file =~ /^\{arch\}\/.*$/; return if $file =~ /^$varhash{"PACKAGE"}-$varhash{"VERSION"}\/.*$/; } sub FindLeftoutFiles { my (@buf_i18n_plain, @buf_i18n_xml, @buf_i18n_xml_unmarked, @buf_i18n_ini, @buf_potfiles, @buf_potfiles_ignore, @buf_allfiles, @buf_allfiles_sorted, @buf_potfiles_sorted ); ## Search and find all translatable files find sub { push @buf_i18n_plain, "$File::Find::name" if /\.($buildin_gettext_support)$/; push @buf_i18n_xml, "$File::Find::name" if /\.($xml_support)$/; push @buf_i18n_ini, "$File::Find::name" if /\.($ini_support)$/; push @buf_i18n_xml_unmarked, "$File::Find::name" if /\.(schemas(\.in)+)$/; }, ".."; open POTFILES, $POTFILES_in or die "$PROGRAM: there's no POTFILES.in!\n"; @buf_potfiles = grep !/^(#|\s*$)/, ; close POTFILES; foreach (@buf_potfiles) { s/^\[.*]\s*//; } print "Searching for missing translatable files...\n" if $VERBOSE; ## Check if we should ignore some found files, when ## comparing with POTFILES.in foreach my $ignore ("POTFILES.skip", "POTFILES.ignore") { (-s $ignore) or next; if ("$ignore" eq "POTFILES.ignore") { print "The usage of POTFILES.ignore is deprecated. Please consider moving the\n". "content of this file to POTFILES.skip.\n"; } print "Found $ignore: Ignoring files...\n" if $VERBOSE; open FILE, "<$ignore" or die "ERROR: Failed to open $ignore!\n"; while () { push @buf_potfiles_ignore, $_ unless /^(#|\s*$)/; } close FILE; @buf_potfiles = (@buf_potfiles_ignore, @buf_potfiles); } foreach my $file (@buf_i18n_plain) { my $in_comment = 0; my $in_macro = 0; open FILE, "<$file"; while () { # Handle continued multi-line comment. if ($in_comment) { next unless s-.*\*/--; $in_comment = 0; } # Handle continued macro. if ($in_macro) { $in_macro = 0 unless /\\$/; next; } # Handle start of macro (or any preprocessor directive). if (/^\s*\#/) { $in_macro = 1 if /^([^\\]|\\.)*\\$/; next; } # Handle comments and quoted text. while (m-(/\*|//|\'|\")-) # \' and \" keep emacs perl mode happy { my $match = $1; if ($match eq "/*") { if (!s-/\*.*?\*/--) { s-/\*.*--; $in_comment = 1; } } elsif ($match eq "//") { s-//.*--; } else # ' or " { if (!s-$match([^\\]|\\.)*?$match-QUOTEDTEXT-) { warn "mismatched quotes at line $. in $file\n"; s-$match.*--; } } } if (/\.GetString ?\(QUOTEDTEXT/) { if (defined isNotValidMissing (unpack("x3 A*", $file))) { ## Remove the first 3 chars and add newline push @buf_allfiles, unpack("x3 A*", $file) . "\n"; } last; } if (/_\(QUOTEDTEXT/) { if (defined isNotValidMissing (unpack("x3 A*", $file))) { ## Remove the first 3 chars and add newline push @buf_allfiles, unpack("x3 A*", $file) . "\n"; } last; } } close FILE; } foreach my $file (@buf_i18n_xml) { open FILE, "<$file"; while () { # FIXME: share the pattern matching code with intltool-extract if (/\s_[-A-Za-z0-9._:]+\s*=\s*\"([^"]+)\"/ || /<_[^>]+>/ || /translatable=\"yes\"/) { if (defined isNotValidMissing (unpack("x3 A*", $file))) { push @buf_allfiles, unpack("x3 A*", $file) . "\n"; } last; } } close FILE; } foreach my $file (@buf_i18n_ini) { open FILE, "<$file"; while () { if (/_(.*)=/) { if (defined isNotValidMissing (unpack("x3 A*", $file))) { push @buf_allfiles, unpack("x3 A*", $file) . "\n"; } last; } } close FILE; } foreach my $file (@buf_i18n_xml_unmarked) { if (defined isNotValidMissing (unpack("x3 A*", $file))) { push @buf_allfiles, unpack("x3 A*", $file) . "\n"; } } @buf_allfiles_sorted = sort (@buf_allfiles); @buf_potfiles_sorted = sort (@buf_potfiles); my %in2; foreach (@buf_potfiles_sorted) { $in2{$_} = 1; } my @result; foreach (@buf_allfiles_sorted) { if (!exists($in2{$_})) { push @result, $_ } } my @buf_potfiles_notexist; foreach (@buf_potfiles_sorted) { chomp (my $dummy = $_); if ("$dummy" ne "" and ! -f "../$dummy") { push @buf_potfiles_notexist, $_; } } ## Save file with information about the files missing ## if any, and give information about this procedure. if (@result + @buf_potfiles_notexist > 0) { if (@result) { print "\n" if $VERBOSE; unlink "missing"; open OUT, ">missing"; print OUT @result; close OUT; warn "\e[1mThe following files contain translations and are currently not in use. Please\e[0m\n". "\e[1mconsider adding these to the POTFILES.in file, located in the po/ directory.\e[0m\n\n"; print STDERR @result, "\n"; warn "If some of these files are left out on purpose then please add them to\n". "POTFILES.skip instead of POTFILES.in. A file \e[1m'missing'\e[0m containing this list\n". "of left out files has been written in the current directory.\n"; } if (@buf_potfiles_notexist) { unlink "notexist"; open OUT, ">notexist"; print OUT @buf_potfiles_notexist; close OUT; warn "\n" if ($VERBOSE or @result); warn "\e[1mThe following files do not exist anymore:\e[0m\n\n"; warn @buf_potfiles_notexist, "\n"; warn "Please remove them from POTFILES.in or POTFILES.skip. A file \e[1m'notexist'\e[0m\n". "containing this list of absent files has been written in the current directory.\n"; } } ## If there is nothing to complain about, notify the user else { print "\nAll files containing translations are present in POTFILES.in.\n" if $VERBOSE; } } sub Console_WriteError_InvalidOption { ## Handle invalid arguments print STDERR "Try `${PROGRAM} --help' for more information.\n"; exit 1; } sub GenerateHeaders { my $EXTRACT = "@INTLTOOL_EXTRACT@"; chomp $EXTRACT; $EXTRACT = $ENV{"INTLTOOL_EXTRACT"} if $ENV{"INTLTOOL_EXTRACT"}; ## Generate the .h header files, so we can allow glade and ## xml translation support if (! -x "$EXTRACT") { print STDERR "\n *** The intltool-extract script wasn't found!" ."\n *** Without it, intltool-update can not generate files.\n"; exit; } else { open (FILE, $POTFILES_in) or die "$PROGRAM: POTFILES.in not found.\n"; while () { chomp; next if /^\[\s*encoding/; ## Find xml files in POTFILES.in and generate the ## files with help from the extract script my $gettext_type= &POFile_DetermineType ($1); if (/\.($xml_support|$ini_support)$/ || /^\[/) { s/^\[[^\[].*]\s*//; my $filename = "../$_"; if ($VERBOSE) { system ($EXTRACT, "--update", "--srcdir=$SRCDIR", "--type=$gettext_type", $filename); } else { system ($EXTRACT, "--update", "--type=$gettext_type", "--srcdir=$SRCDIR", "--quiet", $filename); } } } close FILE; } } # # Generate .pot file from POTFILES.in # sub GeneratePOTemplate { my $XGETTEXT = $ENV{"XGETTEXT"} || "@INTLTOOL_XGETTEXT@"; my $XGETTEXT_ARGS = $ENV{"XGETTEXT_ARGS"} || ''; chomp $XGETTEXT; if (! -x $XGETTEXT) { print STDERR " *** xgettext is not found on this system!\n". " *** Without it, intltool-update can not extract strings.\n"; exit; } print "Building $MODULE.pot...\n" if $VERBOSE; open INFILE, $POTFILES_in; unlink "POTFILES.in.temp"; open OUTFILE, ">POTFILES.in.temp" or die("Cannot open POTFILES.in.temp for writing"); my $gettext_support_nonascii = 0; # checks for GNU gettext >= 0.12 my $dummy = `$XGETTEXT --version --from-code=UTF-8 >$devnull 2>$devnull`; if ($? == 0) { $gettext_support_nonascii = 1; } else { # urge everybody to upgrade gettext print STDERR "WARNING: This version of gettext does not support extracting non-ASCII\n". " strings. That means you should install a version of gettext\n". " that supports non-ASCII strings (such as GNU gettext >= 0.12),\n". " or have to let non-ASCII strings untranslated. (If there is any)\n"; } my $encoding = "ASCII"; my $forced_gettext_code; my @temp_headers; my $encoding_problem_is_reported = 0; while () { next if (/^#/ or /^\s*$/); chomp; my $gettext_code; if (/^\[\s*encoding:\s*(.*)\s*\]/) { $forced_gettext_code=$1; } elsif (/\.($xml_support|$ini_support)$/ || /^\[/) { s/^\[.*]\s*//; print OUTFILE "../$_.h\n"; push @temp_headers, "../$_.h"; $gettext_code = &TextFile_DetermineEncoding ("../$_.h") if ($gettext_support_nonascii and not defined $forced_gettext_code); } else { if ($SRCDIR eq ".") { print OUTFILE "../$_\n"; } else { print OUTFILE "$SRCDIR/../$_\n"; } $gettext_code = &TextFile_DetermineEncoding ("../$_") if ($gettext_support_nonascii and not defined $forced_gettext_code); } next if (! $gettext_support_nonascii); if (defined $forced_gettext_code) { $encoding=$forced_gettext_code; } elsif (defined $gettext_code and "$encoding" ne "$gettext_code") { if ($encoding eq "ASCII") { $encoding=$gettext_code; } elsif ($gettext_code ne "ASCII") { # Only report once because the message is quite long if (! $encoding_problem_is_reported) { print STDERR "WARNING: You should use the same file encoding for all your project files,\n". " but $PROGRAM thinks that most of the source files are in\n". " $encoding encoding, while \"$_\" is (likely) in\n". " $gettext_code encoding. If you are sure that all translatable strings\n". " are in same encoding (say UTF-8), please \e[1m*prepend*\e[0m the following\n". " line to POTFILES.in:\n\n". " [encoding: UTF-8]\n\n". " and make sure that configure.in/ac checks for $PACKAGE >= 0.27 .\n". "(such warning message will only be reported once.)\n"; $encoding_problem_is_reported = 1; } } } } close OUTFILE; close INFILE; unlink "$MODULE.pot"; my @xgettext_argument=("$XGETTEXT", "--add-comments", "--directory\=\.", "--output\=$MODULE\.pot", "--files-from\=\.\/POTFILES\.in\.temp"); my $XGETTEXT_KEYWORDS = &FindPOTKeywords; push @xgettext_argument, $XGETTEXT_KEYWORDS; my $MSGID_BUGS_ADDRESS = &FindMakevarsBugAddress; push @xgettext_argument, "--msgid-bugs-address\=$MSGID_BUGS_ADDRESS" if $MSGID_BUGS_ADDRESS; push @xgettext_argument, "--from-code\=$encoding" if ($gettext_support_nonascii); push @xgettext_argument, $XGETTEXT_ARGS if $XGETTEXT_ARGS; my $xgettext_command = join ' ', @xgettext_argument; # intercept xgettext error message print "Running $xgettext_command\n" if $VERBOSE; my $xgettext_error_msg = `$xgettext_command 2>\&1`; my $command_failed = $?; unlink "POTFILES.in.temp"; print "Removing generated header (.h) files..." if $VERBOSE; unlink foreach (@temp_headers); print "done.\n" if $VERBOSE; if (! $command_failed) { if (! -e "$MODULE.pot") { print "None of the files in POTFILES.in contain strings marked for translation.\n" if $VERBOSE; } else { print "Wrote $MODULE.pot\n" if $VERBOSE; } } else { if ($xgettext_error_msg =~ /--from-code/) { # replace non-ASCII error message with a more useful one. print STDERR "ERROR: xgettext failed to generate PO template file because there is non-ASCII\n". " string marked for translation. Please make sure that all strings marked\n". " for translation are in uniform encoding (say UTF-8), then \e[1m*prepend*\e[0m the\n". " following line to POTFILES.in and rerun $PROGRAM:\n\n". " [encoding: UTF-8]\n\n"; } else { print STDERR "$xgettext_error_msg"; if (-e "$MODULE.pot") { # is this possible? print STDERR "ERROR: xgettext failed but still managed to generate PO template file.\n". " Please consult error message above if there is any.\n"; } else { print STDERR "ERROR: xgettext failed to generate PO template file. Please consult\n". " error message above if there is any.\n"; } } exit (1); } } sub POFile_Update { -f "$MODULE.pot" or die "$PROGRAM: $MODULE.pot does not exist.\n"; my $MSGMERGE = $ENV{"MSGMERGE"} || "@INTLTOOL_MSGMERGE@"; my ($lang, $outfile) = @_; print "Merging $SRCDIR/$lang.po with $MODULE.pot..." if $VERBOSE; my $infile = "$SRCDIR/$lang.po"; $outfile = "$SRCDIR/$lang.po" if ($outfile eq ""); # I think msgmerge won't overwrite old file if merge is not successful system ("$MSGMERGE", "-o", $outfile, $infile, "$MODULE.pot"); } sub Console_WriteError_NotExisting { my ($file) = @_; ## Report error if supplied language file is non-existing print STDERR "$PROGRAM: $file does not exist!\n"; print STDERR "Try '$PROGRAM --help' for more information.\n"; exit; } sub GatherPOFiles { my @po_files = glob ("./*.po"); @languages = map (&POFile_GetLanguage, @po_files); foreach my $lang (@languages) { $po_files_by_lang{$lang} = shift (@po_files); } } sub POFile_GetLanguage ($) { s/^(.*\/)?(.+)\.po$/$2/; return $_; } sub Console_Write_TranslationStatus { my ($lang, $output_file) = @_; my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@"; $output_file = "$SRCDIR/$lang.po" if ($output_file eq ""); system ("$MSGFMT", "-o", "$devnull", "--verbose", $output_file); } sub Console_Write_CoverageReport { my $MSGFMT = $ENV{"MSGFMT"} || "@INTLTOOL_MSGFMT@"; &GatherPOFiles; foreach my $lang (@languages) { print "$lang: "; &POFile_Update ($lang, ""); } print "\n\n * Current translation support in $MODULE \n\n"; foreach my $lang (@languages) { print "$lang: "; system ("$MSGFMT", "-o", "$devnull", "--verbose", "$SRCDIR/$lang.po"); } } sub SubstituteVariable { my ($str) = @_; # always need to rewind file whenever it has been accessed seek (CONF, 0, 0); # cache each variable. varhash is global to we can add # variables elsewhere. while () { if (/^(\w+)=(.*)$/) { ($varhash{$1} = $2) =~ s/^["'](.*)["']$/$1/; } } if ($str =~ /^(.*)\${?([A-Z_]+)}?(.*)$/) { my $rest = $3; my $untouched = $1; my $sub = ""; # Ignore recursive definitions of variables $sub = $varhash{$2} if defined $varhash{$2} and $varhash{$2} !~ /\${?$2}?/; return SubstituteVariable ("$untouched$sub$rest"); } # We're using Perl backticks ` and "echo -n" here in order to # expand any shell escapes (such as backticks themselves) in every variable return echo_n ($str); } sub CONF_Handle_Open { my $base_dirname = getcwd(); $base_dirname =~ s@.*/@@; my ($conf_in, $src_dir); if ($base_dirname =~ /^po(-.+)?$/) { if (-f "Makevars") { my $makefile_source; local (*IN); open (IN, ") { if (/^top_builddir[ \t]*=/) { $src_dir = $_; $src_dir =~ s/^top_builddir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/; chomp $src_dir; if (-f "$src_dir" . "/configure.ac") { $conf_in = "$src_dir" . "/configure.ac" . "\n"; } else { $conf_in = "$src_dir" . "/configure.in" . "\n"; } last; } } close IN; $conf_in || die "Cannot find top_builddir in Makevars."; } elsif (-f "../configure.ac") { $conf_in = "../configure.ac"; } elsif (-f "../configure.in") { $conf_in = "../configure.in"; } else { my $makefile_source; local (*IN); open (IN, ") { if (/^top_srcdir[ \t]*=/) { $src_dir = $_; $src_dir =~ s/^top_srcdir[ \t]*=[ \t]*([^ \t\n\r]*)/$1/; chomp $src_dir; $conf_in = "$src_dir" . "/configure.in" . "\n"; last; } } close IN; $conf_in || die "Cannot find top_srcdir in Makefile."; } open (CONF, "<$conf_in"); } else { print STDERR "$PROGRAM: Unable to proceed.\n" . "Make sure to run this script inside the po directory.\n"; exit; } } sub FindPackageName { my $version; my $domain = &FindMakevarsDomain; my $name = $domain || "untitled"; &CONF_Handle_Open; my $conf_source; { local (*IN); open (IN, "<&CONF") || return $name; seek (IN, 0, 0); local $/; # slurp mode $conf_source = ; close IN; } # priority for getting package name: # 1. GETTEXT_PACKAGE # 2. first argument of AC_INIT (with >= 2 arguments) # 3. first argument of AM_INIT_AUTOMAKE (with >= 2 argument) # /^AM_INIT_AUTOMAKE\([\s\[]*([^,\)\s\]]+)/m # the \s makes this not work, why? if ($conf_source =~ /^AM_INIT_AUTOMAKE\(([^,\)]+),([^,\)]+)/m) { ($name, $version) = ($1, $2); $name =~ s/[\[\]\s]//g; $version =~ s/[\[\]\s]//g; $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); } if ($conf_source =~ /^AC_INIT\(([^,\)]+),([^,\)]+)/m) { ($name, $version) = ($1, $2); $name =~ s/[\[\]\s]//g; $version =~ s/[\[\]\s]//g; $varhash{"PACKAGE_NAME"} = $name if (not $name =~ /\${?AC_PACKAGE_NAME}?/); $varhash{"PACKAGE"} = $name if (not $name =~ /\${?PACKAGE}?/); $varhash{"PACKAGE_VERSION"} = $version if (not $name =~ /\${?AC_PACKAGE_VERSION}?/); $varhash{"VERSION"} = $version if (not $name =~ /\${?VERSION}?/); } # \s makes this not work, why? $name = $1 if $conf_source =~ /^GETTEXT_PACKAGE=\[?([^\n\]]+)/m; # m4 macros AC_PACKAGE_NAME, AC_PACKAGE_VERSION etc. have same value # as corresponding $PACKAGE_NAME, $PACKAGE_VERSION etc. shell variables. $name =~ s/\bAC_PACKAGE_/\$PACKAGE_/g; $name = $domain if $domain; $name = SubstituteVariable ($name); $name =~ s/^["'](.*)["']$/$1/; return $name if $name; } sub FindPOTKeywords { my $keywords = "--keyword\=\_ --keyword\=N\_ --keyword\=U\_ --keyword\=Q\_"; my $varname = "XGETTEXT_OPTIONS"; my $make_source; { local (*IN); open (IN, "; close IN; } $keywords = $1 if $make_source =~ /^$varname[ ]*=\[?([^\n\]]+)/m; return $keywords; } sub FindMakevarsDomain { my $domain = ""; my $makevars_source; { local (*IN); open (IN, "; close IN; } $domain = $1 if $makevars_source =~ /^DOMAIN[ ]*=\[?([^\n\]\$]+)/m; $domain =~ s/^\s+//; $domain =~ s/\s+$//; return $domain; } sub FindMakevarsBugAddress { my $address = ""; my $makevars_source; { local (*IN); open (IN, "; close IN; } $address = $1 if $makevars_source =~ /^MSGID_BUGS_ADDRESS[ ]*=\[?([^\n\]\$]+)/m; $address =~ s/^\s+//; $address =~ s/\s+$//; return $address; } granule-1.4.0-7/pixmaps/0000777000076400007640000000000011056775357012033 500000000000000granule-1.4.0-7/pixmaps/Makefile.am0000644000076400007640000000253511040776310013767 00000000000000# $Id: Makefile.am,v 1.15 2008/07/21 03:04:40 vlg Exp $ # # src/pixmaps/Makefile.am # pixmapdir = $(pkg_datadir)/pixmaps pixmap_DATA = \ cardview_32x32.png \ copy_deck.png \ deckplayer_32x32.png \ deckview_32x32.png \ drawer_empty.png \ drawer_many.png \ drawer_one.png \ granule.png \ flip-card_72x72.png \ sched_green.png \ sched_grey.png \ sched_red.png \ sched_yellow.png \ scroll-up_72x72.png \ scroll-down_72x72.png \ speaker_24.png \ speaker_72x72.png \ text_addindex.png \ text_big.png \ text_block.png \ text_bold.png \ text_center.png \ text_color_background.png \ text_color_foreground.png \ text_color_hilight.png \ text_cut.png \ text_italic.png \ text_left.png \ text_monospaced.png \ text_normalize.png \ text_paste.png \ text_remove_tags.png \ text_right.png \ text_small.png \ text_subscript.png \ text_superscript.png \ text_underlined.png \ thumb-0-down.png \ thumb-1-bad-partial.png \ thumb-2-bad-recall.png \ thumb-3-difficult.png \ thumb-4-hesitant.png \ thumb-5-up.png \ thumb-0-down_72x72.png \ thumb-4-hesitant_72x72.png \ next-card_72x72.png \ show_control.png \ hide_control.png EXTRA_DIST = $(pixmap_DATA) granule-1.4.0-7/pixmaps/Makefile.in0000644000076400007640000003305411056772536014015 00000000000000# Makefile.in generated by automake 1.9.6 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # $Id: Makefile.am,v 1.15 2008/07/21 03:04:40 vlg Exp $ # # src/pixmaps/Makefile.am # srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = .. am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd INSTALL = @INSTALL@ install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = pixmaps DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(pixmapdir)" pixmapDATA_INSTALL = $(INSTALL_DATA) DATA = $(pixmap_DATA) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ ALL_LINGUAS = @ALL_LINGUAS@ AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_TRUE = @AMDEP_TRUE@ AMTAR = @AMTAR@ APP_RELEASE = @APP_RELEASE@ APP_SUBVERSION = @APP_SUBVERSION@ APP_VERSION = @APP_VERSION@ AR = @AR@ ASSA_CFLAGS = @ASSA_CFLAGS@ ASSA_LIBS = @ASSA_LIBS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CATALOGS = @CATALOGS@ CATOBJEXT = @CATOBJEXT@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DBUS_CFLAGS = @DBUS_CFLAGS@ DBUS_LIBS = @DBUS_LIBS@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO = @ECHO@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ F77 = @F77@ FFLAGS = @FFLAGS@ GCONF_CFLAGS = @GCONF_CFLAGS@ GCONF_LIBS = @GCONF_LIBS@ GETTEXT_PACKAGE = @GETTEXT_PACKAGE@ GMOFILES = @GMOFILES@ GMSGFMT = @GMSGFMT@ GTKMM_CFLAGS = @GTKMM_CFLAGS@ GTKMM_LIBS = @GTKMM_LIBS@ HILDON_CFLAGS = @HILDON_CFLAGS@ HILDON_LIBS = @HILDON_LIBS@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ INSTOBJEXT = @INSTOBJEXT@ INTLLIBS = @INTLLIBS@ INTLTOOL_CAVES_RULE = @INTLTOOL_CAVES_RULE@ INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@ INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@ INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@ INTLTOOL_ICONV = @INTLTOOL_ICONV@ INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@ INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@ INTLTOOL_MERGE = @INTLTOOL_MERGE@ INTLTOOL_MSGFMT = @INTLTOOL_MSGFMT@ INTLTOOL_MSGMERGE = @INTLTOOL_MSGMERGE@ INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@ INTLTOOL_PERL = @INTLTOOL_PERL@ INTLTOOL_PONG_RULE = @INTLTOOL_PONG_RULE@ INTLTOOL_PROP_RULE = @INTLTOOL_PROP_RULE@ INTLTOOL_SCHEMAS_RULE = @INTLTOOL_SCHEMAS_RULE@ INTLTOOL_SERVER_RULE = @INTLTOOL_SERVER_RULE@ INTLTOOL_SERVICE_RULE = @INTLTOOL_SERVICE_RULE@ INTLTOOL_SHEET_RULE = @INTLTOOL_SHEET_RULE@ INTLTOOL_SOUNDLIST_RULE = @INTLTOOL_SOUNDLIST_RULE@ INTLTOOL_THEME_RULE = @INTLTOOL_THEME_RULE@ INTLTOOL_UI_RULE = @INTLTOOL_UI_RULE@ INTLTOOL_UPDATE = @INTLTOOL_UPDATE@ INTLTOOL_XAM_RULE = @INTLTOOL_XAM_RULE@ INTLTOOL_XGETTEXT = @INTLTOOL_XGETTEXT@ INTLTOOL_XML_NOMERGE_RULE = @INTLTOOL_XML_NOMERGE_RULE@ INTLTOOL_XML_RULE = @INTLTOOL_XML_RULE@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAKEINFO = @MAKEINFO@ MKINSTALLDIRS = @MKINSTALLDIRS@ MSGFMT = @MSGFMT@ OBJEXT = @OBJEXT@ OSSO_CFLAGS = @OSSO_CFLAGS@ OSSO_LIBS = @OSSO_LIBS@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ POFILES = @POFILES@ POSUB = @POSUB@ PO_IN_DATADIR_FALSE = @PO_IN_DATADIR_FALSE@ PO_IN_DATADIR_TRUE = @PO_IN_DATADIR_TRUE@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ USE_DESKTOP_FALSE = @USE_DESKTOP_FALSE@ USE_DESKTOP_TRUE = @USE_DESKTOP_TRUE@ USE_HILDON_FALSE = @USE_HILDON_FALSE@ USE_HILDON_TRUE = @USE_HILDON_TRUE@ USE_NLS = @USE_NLS@ USE_PDA_FALSE = @USE_PDA_FALSE@ USE_PDA_TRUE = @USE_PDA_TRUE@ USE_WIN32_FALSE = @USE_WIN32_FALSE@ USE_WIN32_TRUE = @USE_WIN32_TRUE@ VERSION = @VERSION@ WIN32_EXTRA_LIBADD = @WIN32_EXTRA_LIBADD@ XGETTEXT = @XGETTEXT@ XMLCPP_CFLAGS = @XMLCPP_CFLAGS@ XMLCPP_LIBS = @XMLCPP_LIBS@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_CXX = @ac_ct_CXX@ ac_ct_F77 = @ac_ct_F77@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ ac_pt_PKG_CONFIG = @ac_pt_PKG_CONFIG@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ datadir = @datadir@ desktopentrydir = @desktopentrydir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ icon_26x26dir = @icon_26x26dir@ icon_34x34dir = @icon_34x34dir@ icon_40x40dir = @icon_40x40dir@ icon_50x50dir = @icon_50x50dir@ icon_scalabledir = @icon_scalabledir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pkg_datadir = @pkg_datadir@ pkg_xmldir = @pkg_xmldir@ prefix = @prefix@ program_transform_name = @program_transform_name@ runtime_datadir = @runtime_datadir@ runtime_root = @runtime_root@ runtime_xmldir = @runtime_xmldir@ sbindir = @sbindir@ serviceentrydir = @serviceentrydir@ sharedstatedir = @sharedstatedir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ pixmapdir = $(pkg_datadir)/pixmaps pixmap_DATA = \ cardview_32x32.png \ copy_deck.png \ deckplayer_32x32.png \ deckview_32x32.png \ drawer_empty.png \ drawer_many.png \ drawer_one.png \ granule.png \ flip-card_72x72.png \ sched_green.png \ sched_grey.png \ sched_red.png \ sched_yellow.png \ scroll-up_72x72.png \ scroll-down_72x72.png \ speaker_24.png \ speaker_72x72.png \ text_addindex.png \ text_big.png \ text_block.png \ text_bold.png \ text_center.png \ text_color_background.png \ text_color_foreground.png \ text_color_hilight.png \ text_cut.png \ text_italic.png \ text_left.png \ text_monospaced.png \ text_normalize.png \ text_paste.png \ text_remove_tags.png \ text_right.png \ text_small.png \ text_subscript.png \ text_superscript.png \ text_underlined.png \ thumb-0-down.png \ thumb-1-bad-partial.png \ thumb-2-bad-recall.png \ thumb-3-difficult.png \ thumb-4-hesitant.png \ thumb-5-up.png \ thumb-0-down_72x72.png \ thumb-4-hesitant_72x72.png \ next-card_72x72.png \ show_control.png \ hide_control.png EXTRA_DIST = $(pixmap_DATA) all: all-am .SUFFIXES: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu pixmaps/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu pixmaps/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool uninstall-info-am: install-pixmapDATA: $(pixmap_DATA) @$(NORMAL_INSTALL) test -z "$(pixmapdir)" || $(mkdir_p) "$(DESTDIR)$(pixmapdir)" @list='$(pixmap_DATA)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(pixmapDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pixmapdir)/$$f'"; \ $(pixmapDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pixmapdir)/$$f"; \ done uninstall-pixmapDATA: @$(NORMAL_UNINSTALL) @list='$(pixmap_DATA)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(pixmapdir)/$$f'"; \ rm -f "$(DESTDIR)$(pixmapdir)/$$f"; \ done tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ list='$(DISTFILES)'; for file in $$list; do \ case $$file in \ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ esac; \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ dir="/$$dir"; \ $(mkdir_p) "$(distdir)$$dir"; \ else \ dir=''; \ fi; \ if test -d $$d/$$file; then \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(pixmapdir)"; do \ test -z "$$dir" || $(mkdir_p) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-pixmapDATA install-exec-am: install-info: install-info-am install-man: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-info-am uninstall-pixmapDATA .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-exec install-exec-am \ install-info install-info-am install-man install-pixmapDATA \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am uninstall-info-am uninstall-pixmapDATA # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: granule-1.4.0-7/pixmaps/cardview_32x32.png0000644000076400007640000000202110141026342015066 00000000000000PNG  IHDR szzbKGD pHYs  tIME 71goIDATxNG]am/"L%KITG޵W}J"^@jełqjEdy̙3wf~_>1Z>sS =z W9Nf ƍco^:QqN@n>wcLoѢo1Z&IՈD 1lnn2 |a{{#zZ,HN4KG ^| $IB$lmmŻwj j+n6(p!AT^kMQx^A((9j\aшVƋ8WOkٞ@jY3=|J)^ `(FT%Ƙ'(,VNOO]._ݝUVEY|DIxnwYZR}JWW{pբ0Ŷ-P(: Niܺu S0>Gww7B8 w@_tNBprT8ȑ#D"v؁von[/_/_P[[7oޔV5}J%J0ۍ}UU A "lnn"J9y$BVWWML4Mfff$㑭8i d&8ph4 l!kkk~ϟs |Ӊ㑃߽{7a{L&S( %Yi@ @KK .ӧBC f,aJV0 `vv jjj, a*i׮]ǏI.544T0rHEQx'N3<,#/ض8:8#!MyNQصfo+666(4, !ۃmʲ[iEDy7[# 1^o[O@$<<Ʊ8 ,b8i݅o< ~)b۶,h5UU:YR +`<n,g>eܾrxvM4$im xwJZ˷hoNZgC]t븈×&\ QJ}\׽3@Q4M3]Eqyڠ8cskgyLU& Ns]f>ILC~}-K,Orp9PZ5RĿJyC$ADQdnsʹʲ[ibq+u Q߬0IENDB`granule-1.4.0-7/pixmaps/deckview_32x32.png0000644000076400007640000000272010141026342015071 00000000000000PNG  IHDR bKGD pHYs  ~tIME 91a]IDATxڭVAs6~IIْUXcvvƧ3'v{7[uvdY(Aqw#|H_x<*RHGN)-˲.ŋtI)9>s,˕q{F7v^YY̳|t3 Z88SJKSJʲBeٳVu sއa{F\!@ X9kmM1fZz=)=׆6 !SB\__#CO뿉11fwwws)c\Ƴl !sܢs AEQH)///8^]]:שJfZ{o|pt猱d>I(9s!1FJBXk?6\k+L&wﺽ.2r'B(Zxj֖8өuveβ,{o1f>/d}gʪo߾MӴle8,Y@k]+sk4󷝪@!RFR9" ɉu.~~^ce;;;!RPB>}zW͛7{_3l6,ɬc !o=۲%"cI\^]”Ut:'IRN3 wgO( A CD/NQkkk Q&Iby*S9ܹxhsEQlnnNS!DPkv:L<^c[^FHUUXgasDdz==Axya蜋8%g2D[D) ~9Tnoo}7-X!EE! %׷Ϳ%5(kڕ| sOIENDB`granule-1.4.0-7/pixmaps/drawer_empty.png0000644000076400007640000000415510443672165015154 00000000000000PNG  IHDR47CiEbKGD pHYs  tIME9.IDAThݚOǿ324"m&ȥq$F]W,ѥ°4ՠ$!BD4ALK;.~ {Ifљ3g~ ~fFT ,(~~|߿/v$@{z^;vL}H'N@ggge3 NP-8n_addF )000Df4rr*!e aa4Uw0͠( (BeMeKFGG<$I*;^nGMM V+z{{!B>?#19Á_6 ΝTTP(P(92y8,˰%֢ Cb٢:Ǐ$A$qȲȲ,jkk `$!fR?4 `ZɦjƩg! !EQ@4F#L&t:RDQ(·oN']D"lBX^^"I q8p8.M&l~=B?t:]+LBE$lhh`MH&( h楥%LNNM(a "8+{j(~ym̄"=Wށw21;;.cs%\d"FYXX`bbB (@< łjl6abbق@2@s ---nn7uuufjb20̈́a(~_̶\0_?.k..bl6k."xQxS62lF#nj![ YܹskKUڊ磾}iĉio.^~ߟHꢫ @K{=&ڃr [NvR^^W\v***Ep8L"h:˹9rp8p"2)҂NfN H!WWW/v;eee>|PS@ftt۷=v/x*n:% bE;wF$! H$)&xR?***p8 df'ʹ""6Muz)$2zr, F8&ǏSp:={ϧLMMk=͛~OZZ,*ѣG57zf0(--j"hp8jZJq: "@@6ONNp,+GʀbPѣm $rMeyrL&jjjFB@ɤ~XVN:ɓ'Eϋ/>( [[;1A`0ʟBn@-HUu6i7i 68qǏs?vn08~8ȲdB$  Y\\daaA񫫫X,}ݮ;vH$B"P!bvH^$Ir0 %0pXqdY&Hl9$nL V)VWW)--մgΜF B*L"l_<h42??۷or]Y&ߏ$I !%t:9`ȍ7 rP8F$k`}ᒯC^zrVx<2QC!ID"bIpN"ݻ<gϞi\v!,Duu%{IIf$ Uϟ?zyMBCn~~>%t:fJXL7o2::}kJyu:]Jbe۷o344דI B:wަ?7[;iɊ ׯ_B@Jb fӐ+J&$o[V;PIIIV~? or^7g-W^FS s`0ShooW?WO>!b|aoʘ 93 2ҧv:;;蠳3P:NT(ܘRS7Eь@@ϳ7L7gLV"(p}.xuwww^5滔d?˗&_/ ;c(r?u.IENDB`granule-1.4.0-7/pixmaps/drawer_one.png0000644000076400007640000000433110443672165014573 00000000000000PNG  IHDR47CiEbKGD pHYs  tIME:)$fIDAThݚ]L]3Җ~LiAiK!!/ȇ$1DMȾƬl̚x7f6{ٸzaty/5h)ID.iigV̜s8|9&Dolr0::`050/_իWT*L&DZW+=|jjRr~`mm*k Pcc#z{{a`)v0 P*PT`xPHA߿5 mF.VJBcc#XE*IppX^^*eJ1@NZ FD"@$\.\.^|/^_O<'J*p8p! EQjtH&y$IbuuKKKxXF+~I^)---ljEKKKRH$g# U(]2.N؎F#V+, f3wp\*'k f8N4 cyyZ!9!u,y6Fx|>q;RLQa$Wb s]eY,h4 J%E`0(κtiK{MXx҃>$ nޞCN盆xL&FVAH$` `{{>|lŋ`P,}>^/^~ vz*o۫a%\Hd^r444@׃ q0 X, & fSSS IpXR6w#kAssV+lxxH$kmEx۪RD{{;8hR/?z=Ν;gς$IB!,--Etuu矣_ AnY%}ރ5zYb1BBy|> P6OLL`||OŃhr"L)P5TfD"D"lmmasspQBa4E3g΀eYp'B#ŠZV,B&(jB.cwwWLMaFqxqE7\8̠Pm-K,CCClpEh4*p'\_*Bkord2IP\1aw 2:}ǃ7odjmryM,L&Mus~p3St@$!iE 5N'$[mUWJ(J"ys{A$#r.= } RǺi0 i4{Y1.Be` wj<{yRTT*5ZU!ą0 x0 2Ԁ *hJQC>e#x晿cǎD"t]^333$SSS.,//ۭVkjMC,+p=IP;\>`r|d2I<0 EZ<,,,t+Jjͻ;h440 skv' dY^VKI"h1T5шi>ib~9S ߯S4M'>F˲,XE.ò,,ꆜ(ضͳ>xNYHe1H:D*yx,k:CS'W0MH>"gdd={P((Ȳl u?2<"IU[aڈpݡv@auUD(y*ɤCgW`lT@UfJb9t]0 ~i>|GQ@?]}T@VBd%4ҵHgXeqdF(3bM K$ɤK// 0De `uuf !YK 'Jy)faֻ7*J:L}],Vyy Y}±ciE!ouO@i# D] TIVWLJoo^$д/YU}Tu}o0<ޗ`KfxM0 f8y[iU?F;::j`ULfV]30\(#Ͳk.v܉,]2$IIIx<ݛMIJ,vŁh64 2LLL033*R/h-iHd2*߾v}(~2 CCC]}߿NUVoaxض-h0e߾}!p]&&&cvvr/Ybie5yAM,-b~QFG- ?>jP|n~ѭz$( H@]fLFattMBP*vSSSNLi9zuFFBwswXLgttbE}OG[=QTQTUz< l.h۶e\.X wNyXYGC4122B?Vk#I_ `f:1ir_Z-aeeMu;vpA~m\p~4ha"FFZ+,dqY(w A$*JWN{*D!,s$ !-sn*E;4McϞ=R(&lJNȲI eWa^Q7*b+@Ad8|0 N9Q\,݆#ZRob]Ul fYKOOayavYo#:,..r9>C>fx`;Ci+d2L֗=+<Ο?ϻ˹sܕW?fկlA8Ȳ뺛$PKxZ/?5+/tf,;a211裏z$szgW_J';;Kom ׶nogtqIqԩ۶_k+?yU?kƩS x.ǽen7k8~8}*0o*77/8s'A+ N<ə3gׁ_ߤ&ϟG$2 XD"A<%~}_[oӧo/ޫA^XX._\|YeyyZ8ݢi7ѷF(or ccc9sbK_[~D$IbT*L&a,ˊu,Lt:a[%T*t].[]… |'KZ-!πoc8,Bq'8.`,˃xH$ HDb1G__b|>=E]$v=!.]bll>l^B>nGN` HD"BEbT?]@$ի8qgUWqsΓz?=j(;"ȰE1M3oYܹT쬥9q~ڿaj;l;!;֔AYW%IڟJR\N,|08{, mῷ+lx,R;L E-aEQ%TUemml6 !o ɥ{P :$) }d jQJIENDB`granule-1.4.0-7/pixmaps/flip-card_72x72.png0000644000076400007640000001434611036650606015162 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  ~tIME !53fIDATx՜ȕ7\j#V ?ҋMXK.HDfeU84)'2QLw[P<* Fp}or2>gnrx(ύm @]L.Cu'$D,)s<agN 5Cm4e@w{` XP :΢H(×QW:#H+Bx=L} $s88X 'nzn:wL܃A\2N" à?>IQ\0pf-lgb3 3;F@JbѤsG>}$_'ӼG9gϗvo`jff y}+z }FOSV`bTL?O б&T敼"*`l# ρq(4؉|i6X#V[й:6 r'Nދzj{OnQ@zjv?='sjݕ 1jD:f4$GOQbPJ5wS0>hZ'Q Sffa;أ,my"[y`ȏǀt;L>5n=T 6D]Ӌ^(Ul C#k btȟiq~z֙j7c\iS1sp rGA{`DHxg7)eCpt}A-Y 4TDY+[:)ctq;gQSTt:>˔;2|j~.ad΅k]W>K/_YhN'kF]~,GvLC+x _U8u .|piby`&Oî1ΉFIBEi=^}baKKqOu/_>^K[Ra{f?2ˌla:> UnG%2LOsK Zd%3w{]:d>iR2~'BXbfdMX65L..NE |.lDY>=Ьᒊ,s r9e,8Y=՞lFN)'f%e BnŽUۚmkO\fL9&33hV`&vId)sid%^.E\ٔ8ec&=aO<0h#^ ہv$&'mC` cэG>u6cEmp0ǨMLJ1yw%Fl`GHMa\*elG28§yC`c;D 9ZsSBɚ' *FJ#iЛ}.M*2!D5}|f7OELٮttGzƪ6=c"ym6dMvgn:nq_:nv aá)%֕\G5q(A)[Ujҭ=(΢m+k|ps&<"YرS.kcz4{-S'[ƙ{;`T:LI){:3,z6{XgY GĉCcb߅ 8L:e W盕b~;`'4GFAYi#8OXcF{z3 g`{lf4TQ3tk؀#O?>X _W䕙]Ag0:fn-9R=BgSS,NYs!4e=Z2 S#%*^ k/*MʸѬQcV51+ゑ%[vg!OC"K8ܔ2UA4$v͌ʄ@pp-=I<)UgYsp,U}U՗բZT*y9ǰ;@~t^^>P*>=pq9k.!Y,XH#SH~حpSLJosU6eNc3̬%$2"M1CXc悜ux^UWMmeU& w.sޡ2l^U7iH~;-p'N1h[j1t|-;`0* C/(H<8p8p+OXB6:I Ow=۝mnlz-}ʲiyZ-MQnhcrX v, 072Jo'ppf4s>x>; 1cI/(pE2m%9o>VTDqA2y7m_ov쮻n&x7@>qF$ѱ+=-eej=^[#0.N!q$MV K.Y1xB5M5ͨkeEheJ퍴N=ݛMvz6w[j/{ xc`wdj4HSIJ'MrVtAC?I,Cf\>'Pi ڢ&11]b|?ҿұvݞf7wm;M"ȇUOEx=ƞx;lzZ NI;200ENTM&f' n^dU;0gugwfguN6ҟK_c)I?g=Q!#t "1.Y2>'إt3ލwyEk+΍mm8FЛ2%&wqÖhYڥ/@1(&\&Ӈ3L$sp!L^N%du"ML-@ݥ}Zۼ˯s_"oJfǘ>eZJ(==h1ゑCp9sf&֙Xmy'%-^ǛÙd1Ibt`fvgj&kz,Mnly7y׽~'F;Æ[VRΌ$I.X)lyAdɌڢ&VKJzvg,w3'agι$&YdLmk֖^|t.:uѵz{Hׅ9f88’(#'/r=gK9i@cj1U՝&H眊$ $mmgl>o}ڤ;-{PnN ;ޞ~ܪL=W.+f j^"rA JD\LZFx\ "B'coj=̖̽e{kzev;a_Ǡ5w|_Rttj],Uɩ6&k!G?eV /Ō]Wg,Uimu -IENDB`granule-1.4.0-7/pixmaps/sched_green.png0000644000076400007640000000036210443672165014714 00000000000000PNG  IHDRabKGD pHYs  tIME;9lIDAT8cdg$$K#N}4 ê* C5Nex+.F1 O3c^)۩(bL0ۍOՌl31PF @KKZ@MUg3~~Ff&ed&3,^IENDB`granule-1.4.0-7/pixmaps/sched_grey.png0000644000076400007640000000036610443672165014566 00000000000000PNG  IHDRabKGD pHYs  tIME;|IDAT8 0 D/]!{8%"u3ZM+/E`O,r"'tIr1t2wtmN%@H{0 cUb*rLyƫ-LCIENDB`granule-1.4.0-7/pixmaps/sched_red.png0000644000076400007640000000036210443672166014367 00000000000000PNG  IHDRabKGD pHYs  tIME;!3^IDAT8cdg$$K#N}4b Ū+j C5gOg`j D1 O3(yt1&BjF6ɋ(Bш%-ß3n{Mf&ed&3*ۥ"IENDB`granule-1.4.0-7/pixmaps/sched_yellow.png0000644000076400007640000000036210443672166015130 00000000000000PNG  IHDRabKGD pHYs  tIME;1. IDAT8cdg$$K#N}4/_ŽUWdO C59ɠƌՀ[2X|G1 O33Ù(bL0ۗ/aǫ$/gbE#L,3ܺXMTLdeg~>+YIENDB`granule-1.4.0-7/pixmaps/scroll-up_72x72.png0000644000076400007640000000565311036650606015242 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  tIME 5 +IDATx[[$UΩSLew_P1B[4Q 5FJD|0(&_ecD.@ 1;=}ﺟ߇SU].wf+K,}i<|->&9}J,@;mR- nVj4=<#c {|[ؾ~z9{Li4:z !E1z[{CcAok -6 55EvmpAZv0wesalǂe0m!8L%tSey.Im 7P nlF40β` D'b2a:Ǻvo`{k/j56VVxo?=J *~w# [5x8;Mlm ǵQoz7kpj6L~@sepk0Mh7^w79۱ls8tS?=JyW3x꡿Q>ƣ F #dw}qv7hevF m´  ]@88@٠26 DHQ cAbs["[z>Ѫh`&.5Ɣ91Q+%@D Ixd*G ?7-.!l)_"۱5jhhڄרw]TG"B%bQaz:'~8 cls\yaTV81z.F ^ͪ͘1XYlwƶK4.l^) B؎`rӚ$ӏPbĉ+|O9 SGơU:o]_ e7PD{Vp\…A4p3a?ylv0ARJt*aa2d1ӱ.SNϼFr=*:na@+j)ѝNj,&ƦEJʺx lc4_}-Dnv2j7hzp=w۱+/D"%Y@8WipYj1+c |僷ӭ?~:7<85]CJB%HB#23M&}*i!M @<aI2!9t] 5t]9 7Ӡ?OPzUo=ɲ-]N$ 3h(r$J-.yP$B샔 0GL> D%$«_@HA4zT_sH50E1,ۂM&Ӵ0V+oj\n}\c$N&2je;H۾k);9lfA4XJpu8&,g I"#a44ԡ*D&6{xM?pm !4Pus'QҺ f=# *<]ە]Ci Cđr Pg9ZJQ1L+I/if"͹Y\$ ERJeB=VQ9@y\GUf9Hb }&WC{)0I+qPATv<1ͩ.H)A)UgaX)+l*TsŦ&ư;h&"ʞ> 7_dAWnRVbp3A3]]4mY=U֚%JZSϾM5،'+WC%17Z˷wɶ%?ˠA5mDŽfVITz=Yf;qTcA iR!ۅ &1CՎ .@Dt.oCEbt)UMh`4keI.`, yӮVʧijg!4w4I mrLٲZ]\UeSP͚YC TJhC7tCA=ADj!\Q0bjҌA!% (U^BraO]P_8F0 QAj202'@OF/@q~w?iЄdP}TCq$Ib+gDּ>;p Jm2k$WݭG' /Ē8/DQ`9g(?4M|4(oߥ06%Tsc+8$dZ H^+ӎ1IENDB`granule-1.4.0-7/pixmaps/scroll-down_72x72.png0000644000076400007640000000565411036650606015566 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  tIME CCI ,IDATx\Y$UR[ 1&/Jg4N(Q"-*QQ%`&$jD$E&9ܹ/Uup/1K;Moߪ ]{d Zo":}08g s0 5.ABT.u[9/ 8@Sp+޲1s!8B@&Sdf+}, c 60Z<IO Dj0 APQn%Z$q8F<)T$1HORDkƮ0 k-lN1ibf SٲXjf؍=-Tj%X"r7 &aԅ4q^ *f ֛+;k 6 K`AJ.x:Je|oɢ#iϓ}~$1\`C‚4I)\lQl.!ra̅h>7ښ'ۻu=݅T\P \|[u d^t1`yflL8I:S ;e9>o9s|~Dт}iAt[jۡc @+VZhj\ *~`+N_U@c+;k^v i6i9Onrau A4Ė܂XR|=ߜ?؜)8 umi]4\ !6L9 0O{l|lfqђX,lbg"Z buWgTlQ:ŸX_̀ft1 2l m{:*UQnAf R)c{!lRXP=Dl Pd.!cڜi֧J%!i)E)-Te*|k,PaASB߸PnhYig*-.A'T"aϓNJ䬅r)8h?<1'n}w1N38*anĝ ?[ғ|鴂B%fCK~-p_SYy KȒ *Nk,C~ =0Π o9X%*cn"m,Ȕ46֔z쭣][G٭!9GZU#)cC1޼+HO,Ag-t$vpI K"ЙVe̹Jk4Q ƣ &D8w*aZZ 4[ TNټ:~gg"63J%S'!} KO 0{WiN}k FTa<`4 MR<3_j4X۽ F `O`L#SXh+W3;^׶֖ ZdRtf=r^qA;JQ%tT֨ZR|^7HgY!KTAY9k}rp ) ~ }x95>W₩< F F11&$]a=: j-BcWJe 2װwz @I@4:\6RǴocsN&)bKi(>t>/|.G)\kvX@ *ɐ.DZsIar,,k~9tcC%5JfEsLy[Row_2/"BB\WrG}4*IENDB`granule-1.4.0-7/pixmaps/speaker_72x72.png0000644000076400007640000000671611036650606014755 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  tIME %lW NIDATxKsyӷqB"0E0 b'JS.;^JdEJW%&,rJ %Y$єH4/A9'Wk̜9n6 l`6tSr _?{;' Sqf \yG  /R_ =/g5$s~ \29:sxk|@*@r 8 Xm4֮6eYgO3C  >>4hGtݿ=vlk7.TCg'i:lh3$W`f"' ߒ|]Ɲ~!{Q,Vy󼳮i@Z*(ϱ-yaL*cg7Eළmw ڏZ_Vteе[+u{ʵ/nnhmjג$7M$:( EV{rqDfa!UX}aZ$w}ѯ<)AUkhA6t_3S*Cpo/{=<RN\3EH9ߺ8Ik 70;@F|kak횵{f'XI2yݧ빳F߮TkGViE1pkz(V%<)l9~f8 ,P ,b4j<=DV Ԅy7.R@)uqSRWW_o߄ccSojZk ǎE1ݺKTu]B)D5rY#ɑ>*0)PWE=HϨhq]_< @iaqaE&l)Uzsu7FǡT#3>1G$RE9z(`-AI)]ڑ%ߕcRnD *|LbOdvkPFKu8dzf%MS*+<5c/,x(sGfhx9X,V:l4}蒬t3{~| i/[&Ņ9(:C<SS3L̪r) ז0||06>ѥ-399Eux gygmnA)dةhd^(@6$IɳNhs$6|NŅ9(xj.!:y"ZÃ[WR9Xuwvx8JK%c{tz$fT+"Y)4]̯?˶ϳXx7S/vvv/|767!<67Omcy~C.Ov"j>OnCvm5=We|$2 dxYl]|FiywfvfƁm@IRvP:zm6J%fff~_[bYew}qx#H^Ávb$J)x{MӴ7K݇ܰCgZ2D"lll011V_4^Y__'˅0i¶fssJI<0|mAqfXZZbwwk?NsxxH:H HT+r, 1 C%IX۶%Jux'ak 6ȃ\.GVcvv}u988`ee%ޢ Dl6sssm>L;0"u\.KRj*|^!emR\9;;u<}_nnn^K˲B7{{{R)hd2;+>=K/}QZ}P{[cу!'@* _^^_\\|#Hl6i/z28Z5lM!|T?elx"4>pzN=?5\2lIENDB`granule-1.4.0-7/pixmaps/text_big.png0000644000076400007640000000137010336007236014243 00000000000000PNG  IHDRw=bKGDIDATxڭKp?:, N`L^=  +zE[=MOn)N3m&M~mL۩ }~F@'k@pV$qnooF?o@Qihw^0dYὰ4*_.HYJ:r||܆K$ښm :I2 266F:n~___GUUTUeuu՗@J%O&xAI& 6ݲ,"' +NNN㬬`&%$}Fdy)J@(j\.דS...b8b1\mkval5a\Nykfgga4MQ.eY¶m *4F]e677e2fLMMʣ,Q(DPtZPEQ*0 qyy)E[[[̫ժjB6UJdnnΓ]$aiiݮK3hmcv\. SH3R}ߧZ 4@L4:Φ233DbP٦R%zR0??lY*X $qq]׉KT>qj/A2"BxN<QJpmmh;&bpzzudX(( ꊓ 1> YA VEٌ \%h4])nnnm|`zz[4M+BMցˡ):88yTU%NuXE,˒'jblnnNܶqq]W<ϓN~m[ 0BdR# r`{{fI²,lۦX,F}gooo-v-iJѐŲ,m[8#٬HەPz(<-͉u2z1Ph<UU:ggg?Ho8E3Q>S(TK4G , x xJ/)>WslmIIENDB`granule-1.4.0-7/pixmaps/text_center.png0000644000076400007640000000026210336007236014761 00000000000000PNG  IHDR%=m"gAMA aPLTEU~tRNS@6:bKGDH pHYs  d_tIME ;$IDATxc` R>6_ MIENDB`granule-1.4.0-7/pixmaps/text_color_background.png0000644000076400007640000000160410336007236017017 00000000000000PNG  IHDRw=gAMA abKGD pHYs  ~tIME ^WIDATxڭKlLQ߹NgNg%" VDXHbeAƪKI !a!% QFm^ՠ6vig9sL$sϙ^B"O2D*Ox'y b?7@<sPu0Nx "|9 ͷϟ p(JGbL-;F1J$X=sQpDh @S=Ut0PJ+Q)AZ-M)`';eoX,JH^=dt$_mTFmlQkL/ @{?}V!@WG;]?~\7XI.i9Kph5/Ɗu[Y^Y)Qbgrx`-;)Q%=p[w@ц _孔MEie D",\Z@[6xRvs%|LW;¡a)i( }ਖ83`\oEA%SvGyY@kjCµ<ɯ|jkfٚ^@9PfZj Vj+3TJؼk<}XgA cMym}~JZ/^Y̌Ydah? l/=h}. :×@`l:phe8=>x08o_Q ep?A`0Uy 0Ӻ\iZCo?! rf01#@Ge'LIw@~IENDB`granule-1.4.0-7/pixmaps/text_color_foreground.png0000644000076400007640000000143310336007236017052 00000000000000PNG  IHDRw=gAMA abKGDC pHYs  ~tIME 9&IDATxڭKaHW[QlAIuUWADAAPtUWэ}QJ* ǎ3EøCz099s^PtmN(PtLOOrM=uY<s.,j(ꩪ,/#0 3$IE~pSz%ceYKv30B:]!@eN^YMF_, n&h?XvS M[^)Z$@NƧ~2 )2a?\PR uQK&{NvG )|0O7rm`n>3l{G |0mg#T#ֆ? @eE'Hi4yyYM=֒)yHAwn^56PQxU_ /ƇO!x|?AKz-0<63$FH&|n6qpӿC~lڒl<̾=I[@:ԲŖ HMM `BD"4MCQ7k)X,F(ts<Ɲ̀[y'Pkn!ٔmX%a)@Y4` DϘ%_pIENDB`granule-1.4.0-7/pixmaps/text_color_hilight.png0000644000076400007640000000145110336007236016330 00000000000000PNG  IHDRw=gAMA abKGD pHYs  ~tIME VuIDATxڭMkSQs $ҍb6p( (µ RV*ZB VȢD-Cj1Ml&ir\{&M3{N2m@[ZZֳT*B(T*"JUNF x޺!r]RJD6 ̹% ÃqX YuhKP O`ЍZht't0٨xT'$@>_MvndG<'O_mD@`_afN=V(4i=I@~NSڜ ;`# csZZG_ ?57 F4 :vnػޅD:~`5=:b$o@ lsS;[ n5qDRa H.­y@JM0V=\1)L717V <Ɲ@d2|xS˲,Ǐ3>>|me[X^^K.qq8KKK8qׯc&i6p:dYJKKdjj3g011S8{,455144DQQi~{^xRA cǴܹs \.eR)+ Bnp]#4pH݇>0ΚV())… S__ar9***zЀdx3UIv] 4BIݿn|>VVVl6d2)˲ u޽)&''FŔdtetPOD?Hntuu122Dz,9|0մY{Xf_mZ[[S.S.ӳ ڳg*++ب+-1:}s}X~,Fs ۶Kl6a]zUuuuGh}mUD􋉾[ضB[oסh3m+\ip^u/l%MO AջPc9܅33 xm#'>m=IB-% /AGt|(ۆbB{0$!w6ڑwoVѱ>蝧)i o49j 6IENDB`granule-1.4.0-7/pixmaps/text_italic.png0000644000076400007640000000124410336007236014747 00000000000000PNG  IHDRw=bKGDYIDATxڭjQVHZn B) >AC˸dS\č@!ne%K>Tf,H֌ݨ%0ý~\x\go{ pqssr1 !eYA0_Z-Zyn/ \xb|UU|rzj+U@yɫHp:\__#U$R\.G4t>䄝bjTy X=|>ߴv$),S<GGG!888Z.Ul6KR!M0 nkKNC:sxx8]4 `S[^/jBW0 2 pvib&vUUuݶn f7&T~O"X8ErK" ")%RJE!L"x>k u}ao@^Gߪ-͉O@ETKIXH+c?lR,ʀ58Kkx < `՘Li ܋OӔ,ݢ_BIENDB`granule-1.4.0-7/pixmaps/text_left.png0000644000076400007640000000026110336007236014432 00000000000000PNG  IHDR%=m"gAMA aPLTEU~tRNS@6:bKGDH pHYs  d_tIME ;UIDATxc``>6IENDB`granule-1.4.0-7/pixmaps/text_monospaced.png0000644000076400007640000000076410336007236015640 00000000000000PNG  IHDRw=bKGDIDATxڭjPI֕C(hP+= Y\Kc h79!jvf;yns@MVERDw Ðlp8|ovnl\vl-i_iT꺮.dxx]$yuSL )%t:mۈ*`Fu.`>"S#q 8c in3M,$`y^"eY8f y4 {೴e_WvQ@> ZQk (9Al3^/wRvInrṿ;* !l6G"x\f2L05Պx  x=N~;%rnV_G"0hDdgԓ->HNHM)a#IENDB`granule-1.4.0-7/pixmaps/text_normalize.png0000644000076400007640000000041410545756451015514 00000000000000PNG  IHDRw=bKGDIDATxc`@gYL 4Tv9V ޺j.AĂafff````#ѣGpN)eXա8Ot-]ógψ; uFŋ/^_ 9eb1CN ޼yCrj!r a PTëd GsO_IENDB`granule-1.4.0-7/pixmaps/text_paste.png0000644000076400007640000000157510401573420014621 00000000000000PNG  IHDRw=sBIT|d4IDATx͕]K#gLXҘk^-Fp^~] WMw)j-D\MR1BӋI4Yz03py7˒x`P }aa!<<<NL]gKKKvwwsqq,..^$d4;r{{[9)zʊ79$#|9 U|Ҋ#Ɏ=k\.G `cc0K&M)[$Wy !t}5m!B4"uԿ^)^/Litv]p~᣷G %XoO9y7oil Niz׻~N<Gq# ׷T(rc@`TEl6[DaY### 6%,o*kZLU- PJ3(+!:uFGG k%@@_ PV011QW|UmgP,Bހ@ vww9;;CA4%LbY~>2 Dž[ @ *m{*5 >zdL&sߏeYrӯܢ馽| R@ imH$roIqI8vQ][VlGGGR).Rxd,Jue+KRruuU.//`0(u-J@e:xARQ <b O46IENDB`granule-1.4.0-7/pixmaps/text_remove_tags.png0000644000076400007640000000137710400451250016013 00000000000000PNG  IHDRw= pHYs  ~IDATxMHTQG' B$‚A)D~ JE_%N1gW1$QICLDMΠfq PB Qyӛ w{;ޮdRH$B0-1d2I ,{uյ/Fob ~n鍐Z] >2W2>.FDkM.ڎo?ix6@D/e^ \r:i J |2T"+奓N{~\, 1ҍZތG&{ P昪_e/ߋg~~|,UU6?u枡,۲,M$:ppہ(X0pkX'}|~("NsR\LTNU+rTunHpf<ZEdܓF!Ѹ`!ĕ=Wf@$8""vfT5Y Olz " NCAu4)n/+=㡶"U1L"*wAli K46ouc]Ϸ0+)ZKfZCa5 .:nypV,.tVVL㪩NۨD"Qu[1Y%T*(~`0@K;8_,IENDB`granule-1.4.0-7/pixmaps/text_right.png0000644000076400007640000000026210336007236014616 00000000000000PNG  IHDR%=m"gAMA aPLTEU~tRNS@6:bKGDH pHYs  d_tIME ; [#IDATxc` >6~ݸIENDB`granule-1.4.0-7/pixmaps/text_small.png0000644000076400007640000000112510336007236014610 00000000000000PNG  IHDRw=bKGD IDATxڭ=Qս1 XJ BbE,lh\"~*be`Wz1*ޛa0{f{`s#܏IN~ `:DJGl4MCӴ1up8 p8f+K/ O3q8d+kڇiȐf|>^/L<;rJZ=N`'GX$ nwgJUUjG%zq$BpN~w !|>ObXضIw/E.rH$'u#efaFQj" h4_.ώDfX,Fۥ4htt-Ȫ-2tY*T*'!MXI$[Up{P]Bb`^_[L&|^/@0"l6| srÝx\ hn!KЁ/ v<7ɜ\ LHWfNDzzIENDB`granule-1.4.0-7/pixmaps/text_subscript.png0000644000076400007640000000162710400451250015514 00000000000000PNG  IHDRw=^IDATxMhGȲ#9U#`'*R!vm1u^l T=Jߍ zqR-.71Ә]cҀb\BJzFIܪ4~̼**BeݐNRJ܊&4mLQȲx lyլ]7PDDBD)NJ➮Uq@B 5MDj.+mJ9kYV1&rL|a (ٶm% J%( =q`ffRmۡ9n?F9w\ CXZ_ IҍL0M4a||0,//"I Y:d"VeqqqiB@$mˣg2̪8X0Hd__ߍOw._ %-$q goL|5Lۿ/--=t044f1ئB4|u;o+kOlCtiT*Ή_cA?tps^&"1;;kRJuH,JΕw> #;s:JdVoi診0 C>8809竖e82ɾ!qţ? HRZhooZ/BD(?v=J Foo>N& {ΣVvUO%/_h7ɗZZHܗ=-÷ _s\!hms]o^:h@"@UU\Z2J)!V,qwwiJ) jO:IENDB`granule-1.4.0-7/pixmaps/text_superscript.png0000644000076400007640000000166210400451250016060 00000000000000PNG  IHDRw=yIDATx]h[eƟ~D&[,XPKRHwњ Y Gw^s!)h/5^yA Β҂WDhlR T!q=Mr//&\>D"Hh$I$IBH$kPU5Dd\.B+,%06jԧ{Z!90a|3dzVy݆n~6TCƸ)xδDo[ -^07I:GV`i`H2_95=#pXNzj`ps9t]h\,˖eB@)E<}9<%|c~5! cLbIAssH)RJڗ*~7^s[.j61B)-rmҎhmm-Bb__I;?jo8{Workک3*ŦdB=Ƙ1 o.1Ɔȟ*n8.?e:WN@[[+ 599J)szN[:S+QfSfi6JsYk^^PS/@ 4 sͭM?(yX^BxSTP(lFPV(:Y?922+J8L$ ]WF#b{{_E% !JVUBlrjcBlJşN?.J9Eh4dkR},1cv'-K_v4IL&qߏ^ߐdxU !@UUш`~\www&j5IENDB`granule-1.4.0-7/pixmaps/text_underlined.png0000644000076400007640000000134710336007236015637 00000000000000PNG  IHDRw=bKGDIDATxڭMKQNnl.\b .\(NYE)[\-:ąnD BW E53qI˜Ɉp; ˀx!|^,|SU($IJn~ \. 0s ÐL&+Ȳ{! r9VEO(idYfff( Ǧ[$WWWQIrnWD  aݵnaHXddd~3M+++]M!J~qzzJTbbb'L 4טeYXmĪ虢j>q,lnnR;H%pkk ݖmb8Z ]ׅb||\J"lZMߋz.K)y}_A 0lu[:Inj PA Le'UE˲byJs#Ͷϋ <#Jv^9 h(=gr |T1)o-9|RA!<hRĞVU՟IENDB`granule-1.4.0-7/pixmaps/thumb-0-down.png0000644000076400007640000000271411014173124014654 00000000000000PNG  IHDRw=bKGD pHYs  tIME =K.YIDATHǵ[l[Ussb'nM)Pɔ(e!` BB@*< !*#(Tx---q pIڐiܚi&NmvjǷc{@2F}_{}ʁZz`brֹnY&OLFȥ~A aSc}ld PD4mH&3x#{d\& nb-͚\ԊW":ZnO\Qbs1M3$yq:윝PdB"9 Inؘ1JM UhV]ilpݟet2B:c{p۩t4PZI mKRfL*YŪZHs$%9ok{;8=98N OfhE_VQ 24]SPT&p[zOOV29>1+b*ߎB9>8f*dQ OLsdɒmSf-NPS?Bp:fp:lc'W Œ0AgLDIrbîwu {?wx+88 tUEF/"_Igp#8Ή+CjĿCݲ*S._h5~辔wq!M?@mMH!9e3/kAM+$-w*^ =lm2Oro8/~$ǢtlYSt`:X,=oXI" @%`ߡE$6]IENDB`granule-1.4.0-7/pixmaps/thumb-1-bad-partial.png0000644000076400007640000000307311013200710016054 00000000000000PNG  IHDRw=sRGBbKGD pHYs  tIME8Ǔ:IDATHǝo[7EjH%K!e'N6@4AE7m7EE'_l$H&mܸ-DZ˖-Y@QQ|o 'pܸͽ9߹H@⋣hXӷmtúا_^̨/_̙3{^ !2OwkE[TC{L>>ޜVW!q+qm^-FrܺHۯE3KMm7"񛷦Ց"ixLTn5p]BfFHٙi,ჿ^{ٝ&|cʩwfťrmLJ`R#:^^7pŵV[ ~߿== ]q۲^NĠ+ {f6XY [;+ qb|#cC}#餳Y/'t}?)w_ɅBj=QN\[WM ځFvhoc^2\0+:1NJ0mT6/8z" #oct4 ܾ3B!P3C*cL#Fc,4dA@3mZݯkƪy䞴b ^{Q^g:'_Av/_Yk- !@dN9)aWz\ZSq35z1^*օ3Hg΄'/[ZtxյDcb2s:Ǩ[ڌF%GV3$Ѵ)1{(#"ar[O_S$6\ @ݥa]k{j(d¸KdH4/\j"+yֈ߭ SuaCHfŨMrZӨ[Kq5ǾBtrmݫS鴙?V$Vxb -FXXԢ7R(6AK뎃GOg5dF}?`4iT&ʻh J<";~0=>xBdnAp^Xw65>r F !ic_Ց;cqC,eX)@FV1MLgP **GR*Zؕz E$3iHFܐj8u} F`8]#&W1FZO.QvJ7*SF_; M~9-]5}Ir?%WgTߢ]ݢgԮ5F<ĩe-*'_78ڮ'~U3!~,Y+-g0 OL)&m\pLzf ޿5#ao8>``o| :fʥ./#1@L>XOGo]Xvf4YSj!-Qwc,cY_{qsgjYT~IENDB`granule-1.4.0-7/pixmaps/thumb-3-difficult.png0000644000076400007640000000270211013200714015651 00000000000000PNG  IHDRw=sRGBbKGD pHYs  tIME BIDATHǭYl`:=/5Zc((4JJI^UHQ(WI#JMTQD-@  a fz'36af}On,ԋ!ttދ>QY]F@S) hlB 2<+}d4fS}*۟/Rʷy.*уCD{'$8 ) V_ t5?uQ5{Q4r fCfU>:W۶C4MBhj7PhҥuOGS;ݣE)(S`?v(7/H>UU^ DW>F?t)Y?ٽܹc9EdCAk̴W)?ׇ%Z'}+A20U.">X&yl&K7&@ 몛_<¹D<eCcs 5PH s7TU،tVaj,ϟ?4Խg` - H}n`6[y0rb)m v?.fسe:~`Ǻ2KVӴI25A&nN.no._{ wsdo79XG48r,M_OaZuݸ& X8W;ur\ wwѧì5 x 5- g 9K"u9os vŲ<&b.kvظlS([J4( |Enc.Gv@8 t";w3ע?M' 9h[tVD-y'*XdhA1"X_E!4k|n*}>yK:c"TR$Z 6E"Iq#n]xz'3ӬՊt4VZbvb1*FC_.9Wg}HK㋙'ԚŸ6m`8M20Pq/8ghf!0*+Q X*Όe. G\ ipWA) Z\߁p\9#aScj |Wφb6C4HbD޿g$PZ;uN(˺$;+;oN=Ҝ2EF#-Dz}.&P)! _d)zd!Ws/2ՙ^lN0#S̹XyFK&Wõx'%ʁ}ZuZ$,ˡcy/! VFgE*ʨ,$W,Ia`Y 4!U2G~ATarIENDB`granule-1.4.0-7/pixmaps/thumb-4-hesitant.png0000644000076400007640000000054011013200714015516 00000000000000PNG  IHDRw=bKGD pHYs  tIME-IDATHU |,kdB2+x]Rpt`PO2*/,޼]L)I$Q6Y6)WW#r)V[TYfh"Kۼ_E0Go?|^ )4 ]*љD"Oz@[8NG$B{VQW\КdAebL\Gh2qأo)W e4d*IENDB`granule-1.4.0-7/pixmaps/thumb-5-up.png0000644000076400007640000000276111013200715014334 00000000000000PNG  IHDRw=sRGBbKGD pHYs  tIME qIDATHǥISo깡inA $HlC]\‹,I%Wde\,lEؖll AHmh蹛oYX$$oխ:{}Ͻ ( ~ry }"g5UypN IjmQ) hTC= G<ڗ;`ݰ"P>~:HM>9+O!o"ͯf y''hLJ Ypn >\}zs;MTU1wp  ]{Krםb3UJ冈@33NNz,662,kZK0q_ӫ@70 B,_LIPڿE` xrhk .$ӏnevl[xBP` .l'/UYK5{1`ۆ-_U7b=]Tܱ؉H{4/u>szIcPѡVD5 ;ln,AA Ȳ gϜt~顈Jn[l\wװ USr $scd Um\ɑq^I2"TCU56s\7n-4.[N^8a5U˧KMR@DFx>lI*"葹,roG(aX $ADJ$ wh-OqalN^xHןdvfAnkOSe \ݡ43KPD{ڰM<,?^JMq:QT [k#ut+U UN&]-wB*Sʵܼ_}Ic8sO {q*2meeݝ(,G~n7B 2>%ߥlҨlK`6Zl r)bstjv\.Y{Yo®y`$3Piy<\MTLVNCP@T ƯW>4pɑqŧ̹`+Ʌ8vT Qh [&(6\\'ZM|Q4EQǖ7./P5E'jt<̯XV8Pv \O \YiBA?V@DeJzO>.s Z,% 6m~<چ^kżfR5"{N0$S'Fy~=:ګɛ8w>4jF^TUK ௒Ė{ZD*vFу]^y3˻TEXB|7Zq2fIENDB`granule-1.4.0-7/pixmaps/thumb-0-down_72x72.png0000644000076400007640000002050311036650606015532 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  tIME "#k IDATxݜW$ٕ+\{crh*.\8T6ȩY)BDc(4B[TFEzF~sC9&# pt|< p DȥPyFihG0XU_=~7*##)1՟z|BH)) ė|<>JE x <3) (LdEx'*N#'yg"4I9 Vš`1x"s;|t|XއIH|^B^LdZ$OI:)!¡U cL ;gPρe}|GK)%T@8 E3q,DrY\,'l:>Վ@i{3ibxCπeGx?w PtyYdƻG%WR<$*VkV|@IBtFކ!R"ZdD^O#fQbggL P!RvIq8rdu;Vu˾.!v|_1ZI|rq|/V|op̄X IX Q&"gl\xdYy*4XiC@Y,R,2). Y(3@a^J$&v6s m7ض\]sr3;N_S?Y Hv.BҞ"gBU(bGLYQd AU=z7HH$E"H0.V$|!SW lwwջ;ڿ =Q}?H@%𿀿#?7"dD:_y*.$/'X\N5/S4C%Ff՞~y]xr\o=uc(〖hq>`;۽ A6O9DiJ@94ݝѫ+fn7:4P4ͽGo оby$B0xKLٙE'g/ )ӌY 'ؽ#9D =&Puy*8/JBg ^pSæNXZ= 0γ7Ww[Vۣh=R B_W·g#cV_%mP8˥&Ra.K>*qQj.&i4lVL˂Y Q *!v<gm7~[qlB:6Y*cAi:5Z}cX;V͞!8q{F|=&q.Ra._D\'u|>ӻ=Qz9tF$iBM%*_): :B\ v=gK͋NP ۊ7۽8RD0M$x~tP)D6ںc:fݾ ֡8ڮ,:H6*HcuD,xg.N?Y(W".&sAEB"'1Tl=gǎ4c^ }"F'rN4H$BxSNjF` :KA)$GiEEL"Opγ=TUK)PKˌ _w9KE.?_OˉT=~4ѓE&"@(P TB!AREC1,-O%]=hYdY"eeh)Tы31yQr@4KӔ[~]9s>sR2fkx+>/Zd"WB%\Ɖ.'(z @Y"by3oie&f"HGxʘ*mt.x EQPYIDlGe`O˫ ]oi,tluTZDSBۧS/K$Uh:&)$)t%H!Rw=ǦPgiM 'V@+Uy^2S8GDNQ"&1^8FF-Ǫ9|DZI|.x[pBx؎D~]{$ $ZF I)j ;ZR#}@H 5Bj#Fu`192" 6]Cxv(nx$/yI Qq~{()Ә`6SH&|MUjk֎,F80=> ԽG(EQEBCղ=ܮulZkmyNKc"!pt8q8wZj22w# tQ;q݀N !|@A%,9ł-u[Hyj軚K, cG8EtƱ7nl5cCUtQ9e:| am\wjdY| ! NѴ0ۃH m7k&Z $yt>g>)xt>k$XXxs18+jJ §xQh8|Pf1B8vnwfi{u|C#* P*gQM*YB\h}rRN98p= 5a *e]Ցq`z/MK,%IӋ9gg`[p w{"33_>>bQl e:% _yvV"`uhxs3mGv8JIPqa部B[_y+h;.́DI!(o''$D!xfTuͦfZ&lT0w. I(HEw,ʓiBvi>Ŕ8RRS@ q!Dm7} `{?X;{{dž||'THRP%B2dq :8u+L웖︺#G(B AhnWk>|?b҈/eAP)HHX(8,&hK8͙|񌪷hj{j֭wiס Ӿ h/Lx~}pI"<ө .N$3Hg'SD I2Ņ@[bn{%MoPTVkַ7sEقbIZqS^xJ"V`R(D2],x Q7ۿ7&. 3utos|v}pbJ6N. D娞Q MS$qy6rٰzWxgYYʖGZAȈ&c$CdS.Oe :XDG$bd ,KB0Ym.v ̬*Gԏ ҇zN'+,ϦdfsNƘS1@=2Fid2l>S| w[ڶ%qi=1XObd];uЧ7]H'%"IUy:%yּz{f,j`g;c1-Q"Dv:O? 84= 4e-Q΃H)($TMuj,M]or+~{X?O@l<Ѷm:8X{ ! $1*!@J JUD.5(r׫5v {%kLlH^tt9ǦgsW (! &Tۡ0. WMޗ$Trnwc'r6JEgn+/yORVL{ȢSArt#P -Ep6rPՄ4Miۖ}[ fB6qȸš5l-cb\@' EY\xy1-sVkj o>܉́ݡ]?ᤃ:/Oz*،w#YρLtmIӞy:u-ts9uE\'%%2Cj}Iմtrz b@D7վeU-.@%̦%ˆwSmPsujcUƺ2R_ԈF3 HIqQ(L$L# tG{Gp1ֱ`X*ֻ#m70`OE_gޭ=a۰94% ";uo$AJA ܮYf݆ͦjWm7SۙkDC>ZP[ٶ!IbewiqR'T:{"p4PRDE2\xvi;uXcpv`1x$ul Kmq,f%<:_PVW 7Ww[6ctf{k0_[ `G5w$UvwYAEc7CF'pgFn0iJK$bZf<:9MQ5uSx!A9 8NXN-#_,Crޱ;l5׫!40kB"D8T:K~"u>"\"$iJX|7$R `g,Ʋ;65L<"%yTsg|%xķ_> )`큛n_^BoƄt:!F{~3֐^?3iG[lbDXKLˤR "Yb1`ﶼYq:Z'8Y, iƧ> *Y&\,,3Ζ)6" un|ݚCnu?i}o֯FyR|@fc|hkK \,j^g0ˈ(xϗq,B)$f1+9C|BTUDA1:%OEJ 4;#cI%*I@H6\nͺi~%?BM?^4#Ȍ1/|;/?g{ö0f8͗lTأG 'G bFcRJ9A4N&Ybl:EߊN )ZI8yy,}gt?#x}16?q~tl@a.SNNMjT'X lpzα,7n, IH@0cӲsqHKb}qw1Fe-d%k%hĆ@mIL cP ! (AS -o>x` >ԝe[\m[5:Q q@/N.áVlmn}ZJq-K%̓$[I1Y$TJ ?ϥx2Qb):Z4S,XuzχՎ-Ww[n&lU ġ5[&*8Qx%uYᄒ& Cs=Ul}U7m7sp|U$Y$\2nId*' >ED-)0v́z?oWvG=Tku^;:V.kk[͡v9kQ θxWuذZǚj:q[}ڸjL<G{痄7HF(DF\~_?ճ$"O XH{X.vG~ʫw7P!Bm7;Lîj]34w~XLKQӺʻQmj86M fyv>(5;>vNZ"pLM,4 @@pS9A14mwݬwzS:$0Λ3}3Y ^cH/uWccʦuhܧt+AIاm9CgY5B4Ke|胲!Oӂ7L' xdDQk}RnpxMw*I3.kwpűjAY0@%FI|,@:$ꦊ<*67 ȓwl,`aHb}MxCYכW>hڹe3S@C*/ssXe!;aC8#- p ?PZ׍! dq@\taj۫;\hbin0_kvP5]S5uݏ^@ߌFS w_[7Cm/<ZPdFgh7 ?[~/䛫[quM? λL7"ڏ`1UWI*ɲ85]/v7;~ӷc.rZ}k =3<둷 >`j~ +{~NoۧԫքrژJIΧES槆F9T-w앱.J!, vxu c^TY)4]4CxN|O0 7>;P3|>)0ǔ/a B< qr$tPX|XT?M6Yc6 ;ӄY qN"dRRE0-O27mgdWSH=y1$zQ0ܹn{4Fݳ7T|S> <n<7бr;|95޳W7pw7=YǘjWɫD!lG 95cp۰;P?7BG]"4@ݠ`3cm9;@b^J(/vTM0x㦎0QY؝dF/!h0v1}e٘"~cR̿s`©T7#1XGLBTI?wGq|_G@{=9$|a{ c _ym7E᯼P\cIENDB`granule-1.4.0-7/pixmaps/thumb-4-hesitant_72x72.png0000644000076400007640000001367611036650606016423 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  tIME $2>IDATxsu̬dsҍ&lp"D[ML~&x'~0jO1-k&\D (Ԓpo @gBvFTPf~,Iq .`_ǿJ@=@[DWeA&a|'( QPJaۏ|ϱY.\8sg?8o(J"TAixޢN[І?k5j GZ?y;=D~(V47| d7o ;rBf`Pu? >]rը-|8s5{lQł- OL6P;A 7IYe` Һ>2՚=6s5PP ,hG܁7H3"?==A7d7hEa~pNfhX:kWݺK)&O@<6ߟp[DVw(a#6/D2d :vK,$kɋs+QQ Be l{Eh7{E@w:NeI?N i&h Vt#cF2[vnYQx֝/?gCD4 /:(Ki X(r0֗T:sn>-vjzm 2VUΟ;Cfq9S~[,|IWMOc嗹Z`=,srzKy)7 dL)Y8~@G?8o?qI@q@+EVZͻYV_s|c,V4n^_]"nZݴ}>up[Ђ*3Ǧdߩivb,ZwJQX)sM>qp˛1ݤ@p:bgF^##{ZuR+ .G?Ax!C(c>]X6ncжd ZDBB0Q@R3{>gsnJVN6 Y^PY85KQ42viA+X} -tbA+%%nu(3/(TY}coW<\mptH5h%3GK?ZlѨW ya.CU@UJѦ7Wh;oS5 0HaX V @6?3/}C%[][|۳cF)4mݾP+ #Ig`tIKTŌR2 z-Okh] Pu[!@4+u~养[!jH7{ěv‚]۷C*o|PFqW F@^BYy14n}gݾspJt`5xqj;XC-g<ƪ2AE\ 5SU|5L7zaZӨWh֫A_ "̟|JA^8K) ss&~}M jy^pf܉Cf}>o?Gq<%YaAc8SQG 6ߜ:}xL,+(MI 0o4U@A!K`vyO3;8'#}mjU'|#~?>aEj-b4^fӓnYyI%[EfݬY0O ^?qezet.<(m5 ΋)DԫUfNԴEݾk]t!ɲWcX>S)!0 `r߸,Nd>%ֳA+we)|̀m:AZY{ Œ8]ISR! @Pƒu4ēR#X @@3ZU,"Jmzԍ2B tOa k*<9B%aEMZO -ͶdmAZA o_'[d'8&O k-zeAֳ.vӔAč(jNZ<֚d0W yU*.' eSEІA,˙y`HM(Q!G,xDQjQwPNyL'~_->eyǵ匵|Ms%FĔCq"A qoyC DνZieB3;JlF-!߫>қVBa-,}UCn|IY'dk_]^fqi_ENikP絘t]sş_n$w:8]GOnAdEڗ+Mȕ/^l)3/)z>eϷ`cS$z޽|gҽX ZI݀C1j{v=ugAU(_ߩm**Ƕ85Wi8a)͐mr5m^6e]C1sw-Ҁ5 3똧%$ G'1Ʋt!Z)ZڧukGB}qZWai*,}wgPDnjB4`Qe ?]_ʞsj r\3: k.]ablG)o @1Y@j0bPXL13v4vJiV*O5>)BbXX9^?9}]NQҋcny~~~O3Xsҁg@ Ze-Hv8|@3XӺ:vZ|OwYZ-@b{Lfc:/) Í~~7 x,ڑ>;HEz>P ;zDNUQtSs&Ja%rq2Hf>l$ўt뽅:dG =.6HqY'`q-GB;j)){}ROd^%T` jK(jevW@yQlwюw4(qun֘f>{oT5YaxԵ#a,@ky8 GЅ-e25rl(8xo Px!+prO0Vđ0Q4=&Qē#-" ahK1g"85 @;}ڝν<{gNPqYv&!Ҍc- A&-ɦB d( !&֙Oi8B-c3/EvDZn+ԂpqZ5tRj{É0*z %佄$11}6)#P,PD%; Ed7fٽ5(p!{tVEׇٸnfIK1)$k76E[)Z?BXЀ[ƶV ٍɊVJQ# 9,;C{A,FWH{QB$^oLua:{%aNgyRd4n}yjsuvV9VJ'5|dcķ#ye/Zn5?3Dž?a°ދ=gv%Yr;.$+.&:K)@}k(Ieq~4sGY?ɞfYچQT΂ܓAϷ`3!U3\yqArn"ĻU/WQr=N( ]Jc>To>M~- B6FC-Dq؋'qZk2Fsqc%^wY|Dm\u ҽ|㼻Ed0+ފJd{[ a5R -:jh'w.S.5aNY^pi?a/wU=Pf%rah*R?S c`z9i{P;JsbF|K;:ly)UQ,J3y΃_=r`laf3SiYAX8hLN8hn^ָ7SwSb·}Bd"q<^t-Y_nդ~܇NOLB'$Cqa;{H*Jшˍ9x)ykK1{K/A-Mg+!Ɓ3 *Јvn;m0KgiZ~|gf?i ;W 6c c"; Q [60EAіLĜcN}0yնO从(%*!4*=g"HH;wTPSl2Ȍ(8@fsЕlGsm=p,>GDuw5& X4*Q_KJAKW!n \Q.o-#[hZ1rzJpU:O= Dt@?1*a-$G" S"'x^qgnK NgT6đvd*tq!NDֻ0P CծWwz:紲Ҙ^ϿZht1.+H8fD@~@4wzrTh80g7K/_+gBƬrAƥ{):%J\[n?Kc`tu]tWo`aϦ%oU}Xg!?:]4;J~fZӨuB_P*Gv1Ǻەـ Jd4^fy]ejtڽdKN;;2i>vm|ㆼhW)(vɊؗ7e8X 7yw-6%\V#lm7t_ z_O:majXr1.6EĵҒY^xa#B\@jzbFv_e(=*07 p~ * ?x^n3'c-E/%Fp3n]gF*ȈN ܯZun&z]x|iu۸wfAwsor_DMIENDB`granule-1.4.0-7/pixmaps/next-card_72x72.png0000644000076400007640000001174311036650606015204 00000000000000PNG  IHDRHHUGsRGBbKGD pHYs  tIME 7.o/cIDATx\Yegu]{w|zp۴nH@I!DBR)~~ARCP<$6؍SMw87읇smv9ҭjUu^ks t8p^]x ?O~_z)}xoO~>W  o`t'^x>@OU<bzj;w6/3Oe;pڇQձ>K)y%6?v\xM>[y}'жQU,y-fz[C%z1,Tf"3Df:JDxH~U>㿿Ͽe^.6Zt Gl8 ǻΣ/?~{wA}T|~V>JD'5㬓7b4`8s6TeMݔ '>/b U@ "a0c^I8&~9wh8693æ7⧃ ȢL`!""d`bH@Ȍ1cc!9tk19j4A1Znk ,scه]fߛe٣nxm{3AV1і Uuz.>jg%]{]9\|8kP=}Ols"v` >@ ,K`9tz1P53_އwוKrGߜMnjڂ P1ul0D%MhԘEe8ga c8`H1͸q>/OF֚ik١k3D#zMvxYX@ H->RJnE|^036ƬQ~?}~-t`-"0FW3F903fTUe}9׳f:ccΜp'/pGn nMoaE@e]DH.}kck$!lm,,5J YyϳN7snUYsYD3?qS5ng}@DcBJw?9gĘF|RU0RUzc0AaaqR:w$p f5=eS_aw_e|obT>d5,@oA{1 QU$"Ttyh՘a]ZxlPU~<5~p0?]t΂?RYz*z9HJNOϷ^~Lf2^ߐUe6噵e`r]tU,P²BzX;a.}m㍈H2Aߥᰏ!pvjNWUc.~خOdWZH { 1tݽ/Na4b4e Qc" aAa0`P UpYV2/OfV3띩R}fF[WCۅ6C`oák8tdA6~՜%X]7K,]dQPoK^nkd`CJk֢/0P=Qe#l̺u;vHuYgt~xchm9@{{ 6XkhG"mW mOfF@*#>b-w%\F^03nhCc/)AhAa M >@m-@j~atHfݙuu,$^Wq6_|ɺVѮgDrn^ 9HY6h MVj^ }8LAJ0Lj;:7h!##@w|mg)nMHδq I S(0mfES%Y!1v>FkC*\fǂ+'p-Aّ}DbPNT/Vu)9\; L-h>+!L쾃j N#ס!=^5gS8Vl E:R`"6uY1d/RbH>"rCK3pV8EuJ=EKjGcfddB㏺钐,3;$yB_--Z)=0,mq^,̮U/7@}p]依u]wt$ii~20R ,U"FWb!Sr@kbó(4(k\݃XjDL)eh' 2I"Du1N1̑U,zc:WLqs(t݄Vo@UT) (RP$D(!81M$BB( Y UQGfU}UUnUր${eKYyl ffapڋc@Ok\51-jPbB]yy$t2dwe=sP\P|@ eY#bL-`עʼnIk BޙeS'ExP%y"/QK)ej+Ĵ*g1<\+_*՚y P\&pS1 86 5;g1Mk)Y(K|^ >2C8BܐFɷOeQv &6JMћ荖43Av dڼplX(pδ@>ˑ%C .:rx;F[ei^vQC)C rnj`3ZY!{O߽x') "̈(e{,$(yuU*+E1a&"5Z\lJ1"lZ`gk׶1ZuQFEIz:t6p[ǁ?CW+]"f[l]A>+ap6BO(UUmN ̒8Ib*aKg9f9;3gE|LΫKƘz_ou[,@lDLXF)QWUQ,jTe]ep9:z_~ujW1R{TeQc:CD|CB >\?b|w_ '[AL`4`*BBZ΢jy5 !R:c:B|t6o%\'V((| lOymۛ?ׂTE!6|s4YIiNuSGB5 z938WWnq/Q9-BZ}3"t,]߈:* SFsw6-$DV` 桗%1oVWPUQ\E9 Y;)wo_nb|5i~$"T!]޹oƷ> ӞH h@gs)麬w -3]f2*㔐lGkW;e;,HWt-xLDtZs\$u`-zuRbmmT?WWf;_՘IENDB`granule-1.4.0-7/pixmaps/show_control.png0000644000076400007640000000035710547073411015164 00000000000000PNG  IHDRbKGD pHYs  tIME  |IDATu QD; K@0GT5}t`y;æzWou~9aG+I *sZZ / |Z4c ƿ7,)חIENDB`granule-1.4.0-7/pixmaps/hide_control.png0000644000076400007640000000051210547073411015106 00000000000000PNG  IHDRbKGD pHYs  ~tIME/ܙIDATE=JCQ;4/( !";`c܂.F܄ %"4!03͈?tp|:o61 L/4st#ՉD>~V9@-+(Vs9"p ?bf[Acf806G{;7 Kˌ'UZZg$ _x{Lpw5ζ=*IENDB`granule-1.4.0-7/granule.spec0000644000076400007640000000527011056775357012603 00000000000000## ## $Id: granule.spec.in,v 1.20 2008/09/01 13:59:19 vlg Exp $ ## Summary: Flashcards program based on Leitner methodology Name: granule Version: 1.4.0-7 Release: 0%{?dist} License: GPLv2+ Group: Applications/Multimedia URL: http://granule.sourceforge.net/ Source: http://dl.sf.net/sourceforge/granule/granule-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root BuildRequires: gtkmm24-devel >= 2.4.0 BuildRequires: libassa-devel BuildRequires: libxml2-devel BuildRequires: desktop-file-utils BuildRequires: gettext # Only for the glib-gettextize and intltoolize hack. BuildRequires: glib2-devel intltool %description granule is a flashcard program that implements Leither cardfile methodology for learing new words. It features both short-term and long-term memory training capabilities with scheduling. %prep %setup -q %build glib-gettextize --copy --force intltoolize --automake --copy --force %configure make %{?_smp_mflags} %install rm -rf $RPM_BUILD_ROOT make DESTDIR=$RPM_BUILD_ROOT install %find_lang %{name} --with-gnome mkdir -p -m0755 ${RPM_BUILD_ROOT}%{_datadir}/granule/pixmaps mkdir -p -m0755 ${RPM_BUILD_ROOT}%{_datadir}/granule/xml install -p -m 0644 granule-linux.conf ${RPM_BUILD_ROOT}%{_datadir}/granule/ install -p -m 0644 granule-hildon.conf ${RPM_BUILD_ROOT}%{_datadir}/granule/ install -p -m 0644 granule-pda.conf ${RPM_BUILD_ROOT}%{_datadir}/granule/ install -p -m 0644 pixmaps/*.png ${RPM_BUILD_ROOT}%{_datadir}/granule/pixmaps/ install -p -m 0644 *.dtd ${RPM_BUILD_ROOT}%{_datadir}/granule/xml/ desktop-file-install --vendor "" \ --dir ${RPM_BUILD_ROOT}%{_datadir}/applications \ --add-category X-Fedora \ %{name}.desktop %clean %{__rm} -rf ${RPM_BUILD_ROOT} %files -f %{name}.lang %defattr(-,root,root, -) %doc COPYING AUTHORS README ChangeLog NEWS %{_bindir}/%{name} %{_datadir}/applications/%{name}.desktop %{_datadir}/pixmaps/%{name}.png %{_datadir}/%{name}/ %changelog * Sun Aug 31 2008 Vladislav Grinchenko - 1.4.0-6 - Fix config files installation. * Fri Jul 25 2008 Tom Callaway - 1.3.0-2 - Fix license tag * Wed Oct 18 2006 Michael Schwendt - 1.2.3-2 - Fix missing BR and remaining spec issues. * Sat Oct 14 2006 Vladislav Grinchenko - 1.2.3 - Overall makeup to adhere to the RPM packaging guidelines. * Sun Nov 6 2005 Vladislav Grinchenko - Fixed License tag * Mon Jul 4 2005 Vladislav Grinchenko - Changed XML dir. * Thu Jun 3 2004 Vladislav Grinchenko - 1.0.0 - Initial release.