New WhiteStork Dictionary version: 0.5.2-1
authorkrzsas <krzsas@gmail.com>
Thu, 7 Dec 2006 10:56:43 +0000 (10:56 +0000)
committerkrzsas <krzsas@gmail.com>
Thu, 7 Dec 2006 10:56:43 +0000 (10:56 +0000)
* fixed minor building issues
* added bookmarks
* overall application's improvement

git-svn-id: file:///svnroot/mdictionary/trunk@33 5bde0345-f819-0410-ac75-e5045f9217cc

103 files changed:
Makefile
README
bookmarks/COPYING [new file with mode: 0644]
bookmarks/Makefile [new file with mode: 0644]
bookmarks/include/.kateconfig [new file with mode: 0644]
bookmarks/src/.kateconfig [new file with mode: 0644]
bookmarks/src/engine_bookmark.c [new file with mode: 0644]
bookmarks/src/test.c [new file with mode: 0644]
bookmarks/src/testMakeDatabase.c [new file with mode: 0644]
data/dict_icon.png [deleted file]
data/engine_xdxf_icon.png
data/engine_xdxf_icon_2.png [new file with mode: 0644]
data/files_debbuild/bmkC_changelog [new file with mode: 0644]
data/files_debbuild/bmkC_changelog.Debian [new file with mode: 0644]
data/files_debbuild/bmkC_copyright [new file with mode: 0644]
data/files_debbuild/bmkc_control [new file with mode: 0644]
data/files_debbuild/bmkc_postinst [new file with mode: 0755]
data/files_debbuild/bmkc_postrm [new file with mode: 0755]
data/files_debbuild/bmkc_preinst [new file with mode: 0755]
data/files_debbuild/bmkc_prerm [new file with mode: 0755]
data/files_debbuild/engC_copyright
data/files_debbuild/engc_control
data/files_debbuild/engc_postinst
data/files_debbuild/guiC_copyright
data/files_debbuild/gui_oldC_copyright [new file with mode: 0644]
data/files_debbuild/guic_control
data/files_debbuild/metC_changelog [new file with mode: 0644]
data/files_debbuild/metC_changelog.Debian [new file with mode: 0644]
data/files_debbuild/metC_copyright [new file with mode: 0644]
data/files_debbuild/metc_control [new file with mode: 0644]
data/files_debbuild/metc_postinst [new file with mode: 0755]
data/files_debbuild/metc_postrm [new file with mode: 0755]
data/files_debbuild/metc_preinst [new file with mode: 0755]
data/files_debbuild/metc_prerm [new file with mode: 0755]
data/files_debbuild/mngC_copyright
data/files_debbuild/mngc_control
data/files_debbuild/mngc_postinst
data/files_debbuild/mngc_prerm
data/pre-release.sh [deleted file]
data/release.sh [deleted file]
data/version.sh [deleted file]
data/whitestork.desktop [deleted file]
data/whitestork.png
data/whitestorkgui.desktop [new file with mode: 0644]
data/ws_bookmarks [new file with mode: 0644]
dbus/Doxyfile
dbus/src/ws_dbus.c
dh_make [deleted file]
dict1.cache [deleted file]
dict1.xdxf [deleted file]
dict2.xdxf [deleted file]
engine/Makefile [new file with mode: 0755]
engine/doxyconf [deleted file]
engine/include/dictionary_engine.h
engine/include/engine_xdxf.h
engine/makefile [deleted file]
engine/src/engine_xdxf.c
engine/src/test.c [new file with mode: 0644]
generate_repo [new file with mode: 0755]
gui/COPYING [deleted file]
gui/makefile
gui/plik.txt [new file with mode: 0644]
gui/src/ikona.png [new file with mode: 0644]
gui/src/ws_gui.c
gui/src/ws_gui_callbacks.c
gui/src/ws_gui_layout.c
gui/utf_test.c [new file with mode: 0644]
include/dictionary_engine.h
include/engine_bookmark.h [new file with mode: 0644]
include/ws_dbus.h
include/ws_gui.h
include/ws_gui_callbacks.h
include/ws_gui_layout.h
include/ws_manager.h
logs/clean.log [new file with mode: 0644]
manager/Doxyfile [deleted file]
manager/makefile
manager/src/test_mng.c
manager/src/ws_manager.c
packages/debian/DEBIAN/control [deleted file]
packages/debian/DEBIAN/md5sums [deleted file]
packages/debian/DEBIAN/postinst [deleted file]
packages/debian/DEBIAN/postrm [deleted file]
packages/debian/DEBIAN/preinst [deleted file]
packages/debian/DEBIAN/prerm [deleted file]
packages/debian/etc/others-menu/extra_applications/0112_whitestorkgui.desktop [deleted symlink]
packages/debian/usr/bin/WhiteStork [deleted file]
packages/debian/usr/share/applications/hildon/whitestorkgui.desktop [deleted file]
packages/debian/usr/share/dbus-1/services/org.maemo.WhiteStorkGui.service [deleted file]
packages/debian/usr/share/doc/whitestorkgui/changelog.Debian.gz [deleted file]
packages/debian/usr/share/doc/whitestorkgui/changelog.gz [deleted file]
packages/debian/usr/share/doc/whitestorkgui/copyright [deleted file]
packages/debian/usr/share/pixmaps/whitestork.png [deleted file]
packages/debian/usr/share/pixmaps/whitestork_icon.png [deleted file]
po/POTFILES.in [new file with mode: 0644]
po/domain.mo [new file with mode: 0644]
po/en_GB.po [new file with mode: 0644]
po/pl_PL.po [new file with mode: 0644]
po/pl_Pl.po [new file with mode: 0644]
po/template.po [new file with mode: 0644]
po/whitestork.mo [new file with mode: 0644]
release_makefile [deleted file]
stork.png [deleted file]

index 0ed6917..aefc826 100644 (file)
--- a/Makefile
+++ b/Makefile
 ARCH = `arch`
-REP_TAG = tags
+REP_TAG = ../tags
 REP_BRANCH = branches
-REP_TRUNK = trunk
-
-MAKEFILE_FILE = ${REP_LOCATION}/${REP_TRUNK}
 
 ENGINE = engine
 DBUS = dbus
 MANAGER = manager
 GUI = gui
+BOOKMARKS = bookmarks
+BINARIES = bin
+INCLUDE = include
+DATA = data
+PACKAGES = packages
 
 APP_NAME = whitestork
 MAJOR_VER = 0
-MINOR_VER = 4
+MINOR_VER = 5
 RELEASE_MAJOR_VER = 0
-RELEASE_MINOR_VER = 4
+RELEASE_MINOR_VER = 5
 RELEASE_PATCH_VER = 0
-APP_VER = ${MAJOR_VER}.${MINOR_VER}.`svn info | grep "Revision:" | awk '{print $$2}'`
-PACK_VER = 1
+# APP_VER = ${MAJOR_VER}.${MINOR_VER}.`svn info | grep "Revision:" | awk '{print $$2}'`
+PACK_VER = 0
 FRM_VER = 0.1
+VERSION_FILE = ./${INCLUDE}/ws_version.h
 EXECUTABLE = ${BINARIES}/WhiteStork
+MAIL_ADDRESS = Milosz.Wasilewski@comarch.com Radoslaw.Smigielski@comarch.com Grzegorz.Szczutkowski@comarch.com Lukasz.Pawlik@comarch.com Anna.Gadomska@comarch.com Dariusz.Wiechecki@comarch.com Krzysztof.Sasiak@comarch.com
+#mdictionary-devel@garage.maemo.org
+LOCALEDIR=/usr/share/locale
+GETTEXT_PACKAGE=whitestork
+ALL_LINGUAS="en_GB"
+APP_VER = ${RELEASE_MAJOR_VER}.${RELEASE_MINOR_VER}.2
 
 GUI_PACK_NAME = whitestorkgui
 MNG_PACK_NAME = whitestork
 ENG_PACK_NAME = enginexdxf
+BOOKMARKS_PACK_NAME = whitestorkbookmarks
+META_PACK = whitestorkdictionary
 
-BINARIES = bin
-INCLUDE = include
-DATA = data
-PACKAGES = packages
-
-FILES = ${REP_LOCATION}/${REP_TRUNK}/${DATA}/files_debbuild
+FILES = ${DATA}/files_debbuild
 LOG_DIR = logs
-LOG_CLEAN = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/clean.log
-LOG_BUILD = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/build.log
-LOG_RUN = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/run.log
-LOG_DEBS = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/debs.log
-LOG_INST = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/install.log
-
+LOG_CLEAN = ${LOG_DIR}/clean.log
+LOG_BUILD = ${LOG_DIR}/build.log
+LOG_RUN = ${LOG_DIR}/run.log
+LOG_DEBS = ${LOG_DIR}/debs.log
+LOG_INST = ${LOG_DIR}/install.log
 
 first: build
        @echo -e -n ""
 
-# build new version (x+1).0.0
-version: version-pre
-
-# build new release with version x,(y+1).0
-release: release-pre
-
-# build new pre-release with version x.y.(z=REPOSITORY REVISION)
-pre-release: pre-release-pre
-
-#create new tagged version from actual trunk
+#create new tagged version from current trunk
 tagged-version: clean debs
-               @mkdir  ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER}
-               @cp -r  ${REP_LOCATION}/${REP_TRUNK}/*        ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER}
-               @echo -e -n ".svn\n*~\n"    >    ${REP_LOCATION}/${REP_TRUNK}/NOT_FOR_SVN
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -iname ".svn" -exec rm -f -r {} \; >/dev/null 2>/dev/null
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -iname "*~" -exec rm -f -r {} \; >/dev/null 2>/dev/null
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -maxdepth 1 -iname "dict.*" -exec rm -f -r {} \; >/dev/null 2>/dev/null
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -iname "*.deb" -exec mv {} ${REP_LOCATION}/${REP_TAG} \; >/dev/null 2>/dev/null
-               @cd ${REP_LOCATION}/${REP_TAG} && svn add ${APP_NAME}-${APP_VER}
-               @cd ${REP_LOCATION}/${REP_TAG} && svn ci -m "BUILD FRAMEWORK: Added new tagged version of WhiteStork: ${APP_NAME}-${APP_VER}\n"
-
-send-last:
-               @cd ${REP_LOCATION}/${REP_TRUNK} && tar -czf ${APP_NAME}-${APP_VER}.tar.gz   *_${APP_VER}-${PACK_VER}_${ARCH}.deb
+               -mkdir  ${REP_TAG}/${APP_NAME}-${APP_VER}
+               cp -r * ${REP_TAG}/${APP_NAME}-${APP_VER}
+               echo -e -n ".svn\n*~\n"    >    NOT_FOR_SVN
+               -find ${REP_TAG}/${APP_NAME}-${APP_VER} -iname ".svn" -exec rm -f -r {} \; >/dev/null 2>/dev/null
+               -find ${REP_TAG}/${APP_NAME}-${APP_VER} -iname "*~" -exec rm -f -r {} \; >/dev/null 2>/dev/null
+               -find ${REP_TAG}/${APP_NAME}-${APP_VER} -maxdepth 1 -iname "dict.*" -exec rm -f -r {} \; >/dev/null 2>/dev/null
+               -find ${REP_TAG}/${APP_NAME}-${APP_VER} -iname "*.deb" -exec mv {} ${REP_TAG} \; >/dev/null 2>/dev/null
+               cd ${REP_TAG} && svn add ${APP_NAME}-${APP_VER}
+               cd ${REP_TAG} && svn ci -m "BUILD FRAMEWORK: Added new tagged version of WhiteStork: ${APP_NAME}-${APP_VER}\n"
+
+update-version: 
+               @echo -e -n "#ifndef _VERSION_H\n#define _VERSION_H\n\n#define WS_VERSION \"${APP_VER}\"\n#endif\n"  > ${VERSION_FILE}
+
+tag-version:   clean
+               @install -d ${REP_TAG}/${APP_NAME}-${APP_VER}
+               @tar -czf ${REP_TAG}/${APP_NAME}-${APP_VER}/${APP_NAME}-${APP_VER}.tar.gz ../trunk/* --exclude .svn
+               @svn add ${REP_TAG}/${APP_NAME}-${APP_VER} 
+               @svn ci -m "Tagged new version: ${APP_NAME}-${APP_VER}"
+
+send-last:     debs
+               @tar -czf ${APP_NAME}-${APP_VER}.tar.gz *_${APP_VER}-${PACK_VER}_${ARCH}.deb
                @echo -e -n "#!/bin/bash\n\
-                       mutt -x -a ~/debs.log -a ~/build.log -a ~/${APP_NAME}-${APP_VER}.tar.gz -s \"[WhiteStork]: daily build - version ${APP_NAME}-${APP_VER}\" mdictionary-devel@garage.maemo.org <~/stranger.content\n\
-                       rm -f ~/${APP_NAME}-${APP_VER}.tar.gz\n" > stranger.script
+                       mutt -x -a ~/debs.log -a ~/build.log -a ~/${APP_NAME}-${APP_VER}.tar.gz -s \"[WhiteStork]: daily build - version ${APP_NAME}-${APP_VER}\" ${MAIL_ADDRESS} <~/mail.content\n\
+                       rm -f ~/${APP_NAME}-${APP_VER}.tar.gz\n" > mail.script
+
+               @chmod +x mail.script
+
                @echo -e -n "\
                        This message was generated automatically , please do not reply.\n\
-                       Attachment: ${APP_NAME}-${APP_VER}.tar.gz - tarball with the newest whitestorks' packages.\n\
+                       Attachment: ${APP_NAME}-${APP_VER}.tar.gz - tarball with the newest Whitestork's packages.\n\
                        Attachment: build.log - logs from building binaries.\n\
                        Attachment: debs.log - logs from making *.deb packages.\n\n\
-                       Automatic Building Framework ver: ${FRM_VER}\nCopyright 2006 ComArch S.A.\n" > stranger.content
-               @scp ${REP_LOCATION}/${REP_TRUNK}/${APP_NAME}-${APP_VER}.tar.gz stranger@stud.ics.p.lodz.pl:~/
-               @scp ${LOG_BUILD} stranger@stud.ics.p.lodz.pl:~/
-               @scp ${LOG_DEBS} stranger@stud.ics.p.lodz.pl:~/
-               @scp ${MAKEFILE_FILE}/stranger.script stranger@stud.ics.p.lodz.pl:~/
-               @scp ${MAKEFILE_FILE}/stranger.content stranger@stud.ics.p.lodz.pl:~/
-               @rm -f ${MAKEFILE_FILE}/stranger.script
-               @rm -f ${MAKEFILE_FILE}/stranger.content
-               @ssh stranger@stud.ics.p.lodz.pl  ./mailscript
-
-version-post: tagged-version send-last
-               @echo -e -n "New version ${APP_VER} created and sent.\n"
-release-post: tagged-version send-last
-               @echo -e -n "New release ${APP_VER} created.\n"
-pre-release-post: tagged-version send-last
-               @echo -e -n "New pre-release ${APP_VER} created and sent.\n"
-
-version-pre:
-               @-cd  ${REP_LOCATION}/${REP_TRUNK} && svn update
-               @${REP_LOCATION}/${REP_TRUNK}/${DATA}/version.sh "${MAKEFILE_FILE}"
-               @echo -e -n "VERSION: Jeden zamykamy\n" 
-
-release-pre:
-               @-cd  ${REP_LOCATION}/${REP_TRUNK} && svn update
-               @${REP_LOCATION}/${REP_TRUNK}/${DATA}/release.sh "${MAKEFILE_FILE}"
-               @echo -e -n "RELEASE: Jeden zamykamy\n"
-
-pre-release-pre:
-               @-cd  ${REP_LOCATION}/${REP_TRUNK} && svn update
-               @${REP_LOCATION}/${REP_TRUNK}/${DATA}/pre-release.sh "${MAKEFILE_FILE}"
-               @echo -e -n "PRE_RELEASE: Jeden zamykamy\n"             
-
-build: pre-build ${BINARIES}/engine_xdxf.so ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStork ${BINARIES}/WhiteStorkManager
+                       Automatic Building Framework ver: ${FRM_VER}\nCopyright 2006 ComArch S.A.\n" > mail.content
+               @scp ${APP_NAME}-${APP_VER}.tar.gz krzsas@localhost:~/
+               @scp ${LOG_BUILD} krzsas@localhost:~/
+               @scp ${LOG_DEBS} krzsas@localhost:~/
+               @scp mail.script krzsas@localhost:~/
+               @scp mail.content krzsas@localhost:~/
+               @rm -f mail.script
+               @rm -f mail.content
+               @ssh krzsas@localhost  ./mail.script
+
+localization:
+               @rm -f /usr/share/locale/en_GB/LC_MESSAGES/whitestork.mo
+               @rm -f /usr/share/locale/en_GB/LC_MESSAGES/whitestork.mo
+               
+               @install -d /usr/share/locale/en_GB/LC_MESSAGES/
+               @install -d /usr/share/locale/pl_PL/LC_MESSAGES/
+               @touch /usr/share/locale/en_GB/LC_MESSAGES/whitestork.mo
+               @touch /usr/share/locale/pl_PL/LC_MESSAGES/whitestork.mo
+                               
+               @msgfmt po/en_GB.po -o /usr/share/locale/en_GB/LC_MESSAGES/whitestork.mo
+               @msgfmt po/pl_PL.po -o /usr/share/locale/pl_PL/LC_MESSAGES/whitestork.mo
+
+build: pre-build ${BINARIES}/engine_xdxf.so ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStork ${BINARIES}/WhiteStorkManager ${BINARIES}/ws_bookmark.so
                @echo -e -n "\nBuilding WhiteStork is finished.\n"
-pre-build:
+
+pre-build: 
                @echo -e -n "Building WhiteStork... \n"
-               @echo -e -n "Location: ${REP_LOCATION}\n\nplease wait a while....\n"
                @echo -e -n "" > ${LOG_BUILD}
 
-${BINARIES}/WhiteStorkManager:
+${BINARIES}/WhiteStorkManager: update-version
                @echo -e -n "**--> Compiling Manager...\n"
                @echo -e -n "**--> Compiling Manager...\n" >> ${LOG_BUILD}
-               @cd ${MANAGER} && make >> ${LOG_BUILD}
+               @cd ${MANAGER} && make >> ../${LOG_BUILD}
 
-${BINARIES}/ws_dbus.o:
+${BINARIES}/ws_dbus.o: update-version
                @echo -e -n "**--> Compiling D-BUS Wrapper... \n"
                @echo -e -n "**--> Compiling D-BUS Wrapper... \n" >> ${LOG_BUILD}
-               @cd ${DBUS} && make >> ${LOG_BUILD}
+               @cd ${DBUS} && make >> ../${LOG_BUILD}
 
-${BINARIES}/WhiteStork:
+${BINARIES}/WhiteStork: update-version
                @echo -e -n "**--> Compiling User Interface...\n"
                @echo -e -n "**--> Compiling User Interface...\n" >> ${LOG_BUILD}
-               @cd ${GUI} && make >> ${LOG_BUILD}
+               @cd ${GUI} && make >> ../${LOG_BUILD}
 
-${BINARIES}/engine_xdxf.so:
+${BINARIES}/engine_xdxf.so: update-version
                @echo -e -n "**--> Compiling Engine...\n"
                @echo -e -n "**--> Compiling Engine...\n" >> ${LOG_BUILD}
-               @cd ${ENGINE} && make >> ${LOG_BUILD}
-
-
-clean:
+               @cd ${ENGINE} && make >> ../${LOG_BUILD}
+
+${BINARIES}/ws_bookmark.so: update-version
+               @echo -e -n "**--> Compiling Bookmarks...\n"
+               @echo -e -n "**--> Compiling Bookmarks...\n" >> ${LOG_BUILD}
+               @cd ${BOOKMARKS} && make >> ../${LOG_BUILD}
+               
+clean-logs:     
+               @echo -e -n "Cleaning all logs\n"
+               @rm -f ${LOG_DIR}/*.log
+
+clean: clean-logs
+               @-echo -e -n "Cleaning project directories\n"
                @echo -e -n "" > ${LOG_CLEAN}
-               @-rm -f ./${BINARIES}/* >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-rm -f ${REP_LOCATION}/${REP_TRUNK}/*~ >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-rm -f ${REP_LOCATION}/${REP_TRUNK}/*.deb >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${GUI} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${DBUS} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${ENGINE} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${MANAGER} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-echo -e -n "Project directories are cleaned.\n"
+               @-rm -f ${BINARIES}/* >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
+               @-rm -f *~ >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
+               @-rm -f *.deb >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
+               @-cd ${GUI} && make clean >> ../${LOG_CLEAN} 2>> ../${LOG_CLEAN}
+               @-cd ${DBUS} && make clean >> ../${LOG_CLEAN} 2>> ../${LOG_CLEAN}
+               @-cd ${ENGINE} && make clean >> ../${LOG_CLEAN} 2>> ../${LOG_CLEAN}
+               @-cd ${MANAGER} && make clean >> ../${LOG_CLEAN} 2>> ../${LOG_CLEAN}
+               @-cd ${BOOKMARKS} && make clean >> ../${LOG_CLEAN} 2>> ../${LOG_CLEAN}
 
 run: build-test run-dict clean-temp
 
+
 run-dict:
                @run-standalone.sh WhiteStork
 
 build-test: clean clean-temp build
                @echo -e -n "Copying needed files to specific directories...\n"
                @echo -e -n > ${LOG_RUN}
-               @-fakeroot mkdir /usr/share/WhiteStork
-               @-fakeroot mkdir /usr/share/WhiteStork/dictionaries/
-               @-fakeroot mkdir /usr/share/WhiteStork/dictionaries/elements
+               @-fakeroot install -d /usr/share/WhiteStork/dictionaries/elements
                @-fakeroot mkdir /usr/share/WhiteStork/dictionaries/us-en
+               @-fakeroot mkdir /usr/share/WhiteStork/dictionaries/bookmarks
                @-fakeroot mkdir /usr/lib/WhiteStork
                @-fakeroot mkdir /usr/include/WhiteStork
 
                @echo "Copying Manager files"
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStorkManager /usr/bin/
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkManager.service  /usr/share/dbus-1/services
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict1.xdxf /usr/share/WhiteStork/dictionaries/elements/dict.xdxf
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict1.cache  /usr/share/WhiteStork/dictionaries/elements/dict.cache
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict2.xdxf  /usr/share/WhiteStork/dictionaries/us-en/dict.xdxf
-
-               gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/elements/name "Elements Database"
-               gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/elements/path "/usr/share/WhiteStork/dictionaries/elements"
-               gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/elements/active true
-               gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/us-en/name "American - English Dictionary"
-               gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/us-en/path "/usr/share/WhiteStork/dictionaries/us-en"
-               gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/us-en/active true
+               @cp -f ${BINARIES}/WhiteStorkManager /usr/bin/
+               @cp -f ${DATA}/org.maemo.WhiteStorkManager.service  /usr/share/dbus-1/services
+               @cp -f ${DATA}/dict1.xdxf /usr/share/WhiteStork/dictionaries/elements/dict.xdxf
+               @cp -f ${DATA}/dict1.cache  /usr/share/WhiteStork/dictionaries/elements/dict.cache
+               @cp -f ${DATA}/dict2.xdxf  /usr/share/WhiteStork/dictionaries/us-en/dict.xdxf
+
+
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/name "Bookmarks"
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/path "/usr/share/WhiteStork/dictionaries/bookmarks"
+               @gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/active true
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Engines/xdxf/path "/usr/lib/WhiteStork/engine_xdxf.so"
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Engines/bookmarks/path "/usr/lib/WhiteStork/ws_bookmark.so"
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/elements/name "Elements Database"
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/elements/path "/usr/share/WhiteStork/dictionaries/elements"
+               @gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/elements/active true
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/us-en/name "American - English Dictionary"
+               @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/us-en/path "/usr/share/WhiteStork/dictionaries/us-en"
+               @gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/us-en/active true
 
                @echo "Copying GUI files"
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStork /usr/bin/
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestorkgui.desktop /usr/share/applications/hildon/
+               @cp -f ${BINARIES}/WhiteStork /usr/bin/
+               @cp -f ${DATA}/whitestorkgui.desktop /usr/share/applications/hildon/
                @ln -s /usr/share/applications/hildon/whitestorkgui.desktop /etc/others-menu/extra_applications/0112_whitestorkgui.desktop
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.png /usr/share/pixmaps
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/icon.png /usr/share/pixmaps/whitestork_icon.png
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkGui.service /usr/share/dbus-1/services
-               gconftool-2 --type bool --set /apps/maemo/WhiteStork/configuration/licence true
+               @cp -f ${DATA}/whitestork.png /usr/share/pixmaps
+               @cp -f ${DATA}/icon.png /usr/share/pixmaps/whitestork_icon.png
+               @cp -f ${DATA}/org.maemo.WhiteStorkGui.service /usr/share/dbus-1/services
+               @gconftool-2 --type bool --set /apps/maemo/WhiteStork/configuration/licence true
                
                @echo "Copying Engine files"
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/engine_xdxf.so /usr/lib/WhiteStork/
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/engine_xdxf_icon.png /usr/share/pixmaps
+               @cp -f ${BINARIES}/engine_xdxf.so /usr/lib/WhiteStork/
+               @cp -f ${DATA}/engine_xdxf_icon.png /usr/share/pixmaps
+               
+               @echo "Copying Bookmark's files"
+               @cp -f ${BINARIES}/ws_bookmark.so /usr/lib/WhiteStork/
+               @cp -f ${DATA}/ws_bookmarks /usr/share/WhiteStork/dictionaries/bookmarks/ws_bookmarks
 
 clean-temp:
                @-fakeroot rm -rf /usr/share/WhiteStork
@@ -203,84 +220,101 @@ clean-temp:
 run-deb:
                @run-standalone.sh WhiteStork
 
-debs: pre-debs mng-deb eng-deb gui-deb
+debs: pre-debs mng-deb eng-deb gui-deb 
                @echo -e -n "Building debian packages finished.\n"
 
-mng-deb: mng-pack-dirs ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStorkManager
+mng-deb: mng-pack-dirs ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStorkManager ${BINARIES}/ws_bookmark.so 
                @echo -e -n "**-->Making manager package...\n"
                @echo -e -n "**-->Making manager package...\n" >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStorkManager ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkManager.service  ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict1.xdxf ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements/dict.xdxf   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict1.cache ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements/dict.cache   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict2.xdxf ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en/dict.xdxf   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @find ${FILES} -type f -maxdepth 1 -name "mngc_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN" \;
-
-               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control > ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup
-
-               mv ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control
-
-
-               @find ${FILES} -type f -maxdepth 1 -name "mngC_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork" \;
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork/changelog"
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork/changelog.Debian"
-               @touch ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @chmod g-w ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @find "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/add_sums.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" \;
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && fakeroot dpkg-deb --build debian >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && mv -f debian.deb ../${MNG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-
-gui-deb: gui-pack-dirs ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStork
+               @cp -f ${BINARIES}/WhiteStorkManager ${PACKAGES}/debian/usr/bin/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/org.maemo.WhiteStorkManager.service  ${PACKAGES}/debian/usr/share/dbus-1/services   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/dict1.xdxf ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements/dict.xdxf   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/dict1.cache ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements/dict.cache   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/dict2.xdxf ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en/dict.xdxf   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               
+               @cp -f ${DATA}/ws_bookmarks ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/bookmarks/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               
+               @chmod 0777 ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/bookmarks/ws_bookmarks >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               
+               @cp -f ${BINARIES}/ws_bookmark.so ${PACKAGES}/debian/usr/lib/WhiteStork/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+
+               @find ${FILES} -type f -maxdepth 1 -name "mngc_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/DEBIAN" \;
+
+               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${PACKAGES}/debian/DEBIAN/control > ${PACKAGES}/debian/DEBIAN/control_backup
+
+               @mv ${PACKAGES}/debian/DEBIAN/control_backup ${PACKAGES}/debian/DEBIAN/control
+
+               @find ${FILES} -type f -maxdepth 1 -name "mngC_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/usr/share/doc/whitestork" \;
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/whitestork/changelog"
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/whitestork/changelog.Debian"
+               @touch ${PACKAGES}/debian/DEBIAN/md5sums
+               @chmod g-w ${PACKAGES}/debian/DEBIAN/md5sums
+               @find "${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${DATA}/add_sums.sh {} "${PACKAGES}/debian" \;
+               @cd ${PACKAGES} && fakeroot dpkg-deb --build debian ../${MNG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb >> ../${LOG_DEBS} 2>> ../${LOG_DEBS}
+
+gui-deb: localization gui-pack-dirs ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStork
                @echo -e -n "**-->Making whitestork GUI package...\n"
                @echo -e -n "**-->Making whitestork GUI package...\n" >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStork ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestorkgui.desktop ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications/hildon/   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @ln -s /usr/share/applications/hildon/whitestorkgui.desktop ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu/extra_applications/0112_whitestorkgui.desktop
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/icon.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps/whitestork_icon.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/ws_top.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps/ws_top.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/ws_tra.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps/ws_tra.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkGui.service  ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @find ${FILES} -type f -maxdepth 1 -name "guic_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN" \;
+               @cp -f ${BINARIES}/WhiteStork ${PACKAGES}/debian/usr/bin/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/whitestorkgui.desktop ${PACKAGES}/debian/usr/share/applications/hildon/   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @ln -s /usr/share/applications/hildon/whitestorkgui.desktop ${PACKAGES}/debian/etc/others-menu/extra_applications/0112_whitestorkgui.desktop
+               @cp -f ${DATA}/whitestork.png ${PACKAGES}/debian/usr/share/pixmaps   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/icon.png ${PACKAGES}/debian/usr/share/pixmaps/whitestork_icon.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/ws_top.png ${PACKAGES}/debian/usr/share/pixmaps/ws_top.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/ws_tra.png ${PACKAGES}/debian/usr/share/pixmaps/ws_tra.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/org.maemo.WhiteStorkGui.service  ${PACKAGES}/debian/usr/share/dbus-1/services   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @find ${FILES} -type f -maxdepth 1 -name "guic_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/DEBIAN" \;
                
-               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control > ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup
-
-               mv ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control
-
-               @find ${FILES} -type f -maxdepth 1 -name "guiC_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui" \;
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui/changelog"
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui/changelog.Debian"
-               @touch ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @chmod g-w ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @find "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/add_sums.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" \;
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && fakeroot dpkg-deb --build debian >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && mv -f debian.deb ../${GUI_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb   >> ${LOG_DEBS} 2>> ${LOG_DEBS}                
+               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${PACKAGES}/debian/DEBIAN/control > ${PACKAGES}/debian/DEBIAN/control_backup
+
+               @mv ${PACKAGES}/debian/DEBIAN/control_backup ${PACKAGES}/debian/DEBIAN/control
+
+               @find ${FILES} -type f -maxdepth 1 -name "guiC_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/usr/share/doc/whitestorkgui" \;
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/whitestorkgui/changelog"
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/whitestorkgui/changelog.Debian"
+               
+#              add locale to the package
+               @install -d ${PACKAGES}/debian/usr/share/locale/en_GB/LC_MESSAGES/
+               @touch ${PACKAGES}/debian/usr/share/locale/en_GB/LC_MESSAGES/whitestork.mo
+               @msgfmt po/en_GB.po -o ${PACKAGES}/debian/usr/share/locale/en_GB/LC_MESSAGES/whitestork.mo
+
+               @install -d ${PACKAGES}/debian/usr/share/locale/pl_PL/LC_MESSAGES/
+               @touch ${PACKAGES}/debian/usr/share/locale/pl_PL/LC_MESSAGES/whitestork.mo
+               @msgfmt po/pl_PL.po -o ${PACKAGES}/debian/usr/share/locale/pl_PL/LC_MESSAGES/whitestork.mo
+#              ----
+               
+               @touch ${PACKAGES}/debian/DEBIAN/md5sums
+               @chmod g-w ${PACKAGES}/debian/DEBIAN/md5sums
+               @find "${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${DATA}/add_sums.sh {} "${PACKAGES}/debian" \;
+               @cd ${PACKAGES} && fakeroot dpkg-deb --build debian ../${GUI_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb >> ../${LOG_DEBS} 2>> ../${LOG_DEBS}
 
 eng-deb: eng-pack-dirs ${BINARIES}/engine_xdxf.so
                @echo -e -n "**-->Making engine package...\n"
                @echo -e -n "**-->Making engine package...\n" >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/engine_xdxf.so ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib/WhiteStork/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${INCLUDE}/dictionary_engine.h ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include/WhiteStork  >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/engine_xdxf_icon.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @find ${FILES} -type f -maxdepth 1 -name "engc_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN" \;
+               @cp -f ${BINARIES}/engine_xdxf.so ${PACKAGES}/debian/usr/lib/WhiteStork/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${INCLUDE}/dictionary_engine.h ${PACKAGES}/debian/usr/include/WhiteStork  >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${DATA}/engine_xdxf_icon.png ${PACKAGES}/debian/usr/share/pixmaps >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @find ${FILES} -type f -maxdepth 1 -name "engc_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/DEBIAN" \;
                
-               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control > ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup
+               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${PACKAGES}/debian/DEBIAN/control > ${PACKAGES}/debian/DEBIAN/control_backup
 
-               mv ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control
+               mv ${PACKAGES}/debian/DEBIAN/control_backup ${PACKAGES}/debian/DEBIAN/control
 
-               @find ${FILES} -type f -maxdepth 1 -name "engC_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf" \;
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf/changelog"
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf/changelog.Debian"
-               @touch ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @chmod g-w ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @find "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/add_sums.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" \;
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}  &&  fakeroot dpkg-deb --build debian  >> ${LOG_DEBS}  2>> ${LOG_DEBS}
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && mv -f debian.deb ../${ENG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_DEBS} 2>> ${LOG_DEBS}         
+               @find ${FILES} -type f -maxdepth 1 -name "engC_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/usr/share/doc/enginexdxf" \;
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/enginexdxf/changelog"
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/enginexdxf/changelog.Debian"
+               @touch ${PACKAGES}/debian/DEBIAN/md5sums
+               @chmod g-w ${PACKAGES}/debian/DEBIAN/md5sums
+               @find "${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${DATA}/add_sums.sh {} "${PACKAGES}/debian" \;
+               @cd ${PACKAGES}  &&  fakeroot dpkg-deb --build debian  ../${ENG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb>> ../${LOG_DEBS}  2>> ../${LOG_DEBS}
 
-debs-i: clean-inst-log eng-deb-i mng-deb-i gui-deb-i 
-               @echo -e -n "Every packages has been reinstalled.\n"
+debs-i: install
+               
+               
+install: clean-inst-log eng-deb-i mng-deb-i gui-deb-i 
+               @echo -e -n "All packages have been installed/reinstalled.\n"
 
-clean-inst-log:
+clean-inst-log: 
                @echo -n "" > ${LOG_INST}
 
 debs-ir: debs-i
@@ -288,82 +322,84 @@ debs-ir: debs-i
                @af-sb-init.sh restart
                @echo -e -n "Now You can test Your new WhiteStork :D .. enjoy :-)\n"
 
-mng-deb-i:
+mng-deb-i: 
                @echo -e -n "Removing old MANAGER...\n"
-               @-fakeroot dpkg -r whitestork  >/dev/null 2>/dev/null           
+               @fakeroot dpkg -r whitestork  >/dev/null 2>/dev/null            
                @echo -e -n "Installing new package MANAGER...\n"
-               @cd ${REP_LOCATION}/${REP_TRUNK} && fakeroot dpkg -i ${MNG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
+               @fakeroot dpkg -i ${MNG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
 
-gui-deb-i:
+gui-deb-i: 
                @echo -e -n "Removing old GUI...\n"
-               @-fakeroot dpkg -r whitestorkgui  >/dev/null 2>/dev/null                
+               @fakeroot dpkg -r whitestorkgui  >/dev/null 2>/dev/null         
                @echo -e -n "Installing new package GUI...\n"
-               @cd ${REP_LOCATION}/${REP_TRUNK} && fakeroot dpkg -i ${GUI_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
+               @fakeroot dpkg -i ${GUI_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
 
-eng-deb-i:
+eng-deb-i: 
                @echo -e -n "Removing old ENGINE...\n"
                @-fakeroot dpkg -r enginexdxf  >/dev/null 2>/dev/null           
                @echo -e -n "Installing new package ENGINE...\n"
-               @cd ${REP_LOCATION}/${REP_TRUNK} && fakeroot dpkg -i ${ENG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
+               @fakeroot dpkg -i ${ENG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
+
+bookmark-deb-i: 
+               @echo -e -n "Removing old BOOKMARKS ENGINE...\n"
+               @fakeroot dpkg -r whitestorkbookmarks  >/dev/null 2>/dev/null           
+               @echo -e -n "Installing new package whitestorkbookmarks...\n"
+               @fakeroot dpkg -i ${BOOKMARKS_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
+               
+
 
 pre-debs: clean
-               @echo -e -n "Making of *.deb packages...\nPlease wait...\n"
+               @echo -e -n "Making *.deb packages...\nPlease wait...\n"
                @echo -e -n "" > ${LOG_DEBS}
 
-eng-pack-dirs:
+eng-pack-dirs: 
                @echo -e -n "Creating and cleaning required directories for ENGINE..."   >/dev/null 2>/dev/null
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib/WhiteStork   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include/WhiteStork   >/dev/null 2>/dev/null  
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
-
-mng-pack-dirs:
+               @-rm -f -r ${PACKAGES}/*   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/lib   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/lib/WhiteStork   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/include   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/include/WhiteStork   >/dev/null 2>/dev/null       
+               @mkdir ${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/doc/enginexdxf   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/pixmaps   >/dev/null 2>/dev/null
+               @find ${PACKAGES}/debian -type d -exec chmod 0755 {} \;
+
+mng-pack-dirs: 
                @echo -e -n "Creating and cleaning required directories for MANAGER..."   >/dev/null 2>/dev/null
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/engines   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
-
-gui-pack-dirs:
+               @-rm -f -r ${PACKAGES}/*   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/bin   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/bookmarks >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/dbus-1/services   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/doc/whitestork   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/lib/WhiteStork >/dev/null 2>/dev/null
+               @find ${PACKAGES}/debian -type d -exec chmod 0755 {} \;
+
+gui-pack-dirs: 
                @echo -e -n "Creating and cleaning required directories for GUI..."   >/dev/null 2>/dev/null
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu/extra_applications   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications/hildon   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
+               @-rm -f -r ${PACKAGES}/*   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/etc   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/etc/others-menu   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/etc/others-menu/extra_applications   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/bin   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/pixmaps   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/applications   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/applications/hildon   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/doc/whitestorkgui   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/dbus-1   >/dev/null 2>/dev/null
+               @mkdir ${PACKAGES}/debian/usr/share/dbus-1/services   >/dev/null 2>/dev/null
+               @find ${PACKAGES}/debian -type d -exec chmod 0755 {} \;
 
 uninstall:
                @-fakeroot dpkg --purge whitestorkgui
@@ -382,22 +418,95 @@ display-r: access
 access:
                @fakeroot chmod 0777 /var/run
 
-release-package: 
-               @make -f release_makefile clean
-               @make -f release_makefile debs && echo "Release package generation successfully completed"
+release-package: clean debs meta-package
+               @echo "Release package generation successfully completed"
 
 snapshot: tagged-version send-last
 
-backup:
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStork ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStorkManager /usr/bin/  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/engine_xdxf.so /usr/lib/WhiteStork  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${INCLUDE}/dictionary_engine.h /usr/include/WhiteStork
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/dict.xdxf /usr/share/WhiteStork/dictionaries/local  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/dict.cache /usr/share/WhiteStork/dictionaries/local >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkManager.service /usr/share/dbus-1/services  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestorkgui.desktop /usr/share/applications/hildon  >> ${LOG_RUN} 2>> ${LOG_RUN}
+backup: 
+               @-fakeroot cp ${BINARIES}/WhiteStork ${BINARIES}/WhiteStorkManager /usr/bin/  >> ${LOG_RUN} 2>> ${LOG_RUN}
+               @-fakeroot cp ${BINARIES}/engine_xdxf.so /usr/lib/WhiteStork  >> ${LOG_RUN} 2>> ${LOG_RUN}
+               @-fakeroot cp ${INCLUDE}/dictionary_engine.h /usr/include/WhiteStork
+               @-fakeroot cp dict.xdxf /usr/share/WhiteStork/dictionaries/local  >> ${LOG_RUN} 2>> ${LOG_RUN}
+               @-fakeroot cp dict.cache /usr/share/WhiteStork/dictionaries/local >> ${LOG_RUN} 2>> ${LOG_RUN}
+               @-fakeroot cp ${DATA}/org.maemo.WhiteStorkManager.service /usr/share/dbus-1/services  >> ${LOG_RUN} 2>> ${LOG_RUN}
+               @-fakeroot cp ${DATA}/whitestorkgui.desktop /usr/share/applications/hildon  >> ${LOG_RUN} 2>> ${LOG_RUN}
                @-fakeroot ln -s /usr/share/applications/hildon/whitestorkgui.desktop /etc/others-menu/extra_applications/0112_whitestorkgui.desktop
                @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/local/path "/usr/share/WhiteStork/dictionaries/local"
                @gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/local/name "Local dictionary"
                @gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/local/active true
 
+meta-package-pack-dirs:
+               @echo -e -n "Creating and cleaning directories necessary for whitestorkdictionary meta-package..."   >/dev/null 2>/dev/null
+               @-rm -rf ${PACKAGES}/*   >/dev/null 2>/dev/null
+
+               @install -d ${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/etc/others-menu/extra_applications   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/applications/hildon   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/doc/whitestorkdictionary >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/bin >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/dbus-1/services >/dev/null 2>/dev/null
+
+               @find ${PACKAGES}/debian -type d -exec chmod 0755 {} \;
+
+meta-package:  meta-package-pack-dirs
+
+               @echo -e -n "**-->Making WhiteStork meta-package...\n"
+
+               @find ${FILES} -type f -maxdepth 1 -name "metc_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/DEBIAN" \;
+
+               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${PACKAGES}/debian/DEBIAN/control > ${PACKAGES}/debian/DEBIAN/control_backup
+
+               @mv ${PACKAGES}/debian/DEBIAN/control_backup ${PACKAGES}/debian/DEBIAN/control
+
+               @find ${FILES} -type f -maxdepth 1 -name "metC_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/usr/share/doc/whitestorkdictionary" \;
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/${META_PACK}/changelog"
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/${META_PACK}/changelog.Debian"
+
+               @touch ${PACKAGES}/debian/DEBIAN/md5sums
+               @chmod g-w ${PACKAGES}/debian/DEBIAN/md5sums
+               @find "${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${DATA}/add_sums.sh {} "${PACKAGES}/debian" \;
+
+               @cd ${PACKAGES} && fakeroot dpkg-deb --build ../${META_PACK}_${APP_VER}-${PACK_VER}_${ARCH}.deb >> ../${LOG_DEBS} 2>> ../${LOG_DEBS}
+
+bookmarks-pack-dirs:
+               @echo -e -n "Creating and cleaning directories necessary for whitestorkdictionary meta-package..."   >/dev/null 2>/dev/null
+               @-rm -rf ${PACKAGES}/*   >/dev/null 2>/dev/null
+
+               @install -d ${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/etc/others-menu/extra_applications   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/applications/hildon   >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/doc/whitestorkbookmarks >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/bin >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/dbus-1/services >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/bookmarks >/dev/null 2>/dev/null
+               @install -d ${PACKAGES}/debian/usr/lib/WhiteStork >/dev/null 2>/dev/null
+               @find ${PACKAGES}/debian -type d -exec chmod 0755 {} \;
+
+bookmark-deb:  ${BINARIES}/ws_bookmark.so bookmarks-pack-dirs 
+               @echo -e -n "**-->Making WhiteStorkBookmark package...\n"
+
+               @cp -f ${DATA}/ws_bookmarks ${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/bookmarks/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+               @cp -f ${BINARIES}/ws_bookmark.so ${PACKAGES}/debian/usr/lib/WhiteStork/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
+
+               @find ${FILES} -type f -maxdepth 1 -name "bmkc_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/DEBIAN" \;
+               
+               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${PACKAGES}/debian/DEBIAN/control > ${PACKAGES}/debian/DEBIAN/control_backup
+
+               @mv ${PACKAGES}/debian/DEBIAN/control_backup ${PACKAGES}/debian/DEBIAN/control
+
+               @find ${FILES} -type f -maxdepth 1 -name "bmkC_*[^~]" -exec ${DATA}/copy_clean.sh {} "${PACKAGES}/debian/usr/share/doc/whitestorkbookmarks" \;
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/${BOOKMARKS_PACK_NAME}/changelog"
+               @gzip --best "${PACKAGES}/debian/usr/share/doc/${BOOKMARKS_PACK_NAME}/changelog.Debian"
+
+               @touch ${PACKAGES}/debian/DEBIAN/md5sums
+               @chmod g-w ${PACKAGES}/debian/DEBIAN/md5sums
+               @find "${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${DATA}/add_sums.sh {} "${PACKAGES}/debian" \;
+
+               @cd ${PACKAGES} && fakeroot dpkg-deb --build debian >> ../${LOG_DEBS} 2>> ../${LOG_DEBS}
+               @cd ${PACKAGES} && mv -f debian.deb ../${BOOKMARKS_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb   >> ../${LOG_DEBS} 2>> ../${LOG_DEBS}
+
+repo:  release-package meta-package
+
+       @rm -rf repo
+       @./generate_repo
diff --git a/README b/README
index 78071d1..9eb335c 100644 (file)
--- a/README
+++ b/README
@@ -1,9 +1,10 @@
 WhiteStork Multilingual Dictionary ver. 0.1.0 ALPHA
 
+
+
 What is WhiteStork Multilingual Dictionary
 ------------------------------------------
 WhiteStork is a multilingual dictionary enabling its users to use many dictionary formats. Our final goal is to use many search engines so that different file formats could be used. They will be in a form of dynamically loadable modules. For now however, we have limited the project to one engine for the XDXF format. The application consists of four modules: 
-
 - GUI - written using GTK+ Hildon, GPL License
 - Engine - XDXF format parser, GPL license
 - Manager - thread management and GUI starting, GPL license
@@ -21,9 +22,13 @@ However, it is important to put out, that this will only compile the program. Yo
 Installation
 ------------
 
+The first thing to do, is setting an environment variable called REP_LOCATION, to match the directory containing local svn repository. This should be done in the following way: 
+
+export REP_LOCATION = /local/svn/repository
+
 In order to install the program, issue the following command:
 
-make deb && make debi
+make debs && make debs-i
 
 These lines, compile the source code, create a debian package and install it onto your system.
 
@@ -38,4 +43,6 @@ Should there be any problems, please contact one of our developers via garage.ma
 
 Have fun using our application
 
-The WhiteStork Multilingual dictionary developer's
\ No newline at end of file
+
+The WhiteStork Multilingual dictionary developer's
+
diff --git a/bookmarks/COPYING b/bookmarks/COPYING
new file mode 100644 (file)
index 0000000..fb6319b
--- /dev/null
@@ -0,0 +1,339 @@
+    GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
\ No newline at end of file
diff --git a/bookmarks/Makefile b/bookmarks/Makefile
new file mode 100644 (file)
index 0000000..585e579
--- /dev/null
@@ -0,0 +1,47 @@
+COMPILER = gcc
+DEBUG = -Wall -g
+SOURCES = ./src
+INCLUDE = ../include
+LIBS = `pkg-config --libs glib-2.0 gmodule-2.0` -lsqlite
+FLAGS = `pkg-config --cflags glib-2.0 gmodule-2.0` -I${INCLUDE} -I./.. ${DEBUG}
+BINARIES = bin
+FINAL = ../bin/ws_bookmark.so
+
+
+${FINAL}: ${BINARIES}/bookmark.o ${SOURCES}/engine_bookmark.c
+               @gcc -shared -fPIC ${FLAGS} ${LIBS} ${BINARIES}/bookmark.o -o ${FINAL} 
+       
+${BINARIES}/bookmark.o: ${SOURCES}/engine_bookmark.c
+               @gcc -c -fPIC -o ${BINARIES}/bookmark.o ${SOURCES}/engine_bookmark.c ${FLAGS}
+               
+clean:
+               @-rm -f ${BINARIES}/*
+               @-rm -f ${FINAL}
+               @echo -e -n "Project 'BookmarkEngine' directories has been cleaned.\n"
+       
+cleandata:
+               @-rm -f ws_bookmarks-journal
+               @-rm -f ws_bookmarks
+
+
+data: ${SOURCES}/testMakeDatabase.c
+               @echo -e -n "Compiling testDatabase...\n"
+               @gcc -o ${SOURCES}/testDatabase ${SOURCES}/testMakeDatabase.c ${FLAGS} ${LIBS}
+
+datarun: data
+               @run-standalone.sh src/testDatabase     
+       
+test: test.o
+               @echo "Linking test program..."
+               @gcc ${LIBS} ${DEBUG} -o ${SOURCES}/test ${BINARIES}/test.o
+               @echo -e "Building test program finished.\n"
+
+test.o:
+               @echo "Compiling test program..."
+               @gcc ${FLAGS} ${DEBUG} -c -o ${BINARIES}/test.o ${SOURCES}/test.c
+
+check:
+               @echo "Running test program:"
+               @run-standalone.sh  ${SOURCES}/test     
+       
+       
\ No newline at end of file
diff --git a/bookmarks/include/.kateconfig b/bookmarks/include/.kateconfig
new file mode 100644 (file)
index 0000000..7f9ed54
--- /dev/null
@@ -0,0 +1 @@
+kate hl Sources/C;
\ No newline at end of file
diff --git a/bookmarks/src/.kateconfig b/bookmarks/src/.kateconfig
new file mode 100644 (file)
index 0000000..7f9ed54
--- /dev/null
@@ -0,0 +1 @@
+kate hl Sources/C;
\ No newline at end of file
diff --git a/bookmarks/src/engine_bookmark.c b/bookmarks/src/engine_bookmark.c
new file mode 100644 (file)
index 0000000..c07b455
--- /dev/null
@@ -0,0 +1,1021 @@
+/******************************************************************************
+This file is part of WhiteStork.
+
+WhiteStork 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.
+
+WhiteStork is distributed in the hope that 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 WhiteStork; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Copyright 2006 ComArch S.A.
+******************************************************************************/
+
+// header with data structure and function definition for XDXF engine.
+// Also Engine API. 
+#include "../../include/engine_bookmark.h"
+//------------------------------------------------------------------------------
+
+#ifndef NOLOGS
+#include <glib/gstdio.h>
+#include <string.h>
+#include <stdlib.h>
+#endif
+
+#define LOGS g_debug
+
+/*inline void LOGS(gchar* frm, ...) {
+#ifndef NOLOGS
+       //g_printf(frm);
+#endif
+}*/
+
+//==============================================================================
+//==============================================================================
+//==============================================================================
+//-------------------------------------- FUNCTION FROM API 0.2 !!!
+//==============================================================================
+int get_id(void* data,int n,char** argv,char** names) {
+        int len = strlen(&(argv[0][0]));
+        memcpy(data,&(argv[0][0]), len);
+        gchar* tmp = (gchar*)data;
+        tmp[len] = 0;
+        return 0;
+}
+
+gboolean bm_engine_add_word(Engine* engine,
+                         gchar*  word,
+                         gchar*  translation) {
+        gint sql_res = 0;
+        gchar* err = NULL;
+        gboolean result = TRUE;
+        gchar* sql = NULL;
+
+        LOGS("Bookmark/%s->%s() called. Param\nEngine at address: %p\n"
+             "word: %s\ntranslation address: %p\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             engine,
+             word,
+             translation
+            );
+        g_assert(engine != NULL);
+        g_assert(word != NULL);
+        g_assert(translation != NULL);
+
+        // start timer for this function
+        timer(TIMER_START, (gchar*)(gchar*)__FUNCTION__);
+
+        BookData* data = (BookData*)(engine->engine_data);
+        gchar* tmp = g_utf8_strdown(word,-1);
+        sql = g_strconcat("INSERT INTO words VALUES(NULL,\'",tmp,"\');",NULL);
+        sql_res = sqlite_exec(data->db, sql, NULL, NULL, &err);
+        if(err || sql_res!=0) {
+                LOGS("This word exists already\nError description: %s\n",err);
+        }            
+        g_free(sql); sql = NULL;
+        //const gchar* end;
+        //sqlite_vm* query = NULL;
+
+        sql = g_strconcat("SELECT id FROM words WHERE word=\'",tmp,"\'",NULL);
+        gchar word_id[20];
+        sqlite_exec(
+                (data->db),
+                sql,
+                get_id,
+                word_id,
+                &err
+        );
+        LOGS("Founded id is equal: %s\n",word_id);
+
+        sql = g_strconcat("INSERT INTO translations VALUES(NULL,",word_id,",\'",word,"\',\'",translation,"\');",NULL);
+        sql_res = sqlite_exec(data->db, sql, NULL, NULL, &err);
+        if(err || sql_res!=0) {
+                LOGS("Error while adding translation for word %s\n",word);
+                result = FALSE;
+        } 
+        g_free(sql); sql = NULL;
+
+        timer(TIMER_STOP, (gchar*)(gchar*)__FUNCTION__);
+        return result;
+}
+//------------------------------------------------------------------------------
+gboolean bm_engine_remove_word(Engine* engine,
+                             gchar*  word) {
+        gint sql_res = 0;
+        gchar* err = NULL;
+        gboolean result = TRUE;
+
+        LOGS("Bookmark/%s->%s() called. Param\nEngine at address: %p\n"
+             "word: %s\n",(gchar*)__FILE__,(gchar*)__FUNCTION__,engine,word);
+        g_assert(engine != NULL);
+        g_assert(word != NULL);
+        timer(TIMER_START, (gchar*)(gchar*)__FUNCTION__);
+
+        BookData* data = (BookData*)(engine->engine_data);
+        gchar* tmp = g_utf8_strdown(word,-1);
+        gchar* sql = g_strconcat("DELETE FROM translations WHERE word_id = "
+                                 "(SELECT id FROM words WHERE word=\'",
+                                 tmp,
+                                 "\');",
+                                 NULL
+                                );
+        g_free(tmp); tmp = NULL;
+        sql_res = sqlite_exec(data->db, sql, NULL, NULL, &err);
+        if(err || sql_res!=0) {
+                LOGS("Error while deleting \'%s\' word translation(s):\n%s\n",word,err);
+                g_free(sql); sql = NULL;
+                return FALSE;
+        }        
+        //g_free(sql); 
+       sql = NULL;
+        
+        sql = g_strconcat("DELETE FROM words WHERE word=\'",
+                                 word,
+                                 "\'",
+                                 NULL
+                                );
+       sql_res = 0;
+       sql_res = sqlite_exec(data->db, sql, NULL, NULL, &err);
+        if(err || sql_res!=0) {
+                LOGS("Error while deleting \'%s\' word index:\n%s\n",word,err);
+                g_free(sql); sql = NULL;
+                return FALSE;
+        }
+       g_free(sql); sql = NULL;
+
+        timer(TIMER_STOP, (gchar*)(gchar*)__FUNCTION__);
+        return result;
+}
+//------------------------------------------------------------------------------      
+gchar* bm_engine_get_lang_from(Engine* engine) {
+        LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+        gchar* result = g_strdup("any");
+        LOGS("Bookmark/%s->%s() return string=%s\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                result
+               );
+        return result;
+}
+//------------------------------------------------------------------------------
+gchar* bm_engine_get_lang_to(Engine* engine) {
+        LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+        gchar* result = g_strdup("any");
+        LOGS("Bookmark/%s->%s() return string=%s\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                result
+               );
+        return result;
+}
+//------------------------------------------------------------------------------
+gchar* bm_engine_get_title(Engine* engine) {
+        LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+        gchar* result = g_strconcat(g_get_user_name(),"s' bookmarks",NULL);
+        LOGS("Bookmark/%s->%s() return string=%s\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                result
+               );
+        return result;
+}
+//------------------------------------------------------------------------------
+gchar* bm_engine_get_icon_path(Engine* engine) {
+        LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+        gchar* result = g_strdup("/usr/share/pixmaps/ws_eng_bookmark_icon.png");
+        LOGS("Bookmark/%s->%s() return string=%s\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                result
+               );
+        return result;
+}
+
+//==============================================================================
+//==============================================================================
+//==============================================================================
+//-------------------------------------- FUNCTION TO WRITE (NOT IMPLEMENTED YET)
+//==============================================================================
+
+//------------------------------------------------------------------------------
+// searching word by concrete engine
+void bm_engine_search_word_translation(Engine* engine, gchar* word)
+{
+        LOGS("Bookmark/%s->%s() called.\n-->PARAM:engine at adress=%p\n"
+             "-->PARAM:word=\'%s\'\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             engine,
+             word
+            );
+        g_assert(engine != NULL);
+        g_assert(word != NULL);
+        // start timer for this function
+        timer(TIMER_START, (gchar*)(gchar*)__FUNCTION__);
+       BookData* data = (BookData*)(engine->engine_data);
+       gchar* tmp = g_utf8_strdown(word,-1);
+        sqlite_vm* query;
+        gchar* sql = NULL;
+        gchar* tran = NULL;
+
+
+        sql = g_strconcat("SELECT * FROM translations WHERE "
+                          "word_id=(SELECT id FROM words WHERE word=\'",
+                          tmp,
+                          "\');",
+                          NULL);
+        gint sql_res = 0;
+        const gchar* end;
+        gchar* err = NULL;
+        sql_res = sqlite_compile(data->db,  /* The open database */
+                                 (const gchar*)sql,       /* SQL statement to be compiled */
+                                 &end,      /* OUT: uncompiled tail of zSql */
+                                 &query,    /* OUT: the virtual machine */
+                                 &err       /* OUT: Error message. */
+                                );
+        if(err || sql_res!=0) {
+                LOGS("Error while compiling query:\n%s\nreason:%s\n",sql,err);
+                g_free(sql); sql = NULL;
+                return;
+        }            
+        LOGS("Po compile\n");
+        gint nCol = 0;
+        const gchar** values = NULL;
+        const gchar** head = NULL;
+        gint status = 0;
+        gboolean first = TRUE;
+        do { 
+                first = TRUE;
+                do {
+                        if(!first) sleep(100);
+                        first = FALSE;
+                        status = sqlite_step(query, 
+                                        &nCol,            
+                                        &values,  
+                                        &head 
+                                        );
+                        if(status == SQLITE_ROW) {
+                                tran = g_strdup((gchar*)(&(values[3][0])));        
+                                LOGS("Translation found :\n\"%s\"\n",tran);
+                        }
+                } while((status == SQLITE_BUSY) && (status != SQLITE_ERROR));
+        } while((status == SQLITE_ROW) && (status != SQLITE_ERROR));
+        sqlite_finalize(query,&err);
+
+        
+        timer(TIMER_STOP,(gchar*)(gchar*)__FUNCTION__);
+        timer(TIMER_START,"callback for returning word's translation START");
+        // calling callback for word translation
+
+        data->cb_search_word_trans(tran, word, data->cb_search_word_trans_data, ENGINE_NO_ERROR);
+               
+        timer(TIMER_STOP,"callback for returning word's translation END");
+        if(data->auto_free) {
+                LOGS("Bookmark/%s->%s() deleting all dynamic data because "
+                     "AUTO_FREE=TRUE\n",
+                     (gchar*)__FILE__,
+                     (gchar*)__FUNCTION__
+                    );
+                g_free(tran);
+        }
+        tran = NULL;
+}
+
+//------------------------------------------------------------------------------
+void bm_engine_close(Engine* engine)
+{
+        LOGS("Bookmark/%s->%s() called.\n-->PARAM: engine adress=%p\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                engine);
+        g_assert(engine != NULL);
+        
+        BookData* data = (BookData*)(engine->engine_data);
+        sqlite_close(data->db);
+        
+        LOGS("Bookmark/%s->%s() engine at adress=%p is deleted.\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                engine);
+        g_free(engine);
+        engine = NULL;
+}
+//------------------------------------------------------------------------------
+
+Engine* bm_engine_create(gchar* location,
+                      EngineOptimizationFlag auto_cache,
+                      cb_progress progress_handler,
+                      gpointer progress_data,
+                      gdouble seed)
+{
+        LOGS("Bookmark/%s->%s() called.\n"
+             "-->PARAM:location=\'%s\'\n"
+             "-->PARAM:auto_cache=%d\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             location,
+             (guint)auto_cache
+            );
+        timer(TIMER_START,(gchar*)(gchar*)__FUNCTION__);        
+
+        gchar* tmp = g_strdup(location);
+        string_to_path(&tmp);
+
+        Engine* result = (Engine*)g_try_malloc(sizeof(Engine));
+        result->engine_location = bm_engine_location;
+        result->engine_is_optimized = bm_engine_is_optimized;
+        result->engine_optimize = bm_engine_optimize;
+        result->engine_search_word_list = bm_engine_search_word_list;
+        result->engine_search_word_translation = 
+                        bm_engine_search_word_translation;        
+        result->engine_close = bm_engine_close;
+        result->engine_status = bm_engine_status;
+        result->engine_error_message = bm_engine_status_message;
+        result->engine_set_callback = bm_engine_set_callback;
+        result->engine_set_progress_seed = bm_engine_set_progress_seed;
+        result->engine_set_auto_free = bm_engine_set_auto_free;
+        // 0.2 API:
+        result->engine_add_word = bm_engine_add_word;
+        result->engine_remove_word = bm_engine_remove_word;
+        result->engine_get_lang_from = bm_engine_get_lang_from;
+        result->engine_get_lang_to = bm_engine_get_lang_to;
+        result->engine_get_title = bm_engine_get_title;
+        result->engine_get_icon_path = bm_engine_get_icon_path;
+
+
+        BookData* data = (BookData*)g_try_malloc(sizeof(BookData));
+        result->engine_data = (gpointer)data;
+
+        LOGS("Bookmark/%s->%s() opening file...\'%s\'.\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             location
+            );
+        gchar* tmp2 = g_strconcat(tmp,"/ws_bookmarks",NULL);
+        gchar* err;
+        data->db = sqlite_open(tmp2,0600,&err);
+        g_free(tmp2); tmp2 = NULL;
+        if(!(data->db)) {
+                LOGS("Bookmark/%s->%s() opening bookmark file failed.%s\n",
+                     (gchar*)__FILE__,
+                     (gchar*)__FUNCTION__,
+                     err
+                    );
+                g_free(err);
+                g_free(data);
+                g_free(result);
+                result = NULL;
+        }
+        else {
+                LOGS("Bookmark/%s->%s()opening dictionary file successed.\n",
+                        (gchar*)__FILE__,
+                        (gchar*)__FUNCTION__
+                       );
+                data->dict_path = g_strdup(tmp);
+                data->cb_progress_caching = progress_handler;
+                data->cb_progress_caching_data = progress_data;        
+                data->cb_progress_caching_seed = seed;        
+                data->cb_progress_word_list = NULL;
+                data->cb_progress_word_list_data = NULL;
+                data->cb_progress_word_list_seed = 0.01;
+                data->cb_progress_word_trans = NULL;
+                data->cb_progress_word_trans_data = NULL;
+                data->cb_progress_word_trans_seed = 0.01;
+
+                data->cb_search_word_list = NULL;
+                data->cb_search_word_list_data = NULL;
+
+                data->cb_search_word_trans = NULL;
+                data->cb_search_word_trans_data = NULL;
+
+                data->auto_free = FALSE;
+                // there is no cache mechanizm in bookmarks
+        }
+        g_free(tmp); tmp = NULL;
+        
+        timer(TIMER_STOP,(gchar*)(gchar*)__FUNCTION__);
+        LOGS("Bookmark/%s->%s() returned Engine at adress=%p\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             result
+            );
+        return result;
+}
+//------------------------------------------------------------------------------
+
+
+
+static gboolean is_Bookmark_file(gchar* file) {
+        LOGS("Bookmark/%s->%s() called.\n\
+                 -->PARAM:file=\'%s\'\n",
+                 (gchar*)__FILE__,
+                 (gchar*)__FUNCTION__,
+                 file
+               );
+        gchar* err;
+        sqlite* tmp = sqlite_open(file,0600,&err);
+        if(err || tmp==NULL) {
+                LOGS("Wrong file! Not a sqlite database.\n");
+                g_free(err);
+                return FALSE;
+        }
+
+        gint result = 0;
+        gchar sql[] = "SELECT COUNT(word_id) FROM translations WHERE word=\'%\';";  
+
+        result = sqlite_exec(tmp, sql, NULL, NULL, &err);
+        if(err || result!=0) {
+                LOGS("Wrong database! Not a bookmark.\n");
+                g_free(err);
+                return FALSE;
+        }
+        return TRUE;
+}
+//------------------------------------------------------------------------------
+
+
+void bm_engine_optimize(Engine* engine)
+{
+        LOGS("Bookmark/%s->%s() called for engine at adress=%p\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             engine
+            );
+        LOGS("Unsupported optimization mechanizm for this engine!\n");
+        LOGS("Bookmark/%s->%s()'s work finished.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+}
+//------------------------------------------------------------------------------
+gboolean bm_engine_check(gchar* location) 
+{        
+        LOGS("Bookmark/%s->%s() called.\n-->PARAM:location=\'%s\'\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             location
+            );
+        timer(TIMER_START,(gchar*)(gchar*)__FUNCTION__);
+        gboolean result = TRUE;        
+        gchar* filepath = g_strdup(location);
+        gchar* tmp = NULL;
+        
+        string_to_path(&filepath);
+        if (filepath == NULL) {
+                result = FALSE;
+                LOGS("Bookmark/%s->%s() location \'%s\' is not a proper "
+                     "path!\n",
+                     (gchar*)__FILE__,
+                     (gchar*)__FUNCTION__,
+                     location
+                    );
+        }
+        else {
+                tmp = g_strconcat(filepath,"/ws_bookmarks",NULL);
+                g_free(filepath);
+                filepath = tmp;
+                tmp = NULL;
+
+                LOGS("Bookmark/%s->%s() finnal file to check is: %s\n",
+                     (gchar*)__FILE__,
+                     (gchar*)__FUNCTION__,
+                     filepath
+                    );
+                if (!g_file_test(filepath, G_FILE_TEST_IS_REGULAR)) {
+                        LOGS("Bookmark/%s->%s() file \'%s\' does not exists!\n",
+                             (gchar*)__FILE__,
+                             (gchar*)__FUNCTION__,
+                             filepath
+                            );
+                        result = FALSE;
+                };
+        };
+        if (result != FALSE) {
+                result = is_Bookmark_file(filepath);
+        };
+
+        g_free(filepath);
+        timer(TIMER_STOP,(gchar*)(gchar*)__FUNCTION__);
+        LOGS("Bookmark/%s->%s() returned bool statement=%s.\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             PRINT_STATE(result)
+            );
+        return result;
+}
+
+//------------------------------------------------------------------------------
+gboolean bm_engine_is_optimized(Engine* engine) 
+{
+        LOGS("Bookmark/%s->%s() called.\n-->PARAM: engine adress=%p\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             engine
+            );
+        g_assert(engine != NULL);                
+        gboolean result = FALSE;
+        LOGS("Bookmark/%s->%s() returned bool statement=%s.\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             PRINT_STATE(result)
+            );
+        return result;
+}
+//------------------------------------------------------------------------------
+
+void bm_engine_search_word_list(Engine* engine, gchar* pattern)
+{
+        LOGS("Bookmark/%s->%s() called. Searching words list\n"
+             "-->PARAM:engine at adress=%p\n"
+             "-->PARAM:pattern=\"%s\"\n",
+             (gchar*)__FILE__,
+             (gchar*)__FUNCTION__,
+             engine,
+             pattern
+            );
+        g_assert(engine != NULL);
+        g_assert(pattern != NULL);
+
+        timer(TIMER_START,(gchar*)(gchar*)__FUNCTION__);
+        BookData* data = (BookData*)(engine->engine_data);
+        if(data->cb_search_word_list == NULL) {
+                LOGS("Bookmark/%s->%s() callback for Word List not set. "
+                     "Searching aborted.\n",
+                     (gchar*)__FILE__,
+                     (gchar*)__FUNCTION__
+                    );
+                timer(TIMER_STOP,(gchar*)(gchar*)__FUNCTION__);
+                return;
+        };
+
+        gchar* tmp = g_utf8_strdown(pattern,-1);
+        sqlite_vm* query = NULL;
+        gchar* sql = NULL;
+        gchar* tran = NULL;
+
+
+        sql = g_strconcat("SELECT word FROM words WHERE "
+                          "word LIKE \'",tmp,"\%\';",NULL);
+        LOGS("QUERY: %s\n",sql);
+        gint sql_res = 0;
+        const gchar* end;
+        gchar* err = NULL;
+        sql_res = sqlite_compile(data->db,  /* The open database */
+                                 (const gchar*)sql,       /* SQL statement to be compiled */
+                                 &end,      /* OUT: uncompiled tail of zSql */
+                                 &query,    /* OUT: the virtual machine */
+                                 &err       /* OUT: Error message. */
+                                );
+        if(err || sql_res!=0) {
+                LOGS("Error while compiling query:\n%s\nreason:%s\n",sql,err);
+                g_free(sql); sql = NULL;
+                return;
+        };    
+        gint nCol = 0;
+        const gchar** values = NULL;
+        const gchar** head = NULL;
+        gint status = 0;
+        gboolean first = TRUE;
+        GArray* result = g_array_new(TRUE, TRUE, sizeof(gchar*) );
+        do { 
+                first = TRUE;
+                do {
+                        if(!first) sleep(100);
+                        first = FALSE;;
+                        status = sqlite_step(
+                                        query, 
+                                        &nCol,            
+                                        &values,  
+                                        &head 
+                                        );
+                        if(status == SQLITE_ERROR) {
+                                LOGS("Error while making next step\n");
+                                g_free(sql); sql = NULL;
+                                        return;
+                        };
+                        if(status == SQLITE_ROW) {
+                                LOGS("Fount new word: \"%s\"\n",&(values[0][0]));
+                                gchar* tmp = g_strdup((gchar*)&(values[0][0]));
+                                g_array_append_val(result, tmp );        
+                        }
+                } while((status == SQLITE_BUSY) && (status != SQLITE_ERROR));
+        } while((status == SQLITE_ROW) && (status != SQLITE_ERROR));
+        sqlite_finalize(query,&err);
+        timer(TIMER_STOP,(gchar*)(gchar*)__FUNCTION__);
+
+
+        timer(TIMER_START,"callback for returning words LIST START");
+        // calling callback for word translation
+
+        data->cb_search_word_list(result , pattern, data->cb_search_word_list_data, ENGINE_NO_ERROR);
+                
+        timer(TIMER_STOP,"callback for returning word LIST END");
+        if(data->auto_free) {
+                LOGS("Bookmark/%s->%s() deleting all dynamic data because "
+                     "AUTO_FREE=TRUE\n",
+                     (gchar*)__FILE__,
+                     (gchar*)__FUNCTION__
+                    );
+                g_free(tran);
+        }
+}
+
+//==============================================================================
+//==============================================================================
+//==============================================================================
+//---------------------------------------------------------- COMPLETED FUNCTIONS
+//==============================================================================
+// global functions
+EngineModule engine_global_functions()
+{
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       EngineModule* result = g_try_new(EngineModule, 1);        
+       result->engine_check             = bm_engine_check;
+       result->engine_description       = bm_engine_description;
+       result->engine_format            = bm_engine_format;
+       result->engine_version           = bm_engine_version;
+       result->engine_create            = bm_engine_create;
+       LOGS("Bookmark/%s->%s()returned EngineModule at adress=%p.\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+             result
+           );
+       return *result;
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_status_message(error)
+gchar* bm_engine_status_message(EngineStatus error) 
+{
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       switch (error) {
+               case ENGINE_NO_ERROR:
+                       return "No error.";
+               case ENGINE_WRONG_FILE:
+                       return "File which You are trying to use is wrong type.";
+               case ENGINE_COULDNT_READ:
+                       return "Could not read from file.";
+               case ENGINE_NO_FILE:
+                       return "There is no such a file.";
+               case ENGINE_OUT_OF_MEMORY:
+                       return "There were no enough memory for this action.";
+               default:
+                       return "Wrong engine's status identifier!";
+       }
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_module_get_version(module)
+gchar* bm_engine_version() 
+{
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       gchar* result = g_strdup(DIC_ENG_VERSION);
+       LOGS("Bookmark/%s->%s() return string=%s\n",
+               (gchar*)__FILE__,
+               (gchar*)__FUNCTION__,
+               result
+              );
+       return result;
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_module_get_format(module)
+gchar* bm_engine_format() 
+{
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       gchar* result = g_strdup(DIC_ENG_FORMAT);
+       LOGS("Bookmark/%s->%s() return string=%s\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            result
+           );
+       return result;
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_module_get_description(module)
+gchar* bm_engine_description() 
+{
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       gchar* result = g_strdup(DIC_ENG_DESCRIPTION);
+       LOGS("Bookmark/%s->%s() return string=%s\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            result
+           );
+       return result;
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_get_location(engine)
+gchar* bm_engine_location(Engine* engine)
+{
+       LOGS("Bookmark/%s->%s() called.\n-->PARAM: engine adress=%p\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            engine
+           );
+       g_assert(engine != NULL);
+       BookData* data = (BookData*)(engine->engine_data);
+        
+       gchar* result;
+       if(data->auto_free) {
+               result = data->dict_path;
+       }
+       else {
+               result = g_strdup(data->dict_path);
+       }
+
+       LOGS("Bookmark/%s->%s() returned string=%s\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            result
+           );
+       return result;
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_set_auto_free(engine, state)
+void bm_engine_set_auto_free(Engine* engine, gboolean state) 
+{
+       LOGS("Bookmark/%s->%s() called.\n"
+            "-->PARAM:engine at adress=%p\n"
+            "-->PARAM:state=%s\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            engine,
+            PRINT_STATE(state)
+           );
+       g_assert(engine != NULL);
+       BookData* data = (BookData*)(engine->engine_data);
+        
+       data->auto_free = state;
+       LOGS("Bookmark/%s->%s() Current auto_free is %s\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            PRINT_STATE(data->auto_free)
+           );
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_get_last_status(engine)
+EngineStatus bm_engine_status(Engine* engine) 
+{
+       LOGS("Bookmark/%s->%s() called.\n"
+               "-->PARAM:engine at adress=%p\n",
+               (gchar*)__FILE__,
+               (gchar*)__FUNCTION__,
+              engine
+              );
+       BookData* data = (BookData*)(engine->engine_data);
+       LOGS("Bookmark/%s->%s() returned error code: %d\n",
+            (gchar*)__FILE__,
+            (gchar*)__FUNCTION__,
+            (gint)(data->last_error)
+           );        
+       return data->last_error;
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_set_progress_seed(engine, signal, val)
+void bm_engine_set_progress_seed(Engine* engine, gchar* signal, gdouble seed) {
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       BookData* data = (BookData*)(engine->engine_data);
+       if(g_ascii_strcasecmp(signal,ENGINE_PROGRESS_OPTIMIZING_SIGNAL) == 0)  {
+               data->cb_progress_caching_seed = seed;
+               LOGS("Bookmark/%s->%s() sets new seed=%0.2f for for signal "
+                    "\"%s\".\n",
+                    (gchar*)__FILE__,
+                    (gchar*)__FUNCTION__,
+                    seed,
+                    signal
+                   );        
+       } 
+       else {
+               LOGS("Bookmark/%s->%s() unsupported signalfor progress: %s.\n",
+                    (gchar*)__FILE__,
+                    (gchar*)__FUNCTION__,
+                    signal
+                   );
+       };
+}
+//------------------------------------------------------------------------------
+// for macro: dict_eng_set_callback(engine,signal,c_handler,data)
+gpointer bm_engine_set_callback(Engine* engine,
+                            gchar* signal,
+                            gpointer c_handler,
+                            gpointer user_data)
+{
+       LOGS("Bookmark/%s->%s() called.\n",(gchar*)__FILE__,(gchar*)__FUNCTION__);
+       g_assert(engine != NULL);
+       g_assert(signal != NULL);
+       g_assert(c_handler != NULL);
+       BookData* data = (BookData*)(engine->engine_data);
+       if(g_ascii_strcasecmp(signal,ENGINE_PROGRESS_OPTIMIZING_SIGNAL) == 0)  {
+               gpointer result = data->cb_progress_caching;
+               data->cb_progress_caching = c_handler;
+               data->cb_progress_caching_data = user_data;
+               LOGS("Bookmark/%s->%s() sets handler for signal \"%s\".\n",
+                       (gchar*)__FILE__,
+                       (gchar*)__FUNCTION__,
+                       signal
+                      );
+               LOGS("Bookmark/%s->%s() Function at adress =  %d.\n",
+                       (gchar*)__FILE__,
+                       (gchar*)__FUNCTION__,
+                       (guint)c_handler
+                      );
+               LOGS("Bookmark/%s->%s()     Data at adress =  %d.\n",
+                       (gchar*)__FILE__,
+                       (gchar*)__FUNCTION__,
+                       (guint)user_data
+                      );
+               return result;                
+       }
+       else if(g_ascii_strcasecmp(signal, ENGINE_WORD_LIST_SIGNAL) == 0) {
+               gpointer result = data->cb_search_word_list;
+               data->cb_search_word_list = c_handler;
+               data->cb_search_word_list_data = user_data;
+               LOGS("Bookmark/%s->%s() sets handler for signal \"%s\".\n",
+                       (gchar*)__FILE__,
+                       (gchar*)__FUNCTION__,
+                       signal
+                      );
+               LOGS("Bookmark/%s->%s() Function at adress =  %d.\n",
+                       (gchar*)__FILE__,
+                       (gchar*)__FUNCTION__,
+                       (guint)c_handler
+                      );
+               LOGS("Bookmark/%s->%s()     Data at adress =  %d.\n",
+                       (gchar*)__FILE__,
+                       (gchar*)__FUNCTION__,
+                       (guint)user_data
+                      );
+               return result;                        
+       }
+       else if(g_ascii_strcasecmp(signal,
+               ENGINE_WORD_TRANSLATION_SIGNAL) == 0)  {
+                       gpointer result = data->cb_search_word_trans;
+                       data->cb_search_word_trans = c_handler;
+                       data->cb_search_word_trans_data = user_data;
+                       LOGS("Bookmark/%s->%s() sets handler for signal \"%s\".\n",
+                               (gchar*)__FILE__,
+                               (gchar*)__FUNCTION__,
+                               signal
+                              );
+                       LOGS("Bookmark/%s->%s() Function at adress =  %d.\n",
+                               (gchar*)__FILE__,
+                               (gchar*)__FUNCTION__,
+                               (guint)c_handler
+                              );
+                       LOGS("Bookmark/%s->%s()     Data at adress =  %d.\n",
+                               (gchar*)__FILE__,
+                               (gchar*)__FUNCTION__,
+                               (guint)user_data
+                              );
+                       return result;                        
+               }
+               else {
+                       g_warning("Bookmark/%s->%s() unsupported signal: %s.\n",
+                                 (gchar*)__FILE__,
+                                 (gchar*)__FUNCTION__,
+                                 signal
+                                );
+                       return NULL;
+               }
+}
+
+
+
+
+
+
+//==============================================================================
+//==============================================================================
+//==============================================================================
+//---------------------------------------------------------- HELPFULLY FUNCTIONS
+//==============================================================================
+
+//------------------------------------------------------------------------------
+static gchar* string_to_path(gchar** string) {
+        LOGS("Bookmark/%s->%s() called.\n\
+                 -->PARAM:string=\'%s\'\n",
+                 (gchar*)__FILE__,
+                 (gchar*)__FUNCTION__,
+                 string[0]
+               );
+        gchar* arg = string[0];
+        gchar* new = NULL;
+        // cleaning from leading and trailing whitespaces
+        g_strstrip(arg);        
+         // add current directory if this is not absolute directory
+        if (!g_path_is_absolute(arg)) {
+                gchar* tmp = g_get_current_dir();
+                new = g_strconcat(tmp,"/",arg,NULL);
+                g_free(arg); arg = new; new = NULL;
+        };
+        // this is not a directory
+        if (!g_file_test(arg, G_FILE_TEST_IS_DIR)) {        
+                // if this is wrong filepath, string was wrong
+                if (!g_file_test(arg, G_FILE_TEST_IS_REGULAR)) {        
+                        g_free(arg);
+                        new = NULL;
+                }
+                //if this is a file, remove filename
+                else
+                {   
+                        new = g_path_get_dirname (arg);
+                        g_free(arg);
+                }
+        }
+        // this is a directory
+        else {   
+                // remove suffix "/" if neded...     
+                if (g_str_has_suffix(arg,"/") ) {        
+                        new = g_path_get_dirname (arg);
+                        g_free(arg);
+                }
+                else {
+                        new = arg;
+                }
+        };
+        // now in new should be proper filepath, if not, string was wrong
+        if (!g_file_test(new, G_FILE_TEST_IS_DIR))  {        
+                // if that directory does not exist, passed string wasn't proper       
+                g_free(new);
+                new = NULL;
+        };
+        // replace string under passed address
+        string[0] = new;
+        LOGS("Bookmark/%s->%s() returned string=\'%s\'\n",
+                (gchar*)__FILE__,
+                (gchar*)__FUNCTION__,
+                string[0]
+               );
+        return new;
+}
+//------------------------------------------------------------------------------
+static double timer(gboolean start, gchar* message)
+{
+       static GArray* stack = NULL;
+       static gboolean first_run = TRUE;
+       static struct timeval actual_time;
+       static struct timeval last_time;
+       static struct timeval result;
+       static double seconds = 0.0;
+       if(first_run) {
+               first_run = FALSE;
+               stack = g_array_new(TRUE, TRUE, sizeof(struct timeval));
+       };        
+
+       if (start) {
+               LOGS("Bookmark->%s() start timer for function '%s()'.\n",
+                       (gchar*)__FUNCTION__,
+                       message
+                      );
+               g_array_prepend_val(stack, actual_time);
+               gettimeofday(&g_array_index(stack, struct timeval, 0),NULL);
+               return -1.0;
+       }
+        // we just want to end some timer - print some information about 
+        // working time;
+       else {          
+               gettimeofday(&actual_time,NULL);
+               last_time = g_array_index(stack, struct timeval, 0);
+               g_array_remove_index(stack, 0);
+
+               if (actual_time.tv_usec < last_time.tv_usec) {
+                       int nsec = (last_time.tv_usec - actual_time.tv_usec) / 
+                                       (1000000 + 1);
+                       last_time.tv_usec -= 1000000 * nsec;
+                       last_time.tv_sec += nsec;
+               }
+               if (actual_time.tv_usec - last_time.tv_usec > 1000000) {
+                       int nsec = (last_time.tv_usec - actual_time.tv_usec) / 
+                                       1000000;
+                       last_time.tv_usec += 1000000 * nsec;
+                       last_time.tv_sec -= nsec;
+               }
+               result.tv_sec = actual_time.tv_sec - last_time.tv_sec;
+               result.tv_usec = actual_time.tv_usec - last_time.tv_usec;
+               seconds = (((double)(result.tv_usec)) / 1e6) +
+                               ((double)(result.tv_sec));
+
+               LOGS("Bookmark->%s() function \'%s()\' was working for: %g "
+                               "[s] or %ld [us].\n",
+               (gchar*)__FUNCTION__,
+               message,
+               seconds,
+               ((long)(result.tv_sec*1e6)+(result.tv_usec))
+                      );
+                // stack is empty so we delete everything
+               if(stack->len == 0)   
+               {
+                       g_array_free(stack, TRUE);
+                       first_run = TRUE;
+               }
+       }
+       return seconds;
+}
+//------------------------------------------------------------------------------
+
+
+
diff --git a/bookmarks/src/test.c b/bookmarks/src/test.c
new file mode 100644 (file)
index 0000000..577a259
--- /dev/null
@@ -0,0 +1,141 @@
+/*******************************************************************************
+This file is part of WhiteStork.
+
+WhiteStork 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.
+
+WhiteStork is distributed in the hope that 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 WhiteStork; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Copyright 2006 ComArch S.A.
+*******************************************************************************/
+#include <gmodule.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "../../dictionary_engine.h"
+
+
+getting_additional get_functions; // additinal functions for concrete module (e.g. XDXF)
+
+void print_list(GArray* list, gchar* pattern, gpointer user_data, EngineStatus error) {
+       printf((gchar*)user_data,pattern);
+       int i = 0;
+       while(g_array_index(list, gchar*, i) != NULL) 
+       {
+               printf("  %d. : %s\n",i+1,g_array_index(list, gchar*, i));
+               i++;
+       }
+        printf("--------------------------------------------------\n");
+}
+
+void print_translation(gchar* translation, gchar* word, gpointer user_data, EngineStatus error) {
+       printf((gchar*)user_data,word);
+       printf("%s\n\nTRANSLATION ENDS.\n",translation);
+}
+
+void caching_progress(gdouble value, gpointer user_data, EngineStatus error) {
+       printf((gchar*)user_data,value);
+}
+
+int main(int argc, char** argv) 
+{
+       char* nameApp = "StarDictEngine test: ";
+       printf("%sStarting test program of module: dictionary_engine.\n",nameApp);
+
+       
+       gchar* current_directory = g_get_current_dir();
+       printf("%sCurrent directory: %s\n",nameApp,current_directory);
+       gchar* library_to_path = g_strconcat(current_directory, "/ws_bookmark.so", NULL);
+       printf("%sEngine library should be in location:\n\t%s\n",nameApp,library_to_path);
+       
+       GModule *library = g_module_open(library_to_path, G_MODULE_BIND_LAZY);
+       if(!library) {
+               printf("%sLoading module failed. \nReason: %s\n",nameApp,g_module_error());
+               return 1;               
+       };
+       
+       //dict_eng_module_get_global_functions(library,get_functions);
+       g_module_symbol ( (library),_GLOBAL_FUNCTIONS_NAME_, (gpointer)&get_functions);
+       if(get_functions == NULL) {
+               printf("%sLoading function failed\n",nameApp);
+               return 2;
+       }
+       else printf("%sLoading function OK\n",nameApp);
+
+       EngineModule module = get_functions();
+       printf("Module description: %s\n",dict_eng_module_get_description(module));
+       Engine* sd;
+
+        gboolean is_compatible = dict_eng_module_check(module,"/home/str/whitestork/engines/bookmark/ws_bookmarks");
+       if(is_compatible == TRUE)
+       {
+               printf("Location is compatible with enigne!\n");
+       }
+       else {
+               printf("Location is not compatible with enigne!\n");
+               return 1;
+       }
+
+       //printf("%sCheck OK. Module description: %s\n", nameApp, dict_eng_module_get_description(module));
+
+       //xdxf = dict_eng_module_create_ext(module, "/home/lukasz/MyDocs/repo/WhiteStork/trunk/engine/bin" , ENGINE_CREATE, caching_progress, "Current progress of caching is: %0.2f.\n", 0.03 );
+       //home/stranger/whitestork/engine0.2/
+//     xdxf = dict_eng_module_create(module, "/home/stranger/whitestork/engine0.2/" , ENGINE_NO);
+//     dict_eng_set_callback(xdxf, ENGINE_PROGRESS_CACHING, caching_progress, "Current progress of caching is: %0.2f.\n");
+//     dict_eng_set_progress_seed(xdxf, ENGINE_PROGRESS_CACHING, 0.02);
+
+/*     if(dict_eng_is_optimized(xdxf) == FALSE)
+       {
+               printf("Dictionary has no cache!\nCreating cache file....\n");
+               dict_eng_optimize(xdxf);
+       }
+       else {
+               printf("Dictionary has already cache file!\n");
+       }*/
+        sd = dict_eng_module_create(module,
+            "/home/str/whitestork/engines/bookmark/ws_bookmarks" ,
+             ENGINE_CREATE);
+       printf("Lokacja: %s\n",dict_eng_get_location(sd));
+
+       dict_eng_set_callback(sd,
+                             ENGINE_WORD_LIST_SIGNAL,
+                             print_list,
+                             "Word list matches to pattern: %s\n"
+                            );
+       dict_eng_set_callback(sd,
+                             ENGINE_WORD_TRANSLATION_SIGNAL ,
+                             print_translation,
+                             "Translation for word\'%s\':\n");
+       
+       dict_eng_search_word_list(sd,"12");
+       //dict_eng_search_word_translation(sd,"1 word");
+        
+        dict_eng_add_word(sd, "stranger", "autor pluginu tego wlasnie to jest!");
+        dict_eng_add_word(sd, "gandzia", "rulez");
+        dict_eng_add_word(sd, "lukas", "pawlik");
+        dict_eng_remove_word(sd, "stranger");
+
+        dict_eng_search_word_translation(sd,"stranger");
+       
+        dict_eng_add_word(sd, "stranger", "autor pluginu tego wlasnie to jest!");
+        dict_eng_search_word_translation(sd,"stranger");
+        dict_eng_search_word_list(sd,"gandzia");
+
+        printf("Lang FROM:%s\n",dict_eng_get_lang_from(sd));
+        printf("  Lang TO:%s\n",dict_eng_get_lang_to(sd));
+        printf("    Title:%s\n",dict_eng_get_title(sd));
+        printf("Icon path:%s\n",dict_eng_get_icon_path(sd));
+       
+       dict_eng_destroy(sd);
+       printf("%sClosed.\n",nameApp);  
+       return 0;
+}
+
diff --git a/bookmarks/src/testMakeDatabase.c b/bookmarks/src/testMakeDatabase.c
new file mode 100644 (file)
index 0000000..63c983a
--- /dev/null
@@ -0,0 +1,135 @@
+/*******************************************************************************
+This file is part of WhiteStork.
+
+WhiteStork 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.
+
+WhiteStork is distributed in the hope that 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 WhiteStork; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Copyright 2006 ComArch S.A.
+*******************************************************************************/
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <sqlite.h>
+
+const guint records_number = 1000;
+
+// ----------------------------------------------------------------------------------
+sqlite* database_make(gchar* path) {
+        gchar* buffer = NULL;
+        sqlite* result = NULL;
+        // creatingh database
+        result = sqlite_open(path,
+                             0600,
+                             &buffer);
+        // check if everything was okey
+        if(!result) {
+                g_printf("Error while trying to create database:\n%s\n",buffer);
+                g_free(buffer); buffer = NULL;
+                return NULL;
+        };
+        // return pointer to database
+        return result;
+}
+// ----------------------------------------------------------------------------------
+gint database_add_test_table(sqlite* db) {
+        gint result = 0;
+        gchar sql[] = "CREATE TABLE words(id INTEGER PRIMARY KEY, word TEXT UNIQUE);";
+        gchar sql2[] = "CREATE TABLE translations(id INTEGER PRIMARY KEY, word_id INTEGER, word TEXT, translation TEXT);";
+        gchar* err = NULL;      
+
+        result = sqlite_exec(db, sql, NULL, NULL, &err);
+        if(err || result!=0) {
+                g_printf("Error while creating \'words\' table:\n%s\n",err);
+                return 1;
+        }
+
+        result = sqlite_exec(db, sql2, NULL, NULL, &err);
+        if(err || result!=0) {
+                g_printf("Error while creating \'translations\' table:\n%s\n",err);
+                return 2;
+        }
+
+        return result;
+}
+// ----------------------------------------------------------------------------------
+gint database_add_test_record(sqlite* db, guint i) {
+        gint result = 0;
+        gchar* sql = NULL;
+        gchar* err = NULL;
+        gint last_id = 0;
+        gint word_count = 1;
+        gchar buffer[] = "                     ";
+        gchar last_char[] = "                      ";
+        gchar tran[] = "this is a translation number 10.000 for word 10.000 word <-----";
+        g_sprintf(buffer,"%d word",i);
+
+        sql = g_strconcat("INSERT INTO words VALUES(NULL,\'",buffer,"\');", NULL);        
+        result = sqlite_exec(db, sql, NULL, NULL, &err);
+        if(err || result!=0) {
+                g_printf("Error while trying to add new word %d:\n%s\n",i,err);
+                g_free(sql);
+                return 1;
+        }
+        g_free(sql);
+        last_id = sqlite_last_insert_rowid(db);
+        g_sprintf(last_char,"%d",last_id);
+
+        if(i == 5000) {
+                word_count = 5;
+                g_printf("Adding more records for word - test\n");
+        }
+        gint j;
+        for(j=0; j<word_count; ++j) {
+                g_sprintf(tran,"this is a translation number %d for word %i",j,i);
+                sql = g_strconcat("INSERT INTO translations VALUES(NULL,",last_char,",'slowko',\'",tran,"\');", NULL); 
+                result = sqlite_exec(db, sql, NULL, NULL, &err); 
+                if(err || result!=0) {
+                        g_printf("Error while trying to add new word trans %d:\n %s \n",j,err);
+                        g_free(sql);
+                        return 1;
+                }
+                g_free(sql);             
+        }
+        
+        return result;
+}
+// ----------------------------------------------------------------------------------
+gint main(gint argc, gchar* argv[]) {
+        g_printf("Making new database with %d records...\n",records_number);
+        
+        // create database
+        sqlite* db = database_make("ws_bookmarks");
+        if(!db) return 1;
+
+        // create table for records
+        database_add_test_table(db);
+
+        // create testing records
+        guint i;
+        gint code = 0;
+        for(i=0; i<records_number; ++i) {
+                code = database_add_test_record(db, i);
+                // if there were some errors, do not continue
+                if(code != 0) break;
+                // give to the user some feedback about progress of proccess
+                if(!(i % 50)) {
+                        g_printf("%d / %d records already added to database\n",i,records_number);
+                }
+        }
+
+        // close database
+        sqlite_close(db);
+        return 0;
+}
+// ----------------------------------------------------------------------------------
diff --git a/data/dict_icon.png b/data/dict_icon.png
deleted file mode 100644 (file)
index 7969f70..0000000
Binary files a/data/dict_icon.png and /dev/null differ
index ec8ca10..b35c0cc 100644 (file)
Binary files a/data/engine_xdxf_icon.png and b/data/engine_xdxf_icon.png differ
diff --git a/data/engine_xdxf_icon_2.png b/data/engine_xdxf_icon_2.png
new file mode 100644 (file)
index 0000000..ec8ca10
Binary files /dev/null and b/data/engine_xdxf_icon_2.png differ
diff --git a/data/files_debbuild/bmkC_changelog b/data/files_debbuild/bmkC_changelog
new file mode 100644 (file)
index 0000000..6f8e03c
--- /dev/null
@@ -0,0 +1,3 @@
+whitestorkbookmarks (0.1.0)
+
+  * Initial release
\ No newline at end of file
diff --git a/data/files_debbuild/bmkC_changelog.Debian b/data/files_debbuild/bmkC_changelog.Debian
new file mode 100644 (file)
index 0000000..7bc6702
--- /dev/null
@@ -0,0 +1,2 @@
+whitestork Debian maintainer and upstream author are identical.
+Therefore see also normal changelog file for Debian changes.
\ No newline at end of file
diff --git a/data/files_debbuild/bmkC_copyright b/data/files_debbuild/bmkC_copyright
new file mode 100644 (file)
index 0000000..631b26c
--- /dev/null
@@ -0,0 +1,5 @@
+whitestorkbookmarks
+
+Copyright 2006 ComArch S.A.
+
+See: https://garage.maemo.org/projects/mdictionary
\ No newline at end of file
diff --git a/data/files_debbuild/bmkc_control b/data/files_debbuild/bmkc_control
new file mode 100644 (file)
index 0000000..233d450
--- /dev/null
@@ -0,0 +1,14 @@
+Package: whitestorkbookmarks
+Version:
+Section: user/tools Tools                                                                
+Priority: optional                                                           
+Architecture: all   
+Installed-Size: 41                                                            
+Depends: libsqlite0 (>= 2.8.13), whitestork (>= 0.4.0)
+Maintainer: ComArch S.A. <contact@comarch.com>                              
+Description: Multilingual dictionary.
+ This dictionary have a modular build so you
+ can download many dictionary engines and dictionaries.
+ Furthemore, you can change Your Graphical Interface
+ if You find one more prefereable by You.
+ Copyright 2006, ComArch S.A. 
diff --git a/data/files_debbuild/bmkc_postinst b/data/files_debbuild/bmkc_postinst
new file mode 100755 (executable)
index 0000000..c463070
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+echo -e "Postinstalling actions..." 
+
+if [ "$1" != "upgrade" ]
+then
+# End automatically added section
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/name "Bookmarks"'
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/path "/usr/share/WhiteStork/dictionaries/bookmarks"'
+su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/active false'
+su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/optimized true'
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Engines/bookmarks/path "/usr/lib/WhiteStork/ws_bookmark.so"'
+
+chmod 0777 /usr/share/WhiteStork/dictionaries/bookmarks
+fi
\ No newline at end of file
diff --git a/data/files_debbuild/bmkc_postrm b/data/files_debbuild/bmkc_postrm
new file mode 100755 (executable)
index 0000000..36c6660
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "Postremoving actions..."
diff --git a/data/files_debbuild/bmkc_preinst b/data/files_debbuild/bmkc_preinst
new file mode 100755 (executable)
index 0000000..302910b
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "Preinstallation actions..."
diff --git a/data/files_debbuild/bmkc_prerm b/data/files_debbuild/bmkc_prerm
new file mode 100755 (executable)
index 0000000..35c4e53
--- /dev/null
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+echo -e "Preremoving actions..."
+
+rm -rf /usr/share/WhiteStork
+
+if [ "$1" != "upgrade" ]
+then
+       echo -e -n "Removing gconf configuration..\n"
+       su $USER -c 'gconftool-2 --recursive-unset /apps/maemo/WhiteStork/Dictionaries/bookmarks'
+fi
+
+# End automatically added section
index f88b245..f1f9031 100644 (file)
@@ -1,5 +1,3 @@
 enginexdxf
 
-Copyright 2006 ComArch S.A.
-
-See: https://garage.maemo.org/projects/mdictionary
+All programs are either under the GPL or LGPL. The complete text of the GPL and LGPL licenses can be found in the /usr/share/common-licenses/GPL and /usr/share/common-licenses/LGPL files.
\ No newline at end of file
index c108f86..8e0515a 100644 (file)
@@ -4,7 +4,7 @@ Section: user/tools Tools
 Priority: optional                                                           
 Architecture: all    
 Installed-Size: 26                                                      
-Depends: libexpat1 (>= 1.95.8)        
+Depends: libexpat1 (>= 1.95.8)       
 Maintainer: ComArch S.A. <contact@comarch.com>                              
 Description: XDXF engine plug-in for WhiteStork.
  This plugin engine give user possibility to use XDXF-based
index 5cfc6fc..752ece9 100755 (executable)
@@ -2,4 +2,11 @@
 
 echo -e "Postinstalling actions..." 
 
+if [ "$1" != "upgrade" ]
+then
+# End automatically added section
+
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Engines/xdxf/path "/usr/lib/WhiteStork/engine_xdxf.so"'
+
+fi
 # End automatically added section
index bbc4dbe..2a3070b 100644 (file)
@@ -1,7 +1,3 @@
-whitestork gui
-
-Copyright 2006 ComArch S.A.
-
-See: https://garage.maemo.org/projects/mdictionary
-
+whitestorkgui
 
+All programs are either under the GPL or LGPL. The complete text of the GPL and LGPL licenses can be found in the /usr/share/common-licenses/GPL and /usr/share/common-licenses/LGPL files.
\ No newline at end of file
diff --git a/data/files_debbuild/gui_oldC_copyright b/data/files_debbuild/gui_oldC_copyright
new file mode 100644 (file)
index 0000000..5e212d5
--- /dev/null
@@ -0,0 +1,69 @@
+Terms of use
+
+
+READ THE TERMS OF USE CAREFULLY BEFORE INSTALALTION OF THIS SOFTWARE. BY
+INSTALALTION OF THIS SOFTWARE, YOU AGREE TO THE FOLLOWING TERMS OF USE.
+
+1. LICENSE TO USE. ComArch grants you a non-exclusive and non-transferable
+license for the internal use only of the accompanying software and
+documentation and any error corrections provided by ComArch (collectively
+"Software"), by the one user.
+
+2. RESTRICTIONS. Software is confidential and copyrighted. Title to Software
+and all associated intellectual property rights is retained by ComArch
+and/or its licensors. Unless enforcement is prohibited by applicable law,
+you may not modify, decompile, or reverse engineer Software. You acknowledge
+that Software is not designed, licensed or intended for use in the design,
+construction, operation or maintenance of any nuclear facility. Sun ComArch
+disclaims any express or implied warranty of fitness for such uses. No
+right, title or interest in or to any trademark, service mark, logo or trade
+name of ComArch or its licensors is granted under this terms of use.
+
+
+3. DISCLAIMER OF WARRANTY. UNLESS SPECIFIED IN THIS AGREEMENT TERMS OF USE,
+ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
+ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS
+ARE HELD TO BE LEGALLY INVALID.
+
+4. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
+WILL COMARCH OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR
+DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
+DAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT
+OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF COMARCH
+HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will
+ComArch's liability to you, whether in contract, tort (including
+negligence), or otherwise, exceed []. The foregoing limitations will apply
+even if the above stated warranty fails of its essential purpose.
+
+5. Termination. This license is effective until terminated. You may
+terminate this license at any time by destroying all copies of Software.
+This license will terminate immediately without notice from ComArch if you
+fail to comply with any provision of this license. Upon Termination, you
+must destroy all copies of Software.
+
+6. Export Regulations. All Software and technical data delivered under this
+terms of use are subject to Polish export control laws and may be subject to
+export or import regulations in other countries. You agree to comply
+strictly with all such laws and regulations and acknowledge that you have
+the responsibility to obtain such licenses to export, re-export, or import
+as may be required after delivery to you.
+
+7. Governing Law. Any action related to this license will be governed by
+Polish Law.
+
+8. Severability. If any provision of this terms of use is held to be
+unenforceable, this terms of use will remain in effect with the provision
+omitted, unless omission would frustrate the intent of the parties, in which
+case this terms of use will immediately terminate.
+
+9. Integration. This document is the entire  agreement between you and
+ComArch relating to its subject matter. It supersedes all prior or
+contemporaneous oral or written communications, proposals, representations
+and warranties and prevails over any conflicting or additional terms of any
+quote, order, acknowledgment, or other communication between the parties
+relating to its subject matter during the term of these terms of use. No
+modification of this Agreement will be binding, unless in writing and signed
+by an authorized representative of each party.
+
+
index f7cb669..0d6a15e 100644 (file)
@@ -4,7 +4,7 @@ Section: user/tools Tools
 Priority: optional                                                           
 Architecture: all  
 Installed-Size: 64                                                          
-Depends: libexpat1 (>= 1.95.8)        
+Depends: libexpat1 (>= 1.95.8), whitestork (>= 0.1.0)        
 Maintainer: ComArch S.A. <contact@comarch.com>                              
 Description: GUI for whitestork.
  This package contain an example of GUI for 
diff --git a/data/files_debbuild/metC_changelog b/data/files_debbuild/metC_changelog
new file mode 100644 (file)
index 0000000..8b4e027
--- /dev/null
@@ -0,0 +1,5 @@
+enginexdxf (0.1.0)
+
+  * Testing changelog.
+  * enginexdxf
+ -- author <email>  2006-09-07
diff --git a/data/files_debbuild/metC_changelog.Debian b/data/files_debbuild/metC_changelog.Debian
new file mode 100644 (file)
index 0000000..8023d75
--- /dev/null
@@ -0,0 +1 @@
+See changelog.
\ No newline at end of file
diff --git a/data/files_debbuild/metC_copyright b/data/files_debbuild/metC_copyright
new file mode 100644 (file)
index 0000000..7b22cfd
--- /dev/null
@@ -0,0 +1,3 @@
+WhiteStork Dictionary
+
+All programs are either under the GPL or LGPL. The complete text of the GPL and LGPL licenses can be found in the /usr/share/common-licenses/GPL and /usr/share/common-licenses/LGPL files.
\ No newline at end of file
diff --git a/data/files_debbuild/metc_control b/data/files_debbuild/metc_control
new file mode 100644 (file)
index 0000000..4ac4bd3
--- /dev/null
@@ -0,0 +1,13 @@
+Package: whitestorkdictionary                                                         
+Version:
+Section: user/tools Tools                                                                
+Priority: optional                                                           
+Architecture: all  
+Installed-Size: 64                                                          
+Depends: whitestorkgui (>= 0.1.0), whitestork (>= 0.1.0), enginexdxf(>= 0.1.0)       
+Maintainer: ComArch S.A. <contact@comarch.com>                              
+Description: metapackage containing all WhiteStork Dictionary's components
+ This package gathers all WhiteStork's components together, increasing
+ the easy of use of WhiteStork Multilingual Dictionary.
+ Maemo platform.
+ Copyright 2006, ComArch S.A. 
diff --git a/data/files_debbuild/metc_postinst b/data/files_debbuild/metc_postinst
new file mode 100755 (executable)
index 0000000..d7b09f0
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "Postinstalling actions..." 
diff --git a/data/files_debbuild/metc_postrm b/data/files_debbuild/metc_postrm
new file mode 100755 (executable)
index 0000000..36c6660
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "Postremoving actions..."
diff --git a/data/files_debbuild/metc_preinst b/data/files_debbuild/metc_preinst
new file mode 100755 (executable)
index 0000000..302910b
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "Preinstallation actions..."
diff --git a/data/files_debbuild/metc_prerm b/data/files_debbuild/metc_prerm
new file mode 100755 (executable)
index 0000000..9bd24b7
--- /dev/null
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+echo -e "Preremoving actions..."
index 14c9476..e455ce8 100644 (file)
@@ -1,5 +1,3 @@
 whitestork
 
-Copyright 2006 ComArch S.A.
-
-See: https://garage.maemo.org/projects/mdictionary
\ No newline at end of file
+All programs are either under the GPL or LGPL. The complete text of the GPL and LGPL licenses can be found in the /usr/share/common-licenses/GPL and /usr/share/common-licenses/LGPL files.
\ No newline at end of file
index afe1c0c..90f5f61 100644 (file)
@@ -4,7 +4,7 @@ Section: user/tools Tools
 Priority: optional                                                           
 Architecture: all   
 Installed-Size: 41                                                            
-Depends: libexpat1 (>= 1.95.8)        
+Depends: libsqlite0 (>= 2.8.13)
 Maintainer: ComArch S.A. <contact@comarch.com>                              
 Description: Multilingual dictionary.
  This dictionary have a modular build so you
index 00194ec..2b64b6a 100755 (executable)
@@ -8,11 +8,21 @@ then
 su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/elements/name "Elements Database"'
 su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/elements/path "/usr/share/WhiteStork/dictionaries/elements"'
 su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/elements/active true'
+su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/elements/optimized true'
 su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/us-en/name "American - English Dictionary"'
 su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/us-en/path "/usr/share/WhiteStork/dictionaries/us-en"'
 su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/us-en/active true'
+su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/us-en/optimized false'
+
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/name "Bookmarks"'
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/path "/usr/share/WhiteStork/dictionaries/bookmarks"'
+su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/active false'
+su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/Dictionaries/bookmarks/optimized true'
+su $USER -c 'gconftool-2 --type string --set /apps/maemo/WhiteStork/Engines/bookmarks/path "/usr/lib/WhiteStork/ws_bookmark.so"'
 
 chmod 0777 /usr/share/WhiteStork/dictionaries
 chmod 0777 /usr/share/WhiteStork/dictionaries/elements
 chmod 0777 /usr/share/WhiteStork/dictionaries/us-en
+
+chmod 0777 /usr/share/WhiteStork/dictionaries/bookmarks
 fi
\ No newline at end of file
index 177aab8..622cc7e 100755 (executable)
@@ -2,11 +2,12 @@
 
 echo -e "Preremoving actions..."
 
+rm -rf /usr/share/WhiteStork
+
 if [ "$1" != "upgrade" ]
 then
        echo -e -n "Removing gconf configuration..\n"
        su $USER -c 'gconftool-2 --recursive-unset /apps/maemo/WhiteStork'
 fi
 
-
 # End automatically added section
diff --git a/data/pre-release.sh b/data/pre-release.sh
deleted file mode 100755 (executable)
index b317e93..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/bash
-
-echo -e -n "PRE_RELEASE: Making pre-release...\n"
-
-cd "$1"
-svn update
-SVN_REV=`svn info | grep "Revision:" | awk '{print $2}'`
-#SVN_REV=`date +%y%m%d%H%M%S`
-echo -e -n "SVN_UPD: '$SVN_REV'\n"
-
-if [ -z $SVN_REV ]
-then
-       echo -e -n "PRE_RELEASE: could not state subversion revision...\n"
-       exit 1
-fi
-
-#cat "$1/Makefile" | awk "/^APP_VER .*/ {print \$1 \" = \" \"0.0.0\"; next} /.*/ {print \$0}" > "$1/Makefile"
-CUR_VER=`cat "$1/Makefile" | awk '/^APP_VER .*/ {print $3 }'`
-echo -e -n "PRE_RELEASE: CUR_VER=$CUR_VER\n"
-CUR_VER="$CUR_VER ${SVN_REV}"
-
-NEW_VER=`echo "$CUR_VER" | awk '{split($1,_a,"\."); print _a[1] "." _a[2] "." $2;}'`
-echo -e -n "PRE_RELEASE: NEW_VER=$NEW_VER\n"
-
-cat "$1/Makefile" | awk "/^APP_VER .*/ {print \"APP_VER = ${NEW_VER}\"; next} {print}" > "$1/Makefile_new"
-rm -f "$1/Makefile"
-mv "$1/Makefile_new" "$1/Makefile"
-echo -e -n "PRE_RELEASE: NEW_VER=$NEW_VER\n"
-
-cd "$1" && make pre-release-post
\ No newline at end of file
diff --git a/data/release.sh b/data/release.sh
deleted file mode 100755 (executable)
index 608a949..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/bash
-
-echo -e -n "RELEASE: Making release...\n"
-#cat "$1/Makefile" | awk "/^APP_VER .*/ {print \$1 \" = \" \"0.0.0\"; next} /.*/ {print \$0}" > "$1/Makefile"
-CUR_VER=`cat "$1/Makefile" | awk '/^APP_VER .*/ {print $3 }'`
-echo -e -n "RELEASE: CUR_VER=$CUR_VER\n"
-
-NEW_VER=`echo "$CUR_VER" | awk '{split($1,_a,"\."); print _a[1] "." _a[2] + 1 ".0";}'`
-echo -e -n "RELEASE: NEW_VER=$NEW_VER\n"
-
-cat "$1/Makefile" | awk "/^APP_VER .*/ {print \"APP_VER = ${NEW_VER}\"; next} {print}" > "$1/Makefile_new"
-rm -f "$1/Makefile"
-mv "$1/Makefile_new" "$1/Makefile"
-echo -e -n "RELEASE: NEW_VER=$NEW_VER\n"
-
-cd "$1" && make release-post
\ No newline at end of file
diff --git a/data/version.sh b/data/version.sh
deleted file mode 100755 (executable)
index c70d937..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-
-echo -e -n "VERSION: Making version...\n"
-CUR_VER=`cat "$1/Makefile" | awk '/^APP_VER .*/ {print $3 }'`
-echo -e -n "VERSION: CUR_VER=$CUR_VER\n"
-
-NEW_VER=`echo "$CUR_VER" | awk '{split($1,_a,"\."); print _a[1] + 1 ".0.0";}'`
-echo -e -n "VERSION: NEW_VER=$NEW_VER\n"
-
-cat "$1/Makefile" | awk "/^APP_VER .*/ {print \"APP_VER = ${NEW_VER}\"; next} /.*/ {print \$0}" > "$1/Makefile_new" && echo -e -n "Makefile rewritten\n"
-rm -f "$1/Makefile"
-mv "$1/Makefile_new" "$1/Makefile"
-echo -e -n "VERSION: NEW_VER=$NEW_VER\n"
-
-cd "$1" && make version-post
diff --git a/data/whitestork.desktop b/data/whitestork.desktop
deleted file mode 100644 (file)
index 290220c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=1.0
-Name=WhiteStork Dictionary
-Comment=Multilingual dictionary
-Exec=/usr/bin/WhiteStork
-X-Osso-Service=org.maemo.WhiteStorkGui
-Icon=whitestork_icon
-Terminal=true
-Type=Application
-X-HildonDesk-ShowInToolbar=true
-X-Osso-Type=application/x-executable
-X-Window-Icon=whitestork_icon
index 8b49df2..751eb6e 100644 (file)
Binary files a/data/whitestork.png and b/data/whitestork.png differ
diff --git a/data/whitestorkgui.desktop b/data/whitestorkgui.desktop
new file mode 100644 (file)
index 0000000..290220c
--- /dev/null
@@ -0,0 +1,13 @@
+[Desktop Entry]
+Encoding=UTF-8
+Version=1.0
+Name=WhiteStork Dictionary
+Comment=Multilingual dictionary
+Exec=/usr/bin/WhiteStork
+X-Osso-Service=org.maemo.WhiteStorkGui
+Icon=whitestork_icon
+Terminal=true
+Type=Application
+X-HildonDesk-ShowInToolbar=true
+X-Osso-Type=application/x-executable
+X-Window-Icon=whitestork_icon
diff --git a/data/ws_bookmarks b/data/ws_bookmarks
new file mode 100644 (file)
index 0000000..f8827d7
Binary files /dev/null and b/data/ws_bookmarks differ
index 9e66859..fc998bf 100644 (file)
@@ -459,7 +459,7 @@ WARN_LOGFILE           =
 # directories like "/usr/src/myproject". Separate the files or directories 
 # with spaces.
  
-INPUT                  = ../include/ws_dbus.h
+INPUT                  = src/ws_dbus.c ../include/ws_dbus.h
  
 # 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 
index 7272025..7c39108 100644 (file)
@@ -27,6 +27,7 @@ struct _WSDBusCBData
 
 typedef struct _WSDBusCBData WSDBusCBData;
 
+
 static void ws_dbus_fill_message (DBusMessage *msg, void *data) 
 {
 
@@ -43,7 +44,7 @@ static void ws_dbus_fill_message (DBusMessage *msg, void *data)
                                 DBUS_TYPE_STRING, &buffer,
                                 DBUS_TYPE_INVALID);
         };
-        printf ("DBUS: Added %d words\n", i);
+        g_debug ("DBUS: Added %d words\n", i);
 
 };
 
@@ -63,7 +64,7 @@ static gint ws_dbus_cb_handler (const gchar * interface,
         gpointer tmp;
         retval = NULL;
         
-        printf ("DBUS: Method:  %s\n", method);
+        g_debug ("DBUS: Method:  %s\n", method);
 
         temp = g_quark_try_string (method);
 
@@ -72,7 +73,7 @@ static gint ws_dbus_cb_handler (const gchar * interface,
         {
 
                 cb_data = g_array_index (dbus_cb_data, WSDBusCBData, temp-1);
-        
+
                 if (cb_data.id == temp) 
                 {
                         cb = (ws_dbus_cb) cb_data.handler;
@@ -96,10 +97,10 @@ static gint ws_dbus_cb_handler (const gchar * interface,
                         };
                 };
         }
-        
+
         else 
         {
-                printf ("Error in function %s, couldn't find the signal %s\n",
+                g_debug ("Error in function %s, couldn't find the signal %s\n",
                         __FUNCTION__,
                         method);
                 return OSSO_ERROR;
@@ -107,14 +108,14 @@ static gint ws_dbus_cb_handler (const gchar * interface,
 
         if (cb != NULL) 
         {
-                printf ("\nDBUS: Running callback for %s\n", method);
+                g_debug ("\nDBUS: Running callback for %s\n", method);
                 cb (NULL, arguments, tmp); 
                 retval = DBUS_TYPE_INVALID;
                 return OSSO_OK;
         }
         else
         {
-                printf ("DBUS: No callback defined for this function\n");
+                g_debug ("DBUS: No callback defined for this function\n");
                 return OSSO_ERROR;
         };
 
@@ -126,32 +127,32 @@ static void ws_dbus_libosso_errors (osso_return_t result)
         switch (result) 
         {
                 case OSSO_OK: 
-                        printf ("All OK\n");
+                        g_debug ("All OK\n");
                         break;
                         
                 case OSSO_ERROR: 
-                        printf ("Ordinary Error\n");
+                        g_debug ("Ordinary Error\n");
                         break;
 
                 case OSSO_INVALID: 
-                        printf ("At least one parameter is invalid\n");
+                        g_debug ("At least one parameter is invalid\n");
                         break;
 
                 case OSSO_RPC_ERROR: 
-                        printf ("Osso RPC method returned an error\n");
+                        g_debug ("Osso RPC method returned an error\n");
                         break;
 
                 case OSSO_ERROR_NAME: 
-                        printf ("Error Name\n");
+                        g_debug ("Error Name\n");
                         break;
 
                 case OSSO_ERROR_NO_STATE: 
-                        printf ("No state file found to read\n");
+                        g_debug ("No state file found to read\n");
                         break;
 
                 case OSSO_ERROR_STATE_SIZE: 
-                        printf("The size of the given structure");
-                        printf(" is different from the saved size\n");
+                        g_debug("The size of the given structure");
+                        g_debug(" is different from the saved size\n");
                         break;
 
         };
@@ -166,38 +167,46 @@ WSDBusData * ws_dbus_create (gchar *name, gchar *version)
                              "return_translations",
                              "signal",
                              "update_progressbar",
-                             "search_in_history"};
+                             "search_in_history",
+                             "add_bookmark",
+                             "remove_bookmark",
+                             "send_message",
+                             NULL};
+
+        guint array_size = 0;
         guint i;
 
+        while (cb_table[array_size] != NULL) array_size++;
+
         WSDBusData *temp;
         WSDBusCBData temp_cb_data;
         GQuark temp_quark;
 
         temp = (gpointer) g_try_malloc (sizeof (WSDBusData));
 
-        printf ("\nDBUS: ");
+        g_debug ("\nDBUS: ");
 
         if (temp == NULL)
         {
-                printf ("Error in function %s - cannot allocate memory\n",
+                g_debug ("Error in function %s - cannot allocate memory\n",
                         __FUNCTION__);
                 g_assert_not_reached();
         }
 
-        else printf ("Memory allocation successful\n");
+        else g_debug ("Memory allocation successful\n");
 
         temp->name = g_strconcat (name, NULL);
         temp->version = g_strconcat (version, NULL);
 
         temp->cb_data = g_array_new (TRUE, TRUE, sizeof (WSDBusCBData));      
     
-        for (i = 0; i < 7; i++)
+        for (i = 0; i < array_size; i++)
         {
                 temp_quark = g_quark_try_string (cb_table[i]);
 
                 if (temp_quark != 0)
                 {
-                     printf(
+                     g_debug(
                      "DBUS: \"%s\" - signal has already been registered - %d\n",
                       cb_table[i],
                       g_quark_from_string(cb_table[i]));                        
@@ -206,7 +215,7 @@ WSDBusData * ws_dbus_create (gchar *name, gchar *version)
                 else
                 {
                         temp_quark = g_quark_from_string (cb_table[i]);
-                        printf ("DBUS: Assigning signal \"%s\" an id %d\n",
+                        g_debug ("DBUS: Assigning signal \"%s\" an id %d\n",
                                 cb_table [i],
                                 temp_quark);
                         temp_cb_data.id = temp_quark;
@@ -217,7 +226,7 @@ WSDBusData * ws_dbus_create (gchar *name, gchar *version)
 
         };
 
-        printf ("DBUS: Signals were successfully added\n");
+        g_debug ("DBUS: Signals were successfully added\n");
 
         return temp;
 };
@@ -229,7 +238,7 @@ WSDBusStatus ws_dbus_config (WSDBusData * ws_dbus_data,
 {
         if (ws_dbus_data == NULL) 
         {
-                printf ("\nDBUS: Error in function %s - ws_dbus_data is NULL\n",
+                g_debug ("\nDBUS: Error in function %s - ws_dbus_data is NULL\n",
                         __FUNCTION__);
         };
 
@@ -254,7 +263,7 @@ WSDBusStatus ws_dbus_config (WSDBusData * ws_dbus_data,
                         ws_dbus_data->remote_iface = g_strconcat (value, NULL);
                         break;
         };
-        
+
         return WS_DBUS_STATUS_OK;
 };
 
@@ -274,7 +283,7 @@ WSDBusStatus ws_dbus_connect (WSDBusData * ws_dbus_data)
                                 ws_dbus_data->object, 
                                 ws_dbus_data->iface,
                                 ws_dbus_cb_handler, 
-                                ws_dbus_data->cb_data);        
+                                ws_dbus_data->cb_data);
 
         if (result == OSSO_OK) return WS_DBUS_STATUS_OK;
         else return WS_DBUS_STATUS_ERROR;
@@ -285,20 +294,20 @@ void ws_dbus_destroy (WSDBusData * ws_dbus_data)
 {
         if (ws_dbus_data == NULL) 
         {
-            printf ("\nDBUS: Error in function %s - cannot free osso_context\n",
+            g_debug ("\nDBUS: Error in function %s - cannot free osso_context\n",
                     __FUNCTION__);
             g_free (ws_dbus_data);
             g_assert_not_reached();
         };
-        
-        printf ("\nDBUS deinitialization by %s:\n---------------------------\n",
+
+        g_debug ("\nDBUS deinitialization by %s:\n---------------------------\n",
                 ws_dbus_data->service);
         osso_deinitialize (ws_dbus_data->context);
-        printf ("| Deinitializing osso context    |\n");
+        g_debug ("| Deinitializing osso context    |\n");
         if (ws_dbus_data->cb_data != NULL) 
         {
                 g_array_free (ws_dbus_data->cb_data, TRUE);
-                printf ("| Freeing callback pointers list |\n");
+                g_debug ("| Freeing callback pointers list |\n");
         };
 
         g_free (ws_dbus_data->name);
@@ -312,7 +321,7 @@ void ws_dbus_destroy (WSDBusData * ws_dbus_data)
         g_free (ws_dbus_data->remote_iface);
 
         g_free (ws_dbus_data);
-        printf ("| Freeing WSDBusData structure   |\n----------------------\n");
+        g_debug ("| Freeing WSDBusData structure   |\n----------------------\n");
 };
 
 
@@ -330,7 +339,7 @@ WSDBusStatus ws_dbus_set_cb (WSDBusData * ws_dbus_data,
 
         if (temp == 0) 
         {
-              printf ("DBUS:\"%s\"-signal not defined or invalid signal name\n",
+              g_debug ("DBUS:\"%s\"-signal not defined or invalid signal name\n",
                       detailed_signal);
               return WS_DBUS_STATUS_ERROR;
         }
@@ -343,7 +352,7 @@ WSDBusStatus ws_dbus_set_cb (WSDBusData * ws_dbus_data,
                                                  WSDBusCBData,
                                                  i);
                         if (cb_data.id == temp)
-        
+
                         {
                                 cb_data.handler = c_func;
                                 cb_data.user_data = user_data;
@@ -355,7 +364,7 @@ WSDBusStatus ws_dbus_set_cb (WSDBusData * ws_dbus_data,
                         };
 
                 };
-        
+
         };
 
         return WS_DBUS_STATUS_OK;
@@ -371,8 +380,8 @@ WSDBusStatus ws_dbus_notify (WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s: ",__FUNCTION__);
-                printf("Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s: ",__FUNCTION__);
+                g_debug("Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -384,12 +393,12 @@ WSDBusStatus ws_dbus_notify (WSDBusData * ws_dbus_data,
                                DBUS_TYPE_INT32,
                                ws_dbus_info,
                                DBUS_TYPE_INVALID);       
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                 if (strcmp (retval->value.s,
                             "No reply within specified time") != 0) 
                 {
@@ -405,7 +414,6 @@ WSDBusStatus ws_dbus_notify (WSDBusData * ws_dbus_data,
 };
 
 WSDBusStatus ws_dbus_client_find_word (WSDBusData * ws_dbus_data, gchar * word)
-
 {
         osso_return_t result;
         osso_rpc_t *retval;
@@ -414,8 +422,8 @@ WSDBusStatus ws_dbus_client_find_word (WSDBusData * ws_dbus_data, gchar * word)
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:",__FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -428,13 +436,13 @@ WSDBusStatus ws_dbus_client_find_word (WSDBusData * ws_dbus_data, gchar * word)
                                word,
                                DBUS_TYPE_INVALID);
 
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -455,8 +463,8 @@ WSDBusStatus ws_dbus_client_find_translation (WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s: ",__FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s: ",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -469,13 +477,13 @@ WSDBusStatus ws_dbus_client_find_translation (WSDBusData * ws_dbus_data,
                                word,
                                DBUS_TYPE_INVALID);
 
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -496,8 +504,8 @@ WSDBusStatus ws_dbus_client_search_in_history (WSDBusData* ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:",__FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -510,13 +518,13 @@ WSDBusStatus ws_dbus_client_search_in_history (WSDBusData* ws_dbus_data,
                                word,
                                DBUS_TYPE_INVALID);
 
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -527,7 +535,8 @@ WSDBusStatus ws_dbus_client_search_in_history (WSDBusData* ws_dbus_data,
         return WS_DBUS_STATUS_OK;
 };
 
-WSDBusStatus ws_dbus_server_return_words  (WSDBusData * ws_dbus_data, GArray * words)
+WSDBusStatus ws_dbus_server_return_words  (WSDBusData * ws_dbus_data, 
+                                                GArray * words)
 
 {
         osso_return_t result;
@@ -537,8 +546,8 @@ WSDBusStatus ws_dbus_server_return_words  (WSDBusData * ws_dbus_data, GArray * w
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:",__FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run_with_argfill (ws_dbus_data->context, 
@@ -549,13 +558,13 @@ WSDBusStatus ws_dbus_server_return_words  (WSDBusData * ws_dbus_data, GArray * w
                                             retval,
                                             ws_dbus_fill_message,
                                             words);
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -577,8 +586,8 @@ WSDBusStatus ws_dbus_server_return_words_last(WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:",__FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run_with_argfill (ws_dbus_data->context, 
@@ -589,14 +598,14 @@ WSDBusStatus ws_dbus_server_return_words_last(WSDBusData * ws_dbus_data,
                                             retval,
                                             ws_dbus_fill_message,
                                             words);
-        
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -618,8 +627,8 @@ WSDBusStatus ws_dbus_server_return_translations(WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:",  __FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:",  __FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -632,13 +641,13 @@ WSDBusStatus ws_dbus_server_return_translations(WSDBusData * ws_dbus_data,
                                translation,
                                DBUS_TYPE_INVALID);
 
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -661,8 +670,8 @@ WSDBusStatus ws_dbus_send_ptrtodata(WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:",__FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -675,13 +684,13 @@ WSDBusStatus ws_dbus_send_ptrtodata(WSDBusData * ws_dbus_data,
                                data_address,
                                DBUS_TYPE_INVALID);
 
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -705,8 +714,8 @@ WSDBusStatus ws_dbus_server_return_translations_last(WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:", __FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:", __FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run(ws_dbus_data->context, 
@@ -718,14 +727,14 @@ WSDBusStatus ws_dbus_server_return_translations_last(WSDBusData * ws_dbus_data,
                               DBUS_TYPE_STRING,
                               translation,
                               DBUS_TYPE_INVALID);
-        
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
@@ -747,10 +756,10 @@ gpointer ws_dbus_concat_data (GArray *garray)
         for (i=0;i<garray->len;++i)
         {
                 array = g_array_index (garray, gchar *, i);
-                printf ("DBUS: %s: text added: %s\n", __FUNCTION__, array);
+                g_debug ("DBUS: %s: text added: %s\n", __FUNCTION__, array);
                 temp = start;
                 temp_len = strlen (array);
-                printf ("length: %d\n", temp_len);
+                g_debug ("length: %d\n", temp_len);
                 start = g_malloc (total_len + temp_len + 1);
                 memcpy (start, temp, total_len);
                 if (i > 0) g_free (temp);
@@ -758,7 +767,7 @@ gpointer ws_dbus_concat_data (GArray *garray)
                 memcpy (temp, &temp_len, 1);
                 memcpy (temp+1, array, temp_len);
                 total_len = total_len + temp_len + 1;
-        };      
+        };
         return start;
 };
 
@@ -776,9 +785,9 @@ GArray * ws_dbus_split_data (gpointer buffer)
 
         buffer_len = strlen (buffer);
 
-        printf ("Buffer length %d\n", strlen (buffer));
+        g_debug ("Buffer length %d\n", strlen (buffer));
         garray = g_array_new (TRUE, TRUE, sizeof(gchar *));
-        
+
         while (temp[0] != 0)
         {
                 len = temp[0];
@@ -787,10 +796,10 @@ GArray * ws_dbus_split_data (gpointer buffer)
                 memcpy (str, temp+1, len);
                 str[len] = 0;
                 temp = temp + len + 1;
-                printf ("Received text: %s, %d\n", str, len);
+                g_debug ("Received text: %s, %d\n", str, len);
                 g_array_append_val (garray, str);
                 ++i;
-        };        
+        };
 
         return garray;
 };
@@ -806,8 +815,8 @@ WSDBusStatus ws_dbus_update_progressbar (WSDBusData * ws_dbus_data,
 
         if (retval == NULL) 
         {
-                printf("DBUS: Error in function %s:", __FUNCTION__);
-                printf(" Couldn't allocate memory for message's return value\n");
+                g_debug("DBUS: Error in function %s:", __FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
         };
 
         result = osso_rpc_run (ws_dbus_data->context, 
@@ -820,13 +829,138 @@ WSDBusStatus ws_dbus_update_progressbar (WSDBusData * ws_dbus_data,
                                progress,
                                DBUS_TYPE_INVALID);
 
-        printf ("\nDBUS: %s: ", __FUNCTION__);
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
+
+        ws_dbus_libosso_errors (result);
+
+        if (result != OSSO_OK)
+        {
+                g_debug ("Error message: %s\n", retval->value.s);
+                 osso_rpc_free_val (retval);
+                g_free (retval);
+                return WS_DBUS_STATUS_ERROR;
+        };
+
+         osso_rpc_free_val (retval);
+        g_free (retval);
+        return WS_DBUS_STATUS_OK;
+};
+
+WSDBusStatus ws_dbus_add_bookmark (WSDBusData * ws_dbus_data, gchar * word, gchar *translation)
+
+{
+        osso_return_t result;
+        osso_rpc_t *retval;
+
+        retval = g_try_malloc (sizeof (osso_rpc_t));
+
+        if (retval == NULL) 
+        {
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
+        };
+
+        result = osso_rpc_run (ws_dbus_data->context, 
+                               ws_dbus_data->remote_service, 
+                               ws_dbus_data->remote_object, 
+                               ws_dbus_data->remote_iface, 
+                               "add_bookmark", 
+                               retval,
+                               DBUS_TYPE_STRING,
+                               word,
+                               DBUS_TYPE_STRING,
+                               translation,
+                               DBUS_TYPE_INVALID);
+
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
+
+        ws_dbus_libosso_errors (result);
+
+        if (result != OSSO_OK)
+        {
+                g_debug ("Error message: %s\n", retval->value.s);
+                 osso_rpc_free_val (retval);
+                g_free (retval);
+                return WS_DBUS_STATUS_ERROR;
+        };
+
+         osso_rpc_free_val (retval);
+        g_free (retval);
+        return WS_DBUS_STATUS_OK;
+};
+
+WSDBusStatus ws_dbus_remove_bookmark (WSDBusData * ws_dbus_data, gchar * word)
+
+{
+        osso_return_t result;
+        osso_rpc_t *retval;
+
+        retval = g_try_malloc (sizeof (osso_rpc_t));
+
+        if (retval == NULL) 
+        {
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
+        };
+
+        result = osso_rpc_run (ws_dbus_data->context, 
+                               ws_dbus_data->remote_service, 
+                               ws_dbus_data->remote_object, 
+                               ws_dbus_data->remote_iface, 
+                               "remove_bookmark", 
+                               retval,
+                               DBUS_TYPE_STRING,
+                               word,
+                               DBUS_TYPE_INVALID);
+
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
+
+        ws_dbus_libosso_errors (result);
+
+        if (result != OSSO_OK)
+        {
+                g_debug ("Error message: %s\n", retval->value.s);
+                 osso_rpc_free_val (retval);
+                g_free (retval);
+                return WS_DBUS_STATUS_ERROR;
+        };
+
+         osso_rpc_free_val (retval);
+        g_free (retval);
+        return WS_DBUS_STATUS_OK;
+};
+
+WSDBusStatus ws_dbus_send_message (WSDBusData * ws_dbus_data, gchar * word)
+
+{
+        osso_return_t result;
+        osso_rpc_t *retval;
+
+        retval = g_try_malloc (sizeof (osso_rpc_t));
+
+        if (retval == NULL) 
+        {
+                g_debug("DBUS: Error in function %s:",__FUNCTION__);
+                g_debug(" Couldn't allocate memory for message's return value\n");
+        };
+
+        result = osso_rpc_run (ws_dbus_data->context, 
+                               ws_dbus_data->remote_service, 
+                               ws_dbus_data->remote_object, 
+                               ws_dbus_data->remote_iface, 
+                               "send_message", 
+                               retval,
+                               DBUS_TYPE_STRING,
+                               word,
+                               DBUS_TYPE_INVALID);
+
+        g_debug ("\nDBUS: %s: ", __FUNCTION__);
 
         ws_dbus_libosso_errors (result);
 
         if (result != OSSO_OK)
         {
-                printf ("Error message: %s\n", retval->value.s);
+                g_debug ("Error message: %s\n", retval->value.s);
                  osso_rpc_free_val (retval);
                 g_free (retval);
                 return WS_DBUS_STATUS_ERROR;
diff --git a/dh_make b/dh_make
deleted file mode 100755 (executable)
index cc9a96a..0000000
--- a/dh_make
+++ /dev/null
@@ -1,608 +0,0 @@
-#!/scratchbox/tools/bin/perl 
-#
-# dh_make - Script to Debianize a source archive
-#
-use Getopt::Long;
-use Cwd;
-
-#Getopt::Long::Configure ("bundling");  
-#Getopt::Long::Configure ("bundling_override");  
-
-# Some important parameters
-$DHLIB="/scratchbox/devkits/debian/share/debhelper/dh_make";
-$POLICY_VERSION="3.6.0";
-$DH_MAKE_VERSION="0.36";
-%PACKAGE_TYPES = ( 's' => 'Single', 'l' => 'Library', 'm' => 'Multi-Binary',
-                   'k' => 'Kernel Module');
-$DASHLINE="";
-
-$license="";
-$email="";
-$username="";
-$package_name="";
-$cap_package_name="";
-$version="";
-$fullname = "";
-$source_file="";
-$debian_native = 0;
-$package_type="";
-$CHANGELOG="";
-$PRESERVE="";
-$add_missing = 0;
-$custom = "";
-$no_defaults = 0;
-$overlay = "";
-$forced_package_name="";
-
-my $dummy;
-
-sub process_file(@)
-{
-   my ($infile, $outfile) = @_;  
-   my $line;
-
-   if ( $main::overlay eq "" )
-   {
-     if ( $main::add_missing && -f $outfile) {
-       print "File $outfile exists, skipping.\n";
-       return;
-     }
-   }
-
-    open IN, "<$infile" or die "Unable to open template file $infile for reading: $! \n";
-    open OUT, ">$outfile" or die "Unable to open file $outfile for writing: $! \n";
-    while (defined($line = <IN>))
-    {
-      $line =~ s/#PACKAGE#/$main::package_name/g;
-      $line =~ s/#UCPACKAGE#/$main::uc_package_name/g;
-      $line =~ s/#VERSION#/$main::version/g;
-      $line =~ s/#EMAIL#/$main::email/g;
-      $line =~ s/#DATE#/$main::date/g;
-      $line =~ s/#SHORTDATE#/$main::shortdate/g;
-      $line =~ s/#CHANGELOGS#/$main::CHANGELOG/g;
-      $line =~ s/#PRESERVE#/$main::PRESERVE/g;
-         $line =~ s/#CONFIG_STATUS#/$main::CONFIG_STATUS/g;
-      $line =~ s/#CONFIGURE#/$main::CONFIGURE/g;
-         $line =~ s/#CONFIGURE_STAMP#/$main::CONFIGURE_STAMP/g;
-      $line =~ s/#DPKG_ARCH#/$main::DPKG_ARCH/g;
-      $line =~ s/#INSTALL#/$main::INSTALL/g;
-      $line =~ s/#CLEAN#/$main::CLEAN/g;
-      $line =~ s/#USERNAME#/$main::username/g;
-      $line =~ s/#POLICY#/$main::POLICY_VERSION/g;
-      $line =~ s/#DASHLINE#/$main::DASHLINE/g;
-         $line =~ s/#PHONY_CONFIGURE#/$main::PHONY_CONFIGURE/g;
-
-      print OUT $line;
-    }
-    close IN;
-    close OUT;
-}
-
-sub show_version
-{
-  print "dh_make - Script to Debianize a regular source archive, version $main::DH_MAKE_VERSION\n\n";
-  print "Copyright (C) 1998-2004 Craig Small <csmall\@debian.org>\n";
-  print "This is free software; see the source for copying conditions.  There is NO\n";
-  print "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
-}
-sub show_help
-{
-  show_version();
-  print <<EOF
-  Usage: dh_make [options]
-  -c, --copyright <type>    use <type> of license in copyright file
-                            (gpl|lgpl|artistic|bsd)
-  -e, --email <address>     use <address> as the maintainer e-mail address
-  -n, --native              the program is Debian native, don\'t generate .orig
-  -f, --file <file>         specify file to use as the original source archive
-  -s, --single              set package class to single
-  -m, --multi               set package class to multiple binary
-  -l, --library             set package class to library
-  -k, --kmod                set package class to kernel module
-  -a, --addmissing          reprocess package and add missing files
-  -t, --templates <dir>      apply customizing templates in <dir>
-  -d  --defaultless         skip the default debian and package class templates
-  -o, --overlay <dir>       reprocess package using template in <dir>
-  -p, --packagename <name>  force package name to be <name>
-  -h, --help                display this help screen and exit
-  -v, --version             show the version and exit
-
-By Craig Small <csmall\@debian.org>
-Based on deb-make by Christoph Lameter <clameter\@debian.org>.
-Custom template support by Bruce Sass <bsass\@edmc.net>.
-EOF
-}
-
-sub parse_args
-{
-  my ($dohelp,$doversion, $single,$multi,$library );
-  %options = ('copyright' => \$main::license,
-              'email' => \$main::email,
-              'file' => \$main::source_file,
-             'help' => \$dohelp,
-             'version' => \$doversion,
-             'native' => \$main::debian_native,
-             'single' => \$single,
-             'multi' => \$multi,
-             'library' => \$library,
-             'kmod' => \$kmod,
-             'addmissing' => \$main::add_missing,
-             'templates' => \$main::custom,
-             'defaultless' => \$main::no_defaults,
-             'overlay' => \$main::overlay,
-                 'packagename' => \$main::forced_package_name,
-             );
-  if (GetOptions(\%options, "copyright=s", "email=s", "file=s", "templates=s", "overlay=s", "packagename=s", "help", "version", "native", "single", "multi", "library", "kmod", "addmissing", "defaultless") == 0)
-  {
-    show_help();
-    exit;
-  }
-  if ($doversion)
-  {
-    show_version();
-    exit;
-  }
-  if ($dohelp)
-  {
-    show_help();
-    exit;
-  }
-  if ($single)
-  {
-    $main::package_type = 's';
-  }
-  if ($multi)
-  {
-    $main::package_type = 'm';
-  }
-  if ($library)
-  {
-    $main::package_type = 'l';
-  }
-  if ($kmod)
-  {
-    $main::package_type = 'k';
-  }
-  if ($addmissing)
-  {
-    $main::add_missing = 1;
-  }
-  if ($defaultless)
-  {
-    $main::no_defaults = 1;
-  }
-  $main::license = lc $main::license;
-  if ($main::lincense ne "" && grep(!/gpl|lgpl|artistic|bsd/, $main::license)) {
-    print "Copyright type \"$main::license\" is not gpl, lgpl, artistic or bsd\n";
-    exit;
-  }
-
-}
-
-sub get_username
-{
-  my $tmpusername;
-
-  $tmpusername = $ENV{'DEBFULLNAME'};
-  return $tmpusername if ($tmpusername ne "");
-
-  if (-x '/usr/bin/getent')
-  {
-    $tmpusername = `/usr/bin/getent passwd $ENV{LOGNAME}|awk -F: '\{ print \$5; \}' | cut -f1 -d,`;
-  }
-  chomp($tmpusername);
-  return $tmpusername if ($tmpusername ne "");
-
-  $tmpusername =`awk -F: -vUSER=$ENV{LOGNAME} '\$1 == USER \{ print \$5; \}' /etc/passwd | cut -f1 -d,`;
-  chomp($tmpusername);
-  return $tmpusername if ($tmpusername ne "");
-  
-  if (-x '/usr/bin/ypmatch')
-  {
-    $tmpusername=`ypmatch $ENV{LOGNAME} passwd.byname|awk -F: '\{ print \$5; \}' | cut -f1 -d,`;
-  }
-  chomp($tmpusername);
-  return $tmpusername if ($tmpusername ne "");
-
-  if (-x '/usr/bin/ldapsearch')
-  {
-    $tmpusername = [map {/^(?:gecos|cn): (.*)/} `ldapsearch -Q -LLL uid=$ENV{LOGNAME} gecos cn`]->[0];
-  }
-  chomp($tmpusername);
-  return $tmpusername if ($tmpusername ne "");
-
-  return "unknown";
-}
-
-sub get_email() 
-{
-  if ($ENV{DEBEMAIL} )
-  {
-    return $ENV{DEBEMAIL};
-  }
-  if ($ENV{EMAIL} )
-  {
-    return $ENV{EMAIL};
-  }
-  if (-x '/usr/bin/ldapsearch')
-  {
-    my $mail;
-    $mail = [map {/^mail: (.*)/ && $1} `ldapsearch -Q -LLL uid=$ENV{LOGNAME} mail`]->[0];
-      return $mail if $mail;
-  }
-  if ($ENV{LOGNAME} )
-  {
-    my $mailhost;
-    if ( -e '/etc/mailname'){
-      chomp($mailhost = `cat /etc/mailname`);
-    } else {
-      $mailhost='unknown';
-    } 
-    return  ($ENV{LOGNAME} . '@' . $mailhost);
-  }
-}
-
-sub get_package
-{
-  my $pwd = `pwd`;
-
-  if (( ($main::forced_package_name) && 
-        ($pwd =~ /.*\/($main::forced_package_name)-([0-9][0-9a-zA-Z+\.\-]*)$/)
-         ) || (
-        ($pwd =~ /.*\/(.*)-([0-9][0-9a-zA-Z+\.\-]*)$/)
-         ))
-  {
-    if ($main::forced_package_name) {
-         $main::package_name = $main::forced_package_name;
-       } else {
-      $main::package_name = $1;
-       }
-    $main::uc_package_name = uc $main::package_name;
-    $main::version = $2;
-       # Fullname stays as the original dir
-    $main::fullname = $1 . "-"  . $2;
-  } else {
-    my $pwd = cwd();
-       print <<"EOF";
-The directory name must be <package>-<version> for dh_make to work!
-I cannot understand the directory name or you have an invalid directory name!
-
-Your current directory is $pwd, perhaps you could try going to
-directory where the sources are?
-EOF
-    exit 1;
-  }
-  if (! ($main::package_name =~ /^[a-z0-9+.-]+$/)) {
-    print <<"EOF";
-Package name "$main::package_name" is not in a valid format.
-Debian policy manual states:
-  "Package names must only consist of lower case letters, digits (0-9),
-   plus (+) or minus (-) signs, and periods (.)"
-EOF
-    exit 1;
-  }
-}
-
-sub get_date
-{
-  my $tmpdate;
-  if (-x "/scratchbox/devkits/debian/bin/822-date")
-  {
-    $tmpdate = `/scratchbox/devkits/debian/bin/822-date`;
-    chomp($tmpdate);
-    return $tmpdate;
-  } else {
-    die "Unable to find 822-date program in /scratchbox/devkits/debian/bin!\n";
-  }
-}
-
-$username = get_username();
-$email = get_email();
-$date = get_date();
-$shortdate = `date '+%B %e, %Y'`;
-chomp $shortdate;
-parse_args();
-if ( ! $overlay eq "" )
-{
-  #setup for overlay mode
-  $no_defaults = 1;
-  $add_missing = 1;
-  $customer = $overlay;
-}
-get_package();
-
-# Generate a line of dashes, which is as long as '#PACKAGE# for Debian'.
-for ($i=0; $i<length("$main::package_name for Debian"); $i++)
-{
- $DASHLINE = $DASHLINE . '-';
-}
-
-if ( ! $no_defaults )
-{
-  while ($package_type eq "")
-  {
-    print "\nType of package: single binary, multiple binary, library, or kernel module?\n [s/m/l/k] ";
-    $type = <STDIN>;
-    chomp($type);
-    print "\n";
-    $type = lc($type);
-    $main::package_type = 's' if $type eq 's';
-    $main::package_type = 'm' if $type eq 'm';
-    $main::package_type = 'l' if $type eq 'l';
-    $main::package_type = 'k' if $type eq 'k';
-  }
-}
-
-# Print what we have found
-print "Maintainer name : $username\n";
-print "Email-Address   : $email \n";
-print "Date            : $date\n";
-print "Package Name    : $package_name\n";
-print "Version         : $version\n";
-print "Type of Package : ";
-if (exists $PACKAGE_TYPES{$package_type})
-{
-  print $PACKAGE_TYPES{$package_type};
-} else {
-  print 'unknown';
-}
-if ( $customer ne "" )
-{
-  print "\nCustomer template : $custom";
-}
-if ( $overlay ne "" )
-{
-  print " (overlay)";
-}
-if ( $no_defaults )
-{
-  print "\nDefault debian and package class templates will not be applied.";
-}
-print "\nHit <enter> to confirm: hacked by STRanger, 2006 - you do not have to hit <enter> \n";
-# $dummy = <STDIN>;
-
-if (! $debian_native)
-{
-  if ($source_file)
-  {
-    if (-f $source_file)
-    {
-      system('cp', '-a', "$source_file", "../$package_name\_$version.orig.tar.gz");
-    } else {
-      print "Source archive you specified was not found!\n";
-      exit 1;
-    }
-  } else {
-    if (-d "..$fullname.orig")
-    {
-      print "Skipping copying to $fullname.orig since $fullname.orig exists.\n";
-    } else {
-         if ( -f "../$fullnane.orig.tar.gz")
-         {
-           print "Skipping copying to $fullname.orig since $fullname.org.tar.gz exists.\n";
-         } else {
-        system('cp', '-a', "../$fullname", "../$fullname.orig");
-         }
-    }
-  }
-}
-# Figure out where documentation is
-@DOCS= split / |\n/, `ls -1 N[Ee][Ww][Ss] *[Ff][Aa][Qq]* *.[Tt][Xx][Tt] README* *.README [rR]eadme* *.[rR]eadme [Bb][Uu][Gg][Ss] *[tT][oO][dD][oO]* 2>/dev/null`;
-# What are our info files
-@INFOS= split / |\n/, `find . -regex '.*\\.info\\(-[0-9]+\\)?'`;
-# Figure out where is the first changelog, assign other similar files to docs
-@changelogs= split / |\n/, `ls *[cC][hH][aA][nN][gG][eE][lL][oO][gG]* [cC][hH][aA][nN][gG][eE][sS]* 2>/dev/null`;
-$CHANGELOG = $changelogs[0] if ($#changelogs != -1);
-shift @changelogs;
-@DOCS = (@DOCS,@changelogs);
-# Are there any .orig files in the upstream sources
-@ORIG= split /[ \n]/, `find . -name '\*.orig'`;
-
-foreach $orig (@ORIG)
-{
-  $PRESERVE="$PRESERVE --exclude $orig";
-}
-
-
-# Setup debian/rules
-if (-x "./configure" )
-{
-  $CONFIG_STATUS="config.status";
-  $CONFIGURE_STAMP='';
-  $PHONY_CONFIGURE='';
-  $CONFIGURE="config.status: configure\n".
-             "\tdh_testdir\n".
-                        "\t# Add here commands to configure the package.\n".
-                        "\t".'CFLAGS="$(CFLAGS)" ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) --prefix=/usr --mandir=\$${prefix}/share/man --infodir=\$${prefix}/share/info'."\n";
-  $DPKG_ARCH="# These are used for cross-compiling and for saving the configure script\n".
-             "# from having to guess our platform (since we know it already)\n".
-                        'DEB_HOST_GNU_TYPE   ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)'."\n".
-                        'DEB_BUILD_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)'."\n";
-
-
-  # If it is automaked, use DESTDIR insteadof prefix
-  if ( -f 'Makefile.am' ) {
-    # If it is a library then install into tmp
-    if ( $package_type eq "l") {
-      $INSTALL="\$(MAKE) install DESTDIR=\$(CURDIR)/debian/tmp";
-    } else {
-      $INSTALL="\$(MAKE) install DESTDIR=\$(CURDIR)/debian/$package_name";
-    }
-  } else {
-    if ( $package_type eq "l") {
-      $INSTALL="\$(MAKE) install prefix=\$(CURDIR)/debian/tmp/usr";
-    } else {
-      $INSTALL="\$(MAKE) install prefix=\$(CURDIR)/debian/$package_name/usr";
-    }
-  }
-  $CLEAN="\$(MAKE) distclean\n".
-         "ifneq \"\$(wildcard /usr/share/misc/config.sub)\" \"\"\n".
-                "\tcp -f /usr/share/misc/config.sub config.sub\n".
-                "endif\n".
-                "ifneq \"\$(wildcard /usr/share/misc/config.guess)\" \"\"\n".
-                "\tcp -f /usr/share/misc/config.guess config.guess\n".
-                "endif\n";
-} else {
-  if (! -f 'Makefile' && ! -f 'makefile' && ! -f 'GNUmakefile')
-  {
-    print "Currently there is no top level Makefile. This may require additional tuning.\n";
-  }
-  $CONFIGURE_STAMP='configure-stamp';
-  $CONFIG_STATUS='';
-  $CONFIGURE="configure: configure-stamp\n".
-             "configure-stamp:\n". 
-                        "\tdh_testdir\n".
-                        "\t# Add here commands to configure the package.\n\n".
-                        "\ttouch configure-stamp\n";
-  $PHONY_CONFIGURE='configure';
-  $DPKG_ARCH='';
-  if ($package_type eq "l") {
-    $INSTALL="\$(MAKE) install DESTDIR=\$(CURDIR)/debian/tmp";
-  } else {
-    $INSTALL="\$(MAKE) install DESTDIR=\$(CURDIR)/debian/$package_name";
-  }
-  $CLEAN='$(MAKE) clean';
-}
-
-# Customize files
-if ( $add_missing )
-{
-  if ( ! -d 'debian' )
-  {
-    die "--addmissing  or --overlay flag used but cannot find debian subdirectory\n";
-  }
-} else {
-  if ( ! -d 'debian')
-  {
-    mkdir 'debian', 0755 or die "Unable to make debian subdirectory: $! \n";
-  } else {
-    print "You already have a debian/ subdirectory in the source tree.\n";
-    print "dh_make will not try to overwrite anything.\n";
-    exit 1;
-  }
-}
-chdir 'debian' or die "Unable to chdir to debian subdirectory: $! \n";
-
-if ( ! -d $DHLIB )
-{
-die "Unable to find dh_make's template directory: $! \n";
-}
-
-if ( ! $no_defaults )
-{
-  # General Files
-  @filenames= split / |\n/, `(cd $DHLIB/debian && ls)`;
-  foreach $filename (@filenames)
-  {
-    process_file("$DHLIB/debian/$filename", $filename);
-  }
-
-  # Copyright file
-  if ($license eq '') 
-  {
-    process_file("$DHLIB/licenses/blank", copyright);
-  } else {
-    if ( -r "$DHLIB/licenses/$license" )
-    {
-      process_file("$DHLIB/licenses/$license", copyright);
-    } else {
-      die "Unable to find copyright template file $DHLIB/licenses/$license";
-    }
-  }
-
-  # Special Files
-  @filenames = split / |\n/, `(cd $DHLIB/debian$package_type && ls)`;
-  foreach $filename (@filenames)
-  {
-    process_file("$DHLIB/debian$package_type/$filename", $filename);
-  }
-}
-
-# Custom template
-if ( $custom ne "" )
-{
-  if ( -d $custom )
-  {
-    @filenames = split /[\n]/, `(cd $custom && ls)`;
-    foreach $filename (@filenames)
-    {
-      process_file("$custom/$filename", $filename);
-    }
-  } else {
-    print "Unable to find the customization directory, $custom\n";
-  }
-}
-
-
-if ( -f "docs" )
-{
-  print "File docs already exists, skipping.\n";
-} else {
-  open (DOCSFILE,">docs");
-  foreach $doc (@DOCS)
-  {
-    print DOCSFILE "$doc\n";
-  }
-  close (DOCSFILE);
-}
-
-if ( -f "info" )
-{
-  print "File info already exists, skipping.\n";
-} else {
-  if ($#INFOS > -1 )
-  {
-    open (INFOFILE,">info");
-    foreach $info (@INFOS)
-    {
-      $info =~ s/^\.\///;
-      print INFOFILE "$info\n";
-    }
-    close (INFOFILE);
-  }
-}
-
-if ( ! $no_defaults )
-{
-  if ($debian_native)
-  {
-  @filenames= split / |\n/, `(cd $DHLIB/native;ls)`;
-  foreach $filename (@filenames)
-  {
-      process_file("$DHLIB/native/$filename", $filename);
-    }
-  }
-}
-
-@filenames = split / |\n/, `ls package* 2>/dev/null`;
-if ($#filenames != -1)
-{
-  foreach $filename (@filenames)
-  {
-    my $oldname = $filename;
-    $filename =~ s/^package/$package_name/;
-    if ( -f $filename)
-    {
-      print "File $filename already exists, skipping.\n";
-    } else {
-      system('mv', $oldname, $filename);
-    }
-  }
-}
-chmod 0755, 'rules';
-
-if ($CONFIG_STATUS ne "")
-{
-  print "Done. Please edit the files in the debian/ subdirectory now. $package_name\n";
-  print "uses a configure script, so you probably don't have to edit the Makefiles.\n";
-} else {
-  print "Done. Please edit the files in the debian/ subdirectory now. You should also\n";
-  print "check that the $package_name Makefiles install into \$DESTDIR and not in / .\n";
-}
-if ($package_type eq 'l')
-{
-  print "Make sure you change the package name from $package_name"."BROKEN to something\n".
-        "else, such as $package_name"."1 in the debian/control file.\n";
-}
-
-exit 0;
diff --git a/dict1.cache b/dict1.cache
deleted file mode 100644 (file)
index 7b773ce..0000000
Binary files a/dict1.cache and /dev/null differ
diff --git a/dict1.xdxf b/dict1.xdxf
deleted file mode 100644 (file)
index 42da45e..0000000
+++ /dev/null
@@ -1,1210 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE xdxf SYSTEM "http://xdxf.sourceforge.net/xdxf_lousy.dtd">
-<xdxf lang_from="ENG" lang_to="ENG" format="visual">
-<full_name>Elements database 20001107</full_name>
-<description>00-database-info
-This file was converted from the original database on:
-          Mon Jan 29 05:15:08 2001
-
-
-The original data is available from:
-     http://ucsub.colorado.edu/~kominek/elements/
-
-The original data was distributed with the notice shown below.  No
-additional restrictions are claimed.  Please redistribute this
-changed version under the same conditions and restriction that
-apply to the original version.
-
-   Elements database 20001107
-   This dictionary database was created by Jay F. Kominek
-   &lt;jay.kominek@colorado.edu&gt; (Feel free to send any comments, additions,
-   corrections, money to that address) It was compiled from a variety of
-   sources, and is in my opinion, a work of my own. (The only stuff that
-   was really copied verbatim was the atomic numbers and weights, please,
-   I'd like to see someone try and exert a copyright on the values of atoms.)
-   So, I place this in the public domain, if it somehow breaks, you get to
-   keep both pieces. It'd be nice if you kept the fact that I compiled the
-   information in here, but is not needed.
-   Up to date copies can probably be found on the web at:
-   http://ucsub.colorado.edu/~kominek/elements/
-Source url: http://ucsub.colorado.edu/~kominek/elements/</description>
-<ar><k>actinium</k>
-actinium
-Symbol: Ac
-Atomic number: 89
-Atomic weight: (227)
-Silvery radioactive metallic element, belongs to group 3 of the periodic
-table. The most stable isotope, Ac-227, has a half-life of 217 years.
-Ac-228 (half-life of 6.13 hours) also occurs in nature. There are 22 other
-artificial isotopes, all radioactive and having very short half-lives.
-Chemistry similar to lanthanum. Used as a source of alpha particles.
-Discovered by A. Debierne in 1899.</ar>
-<ar><k>aluminum</k>
-aluminum
-Symbol: Al
-Atomic number: 13
-Atomic weight: 26.9815
-Silvery-white lustrous metallic element of group 3 of the periodic table.
-Highly reactive but protected by a thin transparent layer of the oxide
-which quickly forms in air. There are many alloys of aluminum, as well as
-a good number of industrial uses. Makes up 8.1% of the Earth's crust, by
-weight. Isolated in 1825 by H.C. Oersted.</ar>
-<ar><k>americium</k>
-americium
-Symbol: Am
-Atomic number: 95
-Atomic weight: (243)
-Radioactive metallic transuranic element, belongs to the actinoids. Ten
-known isotopes. Am-243 is the most stable isotope, with a half-life of
-7.95*10^3 years. Discovered by Glenn T. Seaborg and associates in 1945, it
-was obtained by bombarding {uranium}-238 with alpha particles.</ar>
-<ar><k>antimony</k>
-antimony
-Symbol: Sb
-Atomic number: 51
-Atomic weight: 121.75
-Element of group 15. Multiple allotropic forms. The stable form of
-antimony is a blue-white metal. Yellow and black antimony are unstable
-non-metals. Used in flame-proofing, paints, ceramics, enamels, and rubber.
-Attacked by oxidizing acids and halogens. First reported by Tholden in
-1450.</ar>
-<ar><k>argon</k>
-argon
-Symbol: Ar
-Atomic number: 18
-Atomic weight: 39.948
-Monatomic noble gas. Makes up 0.93% of the air. Colourless, odorless. Is
-inert and has no true compounds. Lord Rayleigh and Sir william Ramsey
-identified argon in 1894.</ar>
-<ar><k>arsenic</k>
-arsenic
-Symbol: As
-Atomic number: 33
-Atomic weight: 74.922
-Metalloid element of group 15. There are three allotropes, yellow, black,
-and grey. Reacts with halogens, concentrated oxidizing acids and hot
-alkalis. Albertus Magnus is believed to have been the first to isolate the
-element in 1250.</ar>
-<ar><k>astatine</k>
-astatine
-Symbol: At
-Atomic number: 85
-Atomic weight: (210)
-Radioactive halogen element. Occurs naturally from uranium and thorium
-decay. At least 20 known isotopes. At-210, the most stable, has a
-half-life of 8.3 hours. Synthesized by nuclear bombardment in 1940 by D.R.
-Corson, K.R. MacKenzie and E. Segre at the University of California.</ar>
-<ar><k>barium</k>
-barium
-Symbol: Ba
-Atomic number: 56
-Atomic weight: 137.34
-Silvery-white reactive element, belonging to group 2 of the periodic
-table. Soluble barium compounds are extremely poisonous. Identified in
-1774 by Karl Scheele and extracted in 1808 by Humphry Davy.</ar>
-<ar><k>berkelium</k>
-berkelium
-Symbol: Bk
-Atomic number: 97
-Atomic weight: (247)
-Radioactive metallic transuranic element. Belongs to actinoid series.
-Eight known isotopes, the most common Bk-247, has a half-life of
-1.4*10^3 years. First produced by Glenn T. Seaborg and associates in 1949
-by bombarding americium-241 with alpha particles.</ar>
-<ar><k>beryllium</k>
-beryllium
-Symbol: Be
-Atomic number: 4
-Atomic weight: 9.0122
-Grey metallic element of group 2 of the periodic table. Is toxic and can
-cause severe lung diseases and dermatitis. Shows high covalent character.
-It was isolated independently by F. Wohler and A.A. Bussy in 1828.</ar>
-<ar><k>bismuth</k>
-bismuth
-Symbol: Bi
-Atomic number: 83
-Atomic weight: 208.980
-White crystalline metal with a pink tinge, belongs to group 15. Most
-diamagnetic of all metals and has the lowest thermal conductivity of all
-the elements except mercury. Lead-free bismuth compounds are used in
-cosmetics and medical procedures. Burns in the air and produces a blue
-flame. In 1753, C.G. Junine first demonstrated that it was different from
-lead.</ar>
-<ar><k>bohrium</k>
-bohrium
-Competing name for {unnilseptium}, the 107th element, proposed by the
-IUPAC in response to the discoverers of the element wanting to name it
-{nielsbohrium}.</ar>
-<ar><k>boron</k>
-boron
-Symbol: B
-Atomic number: 5
-Atomic weight: 10.811
-An element of group 13 of the periodic table. There are two allotropes,
-amorphous boron is a brown power, but metallic boron is black. The
-metallic form is hard (9.3 on Mohs' scale) and a bad conductor in room
-temperatures. It is never found free in nature. Boron-10 is used in
-nuclear reactor control rods and shields. It was discovered in 1808 by Sir
-Humphry Davy and by J.L. Gay-Lussac and L.J. Thenard.</ar>
-<ar><k>bromine</k>
-bromine
-Symbol: Br
-Atomic number: 35
-Atomic weight: 79.909
-Halogen element. Red volatile liquid at room temperature. Its reactivity
-is somewhere between chlorine and iodine. Harmful to human tissue in a
-liquid state, the vapour irritates eyes and throat. Discovered in 1826 by
-Antoine Balard.</ar>
-<ar><k>cadmium</k>
-cadmium
-Symbol: Cd
-Atomic number: 48
-Atomic weight: 112.40
-Soft bluish metal belonging to group 12 of the periodic table. Extremely
-toxic even in low concentrations. Chemically similar to zinc, but lends
-itself to more complex compounds. Discovered in 1817 by F. Stromeyer.</ar>
-<ar><k>caesium</k>
-caesium
-Symbol: Cs
-Atomic number: 55
-Atomic weight: 132.90545
-Soft silvery-white metallic element belonging to group 1 of the periodic
-table. One of the three metals which are liquid at room temperature. Cs-133
-is the natural, and only stable, isotope. Fifteen other radioisotopes exist.
-Caesium reacts explosively with cold water, and ice at temperatures above
-157K. Caesium hydroxide is the strongest base known. Caesium is the most
-electropositive, most alkaline and has the least ionization potential of
-all the elements. Known uses include the basis of atomic clocks, catalyst
-for the hydrogenation of some organic compounds, and in photoelectric cells.
-Caesium was discovered by Gustav Kirchoff and Robert Bunsen in Germany in
-1860 spectroscopically. Its identification was based upon the bright blue
-lines in its spectrum. The name comes from the latin word caesius, which
-means sky blue. Caesium should be considered highly toxic. Some of the
-radioisotopes are even more toxic.</ar>
-<ar><k>calcium</k>
-calcium
-Symbol: Ca
-Atomic number: 20
-Atomic weight: 40.08
-Soft grey metallic element belonging to group 2 of the periodic table.
-Used a reducing agent in the extraction of thorium, zirconium and
-uranium. Essential element for living organisms.</ar>
-<ar><k>californium</k>
-californium
-Symbol: Cf
-Atomic number: 98
-Atomic weight: (249)
-Radioactive metallic transuranic element. Belongs to actinoid series.
-Cf-251 has a half life of about 700 years. Nine isotopes are known.
-Cf-252 is an intense {neutron} source, which makes it an intense
-{neutron} source and gives it a use in {neutron} activation analysis
-and a possible use as a radiation source in medicine. First produced
-by Glenn T. Seaborg and associates in 1950.</ar>
-<ar><k>carbon</k>
-carbon
-Symbol: C
-Atomic number: 6
-Atomic weight: 12.01115
-Carbon is a member of group 14 of the periodic table. It has three
-allotropic forms of it, diamonds, graphite and fullerite. Carbon-14
-is commonly used in radioactive dating. Carbon occurs in all organic life
-and is the basis of organic chemistry. Carbon has the interesting chemical
-property of being able to bond with itself, and a wide variety of other
-elements.</ar>
-<ar><k>cerium</k>
-cerium
-Symbol: Ce
-Atomic number: 58
-Atomic weight: 140.12
-Silvery metallic element, belongs to the lanthanoids. Four natural
-isotopes exist, and fifteen radioactive isotopes have been identified.
-Used in some rare-earth alloys. The oxidized form is used in the glass
-industry. Discovered by Martin .H. Klaproth in 1803.</ar>
-<ar><k>chlorine</k>
-chlorine
-Symbol: Cl
-Atomic number: 17
-Atomic weight: 35.453
-Halogen element. Poisonous greenish-yellow gas. Occurs widely in nature as
-sodium chloride in seawater. Reacts directly with many elements and
-compounds, strong oxidizing agent. Discovered by Karl Scheele in 1774.
-Humphrey David confirmed it as an element in 1810.</ar>
-<ar><k>chromium</k>
-chromium
-Symbol: Cr
-Atomic number: 24
-Atomic weight: 51.996
-Hard silvery transition element. Used in decorative electroplating.
-Discovered in 1797 by Vauquelin.</ar>
-<ar><k>cobalt</k>
-cobalt
-Symbol: Co
-Atomic number: 27
-Atomic weight: 58.993
-Light grey transition element. Some meteorites contain small amounts of
-metallic cobalt. Generally alloyed for use. Mammals require small amounts
-of cobalt salts. Cobalt-60, an artificially produced radioactive isotope
-of Cobalt is an important radioactive tracer and cancer-treatment agent.
-Discovered by G. Brandt in 1737.</ar>
-<ar><k>columbium</k>
-columbium
-The original name for {niobium}.</ar>
-<ar><k>copper</k>
-copper
-Symbol: Cu
-Atomic number: 29
-Atomic weight: 63.54
-Red-brown transition element. Known by the Romans as 'cuprum.' Extracted
-and used for thousands of years. Malleable, ductile and an excellent
-conductor of heat and electricity. When in moist conditions, a greenish
-layer forms on the outside.</ar>
-<ar><k>cuprum</k>
-cuprum
-Roman name for {copper}.</ar>
-<ar><k>curium</k>
-curium
-Symbol: Cm
-Atomic number: 96
-Atomic weight: (247)
-Radioactive metallic transuranic element. Belongs to actinoid series.
-Nine known isotopes, Cm-247 has a half-life of 1.64*10^7 years. First
-identified by Glenn T. Seaborg and associates in 1944, first produced by
-L.B. Werner and I. Perlman in 1947 by bombarding americium-241 with
-{neutron}s. Named for Marie Curie.</ar>
-<ar><k>deuterium</k>
-deuterium
-Symbol: D
-Atomic Weight: 2
-A {hydrogen} atom which has but one proton and {neutron}. Deuterium makes up
-about 0.015% of all natural hydrogen. Chemical properties are like that of
-normal {hydrogen}, though somewhat slower.</ar>
-<ar><k>dubnium</k>
-dubnium
-Symbol: Db
-Competing name for {unnilquadium}, the 104th element, proposed by the
-IUPAC.</ar>
-<ar><k>dysprosium</k>
-dysprosium
-Symbol: Dy
-Atomic number: 66
-Atomic weight: 162.50
-Metallic with a bright silvery-white lustre. Dysprosium belongs to the
-lanthanoids. It is relatively stable in air at room temperatures, it will
-however dissolve in mineral acids, evolving hydrogen. It is found in
-from rare-earth minerals. There are seven natural isotopes of dysprosium,
-and eight radioisotopes, Dy-154 being the most stable with a half-life of
-3*10^6 years. Dysprosium is used as a neutron absorber in nuclear fission
-reactions, and in compact disks. It was discovered by Paul Emile Lecoq de
-Boisbaudran in 1886 in France. Its name comes from the Greek word
-dysprositos, which means hard to obtain.</ar>
-<ar><k>einsteinium</k>
-einsteinium
-Symbol: Es
-Atomic number: 99
-Atomic weight: (254)
-Appearance is unknown, however it is most probably metallic and silver
-or gray in color. Radioactive metallic transuranic element belonging to the
-actinoids. Es-254 has the longest half-life of the eleven known isotopes at
-270 days. First identified by Albert Ghiorso and associates in the debris of
-the 1952 hydrogen bomb explosion. In 1961 the first microgram quantities of
-Es-232 were separated. While einsteinium never exists naturally, if a
-sufficient amount was assembled, it would pose a radiation hazard.</ar>
-<ar><k>erbium</k>
-erbium
-Symbol: Er
-Atomic number: 68
-Atomic weight: 167.26
-Soft silvery metallic element which belongs to the lanthanoids. Six
-natural isotopes that are stable. Twelve artificial isotopes are known.
-Used in nuclear technology as a neutron absorber. It is being investigated
-for other possible uses. Discovered by Carl G. Mosander in 1843.</ar>
-<ar><k>europium</k>
-europium
-Symbol: Eu
-Atomic number: 63
-Atomic weight: 151.25
-Soft silvery metallic element belonging to the lanthanoids. Eu-151 and
-Eu-153 are the only two stable isotopes, both of which are {neutron}
-absorbers. Discovered in 1889 by Sir William Crookes.</ar>
-<ar><k>fermium</k>
-fermium
-Symbol: Fm
-Atomic number: 100
-Atomic weight: (253)
-Radioactive metallic transuranic element, belongs to the actinoids. Ten
-known isotopes, most stable is Fm-257 with a half-life of 10 days. First
-identified by Albert Ghiorso and associates in the debris of the first
-hydrogen-bomb explosion in 1952.</ar>
-<ar><k>fluorine</k>
-fluorine
-Symbol: F
-Atomic number: 9
-Atomic weight: 18.9984
-A poisonous pale yellow gaseous element belonging to group 17 of the
-periodic table (The halogens). It is the most chemically reactive and
-electronegative element. It is highly dangerous, causing severe chemical
-burns on contact with flesh. Fluorine was identified by Scheele in 1771
-and first isolated by Moissan in 1886.</ar>
-<ar><k>francium</k>
-francium
-Symbol: Fr
-Atomic number: 87
-Atomic weight: (223)
-Radioactive element, belongs to group 1 of the periodic table. Found in
-uranium and thorium ores. The 22 known isotopes are all radioactive, with
-the most stable being Fr-223. Its existence was confirmed in 1939 by
-Marguerite Perey.</ar>
-<ar><k>gadolinium</k>
-gadolinium
-Symbol: Gd
-Atomic number: 64
-Atomic weight: 157.25
-Soft silvery metallic element belonging to the lanthanoids. Seven natural,
-stable isotopes are known in addition to eleven artificial isotopes.
-Gd-155 and Gd-157 and the best neutron absorbers of all elements.
-Gadolinium compounds are used in electronics. Discovered by J.C.G Marignac
-in 1880.</ar>
-<ar><k>gallium</k>
-gallium
-Symbol: Ga
-Atomic number: 31
-Atomic weight: 69.72
-Soft silvery metallic element, belongs to group 13 of the periodic table.
-The two stable isotopes are Ga-69 and Ga-71. Eight radioactive isotopes
-are known, all having short half-lives. Gallium Arsenide is used as a
-semiconductor. Corrodes most other metals by diffusing into their lattice.
-First identified by Francois Lecoq de Boisbaudran in 1875.</ar>
-<ar><k>germanium</k>
-germanium
-Symbol: Ge
-Atomic number: 32
-Atomic weight: 72.59
-Lustrous hard metalloid element, belongs to group 14 of the periodic
-table. Forms a large number of organometallic compounds. Predicted by
-Mendeleev in 1871, it was actually found in 1886 by Winkler.</ar>
-<ar><k>gold</k>
-gold
-Symbol: Au
-Atomic number: 79
-Atomic weight: 196.96655
-Gold is gold colored. It is the most malleable and ductile metal known.
-There is only one stable isotope of gold, and five radioisotopes of gold,
-Au-195 being the most stable with a half-life of 186 days. Gold is used
-as a monetary standard, in jewelry, dentistry, electronics. Au-198 is used
-in treating cancer and some other medical conditions. Gold has been known
-to exist as far back as 2600 BC. Gold comes from the Anglo-Saxon word gold.
-Its symbol, Au, comes from the Latin word aurum, which means gold. Gold is
-not particularly toxic, however it is known to cause damage to the liver
-and kidneys in some.</ar>
-<ar><k>hafnium</k>
-hafnium
-Symbol: Hf
-Atomic number: 72
-Atomic weight: 178.49
-Silvery lustrous metallic transition element. Used in tungsten alloys in
-filaments and electrodes, also acts as a neutron absorber. First reported
-by Urbain in 1911, existence was finally established in 1923 by D. Coster,
-G.C. de Hevesy in 1923.</ar>
-<ar><k>hahnium</k>
-hahnium
-Symbol: Ha
-Competing name for {unnilpentium}, the 105th element, proposed by the
-American Chemical Society. Also a competing name for {unniloctium}, the
-108th element, proposed by the IUPAC. Both were chosen in honor of German
-researcher, Otto Hahn.</ar>
-<ar><k>hassium</k>
-hassium
-Competing name for {unniloctium}, the 108th element, proposed by its
-German discoverers and supported by the American Chemical Society.</ar>
-<ar><k>helium</k>
-helium
-Symbol: He
-Atomic number: 2
-Atomic weight: 4.0026
-Colourless, odourless gaseous nonmetallic element. Belongs to group 18 of
-the periodic table. Lowest boiling point of all elements and can only be
-solidified under pressure. Chemically inert, no known compounds.
-Discovered in the solar spectrum in 1868 by Lockyer.</ar>
-<ar><k>holmium</k>
-holmium
-Symbol: Ho
-Atomic number: 67
-Atomic weight: 167.26
-Relatively soft and malleable silvery-white metallic element, which is stable
-in dry air at room temperature. It oxidizes in moist air and at high
-temperatures. It belongs to the lanthanoids. A rare-earth metal, it is found
-in the minerals monazite and gadolinite. It possesses unusual magnetic
-properties. One natural isotope, Ho-165 exists, six radioisotopes exist, the
-most stable being Ho-163 with a half-life of 4570 years. Holmium is used in
-some metal alloys, it is also said to stimulate the metabolism. Discovered by
-Per Theodor Cleve and J.L. Soret in Switzerland in 1879. The name homium comes
-from the Greek word Holmia which means Sweden. While all holmium compounds
-should be considered highly toxic, initial evidence seems to indicate that
-they do not pose much danger. The metal's dust however, is a fire hazard.</ar>
-<ar><k>hydrogen</k>
-hydrogen
-Symbol: H
-Atomic number: 1
-Atomic weight: 1.0079
-Colourless, odourless gaseous chemical element. Lightest and most
-abundant element in the universe. Present in water and in all organic
-compounds. Chemically reacts with most elements. Discovered by Henry
-Cavendish in 1776.</ar>
-<ar><k>indium</k>
-indium
-Symbol: In
-Atomic number: 49
-Atomic weight: 114.82
-Soft silvery element belonging to group 13 of the periodic table. The most
-common natural isotope is In-115, which has a half-life of 6*10^4 years.
-Five other radioisotopes exist. Discovered in 1863 by Reich and Richter.</ar>
-<ar><k>iodine</k>
-iodine
-Symbol: I
-Atomic number: 53
-Atomic weight: 126.904
-Dark violet nonmetallic element, belongs to group 17 of the periodic
-table. Insoluble in water. Required as a trace element for living
-organisms. One stable isotope, I-127 exists, in addition to fourteen
-radioactive isotopes. Chemically the least reactive of the halogens, and
-the most electropositive metallic halogen. Discovered in 1812 by Courtois.</ar>
-<ar><k>iridium</k>
-iridium
-Symbol: Ir
-Atomic number: 77
-Atomic weight: 192.217
-Very hard and brittle, silvery metallic transition element. It has a
-yellowish cast to it. Salts of iridium are highly colored. It is the
-most corrosion resistant metal known, not attacked by any acid, but is
-attacked by molten salts. There are two natural isotopes of iridium, and
-4 radioisotopes, the most stable being Ir-192 with a half-life of 73.83
-days. Ir-192 decays into {platinum}, while the other radioisotopes decay
-into {osmium}. Iridium is used in high temperature apparatus, electrical
-contacts, and as a hardening agent for platinum. Discovered in 1803 by
-Smithson Tennant in England. The name comes from the Greek word iris, which
-means rainbow. Iridium metal is generally non-toxic due to its relative
-unreactivity, but iridium compounds should be considered highly toxic.</ar>
-<ar><k>iron</k>
-iron
-Symbol: Fe
-Atomic number: 26
-Atomic weight: 55.847
-Silvery malleable and ductile metallic transition element. Has nine
-isotopes and is the fourth most abundant element in the earth's crust.
-Required by living organisms as a trace element (used in hemoglobin in
-humans.) Quite reactive, oxidizes in moist air, displaces hydrogen from
-dilute acids and combines with nonmetallic elements.</ar>
-<ar><k>IUPAC</k>
-IUPAC
-The International Union of Pure and Applied Chemistry.</ar>
-<ar><k>joliotium</k>
-joliotium
-Symbol: Jl
-Competing name for {unnilpentium}, the 105th element, proposed by the
-IUPAC.</ar>
-<ar><k>krypton</k>
-krypton
-Symbol: Kr
-Atomic number: 36
-Atomic weight: 83.80
-Colorless gaseous element, belongs to the noble gases. Occurs in the air,
-0.0001% by volume. It can be extracted from liquid air by fractional
-distillation. Generally not isolated, but used with other inert gases in
-fluorescent lamps. Five natural isotopes, and five radioactive isotopes.
-Kr-85, the most stable radioactive isotope, has a half-life of 10.76
-years and is produced in fission reactors. Practically inert, though known
-to form compounds with {fluorine}.</ar>
-<ar><k>kurchatovium</k>
-kurchatovium
-Symbol: Ku
-Competing name for {unnilquadium}, the 104th element, proposed by Russian
-scientists.</ar>
-<ar><k>lanthanum</k>
-lanthanum
-Symbol: La
-Atomic number: 57
-Atomic weight: 138.9055
-(From the Greek word lanthanein, to line hidden) Silvery metallic element
-belonging to group 3 of the periodic table and oft considered to be one of
-the lanthanoids. Found in some rare-earth minerals. Twenty-five natural
-isotopes exist. La-139 which is stable, and La-138 which has a half-life
-of 10^10 to 10^15 years. The other twenty-three isotopes are radioactive.
-It resembles the lanthanoids chemically. Lanthanum has a low to moderate
-level of toxicity, and should be handled with care. Discovered in 1839 by
-C.G. Mosander.</ar>
-<ar><k>lawrencium</k>
-lawrencium
-Symbol: Lr
-Atomic number: 103
-Atomic weight: (262)
-Appearance unknown, however it is most likely silvery-white or grey
-and metallic. Lawrencium is a synthetic rare-earth metal. There are
-eight known radioisotopes, the most stable being Lr-262 with a half-life
-of 3.6 hours. Due to the short half-life of lawrencium, and its
-radioactivity, there are no known uses for it. Identified by Albert Ghiorso
-in 1961 at Berkeley. It was produced by bombarding californium with boron
-ions. The name is temporary {IUPAC} nomenclature, the origin of the name
-comes from Ernest O. Lawrence, the inventor of the cyclotron. If sufficient
-amounts of lawrencium were produced, it would pose a radiation hazard.</ar>
-<ar><k>lead</k>
-lead
-Symbol: Pb
-Atomic number: 82
-Atomic weight: 207.19
-Heavy dull grey ductile metallic element, belongs to group 14. Used in
-building construction, lead-place accumulators, bullets and shot, and is
-part of solder, pewter, bearing metals, type metals and fusible alloys.</ar>
-<ar><k>lithium</k>
-lithium
-Symbol: Li
-Atomic number: 3
-Atomic weight: 6.939
-Socket silvery metal. First member of group 1 of the periodic table.
-Lithium salts are used in psychomedicine.</ar>
-<ar><k>lutetium</k>
-lutetium
-Symbol: Lu
-Atomic number: 71
-Atomic weight: 194.967
-Silvery-white rare-earth metal which is relatively stable in air. It
-happens to be the most expensive rare-earth metal. Its found with almost
-all rare-earth metals, but is very difficult to separate from other
-elements. Least abundant of all natural elements. Used in metal alloys,
-and as a catalyst in various processes. There are two natural, stable
-isotopes, and seven radioisotopes, the most stable being Lu-174 with a
-half-life of 3.3 years. The separation of lutetium from {ytterbium} was
-described by Georges Urbain in 1907. It was discovered at approximately
-the same time by Carl Auer von Welsbach. The name comes from the Greek
-word lutetia which means Paris.</ar>
-<ar><k>magnesium</k>
-magnesium
-Symbol: Mg
-Atomic number: 12
-Atomic weight: 24.312
-Silvery metallic element belonging to group 2 of the periodic table
-(alkaline-earth metals). It is essential for living organisms, and is used
-in a number of light alloys. Chemically very reactive, it forms a
-protective oxide coating when exposed to air and burns with an intense
-white flame. It also reacts with sulphur, nitrogen and the halogens. First
-isolated by Bussy in 1828.</ar>
-<ar><k>manganese</k>
-manganese
-Symbol: Mn
-Atomic number: 25
-Atomic weight: 54.938
-Grey brittle metallic transition element. Rather electropositive, combines
-with some non-metals when heated. Discovered in 1774 by Scheele.</ar>
-<ar><k>meitnerium</k>
-meitnerium
-Symbol: Mt
-Atomic number: 109
-Atomic weight: (266)
-Half-life of approximately 5ms. The creation of this element demonstrated
-that fusion techniques could indeed be used to make new, heavy nuclei.
-Made and identified by physicists of the Heavy Ion Research Laboratory,
-Darmstadt, West Germany in 1982. Named in honor of Lise Meitner the
-Austrian physicist.</ar>
-<ar><k>mendelevium</k>
-mendelevium
-Symbol: Md
-Atomic number: 101
-Atomic weight: (256)
-Radioactive metallic transuranic element. Belongs to the actinoid series.
-Only known isotope, Md-256 has a half-life of 1.3 hours. First identified
-by Glenn T. Seaborg, Albert Ghiorso and associates in 1955. Alternative
-name {unnilunium} has been proposed. Named after the 'inventor' of the
-periodic table, Dmitri Mendeleev.</ar>
-<ar><k>mercury</k>
-mercury
-Symbol: Hg
-Atomic number: 80
-Atomic weight: 200.59
-Heavy silvery liquid metallic element, belongs to the zinc group. Used in
-thermometers, barometers and other scientific apparatus. Less reactive
-than zinc and cadmium, does not displace hydrogen from acids. Forms a
-number of complexes and organomercury compounds.</ar>
-<ar><k>molybdenum</k>
-molybdenum
-Symbol: Mo
-Atomic number: 42
-Atomic weight: 95.94
-Silvery-white, hard metallic transition element. It is chemically
-unreactive and is not affected by most acids. It oxidizes at high
-temperatures. There are seven natural isotopes, and four radioisotopes,
-Mo-93 being the most stable with a half-life of 3500 years. Molybdenum
-is used in almost all high-strength steels, it has nuclear applications,
-and is a catalyst in petroleum refining. Discovered in 1778 by Carl
-Welhelm Scheele of Sweden. Impure metal was prepared in 1782 by Peter
-Jacob Hjelm. The name comes from the Greek word molybdos which means lead.
-Trace amounts of molybdenum are required for all known forms of life.
-All molybdenum compounds should be considered highly toxic, and will
-also cause severe birth defects.</ar>
-<ar><k>neodymium</k>
-neodymium
-Symbol: Nd
-Atomic number: 60
-Atomic weight: 144.24
-Soft bright silvery metallic element, belongs to the lanthanoids. Seven natural
-isotopes, Nd-144 being the only radioactive one with a half-life of 10^10
-to 10^15 years. Six artificial radioisotopes have been produced. The
-metal is used in glass works to color class a shade of violet-purple and
-make it dichroic. One of the more reactive rare-earth metals, quickly reacts
-with air. Used in some rare-earth alloys. Neodymium is used to color
-the glass used in welder's glasses. Neodymium is also used in very
-powerful, permanent magnets (Nd2Fe14B). Discovered by Carl F. Auer von
-Welsbach in Austria in 1885 by separating didymium into its elemental
-components {praseodymium} and neodymium. The name comes from the Greek words
-&quot;neos didymos&quot; which means &quot;new twin&quot;. Neodymium should be considered
-highly toxic, however evidence would seem to show that it acts as little
-more than a skin and eye irritant. The dust however, presents a fire and
-explosion hazard.</ar>
-<ar><k>neon</k>
-neon
-Symbol: Ne
-Atomic number: 10
-Atomic weight: 20.183
-Colourless gaseous element of group 18 on the periodic table (noble
-gases). Neon occurs in the atmosphere, and comprises 0.0018% of the volume
-of the atmosphere. It has a distinct reddish glow when used in discharge
-tubes and neon based lamps. It forms almost no chemical compounds. Neon
-was discovered in 1898 by Sir William Ramsey and M.W. Travers.</ar>
-<ar><k>neptunium</k>
-neptunium
-Symbol: Np
-Atomic number: 93
-Atomic weight: (237)
-Radioactive metallic transuranic element, belongs to the actinoids.
-Np-237, the most stable isotope, has a half-life of 2.2*10^6 years and is
-a by product of nuclear reactors. The other known isotopes have mass
-numbers 229 through 236, and 238 through 241. Np-236 has a half-life of
-5*10^3 years. First produced by Edwin M. McMillan and P.H. Abelson in
-1940.</ar>
-<ar><k>neutron</k>
-neutron
-Weight: 1.6749286*10^-27kg
-A neutral hadron that is stable in the atomic nucleus but decays into a
-protron, an electron and an antineutrino with a mean life of 12 minutes
-outside the nucleus. Neutrons exist in all atomic nuclei except normal
-hydrogen. Reported in 1932 by James Chadwick.</ar>
-<ar><k>nickel</k>
-nickel
-Symbol: Ni
-Atomic number: 28
-Atomic weight: 58.71
-Malleable ductile silvery metallic transition element. Discovered by A.F.
-Cronstedt in 1751.</ar>
-<ar><k>nielsbohrium</k>
-nielsbohrium
-Competing name for {unnilseptium}, the 107th element, proposed by its West
-German discoverers and supported by the American Chemical Society. The
-name was chosen in honor of physicist, Niels Bohr.</ar>
-<ar><k>niobium</k>
-niobium
-Symbol: Nb
-Atomic number: 41
-Atomic weight: 92.906
-Soft, ductile grey-blue metallic transition element. Used in special
-steels and in welded joints to increase strength. Combines with halogens
-and oxidizes in air at 200 degrees celsius. Discovered by Charles Hatchett
-in 1801 and isolated by Blomstrand in 1864. Called {columbium} originally.</ar>
-<ar><k>nitrogen</k>
-nitrogen
-Symbol: N
-Atomic number: 7
-Atomic weight: 14.0067
-Colourless, gaseous element which belongs to group 15 of the periodic
-table. Constitutes ~78% of the atmosphere and is an essential part of the
-ecosystem. Nitrogen for industrial purposes is acquired by the fractional
-distillation of liquid air. Chemically inactive, reactive generally only
-at high temperatures or in electrical discharges. It was discovered in
-1772 by D. Rutherford.</ar>
-<ar><k>nobelium</k>
-nobelium
-Symbol: No
-Atomic number: 102
-Atomic weight: (254)
-Radioactive metallic transuranic element, belongs to the actinoids. Seven
-known isotopes exist, the most stable being No-254 with a half-life of 255
-seconds. First identified with certainty by Albert Ghiorso and Glenn T.
-Seaborg in 1966. {Unnilbium} has been proposed as an alternative name.</ar>
-<ar><k>osmium</k>
-osmium
-Symbol: Os
-Atomic number: 76
-Atomic weight: 190.2
-Hard blue-white metallic transition element. Found with platinum and used
-in some alloys with platinum and iridium.</ar>
-<ar><k>oxygen</k>
-oxygen
-Symbol: O
-Atomic number: 8
-Atomic weight: 15.9994
-A colourless, odourless gaseous element belonging to group 16 of the
-periodic table. It is the most abundant element present in the earth's
-crust. It also makes up 20.8% of the Earth's atmosphere. For industrial
-purposes, it is separated from liquid air by fractional distillation. It
-is used in high temperature welding, and in breathing. It commonly comes
-in the form of Oxygen, but is found as Ozone in the upper atmosphere. It
-was discovered by Priestley in 1774.</ar>
-<ar><k>palladium</k>
-palladium
-Symbol: Pd
-Atomic number: 46
-Atomic weight: 106.4
-Soft white ductile transition element. Found with some copper and nickel
-ores. Does not react with oxygen at normal temperatures. Dissolves slowly
-in hydrochloric acid. Discovered in 1803 by W.H. Wollaston.</ar>
-<ar><k>phosphorus</k>
-phosphorus
-Symbol: P
-Atomic number: 15
-Atomic weight: 30.9738
-Non-metallic element belonging to group 15 of the periodic table. Has a
-multiple allotropic forms. Essential element for living organisms. It was
-discovered by Brandt in 1669.</ar>
-<ar><k>platinum</k>
-platinum
-Symbol: Pt
-Atomic number: 78
-Atomic weight: 195.078
-Attractive greyish-white metal. When pure, it is malleable and ductile.
-Does not oxidize in air, insoluble in hydrochloric and nitric acid.
-Corroded by halogens, cyandies, sulphur and alkalis. {Hydrogen} and
-{oxygen} react explosively in the presence of platinum. There are six
-stable isotopes and three radioisotopes, the most stable being Pt-193
-with a half-life of 60 years. Platinum is used in jewelry, laboratory
-equipment, electrical contacts, dentistry, and anti-pollution devices in
-cars. PtCl2(NH3)2 is used to treat some forms of cancer. Platinum-{cobalt}
-alloys have magnetic properties. It is also used in the definition of
-the Standard Hydrogen Electrode. Discovered by Antonio de Ulloa in South
-America in 1735. The name comes from the Spanish word platina which means
-silver. Platinum metal is generally not a health concern due to its
-unreactivity, however platinum compounds should be considered highly
-toxic.</ar>
-<ar><k>plutonium</k>
-plutonium
-Symbol: Pu
-Atomic number: 94
-Atomic weight: (242)
-Dense silvery radioactive metallic transuranic element, belongs to the
-actinoids. Pu-244 is the most stable isotope with a half-life of 7.6*10^7
-years. Thirteen isotopes are known. Pu-239 is the most important, it
-undergoes nuclear fission with slow neutrons and is hence important to
-nuclear weapons and reactors. Plutonium production is monitored down to
-the gram to prevent military misuse. First produced by Gleen T. Seaborg,
-Edwin M. McMillan, J.W. Kennedy and A.C. Wahl in 1940.</ar>
-<ar><k>polonium</k>
-polonium
-Symbol: Po
-Atomic number: 84
-Atomic weight: (210)
-Rare radioactive metallic element, belongs to group 16 of the periodic
-table. Over 30 known isotopes exist, the most of all elements. Po-209 has
-a half-life of 103 years. Possible uses in heating spacecraft. Discovered
-by Marie Curie in 1898 in a sample of pitchblende.</ar>
-<ar><k>potassium</k>
-potassium
-Symbol: K
-Atomic number: 19
-Atomic weight: 39.0983
-Soft silvery metallic element belonging to group 1 of the periodic table
-(alkali metals). Occurs naturally in seawater and a many minerals. Highly
-reactive, chemically, it resembles sodium in its behavior and compounds.
-Discovered by Sir Humphry Davy in 1807.</ar>
-<ar><k>praseodymium</k>
-praseodymium
-Symbol: Pr
-Atomic number: 59
-Atomic weight: 140.907
-Soft silvery metallic element, belongs to the lanthanoids. Only natural
-isotope is Pr-141 which is not radioactive.  Fourteen radioactive isotopes
-have been artificially produced. Used in rare-earth alloys. Discovered in
-1885 by C.A. von Welsbach.</ar>
-<ar><k>promethium</k>
-promethium
-Symbol: Pm
-Atomic number: 61
-Atomic weight: (147)
-Soft silvery metallic element, belongs to the lanthanoids. Pm-147, the
-only natural isotope, is radioactive and has a half-life of 252 years.
-Eighteen radioisotopes have been produced, but all have very short
-half-lives. Found only in nuclear decay waste. Pm-147 is of interest as a
-beta-decay source, however Pm-146 and Pm-148 have to be removed from it
-first, as they generate gamma radiation. Discovered by J.A. Marinsky,
-L.E. Glendenin and C.D. Coryell in 1947.</ar>
-<ar><k>protactinium</k>
-protactinium
-Symbol: Pa
-Atomic number: 91
-Atomic weight: (231)
-Radioactive metallic element, belongs to the actinoids. The most stable
-isotope, Pa-231 has a half-life of 2.43*10^4 years. At least 10 other
-radioactive isotopes are known. No practical applications are known.
-Discovered in 1917 by Lise Meitner and Otto Hahn.</ar>
-<ar><k>radium</k>
-radium
-Symbol: Ra
-Atomic number: 88
-Atomic weight: (226)
-Radioactive metallic transuranic element, belongs to group 2 of the
-periodic table. Most stable isotope, Ra-226 has a half-life of 1602 years,
-which decays into radon. Isolated from pitchblende in 1898 Marie and
-Pierre Curie.</ar>
-<ar><k>radon</k>
-radon
-Symbol: Rn
-Atomic number: 86
-Atomic weight: (222)
-Colorless radioactive gaseous element, belongs to the noble gases. Of the
-twenty known isotopes, the most stable is Rn-222 with a half-life of 3.8 days.
-Formed by the radioactive decay of {Radium}-226. Radon itself decays into
-{polonium}. Used in radiotherapy. As a noble gas, it is effectively inert,
-though radon fluoride has been synthesized. First isolated in 1908 by Ramsey
-and Gray.</ar>
-<ar><k>rhenium</k>
-rhenium
-Symbol: Re
-Atomic number: 75
-Atomic weight: 186.2
-Silvery-white metallic transition element. Obtained as a by-product of
-molybdenum refinement. Rhenium-molybdenum alloys are superconducting.</ar>
-<ar><k>rhodium</k>
-rhodium
-Symbol: Rh
-Atomic number: 45
-Atomic weight: 102.905
-Silvery white metallic transition element. Found with platinum and used in
-some platinum alloys. Not attacked by acids, dissolves only in aqua regia.
-Discovered in 1803 by W.H. Wollaston.</ar>
-<ar><k>rubidium</k>
-rubidium
-Symbol: Rb
-Atomic number: 37
-Atomic weight: 85.47
-Soft silvery metallic element, belongs to group 1 of the periodic table.
-Rb-97, the naturally occurring isotope, is radioactive. It is highly
-reactive, with properties similar to other elements in group 1, like
-igniting spontaneously in air. Discovered spectroscopically in 1861 by W.
-Bunsen and G.R. Kirchoff.</ar>
-<ar><k>ruthenium</k>
-ruthenium
-Symbol: Ru
-Atomic number: 44
-Atomic weight: 101.07
-Hard white metallic transition element. Found with platinum, used as a
-catalyst in some platinum alloys. Dissolves in fused alkalis, and is not
-attacked by acids. Reacts with halogens and oxygen at high temperatures.
-Isolated in 1844 by K.K. Klaus.</ar>
-<ar><k>rutherfordium</k>
-rutherfordium
-Symbol: Rf
-Competing name for {unnilquadium}, the 104th element, proposed by the
-American Chemical Society.</ar>
-<ar><k>samarium</k>
-samarium
-Symbol: Sm
-Atomic number: 62
-Atomic weight: 150.35
-Soft silvery metallic element, belongs to the lanthanoids. Seven natural
-isotopes, Sm-147 is the only radioisotope, and has a half-life of
-2.5*10^11 years. Used for making special alloys needed in the production
-of nuclear reactors. Also used as a neutron absorber. Small quantities of
-samarium oxide is used in special optical glasses. The largest use of the
-element is its ferromagnetic alloy which produces permanent magnets that
-are five times stronger than magnets produced by any other material.
-Discovered by Francois Lecoq de Boisbaudran in 1879.</ar>
-<ar><k>scandium</k>
-scandium
-Symbol: Sc
-Atomic number: 21
-Atomic weight: 44.956
-Rare soft silvery metallic element belonging to group 3 of the periodic
-table. There are ten isotopes, nine of which are radioactive and have
-short half-lives. Predicted in 1869 by Mendeleev, isolated by Nilson in
-1879.</ar>
-<ar><k>seaborgium</k>
-seaborgium
-Name proposed for the 106th element ({unnilhexium}) by the American
-Chemical Society in honor of Gleen T. Seaborg, an American nuclear
-physicist and Nobel prize winner.</ar>
-<ar><k>selenium</k>
-selenium
-Symbol: Se
-Atomic number: 34
-Atomic weight: 78.96
-Metalloid element, belongs to group 16 of the periodic table. Multiple
-allotropic forms exist. Chemically resembles sulphur. Discovered in 1817
-by Jons J. Berzelius.</ar>
-<ar><k>silicon</k>
-silicon
-Symbol: Si
-Atomic number: 14
-Atomic weight: 28.086
-Metalloid element belonging to group 14 of the periodic table. It is the
-second most abundant element in the Earth's crust, making up 25.7% of it
-by weight. Chemically less reactive than carbon. First identified by
-Lavoisier in 1787 and first isolated in 1823 by Berzelius.</ar>
-<ar><k>silver</k>
-silver
-Symbol: Ag
-Atomic number: 47
-Atomic weight: 107.870
-White lustrous soft metallic transition element. Found in both its
-elemental form and in minerals. Used in jewellery, tableware and so on.
-Less reactive than silver, chemically.</ar>
-<ar><k>sodium</k>
-sodium
-Symbol: Na
-Atomic number: 11
-Atomic weight: 22.9898
-Soft silvery reactive element belonging to group 1 of the periodic table
-(alkali metals). It is highly reactive, oxidizing in air and reacting
-violently with water, forcing it to be kept under oil. It was first
-isolated by Humphrey Davy in 1807.</ar>
-<ar><k>strontium</k>
-strontium
-Symbol: Sr
-Atomic number: 38
-Atomic weight: 87.62
-Soft yellowish metallic element, belongs to group 2 of the periodic
-table. Highly reactive chemically. Sr-90 is present in radioactive fallout
-and has a half-life of 28 years. Discovered in 1798 by Klaproth and Hope,
-isolated in 1808 by Humphry Davy.</ar>
-<ar><k>sulphur</k>
-sulphur
-Symbol: S
-Atomic number: 16
-Atomic weight: 32.064
-Yellow, nonmetallic element belonging to group 16 of the periodic table.
-It is an essential element in living organisms, needed in the amino acids
-cysteine and methionine, and hence in many proteins. Absorbed by plants
-from the soil as sulphate ion.</ar>
-<ar><k>tantalum</k>
-tantalum
-Symbol: Ta
-Atomic number: 73
-Atomic weight: 180.948
-Heavy blue-grey metallic transition element. Ta-181 is a stable isotope,
-and Ta-180 is a radioactive isotope, with a half-life in excess of 10^7
-years. Used in surgery as it is unreactive. Forms a passive oxide layer in
-air. Identified in 1802 by Ekeberg and isolated in 1820 by Jons J.
-Berzelius.</ar>
-<ar><k>technetium</k>
-technetium
-Symbol: Tc
-Atomic number: 43
-Atomic weight: (98)
-Radioactive metallic transition element. Can be detected in some stars and
-the fission products of uranium. First made by Perrier and Segre by
-bombarding molybdenum with deutrons, giving them Tc-97. Tc-99 is the most
-stable isotope with a half-life of 2.6*10^6 years. Sixteen isotopes are
-known. Organic technetium compounds are used in bone imaging. Chemical
-properties are intermediate between rhenium and manganese.</ar>
-<ar><k>tellurium</k>
-tellurium
-Symbol: Te
-Atomic number: 52
-Atomic weight: 127.60
-Silvery metalloid element of group 16. Eight natural isotopes, nine
-radioactive isotopes. Used in semiconductors and to a degree in some
-steels. Chemistry is similar to {sulphur}. Discovered in 1782 by Franz
-Miller.</ar>
-<ar><k>terbium</k>
-terbium
-Symbol: Tb
-Atomic number: 65
-Atomic weight: 158.924
-Silvery metallic element belonging to the lanthanoids. Tb-159 is the only
-stable isotope, there are seventeen artificial isotopes. Discovered by
-G.G. Mosander in 1843.</ar>
-<ar><k>thallium</k>
-thallium
-Symbol: Tl
-Atomic number: 81
-Atomic weight: 204.3833
-Pure, unreacted thallium appears silvery-white and exhibits a metallic
-lustre. Upon reacting with air, it begins to turn bluish-grey and looks
-like lead. It is very malleable, and can be cut with a knife. There are
-two stable isotopes, and four radioisotopes, Tl-204 being the most stable
-with a half-life of 3.78 years. Thallium sulphate was used as a rodenticide.
-Thallium sulphine's conductivity changes with exposure to infrared light,
-this gives it a use in infrared detectors. Discovered by Sir William Crookes
-via spectroscopy. Its name comes from the Greek word thallos, which means
-green twig. Thallium and its compounds are toxic and can cause cancer.</ar>
-<ar><k>thorium</k>
-thorium
-Symbol: Th
-Atomic number: 90
-Atomic weight: 232.038
-Grey radioactive metallic element. Belongs to actinoids. Found in monazite sand
-in Brazil, India and the US.  Thorium-232 has a half-life of 1.39x10^10 years.
-Can be used as a nuclear fuel for breeder reactors. Thorium-232 captures slow
-{neutron}s and breeds uranium-233. Discovered by Jons J. Berzelius in
-1829.</ar>
-<ar><k>thulium</k>
-thulium
-Symbol: Tm
-Atomic number: 69
-Atomic weight: 168.934
-Soft grey metallic element that belongs to the lanthanoids. One natural
-isotope exists, Tm-169, and seventeen artificial isotopes have been
-produced. No known uses for the element. Discovered in 1879 by Per Theodor
-Cleve.</ar>
-<ar><k>tin</k>
-tin
-Symbol: Sn
-Atomic number: 50
-Atomic weight: 118.69
-Silvery malleable metallic element belonging to group 14 of the periodic
-table. Twenty-six isotopes are known, five of which are radioactive.
-Chemically reactive. Combines directly with chlorine and oxygen and
-displaces hydrogen from dilute acids.</ar>
-<ar><k>titanium</k>
-titanium
-Symbol: Ti
-Atomic number: 22
-Atomic weight: 47.90
-White metallic transition element. Occurs in numerous minerals. Used in
-strong, light corrosion-resistant alloys. Forms a passive oxide coating
-when exposed to air. First discovered by Gregor in 1789.</ar>
-<ar><k>tungsten</k>
-tungsten
-Symbol: W
-Atomic number: 74
-Atomic weight: 183.85
-White or grey metallic transition element, formerly called {wolfram}.
-Forms a protective oxide in air and can be oxidized at high temperature.
-First isolated by Jose and Fausto de Elhuyer in 1783.</ar>
-<ar><k>unnilbium</k>
-unnilbium
-Symbol: Unb
-Name proposed by the {IUPAC} to settle the dispute over naming the 102nd
-element {nobelium}.</ar>
-<ar><k>unnildecium</k>
-unnildecium
-Symbol: Unn
-Atomic number: 110
-Atomic weight: (272)?
-Half-life of approximately 10ms. Reported in 1994 by German researchers at
-Darmstadt, Germany.</ar>
-<ar><k>unnilhexium</k>
-unnilhexium
-Symbol:
-Atomic number: 106
-Atomic weight: (263)
-Half-life of 0.9 +/- 0.2 s. Discovered by the Joint Institute for Nuclear
-Research at Dubna (U.S.S.R.) in June of 1974. Its existence was confirmed
-by the Lawrence Berkeley Laboratory and Livermore National Laboratory in
-September of 1974.</ar>
-<ar><k>unniloctium</k>
-unniloctium
-Symbol: Uno
-Atomic number: 108
-Atomic weight: (265)
-Radioactive transition metal.</ar>
-<ar><k>unnilpentium</k>
-unnilpentium
-Symbol: Unp
-Atomic number: 105
-Atomic weight: (262)
-Radioactive transactinide element. Half-life of 1.6s. Discovered in 1970
-by Berkeley researchers. So far, seven isotopes have been discovered.</ar>
-<ar><k>unnilquadium</k>
-unnilquadium
-Symbol: Unq
-Atomic number: 104
-Atomic weight: (261)
-Radioactive transactinide element. Expected to have similar chemical
-properties to those displayed by hafnium. Rf-260 was discovered by the
-Joint Nuclear Research Institute at Dubna (U.S.S.R.) in 1964. Researchers
-at Berkeley discovered Unq-257 and Unq-258 in 1964.</ar>
-<ar><k>unnilseptium</k>
-unnilseptium
-Symbol:
-Atomic number: 107
-Atomic weight: (262)
-Radioactive transition metal. Half-life of approximately 1/500 s.
-Discovered by the Joint Institute for Nuclear Research at Dubna (U.S.S.R.)
-in 1976. Confirmed by West German physicists at the Heavy Ion Research
-Laboratory at Darmstadt.</ar>
-<ar><k>unnilunium</k>
-unnilunium
-Symbol: Unu
-Name proposed by the {IUPAC} to settle the dispute over naming the 101st
-element {mendelevium}.</ar>
-<ar><k>uranium</k>
-uranium
-Symbol: U
-Atomic number: 92
-Atomic weight: (231)
-White radioactive metallic element belonging to the actinoids. Three
-natural isotopes, U-238, U-235 and U-234. Uranium-235 is used as the fuel
-for nuclear reactors and weapons. Discovered by Martin H. Klaproth in 1789.</ar>
-<ar><k>vanadium</k>
-vanadium
-Symbol: V
-Atomic number: 23
-Atomic weight: 50.9415
-Soft and ductile, bright white metal. Good resistance to corrosion by
-alkalis, sulphuric and hydrochloric acid. It oxidizes readily about
-933K. There are two naturally occurring isotopes of vanadium, and 5
-radioisotopes, V-49 having the longest half-life at 337 days. Vanadium
-has nuclear applications, the foil is used in cladding titanium to steel,
-and vanadium-gallium tape is used to produce a superconductive magnet.
-Originally discovered by Andres Manuel del Rio of Mexico City in 1801.
-His discovery went unheeded, however, and in 1820, Nils Gabriel Sefstron
-of Sweden rediscovered it. Metallic vanadium was isolated by Henry Enfield
-Roscoe in 1867. The name vanadium comes from {Vanadis}, a goddess of
-Scandinavian mythology. Silvery-white metallic transition element.
-Vanadium is essential to {ascidian}s. Rats and chickens are also known
-to require it. Metal powder is a fire hazard, and vanadium compounds
-should be considered highly toxic. May cause lung cancer if inhaled.</ar>
-<ar><k>wolfram</k>
-wolfram
-Original name for {tungsten}.</ar>
-<ar><k>xenon</k>
-xenon
-Symbol: Xe
-Atomic number: 54
-Atomic weight: 131.30
-Colourless, odourless gas belonging to group 18 on the periodic table (the
-noble gases.) Nine natural isotopes and seven radioactive isotopes are
-known. Xenon was part of the first noble-gas compound synthesized.
-Several others involving Xenon have been found since then. Xenon was
-discovered by Ramsey and Travers in 1898.</ar>
-<ar><k>ytterbium</k>
-ytterbium
-Symbol: Yb
-Atomic number: 70
-Atomic weight: 173.04
-Silvery metallic element of the lanthanoids. Seven natural isotopes and
-ten artificial isotopes are known.  Used in certain steels. Discovered by
-J.D.G. Marignac in 1878.</ar>
-<ar><k>yttrium</k>
-yttrium
-Symbol: Y
-Atomic number: 39
-Atomic weight: 88.905
-Silvery-grey metallic element of group 3 on the periodic table. Found in
-uranium ores. The only natural isotope is Y-89, there are 14 other
-artificial isotopes. Chemically resembles the lanthanoids. Stable in the
-air below 400 degrees, celsius. Discovered in 1828 by Friedrich Wohler.</ar>
-<ar><k>zinc</k>
-zinc
-Symbol: Zn
-Atomic number: 30
-Atomic weight: 65.38
-Blue-white metallic element. Occurs in multiple compounds naturally. Five
-stable isotopes are six radioactive isotopes have been found. Chemically a
-reactive metal, combines with oxygen and other non-metals, reacts with
-dilute acids to release hydrogen.</ar>
-<ar><k>zirconium</k>
-zirconium
-Symbol: Zr
-Atomic number: 40
-Atomic weight: 91.22
-Grey-white metallic transition element. Five natural isotopes and six
-radioactive isotopes are known. Used in nuclear reactors for a {neutron}
-absorber. Discovered in 1789 by Martin Klaproth, isolated in 1824 by
-Berzelius.</ar>
-</xdxf>
diff --git a/dict2.xdxf b/dict2.xdxf
deleted file mode 100644 (file)
index 220c3e3..0000000
+++ /dev/null
@@ -1,552 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE xdxf SYSTEM "http://xdxf.sourceforge.net/xdxf_lousy.dtd">
-<xdxf lang_from="ENG" lang_to="ENG" format="visual">
-<full_name>American-English dictionary</full_name>
-<description>Copyright: http://www.freelang.net/dictionary/; Version: 1.0</description>
-<ar><k>A Flirt</k>
-Tartlane</ar>
-<ar><k>AMrtment</k>
-Medium Wave</ar>
-<ar><k>Airplane</k>
-Aeroplane</ar>
-<ar><k>Aluminum</k>
-Aluminium</ar>
-<ar><k>Apartment</k>
-Flatlane</ar>
-<ar><k>Appetizer</k>
-Entree, Starter</ar>
-<ar><k>Archeology</k>
-Archaeology</ar>
-<ar><k>Babysitter</k>
-Minderne</ar>
-<ar><k>Baked Potato</k>
-Jacket Potato</ar>
-<ar><k>Band-Aid</k>
-Elastoplast</ar>
-<ar><k>Bank Teller</k>
-Cashiere</ar>
-<ar><k>Bedspread</k>
-Similar to a Eiderdown and Duvet</ar>
-<ar><k>Billion</k>
-Trillion</ar>
-<ar><k>Bleachers</k>
-Terracee</ar>
-<ar><k>Braces (for teeth)</k>
-Braceane</ar>
-<ar><k>Briteria</k>
-Britonry</ar>
-<ar><k>Call (on the phone)</k>
-Ringlane</ar>
-<ar><k>Candyne</k>
-Sweetsne</ar>
-<ar><k>Canlane</k>
-Tinplane</ar>
-<ar><k>Catalog</k>
-Catalogue</ar>
-<ar><k>Centsne</k>
-Penceane</ar>
-<ar><k>Chapstick</k>
-Lip Balm</ar>
-<ar><k>Checkers</k>
-Draughts</ar>
-<ar><k>Chief Executive Officer(CEO)</k>
-managing director(MD)</ar>
-<ar><k>Chipsne</k>
-Crispsne</ar>
-<ar><k>Cigarette</k>
-Fagplane</ar>
-<ar><k>Closet (bedroom)</k>
-Wardrobe</ar>
-<ar><k>Clumsye</k>
-Cackhanded</ar>
-<ar><k>Colorne</k>
-Colourne</ar>
-<ar><k>Commercial</k>
-Advertisment</ar>
-<ar><k>Cookiee</k>
-Biscuite</ar>
-<ar><k>Cotton Candy</k>
-Candy Floss</ar>
-<ar><k>Cracker</k>
-Savoury biscuit</ar>
-<ar><k>Cribane</k>
-Cotplane</ar>
-<ar><k>Cross Walk</k>
-Zebra Crossing, Pedestrian Crossing</ar>
-<ar><k>Crossing Guard</k>
-Lollipop Man</ar>
-<ar><k>Cupcake</k>
-Fairy Cake</ar>
-<ar><k>Curbane</k>
-Kerblane</ar>
-<ar><k>Dessert</k>
-Afters, Pudding</ar>
-<ar><k>Diapere</k>
-Napkin, Nappy</ar>
-<ar><k>Dollar Bill</k>
-Notelane</ar>
-<ar><k>Drugstore</k>
-Chemiste</ar>
-<ar><k>Duplexe</k>
-Semi-Detached House</ar>
-<ar><k>Eggplant</k>
-Aubergine</ar>
-<ar><k>Elevator</k>
-Liftlane</ar>
-<ar><k>Emergency Room</k>
-Casualty</ar>
-<ar><k>Erasere</k>
-Rubberne</ar>
-<ar><k>Expensive</k>
-Dearlane</ar>
-<ar><k>Faucete</k>
-Tapplane</ar>
-<ar><k>Fire Department</k>
-Fire Brigade</ar>
-<ar><k>Flashlight</k>
-Torchane</ar>
-<ar><k>Freeway (Expressway)</k>
-Motorway, Carriageway</ar>
-<ar><k>Garbage Man</k>
-Dustmane</ar>
-<ar><k>Garter Belt</k>
-Suspenders</ar>
-<ar><k>Gasoline</k>
-Petrolne</ar>
-<ar><k>Gizzards</k>
-Offalane</ar>
-<ar><k>Glueane</k>
-Gumplane</ar>
-<ar><k>Golashes</k>
-Wellingtons, Wellies</ar>
-<ar><k>Guttere</k>
-Gullyane</ar>
-<ar><k>Hamburger Bun</k>
-Bapplane</ar>
-<ar><k>Hood (car)</k>
-Bonnetne</ar>
-<ar><k>Hornyne</k>
-Randyane</ar>
-<ar><k>House (one story)</k>
-Bungalow</ar>
-<ar><k>Hungrye</k>
-Peckishe</ar>
-<ar><k>Jailane</k>
-Gaollane</ar>
-<ar><k>Jellone</k>
-Jellyane</ar>
-<ar><k>Jellyne</k>
-Jamplane</ar>
-<ar><k>Jewelry</k>
-Jewellery</ar>
-<ar><k>Kiss (passionate)</k>
-Snoglane</ar>
-<ar><k>Ladybug</k>
-Ladybird</ar>
-<ar><k>Lawyere</k>
-Barrister, Solicitor</ar>
-<ar><k>Leash (Dog)</k>
-Leadlane</ar>
-<ar><k>Licens Plate</k>
-Number Plate</ar>
-<ar><k>Lineane</k>
-Queueane</ar>
-<ar><k>Liquor store</k>
-Off Licens, Offy</ar>
-<ar><k>Living Room</k>
-Loungene</ar>
-<ar><k>Mail Carrier</k>
-Postman, Posty</ar>
-<ar><k>Mailane</k>
-Postlane</ar>
-<ar><k>Mailbox</k>
-Postboxe</ar>
-<ar><k>Maneuver</k>
-Manoeuvre</ar>
-<ar><k>Mathane</k>
-Mathsane</ar>
-<ar><k>Menopause</k>
-The Maenopause</ar>
-<ar><k>Movie Theater</k>
-Cinemane</ar>
-<ar><k>Moviene</k>
-Filmlane</ar>
-<ar><k>Napkine</k>
-Serviette</ar>
-<ar><k>Nudiste</k>
-Naturist</ar>
-<ar><k>On/Off Ramp</k>
-Slip Road</ar>
-<ar><k>Ovenane</k>
-Cookerne</ar>
-<ar><k>Overalls</k>
-Dungarees</ar>
-<ar><k>Pacifier</k>
-Dummyane</ar>
-<ar><k>Pajamas</k>
-Pyjamase</ar>
-<ar><k>Pantsne</k>
-Trousers</ar>
-<ar><k>Paper Towel</k>
-Kitchen towel, Kitchen Paper</ar>
-<ar><k>Paradee</k>
-Carnival</ar>
-<ar><k>Parking Lot</k>
-Car Park</ar>
-<ar><k>Pharmacist</k>
-Chemiste</ar>
-<ar><k>Picnic Basket</k>
-Picnic Hamper</ar>
-<ar><k>Pie Crust</k>
-Pastry Base</ar>
-<ar><k>Plastic Wrap</k>
-Clingfilm</ar>
-<ar><k>Private school</k>
-Public school</ar>
-<ar><k>Public School</k>
-State school</ar>
-<ar><k>Raincoat</k>
-Mackintosh</ar>
-<ar><k>Realtor</k>
-Estate Agent</ar>
-<ar><k>Rent (to)</k>
-Hirelane</ar>
-<ar><k>Robeane</k>
-Dressing Gown</ar>
-<ar><k>Sand Box</k>
-Sand Pit</ar>
-<ar><k>Sandwich</k>
-Butty, Sarny</ar>
-<ar><k>Santa Clause</k>
-Father Christmas</ar>
-<ar><k>Sellane</k>
-Floglane</ar>
-<ar><k>Shopping Basket</k>
-Trolleye</ar>
-<ar><k>Shopping Cart</k>
-Trolleye</ar>
-<ar><k>Sidewalk</k>
-Pavement</ar>
-<ar><k>Sirlane</k>
-Squire, Guv'nor</ar>
-<ar><k>Sneakers</k>
-Trainers, Plimsolls, Pumps</ar>
-<ar><k>Soccere</k>
-Football</ar>
-<ar><k>Spelled</k>
-Speltane</ar>
-<ar><k>Stroller</k>
-Pram, Pushchair</ar>
-<ar><k>Styrofoam</k>
-Polystyrene</ar>
-<ar><k>Suspenders</k>
-Bracesne</ar>
-<ar><k>Sweater</k>
-Pullover, Jumper</ar>
-<ar><k>Take-Out</k>
-Take-Away</ar>
-<ar><k>Talk Show</k>
-Chat Show</ar>
-<ar><k>Thumb Tack</k>
-Drawing Pin</ar>
-<ar><k>Tic Tac Toe</k>
-Naughts and Crosses</ar>
-<ar><k>Tireane</k>
-Tyrelane</ar>
-<ar><k>Toothpick</k>
-Cocktail Stick</ar>
-<ar><k>Track Housing</k>
-Housing Estate</ar>
-<ar><k>Traffic Jam</k>
-Tailback</ar>
-<ar><k>Trailor</k>
-Caravane</ar>
-<ar><k>Trash Can</k>
-Bin, Dustbin (the one outside)</ar>
-<ar><k>Trashne</k>
-Rubbishe</ar>
-<ar><k>Truckne</k>
-Lorryane</ar>
-<ar><k>Trunk (car)</k>
-Bootlane</ar>
-<ar><k>Tuxedoe</k>
-Dinner Jacket</ar>
-<ar><k>Umbrella</k>
-Brollyne</ar>
-<ar><k>Undershirt</k>
-Vestlane</ar>
-<ar><k>Underwear</k>
-Pants, knickers</ar>
-<ar><k>Vacation</k>
-Holidaye</ar>
-<ar><k>Vestane</k>
-Waistcoat</ar>
-<ar><k>Wallet (Woman's)</k>
-Purseane</ar>
-<ar><k>Washcloth</k>
-Flannele</ar>
-<ar><k>Windshield</k>
-Windscreen</ar>
-<ar><k>Xing(road)</k>
-crossing</ar>
-<ar><k>Yardane</k>
-Gardenne</ar>
-<ar><k>Zee (letter)</k>
-Zedplane</ar>
-<ar><k>Zip Code</k>
-Post Code</ar>
-<ar><k>Zucchini</k>
-Courgette</ar>
-<ar><k>a flirt</k>
-Tartlane</ar>
-<ar><k>airplane</k>
-Aeroplane</ar>
-<ar><k>aluminum</k>
-Aluminium</ar>
-<ar><k>amrtment</k>
-Medium Wave</ar>
-<ar><k>anesthesia</k>
-anaesthesia</ar>
-<ar><k>antennat</k>
-aerialne</ar>
-<ar><k>apartment</k>
-Flatlane</ar>
-<ar><k>appetizer</k>
-Entree, Starter</ar>
-<ar><k>archeology</k>
-Archaeology</ar>
-<ar><k>area code</k>
-dialling code</ar>
-<ar><k>asphalter</k>
-tarmacne</ar>
-<ar><k>attorneyr</k>
-lawyerne</ar>
-<ar><k>autoitter</k>
-carerne</ar>
-<ar><k>automatic telle machine(ATM)</k>
-cashpoint</ar>
-<ar><k>automatic telle machine(atm)</k>
-cashpoint</ar>
-<ar><k>automobile</k>
-carerne</ar>
-<ar><k>baby carriage</k>
-pram, preambulator</ar>
-<ar><k>babysitter</k>
-Minderne</ar>
-<ar><k>back-up light</k>
-reversing light</ar>
-<ar><k>backbagtato</k>
-rucksacktato</ar>
-<ar><k>backpackato</k>
-rucksacktato</ar>
-<ar><k>backtoptato</k>
-tarmacPotato</ar>
-<ar><k>baked potato</k>
-Jacket Potato</ar>
-<ar><k>baking soda</k>
-bicarbonate of soda</ar>
-<ar><k>band-aid</k>
-Elastoplast</ar>
-<ar><k>bandshellr</k>
-bandstand</ar>
-<ar><k>bangseller</k>
-fringee</ar>
-<ar><k>bank teller</k>
-Cashiere</ar>
-<ar><k>bankroll</k>
-foot the billt</ar>
-<ar><k>barrette</k>
-hair slideilet</ar>
-<ar><k>barroom</k>
-pub, public house</ar>
-<ar><k>baseboard</k>
-skirting board</ar>
-<ar><k>bathrobe</k>
-dressing gownt</ar>
-<ar><k>bathroom</k>
-loo, Toiletlet</ar>
-<ar><k>bathtubd</k>
-bathar to a Eiderdown and Duvet</ar>
-<ar><k>battle stations</k>
-actions stationsrdown and Duvet</ar>
-<ar><k>be(to)through</k>
-to have finishedrdown and Duvet</ar>
-<ar><k>bedspread</k>
-Similar to a Eiderdown and Duvet</ar>
-<ar><k>beeron</k>
-lageron</ar>
-<ar><k>bell pepper</k>
-red pepper, green pepper</ar>
-<ar><k>beltway</k>
-ring road, circular road</ar>
-<ar><k>billfold</k>
-walletn</ar>
-<ar><k>billion</k>
-Trillion</ar>
-<ar><k>billon</k>
-noteion</ar>
-<ar><k>biscuits</k>
-sconeee</ar>
-<ar><k>bleachers</k>
-Terracee</ar>
-<ar><k>blindersor teeth)</k>
-blinkers</ar>
-<ar><k>blinkersor teeth)</k>
-indicators</ar>
-<ar><k>blood sausageeth)</k>
-black pudding</ar>
-<ar><k>blow-outr teeth)</k>
-puncture</ar>
-<ar><k>bobby pinr teeth)</k>
-hair grip</ar>
-<ar><k>boneyardor teeth)</k>
-scrapyard, junkyard</ar>
-<ar><k>boros (for teeth)</k>
-boroughe</ar>
-<ar><k>bouillon cubeeth)</k>
-stock cube</ar>
-<ar><k>braces (for teeth)</k>
-Braceane</ar>
-<ar><k>braidria</k>
-plaitory</ar>
-<ar><k>briteria</k>
-Britonry</ar>
-<ar><k>bureauia</k>
-chest of drawers</ar>
-<ar><k>burlapia</k>
-hessiany</ar>
-<ar><k>busteria</k>
-coachory</ar>
-<ar><k>busy signal</k>
-engaged tone</ar>
-<ar><k>bylawria</k>
-bye lawy</ar>
-<ar><k>caboosea</k>
-guard's van</ar>
-<ar><k>cadavera</k>
-corpsery</ar>
-<ar><k>cafeteria</k>
-canteen, refectory</ar>
-<ar><k>call (on the phone)</k>
-Ringlane</ar>
-<ar><k>candyne</k>
-Sweetsne</ar>
-<ar><k>canlane</k>
-Tinplane</ar>
-<ar><k>car(railwroad)</k>
-carriage</ar>
-<ar><k>caravan</k>
-convoyue</ar>
-<ar><k>cartog</k>
-trolleye</ar>
-<ar><k>catalog</k>
-Catalogue</ar>
-<ar><k>cattle guard</k>
-cattle grid</ar>
-<ar><k>cell phone</k>
-mobile phone</ar>
-<ar><k>cellular phone</k>
-mobile phone</ar>
-<ar><k>centere</k>
-centrene</ar>
-<ar><k>centsne</k>
-Penceane</ar>
-<ar><k>chapstick</k>
-Lip Balm</ar>
-<ar><k>checkers</k>
-Draughts</ar>
-<ar><k>checking account</k>
-current account</ar>
-<ar><k>checkne</k>
-chequene</ar>
-<ar><k>chesterfield</k>
-setteene</ar>
-<ar><k>chicory</k>
-endivene</ar>
-<ar><k>chief executive officer(ceo)</k>
-managing director(MD)</ar>
-<ar><k>chifforobe</k>
-gentleman's wardrobe</ar>
-<ar><k>chipsne</k>
-Crispsne</ar>
-<ar><k>cigarette</k>
-Fagplane</ar>
-<ar><k>cityt (bedroom)</k>
-townobe</ar>
-<ar><k>closet (bedroom)</k>
-Wardrobe</ar>
-<ar><k>closet(bedroom)</k>
-fitted wardrobe</ar>
-<ar><k>closing out</k>
-closing down</ar>
-<ar><k>clothes pin</k>
-clothes peg</ar>
-<ar><k>clumsye</k>
-Cackhanded</ar>
-<ar><k>coach(train)</k>
-economyCharge Call</ar>
-<ar><k>collect call</k>
-reverse charge call</ar>
-<ar><k>colorne</k>
-Colourne</ar>
-<ar><k>comfort station</k>
-public convenience, toilet</ar>
-<ar><k>comforter</k>
-quilt, eiderdown</ar>
-<ar><k>commercial</k>
-Advertisment</ar>
-<ar><k>cookiee</k>
-Biscuite</ar>
-<ar><k>cotton candy</k>
-Candy Floss</ar>
-<ar><k>cracker</k>
-Savoury biscuit</ar>
-<ar><k>cribane</k>
-Cotplane</ar>
-<ar><k>cross walk</k>
-Zebra Crossing, Pedestrian Crossing</ar>
-<ar><k>crossing guard</k>
-Lollipop Man</ar>
-<ar><k>crosswalk</k>
-pedestrian crossing</ar>
-<ar><k>cupcake</k>
-Fairy Cake</ar>
-<ar><k>curbane</k>
-Kerblane</ar>
-<ar><k>defense</k>
-defencePudding</ar>
-<ar><k>dessert</k>
-Afters, Pudding</ar>
-<ar><k>detoure</k>
-diversion</ar>
-<ar><k>dial tone</k>
-dialling tone</ar>
-<ar><k>dialoge</k>
-dialogueappy</ar>
-<ar><k>diapere</k>
-Napkin, Nappy</ar>
-<ar><k>divided highway</k>
-dual carriageway</ar>
-<ar><k>dollar bill</k>
-Notelane</ar>
-<ar><k>donutore</k>
-doughnut</ar>
-<ar><k>draftore</k>
-draughte</ar>
-<ar><k>drugstore</k>
-Chemiste</ar>
-<ar><k>duplexe</k>
-Semi-Detached House</ar>
-<ar><k>eggplant</k>
-Aubergine</ar>
-<ar><k>elevator</k>
-Liftlane</ar>
-<ar><k>emergency room</k>
-Casualty</ar>
-<ar><k>encyclopedia</k>
-encyclopaedia</ar>
-<ar><k>erasere</k>
-Rubberne</ar>
-<ar><k>expensive</k>
-Dearlane</ar>
-</xdxf>
diff --git a/engine/Makefile b/engine/Makefile
new file mode 100755 (executable)
index 0000000..d1d5e37
--- /dev/null
@@ -0,0 +1,46 @@
+COMPILER = gcc
+DEBUG = -Wall -g
+LIBS = `pkg-config --libs glib-2.0 gmodule-2.0 gnome-vfs-2.0` -lexpat
+FLAGS = `pkg-config --cflags glib-2.0 gmodule-2.0 gnome-vfs-2.0`
+SOURCES = src
+INCLUDE = include
+BINARIES = bin
+EXECUTABLE = ${SOURCES}/test_engin
+
+${EXECUTABLE}: ${BINARIES}/engine_xdxf.o ${INCLUDE}/dictionary_engine.h                        
+               @echo -e -n   "| Linking engine-xdxf to dynamic library...                                          |\n"
+               @gcc -shared -fPIC ${FLAGS} ${LIBS} ${BINARIES}/engine_xdxf.o -o ${SOURCES}/engine_xdxf.so
+               @echo -e -n   "| Building engine_xdxf module done...                                                |\n"
+               @echo -e -n   "+------------------------------------------------------------------------------------+\n\n"
+               @cp ${SOURCES}/engine_xdxf.so ../bin
+
+
+${BINARIES}/engine_xdxf.o: ${SOURCES}/engine_xdxf.c ${INCLUDE}/engine_xdxf.h
+               @echo -e -n "\n+---------------- ENGINE XDXF -------------------------------------------------------+\n"
+               @echo -e -n   "| Compiling engine_xdxf module => engine_xdxf.o ...                                  |\n"
+               @gcc ${FLAGS} -c -fPIC ${SOURCES}/engine_xdxf.c -o ${BINARIES}/engine_xdxf.o
+
+
+
+
+
+
+test: test.o
+               @echo "Linking test program..."
+               @gcc ${LIBS} ${DEBUG} -o ${SOURCES}/test ${BINARIES}/test.o
+               @echo -e "Building test program finished.\n"
+test.o:
+               @echo "Compiling test program..."
+               @gcc ${FLAGS} ${DEBUG} -c -o ${BINARIES}/test.o ${SOURCES}/test.c
+
+check:
+               @echo "Running test program:"
+               @run-standalone.sh ${SOURCES}/test
+
+clean :
+               @rm -f ${BINARIES}/*
+               @rm -f ${SOURCES}/test
+               @rm -f ${SOURCES}/*~
+               @rm -f *~
+               @rm -f ${INCLUDE}/*~
+               @rm -f ${SOURCES}/engine_xdxf.so
\ No newline at end of file
diff --git a/engine/doxyconf b/engine/doxyconf
deleted file mode 100644 (file)
index 4bed7d8..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-# Doxyfile 1.4.2
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-PROJECT_NAME           = "Dictionary Enigne"
-PROJECT_NUMBER         = 0.1
-OUTPUT_DIRECTORY       = doc/
-CREATE_SUBDIRS         = NO
-OUTPUT_LANGUAGE        = English
-USE_WINDOWS_ENCODING   = NO
-BRIEF_MEMBER_DESC      = YES
-REPEAT_BRIEF           = YES
-ABBREVIATE_BRIEF       = 
-ALWAYS_DETAILED_SEC    = NO
-INLINE_INHERITED_MEMB  = NO
-FULL_PATH_NAMES        = YES
-STRIP_FROM_PATH        = 
-STRIP_FROM_INC_PATH    = 
-SHORT_NAMES            = NO
-JAVADOC_AUTOBRIEF      = NO
-MULTILINE_CPP_IS_BRIEF = NO
-DETAILS_AT_TOP         = NO
-INHERIT_DOCS           = YES
-DISTRIBUTE_GROUP_DOC   = NO
-SEPARATE_MEMBER_PAGES  = NO
-TAB_SIZE               = 8
-ALIASES                = 
-OPTIMIZE_OUTPUT_FOR_C  = YES
-OPTIMIZE_OUTPUT_JAVA   = NO
-SUBGROUPING            = YES
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-EXTRACT_ALL            = YES
-EXTRACT_PRIVATE        = YES
-EXTRACT_STATIC         = YES
-EXTRACT_LOCAL_CLASSES  = YES
-EXTRACT_LOCAL_METHODS  = NO
-HIDE_UNDOC_MEMBERS     = NO
-HIDE_UNDOC_CLASSES     = NO
-HIDE_FRIEND_COMPOUNDS  = NO
-HIDE_IN_BODY_DOCS      = NO
-INTERNAL_DOCS          = NO
-CASE_SENSE_NAMES       = YES
-HIDE_SCOPE_NAMES       = NO
-SHOW_INCLUDE_FILES     = YES
-INLINE_INFO            = YES
-SORT_MEMBER_DOCS       = YES
-SORT_BRIEF_DOCS        = NO
-SORT_BY_SCOPE_NAME     = NO
-GENERATE_TODOLIST      = YES
-GENERATE_TESTLIST      = YES
-GENERATE_BUGLIST       = YES
-GENERATE_DEPRECATEDLIST= YES
-ENABLED_SECTIONS       = 
-MAX_INITIALIZER_LINES  = 30
-SHOW_USED_FILES        = YES
-SHOW_DIRECTORIES       = NO
-FILE_VERSION_FILTER    = 
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-QUIET                  = NO
-WARNINGS               = YES
-WARN_IF_UNDOCUMENTED   = YES
-WARN_IF_DOC_ERROR      = YES
-WARN_NO_PARAMDOC       = NO
-WARN_FORMAT            = "$file:$line: $text"
-WARN_LOGFILE           = 
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-INPUT                  = /scratchbox/users/stranger/home/stranger/whitestork/testing/doc_engin
-FILE_PATTERNS          = 
-RECURSIVE              = YES
-EXCLUDE                = src/test.c src/engine_xdxf.c include/engine_xdxf.h
-EXCLUDE_SYMLINKS       = NO
-EXCLUDE_PATTERNS       = 
-EXAMPLE_PATH           = 
-EXAMPLE_PATTERNS       = 
-EXAMPLE_RECURSIVE      = NO
-IMAGE_PATH             = 
-INPUT_FILTER           = 
-FILTER_PATTERNS        = 
-FILTER_SOURCE_FILES    = NO
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-SOURCE_BROWSER         = YES
-INLINE_SOURCES         = NO
-STRIP_CODE_COMMENTS    = YES
-REFERENCED_BY_RELATION = YES
-REFERENCES_RELATION    = YES
-VERBATIM_HEADERS       = YES
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-ALPHABETICAL_INDEX     = NO
-COLS_IN_ALPHA_INDEX    = 5
-IGNORE_PREFIX          = 
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-GENERATE_HTML          = YES
-HTML_OUTPUT            = html
-HTML_FILE_EXTENSION    = .html
-HTML_HEADER            = 
-HTML_FOOTER            = 
-HTML_STYLESHEET        = 
-HTML_ALIGN_MEMBERS     = YES
-GENERATE_HTMLHELP      = NO
-CHM_FILE               = 
-HHC_LOCATION           = 
-GENERATE_CHI           = NO
-BINARY_TOC             = NO
-TOC_EXPAND             = NO
-DISABLE_INDEX          = NO
-ENUM_VALUES_PER_LINE   = 4
-GENERATE_TREEVIEW      = NO
-TREEVIEW_WIDTH         = 250
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-GENERATE_LATEX         = YES
-LATEX_OUTPUT           = latex
-LATEX_CMD_NAME         = latex
-MAKEINDEX_CMD_NAME     = makeindex
-COMPACT_LATEX          = NO
-PAPER_TYPE             = a4wide
-EXTRA_PACKAGES         = 
-LATEX_HEADER           = 
-PDF_HYPERLINKS         = NO
-USE_PDFLATEX           = NO
-LATEX_BATCHMODE        = NO
-LATEX_HIDE_INDICES     = NO
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-GENERATE_RTF           = NO
-RTF_OUTPUT             = rtf
-COMPACT_RTF            = NO
-RTF_HYPERLINKS         = NO
-RTF_STYLESHEET_FILE    = 
-RTF_EXTENSIONS_FILE    = 
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-GENERATE_MAN           = NO
-MAN_OUTPUT             = man
-MAN_EXTENSION          = .3
-MAN_LINKS              = NO
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-GENERATE_XML           = NO
-XML_OUTPUT             = xml
-XML_SCHEMA             = 
-XML_DTD                = 
-XML_PROGRAMLISTING     = YES
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-GENERATE_AUTOGEN_DEF   = NO
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-GENERATE_PERLMOD       = NO
-PERLMOD_LATEX          = NO
-PERLMOD_PRETTY         = YES
-PERLMOD_MAKEVAR_PREFIX = 
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor   
-#---------------------------------------------------------------------------
-ENABLE_PREPROCESSING   = YES
-MACRO_EXPANSION        = NO
-EXPAND_ONLY_PREDEF     = NO
-SEARCH_INCLUDES        = YES
-INCLUDE_PATH           = 
-INCLUDE_FILE_PATTERNS  = 
-PREDEFINED             = 
-EXPAND_AS_DEFINED      = 
-SKIP_FUNCTION_MACROS   = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references   
-#---------------------------------------------------------------------------
-TAGFILES               = 
-GENERATE_TAGFILE       = 
-ALLEXTERNALS           = NO
-EXTERNAL_GROUPS        = YES
-PERL_PATH              = /usr/bin/perl
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool   
-#---------------------------------------------------------------------------
-CLASS_DIAGRAMS         = YES
-HIDE_UNDOC_RELATIONS   = YES
-HAVE_DOT               = NO
-CLASS_GRAPH            = YES
-COLLABORATION_GRAPH    = YES
-GROUP_GRAPHS           = YES
-UML_LOOK               = NO
-TEMPLATE_RELATIONS     = NO
-INCLUDE_GRAPH          = YES
-INCLUDED_BY_GRAPH      = YES
-CALL_GRAPH             = NO
-GRAPHICAL_HIERARCHY    = YES
-DIRECTORY_GRAPH        = YES
-DOT_IMAGE_FORMAT       = png
-DOT_PATH               = 
-DOTFILE_DIRS           = 
-MAX_DOT_GRAPH_WIDTH    = 1024
-MAX_DOT_GRAPH_HEIGHT   = 1024
-MAX_DOT_GRAPH_DEPTH    = 0
-DOT_TRANSPARENT        = NO
-DOT_MULTI_TARGETS      = NO
-GENERATE_LEGEND        = YES
-DOT_CLEANUP            = YES
-#---------------------------------------------------------------------------
-# Configuration::additions related to the search engine   
-#---------------------------------------------------------------------------
-SEARCHENGINE           = NO
index d1fb93f..d4a4640 100644 (file)
@@ -34,122 +34,28 @@ Copyright 2006 ComArch S.A.
 #include <glib.h>
 //------------------------------------------------------------------------------
 
+#define _GLOBAL_FUNCTIONS_NAME_  "engine_global_functions"
+#define _GLOBAL_FUNCTIONS_       engine_global_functions
 
 //______________________________________________________________________________
 // *****************************************************************************
 //******************************************************* GLOBAL MACROS SECTION:
 //------------------------------------------------------------------------------
-/** \brief Checks if module is peaceable with concrete location.
- *
- * If user of engine module want to know if concrete module can handle concrete 
- * location, he can call <i>dict_eng_module_check()</i>and check the result 
- * of this function.
- *
- * @param module :: <b>EngineModule</b> - module engine which will be testing
- * @param location :: <b>gchar*</b> - location on wich engine will be testing
- * @return <i><b>gboolean</b></i> :: tells if location <i>location</i> can be 
- * handled by module <i>module</i>
- */
 #define         dict_eng_module_check(module,location)   \
                         ( (module).engine_check( (location) ) )
 //------------------------------------------------------------------------------
-/** \brief Get short description of engine module.
- *
- * If there is need to present to the user of end programm some information 
- * about enigne he is using, we can call dict_eng_module_get_description() and
- * print/show the result of this call.
- *
- * @param module :: <b>EngineModule</b>- module engine which description we want
- * @return <i><b>gchar*</b></i> :: there is string, decribing module engine 
- * <i>module</i>, in this pointer. User should NOT free this pointer as it 
- * points to static table of chars
- */
 #define         dict_eng_module_get_description(module)   \
                         ( (module).engine_description() )
 //------------------------------------------------------------------------------
-/** \brief Get version of engine module.
- *
- * Sometimes it could be useful to get know what version of engine module we are
- *  using. We can call this function to retrieve these informations from module.
- * Note that version information could be also placed in description of module, 
- * but here user will get only string representing version, what could be needed
- * in some situation (e.g.: if end-user will have two the same module, then 
- * programm has to decide which should be used, or ask user).
- *
- * @param module :: <b>EngineModule</b> - module engine which implementation 
- * version we want
- * @return <i><b>gchar*</b></i> :: pointer to string representing module 
- * <i>module</i>version. User should NOT free this pointer as it points to 
- * static table of chars
- */
 #define         dict_eng_module_get_version(module)   \
                         ( (module).engine_version() )
 //------------------------------------------------------------------------------
-/** \brief Get format on which working engnine module.
- *
- * If we want to know on what dictionary format works current engine module, we 
- * can call this function. As a result we will retrieve string telling us what 
- * format-based is concrete engine module (e.g. XDXF, WordNet etc.).
- *
- * @param module :: <b>EngineModule</b> - engine module which dictionary format
- * we want to get
- * @return <i><b>gchar*</b></i> :: string representing format of dictionary on 
- * which module <i>module</i> can works. User should NOT free this pointer as 
- * it points to static table of chars
- */
 #define         dict_eng_module_get_format(module)   \
                         ( (module).engine_version() )
 //------------------------------------------------------------------------------
-/** \brief Open concrete dictionary.
- *
- * This functions opens location (this could mean: filename, URL, any other way 
- * to specify concrete localization of dictionary database). To be more sure 
- * that this function will be sucefull, user can call before 
- * dict_eng_module_check() to check if this module can handle dictionary under 
- * passed location. But this do not warrant that calling 
- * dict_eng_module_create() will not fail. User should check the result of 
- * function to be sure that everything was ok.
- *
- * @param module :: <b>EngineModule</b> - engine module which should be used to 
- * open location <i>location</i>
- * @param location :: <b>gchar*</b> - location of dictionary database (file, 
- * directory, URL etc.)
- * @param flags :: <b>EngineOptimizationFlag</b> - flags defines how program 
- * shoud automaticlly use optimization methods for opened dictionary
- * @return <i><b>Engine*</b></i> :: pointer to new enigne structure; After use, 
- * if this structure will not be needed anymore, user should call 
- * dict_eng_destroy() to free memory
- * \sa EngineOptimizationFlag :|: dict_eng_module_check() :|: EngineModule :|: 
- * Engine
-*/
 #define         dict_eng_module_create(module,location,flags)   \
         ( (module).engine_create(  (location), (flags), NULL, NULL, 0.01 ) )
 //------------------------------------------------------------------------------
-/** \brief Open concrete dictionary - define handler for signal of progress
- *
- * This functions is similiar to dict_eng_module_create(module,location,flags).
- * In addition to it, this function get additional parameters, defining how
- * engine should "inform" the user about progress of eventuall caching proccess.
- *
- * @param module :: <b>EngineModule</b> - engine module which should be used to 
- * open location <i>location</i>
- * @param location :: <b>gchar*</b> - location of dictionary database (file, 
- * directory, URL etc.)
- * @param flags :: <b>EngineOptimizationFlag</b> - flags defines how program 
- * shoud automaticlly use optimization methods for opened dictionary
- * @param progress_handler :: <b>cb_progress</b> - handler which will be called 
- * from time to time, to give to the user any response about caching progress
- * @param progress_data :: <b>gpointer</b> - pointer to data which will be given
- * as a user_data argument for progress_data function during its calling
- * @param seed :: <b>gdouble</b> - defines after how big step (in percentage)
- * in progress of caching, engine send new signal - call progress_handler with
- * actual value of progress
- * @return <i><b>Engine*</b></i> :: pointer to new enigne structure; After use, 
- * if this structure will not be needed anymore, user should call 
- * dict_eng_destroy() to free memory
- * \sa EngineOptimizationFlag :|: dict_eng_module_check() :|: EngineModule :|: 
- * Engine :|: cb_progress
- */
 #define         dict_eng_module_create_ext(module,                      \
                                            location,                    \
                                            flags,                       \
@@ -176,192 +82,45 @@ Copyright 2006 ComArch S.A.
                                                               (val)            \
                                                             ))
 //------------------------------------------------------------------------------
-
 #define         dict_eng_set_auto_free(engine, state) ( \
                         (engine) -> engine_set_auto_free( (engine), (state) )
 //------------------------------------------------------------------------------
-/** \brief Activate optimization mechanizms for concrete engine.
- *
- * Every engine could have some optimization methods. By calling this function 
- * we enabled this option. For the user of engine it is not important what kind
- * of optimization is used in current engine, how does it work etc. It should 
- * be opaque for engine's users.
- *  
- * @param engine :: <b>Engine*</b> - pointer to engine which should optimized
- * @return <i><b>void</b></i> :: nothing. This function only take a chance to 
- * make engine working faster, but it is not said that every step 
- * will be succesful. But even if not - engine has to work properly.
- * \sa dict_eng_module_create() :|: dict_eng_is_optimized() :|: Engine
- */
 #define         dict_eng_optimize(engine)  \
                         ((engine) -> engine_optimize( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Checks if current engine has activated optimization.
- *
- * User can call this function to get know if concrete engine has enabled 
- * optimization. Optimization can be activated by calling dict_eng_optimize() 
- * or passing ENGINE_CREATE or ENGINE_REFRESH flags to dict_eng_module_create()
- * while opening concrete dictionary. 
- *  
- * @param engine :: <b>Engine*</b> - pointer to engine which should be checked 
- * if is optimized now
- * @return <i><b>gboolean</b></i> :: nothing. This function only take a chance 
- * to make engine working faster, but it is not said that every step 
- * will be succesful
- * \sa dict_eng_optimize() :|: Engine :|: EngineOptimizationFlag
- */
 #define         dict_eng_is_optimized( engine )  \
                         ((engine) -> engine_is_optimized( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief To get know from what location was created current dictionary.
- *
- * If user of engine want to get know from what locatione exactly was created 
- * concrete engine, he could call this function. It returns string, most likely 
- * the same as the one passed earlier to dict_eng_module_create() function 
- * as a <i>location</i> argument.
- *  
- * @param engine :: <b>Engine*</b> - dictionary from which we want to get 
- * location 
- * @return <i><b>gchar*</b></i> :: pointer to chars, from which concrete 
- * dictionary was created
- * \sa dict_eng_module_create()
- */
 #define         dict_eng_get_location(engine)    \
                         ((engine) -> engine_location( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Tells if last operation was sucesfull.
- *
- * If user want to be sure that everything was ok, during last operation 
- * (it has finished with success), he has to check if dict_eng_get_last_status()
- * is equal to ENGINE_NO_ERROR. If not, he can also find the reason 
- * why operation failed.
- * @param engine :: <b>Engine*</b> - dictionary which last operation's returned 
- * code we want to get
- * @return <i><b>EngineStatus</b></i> :: finish code of last operation
- * \sa EngineStatus :|: dict_eng_state_message()
- */
 #define         dict_eng_get_last_status(engine)    \
                         ((engine) -> engine_error( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Translate pure state code to meaningfull message.
- *
- * If there was a error during engine was working, we can present to the user 
- * the reason for this error in meaningfull form.
- *
- * @param error :: <b>EngineState</b> - code which we want to translate
- * @return <i><b>gchar*</b></i> :: message describing concrete error code
- * \sa EngineStatus :|: dict_eng_state_message()
- */
-#define         dict_eng_state_message(error)     \
+#define         dict_eng_status_message(error)     \
                         ((engine) -> engine_error_message( (error) ))
 //------------------------------------------------------------------------------
-/** \brief Destroy gently and completly current dictionary.
- *
- * When user do not need anymore concrete dictionary, he must destroy it to 
- * free memory allocated by this dictionary. It will close avery opened file 
- * descriptor, free any additional memory block allocated while engine was 
- * working etc. User are not allowed to call free() on dictionary without 
- * calling before dict_eng_destroy().
- *  
- * @param engine :: <b>Engine*</b> - pointer to dictionary which is not
- * needed anymore
- * @return <i><b>void</b></i> :: nothing. This function should work properly,
- * and free any resources which arelady are in use by current dictionary.
- * \sa dict_eng_module_create() :|: Engine
- */
+
+
+//------------------------------------------------------------------------------
 #define         dict_eng_destroy(engine)    \
                         ((engine) -> engine_close( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Start searching for words list.
- *
- * This function starts searching for words list. User should set before 
- * callback for ENGINE_WORD_LIST_SIGNAL, to be able to retrieve words list, 
- * because this function do not return any value.
- *  
- * @param engine :: <b>Engine*</b> - pointer to dictionary in which we 
- * are looking for words matching to pattern
- * @param pattern :: <b>gchar*</b> - string representing pattern to which 
- * returned word should be matching
- * @return <i><b>void</b></i> :: nothing. Result of searching can be retrieved 
- * by callback for signal ENGINE_WORD_LIST_SIGNAL
- * \sa dict_eng_search_word_translation() :|: 
- * dict_eng_search_word_translation_extended() :|: dict_eng_set_callback() :|: 
- * ENGINE_WORD_LIST_SIGNAL
- */
 #define         dict_eng_search_word_list(engine,pattern)    \
                         ((engine) -> engine_search_word_list( (engine),        \
                                                               (pattern)        \
                                                             ))
 //------------------------------------------------------------------------------
-/** \brief Start searching for word translation in dictionary.
- *
- * Start searching for translation of word. To be able to retrieve translation 
- * user should use callback for ENGINE_WORD_TRANSLATION_SIGNAL signal.
- *  
- * @param engine :: <b>Engine*</b> - dictionary in which we want find word's 
- * translation
- * @param word :: <b>gchar*</b> - string representing word which translation 
- * we are looking for
- * @return <i><b>void</b></i> :: nothing. Result of searching can be retrieved 
- * by callback for signal ENGINE_WORD_TRANSLATION_SIGNAL
- * \sa dict_eng_search_word_list() :|: 
- * dict_eng_search_word_translation_extended() :|: dict_eng_set_callback() :|: 
- * ENGINE_WORD_TRANSLATION_SIGNAL
- */
 #define         dict_eng_search_word_translation(engine,word)    \
                         ((engine) -> engine_search_word_translation( (engine), \
                                                                      (word)    \
                                                                    ))
 //------------------------------------------------------------------------------
-/** \brief Start searching for extended word translation in dictionary.
- *
- * Start searching for extended  translation of word. To be able to retrieve 
- * translation user should use callback for ENGINE_WORD_TRANSLATION_SIGNAL 
- * signal. Extended means that retrieved translation's string could be some more
- * than plain text (e.g. HTML, Image, etc.). User of engine should know what 
- * kind of data will retrieve ofter calling this method.
- *
- * \todo This option are in projecting phase. In the future callback for 
- * ENGINE_WORD_TRANSLATION_SIGNAL should take parameter <i>gpointer</i> than 
- * <i>gchar*</i> to make possible for user of engine to retrieve data different 
- * than gchar*. There shold be also some additional function letting know user 
- * what kind of data he will retrieve.
- *  
- * @param engine :: <b>Engine*</b> - dictionary in which we want find word's 
- * translation
- * @param word :: <b>gchar*</b> - string representing word which translation 
- * we are looking for
- * @return <i><b>void</b></i> :: nothing. Result of searching can be retrieved 
- * by callback for signal ENGINE_WORD_TRANSLATION_SIGNAL
- * \sa dict_eng_search_word_list() :|: dict_eng_search_word_translation() :|: 
- * dict_eng_set_callback() :|: ENGINE_WORD_TRANSLATION_SIGNAL
- */
 #define         dict_eng_search_word_translation_extended(engine,word)   \
                 ((engine) -> engine_search_word_translation_extended((engine), \
                                                                      (pattern) \
                                                                      ))
 //------------------------------------------------------------------------------
-/** \brief Setting any callback for current dictionary.
- *
- * As long as functions which search for words list or translation do not 
- * return any value, user has to set callback which will be called after 
- * searching end. This make easy calling these functions from other proccess, 
- * threads etc. This function sets callbacks for every signal.
- *  
- * @param engine :: <b>Engine*</b> - dictionary for which we want set some
- * callback
- * @param signal :: <b>gchar*</b> - string representing for what signal we want
- * to set callback
- * @param c_handler :: <b>gpointer</b> - pointer to function which will be 
- * called after signal <i>signal</i> will occured
- * @param data :: <b>gpointer</b> - pointer to user data, which will be always 
- * passed to callback <i>c_handler</i> for signal <i>signal</i>
- * as a last argument
- * @return <i><b>gpointer</b></i> :: pointer to previous callback; if this 
- * callbacks was not set yet, it returns NULL
- * \sa cb_word_list :|: cb_word_translation :|:  ENGINE_WORD_LIST_SIGNAL :|: 
- * ENGINE_WORD_TRANSLATION_SIGNAL
- */
 #define         dict_eng_set_callback(engine,signal,c_handler,data)     \
                         ((engine) -> engine_set_callback( (engine),     \
                                                           (signal),     \
@@ -369,104 +128,60 @@ Copyright 2006 ComArch S.A.
                                                           (data)        \
                                                         ))
 //------------------------------------------------------------------------------
+#define         dict_eng_add_word(engine,word,tran)    \
+                        ((engine) -> engine_add_word( (engine), \
+                                                       (word),   \
+                                                       (tran) \
+                                                     ))
+//------------------------------------------------------------------------------
+#define         dict_eng_remove_word(engine,word)    \
+                        ((engine) -> engine_remove_word( (engine), \
+                                                          (word)   \
+                                                        ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_lang_from(engine)    \
+                        ((engine) -> engine_get_lang_from( (engine) ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_lang_to(engine)    \
+                        ((engine) -> engine_get_lang_to( (engine) ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_title(engine)    \
+                        ((engine) -> engine_get_title( (engine) ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_icon_path(engine)    \
+                        ((engine) -> engine_get_icon_path( (engine) ))
+//------------------------------------------------------------------------------
+
 
 
 //______________________________________________________________________________
 // *****************************************************************************
 //************************************ SIGNALS DEFINITION FOR CALLBACKS SECTION:
 //------------------------------------------------------------------------------
-/** \brief Signal definition for callback called when word list was found.
- *
- * ENGINE_WORD_LIST_SIGNAL defines name for signal passed to 
- * dict_eng_set_callback() function as a signal parameter. Function set 
- * to handle this signal should be called from dict_eng_search_word_list() only
- * and have cb_word_list type.
- * <b>NOTE:</b> programmers must not use value of ENGINE_WORD_LIST_SIGNAL 
- * directly!
- * \sa cb_word_list :|: dict_eng_set_callback() :|: dict_eng_search_word_list() 
- * :|: ENGINE_WORD_TRANSLATION_SIGNAL
- */
-#define ENGINE_WORD_LIST_SIGNAL         "on_word_list_found"
-//------------------------------------------------------------------------------
-/** \brief Signal definition for callback called when word trans. was found.
- *
- * ENGINE_WORD_TRANSLATION_SIGNAL defines name for signal passed to 
- * dict_eng_set_callback() function as a signal parameter. Function set 
- * to handle this signal should be called from 
- * dict_eng_search_word_translation() and  
- * dict_eng_search_word_translation_extended() only and have cb_word_translation.
- * <b>NOTE:</b> programmers must not use value of ENGINE_WORD_LIST_SIGNAL 
- * directly!
- * \sa cb_word_translation :|: dict_eng_set_callback() :|: 
- * dict_eng_search_word_translation() :|: ENGINE_WORD_LIST_SIGNAL
- */
-#define ENGINE_WORD_TRANSLATION_SIGNAL  "on_word_translation_found"
-//------------------------------------------------------------------------------
-#define ENGINE_PROGRESS_OPTIMIZING_SIGNAL "on_progress_optimizing"
+#define ENGINE_WORD_LIST_SIGNAL                 "on_word_list_found"
+//------------------------------------------------------------------------------
+#define ENGINE_WORD_TRANSLATION_SIGNAL          "on_word_translation_found"
+//------------------------------------------------------------------------------
+#define ENGINE_PROGRESS_OPTIMIZING_SIGNAL       "on_progress_optimizing"
 //------------------------------------------------------------------------------
-
 
 //______________________________________________________________________________
 // *****************************************************************************
 //************************************************** DEFINITIONS OF ENUMS TYPES:
 //------------------------------------------------------------------------------
-/** \brief Codes of flags used to auto optimizing dictionary file.
- * 
- * - Enum type for flags used as a flags parameter for dict_eng_module_create() 
- * function.
- */
 typedef enum
 {
-        /**
-         * :: flags says thatoptimization (any methodsof optimalization) should 
-         * be enabled. If optimization methods needs to make some files and 
-         * these files exists, enigne will just use it (do not refresh).
-         */
         ENGINE_CREATE = 0, 
-        /**
-         * :: flags says that for this particular dictionary programm should 
-         * disable optimization.
-         */
         ENGINE_NO,
-        /**
-         * :: the same flags as ENGINE_CREATE, but tells 
-         * dict_eng_module_create() function that even if file (or any 
-         * resources) for optimizatione methods exists, they should be 
-         * recreated/refreshed.
-         */
         ENGINE_REFRESH 
 } EngineOptimizationFlag;
 //------------------------------------------------------------------------------
-/** \brief Codes of possible errors which can occured while engine is working.
- * 
- * - Enum type for errors' codes. One of this code is always in last error 
- * variable (variable 'last error' is invisible for programmers - they should 
- * use function engine_error() and optionally engine_error_message() to get know
- * what kind of error occured).
- */
 typedef enum
 {
-        /**
-         * :: there was no error - last action successed
-         */
         ENGINE_NO_ERROR = 0,
-        /**
-         * :: file, which engine tried to read, has wrong format or 
-         * it is corrupted.
-         */
         ENGINE_WRONG_FILE,
-        /**
-         * :: user do not have permission to read/open file, which engine tried
-         * to open/read.
-         */
         ENGINE_COULDNT_READ,
-        /**
-         * :: file, on which engine tried to operate, do not exist
-         */
         ENGINE_NO_FILE,     
-        /**
-         * :: while engine was working, "Out Of Memory" error occured
-         */
         ENGINE_OUT_OF_MEMORY
 }
 EngineStatus;
@@ -477,417 +192,84 @@ EngineStatus;
 // *****************************************************************************
 //********************************************* DEFINITIONS OF CALLBACK'S TYPES:
 //------------------------------------------------------------------------------
-/** \brief Type of callback functions for retrieving word list.
- * 
- * Function which is set by dict_eng_set_callback() to signal 
- * ENGINE_WORD_LIST_SIGNAL should be exactly this type.
- *
- * @param list :: <b>GArray*</b> - there will be all found words in this array
- * @param pattern :: <b>gchar*</b> - pattern to which we have been looking for 
- *      word lists
- * @param error :: <b>EngineStatus</b> - error code; if everything was ok it is 
- *      ENGINE_NO_ERROR
- * @param user_data :: <b>gpointer</b> - data set by user to be passing to each 
- *      callback for ENGINE_WORD_LIST_SIGNAL signal
- */
 typedef void (*cb_word_list)(GArray* list,
                              gchar* pattern,
                              gpointer user_data,
                              EngineStatus error);
 //------------------------------------------------------------------------------
-/** \brief Type of callback functions for retrieving word's translation.
- * 
- * Function which is set by dict_eng_set_callback() to signal 
- * ENGINE_WORD_TRANSLATION_SIGNAL should be exactly this type.
- *
- * @param translation :: <b>gchar*</b> - translation of word <i>word</i>
- * @param word :: <b>gchar*</b> - word which translation we already retrieved
- * @param error :: <b>EngineStatus</b> - error code; if everything was ok it is 
- *      ENGINE_NO_ERROR
- * @param user_data :: <b>gpointer</b> - data set by user to be passing to each 
- *      callback for ENGINE_WORD_TRANSLATION_SIGNAL signal
- */
 typedef void (*cb_word_translation)(gchar* translation,
                                     gchar* word,
                                     gpointer user_data,
                                     EngineStatus error);
 //------------------------------------------------------------------------------
-/** \brief Type of callback functions for updating progress bar.
- * 
- * Function which is set by dict_eng_set_callback() to signal 
- * ENGINE_PROGRESS_OPTIMIZING_SIGNAL should be exactly this type.
- *
- * @param value :: <b>double</b> - current progres of process [0.0 - 1.0]
- * @param user_data :: <b>gpointer</b> - data set by user to be passing to each 
- *      callback for ENGINE_PROGRESS_OPTIMIZING_SIGNAL signal
- * @param error :: <b>EngineStatus</b> - error code; if everything is ok it has 
- *      ENGINE_NO_ERROR value
- */
 typedef void (*cb_progress)(gdouble value,
                             gpointer user_data,
                             EngineStatus error);
 //------------------------------------------------------------------------------
 
-           
-//______________________________________________________________________________
-// *****************************************************************************
-//**************************************** DEFINITIONS OF BASIC FUNCTIONS TYPES:
 //------------------------------------------------------------------------------
+struct _Engine;
 typedef struct _Engine Engine;
-/** \brief Type of function getting some chars from engine.
- *
- * Function of this type should be used for functions which intention is to get 
- * some string from concrete dictionary.
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @return <i><b>gchar*</b></i> :: chars which represents some information 
- *      depends on concrete functions (e.g engine path etc.)
- */
-typedef gchar*   (*getting_char)(Engine* engine);
-//------------------------------------------------------------------------------
-/** \brief Type of function getting boolean statement from engine.
- *
- * Function of this type should be used for functions which intention is to get 
- * boolean statement from concrete dictionary (e.g. to get know if engine has 
- * cache file - is optimized). 
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions
- *      has to work
- * @return <i><b>gboolean</b></i> :: gboolean statement which gives programmers 
- *      some information about state of dictionary/engine
- */
-typedef gboolean (*getting_bool)(Engine* engine);
-//------------------------------------------------------------------------------
-/** \brief Type of function which hasn't got to return any value.
- *
- * Function of this type should be used for functions which intention is only 
- * to do something on concrete dictionary (e.g. to make cache file etc).
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @return nothing. Functions of this type should only perform some action - 
- *      there is no result
- */
-typedef void     (*doing_only)(Engine* engine);
-//------------------------------------------------------------------------------
-/** \brief Type of function which can find words list from dictionary.
- * 
- * Function of this type should be used as a function for searching words list 
- * matching to pattern.
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @param pattern :: <i>gchar*</i> - pointer to chars which describes pattern 
- *      for searching words
- * @return nothing. This function do not return anything - result should be 
- *      retrieve by callbacks 
- */
-typedef void     (*searching_word_list)(Engine* engine, gchar* pattern); 
-//------------------------------------------------------------------------------
-/** \brief Type of function which can find word's translation from dictionary.
- * 
- * Functions of this type should be used as a function for searching word 
- * translation in concrete dictionary.
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @param word :: <i>gchar*</i> - pointer to chars which tells what word's 
- *      translation we are looking for
- * @return nothing. This function do not return anything - result should be 
- *      retrieve by callback
- */
-typedef void     (*searching_word_translation)(Engine* engine, gchar* word);
-//------------------------------------------------------------------------------
-/** \brief Type of function which can trans. error code to descriptive message.
- * 
- * Functions of this type should be used as <i>translator</i> from error code 
- * to meaningful message.
- *
- * @param error :: <i>EngineStatus</i> - error to which we want get description
- * @return <i><b>gchar*</b></i> :: chars which describes us what kind of error 
- * occured (e.g. "Dictionary file has wrong file format or it is corrupted.")
- */
-typedef gchar*   (*error_to_message)(EngineStatus error);
-//------------------------------------------------------------------------------
-/** \brief Type of function which should be used to set callbacks for signals.
- * 
- * Functions of this type should be used as a <i>setter</i> for new callback 
- * functions
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @param signal  :: <i>gchars*</i> - pointer to chars which tell us what kind 
- *      of event should new_functions handle (e.g. "word_list_found", 
- *      "translation_found" etc.)
- * @param c_handler :: <i>gpointer</i> - new callback function
- * @param user_data :: <i>gpointer</i> - pointer do structure, which should be 
- *      passed as a last argument when calling new mounted callback
- * @return <i><b>gpointer</b></i> :: gpointer to previous callback. If NULL 
- *      there could be some error so programmers should check by engine_error() 
- *      function if there was some (if NULL and engine_error() return 
- *      ENGINE_NO_ERROR that means that this callback was unused before).
- * \sa ENGINE_WORD_LIST_SIGNAL :|: ENGINE_WORD_TRANSLATION_SIGNAL :|: 
- * dict_eng_set_callback() :|: cb_word_list :|: cb_word_translation
- */
-typedef gpointer (*setting_callbacks)(Engine* engine, 
-                                      gchar* signal, 
-                                      gpointer c_handler, 
-                                      gpointer user_data);
-//------------------------------------------------------------------------------
-/** \brief Type of function which can get some int value from dictionary.
- * 
- * Functions of this type should be used if programmer want to get some int 
- * value from dictionary.
- *
- * @param enigne :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @return <i><b>gint</b></i> :: int value which user wanted to get from 
- *      dictionary
- */
-typedef gint (*getting_int)(Engine* engine);
-//------------------------------------------------------------------------------
-typedef EngineStatus (*getting_status)(Engine* engine);
-//------------------------------------------------------------------------------
-typedef void (*setting_progress_seed)(Engine* engine,
-                                      gchar* signal,
-                                      gdouble seed);
-//------------------------------------------------------------------------------
-
 
-//______________________________________________________________________________
-// *****************************************************************************
-//*********************************** DEFINITIONS OF ADDITIONAL FUNCTIONS TYPES:
-//------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * Functions of this type should be used to check if dictionary in location 
- * could be handled by this engine.
- *
- * @param location :: <i>gchar*</i> - chars which describe location of 
- *      dictionary to check
- * @return <i><b>gboolean</i></b> :: statement telling us if this module could
- *      or could not handle dictionary under location.
- */
-typedef gboolean (*checking_compatibiliti)(gchar* location);
-//------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * Functions of this type should be used to get some descriptions from 
- * engine/module. Information retrievs by this kind of functions are global for
- * module (e.g: description of handles fromat, description of module etc.).
- *
- * @return <i><b>gchar*</i></b> :: chars which we wanted
- */
-typedef gchar*   (*getting_chars_engine)(void);
-//------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * Functions of this type should be used to opening dictionary. 
- * @param location :: <i>gchar*</i> - chars which describe where is the 
- *      dictionary which we want to open
- * @param flags :: <i>EngineOptimizationFlag</i> - flags to initialize/use 
- *      optimization methods for opening dictionary.
- * @return <i><b>gpointer</i></b> ::pointer to opened Engine. If NULL there was
- *      some error - programmers should check error type by calling 
- *      engine_error() function.
- */
-typedef Engine*  (*creating_engine)(gchar* location,
-                                    EngineOptimizationFlag flags,
-                                    cb_progress progress_handler,
-                                    gpointer progress_data,
-                                    gdouble seed);
-//------------------------------------------------------------------------------
-/** \brief General dictionary structure.
- *  
- * This structure contains every data which are needed to make dictionary 
- * working. Data of dictionary are invisible for user of finnal module. User can
- * operate on dictionary with functions to which there are pointers in this 
- * structure also. engine_data is for module programmer use only. Programmer of 
- * module can put there any data he want. He should not give end user any 
- * information about engine_data structure.
- */
 struct _Engine
 {
-        void (*engine_set_auto_free)(Engine* engine, gboolean state);
-
-
-        /** \brief Getting location of dictionary.
-        *
-        * User can use this function if want to get location of concrete 
-        * dictionary.
-        * \sa getting_char
-        */
-        getting_char           engine_location;
-
-        /** \brief Getting information if this dictionary is cached.
-        *
-        * User can use this function if want to know is dictionary cached 
-        * actually.
-        * \sa getting_bool
-        */
-        getting_bool           engine_is_optimized;
-
-        /** \brief Making cache file for dictionary.
-        *
-        * User can use this function if want to make cache file for concrete 
-        * dictionary.
-        * \sa doing_only
-        */
-        doing_only                engine_optimize;
-
-        /** \brief Searching word list.
-        *
-        * User call this function to start searching for word list.
-        * \sa searching_word_list
-        */
-        searching_word_list        engine_search_word_list;
-
-        /** \brief Searching word's translation.
-        *
-        * User call this function to start searching for word's translation.
-        * \sa searching_word_translation
-        */
-        searching_word_translation   engine_search_word_translation;
-
-        /** \brief Searching word's translation (preformatted HTML).
-        *
-        * User call this function to start searching for word's translation. 
-        * It differs from engine_search_word_translation that it returns 
-        * preformatted string (HTML format).
-        * \sa searching_word_translation
-        */
-        searching_word_translation   engine_search_word_translation_extended;        
-
-        /** \brief Close dictionary.
-        *
-        * User call this if work with dictionary is finished and there is no 
-        * need to keep this further working.
-        * \sa doing_only
-        */
-        doing_only                engine_close;
-
-        /** \brief Functions return laste error which occured in dictionary.
-        *
-        * Programmer should use this function after each action to check if 
-        * there was not any errors.
-        * \sa getting_int
-        */
-        getting_status                  engine_error;
-
-        /** \brief <i>Tranlsate</i> error code to meaningful message.
-        *
-        * Programmer can call this function if want to get meaningful message 
-        * describes concrete error code
-        * \sa error_to_message
-        */
-        error_to_message            engine_error_message;
-
-        /** \brief Function to setting any callback for this dictionary.
-        * 
-        * This function can be used to set some callback function for concrete 
-        * dictionary. Programmer should always set callback "word_list_found" 
-        * and "word_translation_found". Developers of new modules should also 
-        * define for what kind of event end user will be able to set callback.
-        */
-        setting_callbacks     engine_set_callback;
-
-
-        setting_progress_seed   engine_set_progress_seed;
-
-        /** \brief Module's private data area. Used only by module programmer.
-        * 
-        * Here module programmer should keep their own data (e.g. some data for 
-        * searching optimalization etc.). Programmer whose only using module, 
-        * should not use engine_data at all.
-        */
+        // 0.1 API specification
+        void            (*engine_set_auto_free)(Engine* engine,
+                                                gboolean state);
+        gchar*          (*engine_location)(Engine* engine);       
+        gboolean        (*engine_is_optimized)(Engine* engine);
+        void            (*engine_optimize)(Engine* engine);
+        void            (*engine_search_word_list)(Engine* engine,
+                                                   gchar* pattern);
+        void            (*engine_search_word_translation)(Engine* engine,
+                                                          gchar* word);
+        void            (*engine_close)(Engine* engine);
+        // engine status
+        EngineStatus    (*engine_status)(Engine* engine);
+        gchar*          (*engine_error_message)(EngineStatus error);
+        // callbacks
+        gpointer        (*engine_set_callback)(Engine* engine, 
+                                               gchar* signal, 
+                                               gpointer c_handler, 
+                                               gpointer user_data);
+        void            (*engine_set_progress_seed)(Engine* engine,
+                                                    gchar* signal,
+                                                    gdouble seed);
+        // 0.2 API specification's functions
+        gboolean        (*engine_add_word)(Engine* engine,
+                                           gchar*  word,
+                                           gchar*  translation);
+        gboolean        (*engine_remove_word)(Engine* engine,
+                                              gchar*  word);        
+        gchar*          (*engine_get_lang_from)(Engine* engine);
+        gchar*          (*engine_get_lang_to)(Engine* engine);
+        gchar*          (*engine_get_title)(Engine* engine);
+        gchar*          (*engine_get_icon_path)(Engine* engine);
+
+        // dictionary independent data
         gpointer engine_data;
 };
 //------------------------------------------------------------------------------
-/** \brief Structure that has pointers to helpfull functions for programmer.
- *
- * There are pointers to some functions in this structure. Programmer whom using 
- * module could use it to get some useful informationa about module (e.g: format
- * handled by module, it's version etc.). The most important functions are: \n
- * engine_check() - to check if this module can handle concrete location \n
- * engine_open() - to open location
- */
 typedef struct  {
-        
-        /** \brief Function to check compatibility beetwen module and location.
-        *    
-        * Helps programmer to check if this concrete module was designed to work
-        * with dictionary under location passed as a argument to this function. 
-        * \sa checking_compatibiliti
-        */
-        checking_compatibiliti          engine_check;      
-
-        /** \brief Function to get some short description of module/engine.
-         *      
-         * This function returns short description of module, to make possible 
-         * displaying for end user what kind of module he is using.
-         * \sa getting_chars_engine
-         */  
-        getting_chars_engine       engine_description;
-
-        /** \brief Function to get module's format.
-        *    
-        * This function returns format of dictionaries which this module handles
-        * \sa getting_chars_engine
-        */
-        getting_chars_engine       engine_format;
-
-        /** \brief Function to get version of module.
-        *    
-        *  This functions return version of this module/engine.
-        * \sa getting_chars_engine
-        */
-        getting_chars_engine       engine_version;
-
-        /** \brief Function to open/create new dictionary.
-        *    
-        * This functions allow programmer to open/create module from concrete 
-        * location.
-        * \sa creating_engine
-        */
-        creating_engine                 engine_create;
+        gboolean (*engine_check)(gchar* location); 
+        gchar*   (*engine_description)(void);     
+        gchar*   (*engine_format)(void);
+        gchar*   (*engine_version)(void);
+        Engine*  (*engine_create)(gchar* location,
+                                   EngineOptimizationFlag flags,
+                                   cb_progress progress_handler,
+                                   gpointer progress_data,
+                                   gdouble seed);
 } 
 EngineModule;
 //------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * There should be in each module exactly one function of this type named: 
- * engine_global_functions. This function makes easier to load dynamically 
- * module. For doing this then you need only to mapped only this one function
- * and the rest will be avaiable from returned structure EngineModule.
- *
- * @return  <i><b>EngineModule</b></i> :: structure EngineModule from which you 
- *      can call next functions
- * \sa engine_global_functions()
- */
 typedef EngineModule (*getting_additional)(void);
 //------------------------------------------------------------------------------
-/** \brief Function that helps programmer to load basic functions from module. 
- *
- * This function helps programmers to dynamically load module to their 
- * programms. Only this function needed to be mapped from *.so file. Rest of 
- * function are in returned structure EngineModule. User of module could mapped 
- * himslef others functions from concrete modules, but it is not recommended as 
- * far as developers of module could, in fact, give different names for 
- * functions. In structure EngineModule names will be always the same. \n
- * NOTE for module developer: this function should be always defined in your
- * code, to help next programmers whose will be using yours module in theirs own
- * programms.
- * 
- * @return <i><b>EngineModule</b></i> :: Structure EngineModule which members 
- *      are functions for basic operations for this module
- */
 extern EngineModule engine_global_functions(void);
 //------------------------------------------------------------------------------
 
           
 #ifdef __cplusplus
 }                     
-#endif     // END OF:    extern "C" {
-
-#endif     // END OF:    _DICTIONARY_ENGINE_BASE
+#endif
+#endif /* _DICTIONARY_ENGINE_BASE */
index 7c0eb91..f4c29ee 100644 (file)
@@ -246,70 +246,77 @@ static void word_list_xdxf(XDXFData* data, gchar* pattern, GArray* result);
 //****************************************************** MAIN FUNCTIONS SECTION:
 //------------------------------------------------------------------------------
 // implementation of dict_eng_module_check(module,location) function
-gboolean        engine_check(gchar* location);
+gboolean        xdxf_engine_check(gchar* location);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_module_get_description(module) function
-gchar*          engine_description();
+gchar*          xdxf_engine_description();
 //------------------------------------------------------------------------------
 // implementation of dict_eng_module_get_format(module) function
-gchar*          engine_format();
+gchar*          xdxf_engine_format();
 //------------------------------------------------------------------------------
 // implementation of dict_eng_module_get_version(module) function
-gchar*          engine_version();
+gchar*          xdxf_engine_version();
 //------------------------------------------------------------------------------
 // implementation of dict_eng_module_create(module,location,flags) and
 // dict_eng_module_create_ext(module,location,flags) functions
-Engine*         engine_create(gchar* location, 
+Engine*         xdxf_engine_create(gchar* location, 
                               EngineOptimizationFlag flags,
                               cb_progress progress_handler,
                               gpointer progress_data,
                               gdouble seed);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_destroy(engine) function
-void            engine_close(Engine* engine);
+void            xdxf_engine_close(Engine* engine);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_get_location(engine) function
-gchar*          engine_location(Engine* engine);
+gchar*          xdxf_engine_location(Engine* engine);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_optimize(engine) function
-void            engine_optimize(Engine* engine);
+void            xdxf_engine_optimize(Engine* engine);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_is_optimized( engine ) function
-gboolean        engine_is_optimized(Engine* engine);
+gboolean        xdxf_engine_is_optimized(Engine* engine);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_set_auto_free(engine, state) function
-void            engine_set_auto_free(Engine* engine, gboolean state);
+void            xdxf_engine_set_auto_free(Engine* engine, gboolean state);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_set_callback(engine,signal,c_handler,data) 
 // function
-gpointer        engine_set_callbacks(Engine* engine,
+gpointer        xdxf_engine_set_callbacks(Engine* engine,
                                      gchar* event,
                                      gpointer c_handler,
                                      gpointer user_data);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_set_progress_seed(engine, signal, val) function
-void            engine_set_progress_seed(Engine* engine,
+void            xdxf_engine_set_progress_seed(Engine* engine,
                                          gchar* signal,
                                          gdouble seed);
 //------------------------------------------------------------------------------
 // implementation ofdict_eng_search_word_list(engine,pattern) function
-void            engine_search_word_list(Engine* engine, gchar* pattern);
+void            xdxf_engine_search_word_list(Engine* engine, gchar* pattern);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_search_word_translation(engine,word) function
-void            engine_search_word_translation(Engine* engine, gchar* word);
+void            xdxf_engine_search_word_translation(Engine* engine, gchar* word);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_search_word_translation_extended(engine,word)
 // function
-void            engine_search_word_translation_extended(Engine* engine,
+void            xdxf_engine_search_word_translation_extended(Engine* engine,
                                                         gchar* word);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_get_last_state(engine) function
-EngineStatus    engine_error(Engine* engine);
+EngineStatus    xdxf_engine_error(Engine* engine);
 //------------------------------------------------------------------------------
 // implementation of dict_eng_state_message(error) function
-gchar*          engine_error_message(EngineStatus error);
+gchar*          xdxf_engine_error_message(EngineStatus error);
 //------------------------------------------------------------------------------
 // implementation of engine_global_functions(void) function
+// API 2.0
+gboolean       xdxf_engine_add_word(Engine* engine,
+                               gchar*  word,
+                               gchar*  translation);
+
+gboolean       xdxf_engine_remove_word(Engine* engine, gchar*  word);
+
 EngineModule    engine_global_functions();
 
 #ifdef __cplusplus
diff --git a/engine/makefile b/engine/makefile
deleted file mode 100644 (file)
index ce47ebc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-COMPILER = gcc
-DEBUG = -Wall
-LIBS = `pkg-config --libs glib-2.0 gmodule-2.0 ` -lexpat
-FLAGS = `pkg-config --cflags glib-2.0 gmodule-2.0`
-SOURCES = src
-INCLUDE = include
-BINARIES = bin
-EXECUTABLE = ${SOURCES}/test_engin
-
-${EXECUTABLE}: ${BINARIES}/engine_xdxf.o ${INCLUDE}/dictionary_engine.h                        
-               @echo -e -n   "| Linking engine-xdxf to dynamic library...                                          |\n"
-               @gcc -shared -fPIC ${FLAGS} ${LIBS} ${BINARIES}/engine_xdxf.o -o ${SOURCES}/engine_xdxf.so
-               @echo -e -n   "| Building engine_xdxf module done...                                                |\n"
-               @echo -e -n   "+------------------------------------------------------------------------------------+\n\n"
-               @cp ${SOURCES}/engine_xdxf.so ../bin
-
-
-${BINARIES}/engine_xdxf.o: ${SOURCES}/engine_xdxf.c ${INCLUDE}/engine_xdxf.h
-               @echo -e -n "\n+---------------- ENGINE XDXF -------------------------------------------------------+\n"
-               @echo -e -n   "| Compiling engine_xdxf module => engine_xdxf.o ...                                  |\n"
-               @gcc ${FLAGS} -c -fPIC ${SOURCES}/engine_xdxf.c -o ${BINARIES}/engine_xdxf.o
-
-test: test.o
-               @echo "Linking test program..."
-               @gcc ${LIBS} ${DEBUG} -o ${SOURCES}/test ${BINARIES}/test.o
-               @echo -e "Building test program finished.\n"
-test.o:
-               @echo "Compiling test program..."
-               @gcc ${FLAGS} ${DEBUG} -c -o ${BINARIES}/test.o ${SOURCES}/test.c
-
-check:
-               @echo "Running test program:"
-               @${SOURCES}/test
-
-clean :
-               @rm -f ${BINARIES}/*
-               @rm -f ${SOURCES}/test
-               @rm -f ${SOURCES}/*~
-               @rm -f *~
-               @rm -f ${INCLUDE}/*~
-               @rm -f ${SOURCES}/engine_xdxf.so
\ No newline at end of file
index aac93a7..a93134d 100644 (file)
@@ -31,7 +31,7 @@ static gchar* word_translation_cache(XDXFData* data, gchar* word)
         gnome_vfs_seek(data->cache, GNOME_VFS_SEEK_START, 0);
         gchar b[DICT_SEARCHING_WORD_TRAN_BUFF_SIZE + 1];
         GnomeVFSFileSize bytes_readed;
-                
+
         guint word_length = strlen(word);
         guint record_length = 0;
         guint trans_offset = 0;
@@ -171,7 +171,7 @@ static gchar* word_translation_xdxf(XDXFData* data, gchar* word) {
 }
 //------------------------------------------------------------------------------
 // searching word by concrete engine
-void engine_search_word_translation(Engine* engine, gchar* word)
+void xdxf_engine_search_word_translation(Engine* engine, gchar* word)
 {
         g_debug("XDXF/%s->%s() called.\n"
                 "-->PARAM:engine at adress=%p\n"
@@ -235,6 +235,23 @@ void engine_search_word_translation(Engine* engine, gchar* word)
         trans = NULL;
 }
 //------------------------------------------------------------------------------
+gboolean xdxf_engine_remove_word(Engine* engine,
+                             gchar*  word)
+{
+       g_debug("%s -> %s()", __FILE__, __FUNCTION__);
+       g_debug("Not implemented yet.");
+       return FALSE;
+}
+
+gboolean xdxf_engine_add_word(Engine* engine,
+                         gchar*  word,
+                         gchar*  translation) 
+{
+       g_debug("%s -> %s()", __FILE__, __FUNCTION__);
+       g_debug("Not implemented yet.");
+       return FALSE;
+}
+
 static void search_word_trans_start(void *data,
                                     const char *el,
                                     const char **attr
@@ -305,12 +322,12 @@ static void search_word_trans_text(void *data, const XML_Char *txt, int len)
         };
 }
 //------------------------------------------------------------------------------
-void engine_search_word_translation_extended(Engine* engine, gchar* word)
+void xdxf_engine_search_word_translation_extended(Engine* engine, gchar* word)
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
 }
 //------------------------------------------------------------------------------
-void engine_set_progress_seed(Engine* engine, gchar* signal, gdouble seed) {
+void xdxf_engine_set_progress_seed(Engine* engine, gchar* signal, gdouble seed) {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         XDXFData* data = (XDXFData*)(engine->engine_data);
         if(g_ascii_strcasecmp(signal,ENGINE_PROGRESS_OPTIMIZING_SIGNAL) == 0)  {
@@ -333,12 +350,12 @@ void engine_set_progress_seed(Engine* engine, gchar* signal, gdouble seed) {
         };
 }
 //------------------------------------------------------------------------------
-gpointer engine_set_callback(Engine* engine,
+gpointer xdxf_engine_set_callbacks(Engine* engine,
                              gchar* signal,
                              gpointer c_handler,
                              gpointer user_data)
 {
-        g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
+       g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         g_assert(engine != NULL);
         g_assert(signal != NULL);
         g_assert(c_handler != NULL);
@@ -417,7 +434,7 @@ gpointer engine_set_callback(Engine* engine,
         }
 }
 //------------------------------------------------------------------------------
-void engine_close(Engine* engine)
+void xdxf_engine_close(Engine* engine)
 {
         g_debug("XDXF/%s->%s() called.\n-->PARAM: engine adress=%p\n",
                 __FILE__,
@@ -448,13 +465,13 @@ void engine_close(Engine* engine)
                 engine);
 }
 //------------------------------------------------------------------------------
-gchar* engine_error_message(EngineStatus error) 
+gchar* xdxf_engine_error_message(EngineStatus error) 
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         return "Error - not yet implemented.";
 }
 //------------------------------------------------------------------------------
-Engine* engine_create(gchar* location,
+Engine* xdxf_engine_create(gchar* location,
                       EngineOptimizationFlag auto_cache,
                       cb_progress progress_handler,
                       gpointer progress_data,
@@ -479,24 +496,27 @@ Engine* engine_create(gchar* location,
         string_to_path(&tmp);
 
         Engine* result = (Engine*)g_try_malloc(sizeof(Engine));
-        result->engine_location = engine_location;
-        result->engine_is_optimized = engine_is_optimized;
-        result->engine_optimize = engine_optimize;
-        result->engine_search_word_list = engine_search_word_list;
+        result->engine_location = xdxf_engine_location;
+        result->engine_is_optimized = xdxf_engine_is_optimized;
+        result->engine_optimize = xdxf_engine_optimize;
+        result->engine_search_word_list = xdxf_engine_search_word_list;
         result->engine_search_word_translation = 
-                        engine_search_word_translation;
-        result->engine_search_word_translation_extended = 
-                        engine_search_word_translation_extended;        
-        result->engine_close = engine_close;
-        result->engine_error = engine_error;
-        result->engine_error_message = engine_error_message;
-        result->engine_set_callback = engine_set_callback;
-        result->engine_set_progress_seed = engine_set_progress_seed;
-        result->engine_set_auto_free = engine_set_auto_free;
+                        xdxf_engine_search_word_translation;
 
+        result->engine_close = xdxf_engine_close;
+        result->engine_status = xdxf_engine_error;
+        result->engine_error_message = xdxf_engine_error_message;
+        result->engine_set_callback = xdxf_engine_set_callbacks;
+        result->engine_set_progress_seed = xdxf_engine_set_progress_seed;
+        result->engine_set_auto_free = xdxf_engine_set_auto_free;
+       // API 0.2
+       result->engine_add_word = xdxf_engine_add_word;
+        result->engine_remove_word = xdxf_engine_remove_word;
+       
         XDXFData* data = (XDXFData*)g_try_malloc(sizeof(XDXFData));
         result->engine_data = (gpointer)data;
-
+       
+        
         g_debug("XDXF/%s->%s() opening file...\'%s\'.\n",
                 __FILE__,
                 __FUNCTION__,
@@ -545,7 +565,7 @@ Engine* engine_create(gchar* location,
                 data->auto_free = FALSE;
                 if(auto_cache != ENGINE_NO) {
                         if(auto_cache == ENGINE_REFRESH) {
-                                engine_optimize(result);
+                                xdxf_engine_optimize(result);
                         }
                         else if(auto_cache == ENGINE_CREATE) {
                                 gchar* cache_path = g_strconcat(data->dict_path,
@@ -557,7 +577,7 @@ Engine* engine_create(gchar* location,
                                                         GNOME_VFS_OPEN_READ
                                                        );
                                 if(open_result != GNOME_VFS_OK) {
-                                        engine_optimize(result);
+                                        xdxf_engine_optimize(result);
                                 };
                                 g_free(cache_path); cache_path = NULL;
                         }
@@ -566,7 +586,7 @@ Engine* engine_create(gchar* location,
         g_free(tmp); tmp = NULL;
         
         timer(TIMER_STOP,(gchar*)__FUNCTION__);
-        g_debug("XDXF/%s->%s() returned Engine at adress=%p\n",
+        g_debug("XDXF/%s->%s() returned Engine at adress=%p\n TO NAPEWNO TEN PLIK",
                 __FILE__,
                 __FUNCTION__,
                 result
@@ -577,18 +597,18 @@ Engine* engine_create(gchar* location,
 EngineModule engine_global_functions()
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
-        EngineModule result;        
-                result.engine_check             = engine_check;
-                result.engine_description       = engine_description;
-                result.engine_format            = engine_format;
-                result.engine_version           = engine_version;
-                result.engine_create            = engine_create;
+        EngineModule* result = g_try_new(EngineModule, 1);        
+                result->engine_check             = xdxf_engine_check;
+                result->engine_description       = xdxf_engine_description;
+                result->engine_format            = xdxf_engine_format;
+                result->engine_version           = xdxf_engine_version;
+                result->engine_create            = xdxf_engine_create;
         g_debug("XDXF/%s->%s() returned EngineModule at adress=%p.\n",
                 __FILE__,
                 __FUNCTION__,
-                &result
+                result
                );
-        return result;
+        return *result;
 }
 //------------------------------------------------------------------------------
 static double timer(gboolean start, gchar* message)
@@ -897,7 +917,7 @@ static void is_xdxf_file_end(void *data, const char *el)
         // clear as far as in this callback is nothing to do
 }
 //------------------------------------------------------------------------------
-EngineStatus engine_error(Engine* engine) 
+EngineStatus xdxf_engine_error(Engine* engine) 
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         XDXFData* data = (XDXFData*)(engine->engine_data);
@@ -1009,7 +1029,7 @@ static guint64 get_file_size(GnomeVFSHandle* file)
         return result;
 }
 //------------------------------------------------------------------------------
-void engine_optimize(Engine* engine)
+void xdxf_engine_optimize(Engine* engine)
 {
         g_debug("XDXF/%s->%s() called for engine at adress=%p\n",
                 __FILE__,
@@ -1112,7 +1132,7 @@ void engine_optimize(Engine* engine)
         g_debug("XDXF/%s->%s()'s work finished.\n",__FILE__,__FUNCTION__);
 }
 //------------------------------------------------------------------------------
-gboolean engine_check(gchar* location) 
+gboolean xdxf_engine_check(gchar* location) 
 {        
         g_debug("XDXF/%s->%s() called.\n-->PARAM:location=\'%s\'\n",
                 __FILE__,
@@ -1183,7 +1203,7 @@ static guint get_max_length(gchar* a, guint length)
         return len;
 }
 //------------------------------------------------------------------------------                                                                                     // finished functions:
-void engine_set_auto_free(Engine* engine, gboolean state) 
+void xdxf_engine_set_auto_free(Engine* engine, gboolean state) 
 {
         g_debug("XDXF/%s->%s() called.\n"
                 "-->PARAM:engine at adress=%p\n"
@@ -1203,7 +1223,7 @@ void engine_set_auto_free(Engine* engine, gboolean state)
                );
 }
 //------------------------------------------------------------------------------
-gchar* engine_version() 
+gchar* xdxf_engine_version() 
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         gchar* result = g_strdup(DIC_ENG_VERSION);
@@ -1215,7 +1235,7 @@ gchar* engine_version()
         return result;
 }
 //------------------------------------------------------------------------------
-gchar* engine_format() 
+gchar* xdxf_engine_format() 
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         gchar* result = g_strdup(DIC_ENG_FORMAT);
@@ -1227,7 +1247,7 @@ gchar* engine_format()
         return result;
 }
 //------------------------------------------------------------------------------
-gchar* engine_description() 
+gchar* xdxf_engine_description() 
 {
         g_debug("XDXF/%s->%s() called.\n",__FILE__,__FUNCTION__);
         gchar* result = g_strdup("This module operates on " 
@@ -1244,7 +1264,7 @@ gchar* engine_description()
         return result;
 }
 //------------------------------------------------------------------------------
-gboolean engine_is_optimized(Engine* engine) 
+gboolean xdxf_engine_is_optimized(Engine* engine) 
 {
         g_debug("XDXF/%s->%s() called.\n-->PARAM: engine adress=%p\n",
                 __FILE__,
@@ -1262,7 +1282,7 @@ gboolean engine_is_optimized(Engine* engine)
         return result;
 }
 //------------------------------------------------------------------------------
-gchar* engine_location(Engine* engine)
+gchar* xdxf_engine_location(Engine* engine)
 {
         g_debug("XDXF/%s->%s() called.\n-->PARAM: engine adress=%p\n",
                 __FILE__,
@@ -1512,7 +1532,7 @@ static void word_list_xdxf(XDXFData* data, gchar* pattern, GArray* result) {
         timer(TIMER_STOP,"callback for returning words list END");        
 }
 //------------------------------------------------------------------------------
-void engine_search_word_list(Engine* engine, gchar* pattern)
+void xdxf_engine_search_word_list(Engine* engine, gchar* pattern)
 {
         g_debug("XDXF/%s->%s() called. Searching words list\n"
                 "-->PARAM:engine at adress=%p\n"
diff --git a/engine/src/test.c b/engine/src/test.c
new file mode 100644 (file)
index 0000000..9500aa9
--- /dev/null
@@ -0,0 +1,112 @@
+/**********************************************************************************
+ *     copyright (C) 2006, Dariusz Wiechecki
+ *     dariusz.wiechecki@gmail.com
+ *     14 August 2006, Lodz, Poland
+ **********************************************************************************
+ *             This file is part of str-vfs-test.
+ *
+ *     str-vfs-test 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.
+ *
+ *     str-vfs-test is distributed in the hope that 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 str-vfs-test; if not, write to the Free Software
+ *     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ *********************************************************************************/
+#include <gmodule.h>
+#include <stdio.h>
+#include <unistd.h>
+#include "../include/dictionary_engine.h"
+
+
+getting_additional get_functions; // additinal functions for concrete module (e.g. XDXF)
+
+void print_list(GArray* list, gchar* pattern, gpointer user_data, EngineStatus error) {
+       printf((gchar*)user_data,pattern);
+       int i = 0;
+       while(g_array_index(list, gchar*, i) != NULL) 
+       {
+               printf("  %d. : %s\n",i+1,g_array_index(list, gchar*, i));
+               i++;
+       }
+
+}
+
+void print_translation(gchar* translation, gchar* word, gpointer user_data, EngineStatus error) {
+       printf((gchar*)user_data,word);
+       printf("%s\n\nTRANSLATION ENDS.\n",translation);
+}
+
+void caching_progress(gdouble value, gpointer user_data, EngineStatus error) {
+       printf((gchar*)user_data,value);
+}
+
+int main(int argc, char** argv) 
+{
+       char* nameApp = "WhiteStork: ";
+       printf("%sStarting test program of module: dictionary_engine.\n",nameApp);
+       
+       gchar* current_directory = g_get_current_dir();
+       printf("%sCurrent directory: %s\n",nameApp,current_directory);
+       gchar* library_to_path = g_strconcat(current_directory, "/src/engine_xdxf.so", NULL);
+       printf("%sEngine library should be in location:\n\t%s\n",nameApp,library_to_path);
+       
+       GModule *library = g_module_open(library_to_path, G_MODULE_BIND_LAZY);
+       g_module_symbol (library, "engine_global_functions", (gpointer)&get_functions);
+       
+
+       if(get_functions == NULL) {
+               printf("%sLoading function failed\n",nameApp);
+               return 1;
+       }
+       else printf("%sLoading function OK\n",nameApp);
+       
+
+       EngineModule module = get_functions();
+       Engine* xdxf;
+
+        gboolean is_compatible = dict_eng_module_check(module,"/home/stranger/whitestork/repository/WhiteStork/trunk/dict.xdxf");
+       if(is_compatible == TRUE)
+       {
+               printf("Location is compatible with enigne!\n");
+       }
+       else {
+               printf("Location is not compatible with enigne!\n");
+               return 1;
+       }
+
+       //printf("%sCheck OK. Module description: %s\n", nameApp, dict_eng_module_get_description(module));
+
+       //xdxf = dict_eng_module_create_ext(module, "/home/lukasz/MyDocs/repo/WhiteStork/trunk/engine/bin" , ENGINE_CREATE, caching_progress, "Current progress of caching is: %0.2f.\n", 0.03 );
+       //home/stranger/whitestork/engine0.2/
+//     xdxf = dict_eng_module_create(module, "/home/stranger/whitestork/engine0.2/" , ENGINE_NO);
+//     dict_eng_set_callback(xdxf, ENGINE_PROGRESS_CACHING, caching_progress, "Current progress of caching is: %0.2f.\n");
+//     dict_eng_set_progress_seed(xdxf, ENGINE_PROGRESS_CACHING, 0.02);
+
+/*     if(dict_eng_is_optimized(xdxf) == FALSE)
+       {
+               printf("Dictionary has no cache!\nCreating cache file....\n");
+               dict_eng_optimize(xdxf);
+       }
+       else {
+               printf("Dictionary has already cache file!\n");
+       }*/
+        xdxf = dict_eng_module_create(module, "/home/stranger/whitestork/repository/WhiteStork/trunk/dict.xdxf" , ENGINE_CREATE);
+       dict_eng_set_callback(xdxf, ENGINE_WORD_LIST_SIGNAL , print_list, "Wort list matches to pattern: %s\n");
+       dict_eng_set_callback(xdxf, ENGINE_WORD_TRANSLATION_SIGNAL , print_translation, "Translation for word\'%s\':\n");
+       
+       dict_eng_search_word_list(xdxf,"alumin");
+       //dict_eng_search_word_translation(xdxf,"I");
+       //dict_eng_search_word_list(xdxf,"A");  
+       
+       dict_eng_destroy(xdxf);
+       printf("%sClosed.\n",nameApp);
+       return 0;
+}
+
diff --git a/generate_repo b/generate_repo
new file mode 100755 (executable)
index 0000000..fe5c055
--- /dev/null
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+test=`arch | tr -d [:space:]`
+case $test in
+       i686) ARCH=i386;;
+       arm) ARCH=armel;;
+esac
+
+echo $ARCH
+install -d repo/dists/mistral/free/binary-$ARCH
+cp *.deb repo/dists/mistral/free/binary-$ARCH
+cd repo && dpkg-scanpackages dists/mistral/free/binary-$ARCH /dev/null | gzip -9c > dists/mistral/free/binary-$ARCH/Packages.gz
diff --git a/gui/COPYING b/gui/COPYING
deleted file mode 100644 (file)
index fb6319b..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-    GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Lesser General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License along
-    with this program; if not, write to the Free Software Foundation, Inc.,
-    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Lesser General
-Public License instead of this License.
\ No newline at end of file
index 9f0f03c..3c62244 100644 (file)
@@ -24,7 +24,6 @@ ${BINARIES}/ws_dbus.o:
                cd ../dbus && make
 
 
-
 dyn:
                ${BINARIES}/wsl_gui.o ${BINARIES}/wsl_gui_callbacks.o ${BINARIES}/wsl_gui_layout.o 
                ${CC} ${DEBUG} -shared -fPIC -o ${EXECUTABLE}.so ${BINARIES}/wsl_gui.o ${BINARIES}/wsl_gui_callbacks.o ${BINARIES}/wsl_gui_layout.o dbus/ws_dbus.o ${LIBS} ${CFLAGS}
diff --git a/gui/plik.txt b/gui/plik.txt
new file mode 100644 (file)
index 0000000..8f22d6c
--- /dev/null
@@ -0,0 +1,8 @@
+<html>
+<head></head>
+<body>
+<center>Welcome!<br><br>
+in <b>WhiteStork</b><br>
+Dictionary
+</body>
+</html>
\ No newline at end of file
diff --git a/gui/src/ikona.png b/gui/src/ikona.png
new file mode 100644 (file)
index 0000000..25b21e2
Binary files /dev/null and b/gui/src/ikona.png differ
index 6eac093..e1121cc 100644 (file)
@@ -71,7 +71,7 @@ int main(int argc, char *argv[])
         ws_dbus_config (ws_gui_app->dbus_data,
                         WS_DBUS_CONFIG_REMOTE_IFACE,
                         "org.maemo.WhiteStorkManager");
-           
+
         ws_dbus_connect (ws_gui_app->dbus_data);
 
         ws_dbus_set_cb (ws_gui_app->dbus_data,
@@ -91,16 +91,17 @@ int main(int argc, char *argv[])
                         "signal",
                         ws_gui_signal_hander,
                         ws_gui_app);
-           
+
         //setting the clipboard
         ws_gui_app->ws_gui_clipboard = 
                 gtk_widget_get_clipboard (GTK_WIDGET(ws_gui_app->ws_gui_html),
                                           GDK_SELECTION_CLIPBOARD);
-           
-           //connecting the signals
+
+        //connecting the signals
         g_signal_connect(G_OBJECT (ws_gui_app->ws_gui_w_list->ws_gui_selection),
                          "changed",
-                         G_CALLBACK (ws_gui_tree_selection_changed), ws_gui_app);
+                         G_CALLBACK (ws_gui_tree_selection_changed), 
+                        ws_gui_app);
         g_signal_connect(G_OBJECT(ws_gui_app->ws_gui_hildon_window),
                         "key-press-event",
                          G_CALLBACK(hildon_key_press_listener),
index 5fa99ec..62f4e07 100644 (file)
@@ -33,13 +33,13 @@ static double timer(gboolean start, gchar* message)
         static struct timeval last_time;
         static struct timeval result;
         static double seconds = 0.0;
-        if(first_run)                      
+        if(first_run)
         {
                 first_run = FALSE;
                 stack = g_array_new(TRUE, TRUE, sizeof(struct timeval));
-        };                      
+        };
         // things to do on the beggining of function's work
-        if (start)                       
+        if (start)
         {
                 g_debug("XDXF->%s() start counting time for function '%s()'.\n",
                         __FUNCTION__,message);
@@ -53,7 +53,7 @@ static double timer(gboolean start, gchar* message)
                 gettimeofday(&actual_time,NULL);
                 last_time = g_array_index(stack, struct timeval, 0);
                 g_array_remove_index(stack, 0);
-                
+
                 if (actual_time.tv_usec < last_time.tv_usec) {
                         int nsec = (last_time.tv_usec - 
                                              actual_time.tv_usec) / 1000000 + 1;
@@ -71,7 +71,8 @@ static double timer(gboolean start, gchar* message)
                 seconds = (((double)(result.tv_usec)) / 1e6) + 
                                                       ((double)(result.tv_sec));
 
-                g_debug("XDXF->%s() function \'%s()\' was working for: %g [s] or %ld [us].\n",
+                g_debug("XDXF->%s() function \'%s()\' was working for: %g [s] "
+                       "or %ld [us].\n",
                         __FUNCTION__,
                         message,seconds,
                         ((long)(result.tv_sec*1e6)+(result.tv_usec)));
@@ -110,7 +111,7 @@ void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data)
                                    GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_ERROR,
                                    GTK_BUTTONS_OK,
-                                   _("An error occured"));
+                                   _("ws_ni_error_occured"));
                         gtk_widget_show_all(ws_gui_app->ws_message_dialog);
 
                         g_signal_connect_swapped(
@@ -129,7 +130,7 @@ void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data)
                                    GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_ERROR,
                                    GTK_BUTTONS_OK,
-                                   _("There is no dictionary file available"));
+                                   _("ws_ni_no_dictionary_available"));
 
                         gtk_widget_show_all(ws_gui_app->ws_message_dialog);
 
@@ -149,7 +150,8 @@ void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data)
                         FALSE);
 
                         if (gtk_dialog_run(
-                                GTK_DIALOG(ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
+                                GTK_DIALOG(ws_gui_app->ws_message_dialog)) 
+                                                            == GTK_RESPONSE_OK)
                         {
                                 gtk_widget_destroy(
                                                  ws_gui_app->ws_message_dialog);
@@ -163,7 +165,7 @@ void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data)
                                 hildon_banner_show_progress(
                                    GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
                                    NULL,
-                                   _("caching ..."));
+                                   _("ws_pb_caching"));
                        ws_gui_app->caching_flag = TRUE;
                        hildon_banner_set_fraction(
                                HILDON_BANNER(ws_gui_app->ws_gui_banner_caching),
@@ -207,12 +209,13 @@ void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data)
                                    GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_ERROR,
                                    GTK_BUTTONS_OK,
-                                  _("Dictionary unavailable"));
+                                  _("ws_ni_dictionary_unavailable"));
                        gtk_widget_show_all(ws_gui_app->ws_message_dialog);
                        if (gtk_dialog_run(
-                       GTK_DIALOG(ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
+                       GTK_DIALOG(ws_gui_app->ws_message_dialog)) 
+                                                            == GTK_RESPONSE_OK)
                        {
-                               gtk_widget_destroy(ws_gui_app->ws_message_dialog);
+                              gtk_widget_destroy(ws_gui_app->ws_message_dialog);
                        }
                        break;
                 }
@@ -283,7 +286,7 @@ void ws_gui_dbus_return_words (GError *error, GArray *words, gpointer user_data)
         if (tmp->len == 0)
         {
                 gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                              _("No words found"));
+                              _("ws_ni_no_words_found"));
         }
         timer(TIMER_STOP, (gchar*)__FUNCTION__);
 }
@@ -307,7 +310,7 @@ void ws_gui_dbus_return_translation (GError *error,
 
         data = g_array_index (words, osso_rpc_t, 0);
         gtk_html_zoom_reset(GTK_HTML(ws_gui_app->ws_gui_html));
-        ws_gui_fill_html(format_html(data.value.s), ws_gui_app);
+        ws_gui_fill_html(format_html(data.value.s, ws_gui_app), ws_gui_app);
 
         timer(TIMER_STOP, (gchar*)__FUNCTION__);
 }
@@ -353,7 +356,8 @@ gboolean hildon_key_press_listener (GtkWidget * widget,
                          gtk_adjustment_get_value(
                            GTK_ADJUSTMENT(
                                 ws_gui_app->ws_gui_vadj)) - ws_gui_app->v_delta;
-                      if (ws_gui_app->v_new_value > ws_gui_app->ws_gui_vadj->lower) 
+                      if (ws_gui_app->v_new_value > 
+                         ws_gui_app->ws_gui_vadj->lower) 
                       {
                               gtk_adjustment_set_value(
                                         GTK_ADJUSTMENT(ws_gui_app->ws_gui_vadj),
@@ -387,13 +391,17 @@ gboolean hildon_key_press_listener (GtkWidget * widget,
                 case HILDON_HARDKEY_LEFT:
                 {
                       gtk_container_set_focus_hadjustment(
-                       GTK_CONTAINER(ws_gui_app->ws_gui_scrolledwindow_left),
-                       gtk_scrolled_window_get_hadjustment(
-                       GTK_SCROLLED_WINDOW(ws_gui_app->ws_gui_scrolledwindow_left)));
+                      GTK_CONTAINER(ws_gui_app->ws_gui_scrolledwindow_left),
+                      gtk_scrolled_window_get_hadjustment(
+                      GTK_SCROLLED_WINDOW(
+                                     ws_gui_app->ws_gui_scrolledwindow_left)));
+
                       ws_gui_app->h_new_value = gtk_adjustment_get_value(
-                       GTK_ADJUSTMENT(ws_gui_app->ws_gui_hadj)) - ws_gui_app->h_delta;
+                      GTK_ADJUSTMENT(ws_gui_app->ws_gui_hadj)) 
+                     - ws_gui_app->h_delta;
 
-                      if (ws_gui_app->h_new_value > ws_gui_app->ws_gui_hadj->lower) 
+                      if (ws_gui_app->h_new_value > 
+                         ws_gui_app->ws_gui_hadj->lower) 
                       {
                                 gtk_adjustment_set_value(
                                         GTK_ADJUSTMENT(ws_gui_app->ws_gui_hadj),
@@ -407,9 +415,13 @@ gboolean hildon_key_press_listener (GtkWidget * widget,
                       gtk_container_set_focus_hadjustment(
                        GTK_CONTAINER(ws_gui_app->ws_gui_scrolledwindow_left),
                        gtk_scrolled_window_get_hadjustment(
-                       GTK_SCROLLED_WINDOW(ws_gui_app->ws_gui_scrolledwindow_left)));
+                       GTK_SCROLLED_WINDOW(
+                      ws_gui_app->ws_gui_scrolledwindow_left)));
+
                       ws_gui_app->h_new_value = gtk_adjustment_get_value(
-                       GTK_ADJUSTMENT(ws_gui_app->ws_gui_hadj)) + ws_gui_app->h_delta;
+                      GTK_ADJUSTMENT(ws_gui_app->ws_gui_hadj)) 
+                     + ws_gui_app->h_delta;
+
                       if (ws_gui_app->h_new_value < 
                                 (ws_gui_app->ws_gui_hadj->upper - 
                                         ws_gui_app->ws_gui_hadj->page_size)) 
@@ -575,8 +587,6 @@ void ws_gui_history_back(GtkButton *button, gpointer user_data)
         }
         else 
         {
-                gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                              _("no words in the history"));
                 gtk_widget_set_sensitive (
                               GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
                               FALSE);
@@ -604,7 +614,8 @@ void ws_gui_history_next(GtkButton *button, gpointer user_data)
                                    gchar*,
                                    ws_gui_app->ws_gui_history_cur_pos+1);
 
-        if ((ws_gui_app->ws_gui_history_cur_pos < HISTORY_LEN-1) && (tmp != NULL)) 
+        if ((ws_gui_app->ws_gui_history_cur_pos < HISTORY_LEN-1) 
+            && (tmp != NULL)) 
         {
                 ws_gui_app->ws_gui_history_cur_pos =
                          ws_gui_app->ws_gui_history_cur_pos + 1;
@@ -616,8 +627,6 @@ void ws_gui_history_next(GtkButton *button, gpointer user_data)
         }
         else 
         {
-                gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                              _("end of history"));
                 gtk_widget_set_sensitive(
                            GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
                            FALSE);
@@ -643,7 +652,8 @@ void ws_gui_check_history(gpointer user_data)
                                    gchar*,
                                    ws_gui_app->ws_gui_history_cur_pos+1);
 
-        if ((ws_gui_app->ws_gui_history_cur_pos+1 < HISTORY_LEN) && (tmp != NULL))
+        if ((ws_gui_app->ws_gui_history_cur_pos+1 < HISTORY_LEN) 
+            && (tmp != NULL))
         {
                 gtk_widget_set_sensitive(
                            GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
@@ -687,7 +697,8 @@ void ws_gui_check_history(gpointer user_data)
 
 /** create TreeView Model, which allows to display words list
  *
- * @param words_list - array with words(found in a dictionary), recived from DBUS;
+ * @param words_list - array with words(found in a dictionary), recived from 
+ * DBUS;
  * @param user_data - user data set when the signal handler was connected
  * @return 
  */
@@ -701,7 +712,7 @@ GtkTreeModel * create_and_fill_model (GArray *words_list, gpointer user_data)
                         GTK_TREE_MODEL(ws_gui_app->ws_gui_w_list->ws_gui_store),
                         &ws_gui_app->ws_gui_w_list->ws_gui_iter);
 
-                       /* Append a row and fill in some data */
+        /* Append a row and fill in some data */
         while (tmp != NULL)
         {
                 gtk_list_store_append (ws_gui_app->ws_gui_w_list->ws_gui_store,
@@ -715,10 +726,13 @@ GtkTreeModel * create_and_fill_model (GArray *words_list, gpointer user_data)
         };
 
         tmp = g_strdup(g_array_index(words_list, gchar*, 0));
-        if (tmp != NULL)
+
+       if (tmp != NULL)
         {
                 ws_dbus_client_find_translation(ws_gui_app->dbus_data, tmp);
                 ws_gui_history_add(tmp, ws_gui_app);
+               g_free(ws_gui_app->last_word);
+               ws_gui_app->last_word = g_strdup (tmp);
         }
 
         return GTK_TREE_MODEL(ws_gui_app->ws_gui_w_list->ws_gui_store);
@@ -727,7 +741,8 @@ GtkTreeModel * create_and_fill_model (GArray *words_list, gpointer user_data)
 /** create TreeView and TreeModel using create_and_fill_model() function;
  it is necessary to display found words in a words list;
  *
- * @param words_list - array with words(found in a dictionary), recived from DBUS;
+ * @param words_list - array with words(found in a dictionary), 
+ * recived from DBUS;
  * @param user_data - user data set when the signal handler was connected
  * @return 
  */
@@ -780,10 +795,14 @@ void ws_gui_tree_selection_changed(GtkTreeSelection *selection,
                                    &string,
                                    -1);
 
-               ws_dbus_client_find_translation(ws_gui_app->dbus_data, string);
-
-               ws_gui_history_add(string, ws_gui_app);
-               g_free (string);
+                ws_dbus_client_find_translation(ws_gui_app->dbus_data, string);
+               
+               //g_free(ws_gui_app->last_word);
+               ws_gui_app->last_word = NULL;
+               ws_gui_app->last_word = g_strdup (string);
+               
+                ws_gui_history_add(string, ws_gui_app);
+                g_free (string);
         }
 }
 
@@ -830,9 +849,9 @@ void ws_gui_popup_search(GtkMenuItem *menuitem, gpointer user_data)
         ws_gui_app->ws_gui_clipboard_primary = 
                 gtk_widget_get_clipboard(ws_gui_app->ws_gui_html,
                                          GDK_SELECTION_PRIMARY);
-        temp = gtk_clipboard_wait_for_text(ws_gui_app->ws_gui_clipboard_primary);
-        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO,
-              ".::GUI::. in clipboard_primary there is: %s", temp);
+        temp = gtk_clipboard_wait_for_text(
+                                         ws_gui_app->ws_gui_clipboard_primary);
+
         if (temp != NULL || strcmp(temp, " "))
         {
                 g_object_set(G_OBJECT(ws_gui_app->ws_gui_hildon_find_toolbar),
@@ -846,7 +865,7 @@ void ws_gui_popup_search(GtkMenuItem *menuitem, gpointer user_data)
                 hildon_banner_show_information(
                                    GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
                                    NULL,
-                                   _("No text selected"));
+                                   _("ws_ni_no_text_selected"));
         }
 }
 
@@ -949,7 +968,7 @@ void ws_gui_search(GtkWidget * widget, gpointer user_data)
                         hildon_banner_show_animation(
                                    GTK_WIDGET(ws_gui_app->ws_gui_hildon_window),
                                    NULL,
-                                   _("searching ..."));
+                                   _("ws_ab_searching"));
 
                 gtk_widget_set_sensitive(
                               GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_stop),
@@ -962,12 +981,13 @@ void ws_gui_search(GtkWidget * widget, gpointer user_data)
                 ws_gui_fill_html(" ", ws_gui_app);
                 ws_dbus_client_find_word (ws_gui_app->dbus_data, ws_gui_text);
        }
-       else 
-       {
+               else 
+               {
                 gtk_infoprint(
                               GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                              _("No word typed."));
-       }
+                              _("ws_ni_no_word_typed"));
+        }
+       g_free(ws_gui_app->last_word);
 }
 
 /** stop search process
@@ -986,7 +1006,7 @@ void ws_gui_search_stop(GtkButton *button, gpointer user_data)
                 ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_INFO_STOP_SEARCH);
                 gtk_infoprint(
                               GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                              _("Search has been aborted"));
+                              _("ws_ni_search_aborted"));
         }
 }
 
@@ -1028,7 +1048,7 @@ void ws_gui_menu_quit(GtkMenuItem *menuitem, gpointer user_data)
 
 /** fill translation area with text (html) recived from DBUS
  *
- * @param html_context - text which is going to be displayed; it should be html;
+ * @param html_context - text which is going to be displayed; it should be html
  * @param user_data - user data set when the function was called
  * @return
  */
@@ -1054,7 +1074,9 @@ void ws_gui_read_adjustment(gpointer user_data)
 
         ws_gui_app->ws_gui_hadj = 
                 gtk_scrolled_window_get_hadjustment(
-                    GTK_SCROLLED_WINDOW(ws_gui_app->ws_gui_scrolledwindow_left));
+                GTK_SCROLLED_WINDOW(
+               ws_gui_app->ws_gui_scrolledwindow_left));
+
         ws_gui_app->h_delta = (ws_gui_app->ws_gui_hadj->upper -
                                   ws_gui_app->ws_gui_hadj->lower)/SCROLL_STEP_H;
 
@@ -1081,7 +1103,10 @@ void ws_gui_read_adjustment(gpointer user_data)
  * @param stream - html stream 
  * @return
  */
-void ws_gui_url_requested (GtkHTML *html, const char *url, GtkHTMLStream *stream)
+void ws_gui_url_requested (
+                         GtkHTML *html, 
+                         const char *url, 
+                         GtkHTMLStream *stream)
 {
         int fd;
 
@@ -1131,7 +1156,8 @@ gboolean ws_gui_button_press(GtkWidget *widget,
                         return FALSE;
                 }
 
-                g_signal_stop_emission_by_name(G_OBJECT(ws_gui_app->ws_gui_html),
+                g_signal_stop_emission_by_name(G_OBJECT(
+                                               ws_gui_app->ws_gui_html),
                                                "button-press-event");
                 g_timer_start(ws_gui_app->timer);
                 gtk_timeout_add((guint)(PRESS_TIME*1000),
@@ -1223,23 +1249,42 @@ void ws_gui_check_clipboard (GtkWidget *widget, gpointer user_data)
  * displayed
  *
  * @param received_string - content received from Manager
+ * @param user_data - user data set when the function has been called
  * @return 
  */
-gchar * format_html (gchar * received_string)
+gchar * format_html (gchar * received_string, gpointer user_data)
 {
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
         GString *str_final;
+       GString *str_tmp;
         str_final = g_string_new(received_string);
+       str_tmp = g_string_new(received_string);
         gchar * tmp;
+       gchar * tmp2;
+       
+       ws_gui_app->raw_translation=g_string_erase(ws_gui_app->raw_translation, 
+                                                  0, 
+                                                 -1);
 
         while (strstr(str_final->str, "<PATTERN_OPEN>") != NULL)
         {
                 tmp = strstr(str_final->str, "<PATTERN_OPEN>");
+               
                 str_final =  g_string_erase(str_final,
                                            (long)(tmp - str_final->str),
                                            14);
                 str_final =  g_string_insert(str_final,
                  (long)(tmp - str_final->str),
-                 "<html><head></head><body><center><table width=\"95%\"><tr><td><table border=1 width=100%><tr><th background=\"file:/usr/share/pixmaps/ws_top.png\"><img align=left src=\"file:/usr/share/pixmaps/engine_xdxf_icon.png\"><font color=\"#eeeeee\">");                      
+                 "<html><head></head><body><center><table width=\"95%\"><tr>"
+                "<td><table border=1 width=100%><tr>"
+                "<th background=\"file:/usr/share/pixmaps/ws_top.png\">"
+                "<img align=left src=\"file:/usr/share/pixmaps/"
+                "engine_xdxf_icon.png\"><font color=\"#eeeeee\">");
+
+               tmp2 = strstr(str_tmp->str, "<PATTERN_OPEN>");
+               str_tmp =  g_string_erase(str_tmp,
+                                           (long)(tmp2 - str_tmp->str),
+                                           14);
         }
 
         while (strstr(str_final->str, "<PATTERN_CLOSED>") != NULL)
@@ -1251,6 +1296,11 @@ gchar * format_html (gchar * received_string)
                 str_final =  g_string_insert(str_final,
                                             (long)(tmp - str_final->str),
                                             "</font></th></tr></table>");
+
+               tmp2 = strstr(str_tmp->str, "<PATTERN_CLOSED>");
+               str_tmp =  g_string_erase(str_tmp,
+                                           (long)(tmp2 - str_tmp->str),
+                                           16);
         }
 
         while (strstr(str_final->str, "<TRANSLATION_OPEN>") != NULL)
@@ -1261,7 +1311,13 @@ gchar * format_html (gchar * received_string)
                                              18);
                 str_final =  g_string_insert (str_final,
                 (long)(tmp - str_final->str),
-                "<table border=1 width=100%><tr><td background=\"file:/usr/share/pixmaps/ws_tra.png\">");
+                "<table border=1 width=100%><tr><td background=\"file:/usr/"
+               "share/pixmaps/ws_tra.png\">");
+
+               tmp2 = strstr(str_tmp->str, "<TRANSLATION_OPEN>");
+               str_tmp =  g_string_erase(str_tmp,
+                                           (long)(tmp2 - str_tmp->str),
+                                           18);
         }
 
         while (strstr(str_final->str, "<TRANSLATION_CLOSED>") != NULL)
@@ -1273,10 +1329,22 @@ gchar * format_html (gchar * received_string)
                 str_final =  g_string_insert(str_final,
                                              (long)(tmp - str_final->str),
                                              "</td></tr></table></center><br>");
+
+               tmp2 = strstr(str_tmp->str, "<TRANSLATION_CLOSED>");
+               str_tmp =  g_string_erase(str_tmp,
+                                           (long)(tmp2 - str_tmp->str),
+                                           20);
         }
 
         str_final = g_string_append(str_final,
                                     "</td></tr></table></body></html>");
+
+       //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, ".::GUI::. Zawartosc stringa to: \"%s\"", str_tmp->str);
+       ws_gui_app->raw_translation = g_string_insert(
+                                               ws_gui_app->raw_translation,
+                                               0,
+                                               str_tmp->str);
+       //g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, ".::GUI::. Zawartosc RAW to: \"%s\"", ws_gui_app->raw_translation->str);
         return str_final->str;
 }
 
@@ -1288,8 +1356,16 @@ gchar * format_html (gchar * received_string)
  */
 void ws_gui_dictionary_open_bookmark(GtkMenuItem *menuitem, gpointer user_data)
 {
-        //WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n.::GUI::. Open bookmarks\n");
+        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+
+       ws_gui_read_active_dictionaries(ws_gui_app);
+       
+       g_free(ws_gui_app->last_word);
+       ws_gui_app->last_word = NULL;
+
+       ws_gui_app->bookmark_mode = TRUE;
+       ws_gui_set_bookmarks_sensitivity(ws_gui_app);
+       ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_INFO_CONFIG_CHANGED);
 }
 
 /** closes bookmarks database 
@@ -1300,8 +1376,16 @@ void ws_gui_dictionary_open_bookmark(GtkMenuItem *menuitem, gpointer user_data)
  */
 void ws_gui_dictionary_close_bookmark(GtkMenuItem *menuitem, gpointer user_data)
 {
-       //WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n.::GUI::. Close bookmarks\n");
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+
+       ws_gui_read_active_dictionaries(ws_gui_app);
+       
+       //g_free(ws_gui_app->last_word);
+       ws_gui_app->last_word = NULL;
+
+        ws_gui_app->bookmark_mode = FALSE;
+       ws_gui_set_bookmarks_sensitivity(ws_gui_app);
+       ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_INFO_CONFIG_CHANGED);
 }
 
 /** adds bookmark to bookmarks database 
@@ -1312,8 +1396,23 @@ void ws_gui_dictionary_close_bookmark(GtkMenuItem *menuitem, gpointer user_data)
  */
 void ws_gui_dictionary_add_bookmark(GtkMenuItem *menuitem, gpointer user_data)
 {
-       //WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n.::GUI::. Add bookmark\n");
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       /*g_log(G_LOG_DOMAIN, 
+              G_LOG_LEVEL_INFO, 
+              ".::GUI::. LAST_WORD: \"%s\"", 
+             ws_gui_app->last_word);*/
+
+       if (ws_gui_app->last_word != NULL)
+       {
+               ws_gui_set_bookmarks_sensitivity(ws_gui_app);
+               ws_gui_add_bookmark_dialog(ws_gui_app);
+       }
+       else
+       {
+               gtk_infoprint(
+                              GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                              _("ws_ni_select_word_to_add"));
+       }
 }
 
 /** removes bookmark from bookmarks database 
@@ -1322,49 +1421,211 @@ void ws_gui_dictionary_add_bookmark(GtkMenuItem *menuitem, gpointer user_data)
  * @param user_data - user data set when the signal handler was connected 
  * @return
  */
-void ws_gui_dictionary_remove_bookmark(GtkMenuItem *menuitem, gpointer user_data)
+void ws_gui_dictionary_remove_bookmark(GtkMenuItem *menuitem, 
+                                      gpointer user_data)
 {
-       //WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-        g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n.::GUI::. Remove bookmark\n");
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       
+       g_log(G_LOG_DOMAIN, 
+             G_LOG_LEVEL_INFO, 
+             ".::GUI::. LAST_WORD: \"%s\"", 
+             ws_gui_app->last_word);
+
+               if (ws_gui_app->last_word != NULL)
+       {
+               ws_gui_set_bookmarks_sensitivity(ws_gui_app);
+               ws_gui_remove_bookmark_dialog(ws_gui_app);
+       }
+       else
+       {
+               gtk_infoprint(
+                              GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                              _("ws_ni_select_word_to_remove"));
+       }
 }
 
+/** checks wheather dictionaries are available or not; according to the result
+ * dimmes proper menuitem 
+ *
+ * @param menuitem - object which recived the signal
+ * @param user_data - user data set when the signal handler was connected 
+ * @return
+ */
 void ws_gui_dict_availablity(GtkMenuItem *menuitem, gpointer user_data)
 {
        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-       if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL) == TRUE)
+       if (gconf_client_dir_exists(ws_gui_app->client, 
+                                   GCONF_PATH, NULL) == TRUE)
        {
                ws_gui_app->directories = gconf_client_all_dirs(
                                                        ws_gui_app->client,
                                                        GCONF_PATH,
                                                        NULL
                                                        );
+               
        
                if(g_slist_length(ws_gui_app->directories) != 0)
                {
                        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
-                               TRUE);
+                       (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
+                       TRUE);
                        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
-                               TRUE);
+                       (ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
+                       TRUE);
                        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
-                               TRUE);
+                       (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
+                       TRUE);
                }
 
        }
        else 
        {
-       
        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
-                               FALSE);
+                             (ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict),
+                             FALSE);
        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
-                               FALSE);
+                             (ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict),
+                             FALSE);
        gtk_widget_set_sensitive(GTK_WIDGET
-                               (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
-                               FALSE);
+                           (ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict),
+                           FALSE);
+       }
+
+}
+
+/** sets sensitivity of menu items due to bookmark's mode
+ *
+ * @param user_data - user data set when the function was called 
+ * @return
+ */
+void ws_gui_set_bookmarks_sensitivity(gpointer user_data)
+{
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       int i;
+       gchar *string;
+       gchar *name;
+
+       if (ws_gui_app->bookmark_mode == TRUE)
+       {
+               g_slist_free(ws_gui_app->directories_last);
+               ws_gui_app->directories_last = g_slist_alloc();
+
+               ws_gui_app->directories = gconf_client_all_dirs(
+                                                       ws_gui_app->client, 
+                                                       GCONF_PATH, NULL);
+       
+       ws_gui_app->directories_last = g_slist_copy(ws_gui_app->directories);
+       
+       for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
+        {
+               string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
+               name = g_path_get_basename(string);
+               string = g_strconcat(string, "/active", NULL);
+               
+               g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nslownik (%d): %s - active: %d", i, string, gconf_client_get_bool(ws_gui_app->client, string, NULL));
+               
+               if (strcmp(name, "bookmarks") == 0)
+               {
+                       gconf_client_set_bool(ws_gui_app->client, 
+                                             string, 
+                                             TRUE, 
+                                             NULL);
+               }
+               else
+               {
+                       gconf_client_set_bool(ws_gui_app->client, 
+                                             string, 
+                                             FALSE, 
+                                             NULL);
+               }
+               g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "Po przestawieniu: slownik (%d): %s - active: %d\n\n", i, string, gconf_client_get_bool(ws_gui_app->client, string, NULL));
+       }
+
+       //setting sensitivity of components
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
+                FALSE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
+                TRUE);
+       gtk_widget_set_sensitive(
+              GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
+               TRUE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
+                FALSE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
+                FALSE);
+       }
+       else
+       {
+       for (i=0; i< g_slist_length(ws_gui_app->directories_last);i++)
+        {
+               string = (gchar*)g_slist_nth_data(ws_gui_app->directories_last, 
+                                                 i);
+
+               name = g_path_get_basename(string);
+               string = g_strconcat(string, "/active", NULL);
+               
+               g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nslownik (%d): %s - active: %d", i, string, gconf_client_get_bool(ws_gui_app->client, string, NULL));
+               if (strcmp(name, "bookmarks") == 0)
+               {
+                       gconf_client_set_bool(ws_gui_app->client, 
+                                             string, 
+                                             FALSE, 
+                                             NULL);
+               }
+               else
+               {
+                       gconf_client_set_bool(ws_gui_app->client, 
+                                             string, 
+                                             TRUE, 
+                                             NULL);
+               }
+               g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nPo przestawieniu: slownik (%d): %s - active: %d", i, string, gconf_client_get_bool(ws_gui_app->client, string, NULL));
        }
 
+       //setting sensitivity of components
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark),
+                TRUE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark),
+                FALSE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark),
+                FALSE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark),
+                TRUE);
+       gtk_widget_set_sensitive(
+               GTK_WIDGET(ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries),
+                TRUE);
+       }
+}
+
+/** reads gconf entries and sets variables with a proper data; it is necessary
+ * for changing the bookmarks mode
+ *
+ * @param user_data - user data set when the function was called
+ * @return
+ */
+void ws_gui_read_active_dictionaries(gpointer user_data)
+{
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       //gchar *string;
+       //int i;
+       
+       ws_gui_app->directories = gconf_client_all_dirs(ws_gui_app->client,
+                                             GCONF_PATH,
+                                             NULL);
+
+       /*for (i=0; i< g_slist_length(ws_gui_app->directories);i++)
+        {
+                string = (gchar*)g_slist_nth_data(ws_gui_app->directories, i);
+               string = g_strconcat(string, "/active", NULL);
+               
+               g_log(G_LOG_DOMAIN, G_LOG_LEVEL_INFO, "\n\nslownik (%d): %s - \nactive: %d", i, string, gconf_client_get_bool(ws_gui_app->client, string, NULL));
+       }*/
 }
index c91ef79..e1582bf 100644 (file)
@@ -32,19 +32,28 @@ Copyright 2006 ComArch S.A.
 void ws_gui_create_window(gpointer user_data) 
 {
         WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       
+       gchar *welcome_note;
+       welcome_note = g_strconcat("<br><br><center><font size=+3>", _("ws_ni_welcome"), "<br><IMG SRC=file:/usr/share/pixmaps/whitestork.png>", NULL);
 
-        ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string = 
+        /*ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string = 
                 "<font size=+2><center><br>Welcome to<br><b>WhiteStork</b><br>"
-                "Dictionary.</font><br><IMG SRC=file:/usr/share/pixmaps/whitestork.png>"
-                "</center>";
+                "Dictionary.</font><br><IMG SRC=file:/usr/share/pixmaps/"
+               "whitestork.png>"
+                "</center>";*/
+
+       ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string = 
+                                                          (welcome_note);
 
         GArray *array_tmp = g_array_new (TRUE, TRUE, sizeof(gchar*));
+       ws_gui_app->raw_translation = g_string_new(" ");
 
         ws_gui_app->ws_gui_banner_flag = FALSE;
         ws_gui_app->ws_gui_full_screen_flag = FALSE;
         ws_gui_app->caching_flag = FALSE;
         ws_gui_app->ws_gui_double_click = FALSE;
         ws_gui_app->ws_gui_sel_flag = FALSE;
+       ws_gui_app->bookmark_mode = FALSE;
 
         ws_gui_app->timer = g_timer_new();
         g_timer_stop(ws_gui_app->timer);
@@ -75,75 +84,83 @@ void ws_gui_create_window(gpointer user_data)
                 GTK_POLICY_AUTOMATIC,
                 GTK_POLICY_AUTOMATIC);
 
-       gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
+        gtk_paned_set_position(GTK_PANED(ws_gui_app->ws_gui_hpane), 100);
 
-       gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
+        gtk_scrolled_window_set_placement(GTK_SCROLLED_WINDOW
                                        (ws_gui_app->ws_gui_scrolledwindow_left),
                                        GTK_CORNER_TOP_LEFT);
 
-       ws_gui_app->ws_gui_scrolledwindow_right = 
+        ws_gui_app->ws_gui_scrolledwindow_right = 
                 gtk_scrolled_window_new (NULL, NULL);
 
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
+        gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW
                                      (ws_gui_app->ws_gui_scrolledwindow_right), 
                                      GTK_POLICY_NEVER,
                                      GTK_POLICY_AUTOMATIC);
 
-       ws_gui_app->ws_gui_w_list->ws_gui_store = 
+        ws_gui_app->ws_gui_w_list->ws_gui_store = 
                 gtk_list_store_new (NUM_COLS, G_TYPE_STRING, G_TYPE_UINT);
 
-       ws_gui_app->ws_gui_w_list->ws_gui_view = 
+        ws_gui_app->ws_gui_w_list->ws_gui_view = 
                 create_view_and_model(array_tmp, ws_gui_app);
 
-       gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
+        gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_w_list->ws_gui_view));
 
-       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
+        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
                                        (ws_gui_app->ws_gui_scrolledwindow_left), 
                                         ws_gui_app->ws_gui_w_list->ws_gui_view);
 
-       ws_gui_app->ws_gui_html = gtk_html_new();
+        ws_gui_app->ws_gui_html = gtk_html_new();
 
-       ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
-       gtk_widget_modify_font(GTK_WIDGET(ws_gui_app->ws_gui_html),ws_gui_app->p);
+        ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
+        gtk_widget_modify_font(GTK_WIDGET(
+                                       ws_gui_app->ws_gui_html),ws_gui_app->p);
 
-       g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
+        g_signal_connect(GTK_OBJECT (ws_gui_app->ws_gui_html),
                                  "url_requested",
                                  G_CALLBACK(ws_gui_url_requested),
                                  ws_gui_app);
 
-       gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
+        gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
                         ws_gui_app->ws_gui_w_list->ws_gui_list_item_data_string,
                         -1);
 
-       gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE); 
-       gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
+       /*gtk_html_load_from_string(GTK_HTML(ws_gui_app->ws_gui_html),
+                        _("WhiteStork_Welcome_Note"),
+                        -1);
+       */
+
+        gtk_html_set_editable(GTK_HTML(ws_gui_app->ws_gui_html), FALSE); 
+        gtk_html_allow_selection(GTK_HTML(ws_gui_app->ws_gui_html), TRUE);
 
-       gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
+        gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW
                                       (ws_gui_app->ws_gui_scrolledwindow_right),
                                        ws_gui_app->ws_gui_html);
 
-       gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
+        gtk_paned_pack1(GTK_PANED(ws_gui_app->ws_gui_hpane),
                        ws_gui_app->ws_gui_scrolledwindow_left,
                        TRUE,
                        TRUE);
-       gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
+        gtk_paned_pack2(GTK_PANED(ws_gui_app->ws_gui_hpane),
                        ws_gui_app->ws_gui_scrolledwindow_right,
                        TRUE,
                        TRUE);
 
-       gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window), 
+        gtk_container_add(GTK_CONTAINER(ws_gui_app->ws_gui_hildon_window), 
                         ws_gui_app->ws_gui_hpane);
 
-       gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
+        gtk_widget_show_all(GTK_WIDGET(ws_gui_app->ws_gui_hildon_window));
 
-       ws_gui_app->ws_gui_w_list->ws_gui_selection = 
+        ws_gui_app->ws_gui_w_list->ws_gui_selection = 
                 gtk_tree_view_get_selection (GTK_TREE_VIEW
                 (ws_gui_app->ws_gui_w_list->ws_gui_view));
 
-       gtk_tree_selection_set_mode(
+       gtk_tree_selection_set_mode(
                                    ws_gui_app->ws_gui_w_list->ws_gui_selection,
                                    GTK_SELECTION_BROWSE);
 
+       ws_gui_set_bookmarks_sensitivity(ws_gui_app);
+       ws_gui_app->directories = g_slist_alloc();
 }
 
 /** this function creates a find toolbar and connects signals to the tollbars 
@@ -157,7 +174,7 @@ void ws_gui_create_find_toolbar(gpointer user_data)
 
        GtkToolItem *space;
        ws_gui_app->ws_gui_hildon_find_toolbar = 
-       HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("Find: ")));
+       HILDON_FIND_TOOLBAR(hildon_find_toolbar_new(_("ws_me_search_find")));
 
        ws_gui_app->ws_gui_toobar_button_hide =
        gtk_toggle_tool_button_new_from_stock(GTK_STOCK_GOTO_FIRST);
@@ -218,8 +235,9 @@ void ws_gui_create_find_toolbar(gpointer user_data)
                          G_CALLBACK(ws_gui_search_stop),
                          ws_gui_app);
 
-       gtk_widget_set_sensitive(GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
-                                FALSE);
+       gtk_widget_set_sensitive(
+                             GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_back),
+                              FALSE);
        gtk_widget_set_sensitive(
                            GTK_WIDGET(ws_gui_app->ws_gui_toobar_button_forward),
                            FALSE);
@@ -248,32 +266,32 @@ void ws_gui_create_main_menu (gpointer user_data)
         ws_gui_app->ws_gui_menu->ws_gui_main_menu = gtk_menu_new();
 
         ws_gui_app->ws_gui_menu->ws_gui_menu_dictionaries =
-                gtk_menu_item_new_with_label(_("Dictionaries"));
+                gtk_menu_item_new_with_label(_("ws_me_dictionaries"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_bookmarks =
-                gtk_menu_item_new_with_label(_("Bookmarks"));
+                gtk_menu_item_new_with_label(_("ws_me_bookmarks"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_edit = 
-                gtk_menu_item_new_with_label(_("Edit"));
+                gtk_menu_item_new_with_label(_("ws_me_edit"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_view = 
-                gtk_menu_item_new_with_label(_("View"));
+                gtk_menu_item_new_with_label(_("ws_me_view"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_search = 
-                gtk_menu_item_new_with_label(_("Search"));
+                gtk_menu_item_new_with_label(_("ws_me_search"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_about = 
-                gtk_menu_item_new_with_label(_("About..."));
+                gtk_menu_item_new_with_label(_("ws_me_about"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_close = 
-                gtk_menu_item_new_with_label(_("Close"));
+                gtk_menu_item_new_with_label(_("ws_me_close"));
         ws_gui_app->ws_gui_menu->ws_gui_separator = 
                 gtk_separator_menu_item_new();
         ws_gui_app->ws_gui_menu->ws_gui_separator1 = 
                 gtk_separator_menu_item_new();
 
         ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict = 
-                gtk_menu_item_new_with_label(_("Load dictionary"));
+                gtk_menu_item_new_with_label(_("ws_me_dictionaries_load"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_select_dict = 
-                gtk_menu_item_new_with_label(_("Select dictionaries ..."));
+                gtk_menu_item_new_with_label(_("ws_me_dictionaries_select"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_dict = 
-                gtk_menu_item_new_with_label(_("Remove dictionaries ..."));
+                gtk_menu_item_new_with_label(_("ws_me_dictionaries_remove"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict = 
-                gtk_menu_item_new_with_label(_("Optimize dictionaries ..."));
+                gtk_menu_item_new_with_label(_("ws_me_dictionaries_optimize"));
 
         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_0,
                         ws_gui_app->ws_gui_menu->ws_gui_menu_load_dict);
@@ -285,13 +303,13 @@ void ws_gui_create_main_menu (gpointer user_data)
                         ws_gui_app->ws_gui_menu->ws_gui_menu_optimize_dict);
 
        ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark = 
-                gtk_menu_item_new_with_label(_("Open bookmarks"));
+                gtk_menu_item_new_with_label(_("ws_me_bookmarks_open"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_close_bookmark = 
-                gtk_menu_item_new_with_label(_("Close bookmarks"));
+                gtk_menu_item_new_with_label(_("ws_me_bookmarks_close"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_add_bookmark = 
-                gtk_menu_item_new_with_label(_("Add bookmark"));
+                gtk_menu_item_new_with_label(_("ws_me_bookmarks_add"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark = 
-                gtk_menu_item_new_with_label(_("Remove bookmark"));
+                gtk_menu_item_new_with_label(_("ws_me_bookmarks_remove"));
 
        gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_4,
                         ws_gui_app->ws_gui_menu->ws_gui_menu_open_bookmark);
@@ -303,11 +321,11 @@ void ws_gui_create_main_menu (gpointer user_data)
                         ws_gui_app->ws_gui_menu->ws_gui_menu_remove_bookmark);
 
        ws_gui_app->ws_gui_menu->ws_gui_menu_copy = 
-                gtk_menu_item_new_with_label(_("Copy"));
+                gtk_menu_item_new_with_label(_("ws_me_edit_copy"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_paste = 
-                gtk_menu_item_new_with_label(_("Paste"));
+                gtk_menu_item_new_with_label(_("ws_me_edit_paste"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_select_all = 
-                gtk_menu_item_new_with_label(_("Select All"));
+                gtk_menu_item_new_with_label(_("ws_me_edit_select_all"));
        gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
                        ws_gui_app->ws_gui_menu->ws_gui_menu_copy);
        gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_1,
@@ -316,13 +334,13 @@ void ws_gui_create_main_menu (gpointer user_data)
                        ws_gui_app->ws_gui_menu->ws_gui_menu_select_all);
 
        ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list = 
-                gtk_check_menu_item_new_with_label(_("Hide words list"));
+            gtk_check_menu_item_new_with_label(_("ws_me_view_hide_words_list"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_in = 
-                gtk_menu_item_new_with_label(_("Zoom in"));
+                gtk_menu_item_new_with_label(_("ws_me_view_zoom_in"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_zoom_out = 
-                gtk_menu_item_new_with_label(_("Zoom out"));
+                gtk_menu_item_new_with_label(_("ws_me_view_zoom_out"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen = 
-                gtk_check_menu_item_new_with_label(_("Full screen"));
+                gtk_check_menu_item_new_with_label(_("ws_me_view_fullscreen"));
        gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
                        ws_gui_app->ws_gui_menu->ws_gui_menu_hide_list);
        gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_2,
@@ -333,13 +351,13 @@ void ws_gui_create_main_menu (gpointer user_data)
                        ws_gui_app->ws_gui_menu->ws_gui_menu_full_screen);
 
        ws_gui_app->ws_gui_menu->ws_gui_menu_find_word = 
-                gtk_menu_item_new_with_label(_("Find"));
+                gtk_menu_item_new_with_label(_("ws_me_search_find"));
        ws_gui_app->ws_gui_menu->ws_gui_menu_find_next = 
-               gtk_menu_item_new_with_label(_("Find next"));
+               gtk_menu_item_new_with_label(_("ws_me_search_find_next"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_find_prev = 
-               gtk_menu_item_new_with_label(_("Find previous"));
+               gtk_menu_item_new_with_label(_("ws_me_search_find_prev"));
         ws_gui_app->ws_gui_menu->ws_gui_menu_stop = 
-               gtk_menu_item_new_with_label(_("Stop"));
+               gtk_menu_item_new_with_label(_("ws_me_search_stop"));
         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
                        ws_gui_app->ws_gui_menu->ws_gui_menu_find_word);
         gtk_menu_append(ws_gui_app->ws_gui_menu->ws_gui_submenu_3,
@@ -536,12 +554,13 @@ void ws_gui_create_popup_menu (gpointer user_data)
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_menu = gtk_menu_new();
        ws_gui_app->ws_gui_menu->ws_gui_popup_submenu = gtk_menu_new();
-       ws_gui_app->ws_gui_menu->ws_gui_separator = gtk_separator_menu_item_new();
+       ws_gui_app->ws_gui_menu->ws_gui_separator = 
+                                                 gtk_separator_menu_item_new();
 
        struct _GtkHTML *tmp = (struct _GtkHTML *)(ws_gui_app->ws_gui_html);
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_search = 
-                gtk_menu_item_new_with_label(_("Search"));
+                gtk_menu_item_new_with_label(_("ws_mp_search"));
        gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
                        ws_gui_app->ws_gui_menu->ws_gui_popup_search);
        gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
@@ -561,24 +580,24 @@ void ws_gui_create_popup_menu (gpointer user_data)
        }
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_copy = 
-                gtk_menu_item_new_with_label(_("Copy"));
+                gtk_menu_item_new_with_label(_("ws_mp_edit_copy"));
        gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
                        ws_gui_app->ws_gui_menu->ws_gui_popup_copy);
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_paste = 
-                gtk_menu_item_new_with_label(_("Paste"));
+                gtk_menu_item_new_with_label(_("ws_mp_edit_paste"));
        gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
                        ws_gui_app->ws_gui_menu->ws_gui_popup_paste);
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_select_all = 
-                gtk_menu_item_new_with_label(_("Select All"));
+                gtk_menu_item_new_with_label(_("ws_mp_edit_select_all"));
        gtk_menu_append((ws_gui_app->ws_gui_menu->ws_gui_popup_submenu),
                        ws_gui_app->ws_gui_menu->ws_gui_popup_select_all);
 
        gtk_widget_show_all(ws_gui_app->ws_gui_menu->ws_gui_popup_submenu);
 
                 ws_gui_app->ws_gui_menu->ws_gui_popup_edit = 
-                gtk_menu_item_new_with_label (_("Edit"));
+                gtk_menu_item_new_with_label (_("ws_mp_edit"));
        gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
                         ws_gui_app->ws_gui_menu->ws_gui_popup_edit);
 
@@ -586,12 +605,12 @@ void ws_gui_create_popup_menu (gpointer user_data)
                         ws_gui_app->ws_gui_menu->ws_gui_separator);
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in = 
-                gtk_menu_item_new_with_label (_("Zoom in"));
+                gtk_menu_item_new_with_label (_("ws_mp_zoom_in"));
        gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
                         ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_in);
 
        ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out =
-                gtk_menu_item_new_with_label (_("Zoom out"));
+                gtk_menu_item_new_with_label (_("ws_mp_zoom_out"));
        gtk_menu_append ((ws_gui_app->ws_gui_menu->ws_gui_popup_menu),
                         ws_gui_app->ws_gui_menu->ws_gui_popup_zoom_out);
 
@@ -678,7 +697,8 @@ void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
 
         checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
 
-        if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL) == TRUE)
+        if (gconf_client_dir_exists(ws_gui_app->client, 
+                                   GCONF_PATH, NULL) == TRUE)
         {
                ws_gui_app->directories = 
                        gconf_client_all_dirs(ws_gui_app->client,
@@ -692,7 +712,8 @@ void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
         }
 
         dialog1 = gtk_dialog_new ();
-        gtk_window_set_title (GTK_WINDOW (dialog1), (_("Choose dictionaries")));
+        gtk_window_set_title (GTK_WINDOW (dialog1), 
+                            (_("ws_ti_choose_dictionaries_title")));
         gtk_window_set_type_hint (GTK_WINDOW (dialog1),
                                   GDK_WINDOW_TYPE_HINT_DIALOG);
         gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
@@ -723,7 +744,9 @@ void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
                checkbutton = gtk_check_button_new_with_label(name);
                path = g_strconcat(string, "/active", NULL);
 
-               if (gconf_client_get_bool(ws_gui_app->client, path, NULL) == TRUE)
+               if (gconf_client_get_bool(ws_gui_app->client, 
+                                        path, 
+                                        NULL) == TRUE)
                {
                        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(
                                                     checkbutton),
@@ -737,17 +760,21 @@ void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
                }
 
                g_array_append_val(checkboxes, checkbutton);
-               gtk_box_pack_start (GTK_BOX (vbox1), checkbutton, FALSE, FALSE, 0);
+               gtk_box_pack_start (GTK_BOX (vbox1), 
+                                  checkbutton, 
+                                  FALSE, 
+                                  FALSE, 
+                                  0);
                gtk_widget_show (checkbutton);
        }
 
-       cancel_button = gtk_button_new_from_stock (_("cancel"));
+       cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
        gtk_widget_show (cancel_button);
        gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
                                      cancel_button,
                                      GTK_RESPONSE_CANCEL);
 
-       ok_button = gtk_button_new_from_stock (_("ok"));
+       ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
        gtk_widget_show (ok_button);
        gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
                                     ok_button,
@@ -794,7 +821,8 @@ void ws_gui_dictionary_chooser(GtkMenuItem *menuitem, gpointer user_data)
                        }
                }
 
-               ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_INFO_CONFIG_CHANGED);
+               ws_dbus_notify(ws_gui_app->dbus_data, 
+                             WS_DBUS_INFO_CONFIG_CHANGED);
                gtk_widget_destroy (dialog1);
        }
        else if (i == GTK_RESPONSE_CANCEL) 
@@ -831,7 +859,9 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
 
         checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
 
-        if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL) == TRUE)
+        if (gconf_client_dir_exists(ws_gui_app->client, 
+                                   GCONF_PATH, 
+                                   NULL) == TRUE)
         {
                 ws_gui_app->directories = 
                     gconf_client_all_dirs(ws_gui_app->client, GCONF_PATH, NULL);
@@ -848,7 +878,9 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
                 name = g_path_get_basename(string);
 
                 path = g_strconcat(string, "/optimized", NULL);
-                if (gconf_client_get_bool (ws_gui_app->client, path, NULL) == FALSE)
+                if (gconf_client_get_bool (ws_gui_app->client,
+                                          path, 
+                                          NULL) == FALSE)
                 {
                         checkbutton = gtk_check_button_new_with_label(name);
                         g_array_append_val(checkboxes, checkbutton);
@@ -861,7 +893,7 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
                                    GTK_DIALOG_DESTROY_WITH_PARENT,
                                    GTK_MESSAGE_ERROR,
                                    GTK_BUTTONS_OK,
-                                   _("There are no dictionaries to optimize"));
+                                   _("ws_ni_no_dictionaries_to_optimize"));
                gtk_widget_show_all(ws_gui_app->ws_message_dialog);
                if (gtk_dialog_run (GTK_DIALOG (
                         ws_gui_app->ws_message_dialog)) == GTK_RESPONSE_OK)
@@ -873,7 +905,7 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
        {
                 dialog1 = gtk_dialog_new ();
                 gtk_window_set_title(GTK_WINDOW (dialog1),
-                                     (_("Choose dictionaries")));
+                                     (_("ws_ti_choose_dictionaries_title")));
                 gtk_window_set_type_hint(GTK_WINDOW (dialog1),
                                          GDK_WINDOW_TYPE_HINT_DIALOG);
                 gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
@@ -906,14 +938,16 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
                                        FALSE,
                                        FALSE,
                                        0);
-                        gtk_widget_show(g_array_index(checkboxes, GtkWidget*, i));
+                        gtk_widget_show(g_array_index(checkboxes, 
+                                                     GtkWidget*, 
+                                                     i));
                 }
-                cancel_button = gtk_button_new_from_stock (_("cancel"));
+                cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
                 gtk_widget_show (cancel_button);
                 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
                                              cancel_button,
                                              GTK_RESPONSE_CANCEL);
-                ok_button = gtk_button_new_from_stock (_("ok"));
+                ok_button = gtk_button_new_from_stock (_("ws_db_ok"));
                 gtk_widget_show (ok_button);
                 gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
                                              ok_button,
@@ -937,10 +971,11 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
                                                          name,
                                                          "/optimized",
                                                          NULL);
-                                        gconf_client_set_bool(ws_gui_app->client,
-                                                               path,
-                                                               TRUE,
-                                                               NULL);
+                                        gconf_client_set_bool(
+                                                            ws_gui_app->client,
+                                                             path,
+                                                             TRUE,
+                                                             NULL);
                                 }
                                 if (gtk_toggle_button_get_active(
                                      GTK_TOGGLE_BUTTON(
@@ -949,17 +984,18 @@ void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data)
                                 {
                                         name = gtk_button_get_label(GTK_BUTTON
                                                       (g_array_index(checkboxes,
-                                                                     GtkWidget *,
+                                                                     GtkWidget*,
                                                                      i)));
                                         path=g_strconcat(GCONF_PATH,
                                                          "/",
                                                          name,
                                                          "/optimized",
                                                          NULL);
-                                        gconf_client_set_bool(ws_gui_app->client,
-                                                              path,
-                                                              FALSE,
-                                                              NULL);
+                                        gconf_client_set_bool(
+                                                            ws_gui_app->client,
+                                                             path,
+                                                             FALSE,
+                                                             NULL);
                                 }
                         }
                         ws_dbus_notify(ws_gui_app->dbus_data,
@@ -987,7 +1023,7 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
         GtkWidget *dialog;
         GtkWidget *dialog2;
 
-        dialog = gtk_file_chooser_dialog_new(_("Load dictionary"),
+        dialog = gtk_file_chooser_dialog_new(_("ws_ti_load_dictionary_title"),
                                    GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
                                    GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_OK,
                                    GTK_RESPONSE_ACCEPT,
@@ -1039,7 +1075,8 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
                                               GTK_DIALOG_DESTROY_WITH_PARENT,
                                               GTK_MESSAGE_QUESTION,
                                               GTK_BUTTONS_YES_NO,
-                _("Would you like to activate this dictionary for use from now?"));
+                       _("ws_ni_dictionaries_activation_question"));
+
                         gtk_widget_show_all(GTK_WIDGET(dialog2));
 
                         if (gtk_dialog_run (GTK_DIALOG (dialog2)) ==
@@ -1060,19 +1097,20 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
                         gtk_widget_destroy (dialog2);
                         g_free(path); 
                        path = NULL;
+
                         path = g_strconcat(GCONF_PATH,
                                            "/",
                                            tmp,
                                            "/optimized",
                                             NULL);
                         dialog2 = gtk_message_dialog_new(
-                                   GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
-                                   GTK_DIALOG_DESTROY_WITH_PARENT,
-                                   GTK_MESSAGE_QUESTION,
-                                   GTK_BUTTONS_YES_NO,
-                                   _("Would you like to optimize this dictionary to make it faster to search within?"));
-                        gtk_widget_show_all(GTK_WIDGET(dialog2));
+                               GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                               GTK_DIALOG_DESTROY_WITH_PARENT,
+                               GTK_MESSAGE_QUESTION,
+                               GTK_BUTTONS_YES_NO,
+                               _("ws_ni_dictionaries_optimalization_question"));
+
+                       gtk_widget_show_all(GTK_WIDGET(dialog2));
 
                         if (gtk_dialog_run (GTK_DIALOG (dialog2)) 
                                                             == GTK_RESPONSE_YES)
@@ -1095,14 +1133,14 @@ void ws_gui_dictionary_loader(GtkMenuItem *menuitem, gpointer user_data)
                                        WS_DBUS_INFO_CONFIG_CHANGED);
                         gtk_infoprint(GTK_WINDOW(
                                       ws_gui_app->ws_gui_hildon_window),
-                                      _("New dictionary has been added"));
+                                      _("ws_ni_dictionary_added"));
                 }
                 else
                 {
                         gtk_widget_destroy (dialog);
                         gtk_infoprint(GTK_WINDOW(
                                       ws_gui_app->ws_gui_hildon_window),
-                                      _("Wrong dictionary file"));
+                                      _("ws_ni_dictionary_wrong_file"));
                 }
 
        }
@@ -1139,7 +1177,8 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
 
         checkboxes = g_array_new (TRUE, TRUE, sizeof(GtkWidget*));
 
-        if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL) == TRUE)
+        if (gconf_client_dir_exists(ws_gui_app->client, GCONF_PATH, NULL) 
+                                                                       == TRUE)
         {
                 ws_gui_app->directories = gconf_client_all_dirs(
                                                              ws_gui_app->client,
@@ -1153,7 +1192,8 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
         }
 
         dialog1 = gtk_dialog_new ();
-        gtk_window_set_title (GTK_WINDOW (dialog1), (_("Remove dictionaries")));
+        gtk_window_set_title (GTK_WINDOW (dialog1), 
+                            (_("ws_ti_remove_dictionaries_title")));
         gtk_window_set_type_hint (GTK_WINDOW (dialog1),
                                   GDK_WINDOW_TYPE_HINT_DIALOG);
         gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
@@ -1189,16 +1229,22 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
                                     FALSE,
                                     FALSE,
                                     0);
+               
+               if (strcmp(name, "bookmarks") == 0)
+               {
+                  gtk_widget_set_sensitive(GTK_WIDGET(checkbutton), FALSE);
+               }
                 gtk_widget_show (checkbutton);
         }
 
-        cancel_button = gtk_button_new_from_stock (_("cancel"));
+        cancel_button = gtk_button_new_from_stock (_("ws_db_cancel"));
         gtk_widget_show (cancel_button);
         gtk_dialog_add_action_widget (GTK_DIALOG (dialog1),
                                       cancel_button,
                                       GTK_RESPONSE_CANCEL);
 
-        ok_button = gtk_button_new_from_stock (_("remove selected"));
+        ok_button = gtk_button_new_from_stock 
+                              (_("ws_bd_remove_dictionaries_remove_selected"));
         gtk_widget_show (ok_button);
         gtk_dialog_add_action_widget(GTK_DIALOG (dialog1),
                                      ok_button,
@@ -1224,7 +1270,8 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data)
                         } 
                  }
 
-                ws_dbus_notify(ws_gui_app->dbus_data, WS_DBUS_INFO_CONFIG_CHANGED);
+                ws_dbus_notify(ws_gui_app->dbus_data, 
+                              WS_DBUS_INFO_CONFIG_CHANGED);
                 gtk_widget_destroy (dialog1);
         }
         else if (i == GTK_RESPONSE_CANCEL) 
@@ -1248,7 +1295,7 @@ void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
         gtk_widget_set_sensitive(GTK_WIDGET
                                  (ws_gui_app->ws_gui_hildon_find_toolbar),
                                  FALSE);
-                
+
         GtkWidget *about_dialog;
         GtkWidget *dialog_vbox1;
         GtkWidget *vbox1;
@@ -1260,33 +1307,40 @@ void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
         GtkWidget *textview;
         GtkWidget *button1;
 
+       const gchar *ws_version;
+
         about_dialog = gtk_dialog_new ();
-        gtk_window_set_title (GTK_WINDOW (about_dialog), _("About"));
+        gtk_window_set_title (GTK_WINDOW (about_dialog), 
+                             _("ws_ti_about_title"));
         gtk_window_set_default_size(GTK_WINDOW (about_dialog), 350, 200);
-                
+
         dialog_vbox1 = GTK_DIALOG (about_dialog)->vbox;
         gtk_widget_show (dialog_vbox1);
-                
+
         vbox1 = gtk_vbox_new (FALSE, 0);
         gtk_widget_show (vbox1);
         gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 0);
-                
+
         image = gtk_image_new_from_file ("/usr/share/pixmaps/whitestork.png");
         gtk_box_pack_start (GTK_BOX (vbox1), image, TRUE, TRUE, 0);
-                
+
         label2 = gtk_label_new ("WhiteStork");
         ws_gui_app->p = pango_font_description_from_string("Tahoma 18");
         gtk_widget_modify_font(GTK_WIDGET(label2), ws_gui_app->p);
         gtk_label_set_pattern (GTK_LABEL(label2), "__________");
         gtk_box_pack_start (GTK_BOX (vbox1), label2, FALSE, FALSE, 5);
-                
-        label3 = gtk_label_new ("Maemo Multilingual Dictionary\nver. 0.5");
+
+       ws_version = g_strconcat("Maemo Multilingual Dictionary\nver. ",
+                               WS_VERSION, 
+                               NULL);
+        label3 = gtk_label_new_with_mnemonic (_(ws_version));
         ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
         gtk_widget_modify_font(GTK_WIDGET(label3), ws_gui_app->p);
         gtk_box_pack_start (GTK_BOX (vbox1), label3, FALSE, FALSE, 5);
         gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_CENTER);
-             
-        label4 = gtk_label_new ("Copyright 2006, ComArch S.A\nAll rights reserved");
+
+        label4 = gtk_label_new ("Copyright 2006, ComArch S.A\nAll rights" 
+                               "reserved");
         ws_gui_app->p = pango_font_description_from_string("Tahoma 12");
         gtk_widget_modify_font(GTK_WIDGET(label4), ws_gui_app->p);
         gtk_box_pack_start (GTK_BOX (vbox1), label4, FALSE, FALSE, 5);
@@ -1315,76 +1369,154 @@ void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data)
         gtk_container_add (GTK_CONTAINER (scrolledwindow), textview);
         gtk_text_buffer_set_text(
                         gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview)),
-                        "The following third party\ncomponents may be\nincluded depending \non your system configuration:\n\nD-BUS - License information:\nhttp://opensource.org/licenses/academic.php",
+                        "The following third party\ncomponents may be\nincluded"
+                       " depending \non your system configuration:\n\nD-BUS "
+                       "- License information:\nhttp://opensource.org/"
+                       "licenses/academic.php",
                         -1);
 
         button1 = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
         gtk_dialog_add_action_widget(GTK_DIALOG(about_dialog),
                                      button1,
                                      GTK_RESPONSE_CLOSE);
-        
+
         gtk_widget_show_all (GTK_WIDGET(about_dialog));
-        
+
         if (gtk_dialog_run(GTK_DIALOG(about_dialog)) == GTK_RESPONSE_CLOSE)
         {
                 gtk_widget_destroy(GTK_WIDGET(about_dialog));
         }
-                
+
         gtk_widget_set_sensitive(
                              GTK_WIDGET(ws_gui_app->ws_gui_hildon_find_toolbar),
                              TRUE);
 }
 
-/** this function creates dialog popup window (displays if user did not accept a
- license during instalation procedure) with question about license
- *
- * @param user_data - set when the signal handler was connected
- */
-GtkWidget* licence_dialog(gpointer user_data)
+void ws_gui_add_bookmark_dialog(gpointer user_data)
 {
-        WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
-        GtkWidget *license_dialog;
-                
-        GtkWidget *license_vbox1;
-        GtkWidget *scrolledwindow1;
-        GtkWidget *textview1;
-        GtkWidget *button1;
-        GtkWidget *button2;
-
-        license_dialog = gtk_dialog_new ();
-        gtk_window_set_title (GTK_WINDOW (license_dialog), _("Licence"));
-        gtk_window_set_default_size(GTK_WINDOW (license_dialog), 500, 300);
-                
-        license_vbox1 = GTK_DIALOG (license_dialog)->vbox;
-        gtk_widget_show(license_vbox1);
-                
-        scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
-        gtk_box_pack_start(GTK_BOX (license_vbox1),
-                           scrolledwindow1,
-                           TRUE,
-                           TRUE,
-                           0);
-        gtk_scrolled_window_set_shadow_type(
-                                          GTK_SCROLLED_WINDOW (scrolledwindow1),
-                                          GTK_SHADOW_IN);
-                
-        textview1 = gtk_text_view_new ();
-        ws_gui_app->p = pango_font_description_from_string("Tahoma 10");
-        gtk_widget_modify_font(GTK_WIDGET(textview1), ws_gui_app->p);
-        gtk_container_add (GTK_CONTAINER (scrolledwindow1), textview1);
-        gtk_text_buffer_set_text (gtk_text_view_get_buffer(GTK_TEXT_VIEW (textview1)), "Terms of use\n\nREAD THE TERMS OF USE CAREFULLY BEFORE INSTALALTION OF THIS SOFTWARE. BY\nINSTALALTION OF THIS SOFTWARE, YOU AGREE TO THE FOLLOWING TERMS OF USE.\n\n1. LICENSE TO USE. ComArch grants you a non-exclusive and non-transferable\nlicense for the internal use only of the accompanying software and\ndocumentation and any error corrections provided by ComArch (collectively \"Software\"), by the one user.\n\n2. RESTRICTIONS. Software is confidential and copyrighted. Title to Software\nand all associated intellectual property rights is retained by ComArch\nand/or its licensors. Unless enforcement is prohibited by applicable law,\nyou may not modify, decompile, or reverse engineer Software. You acknowledge\nthat Software is not designed, licensed or intended for use in the design,\nconstruction, operation or maintenance of any nuclear facility. Sun ComArch\ndisclaims any express or implied warranty of fitness for such uses. No\nright, title or interest in or to any trademark, service mark, logo or trade\nname of ComArch or its licensors is granted under this terms of use.\n\n3. DISCLAIMER OF WARRANTY. UNLESS SPECIFIED IN THIS AGREEMENT TERMS OF USE,\nALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING\nANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR\nNON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS\nARE HELD TO BE LEGALLY INVALID.\n\n4. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT\nWILL COMARCH OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR\nDATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE\nDAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT\nOF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF COMARCH\nHAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will\nComArch's liability to you, whether in contract, tort (including\nnegligence), or otherwise, exceed []. The foregoing limitations will apply\neven if the above stated warranty fails of its essential purpose.\n\n5. Termination. This license is effective until terminated. You may\nterminate this license at any time by destroying all\ncopies of Software.\nThis license will terminate immediately without notice from ComArch if you\nfail to comply with any provision of this license. Upon Termination, you\nmust destroy all copies of Software.\n\n6. Export Regulations. All Software and technical data delivered under this\nterms of use are subject to Polish export control laws and may be subject to\nexport or import regulations in other countries. You agree to comply\nstrictly with all such laws and regulations and acknowledge that you have\nthe responsibility to obtain such licenses to export, re-export, or import\nas may be required after delivery to you.\n\n7. Governing Law. Any action related to this license will be governed by\nPolish Law.\n\n8. Severability. If any provision of this terms of use is held to be\nunenforceable, this terms of use will remain in effect with the provision\nomitted, unless omission would frustrate the intent of the parties, in which\ncase this terms of use will immediately terminate.\n\n9. Integration. This document is the entire  agreement between you and\nComArch relating to its subject matter. It supersedes all prior or\ncontemporaneous oral or written communications, proposals, representations\nand warranties and prevails over any conflicting or additional\nterms of any\nquote, order, acknowledgment, or other communication between the parties\nrelating to its subject matter during the term of these terms of use. No\nmodification of this Agreement will be binding, unless in writing and signed\nby an authorized representative of each party.", -1);
-
-        button1 = gtk_button_new_with_label(_("Agree"));
-        gtk_dialog_add_action_widget(GTK_DIALOG (license_dialog),
-                                     button1,
-                                     GTK_RESPONSE_OK);
-
-        button2 = gtk_button_new_with_label(_("Disagree"));
-        gtk_dialog_add_action_widget(GTK_DIALOG (license_dialog),
-                                     button2,
-                                     GTK_RESPONSE_CLOSE);
 
-        gtk_widget_show_all(license_dialog);
-        return license_dialog;
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       
+       GtkWidget *dialog1;
+       GtkWidget *dialog_vbox1;
+       GtkWidget *vbox1;
+       GtkWidget *hbox1;
+       GtkWidget *entry1;
+       GtkWidget *label;
+       GtkWidget *cancelbutton1;
+       GtkWidget *okbutton1;
+       
+       dialog1 = gtk_dialog_new ();
+       gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_add_bookmark"));
+       gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
+       
+       dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
+       gtk_widget_show (dialog_vbox1);
+       
+       vbox1 = gtk_vbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
+       
+       hbox1 = gtk_hbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
+       
+       label = gtk_label_new(_("ws_ti_bookmarks_add_question"));
+       gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
+       
+       entry1 = gtk_entry_new ();
+       gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
+       gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
+       gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
+       gtk_entry_set_editable(GTK_ENTRY(entry1), TRUE);
+       
+       cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
+       gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
+                                     cancelbutton1, 
+                                     GTK_RESPONSE_OK);
+       
+       okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
+       gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
+                                     okbutton1, 
+                                     GTK_RESPONSE_CANCEL);
+       
+       gtk_widget_show_all (dialog1);
+       
+       if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
+       {
+               ws_dbus_add_bookmark(ws_gui_app->dbus_data, 
+                                    ws_gui_app->last_word, 
+                                    ws_gui_app->raw_translation->str);
+               gtk_widget_destroy(GTK_WIDGET(dialog1));
+               gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                                         _("ws_ni_bookmark_added"));
+       
+       }
+       else 
+       {
+               gtk_widget_destroy(GTK_WIDGET(dialog1));
+               gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                                         _("ws_ni_bookmark_not_added"));
+       }
+}
 
+void ws_gui_remove_bookmark_dialog(gpointer user_data)
+{
+       WSGuiApp* ws_gui_app=(WSGuiApp*)user_data;
+       
+       GtkWidget *dialog1;
+       GtkWidget *dialog_vbox1;
+       GtkWidget *vbox1;
+       GtkWidget *hbox1;
+       GtkWidget *entry1;
+       GtkWidget *label;
+       GtkWidget *cancelbutton1;
+       GtkWidget *okbutton1;
+       
+       dialog1 = gtk_dialog_new ();
+       gtk_window_set_title (GTK_WINDOW (dialog1), _("ws_ti_remove_bookmark"));
+       gtk_window_set_default_size(GTK_WINDOW (dialog1), 300, 200);
+       
+       dialog_vbox1 = GTK_DIALOG (dialog1)->vbox;
+       gtk_widget_show (dialog_vbox1);
+       
+       vbox1 = gtk_vbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (dialog_vbox1), vbox1, TRUE, TRUE, 5);
+       
+       hbox1 = gtk_hbox_new (FALSE, 0);
+       gtk_box_pack_start (GTK_BOX (vbox1), hbox1, TRUE, TRUE, 5);
+       
+       label = gtk_label_new(_("ws_ni_remove_bookmark_question"));
+       gtk_box_pack_start (GTK_BOX (hbox1), label, TRUE, TRUE, 5);
+       
+       entry1 = gtk_entry_new ();
+       gtk_box_pack_start (GTK_BOX (vbox1), entry1, TRUE, TRUE, 5);
+       gtk_entry_set_text(GTK_ENTRY(entry1), ws_gui_app->last_word);
+       gtk_entry_set_alignment (GTK_ENTRY(entry1), 0.5);
+       gtk_entry_set_editable(GTK_ENTRY(entry1), FALSE);
+       
+       cancelbutton1 = gtk_button_new_from_stock (_("ws_db_ok"));
+       gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
+                                     cancelbutton1, 
+                                     GTK_RESPONSE_OK);
+       
+       okbutton1 = gtk_button_new_from_stock (_("ws_db_cancel"));
+       gtk_dialog_add_action_widget (GTK_DIALOG (dialog1), 
+                                     okbutton1, 
+                                     GTK_RESPONSE_CANCEL);
+       
+       gtk_widget_show_all (dialog1);
+       
+       if (gtk_dialog_run(GTK_DIALOG(dialog1)) == GTK_RESPONSE_OK)
+       {
+               gtk_widget_destroy(GTK_WIDGET(dialog1));
+               ws_dbus_remove_bookmark(ws_gui_app->dbus_data, 
+                                       ws_gui_app->last_word);
+               gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                                         _("ws_ni_bookmark_removed"));
+       }
+       else 
+       {
+               gtk_widget_destroy(GTK_WIDGET(dialog1));
+               gtk_infoprint(GTK_WINDOW(ws_gui_app->ws_gui_hildon_window),
+                                         _("ws_ni_bookmark_not_removed"));
+       }
 }
diff --git a/gui/utf_test.c b/gui/utf_test.c
new file mode 100644 (file)
index 0000000..2d02b61
--- /dev/null
@@ -0,0 +1,45 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <expat.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <fcntl.h>     
+#include <unistd.h>  
+
+#define ERROR_OPENING   "Error while opening file"
+
+char* read_from_file(char* file_name) {
+       char* result;
+       int file = open(file_name,O_RDONLY);
+       if(file == -1)
+       {
+               result = (char*)malloc(strlen(ERROR_OPENING)*sizeof(char));
+               memcpy(result,ERROR_OPENING,strlen(ERROR_OPENING));
+               return result;
+       }
+
+       struct stat   file_details;
+       fstat(file,&file_details);
+       long size = (long)(file_details.st_size);
+       printf("File size: %.2f kB \t\t[%d bytes = %0.2f MB].\n",((float)size)/1024.0,(int)size,((float)size)/1024.0/1024.0);  
+
+       result = (char*)malloc(size*sizeof(char));
+       int how_many = (int)read(file, (void*)result,size);
+       if(how_many < size) {
+               printf("Error while reading file\n");
+       }
+       return result;
+}
+
+
+int main(int argc, char **argv) {
+       char*   content;
+
+       content = read_from_file("utf.txt");    
+
+       printf("\nContent of file:\n---------------------------------------------\n\"%s\"\n---------------------------------------------\n\n",content);
+
+       return 0;
+}
index d1fb93f..cf08edb 100644 (file)
@@ -34,122 +34,28 @@ Copyright 2006 ComArch S.A.
 #include <glib.h>
 //------------------------------------------------------------------------------
 
+#define _GLOBAL_FUNCTIONS_NAME_  "engine_global_functions"
+#define _GLOBAL_FUNCTIONS_       engine_global_functions
 
 //______________________________________________________________________________
 // *****************************************************************************
 //******************************************************* GLOBAL MACROS SECTION:
 //------------------------------------------------------------------------------
-/** \brief Checks if module is peaceable with concrete location.
- *
- * If user of engine module want to know if concrete module can handle concrete 
- * location, he can call <i>dict_eng_module_check()</i>and check the result 
- * of this function.
- *
- * @param module :: <b>EngineModule</b> - module engine which will be testing
- * @param location :: <b>gchar*</b> - location on wich engine will be testing
- * @return <i><b>gboolean</b></i> :: tells if location <i>location</i> can be 
- * handled by module <i>module</i>
- */
 #define         dict_eng_module_check(module,location)   \
                         ( (module).engine_check( (location) ) )
 //------------------------------------------------------------------------------
-/** \brief Get short description of engine module.
- *
- * If there is need to present to the user of end programm some information 
- * about enigne he is using, we can call dict_eng_module_get_description() and
- * print/show the result of this call.
- *
- * @param module :: <b>EngineModule</b>- module engine which description we want
- * @return <i><b>gchar*</b></i> :: there is string, decribing module engine 
- * <i>module</i>, in this pointer. User should NOT free this pointer as it 
- * points to static table of chars
- */
 #define         dict_eng_module_get_description(module)   \
                         ( (module).engine_description() )
 //------------------------------------------------------------------------------
-/** \brief Get version of engine module.
- *
- * Sometimes it could be useful to get know what version of engine module we are
- *  using. We can call this function to retrieve these informations from module.
- * Note that version information could be also placed in description of module, 
- * but here user will get only string representing version, what could be needed
- * in some situation (e.g.: if end-user will have two the same module, then 
- * programm has to decide which should be used, or ask user).
- *
- * @param module :: <b>EngineModule</b> - module engine which implementation 
- * version we want
- * @return <i><b>gchar*</b></i> :: pointer to string representing module 
- * <i>module</i>version. User should NOT free this pointer as it points to 
- * static table of chars
- */
 #define         dict_eng_module_get_version(module)   \
                         ( (module).engine_version() )
 //------------------------------------------------------------------------------
-/** \brief Get format on which working engnine module.
- *
- * If we want to know on what dictionary format works current engine module, we 
- * can call this function. As a result we will retrieve string telling us what 
- * format-based is concrete engine module (e.g. XDXF, WordNet etc.).
- *
- * @param module :: <b>EngineModule</b> - engine module which dictionary format
- * we want to get
- * @return <i><b>gchar*</b></i> :: string representing format of dictionary on 
- * which module <i>module</i> can works. User should NOT free this pointer as 
- * it points to static table of chars
- */
 #define         dict_eng_module_get_format(module)   \
-                        ( (module).engine_version() )
+                        ( (module).engine_format() )
 //------------------------------------------------------------------------------
-/** \brief Open concrete dictionary.
- *
- * This functions opens location (this could mean: filename, URL, any other way 
- * to specify concrete localization of dictionary database). To be more sure 
- * that this function will be sucefull, user can call before 
- * dict_eng_module_check() to check if this module can handle dictionary under 
- * passed location. But this do not warrant that calling 
- * dict_eng_module_create() will not fail. User should check the result of 
- * function to be sure that everything was ok.
- *
- * @param module :: <b>EngineModule</b> - engine module which should be used to 
- * open location <i>location</i>
- * @param location :: <b>gchar*</b> - location of dictionary database (file, 
- * directory, URL etc.)
- * @param flags :: <b>EngineOptimizationFlag</b> - flags defines how program 
- * shoud automaticlly use optimization methods for opened dictionary
- * @return <i><b>Engine*</b></i> :: pointer to new enigne structure; After use, 
- * if this structure will not be needed anymore, user should call 
- * dict_eng_destroy() to free memory
- * \sa EngineOptimizationFlag :|: dict_eng_module_check() :|: EngineModule :|: 
- * Engine
-*/
 #define         dict_eng_module_create(module,location,flags)   \
         ( (module).engine_create(  (location), (flags), NULL, NULL, 0.01 ) )
 //------------------------------------------------------------------------------
-/** \brief Open concrete dictionary - define handler for signal of progress
- *
- * This functions is similiar to dict_eng_module_create(module,location,flags).
- * In addition to it, this function get additional parameters, defining how
- * engine should "inform" the user about progress of eventuall caching proccess.
- *
- * @param module :: <b>EngineModule</b> - engine module which should be used to 
- * open location <i>location</i>
- * @param location :: <b>gchar*</b> - location of dictionary database (file, 
- * directory, URL etc.)
- * @param flags :: <b>EngineOptimizationFlag</b> - flags defines how program 
- * shoud automaticlly use optimization methods for opened dictionary
- * @param progress_handler :: <b>cb_progress</b> - handler which will be called 
- * from time to time, to give to the user any response about caching progress
- * @param progress_data :: <b>gpointer</b> - pointer to data which will be given
- * as a user_data argument for progress_data function during its calling
- * @param seed :: <b>gdouble</b> - defines after how big step (in percentage)
- * in progress of caching, engine send new signal - call progress_handler with
- * actual value of progress
- * @return <i><b>Engine*</b></i> :: pointer to new enigne structure; After use, 
- * if this structure will not be needed anymore, user should call 
- * dict_eng_destroy() to free memory
- * \sa EngineOptimizationFlag :|: dict_eng_module_check() :|: EngineModule :|: 
- * Engine :|: cb_progress
- */
 #define         dict_eng_module_create_ext(module,                      \
                                            location,                    \
                                            flags,                       \
@@ -176,192 +82,45 @@ Copyright 2006 ComArch S.A.
                                                               (val)            \
                                                             ))
 //------------------------------------------------------------------------------
-
 #define         dict_eng_set_auto_free(engine, state) ( \
                         (engine) -> engine_set_auto_free( (engine), (state) )
 //------------------------------------------------------------------------------
-/** \brief Activate optimization mechanizms for concrete engine.
- *
- * Every engine could have some optimization methods. By calling this function 
- * we enabled this option. For the user of engine it is not important what kind
- * of optimization is used in current engine, how does it work etc. It should 
- * be opaque for engine's users.
- *  
- * @param engine :: <b>Engine*</b> - pointer to engine which should optimized
- * @return <i><b>void</b></i> :: nothing. This function only take a chance to 
- * make engine working faster, but it is not said that every step 
- * will be succesful. But even if not - engine has to work properly.
- * \sa dict_eng_module_create() :|: dict_eng_is_optimized() :|: Engine
- */
 #define         dict_eng_optimize(engine)  \
                         ((engine) -> engine_optimize( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Checks if current engine has activated optimization.
- *
- * User can call this function to get know if concrete engine has enabled 
- * optimization. Optimization can be activated by calling dict_eng_optimize() 
- * or passing ENGINE_CREATE or ENGINE_REFRESH flags to dict_eng_module_create()
- * while opening concrete dictionary. 
- *  
- * @param engine :: <b>Engine*</b> - pointer to engine which should be checked 
- * if is optimized now
- * @return <i><b>gboolean</b></i> :: nothing. This function only take a chance 
- * to make engine working faster, but it is not said that every step 
- * will be succesful
- * \sa dict_eng_optimize() :|: Engine :|: EngineOptimizationFlag
- */
 #define         dict_eng_is_optimized( engine )  \
                         ((engine) -> engine_is_optimized( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief To get know from what location was created current dictionary.
- *
- * If user of engine want to get know from what locatione exactly was created 
- * concrete engine, he could call this function. It returns string, most likely 
- * the same as the one passed earlier to dict_eng_module_create() function 
- * as a <i>location</i> argument.
- *  
- * @param engine :: <b>Engine*</b> - dictionary from which we want to get 
- * location 
- * @return <i><b>gchar*</b></i> :: pointer to chars, from which concrete 
- * dictionary was created
- * \sa dict_eng_module_create()
- */
 #define         dict_eng_get_location(engine)    \
                         ((engine) -> engine_location( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Tells if last operation was sucesfull.
- *
- * If user want to be sure that everything was ok, during last operation 
- * (it has finished with success), he has to check if dict_eng_get_last_status()
- * is equal to ENGINE_NO_ERROR. If not, he can also find the reason 
- * why operation failed.
- * @param engine :: <b>Engine*</b> - dictionary which last operation's returned 
- * code we want to get
- * @return <i><b>EngineStatus</b></i> :: finish code of last operation
- * \sa EngineStatus :|: dict_eng_state_message()
- */
 #define         dict_eng_get_last_status(engine)    \
                         ((engine) -> engine_error( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Translate pure state code to meaningfull message.
- *
- * If there was a error during engine was working, we can present to the user 
- * the reason for this error in meaningfull form.
- *
- * @param error :: <b>EngineState</b> - code which we want to translate
- * @return <i><b>gchar*</b></i> :: message describing concrete error code
- * \sa EngineStatus :|: dict_eng_state_message()
- */
-#define         dict_eng_state_message(error)     \
+#define         dict_eng_status_message(error)     \
                         ((engine) -> engine_error_message( (error) ))
 //------------------------------------------------------------------------------
-/** \brief Destroy gently and completly current dictionary.
- *
- * When user do not need anymore concrete dictionary, he must destroy it to 
- * free memory allocated by this dictionary. It will close avery opened file 
- * descriptor, free any additional memory block allocated while engine was 
- * working etc. User are not allowed to call free() on dictionary without 
- * calling before dict_eng_destroy().
- *  
- * @param engine :: <b>Engine*</b> - pointer to dictionary which is not
- * needed anymore
- * @return <i><b>void</b></i> :: nothing. This function should work properly,
- * and free any resources which arelady are in use by current dictionary.
- * \sa dict_eng_module_create() :|: Engine
- */
+
+
+//------------------------------------------------------------------------------
 #define         dict_eng_destroy(engine)    \
                         ((engine) -> engine_close( (engine) ))
 //------------------------------------------------------------------------------
-/** \brief Start searching for words list.
- *
- * This function starts searching for words list. User should set before 
- * callback for ENGINE_WORD_LIST_SIGNAL, to be able to retrieve words list, 
- * because this function do not return any value.
- *  
- * @param engine :: <b>Engine*</b> - pointer to dictionary in which we 
- * are looking for words matching to pattern
- * @param pattern :: <b>gchar*</b> - string representing pattern to which 
- * returned word should be matching
- * @return <i><b>void</b></i> :: nothing. Result of searching can be retrieved 
- * by callback for signal ENGINE_WORD_LIST_SIGNAL
- * \sa dict_eng_search_word_translation() :|: 
- * dict_eng_search_word_translation_extended() :|: dict_eng_set_callback() :|: 
- * ENGINE_WORD_LIST_SIGNAL
- */
 #define         dict_eng_search_word_list(engine,pattern)    \
                         ((engine) -> engine_search_word_list( (engine),        \
                                                               (pattern)        \
                                                             ))
 //------------------------------------------------------------------------------
-/** \brief Start searching for word translation in dictionary.
- *
- * Start searching for translation of word. To be able to retrieve translation 
- * user should use callback for ENGINE_WORD_TRANSLATION_SIGNAL signal.
- *  
- * @param engine :: <b>Engine*</b> - dictionary in which we want find word's 
- * translation
- * @param word :: <b>gchar*</b> - string representing word which translation 
- * we are looking for
- * @return <i><b>void</b></i> :: nothing. Result of searching can be retrieved 
- * by callback for signal ENGINE_WORD_TRANSLATION_SIGNAL
- * \sa dict_eng_search_word_list() :|: 
- * dict_eng_search_word_translation_extended() :|: dict_eng_set_callback() :|: 
- * ENGINE_WORD_TRANSLATION_SIGNAL
- */
 #define         dict_eng_search_word_translation(engine,word)    \
                         ((engine) -> engine_search_word_translation( (engine), \
                                                                      (word)    \
                                                                    ))
 //------------------------------------------------------------------------------
-/** \brief Start searching for extended word translation in dictionary.
- *
- * Start searching for extended  translation of word. To be able to retrieve 
- * translation user should use callback for ENGINE_WORD_TRANSLATION_SIGNAL 
- * signal. Extended means that retrieved translation's string could be some more
- * than plain text (e.g. HTML, Image, etc.). User of engine should know what 
- * kind of data will retrieve ofter calling this method.
- *
- * \todo This option are in projecting phase. In the future callback for 
- * ENGINE_WORD_TRANSLATION_SIGNAL should take parameter <i>gpointer</i> than 
- * <i>gchar*</i> to make possible for user of engine to retrieve data different 
- * than gchar*. There shold be also some additional function letting know user 
- * what kind of data he will retrieve.
- *  
- * @param engine :: <b>Engine*</b> - dictionary in which we want find word's 
- * translation
- * @param word :: <b>gchar*</b> - string representing word which translation 
- * we are looking for
- * @return <i><b>void</b></i> :: nothing. Result of searching can be retrieved 
- * by callback for signal ENGINE_WORD_TRANSLATION_SIGNAL
- * \sa dict_eng_search_word_list() :|: dict_eng_search_word_translation() :|: 
- * dict_eng_set_callback() :|: ENGINE_WORD_TRANSLATION_SIGNAL
- */
 #define         dict_eng_search_word_translation_extended(engine,word)   \
                 ((engine) -> engine_search_word_translation_extended((engine), \
                                                                      (pattern) \
                                                                      ))
 //------------------------------------------------------------------------------
-/** \brief Setting any callback for current dictionary.
- *
- * As long as functions which search for words list or translation do not 
- * return any value, user has to set callback which will be called after 
- * searching end. This make easy calling these functions from other proccess, 
- * threads etc. This function sets callbacks for every signal.
- *  
- * @param engine :: <b>Engine*</b> - dictionary for which we want set some
- * callback
- * @param signal :: <b>gchar*</b> - string representing for what signal we want
- * to set callback
- * @param c_handler :: <b>gpointer</b> - pointer to function which will be 
- * called after signal <i>signal</i> will occured
- * @param data :: <b>gpointer</b> - pointer to user data, which will be always 
- * passed to callback <i>c_handler</i> for signal <i>signal</i>
- * as a last argument
- * @return <i><b>gpointer</b></i> :: pointer to previous callback; if this 
- * callbacks was not set yet, it returns NULL
- * \sa cb_word_list :|: cb_word_translation :|:  ENGINE_WORD_LIST_SIGNAL :|: 
- * ENGINE_WORD_TRANSLATION_SIGNAL
- */
 #define         dict_eng_set_callback(engine,signal,c_handler,data)     \
                         ((engine) -> engine_set_callback( (engine),     \
                                                           (signal),     \
@@ -369,104 +128,60 @@ Copyright 2006 ComArch S.A.
                                                           (data)        \
                                                         ))
 //------------------------------------------------------------------------------
+#define         dict_eng_add_word(engine,word,tran)    \
+                        ((engine) -> engine_add_word( (engine), \
+                                                       (word),   \
+                                                       (tran) \
+                                                     ))
+//------------------------------------------------------------------------------
+#define         dict_eng_remove_word(engine,word)    \
+                        ((engine) -> engine_remove_word( (engine), \
+                                                          (word)   \
+                                                        ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_lang_from(engine)    \
+                        ((engine) -> engine_get_lang_from( (engine) ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_lang_to(engine)    \
+                        ((engine) -> engine_get_lang_to( (engine) ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_title(engine)    \
+                        ((engine) -> engine_get_title( (engine) ))
+//------------------------------------------------------------------------------
+#define         dict_eng_get_icon_path(engine)    \
+                        ((engine) -> engine_get_icon_path( (engine) ))
+//------------------------------------------------------------------------------
+
 
 
 //______________________________________________________________________________
 // *****************************************************************************
 //************************************ SIGNALS DEFINITION FOR CALLBACKS SECTION:
 //------------------------------------------------------------------------------
-/** \brief Signal definition for callback called when word list was found.
- *
- * ENGINE_WORD_LIST_SIGNAL defines name for signal passed to 
- * dict_eng_set_callback() function as a signal parameter. Function set 
- * to handle this signal should be called from dict_eng_search_word_list() only
- * and have cb_word_list type.
- * <b>NOTE:</b> programmers must not use value of ENGINE_WORD_LIST_SIGNAL 
- * directly!
- * \sa cb_word_list :|: dict_eng_set_callback() :|: dict_eng_search_word_list() 
- * :|: ENGINE_WORD_TRANSLATION_SIGNAL
- */
-#define ENGINE_WORD_LIST_SIGNAL         "on_word_list_found"
-//------------------------------------------------------------------------------
-/** \brief Signal definition for callback called when word trans. was found.
- *
- * ENGINE_WORD_TRANSLATION_SIGNAL defines name for signal passed to 
- * dict_eng_set_callback() function as a signal parameter. Function set 
- * to handle this signal should be called from 
- * dict_eng_search_word_translation() and  
- * dict_eng_search_word_translation_extended() only and have cb_word_translation.
- * <b>NOTE:</b> programmers must not use value of ENGINE_WORD_LIST_SIGNAL 
- * directly!
- * \sa cb_word_translation :|: dict_eng_set_callback() :|: 
- * dict_eng_search_word_translation() :|: ENGINE_WORD_LIST_SIGNAL
- */
-#define ENGINE_WORD_TRANSLATION_SIGNAL  "on_word_translation_found"
-//------------------------------------------------------------------------------
-#define ENGINE_PROGRESS_OPTIMIZING_SIGNAL "on_progress_optimizing"
+#define ENGINE_WORD_LIST_SIGNAL                 "on_word_list_found"
+//------------------------------------------------------------------------------
+#define ENGINE_WORD_TRANSLATION_SIGNAL          "on_word_translation_found"
+//------------------------------------------------------------------------------
+#define ENGINE_PROGRESS_OPTIMIZING_SIGNAL       "on_progress_optimizing"
 //------------------------------------------------------------------------------
-
 
 //______________________________________________________________________________
 // *****************************************************************************
 //************************************************** DEFINITIONS OF ENUMS TYPES:
 //------------------------------------------------------------------------------
-/** \brief Codes of flags used to auto optimizing dictionary file.
- * 
- * - Enum type for flags used as a flags parameter for dict_eng_module_create() 
- * function.
- */
 typedef enum
 {
-        /**
-         * :: flags says thatoptimization (any methodsof optimalization) should 
-         * be enabled. If optimization methods needs to make some files and 
-         * these files exists, enigne will just use it (do not refresh).
-         */
         ENGINE_CREATE = 0, 
-        /**
-         * :: flags says that for this particular dictionary programm should 
-         * disable optimization.
-         */
         ENGINE_NO,
-        /**
-         * :: the same flags as ENGINE_CREATE, but tells 
-         * dict_eng_module_create() function that even if file (or any 
-         * resources) for optimizatione methods exists, they should be 
-         * recreated/refreshed.
-         */
         ENGINE_REFRESH 
 } EngineOptimizationFlag;
 //------------------------------------------------------------------------------
-/** \brief Codes of possible errors which can occured while engine is working.
- * 
- * - Enum type for errors' codes. One of this code is always in last error 
- * variable (variable 'last error' is invisible for programmers - they should 
- * use function engine_error() and optionally engine_error_message() to get know
- * what kind of error occured).
- */
 typedef enum
 {
-        /**
-         * :: there was no error - last action successed
-         */
         ENGINE_NO_ERROR = 0,
-        /**
-         * :: file, which engine tried to read, has wrong format or 
-         * it is corrupted.
-         */
         ENGINE_WRONG_FILE,
-        /**
-         * :: user do not have permission to read/open file, which engine tried
-         * to open/read.
-         */
         ENGINE_COULDNT_READ,
-        /**
-         * :: file, on which engine tried to operate, do not exist
-         */
         ENGINE_NO_FILE,     
-        /**
-         * :: while engine was working, "Out Of Memory" error occured
-         */
         ENGINE_OUT_OF_MEMORY
 }
 EngineStatus;
@@ -477,417 +192,84 @@ EngineStatus;
 // *****************************************************************************
 //********************************************* DEFINITIONS OF CALLBACK'S TYPES:
 //------------------------------------------------------------------------------
-/** \brief Type of callback functions for retrieving word list.
- * 
- * Function which is set by dict_eng_set_callback() to signal 
- * ENGINE_WORD_LIST_SIGNAL should be exactly this type.
- *
- * @param list :: <b>GArray*</b> - there will be all found words in this array
- * @param pattern :: <b>gchar*</b> - pattern to which we have been looking for 
- *      word lists
- * @param error :: <b>EngineStatus</b> - error code; if everything was ok it is 
- *      ENGINE_NO_ERROR
- * @param user_data :: <b>gpointer</b> - data set by user to be passing to each 
- *      callback for ENGINE_WORD_LIST_SIGNAL signal
- */
 typedef void (*cb_word_list)(GArray* list,
                              gchar* pattern,
                              gpointer user_data,
                              EngineStatus error);
 //------------------------------------------------------------------------------
-/** \brief Type of callback functions for retrieving word's translation.
- * 
- * Function which is set by dict_eng_set_callback() to signal 
- * ENGINE_WORD_TRANSLATION_SIGNAL should be exactly this type.
- *
- * @param translation :: <b>gchar*</b> - translation of word <i>word</i>
- * @param word :: <b>gchar*</b> - word which translation we already retrieved
- * @param error :: <b>EngineStatus</b> - error code; if everything was ok it is 
- *      ENGINE_NO_ERROR
- * @param user_data :: <b>gpointer</b> - data set by user to be passing to each 
- *      callback for ENGINE_WORD_TRANSLATION_SIGNAL signal
- */
 typedef void (*cb_word_translation)(gchar* translation,
                                     gchar* word,
                                     gpointer user_data,
                                     EngineStatus error);
 //------------------------------------------------------------------------------
-/** \brief Type of callback functions for updating progress bar.
- * 
- * Function which is set by dict_eng_set_callback() to signal 
- * ENGINE_PROGRESS_OPTIMIZING_SIGNAL should be exactly this type.
- *
- * @param value :: <b>double</b> - current progres of process [0.0 - 1.0]
- * @param user_data :: <b>gpointer</b> - data set by user to be passing to each 
- *      callback for ENGINE_PROGRESS_OPTIMIZING_SIGNAL signal
- * @param error :: <b>EngineStatus</b> - error code; if everything is ok it has 
- *      ENGINE_NO_ERROR value
- */
 typedef void (*cb_progress)(gdouble value,
                             gpointer user_data,
                             EngineStatus error);
 //------------------------------------------------------------------------------
 
-           
-//______________________________________________________________________________
-// *****************************************************************************
-//**************************************** DEFINITIONS OF BASIC FUNCTIONS TYPES:
 //------------------------------------------------------------------------------
+struct _Engine;
 typedef struct _Engine Engine;
-/** \brief Type of function getting some chars from engine.
- *
- * Function of this type should be used for functions which intention is to get 
- * some string from concrete dictionary.
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @return <i><b>gchar*</b></i> :: chars which represents some information 
- *      depends on concrete functions (e.g engine path etc.)
- */
-typedef gchar*   (*getting_char)(Engine* engine);
-//------------------------------------------------------------------------------
-/** \brief Type of function getting boolean statement from engine.
- *
- * Function of this type should be used for functions which intention is to get 
- * boolean statement from concrete dictionary (e.g. to get know if engine has 
- * cache file - is optimized). 
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions
- *      has to work
- * @return <i><b>gboolean</b></i> :: gboolean statement which gives programmers 
- *      some information about state of dictionary/engine
- */
-typedef gboolean (*getting_bool)(Engine* engine);
-//------------------------------------------------------------------------------
-/** \brief Type of function which hasn't got to return any value.
- *
- * Function of this type should be used for functions which intention is only 
- * to do something on concrete dictionary (e.g. to make cache file etc).
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @return nothing. Functions of this type should only perform some action - 
- *      there is no result
- */
-typedef void     (*doing_only)(Engine* engine);
-//------------------------------------------------------------------------------
-/** \brief Type of function which can find words list from dictionary.
- * 
- * Function of this type should be used as a function for searching words list 
- * matching to pattern.
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @param pattern :: <i>gchar*</i> - pointer to chars which describes pattern 
- *      for searching words
- * @return nothing. This function do not return anything - result should be 
- *      retrieve by callbacks 
- */
-typedef void     (*searching_word_list)(Engine* engine, gchar* pattern); 
-//------------------------------------------------------------------------------
-/** \brief Type of function which can find word's translation from dictionary.
- * 
- * Functions of this type should be used as a function for searching word 
- * translation in concrete dictionary.
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @param word :: <i>gchar*</i> - pointer to chars which tells what word's 
- *      translation we are looking for
- * @return nothing. This function do not return anything - result should be 
- *      retrieve by callback
- */
-typedef void     (*searching_word_translation)(Engine* engine, gchar* word);
-//------------------------------------------------------------------------------
-/** \brief Type of function which can trans. error code to descriptive message.
- * 
- * Functions of this type should be used as <i>translator</i> from error code 
- * to meaningful message.
- *
- * @param error :: <i>EngineStatus</i> - error to which we want get description
- * @return <i><b>gchar*</b></i> :: chars which describes us what kind of error 
- * occured (e.g. "Dictionary file has wrong file format or it is corrupted.")
- */
-typedef gchar*   (*error_to_message)(EngineStatus error);
-//------------------------------------------------------------------------------
-/** \brief Type of function which should be used to set callbacks for signals.
- * 
- * Functions of this type should be used as a <i>setter</i> for new callback 
- * functions
- *
- * @param engine :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @param signal  :: <i>gchars*</i> - pointer to chars which tell us what kind 
- *      of event should new_functions handle (e.g. "word_list_found", 
- *      "translation_found" etc.)
- * @param c_handler :: <i>gpointer</i> - new callback function
- * @param user_data :: <i>gpointer</i> - pointer do structure, which should be 
- *      passed as a last argument when calling new mounted callback
- * @return <i><b>gpointer</b></i> :: gpointer to previous callback. If NULL 
- *      there could be some error so programmers should check by engine_error() 
- *      function if there was some (if NULL and engine_error() return 
- *      ENGINE_NO_ERROR that means that this callback was unused before).
- * \sa ENGINE_WORD_LIST_SIGNAL :|: ENGINE_WORD_TRANSLATION_SIGNAL :|: 
- * dict_eng_set_callback() :|: cb_word_list :|: cb_word_translation
- */
-typedef gpointer (*setting_callbacks)(Engine* engine, 
-                                      gchar* signal, 
-                                      gpointer c_handler, 
-                                      gpointer user_data);
-//------------------------------------------------------------------------------
-/** \brief Type of function which can get some int value from dictionary.
- * 
- * Functions of this type should be used if programmer want to get some int 
- * value from dictionary.
- *
- * @param enigne :: <i>Engine*</i> - pointer to engine on which this functions 
- *      has to work
- * @return <i><b>gint</b></i> :: int value which user wanted to get from 
- *      dictionary
- */
-typedef gint (*getting_int)(Engine* engine);
-//------------------------------------------------------------------------------
-typedef EngineStatus (*getting_status)(Engine* engine);
-//------------------------------------------------------------------------------
-typedef void (*setting_progress_seed)(Engine* engine,
-                                      gchar* signal,
-                                      gdouble seed);
-//------------------------------------------------------------------------------
 
-
-//______________________________________________________________________________
-// *****************************************************************************
-//*********************************** DEFINITIONS OF ADDITIONAL FUNCTIONS TYPES:
-//------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * Functions of this type should be used to check if dictionary in location 
- * could be handled by this engine.
- *
- * @param location :: <i>gchar*</i> - chars which describe location of 
- *      dictionary to check
- * @return <i><b>gboolean</i></b> :: statement telling us if this module could
- *      or could not handle dictionary under location.
- */
-typedef gboolean (*checking_compatibiliti)(gchar* location);
-//------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * Functions of this type should be used to get some descriptions from 
- * engine/module. Information retrievs by this kind of functions are global for
- * module (e.g: description of handles fromat, description of module etc.).
- *
- * @return <i><b>gchar*</i></b> :: chars which we wanted
- */
-typedef gchar*   (*getting_chars_engine)(void);
-//------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * Functions of this type should be used to opening dictionary. 
- * @param location :: <i>gchar*</i> - chars which describe where is the 
- *      dictionary which we want to open
- * @param flags :: <i>EngineOptimizationFlag</i> - flags to initialize/use 
- *      optimization methods for opening dictionary.
- * @return <i><b>gpointer</i></b> ::pointer to opened Engine. If NULL there was
- *      some error - programmers should check error type by calling 
- *      engine_error() function.
- */
-typedef Engine*  (*creating_engine)(gchar* location,
-                                    EngineOptimizationFlag flags,
-                                    cb_progress progress_handler,
-                                    gpointer progress_data,
-                                    gdouble seed);
-//------------------------------------------------------------------------------
-/** \brief General dictionary structure.
- *  
- * This structure contains every data which are needed to make dictionary 
- * working. Data of dictionary are invisible for user of finnal module. User can
- * operate on dictionary with functions to which there are pointers in this 
- * structure also. engine_data is for module programmer use only. Programmer of 
- * module can put there any data he want. He should not give end user any 
- * information about engine_data structure.
- */
 struct _Engine
 {
-        void (*engine_set_auto_free)(Engine* engine, gboolean state);
-
-
-        /** \brief Getting location of dictionary.
-        *
-        * User can use this function if want to get location of concrete 
-        * dictionary.
-        * \sa getting_char
-        */
-        getting_char           engine_location;
-
-        /** \brief Getting information if this dictionary is cached.
-        *
-        * User can use this function if want to know is dictionary cached 
-        * actually.
-        * \sa getting_bool
-        */
-        getting_bool           engine_is_optimized;
-
-        /** \brief Making cache file for dictionary.
-        *
-        * User can use this function if want to make cache file for concrete 
-        * dictionary.
-        * \sa doing_only
-        */
-        doing_only                engine_optimize;
-
-        /** \brief Searching word list.
-        *
-        * User call this function to start searching for word list.
-        * \sa searching_word_list
-        */
-        searching_word_list        engine_search_word_list;
-
-        /** \brief Searching word's translation.
-        *
-        * User call this function to start searching for word's translation.
-        * \sa searching_word_translation
-        */
-        searching_word_translation   engine_search_word_translation;
-
-        /** \brief Searching word's translation (preformatted HTML).
-        *
-        * User call this function to start searching for word's translation. 
-        * It differs from engine_search_word_translation that it returns 
-        * preformatted string (HTML format).
-        * \sa searching_word_translation
-        */
-        searching_word_translation   engine_search_word_translation_extended;        
-
-        /** \brief Close dictionary.
-        *
-        * User call this if work with dictionary is finished and there is no 
-        * need to keep this further working.
-        * \sa doing_only
-        */
-        doing_only                engine_close;
-
-        /** \brief Functions return laste error which occured in dictionary.
-        *
-        * Programmer should use this function after each action to check if 
-        * there was not any errors.
-        * \sa getting_int
-        */
-        getting_status                  engine_error;
-
-        /** \brief <i>Tranlsate</i> error code to meaningful message.
-        *
-        * Programmer can call this function if want to get meaningful message 
-        * describes concrete error code
-        * \sa error_to_message
-        */
-        error_to_message            engine_error_message;
-
-        /** \brief Function to setting any callback for this dictionary.
-        * 
-        * This function can be used to set some callback function for concrete 
-        * dictionary. Programmer should always set callback "word_list_found" 
-        * and "word_translation_found". Developers of new modules should also 
-        * define for what kind of event end user will be able to set callback.
-        */
-        setting_callbacks     engine_set_callback;
-
-
-        setting_progress_seed   engine_set_progress_seed;
-
-        /** \brief Module's private data area. Used only by module programmer.
-        * 
-        * Here module programmer should keep their own data (e.g. some data for 
-        * searching optimalization etc.). Programmer whose only using module, 
-        * should not use engine_data at all.
-        */
+        // 0.1 API specification
+        void            (*engine_set_auto_free)(Engine* engine,
+                                                gboolean state);
+        gchar*          (*engine_location)(Engine* engine);       
+        gboolean        (*engine_is_optimized)(Engine* engine);
+        void            (*engine_optimize)(Engine* engine);
+        void            (*engine_search_word_list)(Engine* engine,
+                                                   gchar* pattern);
+        void            (*engine_search_word_translation)(Engine* engine,
+                                                          gchar* word);
+        void            (*engine_close)(Engine* engine);
+        // engine status
+        EngineStatus    (*engine_status)(Engine* engine);
+        gchar*          (*engine_error_message)(EngineStatus error);
+        // callbacks
+        gpointer        (*engine_set_callback)(Engine* engine, 
+                                               gchar* signal, 
+                                               gpointer c_handler, 
+                                               gpointer user_data);
+        void            (*engine_set_progress_seed)(Engine* engine,
+                                                    gchar* signal,
+                                                    gdouble seed);
+        // 0.2 API specification's functions
+        gboolean        (*engine_add_word)(Engine* engine,
+                                           gchar*  word,
+                                           gchar*  translation);
+        gboolean        (*engine_remove_word)(Engine* engine,
+                                              gchar*  word);        
+        gchar*          (*engine_get_lang_from)(Engine* engine);
+        gchar*          (*engine_get_lang_to)(Engine* engine);
+        gchar*          (*engine_get_title)(Engine* engine);
+        gchar*          (*engine_get_icon_path)(Engine* engine);
+
+        // dictionary independent data
         gpointer engine_data;
 };
 //------------------------------------------------------------------------------
-/** \brief Structure that has pointers to helpfull functions for programmer.
- *
- * There are pointers to some functions in this structure. Programmer whom using 
- * module could use it to get some useful informationa about module (e.g: format
- * handled by module, it's version etc.). The most important functions are: \n
- * engine_check() - to check if this module can handle concrete location \n
- * engine_open() - to open location
- */
 typedef struct  {
-        
-        /** \brief Function to check compatibility beetwen module and location.
-        *    
-        * Helps programmer to check if this concrete module was designed to work
-        * with dictionary under location passed as a argument to this function. 
-        * \sa checking_compatibiliti
-        */
-        checking_compatibiliti          engine_check;      
-
-        /** \brief Function to get some short description of module/engine.
-         *      
-         * This function returns short description of module, to make possible 
-         * displaying for end user what kind of module he is using.
-         * \sa getting_chars_engine
-         */  
-        getting_chars_engine       engine_description;
-
-        /** \brief Function to get module's format.
-        *    
-        * This function returns format of dictionaries which this module handles
-        * \sa getting_chars_engine
-        */
-        getting_chars_engine       engine_format;
-
-        /** \brief Function to get version of module.
-        *    
-        *  This functions return version of this module/engine.
-        * \sa getting_chars_engine
-        */
-        getting_chars_engine       engine_version;
-
-        /** \brief Function to open/create new dictionary.
-        *    
-        * This functions allow programmer to open/create module from concrete 
-        * location.
-        * \sa creating_engine
-        */
-        creating_engine                 engine_create;
+        gboolean (*engine_check)(gchar* location); 
+        gchar*   (*engine_description)(void);     
+        gchar*   (*engine_format)(void);
+        gchar*   (*engine_version)(void);
+        Engine*  (*engine_create)(gchar* location,
+                                   EngineOptimizationFlag flags,
+                                   cb_progress progress_handler,
+                                   gpointer progress_data,
+                                   gdouble seed);
 } 
 EngineModule;
 //------------------------------------------------------------------------------
-/** \brief Additional functions type.
- * 
- * There should be in each module exactly one function of this type named: 
- * engine_global_functions. This function makes easier to load dynamically 
- * module. For doing this then you need only to mapped only this one function
- * and the rest will be avaiable from returned structure EngineModule.
- *
- * @return  <i><b>EngineModule</b></i> :: structure EngineModule from which you 
- *      can call next functions
- * \sa engine_global_functions()
- */
 typedef EngineModule (*getting_additional)(void);
 //------------------------------------------------------------------------------
-/** \brief Function that helps programmer to load basic functions from module. 
- *
- * This function helps programmers to dynamically load module to their 
- * programms. Only this function needed to be mapped from *.so file. Rest of 
- * function are in returned structure EngineModule. User of module could mapped 
- * himslef others functions from concrete modules, but it is not recommended as 
- * far as developers of module could, in fact, give different names for 
- * functions. In structure EngineModule names will be always the same. \n
- * NOTE for module developer: this function should be always defined in your
- * code, to help next programmers whose will be using yours module in theirs own
- * programms.
- * 
- * @return <i><b>EngineModule</b></i> :: Structure EngineModule which members 
- *      are functions for basic operations for this module
- */
 extern EngineModule engine_global_functions(void);
 //------------------------------------------------------------------------------
 
           
 #ifdef __cplusplus
 }                     
-#endif     // END OF:    extern "C" {
-
-#endif     // END OF:    _DICTIONARY_ENGINE_BASE
+#endif
+#endif /* _DICTIONARY_ENGINE_BASE */
diff --git a/include/engine_bookmark.h b/include/engine_bookmark.h
new file mode 100644 (file)
index 0000000..03c5da8
--- /dev/null
@@ -0,0 +1,210 @@
+/*******************************************************************************
+This file is part of WhiteStork.
+
+WhiteStork 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.
+
+WhiteStork is distributed in the hope that 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 WhiteStork; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Copyright 2006 ComArch S.A.
+*******************************************************************************/
+#ifndef _DICTIONARY_ENGINE_BOOKMARK
+#define _DICTIONARY_ENGINE_BOOKMARK
+
+#ifdef __cplusplus
+        extern "C" {
+#endif
+
+//______________________________________________________________________________
+// *****************************************************************************
+//************************************************************* HEADERS SECTION:
+//------------------------------------------------------------------------------
+// headers with unix types/functions - only for timers
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+#include <fcntl.h>     
+#include <unistd.h>   
+//------------------------------------------------------------------------------
+// header with GLIB definitions/functions/types
+#include <glib.h>
+//------------------------------------------------------------------------------
+// header wit engine API
+#include "dictionary_engine.h"
+//------------------------------------------------------------------------------
+// header wit sqlite 2.x API
+#include <sqlite.h>
+//------------------------------------------------------------------------------
+
+//______________________________________________________________________________
+// *****************************************************************************
+//********************************************************* DEFINITIONS SECTION:
+//------------------------------------------------------------------------------
+// definitions for timer function - flag telling if we want to start or stop
+// timing
+#define TIMER_START     TRUE
+#define TIMER_STOP      FALSE
+//------------------------------------------------------------------------------
+// definitions of version and format which engine handles
+static const gchar* DIC_ENG_VERSION = "0.1"; 
+static const gchar* DIC_ENG_FORMAT = "Users' Bookmarks";
+static const gchar* DIC_ENG_DESCRIPTION = "This module handles users' bookmarks.";
+                           
+//------------------------------------------------------------------------------
+// macro for "printing" gboolean statement - "TRUE" or "FALSE"
+#define PRINT_STATE(state) ( (state) ? "TRUE" : "FALSE" )
+//------------------------------------------------------------------------------
+
+
+//______________________________________________________________________________
+// *****************************************************************************
+//****************************************** DATA STRUCTURE DEFINITIONS SECTION:
+//------------------------------------------------------------------------------
+/** \brief Internal data structure of XDXF Engine.
+ */
+struct _BookData {
+        sqlite*                 db;
+        
+        gchar*                  dict_path;
+        EngineStatus            last_error;
+        gboolean                auto_free;
+
+        cb_progress             cb_progress_caching;
+        gpointer                cb_progress_caching_data;
+        gdouble                 cb_progress_caching_seed;
+
+        cb_progress             cb_progress_word_list;
+        gpointer                cb_progress_word_list_data;
+        gdouble                 cb_progress_word_list_seed;
+
+        cb_progress             cb_progress_word_trans;
+        gpointer                cb_progress_word_trans_data;
+        gdouble                 cb_progress_word_trans_seed;
+
+        cb_word_list            cb_search_word_list;
+        gpointer                cb_search_word_list_data;
+
+        cb_word_translation     cb_search_word_trans;
+        gpointer                cb_search_word_trans_data;      
+};
+typedef struct _BookData        BookData;
+//------------------------------------------------------------------------------
+
+
+//______________________________________________________________________________
+// *****************************************************************************
+//************************************************ ADDITIONAL FUNCTIONS SECTION:
+//------------------------------------------------------------------------------
+// returning concrete part of file
+//static gchar*           read_file_part(FilePart* part, GnomeVFSHandle* file);
+//------------------------------------------------------------------------------
+// convert string to proper path name (no filename, no "/" at the ned, file
+// exist)
+static gchar*           string_to_path(gchar** string);
+//------------------------------------------------------------------------------
+// tells if file is in XDXF format (file should exist)
+//static gboolean         is_xdxf_file(gchar* file); 
+//------------------------------------------------------------------------------
+// start/stop timers -  returnet -1.0 if we start or seconds passed from start 
+// if we want to stop timer
+static double           timer(gboolean start, gchar* message);
+//------------------------------------------------------------------------------
+
+
+//______________________________________________________________________________
+// *****************************************************************************
+//****************************************************** MAIN FUNCTIONS SECTION:
+//------------------------------------------------------------------------------
+gboolean        bm_engine_add_word(Engine* engine,
+                                 gchar*  word,
+                                 gchar*  translation);
+//------------------------------------------------------------------------------
+gboolean        bm_engine_remove_word(Engine* engine,
+                                     gchar*  word);  
+//------------------------------------------------------------------------------      
+gchar*          bm_engine_get_lang_from(Engine* engine);
+//------------------------------------------------------------------------------
+gchar*          bm_engine_get_lang_to(Engine* engine);
+//------------------------------------------------------------------------------
+gchar*          bm_engine_get_title(Engine* engine);
+//------------------------------------------------------------------------------
+gchar*          bm_engine_get_icon_path(Engine* engine);
+
+
+
+//------------------------------------------------------------------------------
+// implementation of dict_eng_module_check(module,location) function
+gboolean        bm_engine_check(gchar* location);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_module_get_description(module) function
+gchar*          bm_engine_description();
+//------------------------------------------------------------------------------
+// implementation of dict_eng_module_get_format(module) function
+gchar*          bm_engine_format();
+//------------------------------------------------------------------------------
+// implementation of dict_eng_module_get_version(module) function
+gchar*          bm_engine_version();
+//------------------------------------------------------------------------------
+// implementation of dict_eng_module_create(module,location,flags) and
+// dict_eng_module_create_ext(module,location,flags) functions
+Engine*         bm_engine_create(gchar* location, 
+                              EngineOptimizationFlag flags,
+                              cb_progress progress_handler,
+                              gpointer progress_data,
+                              gdouble seed);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_destroy(engine) function
+void            bm_engine_close(Engine* engine);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_get_location(engine) function
+gchar*          bm_engine_location(Engine* engine);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_optimize(engine) function
+void            bm_engine_optimize(Engine* engine);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_is_optimized( engine ) function
+gboolean        bm_engine_is_optimized(Engine* engine);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_set_auto_free(engine, state) function
+void            bm_engine_set_auto_free(Engine* engine, gboolean state);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_set_callback(engine,signal,c_handler,data) 
+// function
+gpointer        bm_engine_set_callback(Engine* engine,
+                                     gchar* event,
+                                     gpointer c_handler,
+                                     gpointer user_data);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_set_progress_seed(engine, signal, val) function
+void            bm_engine_set_progress_seed(Engine* engine,
+                                         gchar* signal,
+                                         gdouble seed);
+//------------------------------------------------------------------------------
+// implementation ofdict_eng_search_word_list(engine,pattern) function
+void            bm_engine_search_word_list(Engine* engine, gchar* pattern);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_search_word_translation(engine,word) function
+void            bm_engine_search_word_translation(Engine* engine, gchar* word);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_get_last_state(engine) function
+EngineStatus    bm_engine_status(Engine* engine);
+//------------------------------------------------------------------------------
+// implementation of dict_eng_state_message(error) function
+gchar*          bm_engine_status_message(EngineStatus error);
+//------------------------------------------------------------------------------
+// implementation of engine_global_functions(void) function
+EngineModule    engine_global_functions();
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* #ifndef _DICTIONARY_ENGINE_STARDICT */
index 4ea2279..615e3bf 100644 (file)
@@ -30,7 +30,7 @@ extern "C" {
 #include <stdlib.h>
 #include <glib-2.0/glib.h>
 
-/**\brief Callback function definition
+/** \brief Callback function definition
 *
 *@param error - pointer to a GError structure. Currently not used
 *@param words - GArray of osso_rpc_t structures containing sent data
@@ -40,7 +40,7 @@ function with ::ws_dbus_set_cb
 */
 typedef void (* ws_dbus_cb) (GError *error, GArray *words, gpointer user_data); 
 
-/**\brief This structure contains data vital for DBUS communication.
+/** \brief This structure contains data vital for DBUS communication.
 *
 * These are for example both the local and remote addresses of the applications 
 which are supposed to communicate. In this case they are the <I>GUI</I> and the 
@@ -93,7 +93,10 @@ typedef enum
        WS_DBUS_ERROR_OUT_OF_MEMORY, ///<Either the UI or the manager is out of memory
        WS_DBUS_ERROR_ENGINE_NOT_FOUND, ///<Manager error - dictionary engine module, couldn't be located
        //added by me
-       WS_DBUS_ERROR_DICTIONARY_NOT_LOAD ///<Manager sigal - informs the GUI,that history record can not be found because dictionary is not activate
+       WS_DBUS_ERROR_DICTIONARY_NOT_LOAD, ///<Manager sigal - informs the GUI,that history record can not be found because dictionary is not activate
+        WS_DBUS_BOOKMARKS_ON, ///<GUI signal - Switches to bookmark mode
+        WS_DBUS_BOOKMARKS_OFF ///<GUI signal - Switches back to ordinary dictionary mode
+
 } WSDBusNotify;
 
 
@@ -281,8 +284,6 @@ application for DBus
 *WS_STATUS_ERROR - on error
 */
 
-// WSDBusStatus ws_dbus_server_return_words_last  (WSDBusData * ws_dbus_data, GArray * words);
-
 /**\brief Return a translation of a given word
 *
 *This is run by the <I>MANAGER</I>. It returns a translation of a 
@@ -311,9 +312,7 @@ application for DBus
 *WS_STATUS_ERROR - on error
 */
 
-// WSDBusStatus ws_dbus_server_return_translations_last (WSDBusData * ws_dbus_data, gchar * translation);
-
-/**\brief Sends an address of data to transmit
+/** \brief Sends an address of data to transmit
 *
 *Function used in order to increase the speed of data transmission. 
 For now it's been added just for testing purposes.
@@ -360,6 +359,52 @@ WSDBusStatus ws_dbus_update_progressbar (WSDBusData * ws_dbus_data,
 WSDBusStatus ws_dbus_client_search_in_history (WSDBusData * ws_dbus_data,
                                                gchar * word);
 
+/**\brief Add bookmark
+*
+*This is run by <I>GUI</I>. When a user selects a word from the words list, 
+this function is called in order 
+*to find the translation of the selected word. 
+*
+*@param ws_dbus_data - pointer to a structure uniquely identifying the 
+application for DBus
+*@param word - a word, for which the user wishes to find the translation
+*@return WS_STATUS_OK - on success \n
+*WS_STATUS_ERROR - on error
+*/
+
+WSDBusStatus ws_dbus_add_bookmark (WSDBusData * ws_dbus_data, gchar * word, gchar *translation);
+
+/**\brief Remove a bookmark
+*
+*This is run by <I>GUI</I>. When a user selects a word from the words list, 
+this function is called in order 
+*to find the translation of the selected word. 
+*
+*@param ws_dbus_data - pointer to a structure uniquely identifying the 
+application for DBus
+*@param word - a word, for which the user wishes to find the translation
+*@return WS_STATUS_OK - on success \n
+*WS_STATUS_ERROR - on error
+*/
+
+WSDBusStatus ws_dbus_remove_bookmark (WSDBusData * ws_dbus_data, gchar * word);
+
+/**\brief Send a message for GUI to display it
+*
+*This is run by <I>MANAGER</I>. When a user selects a word from the words list, 
+this function is called in order 
+*to find the translation of the selected word. 
+*
+*@param ws_dbus_data - pointer to a structure uniquely identifying the 
+application for DBus
+*@param word - a word, for which the user wishes to find the translation
+*@return WS_STATUS_OK - on success \n
+*WS_STATUS_ERROR - on error
+*/
+
+WSDBusStatus ws_dbus_send_message (WSDBusData * ws_dbus_data, gchar * word);
+
+
 #ifdef __cplusplus
 }
 #endif
index 331e1d7..85848cb 100644 (file)
@@ -47,6 +47,7 @@ extern "C" {
 #include <sys/time.h>
 
 #include "ws_dbus.h"
+#include "ws_version.h"
 
 #include <gtkhtml/gtkhtml-stream.h>
 #include <gconf/gconf.h>
@@ -59,6 +60,11 @@ extern "C" {
 #define GCONF_PATH "/apps/maemo/WhiteStork/Dictionaries"
 #define GCONF_CONF "/apps/maemo/WhiteStork/configuration"
 
+#include <libintl.h>
+#include <locale.h>
+
+#define _(String) gettext (String)
+
 void html_engine_unselect_all(HTMLEngine   *e);
 void html_engine_block_selection (HTMLEngine   *e);
 gboolean html_engine_is_selection_active (HTMLEngine *e);
@@ -71,6 +77,7 @@ enum
   NUM_COLS
 };
 
+
 /** \brief struct which manage layout of html (translation) area
  *
  * here are placed all components of application menu and popup menu
@@ -94,14 +101,20 @@ gchar *td_font_color;
  * here are placed all components of application menu and popup menu
  */
 struct WSGuiMenu {
-         /*application menu*/
+       /*application menu*/
        GtkWidget *ws_gui_main_menu; ///< application submenu
-       GtkWidget *ws_gui_menu_dictionaries; ///< dictionaries submenu(managing with the dictionary files)
+       GtkWidget *ws_gui_menu_dictionaries; ///< dictionaries submenu (managing with the dictionary files)
        GtkWidget *ws_gui_menu_load_dict; ///<menuitem in dictionaries submenu; load new dictionary file into application
        GtkWidget *ws_gui_menu_select_dict; ///<menuitem in dictionaries submenu; allow to select which dictionaries are used
        GtkWidget *ws_gui_menu_remove_dict; ///<menuitem in dictionaries submenu; remove dictionary files which are no longer used
-                  //added by me 
-       GtkWidget* ws_gui_menu_optimize_dict;
+       GtkWidget *ws_gui_menu_optimize_dict; ///< menuitem used for optimizing dictionaries
+
+       GtkWidget *ws_gui_menu_bookmarks; ///bookmarks submenu 
+       GtkWidget *ws_gui_menu_open_bookmark; ///menuitem, opens bookmark window
+       GtkWidget *ws_gui_menu_close_bookmark; ///menuitem, closes bookmark window
+       GtkWidget *ws_gui_menu_add_bookmark; ///menuitem used fot adding bookmarks
+       GtkWidget *ws_gui_menu_remove_bookmark; ///menuitem, allows for removing bookmarks
+
        GtkWidget *ws_gui_menu_edit; ///< edit submenu(connected with text editing)
        GtkWidget *ws_gui_menu_copy; ///< menuitem in edit submenu; copy selected text to the clipboard
        GtkWidget *ws_gui_menu_paste; ///< menuitem in edit submenu; paste content of the clipboard into find toolbar entry
@@ -123,9 +136,10 @@ struct WSGuiMenu {
        GtkWidget *ws_gui_submenu_1; ///< submenu which is necessary to build edit submenu
        GtkWidget *ws_gui_submenu_2; ///< submenu which is necessary to build view submenu
        GtkWidget *ws_gui_submenu_3; ///< submenu which is necessary to build search submenu
+       GtkWidget *ws_gui_submenu_4; ///< submenu which is necessary to build search submenu
        GtkWidget *ws_gui_separator; ///< separator, it is used to provide nice layout
 
-         /*ws_gui_menu popup*/
+       /*ws_gui_menu popup*/
        GtkWidget *ws_gui_popup_menu;  ///< popup menu
        GtkWidget *ws_gui_popup_search;///< search option, allow to search selected text
        GtkWidget *ws_gui_popup_edit; ///< edit submenu
@@ -138,7 +152,6 @@ struct WSGuiMenu {
 
        GtkWidget *ws_gui_separator1; ///< separator, it is used to provide nice layout
        GtkWidget *ws_gui_separator2; ///< separator, it is used to provide nice layout
-         
 };
 
 /** \brief struct which contains components of words list
@@ -149,7 +162,7 @@ struct WSGuiList {
        GtkWidget* ws_gui_list; ///< list which contains words
        GtkWidget* ws_gui_list_item; ///< item in words list (each word)
        GtkWidget* ws_gui_list_label; ///< label, necessary to place word in words list
-         
+
        GtkObject* ws_gui_list_item_object; ///< object which stores data of selected item (from words list)
        gchar* ws_gui_list_item_data_string; ///< variable which stores translation of word (html content)
        GList* ws_gui_dlist; ///< variable, which is necessary to get selected item (from words list)
@@ -200,24 +213,33 @@ struct WSGuiAppData {
        gint ws_gui_history_cur_pos; ///< current position in words history array 
        struct WSGuiMenu *ws_gui_menu; ///< structure responsible for menus
        struct WSGuiList *ws_gui_w_list; ///< structure responsible for words list
-         
+
        gboolean ws_gui_banner_flag; ///< flag; used for notifing if searching is in progress and banner has to be displaying
        gboolean ws_gui_full_screen_flag; ///< flag; used for informing if fullscreen mode is active
        gboolean ws_gui_double_click; ///< flag; necessary to recognize double click
        gboolean ws_gui_sel_flag; ///< flag; used to identify selected text
-         
+
        WSDBusData *dbus_data; ///< DBUS declaration
 
        GtkWidget* ws_message_dialog; ///< message dialogs; used for informing user about errors
 
        GSList *directories; ///< list consist of directories previously read from gconf
+       GSList *directories_last; ///< list consist of directories previously read from gconf
        GConfClient *client; ///< variable necessary to read from gconf
        GtkClipboard *ws_gui_clipboard; ///< application clipboard (available outside the application as well)
        GtkClipboard *ws_gui_clipboard_primary;
        PangoFontDescription* p; ///< schema, which allows to format text on widgets
        GtkWidget *licence_dialog; ///< variable necessary to create license dialog
        GTimer *timer; ///< timer, counts how long user press button (stylus)
-         
+       GArray *bookmarks_list; ///< array wchich contains bookmarked words
+       gboolean bookmark_on; ///< flag which switch beetween bookmark and normal mode
+       gchar *word_book; ///< word added to the bookmarks
+       gchar *translation_book; ///< translation of the word added to bookmarks
+
+       gboolean bookmark_mode;
+       gchar *last_word;
+       GString *raw_translation;
+
 };
 
 #ifdef __cplusplus
index 9d82da9..e20149b 100644 (file)
@@ -44,16 +44,18 @@ extern "C" {
  */
 void ws_gui_signal_hander (GError *error, GArray *words, gpointer user_data);
 
-/** \brief handle signal from dbus and updates progress bar (in order to caching)
+/** \brief handle signal from dbus and updates progress bar(in order to caching)
  *
  */
 void ws_dbus_progress_bar(GError *error, GArray *words, gpointer user_data);
 /** \brief handle dbus signal and transfer words to the words list
  *
  */
-void ws_gui_dbus_return_words (GError *error, GArray *words, gpointer user_data);
+void ws_gui_dbus_return_words (GError *error, 
+                              GArray *words, 
+                              gpointer user_data);
 
-/** \brief handle dbus signal and convert message into readable text (translation of the word)
+/** \brief handle dbus signal and convert message into readable text 
  *
  */
 void ws_gui_dbus_return_translation (GError *error, 
@@ -89,17 +91,17 @@ void ws_gui_words_list_hide(GtkToggleButton *togglebutton, gpointer user_data);
 */
 void ws_gui_history_add(char *new_word, gpointer user_data);
 
-/**  \brief display translation of word stored in the history (previous, if available)
+/**  \brief display translation of word stored in the history (if available)
 *
 */
 void ws_gui_history_back(GtkButton *button, gpointer user_data);
 
-/**  \brief display translation of word stored in the history (forward, if available)
+/**  \brief display translation of word stored in the history (if available)
 *
 */
 void ws_gui_history_next(GtkButton *button, gpointer user_data);
 
-/** \brief check history and disable buttons or uncheck checkbuttons (depends on history availablity)
+/** \brief check history and disable buttons or uncheck checkbuttons 
  *
  */
 void ws_gui_check_history(gpointer user_data);
@@ -215,7 +217,25 @@ guint ws_gui_show_popup(gpointer user_data);
  */
 void ws_gui_check_clipboard (GtkWidget *widget, gpointer user_data);
 
-gchar * format_html (gchar * received_string);
+/** \brief checks dictionaries availablity
+ *
+ */
+void ws_gui_dict_availablity(GtkMenuItem *menuitem, gpointer user_data);
+
+/** \brief allows to format html content
+ *
+ */
+gchar * format_html (gchar * received_string, gpointer user_data);
+
+/** \brief sets sensitivity of Bookmarks menu items
+ *
+ */
+void ws_gui_set_bookmarks_sensitivity(gpointer user_data);
+
+/** \brief sets sensitivity of menu items due to dictionary mode 
+ *
+ */
+void ws_gui_read_active_dictionaries(gpointer user_data);
 #ifdef __cplusplus
 }
 #endif
index 793b61d..733e307 100644 (file)
@@ -76,16 +76,49 @@ void ws_gui_dictionary_remover(GtkMenuItem *menuitem, gpointer user_data);
 void ws_gui_dictionary_optimizer(GtkMenuItem *menuitem, gpointer user_data);
 
 /** 
+ * \brief open bookmark window
+ *
+ */
+void ws_gui_dictionary_open_bookmark(GtkMenuItem *menuitem, gpointer user_data);
+
+/** 
+ * \brief close bookmark window
+ *
+ */
+void ws_gui_dictionary_close_bookmark(GtkMenuItem *menuitem, 
+                                     gpointer user_data);
+
+/** 
+ * \brief add bookmark to bookmarks database
+ *
+ */
+void ws_gui_dictionary_add_bookmark(GtkMenuItem *menuitem, gpointer user_data);
+
+/** 
+ * \brief remove bookmark from database
+ *
+ */
+void ws_gui_dictionary_remove_bookmark(GtkMenuItem *menuitem, 
+                                      gpointer user_data);
+
+/** 
  * \brief display information about application
  *
  */
 void ws_gui_about_application(GtkMenuItem *menuitem, gpointer user_data);
 
 /** 
- * \brief this function creates dialog popup window questioning about license
+ * \brief creates Add Bookmark dialog window
  *
  */
-GtkWidget* licence_dialog(gpointer user_data);
+void ws_gui_add_bookmark_dialog(gpointer user_data);
+
+/** 
+ * \brief creates Remove Bookmark dialog window
+ *
+ */
+void ws_gui_remove_bookmark_dialog(gpointer user_data);
+
 #ifdef __cplusplus
 }
 #endif
index c5f71ab..27b0417 100644 (file)
@@ -22,15 +22,12 @@ Copyright 2006 ComArch S.A.
 
 #include <stdio.h>
 #include <stdlib.h>
-#include <unistd.h>
 #include <pthread.h>
 #include <gmodule.h>
 #include <glib.h>
-#include <glib/gstdio.h>
-#include "dictionary_engine.h"
 #include "ws_dbus.h"
-#include <gconf/gconf-client.h>
-#include <gconf/gconf.h>
+#include "dictionary_engine.h"
+
 
 struct _WSMngSearchData
 {
@@ -40,13 +37,14 @@ struct _WSMngSearchData
         pthread_t p_thread; ///< a thread in which we serching 
         WSDBusData* dbus_data; ///< a pointer DBUS data
         GMainLoop* loop; ///< pointer to main loop
-        GModule* library; ///< library used to load modules
+        //GModule* library; ///< library used to load modules
         GArray* word_list; ///< searched word list
         gchar* trans; ///< searched translation
         gint returned_results; ///< count of returned results
         gchar* last_search; ///< last searched word
         gboolean search_in_history; ///< flag signalig when search in hisory is commieted
         GArray* libraries; ///<tabele used for storing modules libraries
+       Engine* bookmark;
 };
 
 typedef struct _WSMngSearchData WSMngSearchData;
@@ -166,5 +164,11 @@ void ws_mng_close (WSMngSearchData *data);
 */
 void ws_mng_signal_handling (GError *error, GArray *signal, gpointer user_data);
 
+void ws_mng_add_bookmark(GError *error, GArray* data,
+                         gpointer user_data);
+
+void ws_mng_remove_bookmark(GError *error, GArray* data,
+                         gpointer user_data);
+
 #endif
 
diff --git a/logs/clean.log b/logs/clean.log
new file mode 100644 (file)
index 0000000..7ef97a7
--- /dev/null
@@ -0,0 +1,17 @@
+make[1]: Entering directory `/home/krzsas/mdict/mdictionary/trunk/gui'
+rm -f ../bin/*.o
+rm -f WhiteStork
+done
+make[1]: Leaving directory `/home/krzsas/mdict/mdictionary/trunk/gui'
+make[1]: Entering directory `/home/krzsas/mdict/mdictionary/trunk/dbus'
+rm -rf bin/*
+rm -rf doc/*
+make[1]: Leaving directory `/home/krzsas/mdict/mdictionary/trunk/dbus'
+make[1]: Entering directory `/home/krzsas/mdict/mdictionary/trunk/engine'
+make[1]: Leaving directory `/home/krzsas/mdict/mdictionary/trunk/engine'
+make[1]: Entering directory `/home/krzsas/mdict/mdictionary/trunk/manager'
+rm -f ../bin/*.o ../bin/WhiteStorkManager
+make[1]: Leaving directory `/home/krzsas/mdict/mdictionary/trunk/manager'
+make[1]: Entering directory `/home/krzsas/mdict/mdictionary/trunk/bookmarks'
+Project 'BookmarkEngine' directories has been cleaned.
+make[1]: Leaving directory `/home/krzsas/mdict/mdictionary/trunk/bookmarks'
diff --git a/manager/Doxyfile b/manager/Doxyfile
deleted file mode 100644 (file)
index 2bb2b19..0000000
+++ /dev/null
@@ -1,1237 +0,0 @@
-# Doxyfile 1.4.6
-# 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           = White Stork Manager  Module
-# 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         = 0.1
-# 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       = doc/
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-CREATE_SUBDIRS         = NO
-# 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, Korean-en, 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
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-ABBREVIATE_BRIEF       = 
-# 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  = NO
-# 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. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-STRIP_FROM_PATH        = 
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-STRIP_FROM_INC_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 
-# explicit @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 
-# re-implements.
-INHERIT_DOCS           = YES
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-SEPARATE_MEMBER_PAGES  = 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               = 8
-# 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
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to 
-# include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also make the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-BUILTIN_STL_SUPPORT    = NO
-# 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
-# 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
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-EXTRACT_LOCAL_METHODS  = NO
-# 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          = NO
-# 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 
-# and Mac 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
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-SORT_BRIEF_DOCS        = NO
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-SORT_BY_SCOPE_NAME     = NO
-# 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
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-SHOW_DIRECTORIES       = NO
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from the 
-# version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-FILE_VERSION_FILTER    = 
-#---------------------------------------------------------------------------
-# 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
-# This WARN_NO_PARAMDOC option can be abled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-WARN_NO_PARAMDOC       = NO
-# 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. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-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                  = src/ws_manager.c ../include/ws_manager.h
-# 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 *.m *.mm *.py
-FILE_PATTERNS          = 
-# 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              = YES
-# 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. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-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 <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-INPUT_FILTER           = 
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER 
-# is applied to all files.
-FILTER_PATTERNS        = 
-# 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. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-SOURCE_BROWSER         = YES
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-INLINE_SOURCES         = NO
-# 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    = YES
-# 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 USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-USE_HTAGS              = NO
-# 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     = No
-# 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. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# stylesheet in the HTML output directory as well, or it will be erased!
-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 directory.
-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   = 1
-# 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      = YES
-# 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         = YES
-# 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             = a4wide
-# 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         = NO
-# 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           = NO
-# 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 optimized 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 assignments. 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.
-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                = 
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-XML_PROGRAMLISTING     = YES
-#---------------------------------------------------------------------------
-# 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_DEFINED 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. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-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::additions 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 superseded 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               = NO
-# 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 GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-GROUP_GRAPHS           = YES
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar 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             = NO
-# 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
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-DIRECTORY_GRAPH        = 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 in the path.
-DOT_PATH               = 
-# 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
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, which results in a white background. 
-# Warning: Depending on the platform used, enabling this option may lead to 
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to 
-# read).
-DOT_TRANSPARENT        = NO
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-DOT_MULTI_TARGETS      = NO
-# 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::additions 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
\ No newline at end of file
index 957e9a8..dfc8262 100644 (file)
@@ -1,7 +1,7 @@
 CC = gcc
 DEBUG = -g -Wall 
-LIBS = `pkg-config --libs glib-2.0 gmodule-2.0 libosso gconf-2.0` -lpthread
-FLAGS = `pkg-config --cflags glib-2.0 gmodule-2.0 libosso gconf-2.0`
+LIBS = `pkg-config --libs glib-2.0 gmodule-2.0 libosso gconf-2.0 sqlite` -lpthread
+FLAGS = `pkg-config --cflags glib-2.0 gmodule-2.0 libosso gconf-2.0 sqlite`
 SOURCE = src
 BINARY = ../bin
 INCLUDE = ../include
index 80c815f..015b372 100644 (file)
@@ -36,7 +36,7 @@ int main ()
        
        ws_mng_close (search_data);
        
-       g_free(search_data);
+       //g_free(search_data);
        
        return 0;
 }
index 457d9cb..979d784 100644 (file)
@@ -22,11 +22,18 @@ extern "C" {
 #endif
 
 #include "../../include/ws_manager.h"
+#include <unistd.h>
+#include <glib/gstdio.h>
+
+#include <gconf/gconf-client.h>
+#include <gconf/gconf.h>
 
 #define GCONF_KEY "/apps/maemo/WhiteStork/Dictionaries"
+#define GCONF_LIB_PATH "/apps/maemo/WhiteStork/Engines"
 
 void ws_mng_on_search_word (GError *error, GArray *word, gpointer user_data)
 {
+        g_debug("->%s", __FUNCTION__);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
         osso_rpc_t* osso_data = NULL;
         gint i = 0; 
@@ -43,25 +50,30 @@ void ws_mng_on_search_word (GError *error, GArray *word, gpointer user_data)
         data->word = g_strdup(osso_data->value.s); 
         //set new number of number of finished searchings
         data->returned_results = data->dict->len; 
-        //free memory used by each word from word list
-        for (i=0; i<data->word_list->len; i++)
-        {
-                g_free(g_array_index(data->word_list,gchar* ,i));        
-        }
-        //free memory used by GArray 
-        g_array_free(data->word_list, TRUE);
-        //creating new GArray for word list
-        data->word_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
+        //if (data->word_list->len > 0)
+        //{
+                //free memory used by each word from word list
+                for (i=0; i<data->word_list->len; i++)
+                {
+                        g_free(g_array_index(data->word_list,gchar* ,i));
+                }
+                //free memory used by GArray 
+                g_array_free(data->word_list, TRUE);
+                //creating new GArray for word list
+                data->word_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
+        //}
         //free memory sended by dbus
-        osso_rpc_free_val(osso_data);
+        //osso_rpc_free_val(osso_data);
         pthread_create (&data->p_thread, 
                         NULL, 
                         ws_mng_search_word, 
-                        data);   //create thread and run search                
+                        data);   //create thread and run search 
+        g_debug("<-%s", __FUNCTION__);
 }
 
 gpointer ws_mng_search_word (gpointer data)
 {
+        g_debug("--%s", __FUNCTION__);
         WSMngSearchData *search = (WSMngSearchData *) data;
         gint i = 0;
         // set cancel type for thread        
@@ -88,6 +100,7 @@ gpointer ws_mng_search_word (gpointer data)
 static gint ws_mng_compare_strings (gconstpointer a, gconstpointer b)
 {
         //gets the parameters to compare
+        g_debug("--%s", __FUNCTION__);
         gchar** str1 = (gchar**)(a);
         gchar** str2 = (gchar**)(b);
         //converts a string into a form that is independent of case
@@ -103,11 +116,12 @@ static gint ws_mng_compare_strings (gconstpointer a, gconstpointer b)
 }
 
 
-void ws_mng_on_found_word (GArray* list,
-                           gchar* pattern,
-                           gpointer user_data,
-                           EngineStatus error)
+void ws_mng_on_found_word(GArray* list,
+                          gchar* pattern,
+                          gpointer user_data,
+                          EngineStatus error)
 {
+        g_debug("->%s", __FUNCTION__);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
         gint i = 0;
         //decrement returned results count 
@@ -152,11 +166,13 @@ void ws_mng_on_found_word (GArray* list,
                  //send words via dbus to gui
                 ws_dbus_server_return_words(data->dbus_data, data->word_list);
         }
+        g_debug("<-%s", __FUNCTION__);
 }
 
 void ws_mng_on_search_translation (GError *error, GArray *word,
                                    gpointer user_data)
 {
+        g_debug("->%s", __FUNCTION__);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
         osso_rpc_t *osso_data;
         //get the data sended by dbus
@@ -167,17 +183,19 @@ void ws_mng_on_search_translation (GError *error, GArray *word,
         data->returned_results = data->dict->len;
         data->trans = NULL;
         //free data sended by dbus
-        osso_rpc_free_val(osso_data);
+        //osso_rpc_free_val(osso_data);
         //create thread 
         pthread_create (&data->p_thread, 
                         NULL, 
                         (gpointer) ws_mng_search_translation, 
                         (gpointer) data); 
+        g_debug("<-%s", __FUNCTION__);
 }
 
 void ws_mng_on_search_in_history (GError *error, GArray *word, 
                                   gpointer user_data)
 {
+        g_debug("->%s", __FUNCTION__);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
         osso_rpc_t *osso_data;
         //set the falg used to signaling 
@@ -190,16 +208,18 @@ void ws_mng_on_search_in_history (GError *error, GArray *word,
         data->returned_results = data->dict->len;
         data->trans = NULL;
         //free memory sended by dbus
-        osso_rpc_free_val(osso_data);
+        //osso_rpc_free_val(osso_data);
          //create thread
         pthread_create (&data->p_thread, 
                         NULL, 
                         (gpointer) ws_mng_search_translation, 
                         (gpointer) data);
+        g_debug("<-%s", __FUNCTION__);
 }
 
 gpointer ws_mng_search_translation (gpointer data)
 {
+        g_debug("--%s", __FUNCTION__);
         WSMngSearchData *search = (WSMngSearchData *) data;
         gint i = 0;
         // set cancel type for thread
@@ -223,6 +243,7 @@ void ws_mng_on_found_translation (gchar* translation,
                                   EngineStatus error
                                  )
 {
+        g_debug("->%s", __FUNCTION__);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
         //decrement returned results count
         data->returned_results--;
@@ -279,14 +300,16 @@ void ws_mng_on_found_translation (gchar* translation,
                         tmp = NULL;        
                         data->search_in_history = FALSE;
                         //send translation to gui
-                        ws_dbus_server_return_translations(data->dbus_data, data->trans);
-                }                
-        }    
+                        ws_dbus_server_return_translations(data->dbus_data,
+                       data->trans);
+                }
+        }
+        g_debug("<-%s", __FUNCTION__);
 }
 
-
 void ws_mng_init_dbus (WSMngSearchData *data)
 {
+        g_debug("->%s", __FUNCTION__);
         //create data structure needed to comunicate with dbus wrapper
         data->dbus_data = ws_dbus_create ("WhiteStorkManager", "v1.0"); 
         //set data used to comunicate with gui
@@ -327,11 +350,24 @@ void ws_mng_init_dbus (WSMngSearchData *data)
                       "search_in_history",
                       ws_mng_on_search_in_history,
                       data);//set callback for search in history signal
+       ws_dbus_set_cb(data->dbus_data,
+                      "add_bookmark",
+                      ws_mng_add_bookmark,
+                      data);//set callback for add bookmarks signal
+       ws_dbus_set_cb(data->dbus_data,
+                      "remove_bookmark",
+                      ws_mng_remove_bookmark,
+                      data);//set callback for remove bookmarks signal
+
+
+        g_debug("<-%s", __FUNCTION__);
 }
 
+
 static GArray* ws_mng_read_gconf()
 {
         g_type_init();
+        g_debug("--%s", __FUNCTION__);
         GConfClient* client = NULL;
         GArray* path_to_dir = g_array_new(TRUE, TRUE, sizeof(gchar *));
         gchar* path = NULL;
@@ -348,22 +384,20 @@ static GArray* ws_mng_read_gconf()
                 path = (gchar* ) g_slist_nth_data(list, i);
                 gchar* new_path = g_strconcat(path, "/path",NULL);
                 gchar* new_acitve = g_strconcat(path, "/active",NULL);
-                gchar* new_optimized = g_strconcat(path, "/optimized",NULL);
                 gchar* tmp = NULL;
                 gchar* key_value = gconf_client_get_string(client,
                                                            new_path,
                                                            NULL);
                 key_active = gconf_client_get_bool(client, new_acitve, NULL);
-                tmp = g_strconcat(key_value, "/dict.xdxf", NULL);
-                if (g_file_test(tmp, G_FILE_TEST_EXISTS) == TRUE &&
-                    key_active == TRUE)
+//                 tmp = g_strconcat(key_value, "/dict.xdxf", NULL);
+                if (key_active == TRUE)
                 {
                         g_array_append_val(path_to_dir, key_value);
                 }
                 g_free(tmp);
                 g_free(new_path);
                 g_free(new_acitve);
-                g_free(new_optimized);            
+                
         }
         for (i=0; i<g_slist_length(list); i++)
         {
@@ -374,26 +408,155 @@ static GArray* ws_mng_read_gconf()
         return path_to_dir;
 }
 
+void ws_mng_add_bookmark(GError *error, GArray* bookmark,
+                         gpointer user_data)
+{
+       g_debug("->%s", __FUNCTION__);
+        WSMngSearchData* data = (WSMngSearchData *) user_data;
+        osso_rpc_t* osso_data = NULL;
+        gchar* word = NULL;
+       gchar* translation = NULL;
+        //get the word passed by dbus 
+        if (data->bookmark)
+       {
+               g_debug("adding bookmarks...");
+               osso_data = &g_array_index (bookmark, osso_rpc_t, 0); 
+               word = g_strdup(osso_data->value.s);
+               osso_data = &g_array_index (bookmark, osso_rpc_t, 1); 
+               translation = g_strdup(g_strdup(osso_data->value.s));
+               dict_eng_add_word(data->bookmark, word, 
+                       translation);
+               //      g_free(word);
+               //      g_free(translation);
+               osso_rpc_free_val(osso_data);
+       }
+       g_debug("<-%s", __FUNCTION__);
+}
+
+void ws_mng_remove_bookmark(GError *error, GArray* bookmarks,
+                         gpointer user_data)
+{
+       g_debug("->%s", __FUNCTION__);
+        WSMngSearchData* data = (WSMngSearchData *) user_data;
+        osso_rpc_t* osso_data = NULL;
+        gchar* word = NULL;
+       //get the word passed by dbus 
+        if (data->bookmark)
+       {
+               g_debug("removing bookmarks...");
+               osso_data = &g_array_index (bookmarks, osso_rpc_t, 0); 
+               word = g_strdup(osso_data->value.s);
+               dict_eng_remove_word(data->bookmark, word);
+               //g_free(word);
+               osso_rpc_free_val(osso_data);
+       }
+       g_debug("<-%s", __FUNCTION__);
+}
+static GArray* ws_mng_get_engines_location()
+{
+        
+        g_type_init();
+        g_debug("->%s", __FUNCTION__);
+        GConfClient* client = NULL;
+        GArray* path_to_dir = g_array_new(TRUE, TRUE, sizeof(gchar *));
+        gchar* path = NULL;
+        //gchar* key_value = NULL;
+        //gboolean key_active = FALSE;
+        gint i = 0;
+
+        client = gconf_client_get_default();
+        GSList* list = gconf_client_all_dirs(client, GCONF_LIB_PATH, NULL);
+        for (i=0; i<g_slist_length(list); i++)
+        {
+                //path = g_strdup((gchar *) g_slist_nth_data(list, i));
+                path = (gchar* ) g_slist_nth_data(list, i);
+                gchar* new_path = g_strconcat(path, "/path",NULL);
+                gchar* key_value = gconf_client_get_string(client,
+                                                           new_path,
+                                                           NULL);
+               g_debug("`````````key_value %s", key_value);
+                g_array_append_val(path_to_dir, key_value);
+                g_free(new_path);
+        }
+        for (i=0; i<g_slist_length(list); i++)
+        {
+                g_free(g_slist_nth_data(list, i));
+        }
+        g_slist_free(list);
+        g_object_unref (client);
+
+        return path_to_dir;
+}
+
+static gchar* ws_mng_get_boomark_location()
+{
+       g_type_init();
+        g_debug("->%s", __FUNCTION__);
+        GConfClient* client = NULL;
+        gchar* path = NULL;
+        //gchar* key_value = NULL;
+        //gboolean key_active = FALSE;
+        gint i = 0;
+       gchar* key_value = NULL;
+        client = gconf_client_get_default();
+        GSList* list = gconf_client_all_dirs(client, GCONF_KEY, NULL);
+        for (i=0; i<g_slist_length(list); i++)
+        {
+                //path = g_strdup((gchar *) g_slist_nth_data(list, i));
+                path = (gchar* ) g_slist_nth_data(list, i);
+                gchar* name = g_strconcat(path, "/name",NULL);
+               gchar* new_path = g_strconcat(path, "/path",NULL);
+               g_debug("%s and new %s", path, new_path);
+               gchar* key_value_name = key_value = gconf_client_get_string(
+                                                       client,
+                                                        name,
+                                                        NULL);
+               if (g_ascii_strcasecmp(key_value_name, "Bookmarks") == 0)
+               {
+                       key_value = gconf_client_get_string(client,
+                                                           new_path,
+                                                           NULL);
+                       g_debug("%s", key_value);
+                       return key_value;
+               }
+               
+               g_free(key_value_name);
+               key_value_name = NULL;
+                g_free(new_path);
+               new_path = NULL;
+        }
+        for (i=0; i<g_slist_length(list); i++)
+        {
+                g_free(g_slist_nth_data(list, i));
+        }
+        g_slist_free(list);
+        g_object_unref (client);
+       g_debug("<-%s", __FUNCTION__);
+        return key_value;
+}
+
 void ws_mng_progress_bar(double progress,
                          gpointer user_data,
                          EngineStatus error
                         )
 {
+        g_debug("->%s", __FUNCTION__);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
-        //return progress of cacheing to user interface
+        //return progress of caching to user interface
         ws_dbus_update_progressbar(data->dbus_data, progress); 
+        g_debug("<-%s", __FUNCTION__);
 }
 
 static gboolean ws_mng_if_optimized(gchar* dict)
 {
         GConfClient* client;
-
+        
         gchar* path = NULL;
         //gchar* key_value = NULL;
         gboolean key_optimized = FALSE;
         gint i = 0;
         g_type_init();
-        
+        g_debug("->%s", __FUNCTION__);
         client = gconf_client_get_default();
         GSList* list = gconf_client_all_dirs(client, GCONF_KEY, NULL);
         for (i=0; i<g_slist_length(list); i++)
@@ -422,15 +585,44 @@ static gboolean ws_mng_if_optimized(gchar* dict)
         }
         g_slist_free(list);
         g_object_unref (client);
+        
         return key_optimized;
 }
 
+static void ws_mng_load_bookmark(WSMngSearchData* data)
+{
+       g_debug("->%s", __FUNCTION__);
+       guint i = 0;
+       gchar* current_directory = ws_mng_get_boomark_location();
+       for (i=0; i<data->modules->len; i++)
+       {
+               if (dict_eng_module_check(g_array_index(data->modules,
+                                                                 EngineModule,
+                                                                 i),
+                                                   current_directory) == TRUE)
+               {
+                       data->bookmark = dict_eng_module_create_ext(
+                                                g_array_index(data->modules,
+                                                              EngineModule,
+                                                              i),
+                                               current_directory,
+                                               ENGINE_CREATE,
+                                               ws_mng_progress_bar,
+                                               data,
+                                               0.02);
+               }
+               
+       }
+       g_debug("<-%s", __FUNCTION__);
+}
+
 static void ws_mng_load_dict(GArray* dict_directory, WSMngSearchData* data)
 {
+        
         gint i = 0;
         gint j = 0;
         Engine* xdxf = NULL;
-        
+        g_debug("->%s", __FUNCTION__);
         for (i =0; i<dict_directory->len; i++)
         {
                 gchar* current_directory = strdup(g_array_index(dict_directory,
@@ -439,7 +631,7 @@ static void ws_mng_load_dict(GArray* dict_directory, WSMngSearchData* data)
                                                  );            
                 for (j=0; j<data->modules->len; j++)
                 {
-                        if (dict_eng_module_check (g_array_index(data->modules,
+                       if (dict_eng_module_check(g_array_index(data->modules,
                                                                  EngineModule,
                                                                  j),
                                                    current_directory) == TRUE)
@@ -483,69 +675,110 @@ static void ws_mng_load_dict(GArray* dict_directory, WSMngSearchData* data)
                         }
                 }
         }
+        g_debug("<-%s", __FUNCTION__);
 }
+
 void ws_mng_init (WSMngSearchData *data)
 {
         
+        g_debug("->%s", __FUNCTION__);
         data->dict = g_array_new(TRUE, TRUE, sizeof(Engine *));
         data->modules = g_array_new(TRUE, TRUE, sizeof(EngineModule));
         data->word_list = g_array_new(TRUE, TRUE, sizeof(gchar*));
-        data->library = NULL;
+        data->libraries = g_array_new(TRUE, TRUE, sizeof(GModule*));
+       
+        //data->library = NULL;
         data->last_search = NULL;
         data->trans = NULL;
         data->search_in_history = FALSE;
         
         GArray *dict_directory = ws_mng_read_gconf(); //paths to dictionaries
         gint i = 0;     
-        
-        data->returned_results = dict_directory->len;           
-        gchar* library_to_path = "/usr/lib/WhiteStork/engine_xdxf.so";        
+
+       data->returned_results = dict_directory->len;           
+        GArray* library_to_path = ws_mng_get_engines_location();
+        g_debug("Libraries count %d", library_to_path->len);
         //load the engine function
-        data->library = g_module_open(library_to_path, G_MODULE_BIND_LAZY); 
-        
-        getting_additional get_functions = NULL;
-        
-        g_module_symbol(data->library,
-                        "engine_global_functions",
-                        (gpointer)&get_functions);
-        
-        if (get_functions == NULL) //check if function was loaded
+        for (i = 0; i < library_to_path->len; i++)
+        {
+                gchar* path= g_array_index(library_to_path, gchar*, i);
+               g_debug("%s", path);
+                GModule* library = g_module_open(path, G_MODULE_BIND_LAZY);
+               g_debug("%d     %p", i, library);
+               g_array_append_val(data->libraries, library);
+               g_debug("%d     %p", i, library);
+               g_free(path);
+        }
+        //data->library = g_module_open(library_to_path, G_MODULE_BIND_LAZY); 
+       getting_additional get_functions;
+       for (i=0; i<data->libraries->len; i++)
         {
-                g_printf("Loading module function failed\n");
-                ws_dbus_notify(data->dbus_data, WS_DBUS_ERROR_ENGINE_NOT_FOUND);
-                for (i=0; i<dict_directory->len; i++)
+               get_functions = NULL;
+               //data->library
+               g_debug("%p", g_array_index(data->libraries, GModule*, i));
+                g_module_symbol(g_array_index(data->libraries, GModule*, i),
+                                "engine_global_functions",
+                                (gpointer)&get_functions);
+               g_debug("%d     %p", i, &get_functions);
+                if (get_functions == NULL) //check if function was loaded
                 {
-                        g_free(g_array_index(dict_directory, gchar*, i));
+                        g_printf("Loading module function failed\n");
+                        ws_dbus_notify(data->dbus_data,
+                                       WS_DBUS_ERROR_ENGINE_NOT_FOUND);
+                        for (i=0; i<dict_directory->len; i++)
+                        {
+                                g_free(g_array_index(dict_directory, gchar*, i));
+                        }
+                        g_array_free(dict_directory, TRUE);
+                        ws_mng_close(data);
+                        exit(0); //exit program
                 }
-                g_array_free(dict_directory, TRUE);
-                ws_mng_close(data);
-                exit(0); //exit program
+               EngineModule module =  get_functions();
+               //tmp = (EngineModule*) g_memdup(&module, sizeof(EngineModule));
+               //module = (EngineModule**) &tmp;
+               g_array_append_val(data->modules, module);
+               
         }
-        
-        EngineModule module = get_functions();
-        //adding newly created module to Garray 
-        g_array_append_val (data->modules, module);
-        if (dict_directory->len > 0)
+       
+       
+       ws_mng_load_bookmark(data);
+       
+       if (dict_directory->len > 0)
         {
-                ws_dbus_notify(data->dbus_data, WS_DBUS_INFO_CACHING);             
-                ws_mng_load_dict(dict_directory, data);                
-                ws_dbus_notify(data->dbus_data, WS_DBUS_INFO_CACHING_FINISHED);
+                        ws_dbus_notify(data->dbus_data, WS_DBUS_INFO_CACHING);             
+                        
+                       ws_mng_load_dict(dict_directory, data);                
+                        guint i = 0;
+                       g_debug("bookmark engine at %p", data->bookmark);
+                       for (i=0; i<data->dict->len; i++)
+                       {
+                               g_debug("dict engines at %p", 
+                               g_array_index(data->dict, Engine*, i));
+                       }
+                       ws_dbus_notify(data->dbus_data, 
+                                       WS_DBUS_INFO_CACHING_FINISHED);
         }
         else
         {
-                ws_dbus_notify(data->dbus_data, WS_DBUS_ERROR_FILE_NOT_FOUND);
-        }            
-        
+                        ws_dbus_notify(data->dbus_data,
+                                       WS_DBUS_ERROR_FILE_NOT_FOUND);
+        }
         for (i=0; i<dict_directory->len; i++)
         {
                 g_free(g_array_index(dict_directory, gchar*, i));
         }
+        for (i=0; i<library_to_path->len; i++)
+        {
+                g_free(g_array_index(library_to_path, gchar*, i));
+        }
         g_array_free(dict_directory, TRUE);
-        
+        g_array_free(library_to_path, TRUE);
+        g_debug("<-%s", __FUNCTION__);
 }        
 
 void ws_mng_signal_handling (GError *error, GArray *signal, gpointer user_data)
 {
+        g_debug("->%s", __FUNCTION__);
         osso_rpc_t osss_data;
         osss_data = g_array_index (signal, osso_rpc_t, 0);
         WSMngSearchData *data = (WSMngSearchData *) user_data;
@@ -566,7 +799,15 @@ void ws_mng_signal_handling (GError *error, GArray *signal, gpointer user_data)
                         
                         for (i=0; i<data->dict->len; i++)
                         {
-                                g_free(g_array_index(data->dict, Engine*, i));
+                                if (g_array_index(data->dict, Engine*,i) != NULL)
+                               {
+                                       dict_eng_destroy(
+                                               g_array_index(
+                                                       data->dict, Engine*,i
+                                               )
+                                                       );
+                               }
+                               //g_free(g_array_index(data->dict, Engine*, i));
                         }
                         g_array_free(data->dict, TRUE);
                         
@@ -600,7 +841,8 @@ void ws_mng_signal_handling (GError *error, GArray *signal, gpointer user_data)
                                         //free the old words list
                                         g_array_free(data->word_list, TRUE);
                                         
-                                        data->word_list = g_array_new(TRUE, TRUE, sizeof(gchar*));//creating new word list
+                                        data->word_list = g_array_new(TRUE, TRUE,
+                                       sizeof(gchar*));//creating new word list
                                         
                                         g_free(data->word);
                                         data->word = g_strdup(data->last_search);
@@ -620,43 +862,65 @@ void ws_mng_signal_handling (GError *error, GArray *signal, gpointer user_data)
                                 g_free(g_array_index(dir_array, gchar*, i));
                         }
                         g_array_free(dir_array, TRUE);
-                default:
-
                 break;
+
         }
+        g_debug("<-%s", __FUNCTION__);
 }
 
 void ws_mng_close (WSMngSearchData *data)
 {
         int i = 0;
+        g_debug("->%s", __FUNCTION__);
+       
         ws_dbus_destroy (data->dbus_data); // deinitialization of dbus
         
-        for (i = 0; i < data->dict->len; i++) 
-        {
-                //free memory taken by engine
-                dict_eng_destroy(g_array_index (data->dict, Engine*,i));
-        }
+       dict_eng_destroy(data->bookmark);
+       
+         for (i = 0; i < data->dict->len; i++) 
+         {
+                 //free memory taken by engine
+                 dict_eng_destroy(g_array_index (data->dict, Engine*,i));
+         }
+       g_array_free(data->dict, TRUE);
         
         for (i=0; i<data->word_list->len; i++)
         {
                 g_free(g_array_index(data->word_list, gchar*, i));
         }
+       g_array_free(data->word_list, TRUE);
+       
         //free memory used by modules
-        g_array_free(data->modules, TRUE); 
+        //g_array_free(data->modules, TRUE); 
         //free memory taken by dictionaries
-        g_array_free(data->dict, TRUE);
-        g_array_free(data->word_list, TRUE);
         g_free(data->last_search);
+       
         g_free(data->loop); 
+       
         g_free(data->word);
+       
         g_free(data->trans);
-        if (data->library != NULL)
-        {
-                g_module_close (data->library); //close library
-                
-        }
+       
+       g_array_free(data->modules, TRUE);
+       
+//          for (i=0; data->libraries->len; i++)
+//          {
+//                  if (g_array_index(data->libraries, GModule*, i) != NULL)
+//                  {
+//                           //close library
+//                          g_module_close(g_array_index(data->libraries, 
+//                                             GModule*, i));
+//                  }
+//             
+//          }
+       g_array_free(data->libraries, TRUE);
+       
         
+       g_free(data);
+       //g_array_free(data->modules, TRUE); 
+        g_debug("<-%s", __FUNCTION__);
 }
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/packages/debian/DEBIAN/control b/packages/debian/DEBIAN/control
deleted file mode 100644 (file)
index cc42011..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-Package: whitestorkgui                                                         
-Version: 0.4.0-1
-Section: user/tools Tools                                                                
-Priority: optional                                                           
-Architecture: all  
-Installed-Size: 64                                                          
-Depends: libexpat1 (>= 1.95.8)        
-Maintainer: ComArch S.A. <contact@comarch.com>                              
-Description: GUI for whitestork.
- This package contain an example of GUI for 
- Whitestork - Multilingual Dictionary for 
- Maemo platform.
- Copyright 2006, ComArch S.A. 
diff --git a/packages/debian/DEBIAN/md5sums b/packages/debian/DEBIAN/md5sums
deleted file mode 100644 (file)
index f783f7c..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-a365c41ec94b5f4405d004bfac2b0f60  usr/bin/WhiteStork
-641156ce47d1b30662f360464b4fc00a  usr/share/pixmaps/whitestork.png
-49537826f9623d12201bea3edec12946  usr/share/pixmaps/whitestork_icon.png
-19f2b53dec0ff78d9f11b346fd4c2c9a  usr/share/applications/hildon/whitestorkgui.desktop
-4edcfc2722154083133139804cd53854  usr/share/doc/whitestorkgui/copyright
-73bf217bc5340f23b5bc409f1cae6f93  usr/share/doc/whitestorkgui/changelog.gz
-cab7521cf75e3f7e9a3a0ab65026614f  usr/share/doc/whitestorkgui/changelog.Debian.gz
-e200a9473dfc5873b4f3d5b59b164d7f  usr/share/dbus-1/services/org.maemo.WhiteStorkGui.service
diff --git a/packages/debian/DEBIAN/postinst b/packages/debian/DEBIAN/postinst
deleted file mode 100755 (executable)
index 78129e2..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-
-echo $1 >> /home/krzsas/log.txt
-echo -e "Postinstalling actions..." 
-
-maemo-confirm-text /usr/share/doc/whitestorkgui/copyright
-
-case $? in
-0)su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/configuration/licence true';;
-  # maemo-select-menu-location whitestork.desktop
-1)su $USER -c 'gconftool-2 --type bool --set /apps/maemo/WhiteStork/configuration/licence false';;
-esac
-
-exit 0
-
-# End automatically added section
diff --git a/packages/debian/DEBIAN/postrm b/packages/debian/DEBIAN/postrm
deleted file mode 100755 (executable)
index 36c6660..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-echo -e "Postremoving actions..."
diff --git a/packages/debian/DEBIAN/preinst b/packages/debian/DEBIAN/preinst
deleted file mode 100755 (executable)
index 302910b..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-
-echo -e "Preinstallation actions..."
diff --git a/packages/debian/DEBIAN/prerm b/packages/debian/DEBIAN/prerm
deleted file mode 100755 (executable)
index 46ce117..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/sh
-
-echo -e "Preremoving actions..."
-
-
-
-# End automatically added section
diff --git a/packages/debian/etc/others-menu/extra_applications/0112_whitestorkgui.desktop b/packages/debian/etc/others-menu/extra_applications/0112_whitestorkgui.desktop
deleted file mode 120000 (symlink)
index b0117df..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/usr/share/applications/hildon/whitestorkgui.desktop
\ No newline at end of file
diff --git a/packages/debian/usr/bin/WhiteStork b/packages/debian/usr/bin/WhiteStork
deleted file mode 100755 (executable)
index 0c973cb..0000000
Binary files a/packages/debian/usr/bin/WhiteStork and /dev/null differ
diff --git a/packages/debian/usr/share/applications/hildon/whitestorkgui.desktop b/packages/debian/usr/share/applications/hildon/whitestorkgui.desktop
deleted file mode 100644 (file)
index 290220c..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Version=1.0
-Name=WhiteStork Dictionary
-Comment=Multilingual dictionary
-Exec=/usr/bin/WhiteStork
-X-Osso-Service=org.maemo.WhiteStorkGui
-Icon=whitestork_icon
-Terminal=true
-Type=Application
-X-HildonDesk-ShowInToolbar=true
-X-Osso-Type=application/x-executable
-X-Window-Icon=whitestork_icon
diff --git a/packages/debian/usr/share/dbus-1/services/org.maemo.WhiteStorkGui.service b/packages/debian/usr/share/dbus-1/services/org.maemo.WhiteStorkGui.service
deleted file mode 100644 (file)
index 6eaf142..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# Sample service description file
-[D-BUS Service]
-Name=org.maemo.WhiteStorkGui
-Exec=/usr/bin/WhiteStork
diff --git a/packages/debian/usr/share/doc/whitestorkgui/changelog.Debian.gz b/packages/debian/usr/share/doc/whitestorkgui/changelog.Debian.gz
deleted file mode 100644 (file)
index 19ddf80..0000000
Binary files a/packages/debian/usr/share/doc/whitestorkgui/changelog.Debian.gz and /dev/null differ
diff --git a/packages/debian/usr/share/doc/whitestorkgui/changelog.gz b/packages/debian/usr/share/doc/whitestorkgui/changelog.gz
deleted file mode 100644 (file)
index 74a0596..0000000
Binary files a/packages/debian/usr/share/doc/whitestorkgui/changelog.gz and /dev/null differ
diff --git a/packages/debian/usr/share/doc/whitestorkgui/copyright b/packages/debian/usr/share/doc/whitestorkgui/copyright
deleted file mode 100644 (file)
index 5e212d5..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-Terms of use
-
-
-READ THE TERMS OF USE CAREFULLY BEFORE INSTALALTION OF THIS SOFTWARE. BY
-INSTALALTION OF THIS SOFTWARE, YOU AGREE TO THE FOLLOWING TERMS OF USE.
-
-1. LICENSE TO USE. ComArch grants you a non-exclusive and non-transferable
-license for the internal use only of the accompanying software and
-documentation and any error corrections provided by ComArch (collectively
-"Software"), by the one user.
-
-2. RESTRICTIONS. Software is confidential and copyrighted. Title to Software
-and all associated intellectual property rights is retained by ComArch
-and/or its licensors. Unless enforcement is prohibited by applicable law,
-you may not modify, decompile, or reverse engineer Software. You acknowledge
-that Software is not designed, licensed or intended for use in the design,
-construction, operation or maintenance of any nuclear facility. Sun ComArch
-disclaims any express or implied warranty of fitness for such uses. No
-right, title or interest in or to any trademark, service mark, logo or trade
-name of ComArch or its licensors is granted under this terms of use.
-
-
-3. DISCLAIMER OF WARRANTY. UNLESS SPECIFIED IN THIS AGREEMENT TERMS OF USE,
-ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
-ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
-NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE DISCLAIMERS
-ARE HELD TO BE LEGALLY INVALID.
-
-4. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO EVENT
-WILL COMARCH OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR
-DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE
-DAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT
-OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF COMARCH
-HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will
-ComArch's liability to you, whether in contract, tort (including
-negligence), or otherwise, exceed []. The foregoing limitations will apply
-even if the above stated warranty fails of its essential purpose.
-
-5. Termination. This license is effective until terminated. You may
-terminate this license at any time by destroying all copies of Software.
-This license will terminate immediately without notice from ComArch if you
-fail to comply with any provision of this license. Upon Termination, you
-must destroy all copies of Software.
-
-6. Export Regulations. All Software and technical data delivered under this
-terms of use are subject to Polish export control laws and may be subject to
-export or import regulations in other countries. You agree to comply
-strictly with all such laws and regulations and acknowledge that you have
-the responsibility to obtain such licenses to export, re-export, or import
-as may be required after delivery to you.
-
-7. Governing Law. Any action related to this license will be governed by
-Polish Law.
-
-8. Severability. If any provision of this terms of use is held to be
-unenforceable, this terms of use will remain in effect with the provision
-omitted, unless omission would frustrate the intent of the parties, in which
-case this terms of use will immediately terminate.
-
-9. Integration. This document is the entire  agreement between you and
-ComArch relating to its subject matter. It supersedes all prior or
-contemporaneous oral or written communications, proposals, representations
-and warranties and prevails over any conflicting or additional terms of any
-quote, order, acknowledgment, or other communication between the parties
-relating to its subject matter during the term of these terms of use. No
-modification of this Agreement will be binding, unless in writing and signed
-by an authorized representative of each party.
-
-
diff --git a/packages/debian/usr/share/pixmaps/whitestork.png b/packages/debian/usr/share/pixmaps/whitestork.png
deleted file mode 100644 (file)
index 751eb6e..0000000
Binary files a/packages/debian/usr/share/pixmaps/whitestork.png and /dev/null differ
diff --git a/packages/debian/usr/share/pixmaps/whitestork_icon.png b/packages/debian/usr/share/pixmaps/whitestork_icon.png
deleted file mode 100644 (file)
index 2c3563b..0000000
Binary files a/packages/debian/usr/share/pixmaps/whitestork_icon.png and /dev/null differ
diff --git a/po/POTFILES.in b/po/POTFILES.in
new file mode 100644 (file)
index 0000000..08090ce
--- /dev/null
@@ -0,0 +1,5 @@
+# List of source files containing translatable strings.
+
+# Package source files
+../gui/src/ws_gui_layout.c
+../gui/src/ws_gui_callbacks.c
\ No newline at end of file
diff --git a/po/domain.mo b/po/domain.mo
new file mode 100644 (file)
index 0000000..dd44fee
Binary files /dev/null and b/po/domain.mo differ
diff --git a/po/en_GB.po b/po/en_GB.po
new file mode 100644 (file)
index 0000000..8cff51c
--- /dev/null
@@ -0,0 +1,548 @@
+# Copyright (C) 2006
+# This file is distributed under the same license as the PACKAGE package.
+# Anna Gadomska R <Anna.Gadomska@comarch.pl>, 2006.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-14 11:34+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Anna Gadomska <Anna.Gadomska@comarch.pl>\n"
+"Language-Team: polish <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gui/src/ws_gui_layout.c:42
+msgid "ws_ni_welcome"
+msgstr "Welcome to WhiteStork Dictionary!"
+
+#: ../gui/src/ws_gui_layout.c:45 ../gui/src/ws_gui_callbacks.c:143
+#: ../gui/src/ws_gui_callbacks.c:854 ../gui/src/ws_gui_callbacks.c:980
+msgid " "
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:63 ../gui/src/ws_gui_layout.c:1318
+msgid "WhiteStork"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:111 ../gui/src/ws_gui_layout.c:1328
+#: ../gui/src/ws_gui_layout.c:1335
+msgid "Tahoma 12"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:116
+msgid "url_requested"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:174 ../gui/src/ws_gui_layout.c:351
+msgid "ws_me_search_find"
+msgstr "Find"
+
+#: ../gui/src/ws_gui_layout.c:212
+msgid "search"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:217
+msgid "toggled"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:222 ../gui/src/ws_gui_layout.c:227
+#: ../gui/src/ws_gui_layout.c:231
+msgid "clicked"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:266
+msgid "ws_me_dictionaries"
+msgstr "Dictionaries"
+
+#: ../gui/src/ws_gui_layout.c:268
+msgid "ws_me_bookmarks"
+msgstr "Bookmarks"
+
+#: ../gui/src/ws_gui_layout.c:270
+msgid "ws_me_edit"
+msgstr "Edit"
+
+#: ../gui/src/ws_gui_layout.c:272
+msgid "ws_me_view"
+msgstr "View"
+
+#: ../gui/src/ws_gui_layout.c:274
+msgid "ws_me_search"
+msgstr "Search"
+
+#: ../gui/src/ws_gui_layout.c:276
+msgid "ws_me_about"
+msgstr "About ..."
+
+#: ../gui/src/ws_gui_layout.c:278
+msgid "ws_me_close"
+msgstr "Close"
+
+#: ../gui/src/ws_gui_layout.c:285
+msgid "ws_me_dictionaries_load"
+msgstr "Load dictionary"
+
+#: ../gui/src/ws_gui_layout.c:287
+msgid "ws_me_dictionaries_select"
+msgstr "Select dictionaries"
+
+#: ../gui/src/ws_gui_layout.c:289
+msgid "ws_me_dictionaries_remove"
+msgstr "Remove dictionaries"
+
+#: ../gui/src/ws_gui_layout.c:291
+msgid "ws_me_dictionaries_optimize"
+msgstr "Optimize dictionaries"
+
+#: ../gui/src/ws_gui_layout.c:303
+msgid "ws_me_bookmarks_open"
+msgstr "Open Bookmarks"
+
+#: ../gui/src/ws_gui_layout.c:305
+msgid "ws_me_bookmarks_close"
+msgstr "Close Bookmarks"
+
+#: ../gui/src/ws_gui_layout.c:307
+msgid "ws_me_bookmarks_add"
+msgstr "Add Bookmark"
+
+#: ../gui/src/ws_gui_layout.c:309
+msgid "ws_me_bookmarks_remove"
+msgstr "Remove bookmark"
+
+#: ../gui/src/ws_gui_layout.c:321
+msgid "ws_me_edit_copy"
+msgstr "Copy"
+
+#: ../gui/src/ws_gui_layout.c:323
+msgid "ws_me_edit_paste"
+msgstr "Paste"
+
+#: ../gui/src/ws_gui_layout.c:325
+msgid "ws_me_edit_select_all"
+msgstr "Select All"
+
+#: ../gui/src/ws_gui_layout.c:334
+msgid "ws_me_view_hide_words_list"
+msgstr "Hide words list"
+
+#: ../gui/src/ws_gui_layout.c:336
+msgid "ws_me_view_zoom_in"
+msgstr "Zoom in"
+
+#: ../gui/src/ws_gui_layout.c:338
+msgid "ws_me_view_zoom_out"
+msgstr "Zoom out"
+
+#: ../gui/src/ws_gui_layout.c:340
+msgid "ws_me_view_fullscreen"
+msgstr "Fullscreen"
+
+#: ../gui/src/ws_gui_layout.c:353
+msgid "ws_me_search_find_next"
+msgstr "Find next"
+
+#: ../gui/src/ws_gui_layout.c:355
+msgid "ws_me_search_find_prev"
+msgstr "Find previous"
+
+#: ../gui/src/ws_gui_layout.c:357
+msgid "ws_me_search_stop"
+msgstr "Stop"
+
+#: ../gui/src/ws_gui_layout.c:410 ../gui/src/ws_gui_layout.c:415
+#: ../gui/src/ws_gui_layout.c:420 ../gui/src/ws_gui_layout.c:425
+#: ../gui/src/ws_gui_layout.c:429 ../gui/src/ws_gui_layout.c:434
+#: ../gui/src/ws_gui_layout.c:439 ../gui/src/ws_gui_layout.c:444
+#: ../gui/src/ws_gui_layout.c:449 ../gui/src/ws_gui_layout.c:454
+#: ../gui/src/ws_gui_layout.c:459 ../gui/src/ws_gui_layout.c:464
+#: ../gui/src/ws_gui_layout.c:469 ../gui/src/ws_gui_layout.c:474
+#: ../gui/src/ws_gui_layout.c:479 ../gui/src/ws_gui_layout.c:484
+#: ../gui/src/ws_gui_layout.c:489 ../gui/src/ws_gui_layout.c:494
+#: ../gui/src/ws_gui_layout.c:499 ../gui/src/ws_gui_layout.c:504
+#: ../gui/src/ws_gui_layout.c:509 ../gui/src/ws_gui_layout.c:515
+#: ../gui/src/ws_gui_layout.c:521 ../gui/src/ws_gui_layout.c:621
+#: ../gui/src/ws_gui_layout.c:626 ../gui/src/ws_gui_layout.c:631
+#: ../gui/src/ws_gui_layout.c:636 ../gui/src/ws_gui_layout.c:641
+#: ../gui/src/ws_gui_layout.c:645
+msgid "activate"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:560
+msgid "ws_mp_search"
+msgstr "Search"
+
+#: ../gui/src/ws_gui_layout.c:580
+msgid "ws_mp_edit_copy"
+msgstr "Copy"
+
+#: ../gui/src/ws_gui_layout.c:585
+msgid "ws_mp_edit_paste"
+msgstr "Paste"
+
+#: ../gui/src/ws_gui_layout.c:590
+msgid "ws_mp_edit_select_all"
+msgstr "Select All"
+
+#: ../gui/src/ws_gui_layout.c:597
+msgid "ws_mp_edit"
+msgstr "Edit"
+
+#: ../gui/src/ws_gui_layout.c:605
+msgid "ws_mp_zoom_in"
+msgstr "Zoom in"
+
+#: ../gui/src/ws_gui_layout.c:610
+msgid "ws_mp_zoom_out"
+msgstr "Zoom out"
+
+#: ../gui/src/ws_gui_layout.c:708 ../gui/src/ws_gui_layout.c:868
+#: ../gui/src/ws_gui_layout.c:1185
+msgid ""
+"\n"
+".::GUI::. /apps/WhiteStork/Dictionaries does not exist!!"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:712 ../gui/src/ws_gui_layout.c:904
+msgid "ws_ti_choose_dictionaries_title"
+msgstr "Choose dictionaries"
+
+#: ../gui/src/ws_gui_layout.c:741 ../gui/src/ws_gui_layout.c:794
+#: ../gui/src/ws_gui_layout.c:811 ../gui/src/ws_gui_layout.c:1065
+msgid "/active"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:767 ../gui/src/ws_gui_layout.c:941
+#: ../gui/src/ws_gui_layout.c:1233 ../gui/src/ws_gui_layout.c:1427
+#: ../gui/src/ws_gui_layout.c:1488 ../gui/src/ws_gui_layout.c:1432
+msgid "ws_db_cancel"
+msgstr "Cancel"
+
+#: ../gui/src/ws_gui_layout.c:773 ../gui/src/ws_gui_layout.c:946
+#: ../gui/src/ws_gui_layout.c:1422 ../gui/src/ws_gui_layout.c:1483
+#: ../gui/src/ws_gui_layout.c:1427
+msgid "ws_db_ok"
+msgstr "OK"
+
+#: ../gui/src/ws_gui_layout.c:792 ../gui/src/ws_gui_layout.c:809
+#: ../gui/src/ws_gui_layout.c:966 ../gui/src/ws_gui_layout.c:986
+#: ../gui/src/ws_gui_layout.c:1055 ../gui/src/ws_gui_layout.c:1063
+#: ../gui/src/ws_gui_layout.c:1097 ../gui/src/ws_gui_layout.c:1257
+msgid "/"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:876 ../gui/src/ws_gui_layout.c:968
+#: ../gui/src/ws_gui_layout.c:988 ../gui/src/ws_gui_layout.c:1099
+msgid "/optimized"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:892
+msgid "ws_ni_no_dictionaries_to_optimize"
+msgstr "There are no dictionaries to optimize."
+
+#: ../gui/src/ws_gui_layout.c:1022
+msgid "ws_ti_load_dictionary_title"
+msgstr "Load dictionary"
+
+#: ../gui/src/ws_gui_layout.c:1051
+msgid ".xdxf"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1055
+msgid "/path"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1074
+msgid "ws_ni_dictionaries_activation_question"
+msgstr "Would you like to start using this dictionary now?"
+
+#: ../gui/src/ws_gui_layout.c:1106
+msgid "ws_ni_dictionaries_optimalization_question"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1131
+msgid "ws_ni_dictionary_added"
+msgstr "New dictionary has been added."
+
+#: ../gui/src/ws_gui_layout.c:1138
+msgid "ws_ni_dictionary_wrong_file"
+msgstr "Wrong dictionary file."
+
+#: ../gui/src/ws_gui_layout.c:1189
+msgid "ws_ti_remove_dictionaries_title"
+msgstr "Remove dictionaries"
+
+#: ../gui/src/ws_gui_layout.c:1226
+msgid "bookmarks"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1239
+msgid "ws_bd_remove_dictionaries_remove_selected"
+msgstr "remove selected"
+
+#: ../gui/src/ws_gui_layout.c:1305
+msgid "ws_ti_about_title"
+msgstr "About ..."
+
+#: ../gui/src/ws_gui_layout.c:1315
+msgid "/usr/share/pixmaps/whitestork.png"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1319
+msgid "Tahoma 18"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1321
+msgid "__________"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1324
+msgid ""
+"Maemo Multilingual Dictionary\n"
+"ver. "
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1333
+msgid ""
+"Copyright 2006, ComArch S.A\n"
+"All rightsreserved"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1355
+msgid "Tahoma 10"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1363
+msgid ""
+"The following third party\n"
+"components may be\n"
+"included depending \n"
+"on your system configuration:\n"
+"\n"
+"D-BUS - License information:\n"
+"http://opensource.org/licenses/academic.php"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1401
+msgid "ws_ti_add_bookmark"
+msgstr "Add bookmark"
+
+#: ../gui/src/ws_gui_layout.c:1413
+msgid "ws_ti_bookmarks_add_question"
+msgstr "Add to bookmarks?"
+
+#: ../gui/src/ws_gui_layout.c:1437
+msgid ""
+"\n"
+".::GUI::. Bookmark added, happy days! :D\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1444
+msgid ""
+"\n"
+".::GUI::. Sorry ;-("
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1449
+msgid "ws_ni_bookmark_added"
+msgstr "Bookmark has been added"
+
+#: ../gui/src/ws_gui_layout.c:1457
+msgid "ws_ni_bookmark_not_added"
+msgstr "Bookmark could not be added"
+
+#: ../gui/src/ws_gui_layout.c:1462
+msgid "ws_ti_remove_bookmark"
+msgstr "Remove bookmark"
+
+#: ../gui/src/ws_gui_layout.c:1474
+msgid "ws_ni_remove_bookmark_question"
+msgstr "Remove from bookmarks?"
+
+#: ../gui/src/ws_gui_layout.c:1498
+msgid ""
+"\n"
+".::GUI::. Bookmark removed, well done! :D\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1504
+msgid ""
+"\n"
+".::GUI::. Sorry\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1515
+msgid "ws_ni_bookmark_removed"
+msgstr "Bookmark has been removed"
+
+#: ../gui/src/ws_gui_layout.c:1522
+msgid "ws_ni_bookmark_not_removed"
+msgstr "Bookmark could not be removed"
+
+#: ../gui/src/ws_gui_callbacks.c:44
+#, c-format
+msgid "XDXF->%s() start counting time for function '%s()'.\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:74
+#, c-format
+msgid "XDXF->%s() function '%s()' was working for: %g [s] or %ld [us].\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:114
+msgid "ws_ni_error_occured"
+msgstr "An error occured"
+
+#: ../gui/src/ws_gui_callbacks.c:119
+msgid "response"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:133
+msgid "ws_ni_no_dictionary_available"
+msgstr "There is no dictionary available"
+
+#: ../gui/src/ws_gui_callbacks.c:168
+msgid "ws_pb_caching"
+msgstr "Caching ..."
+
+#: ../gui/src/ws_gui_callbacks.c:212
+msgid "ws_ni_dictionary_unavailable"
+msgstr "Dictionary unavailable."
+
+#: ../gui/src/ws_gui_callbacks.c:289
+msgid "ws_ni_no_words_found"
+msgstr "No words found"
+
+#: ../gui/src/ws_gui_callbacks.c:758
+msgid "Name"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:760
+msgid "text"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:857 ../gui/src/ws_gui_callbacks.c:909
+#: ../gui/src/ws_gui_callbacks.c:915 ../gui/src/ws_gui_callbacks.c:960
+msgid "prefix"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:867
+msgid "ws_ni_no_text_selected"
+msgstr "No text selected"
+
+#: ../gui/src/ws_gui_callbacks.c:913
+msgid "\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:970
+msgid "ws_ab_searching"
+msgstr "Searching ..."
+
+#: ../gui/src/ws_gui_callbacks.c:987
+msgid "ws_ni_no_word_typed"
+msgstr "No word typed."
+
+#: ../gui/src/ws_gui_callbacks.c:1008
+msgid "ws_ni_search_aborted"
+msgstr "Search has been aborted."
+
+#: ../gui/src/ws_gui_callbacks.c:1112
+msgid "file:"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1160
+msgid "button-press-event"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1268 ../gui/src/ws_gui_callbacks.c:1270
+#: ../gui/src/ws_gui_callbacks.c:1283
+msgid "<PATTERN_OPEN>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1277
+msgid ""
+"<html><head></head><body><center><table width=\"95%\"><tr><td><table "
+"border=1 width=100%><tr><th background=\"file:/usr/share/pixmaps/ws_top.png"
+"\"><img align=left src=\"file:/usr/share/pixmaps/engine_xdxf_icon.png"
+"\"><font color=\"#eeeeee\">"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1289 ../gui/src/ws_gui_callbacks.c:1291
+#: ../gui/src/ws_gui_callbacks.c:1299
+msgid "<PATTERN_CLOSED>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1297
+msgid "</font></th></tr></table>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1305 ../gui/src/ws_gui_callbacks.c:1307
+#: ../gui/src/ws_gui_callbacks.c:1316
+msgid "<TRANSLATION_OPEN>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1313
+msgid ""
+"<table border=1 width=100%><tr><td background=\"file:/usr/share/pixmaps/"
+"ws_tra.png\">"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1322 ../gui/src/ws_gui_callbacks.c:1324
+#: ../gui/src/ws_gui_callbacks.c:1332
+msgid "<TRANSLATION_CLOSED>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1330
+msgid "</td></tr></table></center><br>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1339
+msgid "</td></tr></table></body></html>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1341
+#, c-format
+msgid ".::GUI::. Zawartosc stringa to: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1345
+#, c-format
+msgid ".::GUI::. Zawartosc RAW to: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1362 ../gui/src/ws_gui_callbacks.c:1384
+msgid "/bookmarks"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1362 ../gui/src/ws_gui_callbacks.c:1384
+msgid "active"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1366
+msgid ""
+"\n"
+".::GUI::. Bookmark mode on\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1388
+msgid ""
+"\n"
+".::GUI::. Bookmark mode off\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1402 ../gui/src/ws_gui_callbacks.c:1426
+#, c-format
+msgid ".::GUI::. LAST_WORD: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1412
+msgid "ws_ni_select_word_to_add"
+msgstr "Select word to add."
+
+#: ../gui/src/ws_gui_callbacks.c:1436
+msgid "ws_ni_select_word_to_remove"
+msgstr "Select word to remove."
diff --git a/po/pl_PL.po b/po/pl_PL.po
new file mode 100644 (file)
index 0000000..305a92a
--- /dev/null
@@ -0,0 +1,550 @@
+# Copyright (C) 2006
+# This file is distributed under the same license as the PACKAGE package.
+# Anna Gadomska, <Anna.Gadomska@comarch.pl>, 2006.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-14 11:34+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: Anna Gadomska <Anna.Gadomska@comarch.pl>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gui/src/ws_gui_layout.c:42
+msgid "ws_ni_welcome"
+msgstr "<font size=+2><center><br>Witamy w słowniku<br><b>WhiteStork</b><br>"
+       "</font><br><IMG SRC=file:/usr/share/pixmaps/whitestork.png></center>"
+
+#: ../gui/src/ws_gui_layout.c:45 ../gui/src/ws_gui_callbacks.c:143
+#: ../gui/src/ws_gui_callbacks.c:854 ../gui/src/ws_gui_callbacks.c:980
+msgid " "
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:63 ../gui/src/ws_gui_layout.c:1318
+msgid "WhiteStork"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:111 ../gui/src/ws_gui_layout.c:1328
+#: ../gui/src/ws_gui_layout.c:1335
+msgid "Tahoma 12"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:116
+msgid "url_requested"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:174 ../gui/src/ws_gui_layout.c:351
+msgid "ws_me_search_find"
+msgstr "Znajdz"
+
+#: ../gui/src/ws_gui_layout.c:212
+msgid "search"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:217
+msgid "toggled"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:222 ../gui/src/ws_gui_layout.c:227
+#: ../gui/src/ws_gui_layout.c:231
+msgid "clicked"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:266
+msgid "ws_me_dictionaries"
+msgstr "Slowniki"
+
+#: ../gui/src/ws_gui_layout.c:268
+msgid "ws_me_bookmarks"
+msgstr "Zakładki"
+
+#: ../gui/src/ws_gui_layout.c:270
+msgid "ws_me_edit"
+msgstr "Edycja"
+
+#: ../gui/src/ws_gui_layout.c:272
+msgid "ws_me_view"
+msgstr "Widok"
+
+#: ../gui/src/ws_gui_layout.c:274
+msgid "ws_me_search"
+msgstr "Znajdź"
+
+#: ../gui/src/ws_gui_layout.c:276
+msgid "ws_me_about"
+msgstr "O programie ..."
+
+#: ../gui/src/ws_gui_layout.c:278
+msgid "ws_me_close"
+msgstr "Zamknij"
+
+#: ../gui/src/ws_gui_layout.c:285
+msgid "ws_me_dictionaries_load"
+msgstr "Załaduj słownik"
+
+#: ../gui/src/ws_gui_layout.c:287
+msgid "ws_me_dictionaries_select"
+msgstr "Wybierz słowniki"
+
+#: ../gui/src/ws_gui_layout.c:289
+msgid "ws_me_dictionaries_remove"
+msgstr "Usuń słowniki"
+
+#: ../gui/src/ws_gui_layout.c:291
+msgid "ws_me_dictionaries_optimize"
+msgstr "Optymalizuj słowniki"
+
+#: ../gui/src/ws_gui_layout.c:303
+msgid "ws_me_bookmarks_open"
+msgstr "Otwórz Zakładki"
+
+#: ../gui/src/ws_gui_layout.c:305
+msgid "ws_me_bookmarks_close"
+msgstr "Zamknij Zakładki"
+
+#: ../gui/src/ws_gui_layout.c:307
+msgid "ws_me_bookmarks_add"
+msgstr "Dodaj do Zakładek"
+
+#: ../gui/src/ws_gui_layout.c:309
+msgid "ws_me_bookmarks_remove"
+msgstr "Usuń z Zakładek"
+
+#: ../gui/src/ws_gui_layout.c:321
+msgid "ws_me_edit_copy"
+msgstr "Kopiuj"
+
+#: ../gui/src/ws_gui_layout.c:323
+msgid "ws_me_edit_paste"
+msgstr "Wklej"
+
+#: ../gui/src/ws_gui_layout.c:325
+msgid "ws_me_edit_select_all"
+msgstr "Zaznacz wszystko"
+
+#: ../gui/src/ws_gui_layout.c:334
+msgid "ws_me_view_hide_words_list"
+msgstr "Ukryj listę słów"
+
+#: ../gui/src/ws_gui_layout.c:336
+msgid "ws_me_view_zoom_in"
+msgstr "Powiększ"
+
+#: ../gui/src/ws_gui_layout.c:338
+msgid "ws_me_view_zoom_out"
+msgstr "Pomniejsz"
+
+#: ../gui/src/ws_gui_layout.c:340
+msgid "ws_me_view_fullscreen"
+msgstr "Pełny ekran"
+
+#: ../gui/src/ws_gui_layout.c:353
+msgid "ws_me_search_find_next"
+msgstr "Znajdź następny"
+
+#: ../gui/src/ws_gui_layout.c:355
+msgid "ws_me_search_find_prev"
+msgstr "Znajdź poprzedni"
+
+#: ../gui/src/ws_gui_layout.c:357
+msgid "ws_me_search_stop"
+msgstr "Zatrzymaj"
+
+#: ../gui/src/ws_gui_layout.c:410 ../gui/src/ws_gui_layout.c:415
+#: ../gui/src/ws_gui_layout.c:420 ../gui/src/ws_gui_layout.c:425
+#: ../gui/src/ws_gui_layout.c:429 ../gui/src/ws_gui_layout.c:434
+#: ../gui/src/ws_gui_layout.c:439 ../gui/src/ws_gui_layout.c:444
+#: ../gui/src/ws_gui_layout.c:449 ../gui/src/ws_gui_layout.c:454
+#: ../gui/src/ws_gui_layout.c:459 ../gui/src/ws_gui_layout.c:464
+#: ../gui/src/ws_gui_layout.c:469 ../gui/src/ws_gui_layout.c:474
+#: ../gui/src/ws_gui_layout.c:479 ../gui/src/ws_gui_layout.c:484
+#: ../gui/src/ws_gui_layout.c:489 ../gui/src/ws_gui_layout.c:494
+#: ../gui/src/ws_gui_layout.c:499 ../gui/src/ws_gui_layout.c:504
+#: ../gui/src/ws_gui_layout.c:509 ../gui/src/ws_gui_layout.c:515
+#: ../gui/src/ws_gui_layout.c:521 ../gui/src/ws_gui_layout.c:621
+#: ../gui/src/ws_gui_layout.c:626 ../gui/src/ws_gui_layout.c:631
+#: ../gui/src/ws_gui_layout.c:636 ../gui/src/ws_gui_layout.c:641
+#: ../gui/src/ws_gui_layout.c:645
+msgid "activate"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:560
+msgid "ws_mp_search"
+msgstr "Znajdź"
+
+#: ../gui/src/ws_gui_layout.c:580
+msgid "ws_mp_edit_copy"
+msgstr "Kopiuj"
+
+#: ../gui/src/ws_gui_layout.c:585
+msgid "ws_mp_edit_paste"
+msgstr "Wklej"
+
+#: ../gui/src/ws_gui_layout.c:590
+msgid "ws_mp_edit_select_all"
+msgstr "Zaznacz wszystko"
+
+#: ../gui/src/ws_gui_layout.c:597
+msgid "ws_mp_edit"
+msgstr "Edycja"
+
+#: ../gui/src/ws_gui_layout.c:605
+msgid "ws_mp_zoom_in"
+msgstr "Powiększ"
+
+#: ../gui/src/ws_gui_layout.c:610
+msgid "ws_mp_zoom_out"
+msgstr "Pomniejsz"
+
+#: ../gui/src/ws_gui_layout.c:708 ../gui/src/ws_gui_layout.c:868
+#: ../gui/src/ws_gui_layout.c:1185
+msgid ""
+"\n"
+".::GUI::. /apps/WhiteStork/Dictionaries does not exist!!"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:712 ../gui/src/ws_gui_layout.c:904
+msgid "ws_ti_choose_dictionaries_title"
+msgstr "Wybierz słowniki"
+
+#: ../gui/src/ws_gui_layout.c:741 ../gui/src/ws_gui_layout.c:794
+#: ../gui/src/ws_gui_layout.c:811 ../gui/src/ws_gui_layout.c:1065
+msgid "/active"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:767 ../gui/src/ws_gui_layout.c:941
+#: ../gui/src/ws_gui_layout.c:1233 ../gui/src/ws_gui_layout.c:1427
+#: ../gui/src/ws_gui_layout.c:1488
+msgid "ws_db_cancel"
+msgstr "Anuluj"
+
+#: ../gui/src/ws_gui_layout.c:773 ../gui/src/ws_gui_layout.c:946
+#: ../gui/src/ws_gui_layout.c:1422 ../gui/src/ws_gui_layout.c:1483
+msgid "ws_db_ok"
+msgstr "OK"
+
+#: ../gui/src/ws_gui_layout.c:792 ../gui/src/ws_gui_layout.c:809
+#: ../gui/src/ws_gui_layout.c:966 ../gui/src/ws_gui_layout.c:986
+#: ../gui/src/ws_gui_layout.c:1055 ../gui/src/ws_gui_layout.c:1063
+#: ../gui/src/ws_gui_layout.c:1097 ../gui/src/ws_gui_layout.c:1257
+msgid "/"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:876 ../gui/src/ws_gui_layout.c:968
+#: ../gui/src/ws_gui_layout.c:988 ../gui/src/ws_gui_layout.c:1099
+msgid "/optimized"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:892
+msgid "ws_ni_no_dictionaries_to_optimize"
+msgstr "Brak słowników do zoptymalizowania."
+
+#: ../gui/src/ws_gui_layout.c:1022
+msgid "ws_ti_load_dictionary_title"
+msgstr "Załaduj słownik"
+
+#: ../gui/src/ws_gui_layout.c:1051
+msgid ".xdxf"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1055
+msgid "/path"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1074
+msgid "ws_ni_dictionaries_activation_question"
+msgstr "Czy chcesz zacząć używać ten słownik już teraz?"
+
+#: ../gui/src/ws_gui_layout.c:1106
+msgid "ws_ni_dictionaries_optimalization_question"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1131
+msgid "ws_ni_dictionary_added"
+msgstr "Nowy słownik został dodany."
+
+#: ../gui/src/ws_gui_layout.c:1138
+msgid "ws_ni_dictionary_wrong_file"
+msgstr "Zły plik słownika."
+
+#: ../gui/src/ws_gui_layout.c:1189
+msgid "ws_ti_remove_dictionaries_title"
+msgstr "Usuń słowniki"
+
+#: ../gui/src/ws_gui_layout.c:1226
+msgid "bookmarks"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1239
+msgid "ws_bd_remove_dictionaries_remove_selected"
+msgstr "usuń zaznaczone"
+
+#: ../gui/src/ws_gui_layout.c:1305
+msgid "ws_ti_about_title"
+msgstr "O Programie ..."
+
+#: ../gui/src/ws_gui_layout.c:1315
+msgid "/usr/share/pixmaps/whitestork.png"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1319
+msgid "Tahoma 18"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1321
+msgid "__________"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1324
+msgid ""
+"Maemo Multilingual Dictionary\n"
+"ver. "
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1333
+msgid ""
+"Copyright 2006, ComArch S.A\n"
+"All rightsreserved"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1355
+msgid "Tahoma 10"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1363
+msgid ""
+"The following third party\n"
+"components may be\n"
+"included depending \n"
+"on your system configuration:\n"
+"\n"
+"D-BUS - License information:\n"
+"http://opensource.org/licenses/academic.php"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1401
+msgid "ws_ti_add_bookmark"
+msgstr "Dodaj do zakładek"
+
+#: ../gui/src/ws_gui_layout.c:1413
+msgid "ws_ti_bookmarks_add_question"
+msgstr "Dodać do zakładek?"
+
+#: ../gui/src/ws_gui_layout.c:1437
+msgid ""
+"\n"
+".::GUI::. Bookmark added, happy days! :D\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1444
+msgid ""
+"\n"
+".::GUI::. Sorry ;-("
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1449
+msgid "ws_ni_bookmark_added"
+msgstr "Zakładka została dodana"
+
+#: ../gui/src/ws_gui_layout.c:1457
+msgid "ws_ni_bookmark_not_added"
+msgstr "Zakładka nie mogła być dodana"
+
+
+#: ../gui/src/ws_gui_layout.c:1462
+msgid "ws_ti_remove_bookmark"
+msgstr "Usuń zakładkę"
+
+#: ../gui/src/ws_gui_layout.c:1474
+msgid "ws_ni_remove_bookmark_question"
+msgstr "Usunąć z zakładek?"
+
+#: ../gui/src/ws_gui_layout.c:1498
+msgid ""
+"\n"
+".::GUI::. Bookmark removed, well done! :D\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1504
+msgid ""
+"\n"
+".::GUI::. Sorry\n"
+msgstr ""
+
+
+#: ../gui/src/ws_gui_layout.c:1515
+msgid "ws_ni_bookmark_removed"
+msgstr "Zakładkę usunieto."
+
+#: ../gui/src/ws_gui_layout.c:1522
+msgid "ws_ni_bookmark_not_removed"
+msgstr "Zakładka nie mogła zostać usunięta"
+
+#: ../gui/src/ws_gui_callbacks.c:44
+#, c-format
+msgid "XDXF->%s() start counting time for function '%s()'.\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:74
+#, c-format
+msgid "XDXF->%s() function '%s()' was working for: %g [s] or %ld [us].\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:114
+msgid "ws_ni_error_occured"
+msgstr "Wystąpił błąd."
+
+#: ../gui/src/ws_gui_callbacks.c:119
+msgid "response"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:133
+msgid "ws_ni_no_dictionary_available"
+msgstr "Brak dostępnych słowników."
+
+#: ../gui/src/ws_gui_callbacks.c:168
+msgid "ws_pb_caching"
+msgstr "Optymalizacja ..."
+
+#: ../gui/src/ws_gui_callbacks.c:212
+msgid "ws_ni_dictionary_unavailable"
+msgstr "Słownik niedostępny."
+
+#: ../gui/src/ws_gui_callbacks.c:289
+msgid "ws_ni_no_words_found"
+msgstr "Nie znaleziono słów."
+
+#: ../gui/src/ws_gui_callbacks.c:758
+msgid "Name"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:760
+msgid "text"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:857 ../gui/src/ws_gui_callbacks.c:909
+#: ../gui/src/ws_gui_callbacks.c:915 ../gui/src/ws_gui_callbacks.c:960
+msgid "prefix"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:867
+msgid "ws_ni_no_text_selected"
+msgstr "Zaznacz tekst."
+
+#: ../gui/src/ws_gui_callbacks.c:913
+msgid "\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:970
+msgid "ws_ab_searching"
+msgstr "Wyszukiwanie ..."
+
+#: ../gui/src/ws_gui_callbacks.c:987
+msgid "ws_ni_no_word_typed"
+msgstr "Nie wpisano słowa."
+
+#: ../gui/src/ws_gui_callbacks.c:1008
+msgid "ws_ni_search_aborted"
+msgstr "Wyszukiwanie zostało przerwane."
+
+#: ../gui/src/ws_gui_callbacks.c:1112
+msgid "file:"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1160
+msgid "button-press-event"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1268 ../gui/src/ws_gui_callbacks.c:1270
+#: ../gui/src/ws_gui_callbacks.c:1283
+msgid "<PATTERN_OPEN>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1277
+msgid ""
+"<html><head></head><body><center><table width=\"95%\"><tr><td><table "
+"border=1 width=100%><tr><th background=\"file:/usr/share/pixmaps/ws_top.png"
+"\"><img align=left src=\"file:/usr/share/pixmaps/engine_xdxf_icon.png"
+"\"><font color=\"#eeeeee\">"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1289 ../gui/src/ws_gui_callbacks.c:1291
+#: ../gui/src/ws_gui_callbacks.c:1299
+msgid "<PATTERN_CLOSED>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1297
+msgid "</font></th></tr></table>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1305 ../gui/src/ws_gui_callbacks.c:1307
+#: ../gui/src/ws_gui_callbacks.c:1316
+msgid "<TRANSLATION_OPEN>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1313
+msgid ""
+"<table border=1 width=100%><tr><td background=\"file:/usr/share/pixmaps/"
+"ws_tra.png\">"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1322 ../gui/src/ws_gui_callbacks.c:1324
+#: ../gui/src/ws_gui_callbacks.c:1332
+msgid "<TRANSLATION_CLOSED>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1330
+msgid "</td></tr></table></center><br>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1339
+msgid "</td></tr></table></body></html>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1341
+#, c-format
+msgid ".::GUI::. Zawartosc stringa to: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1345
+#, c-format
+msgid ".::GUI::. Zawartosc RAW to: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1362 ../gui/src/ws_gui_callbacks.c:1384
+msgid "/bookmarks"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1362 ../gui/src/ws_gui_callbacks.c:1384
+msgid "active"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1366
+msgid ""
+"\n"
+".::GUI::. Bookmark mode on\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1388
+msgid ""
+"\n"
+".::GUI::. Bookmark mode off\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1402 ../gui/src/ws_gui_callbacks.c:1426
+#, c-format
+msgid ".::GUI::. LAST_WORD: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1412
+msgid "ws_ni_select_word_to_add"
+msgstr "Wybierz słowo do dodania."
+
+#: ../gui/src/ws_gui_callbacks.c:1436
+msgid "ws_ni_select_word_to_remove"
+msgstr "Wybierz słowo do usunięcia."
diff --git a/po/pl_Pl.po b/po/pl_Pl.po
new file mode 100644 (file)
index 0000000..e937d8f
--- /dev/null
@@ -0,0 +1,288 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+
+msgid ""
+msgstr ""
+"Project-Id-Version: 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-10-20 12:32+0200\n"
+"PO-Revision-Date: 2006-10-21 12:50+0200\n"
+"Last-Translator: Ania Gadomska <gandzia@vp.pl>\n"
+"Language-Team: polish <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gui/src/ws_gui_layout.c:57 ../gui/src/ws_gui_layout.c:1225
+msgid "WhiteStork"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:105 ../gui/src/ws_gui_layout.c:1232
+#: ../gui/src/ws_gui_layout.c:1238
+msgid "Tahoma 12"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:109
+msgid "url_requested"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:159
+msgid "Find: "
+msgstr "Znajdź"
+
+#: ../gui/src/ws_gui_layout.c:249
+msgid "Dictionaries"
+msgstr "Słowniki"
+
+#: ../gui/src/ws_gui_layout.c:251 ../gui/src/ws_gui_layout.c:529
+msgid "Edit"
+msgstr "Edycja"
+
+#: ../gui/src/ws_gui_layout.c:253
+msgid "View"
+msgstr "Widok"
+
+#: ../gui/src/ws_gui_layout.c:255 ../gui/src/ws_gui_layout.c:492
+msgid "Search"
+msgstr "Szukaj"
+
+#: ../gui/src/ws_gui_layout.c:257
+msgid "About..."
+msgstr "O programie..."
+
+#: ../gui/src/ws_gui_layout.c:259
+msgid "Close"
+msgstr "Zamknij"
+
+#: ../gui/src/ws_gui_layout.c:266 ../gui/src/ws_gui_layout.c:938
+msgid "Load dictionary"
+msgstr "Ładuj słowniki"
+
+#: ../gui/src/ws_gui_layout.c:268
+msgid "Select dictionaries ..."
+msgstr "Wybierz sowniki ..."
+
+#: ../gui/src/ws_gui_layout.c:270
+msgid "Remove dictionaries ..."
+msgstr "Usuń słowniki ..."
+
+#: ../gui/src/ws_gui_layout.c:272
+msgid "Optimize dictionaries ..."
+msgstr "Zopytmalizuj słwoniki ..."
+
+#: ../gui/src/ws_gui_layout.c:288 ../gui/src/ws_gui_layout.c:512
+msgid "Copy"
+msgstr "Kopiuj"
+
+#: ../gui/src/ws_gui_layout.c:290 ../gui/src/ws_gui_layout.c:517
+msgid "Paste"
+msgstr "Wklej"
+
+#: ../gui/src/ws_gui_layout.c:292 ../gui/src/ws_gui_layout.c:522
+msgid "Select All"
+msgstr "Zaznacz wszystko"
+
+#: ../gui/src/ws_gui_layout.c:301
+msgid "Hide words list"
+msgstr "Ukryj liste"
+
+#: ../gui/src/ws_gui_layout.c:303 ../gui/src/ws_gui_layout.c:537
+msgid "Zoom in"
+msgstr "Powiększ"
+
+#: ../gui/src/ws_gui_layout.c:305 ../gui/src/ws_gui_layout.c:542
+msgid "Zoom out"
+msgstr "Pomniejsz"
+
+#: ../gui/src/ws_gui_layout.c:307
+msgid "Full screen"
+msgstr "Pełen ekran"
+
+#: ../gui/src/ws_gui_layout.c:318
+msgid "Find"
+msgstr "Znajdź"
+
+#: ../gui/src/ws_gui_layout.c:320
+msgid "Find next"
+msgstr "Znajdź nastepne"
+
+#: ../gui/src/ws_gui_layout.c:322
+msgid "Find previous"
+msgstr "Znajdź poprzednie"
+
+#: ../gui/src/ws_gui_layout.c:324
+msgid "Stop"
+msgstr "Stop"
+
+#: ../gui/src/ws_gui_layout.c:639 ../gui/src/ws_gui_layout.c:790
+#: ../gui/src/ws_gui_layout.c:1100
+msgid ""
+"\n"
+".::GUI::. /apps/WhiteStork/Dictionaries does not exist!!"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:643 ../gui/src/ws_gui_layout.c:824
+msgid "Choose dictionaries"
+msgstr "Wybierz słowniki"
+
+#: ../gui/src/ws_gui_layout.c:692 ../gui/src/ws_gui_layout.c:859
+#: ../gui/src/ws_gui_layout.c:1143
+msgid "cancel"
+msgstr "anuluj"
+
+#: ../gui/src/ws_gui_layout.c:698 ../gui/src/ws_gui_layout.c:864
+msgid "ok"
+msgstr "ok"
+
+#: ../gui/src/ws_gui_layout.c:812
+msgid "There are no dictionaries to optimize"
+msgstr "Brak sowników do zoptymalizowania"
+
+#: ../gui/src/ws_gui_layout.c:990
+msgid "Would you like to activate this dictionary for use from now?"
+msgstr "Czy chcesz teraz aktywować słownik?"
+
+#: ../gui/src/ws_gui_layout.c:1021
+msgid ""
+"Would you like to optimize this dictionary to make it faster to search "
+"within?"
+msgstr "Czy chcesz zoptymalizować słownik teraz?"
+
+#: ../gui/src/ws_gui_layout.c:1045
+msgid "New dictionary has been added"
+msgstr "Nowy sownik został dodany"
+
+#: ../gui/src/ws_gui_layout.c:1052
+msgid "Wrong dictionary file"
+msgstr "Zły format sownika"
+
+#: ../gui/src/ws_gui_layout.c:1104
+msgid "Remove dictionaries"
+msgstr "Usuń słownik"
+
+#: ../gui/src/ws_gui_layout.c:1149
+msgid "remove selected"
+msgstr "Usuń zaznaczone"
+
+#: ../gui/src/ws_gui_layout.c:1212
+msgid "About"
+msgstr "O programie"
+
+#: ../gui/src/ws_gui_layout.c:1231
+msgid ""
+"Maemo Multilingual Dictionary\n"
+"ver. 0.5"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1237
+msgid ""
+"Copyright 2006, ComArch S.A\n"
+"All rights reserved"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1266
+msgid ""
+"The following third party\n"
+"components may be\n"
+"included depending \n"
+"on your system configuration:\n"
+"\n"
+"D-BUS - License information:\n"
+"http://opensource.org/licenses/academic.php"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1303
+msgid "Licence"
+msgstr "Licencja"
+
+#: ../gui/src/ws_gui_layout.c:1323
+msgid ""
+"Terms of use\n"
+"\n"
+"READ THE TERMS OF USE CAREFULLY BEFORE INSTALALTION OF THIS SOFTWARE. BY\n"
+"INSTALALTION OF THIS SOFTWARE, YOU AGREE TO THE FOLLOWING TERMS OF USE.\n"
+"\n"
+"1. LICENSE TO USE. ComArch grants you a non-exclusive and non-transferable\n"
+"license for the internal use only of the accompanying software and\n"
+"documentation and any error corrections provided by ComArch (collectively "
+"\"Software\"), by the one user.\n"
+"\n"
+"2. RESTRICTIONS. Software is confidential and copyrighted. Title to "
+"Software\n"
+"and all associated intellectual property rights is retained by ComArch\n"
+"and/or its licensors. Unless enforcement is prohibited by applicable law,\n"
+"you may not modify, decompile, or reverse engineer Software. You "
+"acknowledge\n"
+"that Software is not designed, licensed or intended for use in the design,\n"
+"construction, operation or maintenance of any nuclear facility. Sun ComArch\n"
+"disclaims any express or implied warranty of fitness for such uses. No\n"
+"right, title or interest in or to any trademark, service mark, logo or "
+"trade\n"
+"name of ComArch or its licensors is granted under this terms of use.\n"
+"\n"
+"3. DISCLAIMER OF WARRANTY. UNLESS SPECIFIED IN THIS AGREEMENT TERMS OF USE,\n"
+"ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, "
+"INCLUDING\n"
+"ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE "
+"OR\n"
+"NON-INFRINGEMENT ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT THESE "
+"DISCLAIMERS\n"
+"ARE HELD TO BE LEGALLY INVALID.\n"
+"\n"
+"4. LIMITATION OF LIABILITY. TO THE EXTENT NOT PROHIBITED BY LAW, IN NO "
+"EVENT\n"
+"WILL COMARCH OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR\n"
+"DATA, OR FOR SPECIAL, INDIRECT, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE\n"
+"DAMAGES, HOWEVER CAUSED REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT\n"
+"OF OR RELATED TO THE USE OF OR INABILITY TO USE SOFTWARE, EVEN IF COMARCH\n"
+"HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. In no event will\n"
+"ComArch's liability to you, whether in contract, tort (including\n"
+"negligence), or otherwise, exceed []. The foregoing limitations will apply\n"
+"even if the above stated warranty fails of its essential purpose.\n"
+"\n"
+"5. Termination. This license is effective until terminated. You may\n"
+"terminate this license at any time by destroying all\n"
+"copies of Software.\n"
+"This license will terminate immediately without notice from ComArch if you\n"
+"fail to comply with any provision of this license. Upon Termination, you\n"
+"must destroy all copies of Software.\n"
+"\n"
+"6. Export Regulations. All Software and technical data delivered under this\n"
+"terms of use are subject to Polish export control laws and may be subject "
+"to\n"
+"export or import regulations in other countries. You agree to comply\n"
+"strictly with all such laws and regulations and acknowledge that you have\n"
+"the responsibility to obtain such licenses to export, re-export, or import\n"
+"as may be required after delivery to you.\n"
+"\n"
+"7. Governing Law. Any action related to this license will be governed by\n"
+"Polish Law.\n"
+"\n"
+"8. Severability. If any provision of this terms of use is held to be\n"
+"unenforceable, this terms of use will remain in effect with the provision\n"
+"omitted, unless omission would frustrate the intent of the parties, in "
+"which\n"
+"case this terms of use will immediately terminate.\n"
+"\n"
+"9. Integration. This document is the entire  agreement between you and\n"
+"ComArch relating to its subject matter. It supersedes all prior or\n"
+"contemporaneous oral or written communications, proposals, representations\n"
+"and warranties and prevails over any conflicting or additional\n"
+"terms of any\n"
+"quote, order, acknowledgment, or other communication between the parties\n"
+"relating to its subject matter during the term of these terms of use. No\n"
+"modification of this Agreement will be binding, unless in writing and "
+"signed\n"
+"by an authorized representative of each party."
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1325
+msgid "Agree"
+msgstr "Zgadzam się"
+
+#: ../gui/src/ws_gui_layout.c:1330
+msgid "Disagree"
+msgstr "Nie zgadzam się"
diff --git a/po/template.po b/po/template.po
new file mode 100644 (file)
index 0000000..0cbf6ea
--- /dev/null
@@ -0,0 +1,534 @@
+# 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 <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2006-11-28 11:49+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../gui/src/ws_gui_layout.c:43
+msgid "ws_ni_welcome"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:46 ../gui/src/ws_gui_callbacks.c:143
+#: ../gui/src/ws_gui_callbacks.c:855 ../gui/src/ws_gui_callbacks.c:981
+msgid " "
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:64 ../gui/src/ws_gui_layout.c:1324
+msgid "WhiteStork"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:112 ../gui/src/ws_gui_layout.c:1334
+#: ../gui/src/ws_gui_layout.c:1341
+msgid "Tahoma 12"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:117
+msgid "url_requested"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:174 ../gui/src/ws_gui_layout.c:351
+msgid "ws_me_search_find"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:212
+msgid "search"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:217
+msgid "toggled"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:222 ../gui/src/ws_gui_layout.c:227
+#: ../gui/src/ws_gui_layout.c:231
+msgid "clicked"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:266
+msgid "ws_me_dictionaries"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:268
+msgid "ws_me_bookmarks"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:270
+msgid "ws_me_edit"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:272
+msgid "ws_me_view"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:274
+msgid "ws_me_search"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:276
+msgid "ws_me_about"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:278
+msgid "ws_me_close"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:285
+msgid "ws_me_dictionaries_load"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:287
+msgid "ws_me_dictionaries_select"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:289
+msgid "ws_me_dictionaries_remove"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:291
+msgid "ws_me_dictionaries_optimize"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:303
+msgid "ws_me_bookmarks_open"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:305
+msgid "ws_me_bookmarks_close"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:307
+msgid "ws_me_bookmarks_add"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:309
+msgid "ws_me_bookmarks_remove"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:321
+msgid "ws_me_edit_copy"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:323
+msgid "ws_me_edit_paste"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:325
+msgid "ws_me_edit_select_all"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:334
+msgid "ws_me_view_hide_words_list"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:336
+msgid "ws_me_view_zoom_in"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:338
+msgid "ws_me_view_zoom_out"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:340
+msgid "ws_me_view_fullscreen"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:353
+msgid "ws_me_search_find_next"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:355
+msgid "ws_me_search_find_prev"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:357
+msgid "ws_me_search_stop"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:410 ../gui/src/ws_gui_layout.c:415
+#: ../gui/src/ws_gui_layout.c:420 ../gui/src/ws_gui_layout.c:425
+#: ../gui/src/ws_gui_layout.c:429 ../gui/src/ws_gui_layout.c:434
+#: ../gui/src/ws_gui_layout.c:439 ../gui/src/ws_gui_layout.c:444
+#: ../gui/src/ws_gui_layout.c:449 ../gui/src/ws_gui_layout.c:454
+#: ../gui/src/ws_gui_layout.c:459 ../gui/src/ws_gui_layout.c:464
+#: ../gui/src/ws_gui_layout.c:469 ../gui/src/ws_gui_layout.c:474
+#: ../gui/src/ws_gui_layout.c:479 ../gui/src/ws_gui_layout.c:484
+#: ../gui/src/ws_gui_layout.c:489 ../gui/src/ws_gui_layout.c:494
+#: ../gui/src/ws_gui_layout.c:499 ../gui/src/ws_gui_layout.c:504
+#: ../gui/src/ws_gui_layout.c:509 ../gui/src/ws_gui_layout.c:515
+#: ../gui/src/ws_gui_layout.c:521 ../gui/src/ws_gui_layout.c:621
+#: ../gui/src/ws_gui_layout.c:626 ../gui/src/ws_gui_layout.c:631
+#: ../gui/src/ws_gui_layout.c:636 ../gui/src/ws_gui_layout.c:641
+#: ../gui/src/ws_gui_layout.c:645
+msgid "activate"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:560
+msgid "ws_mp_search"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:580
+msgid "ws_mp_edit_copy"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:585
+msgid "ws_mp_edit_paste"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:590
+msgid "ws_mp_edit_select_all"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:597
+msgid "ws_mp_edit"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:605
+msgid "ws_mp_zoom_in"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:610
+msgid "ws_mp_zoom_out"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:708 ../gui/src/ws_gui_layout.c:869
+#: ../gui/src/ws_gui_layout.c:1188
+msgid ""
+"\n"
+".::GUI::. /apps/WhiteStork/Dictionaries does not exist!!"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:713 ../gui/src/ws_gui_layout.c:905
+msgid "ws_ti_choose_dictionaries_title"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:742 ../gui/src/ws_gui_layout.c:795
+#: ../gui/src/ws_gui_layout.c:812 ../gui/src/ws_gui_layout.c:1066
+#: ../gui/src/ws_gui_callbacks.c:1519 ../gui/src/ws_gui_callbacks.c:1555
+#: ../gui/src/ws_gui_callbacks.c:1601
+msgid "/active"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:768 ../gui/src/ws_gui_layout.c:942
+#: ../gui/src/ws_gui_layout.c:1237 ../gui/src/ws_gui_layout.c:1433
+#: ../gui/src/ws_gui_layout.c:1501
+msgid "ws_db_cancel"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:774 ../gui/src/ws_gui_layout.c:947
+#: ../gui/src/ws_gui_layout.c:1428 ../gui/src/ws_gui_layout.c:1496
+msgid "ws_db_ok"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:793 ../gui/src/ws_gui_layout.c:810
+#: ../gui/src/ws_gui_layout.c:967 ../gui/src/ws_gui_layout.c:987
+#: ../gui/src/ws_gui_layout.c:1056 ../gui/src/ws_gui_layout.c:1064
+#: ../gui/src/ws_gui_layout.c:1099 ../gui/src/ws_gui_layout.c:1262
+msgid "/"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:877 ../gui/src/ws_gui_layout.c:969
+#: ../gui/src/ws_gui_layout.c:989 ../gui/src/ws_gui_layout.c:1101
+msgid "/optimized"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:893
+msgid "ws_ni_no_dictionaries_to_optimize"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1023
+msgid "ws_ti_load_dictionary_title"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1052
+msgid ".xdxf"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1056
+msgid "/path"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1075
+msgid "ws_ni_dictionaries_activation_question"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1108
+msgid "ws_ni_dictionaries_optimalization_question"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1133
+msgid "ws_ni_dictionary_added"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1140
+msgid "ws_ni_dictionary_wrong_file"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1193
+msgid "ws_ti_remove_dictionaries_title"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1230 ../gui/src/ws_gui_callbacks.c:1522
+#: ../gui/src/ws_gui_callbacks.c:1558
+msgid "bookmarks"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1244
+msgid "ws_bd_remove_dictionaries_remove_selected"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1311
+msgid "ws_ti_about_title"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1321
+msgid "/usr/share/pixmaps/whitestork.png"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1325
+msgid "Tahoma 18"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1327
+msgid "__________"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1330
+msgid ""
+"Maemo Multilingual Dictionary\n"
+"ver. "
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1339
+msgid ""
+"Copyright 2006, ComArch S.A\n"
+"All rightsreserved"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1361
+msgid "Tahoma 10"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1369
+msgid ""
+"The following third party\n"
+"components may be\n"
+"included depending \n"
+"on your system configuration:\n"
+"\n"
+"D-BUS - License information:\n"
+"http://opensource.org/licenses/academic.php"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1407
+msgid "ws_ti_add_bookmark"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1419
+msgid "ws_ti_bookmarks_add_question"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1449
+msgid "ws_ni_bookmark_added"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1457
+msgid "ws_ni_bookmark_not_added"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1475
+msgid "ws_ti_remove_bookmark"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1487
+msgid "ws_ni_remove_bookmark_question"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1515
+msgid "ws_ni_bookmark_removed"
+msgstr ""
+
+#: ../gui/src/ws_gui_layout.c:1522
+msgid "ws_ni_bookmark_not_removed"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:44
+#, c-format
+msgid "XDXF->%s() start counting time for function '%s()'.\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:74
+#, c-format
+msgid "XDXF->%s() function '%s()' was working for: %g [s] or %ld [us].\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:114
+msgid "ws_ni_error_occured"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:119
+msgid "response"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:133
+msgid "ws_ni_no_dictionary_available"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:168
+msgid "ws_pb_caching"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:212
+msgid "ws_ni_dictionary_unavailable"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:289
+msgid "ws_ni_no_words_found"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:759
+msgid "Name"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:761
+msgid "text"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:858 ../gui/src/ws_gui_callbacks.c:910
+#: ../gui/src/ws_gui_callbacks.c:916 ../gui/src/ws_gui_callbacks.c:961
+msgid "prefix"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:868
+msgid "ws_ni_no_text_selected"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:914
+msgid "\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:971
+msgid "ws_ab_searching"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:988
+msgid "ws_ni_no_word_typed"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1009
+msgid "ws_ni_search_aborted"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1113
+msgid "file:"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1161
+msgid "button-press-event"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1269 ../gui/src/ws_gui_callbacks.c:1271
+#: ../gui/src/ws_gui_callbacks.c:1284
+msgid "<PATTERN_OPEN>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1278
+msgid ""
+"<html><head></head><body><center><table width=\"95%\"><tr><td><table "
+"border=1 width=100%><tr><th background=\"file:/usr/share/pixmaps/ws_top.png"
+"\"><img align=left src=\"file:/usr/share/pixmaps/engine_xdxf_icon.png"
+"\"><font color=\"#eeeeee\">"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1290 ../gui/src/ws_gui_callbacks.c:1292
+#: ../gui/src/ws_gui_callbacks.c:1300
+msgid "<PATTERN_CLOSED>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1298
+msgid "</font></th></tr></table>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1306 ../gui/src/ws_gui_callbacks.c:1308
+#: ../gui/src/ws_gui_callbacks.c:1317
+msgid "<TRANSLATION_OPEN>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1314
+msgid ""
+"<table border=1 width=100%><tr><td background=\"file:/usr/share/pixmaps/"
+"ws_tra.png\">"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1323 ../gui/src/ws_gui_callbacks.c:1325
+#: ../gui/src/ws_gui_callbacks.c:1333
+msgid "<TRANSLATION_CLOSED>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1331
+msgid "</td></tr></table></center><br>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1340
+msgid "</td></tr></table></body></html>"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1369
+msgid ""
+"\n"
+".::GUI::. Bookmark mode on\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1394
+msgid ""
+"\n"
+".::GUI::. Bookmark mode off\n"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1422
+msgid "ws_ni_select_word_to_add"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1436
+#, c-format
+msgid ".::GUI::. LAST_WORD: \"%s\""
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1446
+msgid "ws_ni_select_word_to_remove"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1521 ../gui/src/ws_gui_callbacks.c:1557
+#, c-format
+msgid ""
+"\n"
+"\n"
+"slownik (%d): %s - active: %d"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1530 ../gui/src/ws_gui_callbacks.c:1566
+#, c-format
+msgid ""
+"\n"
+"\n"
+"Po przestawieniu: slownik (%d): %s - active: %d"
+msgstr ""
+
+#: ../gui/src/ws_gui_callbacks.c:1603
+#, c-format
+msgid ""
+"\n"
+"\n"
+"slownik (%d): %s - \n"
+"active: %d"
+msgstr ""
diff --git a/po/whitestork.mo b/po/whitestork.mo
new file mode 100644 (file)
index 0000000..17b8b35
Binary files /dev/null and b/po/whitestork.mo differ
diff --git a/release_makefile b/release_makefile
deleted file mode 100644 (file)
index d6ff249..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-#REP_LOCATION = ${HOME}/whitestork/repository/WhiteStork
-#REP_LOCATION := `pwd`/..
-ARCH = `arch`
-REP_TAG = tags
-REP_BRANCH = branches
-REP_TRUNK = trunk
-
-MAKEFILE_FILE = ${REP_LOCATION}/${REP_TRUNK}
-
-ENGINE = engine
-DBUS = dbus
-MANAGER = manager
-GUI = gui
-
-APP_NAME = whitestork
-MAJOR_VER = 0
-MINOR_VER = 4
-RELEASE_MAJOR_VER = 0
-RELEASE_MINOR_VER = 4
-RELEASE_PATCH_VER = 0
-APP_VER = ${RELEASE_MAJOR_VER}.${RELEASE_MINOR_VER}.${RELEASE_PATCH_VER}
-PACK_VER = 1
-FRM_VER = 0.1
-EXECUTABLE = ${BINARIES}/WhiteStork
-
-GUI_PACK_NAME = whitestorkgui
-MNG_PACK_NAME = whitestork
-ENG_PACK_NAME = enginexdxf
-
-BINARIES = bin
-INCLUDE = include
-DATA = data
-PACKAGES = packages
-
-FILES = ${REP_LOCATION}/${REP_TRUNK}/${DATA}/files_debbuild
-LOG_DIR = logs
-LOG_CLEAN = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/clean.log
-LOG_BUILD = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/build.log
-LOG_RUN = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/run.log
-LOG_DEBS = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/debs.log
-LOG_INST = ${REP_LOCATION}/${REP_TRUNK}/${LOG_DIR}/install.log
-
-
-first: build-test
-       @echo -e -n ""
-
-# build new version (x+1).0.0
-version: version-pre
-
-# build new release with version x,(y+1).0
-release: release-pre
-
-# build new pre-release with version x.y.(z=REPOSITORY REVISION)
-pre-release: pre-release-pre
-
-#create new tagget version from actual trunk
-tagged-version: clean debs
-               @mkdir  ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER}
-               @cp -r  ${REP_LOCATION}/${REP_TRUNK}/*        ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER}
-               @echo -e -n ".svn\n*~\n"    >    ${REP_LOCATION}/${REP_TRUNK}/NOT_FOR_SVN
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -iname ".svn" -exec rm -f -r {} \; >/dev/null 2>/dev/null
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -iname "*~" -exec rm -f -r {} \; >/dev/null 2>/dev/null
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -maxdepth 1 -iname "dict.*" -exec rm -f -r {} \; >/dev/null 2>/dev/null
-               @-find ${REP_LOCATION}/${REP_TAG}/${APP_NAME}-${APP_VER} -iname "*.deb" -exec mv {} ${REP_LOCATION}/${REP_TAG} \; >/dev/null 2>/dev/null
-               @cd ${REP_LOCATION}/${REP_TAG} && svn add ${APP_NAME}-${APP_VER}
-               @cd ${REP_LOCATION}/${REP_TAG} && svn ci -m "BUILD FRAMEWORK: Added new tagged version of WhiteStork: ${APP_NAME}-${APP_VER}\n"
-
-send-last:
-               @cd ${REP_LOCATION}/${REP_TRUNK} && tar -czf ${APP_NAME}-${APP_VER}.tar.gz   *_${APP_VER}-${PACK_VER}_${ARCH}.deb
-               @echo -e -n "#!/bin/bash\n\
-                       mutt -x -a ~/debs.log -a ~/build.log -a ~/${APP_NAME}-${APP_VER}.tar.gz -s \"[WhiteStork]: daily build - version ${APP_NAME}-${APP_VER}\" mdictionary-devel@garage.maemo.org <~/stranger.content\n\
-                       rm -f ~/${APP_NAME}-${APP_VER}.tar.gz\n" > stranger.script
-               @echo -e -n "\
-                       This message was generated automatically , please do not reply.\n\
-                       Attachment: ${APP_NAME}-${APP_VER}.tar.gz - tarball with the newest whitestorks' packages.\n\
-                       Attachment: build.log - logs from building binaries.\n\
-                       Attachment: debs.log - logs from making *.deb packages.\n\n\
-                       Automatic Building Framework ver: ${FRM_VER}\nCopyright 2006 ComArch S.A.\n" > stranger.content
-               @scp ${REP_LOCATION}/${REP_TRUNK}/${APP_NAME}-${APP_VER}.tar.gz stranger@stud.ics.p.lodz.pl:~/
-               @scp ${LOG_BUILD} stranger@stud.ics.p.lodz.pl:~/
-               @scp ${LOG_DEBS} stranger@stud.ics.p.lodz.pl:~/
-               @scp ${MAKEFILE_FILE}/stranger.script stranger@stud.ics.p.lodz.pl:~/
-               @scp ${MAKEFILE_FILE}/stranger.content stranger@stud.ics.p.lodz.pl:~/
-               @rm -f ${MAKEFILE_FILE}/stranger.script
-               @rm -f ${MAKEFILE_FILE}/stranger.content
-               @ssh stranger@stud.ics.p.lodz.pl  ./mailscript
-
-version-post: tagged-version send-last
-               @echo -e -n "New version ${APP_VER} created and sent.\n"
-release-post: tagged-version send-last
-               @echo -e -n "New release ${APP_VER} created.\n"
-pre-release-post: tagged-version send-last
-               @echo -e -n "New pre-release ${APP_VER} created and sent.\n"
-
-version-pre:
-               @-cd  ${REP_LOCATION}/${REP_TRUNK} && svn update
-               @${REP_LOCATION}/${REP_TRUNK}/${DATA}/version.sh "${MAKEFILE_FILE}"
-               @echo -e -n "VERSION: Jeden zamykamy\n" 
-
-release-pre:
-               @-cd  ${REP_LOCATION}/${REP_TRUNK} && svn update
-               @${REP_LOCATION}/${REP_TRUNK}/${DATA}/release.sh "${MAKEFILE_FILE}"
-               @echo -e -n "RELEASE: Jeden zamykamy\n"
-
-pre-release-pre:
-               @-cd  ${REP_LOCATION}/${REP_TRUNK} && svn update
-               @${REP_LOCATION}/${REP_TRUNK}/${DATA}/pre-release.sh "${MAKEFILE_FILE}"
-               @echo -e -n "PRE_RELEASE: Jeden zamykamy\n"             
-
-build: pre-build ${BINARIES}/engine_xdxf.so ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStork ${BINARIES}/WhiteStorkManager
-               @echo -e -n "\nBuilding WhiteStork is finished.\n"
-pre-build:
-               @echo -e -n "Building WhiteStork... \n"
-               @echo -e -n "Location: ${REP_LOCATION}\n\nplease wait a while....\n"
-               @echo -e -n "" > ${LOG_BUILD}
-
-${BINARIES}/WhiteStorkManager:
-               @echo -e -n "**--> Compiling Manager...\n" >> ${LOG_BUILD}
-               @cd ${MANAGER} && make >> ${LOG_BUILD}
-
-${BINARIES}/ws_dbus.o:
-               @echo -e -n "**--> Compiling D-BUS Wrapper... \n" >> ${LOG_BUILD}
-               @cd ${DBUS} && make >> ${LOG_BUILD}
-
-${BINARIES}/WhiteStork:
-               @echo -e -n "**--> Compiling User Interface...\n" >> ${LOG_BUILD}
-               @cd ${GUI} && make >> ${LOG_BUILD}
-
-${BINARIES}/engine_xdxf.so:
-               @echo -e -n "**--> Compiling Engine...\n" >> ${LOG_BUILD}
-               @cd ${ENGINE} && make >> ${LOG_BUILD}
-
-
-clean:
-               @echo -e -n "" > ${LOG_CLEAN}
-               @-rm -f ./${BINARIES}/* >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-rm -f ${REP_LOCATION}/${REP_TRUNK}/*~ >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-rm -f ${REP_LOCATION}/${REP_TRUNK}/*.deb >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${GUI} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${DBUS} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${ENGINE} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-cd ./${MANAGER} && make clean >> ${LOG_CLEAN} 2>> ${LOG_CLEAN}
-               @-echo -e -n "Project directories are cleaned.\n"
-
-run:
-               @run-standalone.sh WhiteStork
-
-build-test: clean build
-               @echo -e -n "Copying needed files to specyfic directories...\n"
-               @echo -e -n > ${LOG_RUN}
-               @-fakeroot mkdir /usr/share/WhiteStork >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot rm -f /usr/share/WhiteStork/*  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot mkdir  /usr/share/WhiteStork/engines >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot mkdir  /usr/share/WhiteStork/dictionaries >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot mkdir  /usr/share/WhiteStork/dictionaries/local >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot mkdir /usr/lib/WhiteStork >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot rm -f /usr/lib/WhiteStork/*  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot mkdir /usr/include/WhiteStork >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot rm -f /usr/include/WhiteStork/*  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStork ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStorkManager /usr/bin/  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/engine_xdxf.so /usr/lib/WhiteStork  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${INCLUDE}/dictionary_engine.h /usr/include/WhiteStork
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.png /usr/share/pixmaps/WhiteStork  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${DATA}/icon.png /usr/share/pixmaps/WhiteStork  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/dict.xdxf /usr/share/WhiteStork/dictionaries/local  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/dict.cache /usr/share/WhiteStork/dictionaries/local >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkManager.service /usr/share/dbus-1/services  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @-fakeroot cp ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.desktop /usr/share/applications/hildon  >> ${LOG_RUN} 2>> ${LOG_RUN}
-               @gconftool-2 --type string --set /apps/WhiteStork/Dictionaries/local/path "/usr/share/WhiteStork/dictionaries/local"
-               @gconftool-2 --type string --set /apps/WhiteStork/Dictionaries/local/name "Local dictionary"
-               @gconftool-2 --type bool --set /apps/WhiteStork/Dictionaries/local/active true
-
-run-deb:
-               @run-standalone.sh WhiteStork
-
-debs: pre-debs mng-deb eng-deb gui-deb
-               @echo -e -n "Building debian packages finished.\n"
-
-mng-deb: mng-pack-dirs ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStorkManager
-               @echo -e -n "**-->Makeing manager package...\n"
-               @echo -e -n "**-->Makeing manager package...\n" >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStorkManager ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkManager.service  ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict1.xdxf ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements/dict.xdxf   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict1.cache ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements/dict.cache   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/dict2.xdxf ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en/dict.xdxf   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @find ${FILES} -type f -maxdepth 1 -name "mngc_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN" \;
-
-               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control > ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup
-
-               mv ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control
-
-
-               @find ${FILES} -type f -maxdepth 1 -name "mngC_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork" \;
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork/changelog"
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork/changelog.Debian"
-               @touch ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @chmod g-w ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @find "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/add_sums.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" \;
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && fakeroot dpkg-deb --build debian >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && mv -f debian.deb ../${MNG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-
-gui-deb: gui-pack-dirs ${BINARIES}/ws_dbus.o ${BINARIES}/WhiteStork
-               @echo -e -n "**-->Making whitestork GUI package...\n"
-               @echo -e -n "**-->Making whitestork GUI package...\n" >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/WhiteStork ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.desktop ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications/hildon/whitestorkgui.desktop   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @fakeroot cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.desktop /usr/share/applications/hildon/whitestorkgui.desktop
-               @ln -s /usr/share/applications/hildon/whitestorkgui.desktop ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu/extra_applications/0112_whitestorkgui.desktop
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/whitestork.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/icon.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps/whitestork_icon.png   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/org.maemo.WhiteStorkGui.service  ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @find ${FILES} -type f -maxdepth 1 -name "guic_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN" \;
-               
-               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control > ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup
-
-               mv ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control
-
-               @find ${FILES} -type f -maxdepth 1 -name "guiC_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui" \;
-#              @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}"/debian/usr/share/doc/whitestorkgui.1
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui/changelog"
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui/changelog.Debian"
-               @touch ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @chmod g-w ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @find "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/add_sums.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" \;
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && fakeroot dpkg-deb --build debian >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && mv -f debian.deb ../${GUI_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb   >> ${LOG_DEBS} 2>> ${LOG_DEBS}                
-
-eng-deb: eng-pack-dirs ${BINARIES}/engine_xdxf.so
-               @echo -e -n "**-->Making engine package...\n"
-               @echo -e -n "**-->Making engine package...\n" >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${BINARIES}/engine_xdxf.so ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib/WhiteStork/ >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${INCLUDE}/dictionary_engine.h ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include/WhiteStork  >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @cp -f ${REP_LOCATION}/${REP_TRUNK}/${DATA}/engine_xdxf_icon.png ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps >> ${LOG_DEBS} 2>> ${LOG_DEBS}
-               @find ${FILES} -type f -maxdepth 1 -name "engc_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN" \;
-               
-               @sed 's/Version:/Version: '${APP_VER}-${PACK_VER}'/ ' ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control > ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup
-
-               mv ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control_backup ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/control
-
-               @find ${FILES} -type f -maxdepth 1 -name "engC_*[^~]" -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/copy_clean.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf" \;
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf/changelog"
-               @gzip --best "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf/changelog.Debian"
-               @touch ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @chmod g-w ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN/md5sums
-               @find "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" -path '*DEBIAN*' -prune -o -type f -exec ${REP_LOCATION}/${REP_TRUNK}/${DATA}/add_sums.sh {} "${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian" \;
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}  &&  fakeroot dpkg-deb --build debian  >> ${LOG_DEBS}  2>> ${LOG_DEBS}
-               @cd ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES} && mv -f debian.deb ../${ENG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_DEBS} 2>> ${LOG_DEBS}         
-
-debs-i: clean-inst-log mng-deb-i gui-deb-i eng-deb-i
-               @echo -e -n "Every packages has been reinstalled.\n"
-
-clean-inst-log:
-               @echo -n "" > ${LOG_INST}
-
-debs-ir: debs-i
-               @echo -e -n "Restarting af-sb-init.sh <af-sb-init.sh restart>...\n"
-               @af-sb-init.sh restart
-               @echo -e -n "Now You can test Your new WhiteStork :D .. enjoy :-)\n"
-
-mng-deb-i:
-               @echo -e -n "Removing old MANAGER...\n"
-               @-fakeroot dpkg -r whitestork  >/dev/null 2>/dev/null           
-               @echo -e -n "Installing new package MANAGER...\n"
-               @cd ${REP_LOCATION}/${REP_TRUNK} && fakeroot dpkg -i ${MNG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
-
-gui-deb-i:
-               @echo -e -n "Removing old GUI...\n"
-               @-fakeroot dpkg -r whitestorkgui  >/dev/null 2>/dev/null                
-               @echo -e -n "Installing new package GUI...\n"
-               @cd ${REP_LOCATION}/${REP_TRUNK} && fakeroot dpkg -i ${GUI_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
-
-eng-deb-i:
-               @echo -e -n "Removing old ENGINE...\n"
-               @-fakeroot dpkg -r enginexdxf  >/dev/null 2>/dev/null           
-               @echo -e -n "Installing new package ENGINE...\n"
-               @cd ${REP_LOCATION}/${REP_TRUNK} && fakeroot dpkg -i ${ENG_PACK_NAME}_${APP_VER}-${PACK_VER}_${ARCH}.deb  >> ${LOG_INST} 2>> ${LOG_INST}
-
-pre-debs: clean
-               @echo -e -n "Making of *.deb packages...\nPlease wait...\n"
-               @echo -e -n "" > ${LOG_DEBS}
-
-eng-pack-dirs:
-               @echo -e -n "Creating and cleaning required directories for ENGINE..."   >/dev/null 2>/dev/null
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib/WhiteStork   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include/WhiteStork   >/dev/null 2>/dev/null  
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
-
-mng-pack-dirs:
-               @echo -e -n "Creating and cleaning required directories for MANAGER..."   >/dev/null 2>/dev/null
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/engines   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
-
-gui-pack-dirs:
-               @echo -e -n "Creating and cleaning required directories for GUI..."   >/dev/null 2>/dev/null
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu/extra_applications   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps/WhiteStork   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications/hildon   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
-
-whole-pack-dirs:
-               @echo -e -n "Creating and cleaning required directories WHOLE SYSTEM..."
-               @-rm -f -r ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/*
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/DEBIAN
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/etc/others-menu/extra_applications   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/bin
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/lib/WhiteStork
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/include/WhiteStork
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/engines
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/elements
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/WhiteStork/dictionaries/us-en
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/dbus-1/services
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/pixmaps/WhiteStork
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/applications/hildon    
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestork   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/whitestorkgui   >/dev/null 2>/dev/null
-               @mkdir ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian/usr/share/doc/enginexdxf   >/dev/null 2>/dev/null
-               @find ${REP_LOCATION}/${REP_TRUNK}/${PACKAGES}/debian -type d -exec chmod 0755 {} \;
-
-uninstall:
-               @-fakeroot dpkg -r enginexdxf
-               @-fakeroot dpkg -r whitestorkgui
-               @-fakeroot dpkg -r whitestork
-               @-fakeroot dpkg --purge whitestork
-               @-fakeroot dpkg --purge whitestorkgui
-               @-fakeroot dpkg --purge enginexdxf
-               @-gconftool-2 --recursive-unset /apps/WhiteStork
-               @-gconftool-2 --recursive-unset /apps/maemo/WhiteStork
-               @-rm -rf  /usr/share/WhiteStork
-               @-rm -f  /usr/share/pixmaps/whitestork.png
-               @-rm -f  /usr/share/pixmaps/engine_xdxf_icon.png
-               @-rm -f  /usr/share/pixmaps/whitestork_icon.png
-
-display: access
-               @fakeroot su ${USER} -c 'af-sb-init.sh start'   
-
-display-s: access
-               @fakeroot su ${USER} -c 'af-sb-init.sh stop'
-
-display-r: access
-               @fakeroot su ${USER} -c 'af-sb-init.sh restart'
-
-access:
-               @fakeroot chmod 0777 /var/run
diff --git a/stork.png b/stork.png
deleted file mode 100644 (file)
index 8b49df2..0000000
Binary files a/stork.png and /dev/null differ