gjots2-2.4.1/0000775000301100007650000000000012234163306012545 5ustar bhepplebhepplegjots2-2.4.1/gjots2.spec0000664000301100007650000001271612234163306014640 0ustar bhepplebhepple# $Id: gjots2.spec,v 1.12.2.29 2012-06-02 12:42:57 bhepple Exp $ # Copyright (C) 2002-2009 Robert Hepple # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, # MA 02111-1307, USA. %define ver 2.4.1 %define rel 1 %define prefix /usr %define _source_filedigest_algorithm md5 %define _binary_filedigest_algorithm md5 %define _source_payload nil %define _binary_payload nil Summary: A note jotter. Organise your ideas, notes, facts in a hierarchy. Name: gjots2 Version: %{ver} Release: %{rel} URL: http://bhepple.freeshell.org/gjots #Source: http://bhepple.freeshell.org/gjots/gjots2-%{ver}.tar.gz Source0: %{name}-%{version}.tgz License: GPL Group: Applications/Productivity BuildRoot: %{_tmppath}/root-%{name}-%{version} Prefix: %{_prefix} BuildArch: noarch Requires: gnome-python2-desktop Requires: pygtk2 Requires: pygtk2-libglade Requires: gnome-python2-gconf %description gjots2 ("gee-jots" or, if you prefer, "gyachts"!) is a way to marshall and organise your text notes in a convenient, hierarchical way. For example, use it for all your notes on Unix, personal bits and pieces, recipes and even PINs and passwords (encrypted with ccrypt(1), gpg(1) or openssl(1)). You can also use it to "mind-map" your compositions - write down all your thoughts and then start to organise them into a tree. By manipulating the tree you can easily reorder your thoughts and structure them appropriately. %prep %setup %build %install # typically: # buildroot=/var/tmp/root-gjots2-2.4.1 # _datadir=/usr/share # _bindir=/usr/bin # _libdir=/usr/lib %{__rm} -rf %{buildroot} %{__install} -d -m0755 \ %{buildroot}%{_datadir}/applications \ %{buildroot}%{_datadir}/%{name} \ %{buildroot}%{_datadir}/%{name}/ui \ %{buildroot}%{_datadir}/%{name}/pixmaps \ %{buildroot}%{_datadir}/man/man1 \ %{buildroot}%{_libdir}/%{name} \ %{buildroot}%{_bindir} \ %{buildroot}%{_datadir}/locale/en_US/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/fr/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/no/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/nb/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/cs/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/ru/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/es/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/sl/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/sv/LC_MESSAGES \ %{buildroot}%{_datadir}/locale/de_DE/LC_MESSAGES %{__install} -m0755 bin/gjots2 bin/gjots2docbook bin/gjots2html bin/gjots2emacs bin/gjots2html.py bin/docbook2gjots bin/gjots2lpr %{buildroot}%{_bindir}/ %{__install} -m0755 lib/*.py %{buildroot}%{_libdir}/%{name}/ %{__install} -m0644 gjots.glade2 %{buildroot}%{_datadir}/%{name} %{__install} -m0644 ui/*.ui %{buildroot}%{_datadir}/%{name}/ui %{__install} -m0644 pixmaps/*.png %{buildroot}%{_datadir}/%{name}/pixmaps/ %{__install} -m0644 gjots2.desktop %{buildroot}%{_datadir}/applications/ %{__install} -m0644 doc/man/man1/*.1 %{buildroot}%{_datadir}/man/man1 %{__install} -m0644 po/en_US/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/en_US/LC_MESSAGES %{__install} -m0644 po/fr/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/fr/LC_MESSAGES %{__install} -m0644 po/no/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/no/LC_MESSAGES %{__install} -m0644 po/nb/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/nb/LC_MESSAGES %{__install} -m0644 po/cs/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/cs/LC_MESSAGES %{__install} -m0644 po/ru/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/ru/LC_MESSAGES %{__install} -m0644 po/es/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/es/LC_MESSAGES %{__install} -m0644 po/sl/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/sl/LC_MESSAGES %{__install} -m0644 po/sv/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/sv/LC_MESSAGES %{__install} -m0644 po/de_DE/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/de_DE/LC_MESSAGES %{__install} -m0644 po/en_US/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/en_US/LC_MESSAGES %{__install} -m0644 po/fr/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/fr/LC_MESSAGES %{__install} -m0644 po/no/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/no/LC_MESSAGES %{__install} -m0644 po/nb/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/nb/LC_MESSAGES %{__install} -m0644 po/cs/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/cs/LC_MESSAGES %{__install} -m0644 po/ru/LC_MESSAGES/gjots2.mo %{buildroot}%{_datadir}/locale/ru/LC_MESSAGES %clean rm -rf $RPM_BUILD_ROOT %files %defattr(-,root,root) %doc AUTHORS INSTALL README COPYING ChangeLog doc/gjots2.gjots doc/gjots2.en_US.gjots doc/gjots2.fr.gjots doc/gjots2.nb.gjots doc/gjots2.no.gjots doc/gjots2.ru.gjots doc/gjots2.es.gjots %{_bindir}/* %{_datadir}/* %{_libdir}/* gjots2-2.4.1/gjots.glade20000664000301100007650000044400512234162541014762 0ustar bhepplebhepple GTK_WINDOW_TOPLEVEL GTK_WIN_POS_NONE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True False 0 True GTK_PACK_DIRECTION_LTR GTK_PACK_DIRECTION_LTR True _File True True gtk-new True True gtk-open True True Recent True True True gtk-save True True gtk-save-as True True True Import items from a gjots file _Import True True Export selected items to a gjots file _Export True True True gtk-print True True True Toggle the read-only flag if possible _Read-only True False True True Exit gjots gtk-quit True True _Edit True True gtk-undo True True gtk-redo True True gtk-cut True True gtk-copy True True False gtk-paste True True True gtk-select-all True True True gtk-find True True Find Next True True gtk-media-next 1 0.5 0.5 0 0 True Find Previous True True gtk-media-previous 1 0.5 0.5 0 0 True True gtk-preferences True True _View True True Show all items below the current item _Show All True True Hide all items except the top level _Hide All True True True Toggles the main toolbar To_p Toolbar True True True Toggles tree tool bar Tre_e Toolbar True True True Show the related icon text Show _Icon Text True False True Status _Bar True True True _Tree True True Create a new page _New Page True True gtk-add 1 0.5 0.5 0 0 True Create a new child New _Child True True True Move selection up Up True True Move selection down Down True True Selection becomes a sibling to their parent P_romote True True gtk-go-back 1 0.5 0.5 0 0 True Selection becomes a child of the previous item D_emote True True gtk-go-forward 1 0.5 0.5 0 0 True True Make a new item from the current selection _Split Item True True Merge current items into the first one _Merge Items True True True Popup the sort tree dialog S_ort Tree True True Te_xt True True Format the current paragraph _Format True True Add a time/date stamp (see preferences) _Time stamp True True 0.5 0.5 0 0 True Edit current item in an external editor _External Edit True True gtk-edit 1 0.5 0.5 0 0 True Popup the sort text dialog _Sort Text True True _Help True True Read the online manual (using gjots) _Read Manual True True gtk-dialog-info 1 0.5 0.5 0 0 True About gjots2 True 0 False True True 0 False True True Find: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True False True True 0 True True 0 False True 1 True GTK_ORIENTATION_HORIZONTAL GTK_TOOLBAR_BOTH True True True Save gjots document Save True gtk-save True True False False True True Print this document Print True gtk-print True True False False True True True True False True True True True False False True Cut selected items Cut True gtk-cut True True False False True True Copy selected items Copy True gtk-copy True True False False True True Paste selected items Paste True gtk-paste True True False False True True True True False True True True True False False True Wrap the current paragraph to the current line length Wrap True gtk-refresh True True False False True True Invoke an external editor on the current item Ext.Ed. True gtk-execute True True False False True True Add a time/date stamp (see prefs) Date True gjots2-clock.png True True False False True True Popup the find and replace dialog Find True gtk-find True True False False True True Popup the sort dialog Sort True gtk-sort-ascending True True False False True True Open gjots preferences window Prefs True gtk-preferences True True False False True 0 False True True False 0 1 True GTK_ORIENTATION_VERTICAL GTK_TOOLBAR_BOTH True True True Create a new item New Page True gjots2-new-page.png True True False False True True Create a new child New Child True gjots2-new-child.png True True False False True True True True False True True True True False False True Move selection up Up True gtk-go-up True True False False True True Move selection down Down True gtk-go-down True True False False True True Selection becomes a sibling to their parent Promote True gtk-go-back True True False False True True Selection becomes a child of the previous item Demote True gtk-go-forward True True False False True True True True False True True True True False False True Split the text selection into a new item Split Item True gjots2-split-item.png True True False False True True Merge selected items together Merge Items True gjots2-merge-items.png True True False False True True True True False True True True True False False True Hide all items except for the top level Hide All True gjots2-hide-all.png True True False False True True Show all items below the current item Show All True gjots2-show-all.png True True False False True True Popup the sort tree dialog Sort Tree True gtk-sort-ascending True True False False True 0 False False True True 211 True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True True False False True True False False False True False True True GTK_POLICY_AUTOMATIC GTK_POLICY_AUTOMATIC GTK_SHADOW_NONE GTK_CORNER_TOP_LEFT True True True False True GTK_JUSTIFY_LEFT GTK_WRAP_WORD True 0 0 0 0 0 0 True True 0 True True 0 True True True True 0 False True 1 True True window1 GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE True True True True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True label1 False False GTK_JUSTIFY_LEFT True False 0.5 0.5 10 0 PANGO_ELLIPSIZE_NONE -1 False 0 10 False False 10 True 2 2 False 5 5 label2 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 label1 False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 True GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK True True 0 True False 1 2 1 2 True True GDK_BUTTON_PRESS_MASK | GDK_KEY_RELEASE_MASK True True 0 True False 1 2 0 1 0 False False label1 False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True 0 False False True GTK_BUTTONBOX_DEFAULT_STYLE 0 5 gtk-ok True GTK_RELIEF_NORMAL True 5 True gtk-no True GTK_RELIEF_NORMAL True 5 True gtk-cancel True GTK_RELIEF_NORMAL True 5 True True Try again True GTK_RELIEF_NORMAL True 5 True True Read only True GTK_RELIEF_NORMAL True 15 False False True gjots: preferences GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE True True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 10 15 True 7 2 False 10 10 True Choose a font for the text panel True gtk-select-font True GTK_RELIEF_NORMAL True 0 1 4 5 True Date format: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 3 4 True Format for the timestamp function (see strftime(3)) eg %F True True True 0 %F True False 1 2 3 4 True External program to edit a page (%s is replaced by the name of the temporary edit file) eg xterm -e vi %s True True True 0 xterm -e vi %s True False 1 2 2 3 True External editor False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 2 3 True Text Line Length: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 True Line length for paragraph wrapping True 1 0 True GTK_UPDATE_ALWAYS False False 70 10 200 1 10 10 1 2 1 2 True Text formatter: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 True Current text font True False True 0 Courier 10 Pitch 10 True False 1 2 4 5 True AutoSave interval: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 5 6 fill True Seconds of inactivity to trigger an AutoSave (0 = no AutoSave) True 1 0 True GTK_UPDATE_ALWAYS False False 0 0 200000 1 10 10 1 2 5 6 True External program to pipe text for formatting (%d is replaced by the current line width) eg fmt -w %d True True True 0 fmt -w %d True False 1 2 0 1 True Auto ReadOnly timeout: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 6 7 fill True The number of second after losing focus that ReadOnly should be set. True 1 0 True GTK_UPDATE_ALWAYS False False 0 0 200000 1 10 10 1 2 6 7 0 True True True 0 False True True GTK_BUTTONBOX_DEFAULT_STYLE 0 5 True True True gtk-ok True GTK_RELIEF_NORMAL True 5 True True True gtk-cancel True GTK_RELIEF_NORMAL True 0 True True 4 True Select Font GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE True True False True False False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True True True GTK_RELIEF_NORMAL True True True GTK_RELIEF_NORMAL True True True True GTK_RELIEF_NORMAL True 4 True abcdefghijk ABCDEFGHIJK 0 True True True Find & replace GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False True False 0 True False 0 10 True 2 2 False 10 10 True Find: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 0 1 True Replace: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 1 1 2 True String to search for True True True True True True 0 True False 1 2 0 1 True String to replace True True True 0 True False 1 2 1 2 0 True True 10 True 3 2 True 10 10 True True Find True GTK_RELIEF_NORMAL True 0 1 0 1 fill True True Close True GTK_RELIEF_NORMAL True 1 2 0 1 fill True True Replace True GTK_RELIEF_NORMAL True 0 1 1 2 fill True True Cancel True GTK_RELIEF_NORMAL True 1 2 1 2 fill True True Replace All True GTK_RELIEF_NORMAL True 0 1 2 3 fill True True Clear True GTK_RELIEF_NORMAL True 1 2 2 3 fill 0 True True 0 True True True False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False 10 True 0 0.5 GTK_SHADOW_ETCHED_IN 10 True True 2 2 True 10 10 True Find string is a regular expression (see 'man 7 regex') True Regular Expression True GTK_RELIEF_NORMAL True False False True 1 2 0 1 True Searches entire file not just this entry True Global True GTK_RELIEF_NORMAL True False False True 0 1 1 2 fill True Don't ignore case True Match case True GTK_RELIEF_NORMAL True False False True 0 1 0 1 True Search backwards True Backwards True GTK_RELIEF_NORMAL True False False True 1 2 1 2 fill True Options False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True Print GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False 10 True False 0 True 0 0.5 GTK_SHADOW_ETCHED_IN True 0.5 0.5 1 1 0 0 12 0 True False 0 True e.g. lpr: False False GTK_JUSTIFY_LEFT False False 0 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False True print command (can be a shell expression) True True True True True True 0 True False 5 True True True Print command False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True 0 0.5 GTK_SHADOW_ETCHED_IN True 0.5 0.5 1 1 0 0 12 0 True False 0 True Print the current page True Page True GTK_RELIEF_NORMAL True False False True 0 False False True Print the selected pages or text True Selection True GTK_RELIEF_NORMAL True False False True printPageRadioButton 0 False False True Print the entire gjots file True All True GTK_RELIEF_NORMAL True False False True printPageRadioButton 0 False False True Print Range False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True 0 0.5 GTK_SHADOW_ETCHED_IN True 0.5 0.5 1 1 0 0 12 0 True False 0 True True 0 True Feeds a page before every new gjots item True Page feeds True GTK_RELIEF_NORMAL True False False True 0 False False Print the gjots item titles in bold True Bold titles True GTK_RELIEF_NORMAL True False False True 0 False False True True Auto Number True GTK_RELIEF_NORMAL True False False True 0 False False 0 True True True False 0 Auto-number format: False False GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 0 False False eg. 1 for 1.2.1, a True True True 0 True False 0 True True 0 True True True Print formatting False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 5 True True True GTK_BUTTONBOX_DEFAULT_STYLE 0 5 True True True gtk-ok True GTK_RELIEF_NORMAL True 5 True True True gtk-cancel True GTK_RELIEF_NORMAL True 0 True True True Sort GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE False True False True False False GDK_WINDOW_TYPE_HINT_NORMAL GDK_GRAVITY_NORTH_WEST True False 10 True False 0 True 0 0.5 GTK_SHADOW_ETCHED_IN True 0.5 0.5 1 1 0 0 12 0 True 2 2 False 0 0 True Sort in ascending order True Ascending True GTK_RELIEF_NORMAL True False False True 0 1 0 1 fill True Sort in alphabetic order True Alphabetic True GTK_RELIEF_NORMAL True False False True 1 2 0 1 fill True Sort in numeric order True Numeric True GTK_RELIEF_NORMAL True False False True sortAlphabeticRadioButton 1 2 1 2 fill True Sort in descending order True Descending True GTK_RELIEF_NORMAL True False False True sortAscendingRadioButton 0 1 1 2 fill True Sort Parameters False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 False False True 0 0.5 GTK_SHADOW_ETCHED_IN True 0.5 0.5 1 1 0 0 12 0 True False 0 True How many sublevels to sort (0 for none; -1 for 'all') True 1 0 False GTK_UPDATE_ALWAYS False False 1 0 100 1 10 10 0 False False True Sort Sublevels False True GTK_JUSTIFY_LEFT False False 0.5 0.5 0 0 PANGO_ELLIPSIZE_NONE -1 False 0 label_item 0 True True True GTK_BUTTONBOX_DEFAULT_STYLE 0 5 True True True gtk-ok True GTK_RELIEF_NORMAL True 5 True True True gtk-cancel True GTK_RELIEF_NORMAL True 0 True True 5 GTK_FILE_CHOOSER_ACTION_OPEN True False False False GTK_WINDOW_TOPLEVEL GTK_WIN_POS_MOUSE True True True GtkFileChooserDialog True True True GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST True False True False 2 True GTK_BUTTONBOX_END True True gtk-ok True GTK_RELIEF_NORMAL True 0 True True gtk-cancel True GTK_RELIEF_NORMAL True 0 0 False True GTK_PACK_END True False 0 True To open the file in read-only mode. True Open file read only True GTK_RELIEF_NORMAL False False False True 0 True True 0 False True True True gtk-cut True True gtk-copy True True gtk-paste True True True Select _All True True True gtk-find True True True New Page True True gtk-add 4 0.5 0.5 0 0 True New Child True True 0.5 0.5 0 0 True True gtk-go-up True True gtk-go-down True True Promote True True gtk-go-back 4 0.5 0.5 0 0 True Demote True True gtk-go-forward 4 0.5 0.5 0 0 True True Merge Items True True 0.5 0.5 0 0 True True Show All True True 0.5 0.5 0 0 True Hide All True True 0.5 0.5 0 0 True True Sort Tree True True 0.5 0.5 0 0 True True Import True True 0.5 0.5 0 0 True Export True True 0.5 0.5 0 0 gjots2-2.4.1/uninstall.sh0000775000301100007650000000250012234162541015112 0ustar bhepplebhepple#!/usr/bin/env bash # Use this if you installed with setup.py - if you used emerge/rpm to # install then use the following to uninstall: # emerge unmerge gjots2 # OR # rpm -e gjots2 # Python's setup.py provides no uninstallation method so here is # something to help: usage() { echo "Usage: $PROG [prefix]" echo echo " is the location which was used to install with setup.py (default is /usr)" echo "eg $PROG /usr/local" } PROG=$(basename "$0") TEMP=$(getopt -o h --long help -n '$PROG' -- "$@") || exit $? eval set -- "$TEMP" while true ; do case $1 in -h|--help) usage; exit 0;; --) shift; break;; *) echo "Internal error!" >&2 ; exit 1 ;; esac done prefix=${1:-"/usr"} [[ -f $prefix/bin/gjots2 ]] || { echo "gjots2 was not found at $prefix/bin" >&2 exit 1 } rm -rf $prefix/lib/gjots2 $prefix/share/doc/gjots2-* $prefix/share/gjots2 rm -f $prefix/bin/gjots2html $prefix/bin/docbook2gjots $prefix/bin/gjots2 $prefix/bin/gjots2docbook $prefix/bin/gjots2lpr rm -f $prefix/share/man/man1/gjots2html.1 $prefix/share/man/man1/docbook2gjots.1 $prefix/share/man/man1/gjots2.1 $prefix/share/man/man1/gjots2docbook.1 rm -f $prefix/share/pixmaps/gjots.png $prefix/share/applications/gjots2.desktop for LOCALE in en_US fr no nb ru cs it es sl sv de_DE; do rm -f $prefix/share/locale/$LOCALE/LC_MESSAGES/gjots2.mo done gjots2-2.4.1/setup.py0000775000301100007650000000762512234162541014274 0ustar bhepplebhepple#!/usr/bin/env python # A command to install gjots2 using the 'standard' method for python. # I prefer to install with rpm or emerge but this might be useful if # you have neither or just plain prefer the setup.py script. # Install gjots2 with: # python setup.py install # or perhaps: # python setup.py install --prefix=/usr/local # Please help! How do I get this script to automatically generate the # .pyc files at installation time? # There is no "uninstall" command in the Python setup.py utility :-( # so I have provided an uninstall.sh script which you can customise # and use. import os, sys sys.path = [os.curdir+ '/lib'] + sys.path from distutils.core import setup from lib.version import * datadir = "lib/gjots2" setup(name = "gjots2", version = gjots_version, description = "gnome-2 notes utility", long_description = "gnome-2 notes utility", author = "Bob Hepple", author_email = "bhepple@freeshell.org", url = "http://bhepple.freeshell.org/gjots/", scripts = ['bin/gjots2','bin/gjots2docbook','bin/docbook2gjots','bin/gjots2html','bin/gjots2lpr'], data_files = [('lib/gjots2',['lib/__init__.py', 'lib/file.py', 'lib/general.py', 'lib/prefs.py', 'lib/common.py', 'lib/find.py', 'lib/gui.py', 'lib/prefs.py', 'lib/version.py', 'lib/printDialog.py', 'lib/sortDialog.py']), ('share/man/man1', ['doc/man/man1/gjots2.1','doc/man/man1/gjots2docbook.1','doc/man/man1/docbook2gjots.1','doc/man/man1/gjots2html.1']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.gjots','AUTHORS','README','INSTALL', 'COPYING', 'ChangeLog']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.en_US.gjots']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.fr.gjots']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.no.gjots']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.nb.gjots']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.ru.gjots']), ('share/doc/gjots2-' + gjots_version, ['doc/gjots2.es.gjots']), ('share/pixmaps', ['pixmaps/gjots.png']), ('share/gjots2/ui', ['ui/gjots.ui']), ('share/gjots2/ui', ['ui/fileDialog.ui']), ('share/gjots2/ui', ['ui/findDialog.ui']), ('share/gjots2/ui', ['ui/fontDialog.ui']), ('share/gjots2/ui', ['ui/generalDialog.ui']), ('share/gjots2/ui', ['ui/prefsDialog.ui']), ('share/gjots2/ui', ['ui/printDialog.ui']), ('share/gjots2/ui', ['ui/sortDialog.ui']), ('share/gjots2/ui', ['ui/treeContextMenu.ui']), ('share/gjots2/pixmaps', ['pixmaps/gjots.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-new-page.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-new-child.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-merge-items.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-split-item.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-hide-all.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-show-all.png']), ('share/gjots2/pixmaps', ['pixmaps/gjots2-clock.png']), ('share/locale/en_US/LC_MESSAGES', ['po/en_US/LC_MESSAGES/gjots2.mo']), ('share/locale/fr/LC_MESSAGES', ['po/fr/LC_MESSAGES/gjots2.mo']), ('share/locale/no/LC_MESSAGES', ['po/no/LC_MESSAGES/gjots2.mo']), ('share/locale/nb/LC_MESSAGES', ['po/nb/LC_MESSAGES/gjots2.mo']), ('share/locale/ru/LC_MESSAGES', ['po/ru/LC_MESSAGES/gjots2.mo']), ('share/locale/it/LC_MESSAGES', ['po/it/LC_MESSAGES/gjots2.mo']), ('share/locale/cs/LC_MESSAGES', ['po/cs/LC_MESSAGES/gjots2.mo']), ('share/locale/es/LC_MESSAGES', ['po/es/LC_MESSAGES/gjots2.mo']), ('share/locale/sl/LC_MESSAGES', ['po/sl/LC_MESSAGES/gjots2.mo']), ('share/locale/sv/LC_MESSAGES', ['po/sv/LC_MESSAGES/gjots2.mo']), ('share/locale/de_DE/LC_MESSAGES', ['po/de_DE/LC_MESSAGES/gjots2.mo']), ('share/locale/en_US/LC_MESSAGES', ['po/en_US/LC_MESSAGES/gjots2.mo']), ('share/applications',['gjots2.desktop']), ], license = 'GNU GPL', platforms = 'posix', ) gjots2-2.4.1/gjots2-2.4.1.ebuild0000664000301100007650000000472412234162542015613 0ustar bhepplebhepple# Copyright 1999-2004 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License v2 # $Header: /home/bhepple/fun/sf/g/gjots/gjots2.ebuild,v 1.7.2.23 2012-06-02 12:42:57 bhepple Exp $ #### NOT TESTED FOR _AGES_ - I no longer have a gentoo system - if #### anyone wants to support this, please let me know. inherit python gnome.org DESCRIPTION="A graphical (GNOME 2) jotter tool" HOMEPAGE="http://bhepple.freeshell.org/gjots/" SRC_URI="http://bhepple.freeshell.org/gjots/${P}.tgz" LICENSE="GPL-2" SLOT="0" KEYWORDS="~x86" IUSE="" DEPEND=">=dev-lang/python-2.3.4 >=gnome-base/libglade-2.4.0 >=gnome-base/libgnome-2 >=dev-python/pygtk-2.4.1 >=dev-python/pyorbit-2.0.0 dev-python/libgnome-python dev-python/gconf-python" MAKEOPTS="${MAKEOPTS} -j1" #src_compile() { # emake || die "make failed" #} src_install() { cd ${S} dobin bin/gjots2 bin/gjots2html bin/gjots2html.py bin/gjots2docbook bin/docbook2gjots bin/gjots2emacs bin/gjots2lpr insinto /usr/lib/gjots2 doins lib/*.py insinto /usr/share/gjots2/ui doins ui/*.ui insinto /usr/share/gjots2/pixmaps doins pixmaps/*.png insinto /usr/share/applications doins gjots2.desktop insinto /usr/share/man/man1 doins doc/man/man1/*.1 dodoc README AUTHORS COPYING INSTALL ChangeLog insinto /usr/share/doc/${PF} doins gjots2.gjots doins gjots2.en_US.gjots doins gjots2.fr.gjots doins gjots2.no.gjots doins gjots2.nb.gjots doins gjots2.ru.gjots doins gjots2.es.gjots # not available: # doins gjots2.it.gjots # doins gjots2.cs.gjots insinto /usr/share/locale/en_US/LC_MESSAGES doins po/en_US/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/fr/LC_MESSAGES doins po/fr/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/no/LC_MESSAGES doins po/no/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/nb/LC_MESSAGES doins po/nb/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/ru/LC_MESSAGES doins po/ru/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/it/LC_MESSAGES doins po/it/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/cs/LC_MESSAGES doins po/cs/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/es/LC_MESSAGES doins po/es/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/sl/LC_MESSAGES doins po/sl/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/de_DE/LC_MESSAGES doins po/de_DE/LC_MESSAGES/gjots2.mo insinto /usr/share/locale/sv/LC_MESSAGES doins po/sv/LC_MESSAGES/gjots2.mo } pkg_postinst() { python_mod_optimize /usr/lib/gjots2 } pkg_postrm() { python_mod_cleanup /usr/lib/gjots2 } gjots2-2.4.1/gjots2.desktop0000664000301100007650000000140312234163052015344 0ustar bhepplebhepple[Desktop Entry] Encoding=UTF-8 Name=Gjots2 Jotter Name[cs]=Zápisník Gjots2 Name[en_US]=Gjots2 Jotter Name[fr]=Gjots2 Jotter Name[it]=Gjots2 Jotter Name[nb]=Gjots2 Jotter Name[no]=Gjots2 Jotter Name[ru]=Блокнот Gjots2 Comment=Store and organise your random notes Comment[cs]=Ukládá a organizuje náhodné poznámky Comment[en_US]=Store and organise your random notes Comment[fr]=Gère et organise vos notes Comment[it]=Memorizza ed organizza i tuoi vari appunti Comment[nb]=Organiser og ta vare på dine uordnede notater Comment[no]=Organiser og ta vare på dine uordnede notater Comment[ru]=Сохраняйте и организуйте Ваши заметки Exec=gjots2 Terminal=false Type=Application Icon=gjots2.png Categories=GNOME;Application;Utility; gjots2-2.4.1/AUTHORS0000664000301100007650000000006712234162541013620 0ustar bhepplebheppleBob Hepple, bhepple@freeshell.org - initial developmentgjots2-2.4.1/ChangeLog0000664000301100007650000002277712234163303014333 0ustar bhepplebhepple2013-10-30 Version 2.4.1 * Add support for gtk.builder (glade-3, fedora-18) in addition to gtk.xml (glade-2, Centos6) * Add a combobox on the find entry in the menubar with associated gconf entries. * Support gtksourceview3 as well as gtksourceview2 and gtksourceview * "move treeitem up/down" can now jump to adjacent parents * use a secondary treestore for cut & paste intead of a temporary file. A little more secure. * Fix gpg2 support * Added AutoSave after N seconds * Added last_file so that fileselect dialog can be primed * Added auto_read_only_timeout 2013-02-24 Version 2.3.16 * Add Swedish translation by Morgan Antonsson * Added ^R shortcut for read-only flag * Prevent drag & drop to before root item * Use xdg-open/gnome-open as URL handlers * rename gui's self.trace to debug to match the commandline option * Add support for gpg2 and gpg agent * if initial load fails then exit rather than display a blank * Support gedit as default external editor * Give focus to menubar_find_entry on find-next/find-prev and select all. * Jump to next/prev item on PgDn/PgUp at end/start of textBuffer * workaround GtkTextBuffer abherent behaviour on middle-button paste - see https://bugzilla.gnome.org/show_bug.cgi?id=673760 * re.I doesn't work on unicode strings somehow. At least not at the moment. Maybe it's a bug in python, maybe it'll get fixed, who knows. Meanwhile, this fixes the problem for russian, at least. * Enable utf-8 in find/replace * Fix crash on: create new page, drag'n'drop, type data * add a pop-up to remind user to install pygtksourceview to get undo 2011-07-14 Version 2.3.15 * Added find entry in menubar - needs gtk-2.16 or later 2011-07-11 Version 2.3.15 * Added German translation thanks to Uwe Steinmann 2011-07-06 Version 2.3.14 * Add "Find Previous" menu item S-C-g * "Find Previous" and "find Next" now set/unset the 'backwards' flag in 'preferences' 2011-07-04 Version 2.3.14 * Finish implemention of backwards search * Tighten regex for browser to look for xulrunner-2/.*firefox- 2011-06-18 Version 2.3.14 * MOD2_MASK was being set on all kb events - mask it out in treeview handler * ^End now goes to absolute last element. ^PgDn now goes to last visible element. * backwards search is implemented - it's backwards in tree but still forwards in text which is actually rather nice 2011-05-10 Version 2.3.13 * Fixed plain text, match-case find * Added Slovenian translation (thanks to Aleksa Šušulić) 2011-01-03 Version 2.3.12 * Spanish translation finalised 2010-12-19 Version 2.3.11 * Initial work on Spanish language support * Recent files support * Read-only mode makes inoperative tool buttons disappear * Set font dialog fixed * Preferences moved under Edit menu item * RPMs are installable on RHEL/Centos-5.5 (ie use md5 etc) * Dialogs now respond better to keyboard eg Enter = OK * If a file's timestamp changes while gjots2 is editing it then you are told about it and asked to confirm an overwrite. * 'Find' of an item now scrolls the treeview to that item * Add 'Find Next' menu item (^G) 2010-06-28 Version 2.3.10 * gtksourceview2 is supported. Smaller toolbar logos are used. 2009-08-10 Version 2.3.9 * An Undo/Redo function was added for the text buffer using gtksourceview. 2008-11-08 Version 2.3.8 * Updated dependency list in gjots2.gjots * Add -1 -2 -4 options to gjots2lpr * When `find' dialog pops up, make the 'search for' text selected so that it can be overwritten by just typing - no need to select and clear it. * Clean up 'invoke browser on url double-click' * Extend gjots2html to 8 levels (and cleanup) * Fix bugs reported by Redhat: * https://bugzilla.redhat.com/show_bug.cgi?id=464476: If gjots2 is not attached to a terminal (i.e. started from the Gnome menu as opposed to a command shell), it is not possible to open a gpg encrypted file. * https://bugzilla.redhat.com/show_bug.cgi?id=464510: vulnerability when processing a password. 2007-07-28 Version 2.3.7 * Changed to using glade-3 for UI - gjots.glade3 is now the XML file to load - this fixed the problems in the toolbar and menu icons * On double-clicking a http[s] URL, a browser is sought and run - preference is given to the setting of the BROWSER environment variable if set, then to an already running browser from the list "firefox", "konqueror", "epiphany", "opera", "dillo" and finally, to a runnable browser from the list. The URL is selected. * Removed the "New Page" and "Open" buttons from the top toolbar as they are not the most useful * Improved the coverage of the manual a little * Added a script to simplify printing a bit - gjots2lpr * Fixed a scoping problem when constructing the manual file name with a locale 2007-07-09 Version 2.3.6 * Added trace function enabled with the -t/--trace option 2007-07-08 * Fixed bug in get_linear_next function that caused _find_next to stop searching too soon 2007-06-07 Bob Hepple Version 2.3.5 * various crashes fixed in gui.py * gjots2emacs added * Czech translation by Martin Sin 2006-03-05 Bob Hepple Version 2.3.4 * Italian translation by Raimondo Giammanco 2006-02-26 Bob Hepple Version 2.3.4 * fix bug when accessing manual 2006-01-24 Bob Hepple Version 2.3.3 * First Russian version (LANG=ru). Translator is Sergey Bezdenezhnyh * Add no/nb versions of gjots2.gjots 2006-01-19 Bob Hepple Version 2.3.2 * First Norwegian version (LANG=nb_NO.utf8). Translator is Robert Emil Berge 2006-01-08 Bob Hepple Version 2.3.1 * First French version using message and manual files from Rui Nibau (RNB) rui.nibau@omacronides.com 2006-01-03 Bob Hepple Version 2.3.0 * Internationalisation (I18N) support. Translators are invited to contact the author. Note that French and Hungarian are already under way. 2005-12-22 Bob Hepple Version 2.2.1 * Bug 1250753 fixed - gjots crashes when demoting a newly created item * Bug 1376011 fixed - Merge destroys the tree. * Bug 1387036 fixed - UTF-8 encoding required in gjots2html output 2005-06-19 Gabriel Munoz Version 2.2.0 * The menus and toolbars have been re-organized for consistency. * Added different icons for many of the tool buttons. * Added options for viewing icons/text/both on the toolbars. * A context menu has been added when right-clicking the tree. * Tree sorting and text sorting has been separated. * The cut, copy, and paste commands have been consolidated to do the right thing with tree items and text based on what has the user focus. * We are now using a clipboard that will make copying and pasting from other applications into gjots2 and within gjots2 easier (and as it should be expected). * Made it easier for people to run gjots2 from its source directory. * Fixed hiding the toolbars to remove them from the screen, rather than just removing the icons and leaving dead screen space. * Fixed the export dialog cancel button to actually cancel the operation. * Fixed to handle the window manager close event so that gjots2 will always have a clean exit and no changes will be lost. * Lots of code cleanup, e.g. removal of dead code. * Added a "Gjots FAQ" section to the documentation. * Many bug fixes for stability were made. 2004-12-09 Version 2.1.1 * setup.py fixed * Installation doco improved * The sort dialog is not able to restore its settings - a bug in libglade? 2004-11-30 Version 2.1.0 * Added "Merge Items" - combine selected items into one * Added "Split Item" - split item into 2 * Added "Sort" function - sort items or text * Added "Print" function - print selected text or items * Added "Show All" function - explode the tree * Added "Hide All" function - implode the tree * "Remember password" option - no need to type the password (twice) when saving an encrypted file 2004-06-01 Version 2.0.1 * (Bug & fix (thanks!) sent in by Andreas Reimer) gui.py:434: self._warp(newnode) Caused an error message on "New Item", changed it to self._warp(new_child) * (Bug & fix (thanks!) sent in by Andreas Reimer) gui.py:1081 was: self.gui.msg("No changes to save"), changed to self.msg("...") * (Bug sent in by Andreas Reimer & Thomas Zajic): file.py:228: on write_file() a reference to body[-1] caused an error. changed to: if body and not body[-1] == '\n' * (Bug sent in by Thomas Zajic): hard-coded references to "/usr" should be replaced with something more adjustable to allow installation "anywhere". Also added setup.py and uninstall.sh for systems without RPM or emerge. * Added setup.py and uninstall.sh for non-RPM, non-emerge systems * Reduced python requirement to 2.2 (untested - please confirm if it works for you!) 2004-05-22 Version 2.0.0 * Initial release of gjots2 for Python/GTK-2 gjots2-2.4.1/COPYING0000664000301100007650000004311012234162542013600 0ustar bhepplebhepple GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. gjots2-2.4.1/INSTALL0000664000301100007650000000007612234162541013601 0ustar bhepplebhepplePlease see the file gjots2.gjots for installation instructionsgjots2-2.4.1/README0000664000301100007650000000015412234162540013424 0ustar bhepplebhepplegjots2 is a fairly simple jotter application for your desktop. See gjots2.gjots for installation details. gjots2-2.4.1/pixmaps/0000775000301100007650000000000012234163306014226 5ustar bhepplebhepplegjots2-2.4.1/pixmaps/gjots2-clock.png0000664000301100007650000000274612234162540017245 0ustar bhepplebhepplePNG  IHDRw=bKGD pHYsHHFk>IDATHǽ[lW%k{qY7McZG!LBոMxHi+UH<@yIyB1A׮ZRLcދw^fggi <0ߑw滜&90#RTkm7;JJe…5رFUxU zt>iyE3|:RQɯɭx5kdW{qqݣ^=kzhq=y?MB{[+sXlP^y}#_  /;eaz+LNL1>?ϫs_e1 hQuqxo%TW!qrU ?4E L]U=.]Z*E׾G~sk=_WM38, 4ExtTR G CB$fjjgxLٙ5] đ'vǣ8;I}DJꥲ%\bÝ "i{{;?P\m;|Wᾯ7BJĆ"?3N|}h4 xϓL$i{|cWۛ@U\ȍH.F*F .3piy;;Qೇ[.EUTO_ MsGL8BTUɧ8p+?3iBO'#\R[Z){ Ts V::: Fٻ>mmmΐ\Tb*, P(fn-# ضTfaTUEtv~Ab1:6NP,SSfӺ(Fw_ /,%N,O-/.NC5vg޼˻i9y{Hl;8N5RL#[T*sg1YZ[ /oQ:Btfm[UfhHEe{3GUU\%k?²J%[q3rr9 恈>-gZ[y"urPĮ8M\:cT:$rjiw>f7cz,RcGL4t/~!4Kdkd%[y{an0DBZv|)%xgCP+f »Lf<n7: k5[_ҫ7PIENDB`gjots2-2.4.1/pixmaps/gjots2-split-item.png0000664000301100007650000000222312234162540020227 0ustar bhepplebhepplePNG  IHDRw=sRGBbKGD pHYs  tIME ;IDATHǽ_he?wmsRQ[D YPR &2]4 fw.,]@]D(7uQ$VmyŞLMo:pxޗϗ={O|{pjZ ZV'===hJRDZV1IgE[T"P9Yc:::X|gp竔Eƞ[?_"L'q?eyeƊ]d YȽV(kP\zz6΁%4e 6 а^O?J͎Q Vg&c"8}W?9 hqU| :| sB'#_)1Qn8+9A t* CdЪ֦ IW"aZmJuCUWw(k| 0v-eYR,˼Ϫ6AQc ~p8$M-uuN$+c( )yoU 8tp_ (Ѧh? h|oS"ܰZTO]c-`=^OGv4y5*#ZkeQCkZql(ڍR;r . a(Z֕Z{El6+ `RittvH`IENDB`gjots2-2.4.1/pixmaps/gjots2-new-page.png0000664000301100007650000000210412234162540017641 0ustar bhepplebhepplePNG  IHDRw=gAMA abKGD pHYs @StIME  (g8:IDATxڽ]h\Esh6M)A+ɃYGKS9hOOaΞ=0:z r " b"Bss3?}xxqVDk-KyR,⺎8R`%[l*Nő̓V>u6vlY Es{Aq~L\< GWIrN"5νFP`׮d2tvWiDѣhMp^w޿xS^b~& r՚p]DAXТI&87' ? g_ ~~ BTa Wb^5RW4ܚBJٹYD!r6v75Q,uq̅ !fd4S7jWmǎ=PPRDOKKgCXV;,h$B* A/rT)ߝK_280ecDRߚ}<$;w2::ӽ 0Mlt:E( n<yCO133㺤IӬ!IDD%oBb(,Z4Xp8VAڔX,~B*gV8Ƭ1PJ!"e}d9!d+}D@3 5JuQI씦cn9& C._gOO X,vJD0::G8uw ދVjZsRinܸpzu 'k:t'Ng2833vjͽp0zƘ- ?O>-wS;e{_ "BRAӣ-[4@2Dj5"I$X(VR)I:;;ÍBFs Zk4{eEDr֚immcѣG9$ xZ{֑;ִo߾ O ]*#'''1%FQ])Z0&9GZ)co{Lګ5roX{cLи`jRJ) scpΩG[aLLis.HQCC\nVax3)jh)WeúU D\iMޒ$pno0T1 féƜI6<k}R,9WqLr5dždLוRaL&H)6fVEc, $#Izw}0333;>ccc ###8u11IbSAX@$J-*J~ М^Һ&!V㜣yA%k%ENe0FZˎqm;n?XO8Q*cl "0 m|n#'ma_ѿ jze׮] f2+0Ƌc},;٣7zyXtD/Wz_w^[%ѱr&޾ٝIݲ (q_`yA9i^<&q._7xhͲvc IENDB`gjots2-2.4.1/pixmaps/gjots2-hide-all.png0000664000301100007650000000107112234162540017617 0ustar bhepplebhepplePNG  IHDRw=bKGDCIDATxՕ@?gW`Cd )L>=%KICB'$uҸ"!BVƎ=A$4{f.V V}}B}ZR*"MPH*7mVLo7D\ېT⑦:5 i0hp#Ac|>Viq }Th]Cd|WZL,#0o#e_1z}<ϲ,}VimFF۶m 8L c˥>bvNy4M0$ CZ&C^gR/jSxsV$Ig@rJXnCp8o Hs( dπ_$8ׅ7Y~^FD9:'bDH_bjYq U%g#.pGReY@hRw Zvign9wL޻A@|IENDB`gjots2-2.4.1/pixmaps/gjots.png0000664000301100007650000000225712234162540016067 0ustar bhepplebhepplePNG  IHDR00WsRGBbKGD pHYs  ~tIME 5[6tEXtCommentCreated with GIMPW IDAThZa }333~Dchc((;-wc#-nf7v53Ώ3(w toMl͛]h gyxCZlH[f7?e:I0#)l[!6}\:hH[uW5ہdE029դTSeVU5"2AE30p1U1'L\w":PUcfwEqYxmgf61T!"s`hvͺ , o+`0Zwa}lqy:,dM!gVA2tLY:aI_XU7NyPZj:RG[zi] ׊GL騣jQ s-Jzg5z~ i@-Aͨ524AAX6%Hݖg(,Nh%x@!~M׬#q?8}װo7|?>C?y@PKCxU*;{]X;TMpoҗvIENDB`gjots2-2.4.1/ui/0000775000301100007650000000000012234163306013162 5ustar bhepplebhepplegjots2-2.4.1/ui/treeContextMenu.ui0000664000301100007650000001576412234162542016670 0ustar bhepplebhepple gtk-cut cutContextMenuItem gtk-copy copyContextMenuItem gtk-paste pasteContextMenuItem selectAllContextMenuItem Select _All gtk-find findContextMenuItem gnome-stock-multiple-file newPageContextMenuItem New Page newChildContextMenuItem New Child gtk-go-up upContextMenuItem gtk-go-down downContextMenuItem gtk-go-back promoteContextMenuItem Promote gtk-go-forward demoteContextMenuItem Demote mergeItemsContextMenuItem Merge Items showAllContextMenuItem Show All hideAllContextMenuItem Hide All sortTreeContextMenuItem Sort Tree importContextMenuItem Import exportContextMenuItem Export True gjots2-2.4.1/ui/sortDialog.ui0000664000301100007650000002526412234162542015642 0ustar bhepplebhepple 100 -1 10 1 10 1 True Sort dialog mouse True 10 vertical True 0 in True 12 True 2 2 Ascending True True False Sort in ascending order True True GTK_FILL Descending True True False Sort in descending order True True sortAscendingRadioButton 1 2 GTK_FILL Alphabetic True True False Sort in alphabetic order True True 1 2 GTK_FILL Numeric True True False Sort in numeric order True True sortAlphabeticRadioButton 1 2 1 2 GTK_FILL True Sort Parameters True False False 0 True 0 in True 12 True vertical True True How many sublevels to sort (0 for none; -1 for 'all') adjustment1 1 False False 0 True Sort Sublevels True 1 True end gtk-ok True True True False 5 True False False 0 gtk-cancel True True True False 5 True False False 1 2 gjots2-2.4.1/ui/printDialog.ui0000664000301100007650000003654412234162542016012 0ustar bhepplebhepple True Print dialog mouse True 10 vertical True 0 in True 12 True True 0 e.g. lpr: center False False 0 True True True True True print command (can be a shell expression) 5 1 True Print command True 0 True 0 in True 12 True vertical Page True True False Print the current page True True False False 0 Selection True True False Print the selected pages or text True True printPageRadioButton False False 1 All True True False Print the entire gjots file True True printPageRadioButton False False 2 True Print Range True 1 True 0 in True 12 True vertical True True Page feeds True True False Feeds a page before every new gjots item True True False False 0 Bold titles True False Print the gjots item titles in bold True True False False 1 Auto Number True True False True True False False 2 0 True Auto-number format: False False 0 True eg. 1 for 1.2.1, a 1 1 True Print formatting True 5 2 True end gtk-ok True True True False 5 True False False 0 gtk-cancel True True True False 5 True False False 1 3 gjots2-2.4.1/ui/prefsDialog.ui0000664000301100007650000004361412234162542015771 0ustar bhepplebhepple 10 200 70 1 10 100 1 10 100 1 10 True False gjots: preferences True mouse True False 10 True False 15 7 2 10 10 gtk-select-font True True False Choose a font for the text panel True 4 5 GTK_FILL True False 0 Date format: center 3 4 GTK_FILL True True Format for the timestamp function (see strftime(3)) eg %F %F False False True True 1 2 3 4 True True External program to edit a page (%s is replaced by the name of the temporary edit file) eg xterm -e vi %s xterm -e vi %s False False True True 1 2 2 3 True False 0 External editor center 2 3 GTK_FILL True False 0 Text Line Length: center 1 2 GTK_FILL True True Line length for paragraph wrapping False False True True adjustment1 1 True 1 2 1 2 True False 0 Text formatter: center GTK_FILL True True External program to pipe text for formatting (%d is replaced by the current line width) eg fmt -w %d fmt -w %d False False True True 1 2 True True Current text font False Courier 10 Pitch 10 False False True True 1 2 4 5 True False 0 AutoSave interval: center 5 6 GTK_FILL True True Seconds of inactivity to trigger an AutoSave (0 = no AutoSave) True False False True True adjustment2 1 True 1 2 5 6 True False 0 Auto ReadOnly timeout: center 6 7 GTK_FILL True True The number of second after losing focus that ReadOnly should be set. True False False True True adjustment3 1 True 1 2 6 7 True True 0 True False False True 1 True False end gtk-ok True True True False 5 True False False 0 gtk-cancel True True True False 5 True False False 1 True True 2 gjots2-2.4.1/ui/gjots.ui0000664000301100007650000020502612234162542014655 0ustar bhepplebhepple False True False True False True False True False _File True True False gtk-new True False True True gtk-open True False True True True False gtk-save True False True True gtk-save-as True False True True True False _Import True False Import items from a gjots file True False _Export True False Export selected items to a gjots file True False True False gtk-print True False True True True False True False Toggle the read-only flag if possible _Read-only True True False gtk-quit True False Exit gjots2 True True True False _Edit True True False gtk-undo True False True True gtk-redo True False True True gtk-cut True False True True gtk-copy True False True True gtk-paste True False True True True False gtk-select-all True False True True True False gtk-find True False True True Find Next True False False Find Previous True False False gtk-preferences True False True True True False _View True True False _Show All True False Show all items below the current item True False _Hide All True False Hide all items except the top level True False True False True False Toggles the main toolbar To_p Toolbar True True False Toggles tree tool bar Tre_e Toolbar True True False Show the related icon text Show _Icon Text True True False Status _Bar True True False _Tree True True False _New Page True False Create a new page True False New _Child True False Create a new child True False True False gtk-go-up True False Move selection up True True gtk-go-down True False Move selection down True True P_romote True False Selection becomes a sibling to their parent True False D_emote True False Selection becomes a child of the previous item True False True False _Split Item True False Make a new item from the current selection True False _Merge Items True False Merge current items into the first one True False S_ort Tree True False Popup the sort tree dialog True False True False Te_xt True True False _Format True False Format the current paragraph True False _Time stamp True False Add a time/date stamp (see preferences) True False _External Edit True False Edit current item in an external editor True False _Sort Text True False Popup the sort text dialog True False True False _Help True True False _Read Manual True False Read the online manual (using gjots) True False gtk-about True False True True False True 0 True False False True 1 gtk-find True True True True False False 2 True True True 0 True True True gtk-media-previous gtk-media-next True True 3 False True 0 True False 1 True False Save gjots document Save True gtk-save False True True False Print this document Print True gtk-print False True True False True False False True False Cut selected items Cut True gtk-cut False True True False Copy selected items Copy True gtk-copy False True True False Paste selected items Paste True gtk-paste False True True False True False False True False Wrap the current paragraph to the current line length Wrap True gtk-refresh False True True False Invoke an external editor on the current item Ext.Ed. True gtk-execute False True True False Add a time/date stamp (see prefs) Date True gjots2-clock False True True False Popup the find and replace dialog Find True gtk-find False True True False Popup the sort dialog Sort True gtk-sort-ascending False True True False Open gjots preferences window Prefs True gtk-preferences False True False True 1 True False True False 1 vertical True False Create a new item New Page True gjots2-new-page False True True False Create a new child New Child True gjots2-new-child False True True False True False False True False Move selection up Up True gtk-go-up False True True False Move selection down Down True gtk-go-down False True True False Selection becomes a sibling to their parent Promote True gtk-go-back False True True False Selection becomes a child of the previous item Demote True gtk-go-forward False True True False True False False True False Split the text selection into a new item Split Item True gjots2-split-item False True True False Merge selected items together Merge Items True gjots2-merge-items False True True False True False False True False Hide all items except for the top level Hide All True gjots2-hide-all False True True False Show all items below the current item Show All True gjots2-show-all False True True False Popup the sort tree dialog Sort Tree True gtk-sort-ascending False True False False 0 True True 211 True True True True True False True False True True True in True True word True True True True 1 True True 2 True False False True 3 gjots2-2.4.1/ui/generalDialog.ui0000664000301100007650000002300112234162542016253 0ustar bhepplebhepple True True 1 window1 True mouse True True vertical True 10 label1 center True False False 10 0 True 10 2 2 5 5 0 label2 center 1 2 0 label1 center True GDK_BUTTON_PRESS_MASK | GDK_STRUCTURE_MASK 1 2 1 2 True True GDK_BUTTON_PRESS_MASK | GDK_KEY_RELEASE_MASK 1 2 False False 1 label1 center False False 2 True False False 3 True end gtk-ok False False 5 True False False 0 gtk-no True False 5 True False False 2 gtk-cancel True False 5 True False False 3 Try again True True False 5 True False False 4 Read only True True False 5 True False False 5 False False 15 4 gjots2-2.4.1/ui/fontDialog.ui0000664000301100007650000000354312234162542015615 0ustar bhepplebhepple True 4 Select Font True mouse dialog True 4 True True True False True True False True True True False gjots2-2.4.1/ui/findDialog.ui0000664000301100007650000003672712234162542015601 0ustar bhepplebhepple True Find & replace dialog mouse True True True 10 2 2 10 10 True 0 Find: center GTK_FILL True 0 Replace: center 1 2 GTK_FILL True True True True True String to search for 1 2 True True String to replace 1 2 1 2 0 True 10 3 2 10 10 True Find True True False True GTK_FILL Close True True False True 1 2 GTK_FILL Replace True True False True 1 2 GTK_FILL Replace All True True False True 2 3 GTK_FILL Cancel True True False True 1 2 1 2 GTK_FILL Clear True True False True 1 2 2 3 GTK_FILL 1 0 True center False False 1 True 10 0 True True 10 2 2 10 10 True Match case True True False Don't ignore case True True Regular Expression True True False Find string is a regular expression (see 'man 7 regex') True True 1 2 Backwards True True False Search backwards True True 1 2 1 2 GTK_FILL Global True True False Searches entire file not just this entry True True 1 2 GTK_FILL True Options 2 gjots2-2.4.1/ui/fileDialog.ui0000664000301100007650000000757712234162542015601 0ustar bhepplebhepple 5 True True mouse normal True True True vertical 2 True Open file read only True True False To open the file in read-only mode. False True 0 False 2 True end gtk-ok True True True True False False 0 gtk-cancel True True True True False False 1 False end 0 gjots2-2.4.1/ui/about.ui0000664000301100007650000000223112234162542014632 0ustar bhepplebhepple True 5 mouse gjots.png dialog Copyright Bob Hepple 2002-2011 http://bhepple.freeshell.org/gjots2 Bob Hepple Gabriel Munoz Rui Nibau (fr) <rui.nibau@omacronides.com> Robert Emil Berge (no, nb) <filoktetes@linuxophic.org> Сергей Безденежных (Sergey Bezdenezhnyh) (ru) <sib-mail@mtu-net.ru> Raimondo Giammanco (it) <rongten@member.fsf.org> Martin Sin (cs) <martin.sin@zshk.cz> Cecilio Salmeron (es) <s.cecilio@gmail.com> Aleksa Šušulić (sl) <susulic@gmail.com> Uwe Steinmann (de) <uwe@steinmann.cx> gjots.png gjots2-2.4.1/po/0000775000301100007650000000000012234163306013163 5ustar bhepplebhepplegjots2-2.4.1/po/sv/0000775000301100007650000000000012234163053013612 5ustar bhepplebhepplegjots2-2.4.1/po/sv/LC_MESSAGES/0000755000301100007650000000000012234163053015375 5ustar bhepplebhepplegjots2-2.4.1/po/sv/LC_MESSAGES/gjots2.mo0000664000301100007650000004176512234163053017161 0ustar bhepplebheppleK  '7H]o +%#Cg5 '!48J b m w   %05f$    ,2 8BGC[@D%8J\nr  ' % =KS7cWW(Kt 73;AH'Q#y5+ 5D-T"*  &,@ R\ ep y      & . < P n w |    !  !!6!"I" N"Z"m"""(" " " "."+#?#H#%X#~## # ##### $($ F$R$d$y$$ $$$ $$#$ %%%6%O% e%s%% %%%''5'''(((( $( .( ;( E( R( ]( g( r( ~(((1( ((())+)PD))))) )))+)**#J*n*Xv*+ ++,,',<,R,j,,,,,, , -3&-#Z-!~---A-.. &.(1.$Z.... ...... /(/;/Y/m///://+ 050U0g0w0000#000 000A 1>N1B1111 222 42 >2H2Z2c2&t22)222 2'2#3 63@3CT3W3A3*24]4s4x44;4 4145-565 F5'P5'x5;5 55"5;6 Y6 e6'r6"6666-6-7 C7 N7 Y7f7 n7|777 77 77777 88/8 B8L8[8*s888 88 8 88(9!/9%Q9&w99999'9 :):=: E:0R::: : :::: ::: ;;1%;W; f; r;.|;-; ;;;<,< 4< A<O<c<}<< < < <<<= =%=7=J=]=r=#=="= = >%>7>I> d>r>Cv>"@@-@ A A(A;A BANA VAaArA{A A A AAAAA6A B+BABYBqBBPBBCC C/C1?C(qC%C*C C>'Zmp+# )<CUuR%VEqc8=]3/,oN4aPA_ M(vOS$1hGI&W 0 ns[jtJLB.Y{?lT}|:-iy2r"`; x97zQF D\K*@kfb~65wdgeH!X^ Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s. %s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission'%s' has changed since it was read. overwrite anyway?: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCould not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCreate a new childCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjots2ExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind PreviousFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphFoundGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInstall pygtksourceview to enable undo/redoInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpen file ...Open file read onlyOpen gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FontSelect _AllSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To open the file in read-only mode.To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gtk/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug to stdout -t, --trace: trace lines as they execute -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Edit_Export_External Edit_File_Format_Help_Hide All_Merge Items_New Page_Read Manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Tree_View_get_settings: Cant find sortAscendingRadioButtone.g. lpr: eg. 1 for 1.2.1, agjots2: %s already exists.gjots2: %s changedgjots2: Enter Passwordgjots2: can't lock file.gjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: preferenceslabel1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editorwindow1Project-Id-Version: gjots2 2.3.15 Report-Msgid-Bugs-To: POT-Creation-Date: 2012-01-08 00:54+1000 PO-Revision-Date: 2012-05-11 08:58+1000 Last-Translator: Morgan Antonsson Language-Team: Swedish Language: Swedish MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inställningar Intervall Utskriftskommando Utskriftsformat SorteringsparametrarSortera undernivåer%d element slogs ihopersatte %d förekomster%d trädelement kopierades%d trädelement klipptes ut%s är låst av pid %d%s är inte läsbar%s är inte skrivbar%s kräver pygtk-%s %s kräver python%s eller högre%s version %s%s: Varning: öppnar gjots2-instruktioner från %s %s: Varning: kör moduler från %s %s: felaktigt storleksformat: %s %s: låst av process med id %d%s: inga rättigheter'%s' har ändrats sedan den lästes in. Skriv över ändringarna?: Fel: Spara?: version Infoga datum och tid (se inställningar)Infoga datum och (se inställningar)AlltAll text är valdAlla trädelement valdesAlfabetisktStigande ordningAutomatisk numreringNumreringsformat: BakåtSvagt lösenordFelaktigt reguljärt uttryckRubriker i fetstilKan inte ta bort rotelementetKan inte fortsättaKan inte fortsätta längreKan inte fortsätta!Kan inte låsa filKan inte låsa filen %s: den är redan låst av process %dKan inte skapa en låsfil i Kan inte slå ihop sidor som har undersidorKan inte slå ihop rotelementetKan inte öppna "Kan inte läsa Kan inte köra '%s'Kan inte skriva Kan inte skriva AvbrytVälj ett typsnitt för textpanelenTömStängBekräfta: KopieraKopiera markeringenKunde inte hitta programmet ccrypt - installera och försök igenKunde inte hitta programmet gpg - installera och försök igenKunde inte hitta programmet openssl - installera och försök igenSkapa en ny undersidaSkapa en ny sidaSkapa en ny sidaValt typsnittKlipp utKlipp ut markeringenN_edsänkDatum/tidDatum-/tidformat:NedsänkFallande ordningGör skillnad på gemener och versalerNedRedigera vald sida i en extern redigerareSkriv in lösenord för Avsluta gjots2ExporteraExportera valda sidor till en gjots-filExportera till ...Ext. red.Extern redigerare: Extern formatterare "%s" är inte installerad - kan inte formatteraExternt program för att redigera en sida (%s byts ut mot namn på tillfällig textfil)Externt program för formattering (%d byts ut mot vald radlängd)Skriver ut varje gjots-sida på en ny sidaFilen kan inte låsasSökSök och ersättSök föregåendeSöksträngen är ett reguljärt uttryck (se 'man 7 regex')Sök efter:Format för datum-/tidfunktionen (se strftime(3))Formattera valt avsnittHittadesGlobal sökningGöm allaGöm alla sidor utom dem på toppnivånGöm alla sidor utom dem på toppnivånAntal undernivåer att sortera (0 för ingen; -1 för alla)ImporteraImportera från ...Importera sidor från en gjots-filInstallera pygtksourceview för att slå på ångra/gör omInternt felInternt fel!Öppna extern redigerare för vald sidaRadlängd för brytning av styckenSkapa en ny sida av vald textSkiftlägeskänsligSlå ihop sidorSlå ihop valda sidor under den första sidanSlå ihop valda sidorFlytta nedFlytta uppNy undersidaNy sidaNy unde_rsidaNy filNy...>>>Inget att sparaInget barn!Ingen förälder!Hittades inteSparades inte.Inget är valtInget är valt!Inget att slå ihopInget att klistra inInget att sparaInget att sortera!NumerisktÖppna fil ...Öppna som skrivskyddadÖppna fönstret för gjots inställningarU_pphöjSidaSidbrytningLösenordet bekräftades inteLösenord: Klistra inKlistra in från urklippÖppna dialogrutan för sök och ersättÖppna dialogrutan för sorteringÖppna dialogrutan för textsorteringÖppna dialogrutan för trädsorteringInställningarSkriv utSkriv ut vald sidaSkriv ut hela gjots-filenSkriv gjots-sidornas rubriker i fetstilSkriv ut vald sida eller textSkriv ut dokumentetUpphöjSkrivskyddadLäs instruktioner från internet (m.h.a. gjots)Reguljärt uttryckErsättErsätt allaErsätt med:Ersätt?S_ortera trädSparaSpara som ...Spara ändringar?Spara gjots-dokumentSparades.Sök baklängesSöker i hela filen, inte bara på den här sidanVälj typsnittVälj _alltMarkeringVald sida blir ett barn till föregående sidaVald sida blir ett syskon till sin förälderVisa allaVisa _ikontextVisa alla sidor under vald sidaVisa text för varje ikonSorteraSortera textSortera trädSortera alfabetisktSorter i stigande ordningSortera i fallande ordningSortera numerisktDela sidaFlytta vald text till en ny sida_StatuspanelSträng att ersätta medSträng att söka efterTe_xtRadlängd: Texten kopieradesTexten klipptes utTextformattering: Texten klistrades inFilen är redan öppen!Öppna en fil i skrivskyddat läge._HuvudverktygsradFörsök ändra skrivskyddsflagganVisar/gömmer huvudverktygsradenVisar/gömmer trädverktygsraden_TrädverktygsradTrädet är tomt!Trädelement klistrades inFörsök igenUppAnvändning: gjots [FLAGGOR] [FILNAMN] Ett gtk/X11-anteckningsblock FLAGGOR: -h, --help: visa hjälp -d, --debug: skriv ut felsökningsinformation -t, --trace: skriv ut varje rad som exekveras -g 123x456, --geometry=123x456: ursprunglig fönsterstorlek (X x Y) -p, --purge-password spara inte lösenord -r, --readonly: öppna skrivskyddat -V, --version: visa programmets version och avsluta FILNAMN: gjots-datafilens namn (förvald fil är $HOME/.gjotsfile) Skriv -h för att visa hjälptext RadbrytRadbryt vald paragraf vid inställd radlängd_Redigera_Exportera_Extern redigerare_Arkiv_Formattera_Hjälp_Göm allaSlå _ihop sidorNy _sida_Läs instruktionerSkrivsk_yddad_Visa alla_Sortera text_Dela upp sida_Infoga datum och tid_Träd_Visa_get_settings: Kan inte hitta sortAscendingRadioButtont.ex. lpr: t.ex. 1 för 1.2.1, agjots2: %s finns redan.gjots2: %s har ändratsgjots2: Skriv in lösenordgjots2: kan inte låsa filgjots2: varning: vald lista är NULL. Hoppar över ändrat trädvals- händelse.gjots: inställningaretikett1etikett2inte initieradSkriv över %s?kommando för utskrift (kan vara ett skaluttryck)pygtk-2.2 krävs av det här programmet!texten ändrades av extern redigeraretexten ändrades inte av extern redigerarefönster1gjots2-2.4.1/po/sv.po0000664000301100007650000006212412234162543014162 0ustar bhepplebhepple# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gjots2 2.3.15\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-01-08 00:54+1000\n" "PO-Revision-Date: 2012-05-11 08:58+1000\n" "Last-Translator: Morgan Antonsson \n" "Language-Team: Swedish \n" "Language: Swedish\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../ui/about.ui:9 msgid "Copyright Bob Hepple 2002-2012" msgstr "" #: ../ui/about.ui:10 msgid "http://bhepple.freeshell.org/gjots2" msgstr "" #: ../ui/about.ui:20 msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) \n" msgstr "" #: ../ui/fileDialog.ui:23 msgid "Open file read only" msgstr "Öppna som skrivskyddad" #: ../ui/fileDialog.ui:27 msgid "To open the file in read-only mode." msgstr "Öppna en fil i skrivskyddat läge." #: ../ui/findDialog.ui:7 msgid "Find & replace" msgstr "Sök och ersätt" #: ../ui/findDialog.ui:28 msgid "Find:" msgstr "Sök efter:" #: ../ui/findDialog.ui:40 msgid "Replace:" msgstr "Ersätt med:" #: ../ui/findDialog.ui:57 msgid "String to search for" msgstr "Sträng att söka efter" #: ../ui/findDialog.ui:69 msgid "String to replace" msgstr "Sträng att ersätta med" #: ../ui/findDialog.ui:96 ../ui/gjots.ui:876 msgid "Find" msgstr "Sök" #: ../ui/findDialog.ui:112 msgid "Close" msgstr "Stäng" #: ../ui/findDialog.ui:128 msgid "Replace" msgstr "Ersätt" #: ../ui/findDialog.ui:144 msgid "Replace All" msgstr "Ersätt alla" #: ../ui/findDialog.ui:160 msgid "Cancel" msgstr "Avbryt" #: ../ui/findDialog.ui:179 msgid "Clear" msgstr "Töm" #: ../ui/findDialog.ui:233 msgid "Match case" msgstr "Skiftlägeskänslig" #: ../ui/findDialog.ui:237 msgid "Don't ignore case" msgstr "Gör skillnad på gemener och versaler" #: ../ui/findDialog.ui:247 msgid "Regular Expression" msgstr "Reguljärt uttryck" #: ../ui/findDialog.ui:251 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Söksträngen är ett reguljärt uttryck (se 'man 7 regex')" #: ../ui/findDialog.ui:263 msgid "Backwards" msgstr "Bakåt" #: ../ui/findDialog.ui:267 msgid "Search backwards" msgstr "Sök baklänges" #: ../ui/findDialog.ui:282 msgid "Global" msgstr "Global sökning" #: ../ui/findDialog.ui:286 msgid "Searches entire file not just this entry" msgstr "Söker i hela filen, inte bara på den här sidan" #: ../ui/findDialog.ui:302 msgid " Options " msgstr " Inställningar " #: ../ui/fontDialog.ui:8 msgid "Select Font" msgstr "Välj typsnitt" #: ../ui/generalDialog.ui:9 msgid "window1" msgstr "fönster1" #: ../ui/generalDialog.ui:21 ../ui/generalDialog.ui:56 #: ../ui/generalDialog.ui:102 msgid "label1" msgstr "etikett1" #: ../ui/generalDialog.ui:43 msgid "label2" msgstr "etikett2" #: ../ui/generalDialog.ui:178 msgid "Try again" msgstr "Försök igen" #: ../ui/generalDialog.ui:194 msgid "Read only" msgstr "Skrivskyddad" #: ../ui/gjots.ui:23 msgid "_File" msgstr "_Arkiv" #: ../ui/gjots.ui:92 msgid "Import items from a gjots file" msgstr "Importera sidor från en gjots-fil" #: ../ui/gjots.ui:101 msgid "_Export" msgstr "_Exportera" #: ../ui/gjots.ui:104 msgid "Export selected items to a gjots file" msgstr "Exportera valda sidor till en gjots-fil" #: ../ui/gjots.ui:140 msgid "Toggle the read-only flag if possible" msgstr "Försök ändra skrivskyddsflaggan" #: ../ui/gjots.ui:142 msgid "_Read-only" msgstr "Skrivsk_yddad" #: ../ui/gjots.ui:158 msgid "Exit gjots2" msgstr "Avsluta gjots2" #: ../ui/gjots.ui:175 msgid "_Edit" msgstr "_Redigera" #: ../ui/gjots.ui:287 msgid "Find Previous" msgstr "Sök föregående" #: ../ui/gjots.ui:316 msgid "_View" msgstr "_Visa" #: ../ui/gjots.ui:324 msgid "_Show All" msgstr "_Visa alla" #: ../ui/gjots.ui:327 ../ui/gjots.ui:1131 msgid "Show all items below the current item" msgstr "Visa alla sidor under vald sida" #: ../ui/gjots.ui:336 msgid "_Hide All" msgstr "_Göm alla" #: ../ui/gjots.ui:339 msgid "Hide all items except the top level" msgstr "Göm alla sidor utom dem på toppnivån" #: ../ui/gjots.ui:357 msgid "Toggles the main toolbar" msgstr "Visar/gömmer huvudverktygsraden" #: ../ui/gjots.ui:359 msgid "To_p Toolbar" msgstr "_Huvudverktygsrad" #: ../ui/gjots.ui:368 msgid "Toggles tree tool bar" msgstr "Visar/gömmer trädverktygsraden" #: ../ui/gjots.ui:370 msgid "Tre_e Toolbar" msgstr "_Trädverktygsrad" #: ../ui/gjots.ui:379 msgid "Show the related icon text" msgstr "Visa text för varje ikon" #: ../ui/gjots.ui:381 msgid "Show _Icon Text" msgstr "Visa _ikontext" #: ../ui/gjots.ui:391 msgid "Status _Bar" msgstr "_Statuspanel" #: ../ui/gjots.ui:405 msgid "_Tree" msgstr "_Träd" #: ../ui/gjots.ui:413 msgid "_New Page" msgstr "Ny _sida" #: ../ui/gjots.ui:416 msgid "Create a new page" msgstr "Skapa en ny sida" #: ../ui/gjots.ui:425 msgid "New _Child" msgstr "Ny unde_rsida" #: ../ui/gjots.ui:428 ../ui/gjots.ui:955 msgid "Create a new child" msgstr "Skapa en ny undersida" #: ../ui/gjots.ui:447 ../ui/gjots.ui:987 msgid "Move selection up" msgstr "Flytta upp" #: ../ui/gjots.ui:459 ../ui/gjots.ui:1003 msgid "Move selection down" msgstr "Flytta ned" #: ../ui/gjots.ui:468 msgid "P_romote" msgstr "U_pphöj" #: ../ui/gjots.ui:471 ../ui/gjots.ui:1019 msgid "Selection becomes a sibling to their parent" msgstr "Vald sida blir ett syskon till sin förälder" #: ../ui/gjots.ui:480 msgid "D_emote" msgstr "N_edsänk" #: ../ui/gjots.ui:483 ../ui/gjots.ui:1035 msgid "Selection becomes a child of the previous item" msgstr "Vald sida blir ett barn till föregående sida" #: ../ui/gjots.ui:499 msgid "_Split Item" msgstr "_Dela upp sida" #: ../ui/gjots.ui:502 msgid "Make a new item from the current selection" msgstr "Skapa en ny sida av vald text" #: ../ui/gjots.ui:511 msgid "_Merge Items" msgstr "Slå _ihop sidor" #: ../ui/gjots.ui:514 msgid "Merge current items into the first one" msgstr "Slå ihop valda sidor under den första sidan" #: ../ui/gjots.ui:523 msgid "S_ort Tree" msgstr "S_ortera träd" #: ../ui/gjots.ui:526 ../ui/gjots.ui:1147 msgid "Popup the sort tree dialog" msgstr "Öppna dialogrutan för trädsortering" #: ../ui/gjots.ui:542 msgid "Te_xt" msgstr "Te_xt" #: ../ui/gjots.ui:550 msgid "_Format" msgstr "_Formattera" #: ../ui/gjots.ui:553 msgid "Format the current paragraph" msgstr "Formattera valt avsnitt" #: ../ui/gjots.ui:563 msgid "_Time stamp" msgstr "_Infoga datum och tid" #: ../ui/gjots.ui:566 msgid "Add a time/date stamp (see preferences)" msgstr "Infoga datum och tid (se inställningar)" #: ../ui/gjots.ui:575 msgid "_External Edit" msgstr "_Extern redigerare" #: ../ui/gjots.ui:578 msgid "Edit current item in an external editor" msgstr "Redigera vald sida i en extern redigerare" #: ../ui/gjots.ui:587 msgid "_Sort Text" msgstr "_Sortera text" #: ../ui/gjots.ui:590 msgid "Popup the sort text dialog" msgstr "Öppna dialogrutan för textsortering" #: ../ui/gjots.ui:606 msgid "_Help" msgstr "_Hjälp" #: ../ui/gjots.ui:614 msgid "_Read Manual" msgstr "_Läs instruktioner" #: ../ui/gjots.ui:617 msgid "Read the online manual (using gjots)" msgstr "Läs instruktioner från internet (m.h.a. gjots)" #: ../ui/gjots.ui:714 msgid "Save gjots document" msgstr "Spara gjots-dokument" #: ../ui/gjots.ui:716 msgid "Save" msgstr "Spara" #: ../ui/gjots.ui:730 msgid "Print this document" msgstr "Skriv ut dokumentet" #: ../ui/gjots.ui:732 ../ui/printDialog.ui:7 msgid "Print" msgstr "Skriv ut" #: ../ui/gjots.ui:762 msgid "Cut selected items" msgstr "Klipp ut markeringen" #: ../ui/gjots.ui:764 msgid "Cut" msgstr "Klipp ut" #: ../ui/gjots.ui:778 msgid "Copy selected items" msgstr "Kopiera markeringen" #: ../ui/gjots.ui:780 msgid "Copy" msgstr "Kopiera" #: ../ui/gjots.ui:794 msgid "Paste selected items" msgstr "Klistra in från urklipp" #: ../ui/gjots.ui:796 msgid "Paste" msgstr "Klistra in" #: ../ui/gjots.ui:826 msgid "Wrap the current paragraph to the current line length" msgstr "Radbryt vald paragraf vid inställd radlängd" #: ../ui/gjots.ui:828 msgid "Wrap" msgstr "Radbryt" #: ../ui/gjots.ui:842 msgid "Invoke an external editor on the current item" msgstr "Öppna extern redigerare för vald sida" #: ../ui/gjots.ui:844 msgid "Ext.Ed." msgstr "Ext. red." #: ../ui/gjots.ui:858 msgid "Add a time/date stamp (see prefs)" msgstr "Infoga datum och (se inställningar)" #: ../ui/gjots.ui:860 msgid "Date" msgstr "Datum/tid" #: ../ui/gjots.ui:874 msgid "Popup the find and replace dialog" msgstr "Öppna dialogrutan för sök och ersätt" #: ../ui/gjots.ui:890 msgid "Popup the sort dialog" msgstr "Öppna dialogrutan för sortering" #: ../ui/gjots.ui:892 ../ui/sortDialog.ui:15 msgid "Sort" msgstr "Sortera" #: ../ui/gjots.ui:906 msgid "Open gjots preferences window" msgstr "Öppna fönstret för gjots inställningar" #: ../ui/gjots.ui:908 msgid "Prefs" msgstr "Inställningar" #: ../ui/gjots.ui:939 msgid "Create a new item" msgstr "Skapa en ny sida" #: ../ui/gjots.ui:941 ../ui/treeContextMenu.ui:45 msgid "New Page" msgstr "Ny sida" #: ../ui/gjots.ui:957 ../ui/treeContextMenu.ui:52 msgid "New Child" msgstr "Ny undersida" #: ../ui/gjots.ui:989 msgid "Up" msgstr "Upp" #: ../ui/gjots.ui:1005 msgid "Down" msgstr "Ned" #: ../ui/gjots.ui:1021 ../ui/treeContextMenu.ui:74 msgid "Promote" msgstr "Upphöj" #: ../ui/gjots.ui:1037 ../ui/treeContextMenu.ui:82 msgid "Demote" msgstr "Nedsänk" #: ../ui/gjots.ui:1067 msgid "Split the text selection into a new item" msgstr "Flytta vald text till en ny sida" #: ../ui/gjots.ui:1069 msgid "Split Item" msgstr "Dela sida" #: ../ui/gjots.ui:1083 msgid "Merge selected items together" msgstr "Slå ihop valda sidor" #: ../ui/gjots.ui:1085 ../ui/treeContextMenu.ui:89 msgid "Merge Items" msgstr "Slå ihop sidor" #: ../ui/gjots.ui:1115 msgid "Hide all items except for the top level" msgstr "Göm alla sidor utom dem på toppnivån" #: ../ui/gjots.ui:1117 ../ui/treeContextMenu.ui:103 msgid "Hide All" msgstr "Göm alla" #: ../ui/gjots.ui:1133 ../ui/treeContextMenu.ui:96 msgid "Show All" msgstr "Visa alla" #: ../ui/gjots.ui:1149 ../ui/treeContextMenu.ui:110 ../lib/sortDialog.py:308 msgid "Sort Tree" msgstr "Sortera träd" #: ../ui/prefsDialog.ui:15 msgid "gjots: preferences" msgstr "gjots: inställningar" #: ../ui/prefsDialog.ui:35 msgid "Choose a font for the text panel" msgstr "Välj ett typsnitt för textpanelen" #: ../ui/prefsDialog.ui:50 msgid "Date format:" msgstr "Datum-/tidformat:" #: ../ui/prefsDialog.ui:64 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format för datum-/tidfunktionen (se strftime(3))" #: ../ui/prefsDialog.ui:65 msgid "%F" msgstr "" #: ../ui/prefsDialog.ui:80 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "Externt program för att redigera en sida (%s byts ut mot namn på " "tillfällig textfil)" #: ../ui/prefsDialog.ui:81 msgid "xterm -e vi %s" msgstr "" #: ../ui/prefsDialog.ui:96 msgid "External editor" msgstr "Extern redigerare: " #: ../ui/prefsDialog.ui:110 msgid "Text Line Length: " msgstr "Radlängd: " #: ../ui/prefsDialog.ui:124 msgid "Line length for paragraph wrapping" msgstr "Radlängd för brytning av stycken" #: ../ui/prefsDialog.ui:142 msgid "Text formatter: " msgstr "Textformattering: " #: ../ui/prefsDialog.ui:154 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "Externt program för formattering (%d byts ut mot vald radlängd)" #: ../ui/prefsDialog.ui:155 msgid "fmt -w %d " msgstr "" #: ../ui/prefsDialog.ui:168 msgid "Current text font" msgstr "Valt typsnitt" #: ../ui/prefsDialog.ui:170 msgid "Courier 10 Pitch 10" msgstr "" #: ../ui/printDialog.ui:31 msgid "e.g. lpr: " msgstr "t.ex. lpr: " #: ../ui/printDialog.ui:47 msgid "print command (can be a shell expression)" msgstr "kommando för utskrift (kan vara ett skaluttryck)" #: ../ui/printDialog.ui:62 msgid " Print command " msgstr " Utskriftskommando " #: ../ui/printDialog.ui:86 msgid "Page" msgstr "Sida" #: ../ui/printDialog.ui:90 msgid "Print the current page" msgstr "Skriv ut vald sida" #: ../ui/printDialog.ui:102 msgid "Selection" msgstr "Markering" #: ../ui/printDialog.ui:106 msgid "Print the selected pages or text" msgstr "Skriv ut vald sida eller text" #: ../ui/printDialog.ui:119 msgid "All" msgstr "Allt" #: ../ui/printDialog.ui:123 msgid "Print the entire gjots file" msgstr "Skriv ut hela gjots-filen" #: ../ui/printDialog.ui:141 msgid " Print Range " msgstr " Intervall " #: ../ui/printDialog.ui:169 msgid "Page feeds" msgstr "Sidbrytning" #: ../ui/printDialog.ui:173 msgid "Feeds a page before every new gjots item" msgstr "Skriver ut varje gjots-sida på en ny sida" #: ../ui/printDialog.ui:185 msgid "Bold titles" msgstr "Rubriker i fetstil" #: ../ui/printDialog.ui:188 msgid "Print the gjots item titles in bold" msgstr "Skriv gjots-sidornas rubriker i fetstil" #: ../ui/printDialog.ui:200 msgid "Auto Number" msgstr "Automatisk numrering" #: ../ui/printDialog.ui:223 msgid "Auto-number format: " msgstr "Numreringsformat: " #: ../ui/printDialog.ui:234 msgid "eg. 1 for 1.2.1, a" msgstr "t.ex. 1 för 1.2.1, a" #: ../ui/printDialog.ui:252 msgid " Print formatting " msgstr " Utskriftsformat " #: ../ui/sortDialog.ui:39 msgid "Ascending" msgstr "Stigande ordning" #: ../ui/sortDialog.ui:43 msgid "Sort in ascending order" msgstr "Sorter i stigande ordning" #: ../ui/sortDialog.ui:54 msgid "Descending" msgstr "Fallande ordning" #: ../ui/sortDialog.ui:58 msgid "Sort in descending order" msgstr "Sortera i fallande ordning" #: ../ui/sortDialog.ui:72 msgid "Alphabetic" msgstr "Alfabetiskt" #: ../ui/sortDialog.ui:76 msgid "Sort in alphabetic order" msgstr "Sortera alfabetiskt" #: ../ui/sortDialog.ui:89 msgid "Numeric" msgstr "Numeriskt" #: ../ui/sortDialog.ui:93 msgid "Sort in numeric order" msgstr "Sortera numeriskt" #: ../ui/sortDialog.ui:114 msgid " Sort Parameters " msgstr "Sorteringsparametrar" #: ../ui/sortDialog.ui:142 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Antal undernivåer att sortera (0 för ingen; -1 för alla)" #: ../ui/sortDialog.ui:159 msgid " Sort Sublevels " msgstr "Sortera undernivåer" #: ../ui/treeContextMenu.ui:30 msgid "Select _All" msgstr "Välj _allt" #: ../ui/treeContextMenu.ui:117 msgid "Import" msgstr "Importera" #: ../ui/treeContextMenu.ui:124 msgid "Export" msgstr "Exportera" #: ../gjots2:28 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gtk/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug to stdout\n" "-t, --trace: trace lines as they execute\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "Användning: gjots [FLAGGOR] [FILNAMN]\n" "Ett gtk/X11-anteckningsblock\n" "\n" "FLAGGOR:\n" "-h, --help: visa hjälp\n" "-d, --debug: skriv ut felsökningsinformation\n" "-t, --trace: skriv ut varje rad som exekveras\n" "-g 123x456, --geometry=123x456: ursprunglig fönsterstorlek (X x Y)\n" "-p, --purge-password\t\t\t\tspara inte lösenord\n" "-r, --readonly: öppna skrivskyddat\n" "-V, --version: visa programmets version och avsluta\n" "\n" "FILNAMN:\n" "\tgjots-datafilens namn (förvald fil är $HOME/.gjotsfile)\n" #: ../gjots2:54 #, python-format msgid "%s requires python%s or higher." msgstr "%s kräver python%s eller högre" #: ../gjots2:64 #, python-format msgid "%s requires pygtk-%s.\n" msgstr "%s kräver pygtk-%s \n" #: ../gjots2:77 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Varning: kör moduler från %s\n" #: ../gjots2:90 msgid "Use -h for help\n" msgstr "Skriv -h för att visa hjälptext\n" #: ../gjots2:104 #, python-format msgid "%s version %s" msgstr "%s version %s" #: ../lib/gui.py:140 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Extern formatterare \"%s\" är inte installerad - kan " "inte formattera" #: ../lib/gui.py:399 msgid "not initialised" msgstr "inte initierad" #: ../lib/gui.py:657 ../lib/gui.py:698 ../lib/gui.py:702 #: ../lib/gui.py:744 ../lib/gui.py:748 ../lib/gui.py:807 #: ../lib/gui.py:812 ../lib/gui.py:1025 ../lib/gui.py:1034 #: ../lib/gui.py:1117 ../lib/gui.py:1126 ../lib/gui.py:1159 #: ../lib/gui.py:1164 ../lib/gui.py:1190 ../lib/gui.py:1551 #: ../lib/gui.py:2279 ../lib/gui.py:2298 ../lib/gui.py:2327 #: ../lib/gui.py:2357 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Inget är valt" #: ../lib/gui.py:661 ../lib/gui.py:707 ../lib/gui.py:752 #: ../lib/gui.py:817 ../lib/gui.py:920 ../lib/gui.py:1195 #: ../lib/gui.py:2283 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Ingen förälder!" #: ../lib/gui.py:665 ../lib/gui.py:718 msgid "No child!" msgstr "Inget barn!" #: ../lib/gui.py:668 ../lib/gui.py:712 msgid "Can't go any further" msgstr "Kan inte fortsätta" #: ../lib/gui.py:675 ../lib/gui.py:835 msgid "Internal error!" msgstr "Internt fel!" #: ../lib/gui.py:756 msgid "Can't go further!" msgstr "Kan inte fortsätta!" #: ../lib/gui.py:959 msgid "Text cut" msgstr "Texten klipptes ut" #: ../lib/gui.py:970 msgid "Text copied" msgstr "Texten kopierades" #: ../lib/gui.py:982 msgid "Text pasted" msgstr "Texten klistrades in" #: ../lib/gui.py:991 msgid "All text selected" msgstr "All text är vald" #: ../lib/gui.py:997 msgid "All tree items selected" msgstr "Alla trädelement valdes" #: ../lib/gui.py:1005 msgid "Nothing selected!" msgstr "Inget är valt!" #: ../lib/gui.py:1029 msgid "Can't merge the root item" msgstr "Kan inte slå ihop rotelementet" #: ../lib/gui.py:1038 msgid "Nothing to merge" msgstr "Inget att slå ihop" #: ../lib/gui.py:1045 msgid "Can't merge items that have children" msgstr "Kan inte slå ihop sidor som har undersidor" #: ../lib/gui.py:1075 #, python-format msgid "%d items merged" msgstr "%d element slogs ihop" #: ../lib/gui.py:1121 msgid "Can't delete the root item" msgstr "Kan inte ta bort rotelementet" #: ../lib/gui.py:1151 #, python-format msgid "%d tree items cut" msgstr "%d trädelement klipptes ut" #: ../lib/gui.py:1178 #, python-format msgid "%d tree items copied" msgstr "%d trädelement kopierades" #: ../lib/gui.py:1185 msgid "Nothing to paste" msgstr "Inget att klistra in" #: ../lib/gui.py:1201 msgid "Tree items pasted" msgstr "Trädelement klistrades in" #: ../lib/gui.py:1221 msgid "Can't write " msgstr "Kan inte skriva " #: ../lib/gui.py:1231 #, python-format msgid "Can't run '%s'" msgstr "Kan inte köra '%s'" #: ../lib/gui.py:1240 msgid "Can't read " msgstr "Kan inte läsa " #: ../lib/gui.py:1248 msgid "text changed by external editor" msgstr "texten ändrades av extern redigerare" #: ../lib/gui.py:1250 msgid "text not changed by external editor" msgstr "texten ändrades inte av extern redigerare" #: ../lib/gui.py:1268 msgid ": Error" msgstr ": Fel" #: ../lib/gui.py:1281 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Kan inte låsa filen %s: den är redan låst av process %d" #: ../lib/gui.py:1455 msgid ": Save?" msgstr ": Spara?" #: ../lib/gui.py:1456 msgid "Save current work?" msgstr "Spara ändringar?" #: ../lib/gui.py:1477 msgid "New file" msgstr "Ny fil" #: ../lib/gui.py:1501 msgid "Open file ..." msgstr "Öppna fil ..." #: ../lib/gui.py:1512 msgid "No changes to save" msgstr "Inget att spara" #: ../lib/gui.py:1516 ../lib/gui.py:1536 msgid "Saved." msgstr "Sparades." #: ../lib/gui.py:1518 ../lib/gui.py:1538 ../lib/file.py:429 msgid "Not saved." msgstr "Sparades inte." #: ../lib/gui.py:1532 msgid "Nothing to save" msgstr "Inget att spara" #: ../lib/gui.py:1534 ../lib/file.py:651 msgid "Save as ..." msgstr "Spara som ..." #: ../lib/gui.py:1548 msgid "Import from ..." msgstr "Importera från ..." #: ../lib/gui.py:1559 msgid "Export to ..." msgstr "Exportera till ..." #: ../lib/gui.py:1878 ../lib/gui.py:1881 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Varning: öppnar gjots2-instruktioner från %s\n" #: ../lib/gui.py:1921 msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) " msgstr "" #: ../lib/gui.py:2217 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 krävs av det här programmet!" #: ../lib/gui.py:2223 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "gjots2: varning: vald lista är NULL. Hoppar över ändrat trädvals-\n" "händelse." #: ../lib/gui.py:2287 msgid "Can't go further" msgstr "Kan inte fortsätta längre" #: ../lib/gui.py:2316 msgid "Tree is empty!" msgstr "Trädet är tomt!" #: ../lib/gui.py:2585 msgid "Bad regular expression" msgstr "Felaktigt reguljärt uttryck" #: ../lib/gui.py:2678 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: felaktigt storleksformat: %s\n" #: ../lib/gui.py:2882 msgid "New...>>>" msgstr "Ny...>>>" #: ../lib/gui.py:2914 msgid "Install pygtksourceview to enable undo/redo" msgstr "Installera pygtksourceview för att slå på ångra/gör om" #: ../lib/gui.py:2967 msgid ": version " msgstr ": version " #: ../lib/find.py:77 ../lib/find.py:100 msgid "Not found" msgstr "Hittades inte" #: ../lib/find.py:79 msgid "Found" msgstr "Hittades" #: ../lib/find.py:103 msgid "Replace?" msgstr "Ersätt?" #: ../lib/find.py:120 #, python-format msgid "%d substitutions" msgstr "ersatte %d förekomster" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Skriv in lösenord för " #: ../lib/file.py:252 msgid "gjots2: Enter Password" msgstr "gjots2: Skriv in lösenord" #: ../lib/file.py:254 msgid "Password: " msgstr "Lösenord: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Bekräfta: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Lösenordet bekräftades inte" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Kunde inte hitta programmet ccrypt - installera och försök igen" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Kunde inte hitta programmet gpg - installera och försök igen" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Kunde inte hitta programmet openssl - installera och försök igen" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Kan inte öppna \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Svagt lösenord" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Filen kan inte låsas" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Kan inte skriva " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Kan inte låsa fil" #: ../lib/file.py:560 #, python-format msgid "%s is not readable" msgstr "%s är inte läsbar" #: ../lib/file.py:576 #, python-format msgid "%s: no permission" msgstr "%s: inga rättigheter" #: ../lib/file.py:578 #, python-format msgid "%s: locked by process number %d" msgstr "%s: låst av process med id %d" #: ../lib/file.py:580 msgid "gjots2: can't lock file." msgstr "gjots2: kan inte låsa fil" #: ../lib/file.py:618 #, python-format msgid "gjots2: %s changed" msgstr "gjots2: %s har ändrats" #: ../lib/file.py:619 #, python-format msgid "" "'%s' has changed since it was read.\n" "overwrite anyway?" msgstr "'%s' har ändrats sedan den lästes in.\n" "Skriv över ändringarna?" #: ../lib/file.py:663 msgid "That file is already open!" msgstr "Filen är redan öppen!" #: ../lib/file.py:680 #, python-format msgid "%s is locked by pid %d" msgstr "%s är låst av pid %d" #: ../lib/file.py:684 msgid "Can't make a lockfile in " msgstr "Kan inte skapa en låsfil i " #: ../lib/file.py:697 #, python-format msgid "%s is not writable" msgstr "%s är inte skrivbar" #: ../lib/file.py:700 #, python-format msgid "gjots2: %s already exists." msgstr "gjots2: %s finns redan." #: ../lib/file.py:701 #, python-format msgid "overwrite %s?" msgstr "Skriv över %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Kan inte hitta sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Internt fel" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Inget att sortera!" #: ../lib/sortDialog.py:312 msgid "Sort Text" msgstr "Sortera text" gjots2-2.4.1/po/de_DE/0000775000301100007650000000000012234163053014122 5ustar bhepplebhepplegjots2-2.4.1/po/de_DE/LC_MESSAGES/0000755000301100007650000000000012234163053015705 5ustar bhepplebhepplegjots2-2.4.1/po/de_DE/LC_MESSAGES/gjots2.mo0000664000301100007650000004124112234163053017456 0ustar bhepplebheppleQ   ,>ORbs +%H#n5 '!=_cu      ->P0`$    =C ISXlC@DUi|  ' 4H%O u7WW+( 73"Vsy'#5 "AP-`"*  &8L ^h q|       ! 2 : H \ z     !   !'!B!H!N!e!#! !!! !$!"$" ,"8"A" J"U" Z"f"y"""(" " " "."+#K#T#%d### # ####$ $()$ R$^$p$$$ $$$ $$#$ %%%B%[% q%%% %%%%5%%%&&&$& *& 4& A& K& X& c& m& x& &&& && &&&& 'P#'t'#'''' ')'+(-(#M(q(y(@( ) ) ))**/*2*F*U*g***** * +++*<+.g+-++@+, %, 2,+=,*i,,,, , ,,,-!- 3- T-%`- - ---Q-+.&K.r......(./ #/ ./9H9&f99)9'9 9 ::):C:%c::: ::::: ; ;; $;.;@;[; t;;>;;;;I<=J<<<2<< < ==&=<=Q=e=y=)= =="== = >>(>9> I>.j>>,>">!>?0???Q?c?h? ?!? ? ??????@ @@ /@:@K@Z@ k@x@~@ @@ @@@@#A@*AkA#AAAAA5A-B"=B(`BBBs/`hV,fm?wy4{97 \rz~kDQHP 2)Yul.jW;<+!aX6x(KS CBvG>iM_U^=@J|b -p}&A*3:#g5 c8[%RNF$Zo1EtT] Ld0nOq"Ie' Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s. %s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission'%s' has changed since it was read. overwrite anyway?: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2012Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for ExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind PreviousFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphFoundGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpen file ...Open file read onlyOpen gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FontSelect _AllSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To open the file in read-only mode.To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUse -h for help WrapWrap the current paragraph to the current line length_Edit_Export_External Edit_File_Format_Help_Hide All_Merge Items_New Page_Read Manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Tree_Viewe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjots2: %s already exists.gjots2: %s changedgjots2: Enter Passwordgjots2: can't lock file.gjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editorwindow1xterm -e vi %sProject-Id-Version: PACKAGE VERSION Report-Msgid-Bugs-To: POT-Creation-Date: 2012-01-08 00:54+1000 PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE Last-Translator: FULL NAME Language-Team: LANGUAGE Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit EinstellungenDruckbereichDruckkommandoDruckformatierungSortiereinstellungenUnterebenen sortieren%F%d Seiten verbunden%d Ersetzungen%d Seiten kopiert%d Seiten ausgeschnitten%s is blockiert durch PID %d%s ist nicht lesbar%s ist nicht schreibbar%s benötigt pygtk-%s. %s benötigt python%s or besser.%s Version %s%s: Warnung: Öffne gjots2-Handbuch von %s %s: Warning: Auführung der Module von %s %s: fehlerhafte Angabe der Fenstergröße: %s %s: blockiert durch Prozess mit der Nummer %d%s: keine Berechtigung'%s' wurde seit dem Öffnen verändert. Trotzdem überschreiben?: Fehler: Speichern?: Version Zeitstempel einfügen (siehe Einstellungen)Zeit/Datum einfügen (siehe Einstellungen)AllesGesamter Text ausgewähltAlle Seiten ausgewähltAlphabetischAufsteigendAuto. nummerierenFormat der NumerierungRückwärts suchenFalsches PaßwortFehlerhafter regulärer AusdruckFette TitelKann die oberste Seite nicht löschenEnde erreichtEnde erreichtEnde erreicht!Kann Datei nicht blockierenKann Datei %s nicht blockieren. Sie wurde bereits durch den Prozess %d blockiert.Kann Seiten mit Unterseiten nicht verbindenKann die oberste Seite nicht verbindenKann nicht öffnen "Lesen nicht möglichKann '%s' nicht ausführenSchreiben nicht möglichKann nicht schreiben in AbbruchWähle eine Schrift für die TexteingabeLöschenSchließenBestätigen: KopierenAusgewählte Seiten kopierenCopyright Bob Hepple 2002-2012Konnte das Programm 'ccrypt' nicht finden - Bitte installieren Sie es und probieren Sie es erneut.Konnte das Programm 'gpg' nicht finden - Bitte installieren Sie es und probieren Sie es erneut.Konnte das Programm 'openssl' nicht finden - Bitte installieren Sie es und probieren Sie es erneut.Courier 10 Pitch 10Eine neue Unterseite erzeugenEine neue Seite erzeugenErzeuge eine neue SeiteZur Zeit ausgewählte SchriftAusschneidenAusgewählte Seiten ausschneidenIn _Unterebene verschiebenDatumDatumsformat:In Unterebene verschiebenAbsteigendGroß-/Kleinschreibung beachtenRunterInhalt der aktuellen Seite im einem externen Editor aufrufenPaßwort eingeben für ExportierenExportiere ausgewählte Seiten in gjots DateiExportiere ...Ext. Ed.Externer EditorExterner Textformatierer "%s" ist nicht installiert - Formatierung nicht möglichExternes Programm, um eine Seite zu editieren (%s wird durch den Namen der temporären Datei ersetzt).Externes Programm an das der Text über stdin zur Formatierung übergeben wird (%d wird durch die Zeilenlänge ersetzt).Seitenumbruch vor jeder neuen Seite einfügenDatei kann nicht blockiert werdenSuchenSuchen & ErsetzenRückwärts suchenSuchtext ist ein regulärer Ausdruck (siehe 'man 7 regex')Suchen:Format für einen Zeitstempel (siehe strftime(3))Formatiere AbsatzGefundenÜber alles suchenAlle Seiten verbergenVerberge alle Seiten mit Ausnahme der obersten SeiteVerberge alle Seiten mit Ausnahme des obersten SeiteZahl der Unterebenen, die sortiert werden sollen (0 für keine, -1 für ale)ImportierenImportiere ...Importiere Seiten aus gjots DateiInterner FehlerInterner Fehler!Externen Editor mit Inhalt der Seite öffnenZeilenlänge beim Umbruch eines AbsatzesNeue Seite aus der aktuellen Auswahl erstellenGroß-/Kleinschreibung beachtenSeiten verbindenAusgewählte Seiten mit der ersten ausgewählten Seite verbindenAusgewählte Seiten verbindenAusgewählte Seiten noch unten schiebenAuswählte Seiten nach oben schiebenNeue UnterseiteNeue SeiteNeue _UnterseiteNeue DateiNeu ...>>>Keine Änderungen vorgenommenKeine Unterseite!Keine Elternseite!Nicht gefundenNicht gespeichert.Nichts ausgewähltNichts ausgewählt!Nichts zu verbindenNichts zum einfügenSpeichern nicht notwendigNichts zu sortieren!NummerischDatei öffnen ...Datei im Nur-Lese-Modus öffnenEinstellungsdialog öffnenEine Ebene höherSeiteSeitenumbruchPaßwort wurde nicht korrekt bestätigtPaßwort: EinfügenAusgewählte Seiten einfügenDialog zum Suchen und Ersetzen öffnenDialog zum Sortieren öffnenDialog zur Sortierung des Textes aufrufenDialog zur Sortierung des Baums öffnenEinstellungenDruckenAktuelle Seite druckenDie gesamte Datei druckenDrucke die Titel in FettschriftAusgewählte Seiten oder Text druckenDokument druckenEine Ebene höherNur lesenDie Anleitung mit gjots lesenRegulärer AusdruckErsetzenAlles ErsetzenErsetzen:Ersetzen?Baum _sortierenSpeichernSpeichern als ...Aktuellen Stand speichern?gjots Dokument speichernGespeichert.Rückwärts suchenSucht in der gesamten Datei, nicht nur auf der aktuellen SeiteSchrift auswählen_Alles auswählenAuswahlAusgewählte Seiten werden zu Unterseiten der darüber befindlichen SeiteAusgewählte Seiten auf die Ebene der Elternseite verschiebenAlle Seiten zeigenText unter SymbolenZeige alle Seiten unterhalb der aktuellen Seite anText unter Symbolen anzeigenSortierenSortiere TextBaum sortierenSortiere alphabetischSortiere aufsteigendSortiere absteigendSortiere nummerischSeite aufteilenTextauswahl in zwei neue Seiten aufteilen_StatusleisteErsetzungstextText, nach dem gesucht werden sollTe_xtZeilenlänge:Text kopiertText ausgeschnittenTextformatierer:Text eingefügtDie Datei ist bereits geöffnet!Auswählen, um die Datei nur lesend zu öffnen_HauptsymbolleisteWenn möglich in den Nur-Lese-Modus wechselnHauptsymbolleiste ein-/ausschaltenBaumsymbolleiste ein-/ausschalten_BaumsymbolleisteBaum ist leer!Seiten eingefügtNochmal versuchenHochVerwende -h für Hilfe UmbrechenAbsatz auf Zeilenbreite umbrechen_Bearbeiten_ExportierenIm _Editor aufrufen_Datei_Format_HilfeSeiten _verbergenSeiten verbinden_Neue Seite_Anleitung lesen_LesemodusSeiten _anzeigen_Sortiere TextSeite _aufteilen_Zeitstempel_Baum_Ansehenz.B. lpr: z.B. 1 für 1.2.1, afmt -w %d gjots2: %s existiert bereits.gjots2: %s wurde verändertgjots2: Paßwort eingebengjots2: kann Datei nicht blockierengjots2: Warnung: Auswahlliste ist leer. Keine Aktion ausgeführtgjots: Einstellungenhttp://bhepple.freeshell.org/gjots2Marke1Marke2nicht initialisiert%s Überschreiben?Druckkommando (kann eine Anweisung in der Shell sein)pygtk-2.2 ist für diese Anwendung notwendig!Text in externen Editor verändertText in externen Editor nicht verändertFenster1xterm -e vi %sgjots2-2.4.1/po/de_DE.po0000664000301100007650000006547312234162543014504 0ustar bhepplebhepple# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-01-08 00:54+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../ui/about.ui:9 msgid "Copyright Bob Hepple 2002-2012" msgstr "Copyright Bob Hepple 2002-2012" #: ../ui/about.ui:10 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../ui/about.ui:20 #, fuzzy msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) \n" msgstr "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" #: ../ui/fileDialog.ui:23 msgid "Open file read only" msgstr "Datei im Nur-Lese-Modus öffnen" #: ../ui/fileDialog.ui:27 msgid "To open the file in read-only mode." msgstr "Auswählen, um die Datei nur lesend zu öffnen" #: ../ui/findDialog.ui:7 msgid "Find & replace" msgstr "Suchen & Ersetzen" #: ../ui/findDialog.ui:28 msgid "Find:" msgstr "Suchen:" #: ../ui/findDialog.ui:40 msgid "Replace:" msgstr "Ersetzen:" #: ../ui/findDialog.ui:57 msgid "String to search for" msgstr "Text, nach dem gesucht werden soll" #: ../ui/findDialog.ui:69 msgid "String to replace" msgstr "Ersetzungstext" #: ../ui/findDialog.ui:96 ../ui/gjots.ui:876 msgid "Find" msgstr "Suchen" #: ../ui/findDialog.ui:112 msgid "Close" msgstr "Schließen" #: ../ui/findDialog.ui:128 msgid "Replace" msgstr "Ersetzen" #: ../ui/findDialog.ui:144 msgid "Replace All" msgstr "Alles Ersetzen" #: ../ui/findDialog.ui:160 msgid "Cancel" msgstr "Abbruch" #: ../ui/findDialog.ui:179 msgid "Clear" msgstr "Löschen" #: ../ui/findDialog.ui:233 msgid "Match case" msgstr "Groß-/Kleinschreibung beachten" #: ../ui/findDialog.ui:237 msgid "Don't ignore case" msgstr "Groß-/Kleinschreibung beachten" #: ../ui/findDialog.ui:247 msgid "Regular Expression" msgstr "Regulärer Ausdruck" #: ../ui/findDialog.ui:251 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Suchtext ist ein regulärer Ausdruck (siehe 'man 7 regex')" #: ../ui/findDialog.ui:263 msgid "Backwards" msgstr "Rückwärts suchen" #: ../ui/findDialog.ui:267 msgid "Search backwards" msgstr "Rückwärts suchen" #: ../ui/findDialog.ui:282 msgid "Global" msgstr "Über alles suchen" #: ../ui/findDialog.ui:286 msgid "Searches entire file not just this entry" msgstr "Sucht in der gesamten Datei, nicht nur auf der aktuellen Seite" #: ../ui/findDialog.ui:302 msgid " Options " msgstr "Einstellungen" #: ../ui/fontDialog.ui:8 msgid "Select Font" msgstr "Schrift auswählen" #: ../ui/generalDialog.ui:9 msgid "window1" msgstr "Fenster1" #: ../ui/generalDialog.ui:21 ../ui/generalDialog.ui:56 #: ../ui/generalDialog.ui:102 msgid "label1" msgstr "Marke1" #: ../ui/generalDialog.ui:43 msgid "label2" msgstr "Marke2" #: ../ui/generalDialog.ui:178 msgid "Try again" msgstr "Nochmal versuchen" #: ../ui/generalDialog.ui:194 msgid "Read only" msgstr "Nur lesen" #: ../ui/gjots.ui:23 msgid "_File" msgstr "_Datei" #: ../ui/gjots.ui:92 msgid "Import items from a gjots file" msgstr "Importiere Seiten aus gjots Datei" #: ../ui/gjots.ui:101 msgid "_Export" msgstr "_Exportieren" #: ../ui/gjots.ui:104 msgid "Export selected items to a gjots file" msgstr "Exportiere ausgewählte Seiten in gjots Datei" #: ../ui/gjots.ui:140 msgid "Toggle the read-only flag if possible" msgstr "Wenn möglich in den Nur-Lese-Modus wechseln" #: ../ui/gjots.ui:142 msgid "_Read-only" msgstr "_Lesemodus" #: ../ui/gjots.ui:158 #, fuzzy msgid "Exit gjots2" msgstr "gjots beenden" #: ../ui/gjots.ui:175 msgid "_Edit" msgstr "_Bearbeiten" #: ../ui/gjots.ui:287 msgid "Find Previous" msgstr "Rückwärts suchen" #: ../ui/gjots.ui:316 msgid "_View" msgstr "_Ansehen" #: ../ui/gjots.ui:324 msgid "_Show All" msgstr "Seiten _anzeigen" #: ../ui/gjots.ui:327 ../ui/gjots.ui:1131 msgid "Show all items below the current item" msgstr "Zeige alle Seiten unterhalb der aktuellen Seite an" #: ../ui/gjots.ui:336 msgid "_Hide All" msgstr "Seiten _verbergen" #: ../ui/gjots.ui:339 msgid "Hide all items except the top level" msgstr "Verberge alle Seiten mit Ausnahme des obersten Seite" #: ../ui/gjots.ui:357 msgid "Toggles the main toolbar" msgstr "Hauptsymbolleiste ein-/ausschalten" #: ../ui/gjots.ui:359 msgid "To_p Toolbar" msgstr "_Hauptsymbolleiste" #: ../ui/gjots.ui:368 msgid "Toggles tree tool bar" msgstr "Baumsymbolleiste ein-/ausschalten" #: ../ui/gjots.ui:370 msgid "Tre_e Toolbar" msgstr "_Baumsymbolleiste" #: ../ui/gjots.ui:379 msgid "Show the related icon text" msgstr "Text unter Symbolen anzeigen" #: ../ui/gjots.ui:381 msgid "Show _Icon Text" msgstr "Text unter Symbolen" #: ../ui/gjots.ui:391 msgid "Status _Bar" msgstr "_Statusleiste" #: ../ui/gjots.ui:405 msgid "_Tree" msgstr "_Baum" #: ../ui/gjots.ui:413 msgid "_New Page" msgstr "_Neue Seite" #: ../ui/gjots.ui:416 msgid "Create a new page" msgstr "Erzeuge eine neue Seite" #: ../ui/gjots.ui:425 msgid "New _Child" msgstr "Neue _Unterseite" #: ../ui/gjots.ui:428 ../ui/gjots.ui:955 msgid "Create a new child" msgstr "Eine neue Unterseite erzeugen" #: ../ui/gjots.ui:447 ../ui/gjots.ui:987 msgid "Move selection up" msgstr "Auswählte Seiten nach oben schieben" #: ../ui/gjots.ui:459 ../ui/gjots.ui:1003 msgid "Move selection down" msgstr "Ausgewählte Seiten noch unten schieben" #: ../ui/gjots.ui:468 msgid "P_romote" msgstr "Eine Ebene höher" #: ../ui/gjots.ui:471 ../ui/gjots.ui:1019 msgid "Selection becomes a sibling to their parent" msgstr "Ausgewählte Seiten auf die Ebene der Elternseite verschieben" #: ../ui/gjots.ui:480 msgid "D_emote" msgstr "In _Unterebene verschieben" #: ../ui/gjots.ui:483 ../ui/gjots.ui:1035 msgid "Selection becomes a child of the previous item" msgstr "" "Ausgewählte Seiten werden zu Unterseiten der darüber befindlichen Seite" #: ../ui/gjots.ui:499 msgid "_Split Item" msgstr "Seite _aufteilen" #: ../ui/gjots.ui:502 msgid "Make a new item from the current selection" msgstr "Neue Seite aus der aktuellen Auswahl erstellen" #: ../ui/gjots.ui:511 msgid "_Merge Items" msgstr "Seiten verbinden" #: ../ui/gjots.ui:514 msgid "Merge current items into the first one" msgstr "Ausgewählte Seiten mit der ersten ausgewählten Seite verbinden" #: ../ui/gjots.ui:523 msgid "S_ort Tree" msgstr "Baum _sortieren" #: ../ui/gjots.ui:526 ../ui/gjots.ui:1147 msgid "Popup the sort tree dialog" msgstr "Dialog zur Sortierung des Baums öffnen" #: ../ui/gjots.ui:542 msgid "Te_xt" msgstr "Te_xt" #: ../ui/gjots.ui:550 msgid "_Format" msgstr "_Format" #: ../ui/gjots.ui:553 msgid "Format the current paragraph" msgstr "Formatiere Absatz" #: ../ui/gjots.ui:563 msgid "_Time stamp" msgstr "_Zeitstempel" #: ../ui/gjots.ui:566 msgid "Add a time/date stamp (see preferences)" msgstr "Zeitstempel einfügen (siehe Einstellungen)" #: ../ui/gjots.ui:575 msgid "_External Edit" msgstr "Im _Editor aufrufen" #: ../ui/gjots.ui:578 msgid "Edit current item in an external editor" msgstr "Inhalt der aktuellen Seite im einem externen Editor aufrufen" #: ../ui/gjots.ui:587 msgid "_Sort Text" msgstr "_Sortiere Text" #: ../ui/gjots.ui:590 msgid "Popup the sort text dialog" msgstr "Dialog zur Sortierung des Textes aufrufen" #: ../ui/gjots.ui:606 msgid "_Help" msgstr "_Hilfe" #: ../ui/gjots.ui:614 msgid "_Read Manual" msgstr "_Anleitung lesen" #: ../ui/gjots.ui:617 msgid "Read the online manual (using gjots)" msgstr "Die Anleitung mit gjots lesen" #: ../ui/gjots.ui:714 msgid "Save gjots document" msgstr "gjots Dokument speichern" #: ../ui/gjots.ui:716 msgid "Save" msgstr "Speichern" #: ../ui/gjots.ui:730 msgid "Print this document" msgstr "Dokument drucken" #: ../ui/gjots.ui:732 ../ui/printDialog.ui:7 msgid "Print" msgstr "Drucken" #: ../ui/gjots.ui:762 msgid "Cut selected items" msgstr "Ausgewählte Seiten ausschneiden" #: ../ui/gjots.ui:764 msgid "Cut" msgstr "Ausschneiden" #: ../ui/gjots.ui:778 msgid "Copy selected items" msgstr "Ausgewählte Seiten kopieren" #: ../ui/gjots.ui:780 msgid "Copy" msgstr "Kopieren" #: ../ui/gjots.ui:794 msgid "Paste selected items" msgstr "Ausgewählte Seiten einfügen" #: ../ui/gjots.ui:796 msgid "Paste" msgstr "Einfügen" #: ../ui/gjots.ui:826 msgid "Wrap the current paragraph to the current line length" msgstr "Absatz auf Zeilenbreite umbrechen" #: ../ui/gjots.ui:828 msgid "Wrap" msgstr "Umbrechen" #: ../ui/gjots.ui:842 msgid "Invoke an external editor on the current item" msgstr "Externen Editor mit Inhalt der Seite öffnen" #: ../ui/gjots.ui:844 msgid "Ext.Ed." msgstr "Ext. Ed." #: ../ui/gjots.ui:858 msgid "Add a time/date stamp (see prefs)" msgstr "Zeit/Datum einfügen (siehe Einstellungen)" #: ../ui/gjots.ui:860 msgid "Date" msgstr "Datum" #: ../ui/gjots.ui:874 msgid "Popup the find and replace dialog" msgstr "Dialog zum Suchen und Ersetzen öffnen" #: ../ui/gjots.ui:890 msgid "Popup the sort dialog" msgstr "Dialog zum Sortieren öffnen" #: ../ui/gjots.ui:892 ../ui/sortDialog.ui:15 msgid "Sort" msgstr "Sortieren" #: ../ui/gjots.ui:906 msgid "Open gjots preferences window" msgstr "Einstellungsdialog öffnen" #: ../ui/gjots.ui:908 msgid "Prefs" msgstr "Einstellungen" #: ../ui/gjots.ui:939 msgid "Create a new item" msgstr "Eine neue Seite erzeugen" #: ../ui/gjots.ui:941 ../ui/treeContextMenu.ui:45 msgid "New Page" msgstr "Neue Seite" #: ../ui/gjots.ui:957 ../ui/treeContextMenu.ui:52 msgid "New Child" msgstr "Neue Unterseite" #: ../ui/gjots.ui:989 msgid "Up" msgstr "Hoch" #: ../ui/gjots.ui:1005 msgid "Down" msgstr "Runter" #: ../ui/gjots.ui:1021 ../ui/treeContextMenu.ui:74 msgid "Promote" msgstr "Eine Ebene höher" #: ../ui/gjots.ui:1037 ../ui/treeContextMenu.ui:82 msgid "Demote" msgstr "In Unterebene verschieben" #: ../ui/gjots.ui:1067 msgid "Split the text selection into a new item" msgstr "Textauswahl in zwei neue Seiten aufteilen" #: ../ui/gjots.ui:1069 msgid "Split Item" msgstr "Seite aufteilen" #: ../ui/gjots.ui:1083 msgid "Merge selected items together" msgstr "Ausgewählte Seiten verbinden" #: ../ui/gjots.ui:1085 ../ui/treeContextMenu.ui:89 msgid "Merge Items" msgstr "Seiten verbinden" #: ../ui/gjots.ui:1115 msgid "Hide all items except for the top level" msgstr "Verberge alle Seiten mit Ausnahme der obersten Seite" #: ../ui/gjots.ui:1117 ../ui/treeContextMenu.ui:103 msgid "Hide All" msgstr "Alle Seiten verbergen" #: ../ui/gjots.ui:1133 ../ui/treeContextMenu.ui:96 msgid "Show All" msgstr "Alle Seiten zeigen" #: ../ui/gjots.ui:1149 ../ui/treeContextMenu.ui:110 ../lib/sortDialog.py:308 msgid "Sort Tree" msgstr "Baum sortieren" #: ../ui/prefsDialog.ui:15 msgid "gjots: preferences" msgstr "gjots: Einstellungen" #: ../ui/prefsDialog.ui:35 msgid "Choose a font for the text panel" msgstr "Wähle eine Schrift für die Texteingabe" #: ../ui/prefsDialog.ui:50 msgid "Date format:" msgstr "Datumsformat:" #: ../ui/prefsDialog.ui:64 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format für einen Zeitstempel (siehe strftime(3))" #: ../ui/prefsDialog.ui:65 msgid "%F" msgstr "%F" #: ../ui/prefsDialog.ui:80 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "" "Externes Programm, um eine Seite zu editieren (%s wird durch den Namen der " "temporären Datei ersetzt)." #: ../ui/prefsDialog.ui:81 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../ui/prefsDialog.ui:96 msgid "External editor" msgstr "Externer Editor" #: ../ui/prefsDialog.ui:110 msgid "Text Line Length: " msgstr "Zeilenlänge:" #: ../ui/prefsDialog.ui:124 msgid "Line length for paragraph wrapping" msgstr "Zeilenlänge beim Umbruch eines Absatzes" #: ../ui/prefsDialog.ui:142 msgid "Text formatter: " msgstr "Textformatierer:" #: ../ui/prefsDialog.ui:154 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "" "Externes Programm an das der Text über stdin zur Formatierung übergeben wird " "(%d wird durch die Zeilenlänge ersetzt)." #: ../ui/prefsDialog.ui:155 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../ui/prefsDialog.ui:168 msgid "Current text font" msgstr "Zur Zeit ausgewählte Schrift" #: ../ui/prefsDialog.ui:170 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../ui/printDialog.ui:31 msgid "e.g. lpr: " msgstr "z.B. lpr: " #: ../ui/printDialog.ui:47 msgid "print command (can be a shell expression)" msgstr "Druckkommando (kann eine Anweisung in der Shell sein)" #: ../ui/printDialog.ui:62 msgid " Print command " msgstr "Druckkommando" #: ../ui/printDialog.ui:86 msgid "Page" msgstr "Seite" #: ../ui/printDialog.ui:90 msgid "Print the current page" msgstr "Aktuelle Seite drucken" #: ../ui/printDialog.ui:102 msgid "Selection" msgstr "Auswahl" #: ../ui/printDialog.ui:106 msgid "Print the selected pages or text" msgstr "Ausgewählte Seiten oder Text drucken" #: ../ui/printDialog.ui:119 msgid "All" msgstr "Alles" #: ../ui/printDialog.ui:123 msgid "Print the entire gjots file" msgstr "Die gesamte Datei drucken" #: ../ui/printDialog.ui:141 msgid " Print Range " msgstr "Druckbereich" #: ../ui/printDialog.ui:169 msgid "Page feeds" msgstr "Seitenumbruch" #: ../ui/printDialog.ui:173 msgid "Feeds a page before every new gjots item" msgstr "Seitenumbruch vor jeder neuen Seite einfügen" #: ../ui/printDialog.ui:185 msgid "Bold titles" msgstr "Fette Titel" #: ../ui/printDialog.ui:188 msgid "Print the gjots item titles in bold" msgstr "Drucke die Titel in Fettschrift" #: ../ui/printDialog.ui:200 msgid "Auto Number" msgstr "Auto. nummerieren" #: ../ui/printDialog.ui:223 msgid "Auto-number format: " msgstr "Format der Numerierung" #: ../ui/printDialog.ui:234 msgid "eg. 1 for 1.2.1, a" msgstr "z.B. 1 für 1.2.1, a" #: ../ui/printDialog.ui:252 msgid " Print formatting " msgstr "Druckformatierung" #: ../ui/sortDialog.ui:39 msgid "Ascending" msgstr "Aufsteigend" #: ../ui/sortDialog.ui:43 msgid "Sort in ascending order" msgstr "Sortiere aufsteigend" #: ../ui/sortDialog.ui:54 msgid "Descending" msgstr "Absteigend" #: ../ui/sortDialog.ui:58 msgid "Sort in descending order" msgstr "Sortiere absteigend" #: ../ui/sortDialog.ui:72 msgid "Alphabetic" msgstr "Alphabetisch" #: ../ui/sortDialog.ui:76 msgid "Sort in alphabetic order" msgstr "Sortiere alphabetisch" #: ../ui/sortDialog.ui:89 msgid "Numeric" msgstr "Nummerisch" #: ../ui/sortDialog.ui:93 msgid "Sort in numeric order" msgstr "Sortiere nummerisch" #: ../ui/sortDialog.ui:114 msgid " Sort Parameters " msgstr "Sortiereinstellungen" #: ../ui/sortDialog.ui:142 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "" "Zahl der Unterebenen, die sortiert werden sollen (0 für keine, -1 für ale)" #: ../ui/sortDialog.ui:159 msgid " Sort Sublevels " msgstr "Unterebenen sortieren" #: ../ui/treeContextMenu.ui:30 msgid "Select _All" msgstr "_Alles auswählen" #: ../ui/treeContextMenu.ui:117 msgid "Import" msgstr "Importieren" #: ../ui/treeContextMenu.ui:124 msgid "Export" msgstr "Exportieren" #: ../gjots2:28 #, fuzzy msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gtk/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug to stdout\n" "-t, --trace: trace lines as they execute\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Aufruf: gjots [OPTIONEN] [DATEINAME]\n" "Ein gnome-2/X11 jotter\n" "\n" "OPTIONEN:\n" "-h, --help: diese Hilfe\n" "-d, --debug: Debug-Information auf stdout ausgeben\n" "-t, --trace: trace lines as they execute\n" "-g 123x456, --geometry=123x456: initial Fenstergröße (X x Y)\n" "-p, --purge-password\t\t\t\tPaßwort nicht merken\n" "-r, --readonly: im Nur-Lese-Modus öffnen\n" "-V, --version: Version ausgeben und Programm beenden\n" "\n" "DATEINAME:\n" "\tgjots Datei (Voreingestellt ist $HOME/.gjotsfile)\n" #: ../gjots2:54 #, python-format msgid "%s requires python%s or higher." msgstr "%s benötigt python%s or besser." #: ../gjots2:64 #, python-format msgid "%s requires pygtk-%s.\n" msgstr "%s benötigt pygtk-%s.\n" #: ../gjots2:77 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Warning: Auführung der Module von %s\n" #: ../gjots2:90 msgid "Use -h for help\n" msgstr "Verwende -h für Hilfe\n" #: ../gjots2:104 #, python-format msgid "%s version %s" msgstr "%s Version %s" #: ../lib/gui.py:140 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "" "Externer Textformatierer \"%s\" ist nicht installiert - Formatierung nicht " "möglich" #: ../lib/gui.py:399 msgid "not initialised" msgstr "nicht initialisiert" #: ../lib/gui.py:657 ../lib/gui.py:698 ../lib/gui.py:702 #: ../lib/gui.py:744 ../lib/gui.py:748 ../lib/gui.py:807 #: ../lib/gui.py:812 ../lib/gui.py:1025 ../lib/gui.py:1034 #: ../lib/gui.py:1117 ../lib/gui.py:1126 ../lib/gui.py:1159 #: ../lib/gui.py:1164 ../lib/gui.py:1190 ../lib/gui.py:1551 #: ../lib/gui.py:2279 ../lib/gui.py:2298 ../lib/gui.py:2327 #: ../lib/gui.py:2357 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Nichts ausgewählt" #: ../lib/gui.py:661 ../lib/gui.py:707 ../lib/gui.py:752 #: ../lib/gui.py:817 ../lib/gui.py:920 ../lib/gui.py:1195 #: ../lib/gui.py:2283 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Keine Elternseite!" #: ../lib/gui.py:665 ../lib/gui.py:718 msgid "No child!" msgstr "Keine Unterseite!" #: ../lib/gui.py:668 ../lib/gui.py:712 msgid "Can't go any further" msgstr "Ende erreicht" #: ../lib/gui.py:675 ../lib/gui.py:835 msgid "Internal error!" msgstr "Interner Fehler!" #: ../lib/gui.py:756 msgid "Can't go further!" msgstr "Ende erreicht!" #: ../lib/gui.py:959 msgid "Text cut" msgstr "Text ausgeschnitten" #: ../lib/gui.py:970 msgid "Text copied" msgstr "Text kopiert" #: ../lib/gui.py:982 msgid "Text pasted" msgstr "Text eingefügt" #: ../lib/gui.py:991 msgid "All text selected" msgstr "Gesamter Text ausgewählt" #: ../lib/gui.py:997 msgid "All tree items selected" msgstr "Alle Seiten ausgewählt" #: ../lib/gui.py:1005 msgid "Nothing selected!" msgstr "Nichts ausgewählt!" #: ../lib/gui.py:1029 msgid "Can't merge the root item" msgstr "Kann die oberste Seite nicht verbinden" #: ../lib/gui.py:1038 msgid "Nothing to merge" msgstr "Nichts zu verbinden" #: ../lib/gui.py:1045 msgid "Can't merge items that have children" msgstr "Kann Seiten mit Unterseiten nicht verbinden" #: ../lib/gui.py:1075 #, python-format msgid "%d items merged" msgstr "%d Seiten verbunden" #: ../lib/gui.py:1121 msgid "Can't delete the root item" msgstr "Kann die oberste Seite nicht löschen" #: ../lib/gui.py:1151 #, python-format msgid "%d tree items cut" msgstr "%d Seiten ausgeschnitten" #: ../lib/gui.py:1178 #, python-format msgid "%d tree items copied" msgstr "%d Seiten kopiert" #: ../lib/gui.py:1185 msgid "Nothing to paste" msgstr "Nichts zum einfügen" #: ../lib/gui.py:1201 msgid "Tree items pasted" msgstr "Seiten eingefügt" #: ../lib/gui.py:1221 msgid "Can't write " msgstr "Schreiben nicht möglich" #: ../lib/gui.py:1231 #, python-format msgid "Can't run '%s'" msgstr "Kann '%s' nicht ausführen" #: ../lib/gui.py:1240 msgid "Can't read " msgstr "Lesen nicht möglich" #: ../lib/gui.py:1248 msgid "text changed by external editor" msgstr "Text in externen Editor verändert" #: ../lib/gui.py:1250 msgid "text not changed by external editor" msgstr "Text in externen Editor nicht verändert" #: ../lib/gui.py:1268 msgid ": Error" msgstr ": Fehler" #: ../lib/gui.py:1281 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "" "Kann Datei %s nicht blockieren. Sie wurde bereits durch den Prozess %d " "blockiert." #: ../lib/gui.py:1455 msgid ": Save?" msgstr ": Speichern?" #: ../lib/gui.py:1456 msgid "Save current work?" msgstr "Aktuellen Stand speichern?" #: ../lib/gui.py:1477 msgid "New file" msgstr "Neue Datei" #: ../lib/gui.py:1501 msgid "Open file ..." msgstr "Datei öffnen ..." #: ../lib/gui.py:1512 msgid "No changes to save" msgstr "Keine Änderungen vorgenommen" #: ../lib/gui.py:1516 ../lib/gui.py:1536 msgid "Saved." msgstr "Gespeichert." #: ../lib/gui.py:1518 ../lib/gui.py:1538 ../lib/file.py:429 msgid "Not saved." msgstr "Nicht gespeichert." #: ../lib/gui.py:1532 msgid "Nothing to save" msgstr "Speichern nicht notwendig" #: ../lib/gui.py:1534 ../lib/file.py:651 msgid "Save as ..." msgstr "Speichern als ..." #: ../lib/gui.py:1548 msgid "Import from ..." msgstr "Importiere ..." #: ../lib/gui.py:1559 msgid "Export to ..." msgstr "Exportiere ..." #: ../lib/gui.py:1878 ../lib/gui.py:1881 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Warnung: Öffne gjots2-Handbuch von %s\n" #: ../lib/gui.py:1921 #, fuzzy msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) " msgstr "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" #: ../lib/gui.py:2217 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 ist für diese Anwendung notwendig!" #: ../lib/gui.py:2223 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "gjots2: Warnung: Auswahlliste ist leer. Keine Aktion ausgeführt" #: ../lib/gui.py:2287 msgid "Can't go further" msgstr "Ende erreicht" #: ../lib/gui.py:2316 msgid "Tree is empty!" msgstr "Baum ist leer!" #: ../lib/gui.py:2585 msgid "Bad regular expression" msgstr "Fehlerhafter regulärer Ausdruck" #: ../lib/gui.py:2678 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: fehlerhafte Angabe der Fenstergröße: %s\n" #: ../lib/gui.py:2882 msgid "New...>>>" msgstr "Neu ...>>>" #: ../lib/gui.py:2914 msgid "Install pygtksourceview to enable undo/redo" msgstr "" #: ../lib/gui.py:2967 msgid ": version " msgstr ": Version " #: ../lib/find.py:77 ../lib/find.py:100 msgid "Not found" msgstr "Nicht gefunden" #: ../lib/find.py:79 msgid "Found" msgstr "Gefunden" #: ../lib/find.py:103 msgid "Replace?" msgstr "Ersetzen?" #: ../lib/find.py:120 #, python-format msgid "%d substitutions" msgstr "%d Ersetzungen" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Paßwort eingeben für " #: ../lib/file.py:252 msgid "gjots2: Enter Password" msgstr "gjots2: Paßwort eingeben" #: ../lib/file.py:254 msgid "Password: " msgstr "Paßwort: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Bestätigen: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Paßwort wurde nicht korrekt bestätigt" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "" "Konnte das Programm 'ccrypt' nicht finden - Bitte installieren Sie es und " "probieren Sie es erneut." #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "" "Konnte das Programm 'gpg' nicht finden - Bitte installieren Sie es und " "probieren Sie es erneut." #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "" "Konnte das Programm 'openssl' nicht finden - Bitte installieren Sie es und " "probieren Sie es erneut." #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Kann nicht öffnen \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Falsches Paßwort" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Datei kann nicht blockiert werden" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Kann nicht schreiben in " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Kann Datei nicht blockieren" #: ../lib/file.py:560 #, python-format msgid "%s is not readable" msgstr "%s ist nicht lesbar" #: ../lib/file.py:576 #, python-format msgid "%s: no permission" msgstr "%s: keine Berechtigung" #: ../lib/file.py:578 #, python-format msgid "%s: locked by process number %d" msgstr "%s: blockiert durch Prozess mit der Nummer %d" #: ../lib/file.py:580 msgid "gjots2: can't lock file." msgstr "gjots2: kann Datei nicht blockieren" #: ../lib/file.py:618 #, python-format msgid "gjots2: %s changed" msgstr "gjots2: %s wurde verändert" #: ../lib/file.py:619 #, python-format msgid "" "'%s' has changed since it was read.\n" "overwrite anyway?" msgstr "" "'%s' wurde seit dem Öffnen verändert.\n" "Trotzdem überschreiben?" #: ../lib/file.py:663 msgid "That file is already open!" msgstr "Die Datei ist bereits geöffnet!" #: ../lib/file.py:680 #, python-format msgid "%s is locked by pid %d" msgstr "%s is blockiert durch PID %d" #: ../lib/file.py:684 msgid "Can't make a lockfile in " msgstr "" #: ../lib/file.py:697 #, python-format msgid "%s is not writable" msgstr "%s ist nicht schreibbar" #: ../lib/file.py:700 #, python-format msgid "gjots2: %s already exists." msgstr "gjots2: %s existiert bereits." #: ../lib/file.py:701 #, python-format msgid "overwrite %s?" msgstr "%s Überschreiben?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Interner Fehler" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Nichts zu sortieren!" #: ../lib/sortDialog.py:312 msgid "Sort Text" msgstr "Sortiere Text" #~ msgid "Recent" #~ msgstr "Zuletzt geöffnet" #~ msgid "_Import" #~ msgstr "_Importieren" #~ msgid "Find Next" #~ msgstr "Weiter suchen" #~ msgid "Create a new child " #~ msgstr "Neue Unterseite erzeugen" #, fuzzy #~ msgid " Find: " #~ msgstr " Suchen:" gjots2-2.4.1/po/sl/0000775000301100007650000000000012234163053013600 5ustar bhepplebhepplegjots2-2.4.1/po/sl/LC_MESSAGES/0000755000301100007650000000000012234163053015363 5ustar bhepplebhepplegjots2-2.4.1/po/sl/LC_MESSAGES/gjots2.mo0000664000301100007650000004020412234163053017132 0ustar bhepplebheppleK  *;Pby +%#6Zz5 '!'+= U ` jv   0(Y$s    % +5:CN@D,?Qcuy  ' % 8FN7^WW(Fo73 (.5'>#f5-"C*f  &  &1 :D W a l v  / 8 = H c n t !      !!#6! Z!{!! !$!!! !!! ! " ""."B"I"(Z" " " "."+"# #%#?#Z# _# i#s#### #(# $$%$:$@$ S$_$h$ y$$#$ $%$$% &%4%C% U%_%b%s%5x%%%%%%% % % % & & & "& .&:&@&1F& x&& &&&&&P&P'c'j'q' ')'+''#()(1(@( )))**4*M*P* e*q**** **+#++4+!`+*+++=+, ", -,!;,%],,,, ,,,, -- -8-#G-k----?-+.//.#_...... .$. ///%/-/?F/</@/0010G0Z0v0~0 0000 000001+1(21 [1h1p1=1Q1r2)2222:23*&3Q3k3s3 z3(3(3:34 4 $4E4U40f4#4*444'565M5d5{5 55 5 5*555 6 6)696J6]6p66 666&6 67 77)71797!R7 t7)7(7 7778'08#X8|888/888 8 8 99!9(979M9 c9 n9-{9 9 99,9%9 :(:-C:&q:::::::$;&;'6;^;n;; ;;;;;<</4<d<.|<<<<<= %=3=7=O=6V==== === == ==> >$>5>J>Q>5Y> >> >>>>#?^$????? ?*? ?-@0<@m@u@?( [lo,$ *=EVtS&WGpc9>]40-nP5aQ C_O)uyT%2hAIK'X 1!mr\sLND/Zz@kU|{;.ix3~q#`< w:8RH FM+Bjfb}76vdgeJ"Y^ Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s. %s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission'%s' has changed since it was read. overwrite anyway?: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCould not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for ExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphFoundGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpen file ...Open file read onlyOpen gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FontSelect _AllSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To open the file in read-only mode.To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUse -h for help WrapWrap the current paragraph to the current line length_Edit_Export_External Edit_File_Format_Help_Hide All_Merge Items_New Page_Read Manual_Read-only_Show All_Split Item_Time stamp_Tree_View_get_settings: Cant find sortAscendingRadioButtone.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjots2: %s already exists.gjots2: %s changedgjots2: Enter Passwordgjots2: can't lock file.gjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: preferenceslabel1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editorwindow1xterm -e vi %sProject-Id-Version: gjots2 2.3.0 Report-Msgid-Bugs-To: POT-Creation-Date: 2012-01-08 00:54+1000 PO-Revision-Date: 2012-02-25 18:28+0200 Last-Translator: Aleksa Šušulić Language-Team: Slovenian Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Slovenian X-Poedit-Country: Slovenia X-Poedit-SourceCharset: utf-8 Možnosti Interval za tisk Ukaz za tiskanje Oblikovanje tiska Parametri razvrščanja Podravni razvrščanja %Fzdruženo %d postavk%d zamenjavkopirano %d drevesnih postavkizrezano %d drevesnih postavk%s je zaklenil proces pid %d%s ni moč prebrati %s ni pisljiv%s zahteva pygtk-%s. %s zahteva python%s ali višji.%s različica %s%s: Pozor: odpiram priročnik gjots2 iz %s %s: Pozor: zaganjam module iz %s %s: napačna specifikacija geometrije: %s %s: zaklenil proces št. %d%s: ni dovoljenja'%s' se je spremenil, odkar je bil prebran. vseeno prepišem?: Napaka: Shranim?: različica Vstavi datum/uro (glej možnosti)Vstavi datum in čas (glej možnosti)VseCelotno besedilo izbranoVse drevesne postavke izbranePo abecediNaraščajočeSamooštevilčevanjeFormat samooštevilčevanja: NazajNapačno gesloNapačen logični izrazKrepki nasloviNi moč izbrisati korenske postavkeNi moč nadaljevatiNi moč nadaljevatiNi moč nadaljevati!Ni moč zakleniti datotekeNi moč zakleniti datoteke %s, ker jo je že zaklenil proces %dNi moč ustvariti datoteke za zaklepanje v Ni moč združiti postavk, ki imajo podpostavkeNi moč združiti korenske postavkeNi moč odpreti "Ni moč prebrati Ni moč zagnati '%s'Ni moč pisati Ni moč pisati v PrekličiIzberi pisavo za podokno z besedilomPočistiZapriPotrdi: KopirajKopiraj izbrane postavkeNi moč najti programa ccrypt - namestite ga in poskusite znovaNi moč najti programa gpg - namestite ga in poskusite znovaNi moč najti programa openssl - namestite ga in poskusite znovaCourier 10 Pitch 10Ustvari novo podpostavkoUstvari novo postavkoUstvari novo stranTrenutna pisava za besediloIzrežiIzreži izbrane postavkePo_nižajDatumFormat datuma:PonižajPadajočeNe zanemari velikosti črkDolUredi trenutno postavko z zunanjim urejevalnikomVnesite geslo za IzvoziIzvozi izbrane postavke v datoteko gjotsIzvozi v ...Zun.Ur.Zunanji urejevalnikZunanji oblikovalnik "%s" ni nameščen - ni moč formatiratiZunanji urejevalnik strani (%s se zamenja z imenom začasne datoteke za urejanje)Zunanji program, kateremu posredujemo (po cevi) besedilo v formatiranje (%d se zamenja s trenutno širino vrstice)Vsako novo postavko natisne na novo stranDatoteke ni moč zaklenitiNajdiNajdi in zamenjajIskani črkovni niz je logični izraz (glej 'man 7 regex')Najdi:Format za časovni žig (glej strftime(3))Oblikuj trenutni odstavekNajdenoPovsodSkrij vseSkrij vse postavke razen najvišje ravniSkrij vse postavke razen najvišje ravniKoliko podravni naj se razvrsti (0 za nobeno; -1 za 'vse')UvoziUvozi iz ...Uvozi postavke iz datoteke gjotsNotranja napakaNotranja napaka!Uredi trenutno postavko z zunanjim urejevalnikomDolžina vrstice za prelom odstavkaUstvari novo postavko iz trenutnega izboraUpoštevaj velikost črkSpoji postavkeSpoji trenutne postavke v prvo postavkoSpoji izbrane postavkePremakni izbor navzdolPremakni izbor navzgorNova podpostavkaNova stranNova _podpostavkaNova datotekaNovo...>>>Ni sprememb, ki bi jih bilo treba shranitiNi podrejenega!Ni nadrejenega!Ni moč najtiNi shranjeno.Nič ni izbranoNič ni izbrano!Ni česa združitiNi česa prilepitiNi česa shranitiNi česa razvrščati!NumeričnoOdpri datoteko ...Odpri datoteko samo za branjeOdpri okno z možnostmi programa gjotsPo_višajStranNova stranGeslo ni potrjenoGeslo: PrilepiPrilepi izbrane postavkePrikaži dialog najdi in zamenjajPrikaži dialog za razvrščanjePrikaži dialog za razvrščanje besedilaPrikaži dialog za razvrščanje drevesaMožnostiNatisniNatisni trenutno stranNatisni celotno datoteko gjotsNatisne naslove postavk s krepko pisavoNatisni izbrane strani ali besediloNatisni ta dokumentPovišajSamo za branjePreberi priloženi priročnik s programom gjotsLogični izrazZamenjajZamenjaj vseZamenjaj:Zamenjam?S_ortiraj drevoShraniShrani kot ...Shranim tekoče delo?Shrani dokument gjotsShranjeno.Išči nazajPreišče celotno datoteko, ne le to postavkoIzberi pisavoIzberi _VseIzborIzbor postane podpostavka prejšnje postavkeIzbor postane enakovreden nadrejenemuPokaži vsePokaži besedilo k _ikonamPokaži vse podpostavke pod trenutno postavkoPokaži pripadajoče besedilo k ikonamRazvrstiRazvrsti besediloRazvrsti drevoRazvrsti po abecediRazvrsti naraščajočeRazvrsti padajočeRazvrsti po numeričnem vrstnem reduOdcepi postavkoOdcepi izbrano besedilo v novo postavkoVrstica _stanjaZamenjaj s tem črkovnim nizomNajdi ta črkovni niz_BesediloDolžina vrstice z besedilom:Besedilo kopiranoBesedilo izrezanoOblikovalnik besedila: Besedilo prilepljenoDatoteka je že odprta!Za odpiranje datoteke v načinu samo za branje._Zgornja orodna vrsticaPo možnosti preklopi zastavico samo za branjePreklopi glavno orodno vrsticoPreklopi drevesno vrstico_Drevesna vrsticaDrevo je prazno!Drevesne postavke prilepljenePoskusi znovaGorUporabite -h za pomoč PrelomPrelomi trenutni odstavek po trenutni dolžini vrstice_Uredi_Izvozi_Zunanji urejevalnik_Datoteka_Oblikuj_Pomoč_Skrij vse_Spoji postavke_Nova stran_Preberi priročnik_Samo za branje_Pokaži vse_Odcepi postavkoVstavi _datum in uro_Drevo_Pogled_get_settings: Ni moč najti sortAscendingRadioButtonnpr. lpr: npr. 1 za 1.2.1, afmt -w %dgjots2: %s že obstaja.gjots2: %s se je spremenilgjots2: Vnesite geslogjots2: ni moč zakleniti datoteke.gjots2: pozor: seznam izborov je NULL. Dogodek spremenjenega drevesnega izbora bo preskočen.gjots: možnostilabel1label2ni inicializiranoprepišem %s?ukaz za tiskanje (lahko je lupinski izraz)ta aplikacija zahteva pygtk-2.2!besedilo spremenjeno z zunanjim urejevalnikombesedilo ni spremenjeno z zunanjim urejevalnikomwindow1xterm -e vi %sgjots2-2.4.1/po/sl.po0000664000301100007650000006525112234162543014154 0ustar bhepplebhepple# Translation of gjots2.po to Slovenian # Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: gjots2 2.3.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-01-08 00:54+1000\n" "PO-Revision-Date: 2012-02-25 18:28+0200\n" "Last-Translator: Aleksa Šušulić \n" "Language-Team: Slovenian\n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Slovenian\n" "X-Poedit-Country: Slovenia\n" "X-Poedit-SourceCharset: utf-8\n" #: ../ui/about.ui:9 msgid "Copyright Bob Hepple 2002-2012" msgstr "" #: ../ui/about.ui:10 msgid "http://bhepple.freeshell.org/gjots2" msgstr "" #: ../ui/about.ui:20 msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) \n" msgstr "" #: ../ui/fileDialog.ui:23 msgid "Open file read only" msgstr "Odpri datoteko samo za branje" #: ../ui/fileDialog.ui:27 msgid "To open the file in read-only mode." msgstr "Za odpiranje datoteke v načinu samo za branje." #: ../ui/findDialog.ui:7 msgid "Find & replace" msgstr "Najdi in zamenjaj" #: ../ui/findDialog.ui:28 msgid "Find:" msgstr "Najdi:" #: ../ui/findDialog.ui:40 msgid "Replace:" msgstr "Zamenjaj:" #: ../ui/findDialog.ui:57 msgid "String to search for" msgstr "Najdi ta črkovni niz" #: ../ui/findDialog.ui:69 msgid "String to replace" msgstr "Zamenjaj s tem črkovnim nizom" #: ../ui/findDialog.ui:96 ../ui/gjots.ui:876 msgid "Find" msgstr "Najdi" #: ../ui/findDialog.ui:112 msgid "Close" msgstr "Zapri" #: ../ui/findDialog.ui:128 msgid "Replace" msgstr "Zamenjaj" #: ../ui/findDialog.ui:144 msgid "Replace All" msgstr "Zamenjaj vse" #: ../ui/findDialog.ui:160 msgid "Cancel" msgstr "Prekliči" #: ../ui/findDialog.ui:179 msgid "Clear" msgstr "Počisti" #: ../ui/findDialog.ui:233 msgid "Match case" msgstr "Upoštevaj velikost črk" #: ../ui/findDialog.ui:237 msgid "Don't ignore case" msgstr "Ne zanemari velikosti črk" #: ../ui/findDialog.ui:247 msgid "Regular Expression" msgstr "Logični izraz" #: ../ui/findDialog.ui:251 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Iskani črkovni niz je logični izraz (glej 'man 7 regex')" #: ../ui/findDialog.ui:263 msgid "Backwards" msgstr "Nazaj" #: ../ui/findDialog.ui:267 msgid "Search backwards" msgstr "Išči nazaj" #: ../ui/findDialog.ui:282 msgid "Global" msgstr "Povsod" #: ../ui/findDialog.ui:286 msgid "Searches entire file not just this entry" msgstr "Preišče celotno datoteko, ne le to postavko" #: ../ui/findDialog.ui:302 msgid " Options " msgstr " Možnosti" #: ../ui/fontDialog.ui:8 msgid "Select Font" msgstr "Izberi pisavo" #: ../ui/generalDialog.ui:9 msgid "window1" msgstr "window1" #: ../ui/generalDialog.ui:21 ../ui/generalDialog.ui:56 #: ../ui/generalDialog.ui:102 msgid "label1" msgstr "label1" #: ../ui/generalDialog.ui:43 msgid "label2" msgstr "label2" #: ../ui/generalDialog.ui:178 msgid "Try again" msgstr "Poskusi znova" #: ../ui/generalDialog.ui:194 msgid "Read only" msgstr "Samo za branje" #: ../ui/gjots.ui:23 msgid "_File" msgstr "_Datoteka" #: ../ui/gjots.ui:92 msgid "Import items from a gjots file" msgstr "Uvozi postavke iz datoteke gjots" #: ../ui/gjots.ui:101 msgid "_Export" msgstr "_Izvozi" #: ../ui/gjots.ui:104 msgid "Export selected items to a gjots file" msgstr "Izvozi izbrane postavke v datoteko gjots" #: ../ui/gjots.ui:140 msgid "Toggle the read-only flag if possible" msgstr "Po možnosti preklopi zastavico samo za branje" #: ../ui/gjots.ui:142 msgid "_Read-only" msgstr "_Samo za branje" #: ../ui/gjots.ui:158 #, fuzzy msgid "Exit gjots2" msgstr "Končaj gjots" #: ../ui/gjots.ui:175 msgid "_Edit" msgstr "_Uredi" #: ../ui/gjots.ui:287 msgid "Find Previous" msgstr "" #: ../ui/gjots.ui:316 msgid "_View" msgstr "_Pogled" #: ../ui/gjots.ui:324 msgid "_Show All" msgstr "_Pokaži vse" #: ../ui/gjots.ui:327 ../ui/gjots.ui:1131 msgid "Show all items below the current item" msgstr "Pokaži vse podpostavke pod trenutno postavko" #: ../ui/gjots.ui:336 msgid "_Hide All" msgstr "_Skrij vse" #: ../ui/gjots.ui:339 msgid "Hide all items except the top level" msgstr "Skrij vse postavke razen najvišje ravni" #: ../ui/gjots.ui:357 msgid "Toggles the main toolbar" msgstr "Preklopi glavno orodno vrstico" #: ../ui/gjots.ui:359 msgid "To_p Toolbar" msgstr "_Zgornja orodna vrstica" #: ../ui/gjots.ui:368 msgid "Toggles tree tool bar" msgstr "Preklopi drevesno vrstico" #: ../ui/gjots.ui:370 msgid "Tre_e Toolbar" msgstr "_Drevesna vrstica" #: ../ui/gjots.ui:379 msgid "Show the related icon text" msgstr "Pokaži pripadajoče besedilo k ikonam" #: ../ui/gjots.ui:381 msgid "Show _Icon Text" msgstr "Pokaži besedilo k _ikonam" #: ../ui/gjots.ui:391 msgid "Status _Bar" msgstr "Vrstica _stanja" #: ../ui/gjots.ui:405 msgid "_Tree" msgstr "_Drevo" #: ../ui/gjots.ui:413 msgid "_New Page" msgstr "_Nova stran" #: ../ui/gjots.ui:416 msgid "Create a new page" msgstr "Ustvari novo stran" #: ../ui/gjots.ui:425 msgid "New _Child" msgstr "Nova _podpostavka" #: ../ui/gjots.ui:428 ../ui/gjots.ui:955 msgid "Create a new child" msgstr "Ustvari novo podpostavko" #: ../ui/gjots.ui:447 ../ui/gjots.ui:987 msgid "Move selection up" msgstr "Premakni izbor navzgor" #: ../ui/gjots.ui:459 ../ui/gjots.ui:1003 msgid "Move selection down" msgstr "Premakni izbor navzdol" #: ../ui/gjots.ui:468 msgid "P_romote" msgstr "Po_višaj" #: ../ui/gjots.ui:471 ../ui/gjots.ui:1019 msgid "Selection becomes a sibling to their parent" msgstr "Izbor postane enakovreden nadrejenemu" #: ../ui/gjots.ui:480 msgid "D_emote" msgstr "Po_nižaj" #: ../ui/gjots.ui:483 ../ui/gjots.ui:1035 msgid "Selection becomes a child of the previous item" msgstr "Izbor postane podpostavka prejšnje postavke" #: ../ui/gjots.ui:499 msgid "_Split Item" msgstr "_Odcepi postavko" #: ../ui/gjots.ui:502 msgid "Make a new item from the current selection" msgstr "Ustvari novo postavko iz trenutnega izbora" #: ../ui/gjots.ui:511 msgid "_Merge Items" msgstr "_Spoji postavke" #: ../ui/gjots.ui:514 msgid "Merge current items into the first one" msgstr "Spoji trenutne postavke v prvo postavko" #: ../ui/gjots.ui:523 msgid "S_ort Tree" msgstr "S_ortiraj drevo" #: ../ui/gjots.ui:526 ../ui/gjots.ui:1147 msgid "Popup the sort tree dialog" msgstr "Prikaži dialog za razvrščanje drevesa" #: ../ui/gjots.ui:542 msgid "Te_xt" msgstr "_Besedilo" #: ../ui/gjots.ui:550 msgid "_Format" msgstr "_Oblikuj" #: ../ui/gjots.ui:553 msgid "Format the current paragraph" msgstr "Oblikuj trenutni odstavek" #: ../ui/gjots.ui:563 msgid "_Time stamp" msgstr "Vstavi _datum in uro" #: ../ui/gjots.ui:566 msgid "Add a time/date stamp (see preferences)" msgstr "Vstavi datum/uro (glej možnosti)" #: ../ui/gjots.ui:575 msgid "_External Edit" msgstr "_Zunanji urejevalnik" #: ../ui/gjots.ui:578 msgid "Edit current item in an external editor" msgstr "Uredi trenutno postavko z zunanjim urejevalnikom" #: ../ui/gjots.ui:587 #, fuzzy msgid "_Sort Text" msgstr "Razvrsti besedilo" #: ../ui/gjots.ui:590 msgid "Popup the sort text dialog" msgstr "Prikaži dialog za razvrščanje besedila" #: ../ui/gjots.ui:606 msgid "_Help" msgstr "_Pomoč" #: ../ui/gjots.ui:614 msgid "_Read Manual" msgstr "_Preberi priročnik" #: ../ui/gjots.ui:617 msgid "Read the online manual (using gjots)" msgstr "Preberi priloženi priročnik s programom gjots" #: ../ui/gjots.ui:714 msgid "Save gjots document" msgstr "Shrani dokument gjots" #: ../ui/gjots.ui:716 msgid "Save" msgstr "Shrani" #: ../ui/gjots.ui:730 msgid "Print this document" msgstr "Natisni ta dokument" #: ../ui/gjots.ui:732 ../ui/printDialog.ui:7 msgid "Print" msgstr "Natisni" #: ../ui/gjots.ui:762 msgid "Cut selected items" msgstr "Izreži izbrane postavke" #: ../ui/gjots.ui:764 msgid "Cut" msgstr "Izreži" #: ../ui/gjots.ui:778 msgid "Copy selected items" msgstr "Kopiraj izbrane postavke" #: ../ui/gjots.ui:780 msgid "Copy" msgstr "Kopiraj" #: ../ui/gjots.ui:794 msgid "Paste selected items" msgstr "Prilepi izbrane postavke" #: ../ui/gjots.ui:796 msgid "Paste" msgstr "Prilepi" #: ../ui/gjots.ui:826 msgid "Wrap the current paragraph to the current line length" msgstr "Prelomi trenutni odstavek po trenutni dolžini vrstice" #: ../ui/gjots.ui:828 msgid "Wrap" msgstr "Prelom" #: ../ui/gjots.ui:842 msgid "Invoke an external editor on the current item" msgstr "Uredi trenutno postavko z zunanjim urejevalnikom" #: ../ui/gjots.ui:844 msgid "Ext.Ed." msgstr "Zun.Ur." #: ../ui/gjots.ui:858 msgid "Add a time/date stamp (see prefs)" msgstr "Vstavi datum in čas (glej možnosti)" #: ../ui/gjots.ui:860 msgid "Date" msgstr "Datum" #: ../ui/gjots.ui:874 msgid "Popup the find and replace dialog" msgstr "Prikaži dialog najdi in zamenjaj" #: ../ui/gjots.ui:890 msgid "Popup the sort dialog" msgstr "Prikaži dialog za razvrščanje" #: ../ui/gjots.ui:892 ../ui/sortDialog.ui:15 msgid "Sort" msgstr "Razvrsti" #: ../ui/gjots.ui:906 msgid "Open gjots preferences window" msgstr "Odpri okno z možnostmi programa gjots" #: ../ui/gjots.ui:908 msgid "Prefs" msgstr "Možnosti" #: ../ui/gjots.ui:939 msgid "Create a new item" msgstr "Ustvari novo postavko" #: ../ui/gjots.ui:941 ../ui/treeContextMenu.ui:45 msgid "New Page" msgstr "Nova stran" #: ../ui/gjots.ui:957 ../ui/treeContextMenu.ui:52 msgid "New Child" msgstr "Nova podpostavka" #: ../ui/gjots.ui:989 msgid "Up" msgstr "Gor" #: ../ui/gjots.ui:1005 msgid "Down" msgstr "Dol" #: ../ui/gjots.ui:1021 ../ui/treeContextMenu.ui:74 msgid "Promote" msgstr "Povišaj" #: ../ui/gjots.ui:1037 ../ui/treeContextMenu.ui:82 msgid "Demote" msgstr "Ponižaj" #: ../ui/gjots.ui:1067 msgid "Split the text selection into a new item" msgstr "Odcepi izbrano besedilo v novo postavko" #: ../ui/gjots.ui:1069 msgid "Split Item" msgstr "Odcepi postavko" #: ../ui/gjots.ui:1083 msgid "Merge selected items together" msgstr "Spoji izbrane postavke" #: ../ui/gjots.ui:1085 ../ui/treeContextMenu.ui:89 msgid "Merge Items" msgstr "Spoji postavke" #: ../ui/gjots.ui:1115 msgid "Hide all items except for the top level" msgstr "Skrij vse postavke razen najvišje ravni" #: ../ui/gjots.ui:1117 ../ui/treeContextMenu.ui:103 msgid "Hide All" msgstr "Skrij vse" #: ../ui/gjots.ui:1133 ../ui/treeContextMenu.ui:96 msgid "Show All" msgstr "Pokaži vse" #: ../ui/gjots.ui:1149 ../ui/treeContextMenu.ui:110 ../lib/sortDialog.py:308 msgid "Sort Tree" msgstr "Razvrsti drevo" #: ../ui/prefsDialog.ui:15 msgid "gjots: preferences" msgstr "gjots: možnosti" #: ../ui/prefsDialog.ui:35 msgid "Choose a font for the text panel" msgstr "Izberi pisavo za podokno z besedilom" #: ../ui/prefsDialog.ui:50 msgid "Date format:" msgstr "Format datuma:" #: ../ui/prefsDialog.ui:64 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format za časovni žig (glej strftime(3))" #: ../ui/prefsDialog.ui:65 msgid "%F" msgstr "%F" #: ../ui/prefsDialog.ui:80 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "" "Zunanji urejevalnik strani (%s se zamenja z imenom začasne datoteke za " "urejanje)" #: ../ui/prefsDialog.ui:81 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../ui/prefsDialog.ui:96 msgid "External editor" msgstr "Zunanji urejevalnik" #: ../ui/prefsDialog.ui:110 msgid "Text Line Length: " msgstr "Dolžina vrstice z besedilom:" #: ../ui/prefsDialog.ui:124 msgid "Line length for paragraph wrapping" msgstr "Dolžina vrstice za prelom odstavka" #: ../ui/prefsDialog.ui:142 msgid "Text formatter: " msgstr "Oblikovalnik besedila: " #: ../ui/prefsDialog.ui:154 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "" "Zunanji program, kateremu posredujemo (po cevi) besedilo v formatiranje (%d " "se zamenja s trenutno širino vrstice)" #: ../ui/prefsDialog.ui:155 msgid "fmt -w %d " msgstr "fmt -w %d" #: ../ui/prefsDialog.ui:168 msgid "Current text font" msgstr "Trenutna pisava za besedilo" #: ../ui/prefsDialog.ui:170 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../ui/printDialog.ui:31 msgid "e.g. lpr: " msgstr "npr. lpr: " #: ../ui/printDialog.ui:47 msgid "print command (can be a shell expression)" msgstr "ukaz za tiskanje (lahko je lupinski izraz)" #: ../ui/printDialog.ui:62 msgid " Print command " msgstr " Ukaz za tiskanje " #: ../ui/printDialog.ui:86 msgid "Page" msgstr "Stran" #: ../ui/printDialog.ui:90 msgid "Print the current page" msgstr "Natisni trenutno stran" #: ../ui/printDialog.ui:102 msgid "Selection" msgstr "Izbor" #: ../ui/printDialog.ui:106 msgid "Print the selected pages or text" msgstr "Natisni izbrane strani ali besedilo" #: ../ui/printDialog.ui:119 msgid "All" msgstr "Vse" #: ../ui/printDialog.ui:123 msgid "Print the entire gjots file" msgstr "Natisni celotno datoteko gjots" #: ../ui/printDialog.ui:141 msgid " Print Range " msgstr " Interval za tisk " #: ../ui/printDialog.ui:169 msgid "Page feeds" msgstr "Nova stran" #: ../ui/printDialog.ui:173 msgid "Feeds a page before every new gjots item" msgstr "Vsako novo postavko natisne na novo stran" #: ../ui/printDialog.ui:185 msgid "Bold titles" msgstr "Krepki naslovi" #: ../ui/printDialog.ui:188 msgid "Print the gjots item titles in bold" msgstr "Natisne naslove postavk s krepko pisavo" #: ../ui/printDialog.ui:200 msgid "Auto Number" msgstr "Samooštevilčevanje" #: ../ui/printDialog.ui:223 msgid "Auto-number format: " msgstr "Format samooštevilčevanja: " #: ../ui/printDialog.ui:234 msgid "eg. 1 for 1.2.1, a" msgstr "npr. 1 za 1.2.1, a" #: ../ui/printDialog.ui:252 msgid " Print formatting " msgstr " Oblikovanje tiska " #: ../ui/sortDialog.ui:39 msgid "Ascending" msgstr "Naraščajoče" #: ../ui/sortDialog.ui:43 msgid "Sort in ascending order" msgstr "Razvrsti naraščajoče" #: ../ui/sortDialog.ui:54 msgid "Descending" msgstr "Padajoče" #: ../ui/sortDialog.ui:58 msgid "Sort in descending order" msgstr "Razvrsti padajoče" #: ../ui/sortDialog.ui:72 msgid "Alphabetic" msgstr "Po abecedi" #: ../ui/sortDialog.ui:76 msgid "Sort in alphabetic order" msgstr "Razvrsti po abecedi" #: ../ui/sortDialog.ui:89 msgid "Numeric" msgstr "Numerično" #: ../ui/sortDialog.ui:93 msgid "Sort in numeric order" msgstr "Razvrsti po numeričnem vrstnem redu" #: ../ui/sortDialog.ui:114 msgid " Sort Parameters " msgstr " Parametri razvrščanja " #: ../ui/sortDialog.ui:142 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Koliko podravni naj se razvrsti (0 za nobeno; -1 za 'vse')" #: ../ui/sortDialog.ui:159 msgid " Sort Sublevels " msgstr " Podravni razvrščanja " #: ../ui/treeContextMenu.ui:30 msgid "Select _All" msgstr "Izberi _Vse" #: ../ui/treeContextMenu.ui:117 msgid "Import" msgstr "Uvozi" #: ../ui/treeContextMenu.ui:124 msgid "Export" msgstr "Izvozi" #: ../gjots2:28 #, fuzzy msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gtk/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug to stdout\n" "-t, --trace: trace lines as they execute\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Raba: gjots [MOŽNOSTI] [DATOTEKA]\n" "Jotter za gnome-2/X11\n" "\n" "MOŽNOSTI:\n" "-h, --help: ta pomoč\n" "-d, --debug: pošlji razhroščevalne informacije na " "stdout\n" "-t, --trace: sledi vrsticam med izvajanjem\n" "-g 123x456, --geometry=123x456: začetna geometrija (X x Y)\n" "-p, --purge-password\t\t\t\tne pomni gesla\n" "-r, --readonly: brez urejanja (ari zaklepanja)\n" "-V, --version: izpiši različico in zaključi\n" "\n" "DATOTEKA:\n" "\time podatkovne datoteke gjots (privzeto $HOME/.gjotsfile)\n" #: ../gjots2:54 #, python-format msgid "%s requires python%s or higher." msgstr "%s zahteva python%s ali višji." #: ../gjots2:64 #, python-format msgid "%s requires pygtk-%s.\n" msgstr "%s zahteva pygtk-%s.\n" #: ../gjots2:77 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Pozor: zaganjam module iz %s\n" #: ../gjots2:90 msgid "Use -h for help\n" msgstr "Uporabite -h za pomoč\n" #: ../gjots2:104 #, python-format msgid "%s version %s" msgstr "%s različica %s" #: ../lib/gui.py:140 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Zunanji oblikovalnik \"%s\" ni nameščen - ni moč formatirati" #: ../lib/gui.py:399 msgid "not initialised" msgstr "ni inicializirano" #: ../lib/gui.py:657 ../lib/gui.py:698 ../lib/gui.py:702 #: ../lib/gui.py:744 ../lib/gui.py:748 ../lib/gui.py:807 #: ../lib/gui.py:812 ../lib/gui.py:1025 ../lib/gui.py:1034 #: ../lib/gui.py:1117 ../lib/gui.py:1126 ../lib/gui.py:1159 #: ../lib/gui.py:1164 ../lib/gui.py:1190 ../lib/gui.py:1551 #: ../lib/gui.py:2279 ../lib/gui.py:2298 ../lib/gui.py:2327 #: ../lib/gui.py:2357 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Nič ni izbrano" #: ../lib/gui.py:661 ../lib/gui.py:707 ../lib/gui.py:752 #: ../lib/gui.py:817 ../lib/gui.py:920 ../lib/gui.py:1195 #: ../lib/gui.py:2283 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Ni nadrejenega!" #: ../lib/gui.py:665 ../lib/gui.py:718 msgid "No child!" msgstr "Ni podrejenega!" #: ../lib/gui.py:668 ../lib/gui.py:712 msgid "Can't go any further" msgstr "Ni moč nadaljevati" #: ../lib/gui.py:675 ../lib/gui.py:835 msgid "Internal error!" msgstr "Notranja napaka!" #: ../lib/gui.py:756 msgid "Can't go further!" msgstr "Ni moč nadaljevati!" #: ../lib/gui.py:959 msgid "Text cut" msgstr "Besedilo izrezano" #: ../lib/gui.py:970 msgid "Text copied" msgstr "Besedilo kopirano" #: ../lib/gui.py:982 msgid "Text pasted" msgstr "Besedilo prilepljeno" #: ../lib/gui.py:991 msgid "All text selected" msgstr "Celotno besedilo izbrano" #: ../lib/gui.py:997 msgid "All tree items selected" msgstr "Vse drevesne postavke izbrane" #: ../lib/gui.py:1005 msgid "Nothing selected!" msgstr "Nič ni izbrano!" #: ../lib/gui.py:1029 msgid "Can't merge the root item" msgstr "Ni moč združiti korenske postavke" #: ../lib/gui.py:1038 msgid "Nothing to merge" msgstr "Ni česa združiti" #: ../lib/gui.py:1045 msgid "Can't merge items that have children" msgstr "Ni moč združiti postavk, ki imajo podpostavke" #: ../lib/gui.py:1075 #, python-format msgid "%d items merged" msgstr "združeno %d postavk" #: ../lib/gui.py:1121 msgid "Can't delete the root item" msgstr "Ni moč izbrisati korenske postavke" #: ../lib/gui.py:1151 #, python-format msgid "%d tree items cut" msgstr "izrezano %d drevesnih postavk" #: ../lib/gui.py:1178 #, python-format msgid "%d tree items copied" msgstr "kopirano %d drevesnih postavk" #: ../lib/gui.py:1185 msgid "Nothing to paste" msgstr "Ni česa prilepiti" #: ../lib/gui.py:1201 msgid "Tree items pasted" msgstr "Drevesne postavke prilepljene" #: ../lib/gui.py:1221 msgid "Can't write " msgstr "Ni moč pisati " #: ../lib/gui.py:1231 #, python-format msgid "Can't run '%s'" msgstr "Ni moč zagnati '%s'" #: ../lib/gui.py:1240 msgid "Can't read " msgstr "Ni moč prebrati " #: ../lib/gui.py:1248 msgid "text changed by external editor" msgstr "besedilo spremenjeno z zunanjim urejevalnikom" #: ../lib/gui.py:1250 msgid "text not changed by external editor" msgstr "besedilo ni spremenjeno z zunanjim urejevalnikom" #: ../lib/gui.py:1268 msgid ": Error" msgstr ": Napaka" #: ../lib/gui.py:1281 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Ni moč zakleniti datoteke %s, ker jo je že zaklenil proces %d" #: ../lib/gui.py:1455 msgid ": Save?" msgstr ": Shranim?" #: ../lib/gui.py:1456 msgid "Save current work?" msgstr "Shranim tekoče delo?" #: ../lib/gui.py:1477 msgid "New file" msgstr "Nova datoteka" #: ../lib/gui.py:1501 msgid "Open file ..." msgstr "Odpri datoteko ..." #: ../lib/gui.py:1512 msgid "No changes to save" msgstr "Ni sprememb, ki bi jih bilo treba shraniti" #: ../lib/gui.py:1516 ../lib/gui.py:1536 msgid "Saved." msgstr "Shranjeno." #: ../lib/gui.py:1518 ../lib/gui.py:1538 ../lib/file.py:429 msgid "Not saved." msgstr "Ni shranjeno." #: ../lib/gui.py:1532 msgid "Nothing to save" msgstr "Ni česa shraniti" #: ../lib/gui.py:1534 ../lib/file.py:651 msgid "Save as ..." msgstr "Shrani kot ..." #: ../lib/gui.py:1548 msgid "Import from ..." msgstr "Uvozi iz ..." #: ../lib/gui.py:1559 msgid "Export to ..." msgstr "Izvozi v ..." #: ../lib/gui.py:1878 ../lib/gui.py:1881 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Pozor: odpiram priročnik gjots2 iz %s\n" #: ../lib/gui.py:1921 msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) " msgstr "" #: ../lib/gui.py:2217 msgid "pygtk-2.2 is required for this application!" msgstr "ta aplikacija zahteva pygtk-2.2!" #: ../lib/gui.py:2223 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: pozor: seznam izborov je NULL. Dogodek spremenjenega drevesnega " "izbora \n" "bo preskočen." #: ../lib/gui.py:2287 msgid "Can't go further" msgstr "Ni moč nadaljevati" #: ../lib/gui.py:2316 msgid "Tree is empty!" msgstr "Drevo je prazno!" #: ../lib/gui.py:2585 msgid "Bad regular expression" msgstr "Napačen logični izraz" #: ../lib/gui.py:2678 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: napačna specifikacija geometrije: %s\n" #: ../lib/gui.py:2882 msgid "New...>>>" msgstr "Novo...>>>" #: ../lib/gui.py:2914 msgid "Install pygtksourceview to enable undo/redo" msgstr "" #: ../lib/gui.py:2967 msgid ": version " msgstr ": različica " #: ../lib/find.py:77 ../lib/find.py:100 msgid "Not found" msgstr "Ni moč najti" #: ../lib/find.py:79 msgid "Found" msgstr "Najdeno" #: ../lib/find.py:103 msgid "Replace?" msgstr "Zamenjam?" #: ../lib/find.py:120 #, python-format msgid "%d substitutions" msgstr "%d zamenjav" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Vnesite geslo za " #: ../lib/file.py:252 msgid "gjots2: Enter Password" msgstr "gjots2: Vnesite geslo" #: ../lib/file.py:254 msgid "Password: " msgstr "Geslo: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Potrdi: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Geslo ni potrjeno" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Ni moč najti programa ccrypt - namestite ga in poskusite znova" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Ni moč najti programa gpg - namestite ga in poskusite znova" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Ni moč najti programa openssl - namestite ga in poskusite znova" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Ni moč odpreti \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Napačno geslo" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Datoteke ni moč zakleniti" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Ni moč pisati v " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Ni moč zakleniti datoteke" #: ../lib/file.py:560 #, python-format msgid "%s is not readable" msgstr "%s ni moč prebrati " #: ../lib/file.py:576 #, python-format msgid "%s: no permission" msgstr "%s: ni dovoljenja" #: ../lib/file.py:578 #, python-format msgid "%s: locked by process number %d" msgstr "%s: zaklenil proces št. %d" #: ../lib/file.py:580 msgid "gjots2: can't lock file." msgstr "gjots2: ni moč zakleniti datoteke." #: ../lib/file.py:618 #, python-format msgid "gjots2: %s changed" msgstr "gjots2: %s se je spremenil" #: ../lib/file.py:619 #, python-format msgid "" "'%s' has changed since it was read.\n" "overwrite anyway?" msgstr "" "'%s' se je spremenil, odkar je bil prebran.\n" "vseeno prepišem?" #: ../lib/file.py:663 msgid "That file is already open!" msgstr "Datoteka je že odprta!" #: ../lib/file.py:680 #, python-format msgid "%s is locked by pid %d" msgstr "%s je zaklenil proces pid %d" #: ../lib/file.py:684 msgid "Can't make a lockfile in " msgstr "Ni moč ustvariti datoteke za zaklepanje v " #: ../lib/file.py:697 #, python-format msgid "%s is not writable" msgstr "%s ni pisljiv" #: ../lib/file.py:700 #, python-format msgid "gjots2: %s already exists." msgstr "gjots2: %s že obstaja." #: ../lib/file.py:701 #, python-format msgid "overwrite %s?" msgstr "prepišem %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Ni moč najti sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Notranja napaka" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Ni česa razvrščati!" #: ../lib/sortDialog.py:312 msgid "Sort Text" msgstr "Razvrsti besedilo" #~ msgid "Recent" #~ msgstr "Nedavne datoteke" #~ msgid "_Import" #~ msgstr "_Uvozi" #~ msgid "Find Next" #~ msgstr "Najdi naslednje" #~ msgid "Create a new child " #~ msgstr "Ustvari novo podpostavko" #, fuzzy #~ msgid " Find: " #~ msgstr " Najdi:" #~ msgid "_Settings" #~ msgstr "_Nastavitve" #~ msgid "gtk-new" #~ msgstr "gtk-new" #~ msgid "gtk-open" #~ msgstr "gtk-open" #~ msgid "gtk-save" #~ msgstr "gtk-save" #~ msgid "gtk-save-as" #~ msgstr "gtk-save-as" #~ msgid "gtk-print" #~ msgstr "gtk-print" #~ msgid "gtk-quit" #~ msgstr "gtk-quit" #~ msgid "gtk-undo" #~ msgstr "gtk-undo" #~ msgid "gtk-redo" #~ msgstr "gtk-redo" #~ msgid "gtk-cut" #~ msgstr "gtk-cut" #~ msgid "gtk-copy" #~ msgstr "gtk-copy" #~ msgid "gtk-paste" #~ msgstr "gtk-paste" #~ msgid "gtk-select-all" #~ msgstr "gtk-select-all" #~ msgid "gtk-find" #~ msgstr "gtk-find" #~ msgid "gtk-preferences" #~ msgstr "gtk-preferences" #~ msgid "gtk-go-up" #~ msgstr "gtk-go-up" #~ msgid "gtk-go-down" #~ msgstr "gtk-go-down" #~ msgid "gtk-about" #~ msgstr "gtk-about" #~ msgid "gtk-ok" #~ msgstr "gtk-ok" #~ msgid "gtk-no" #~ msgstr "gtk-no" #~ msgid "gtk-cancel" #~ msgstr "gtk-cancel" #~ msgid "gtk-select-font" #~ msgstr "gtk-select-font" gjots2-2.4.1/po/es/0000775000301100007650000000000012234163053013571 5ustar bhepplebhepplegjots2-2.4.1/po/es/LC_MESSAGES/0000755000301100007650000000000012234163053015354 5ustar bhepplebhepplegjots2-2.4.1/po/es/LC_MESSAGES/gjots2.mo0000664000301100007650000004167112234163053017134 0ustar bhepplebheppleQ  )<N_br +,%X#~5  '%!Mos       (=N`0p$   "/? Fgm s}C@D:   1'6^r%y 7WWU(783>r'#5'.>]l-|"*  &6Th z        - = N V d x      ! !(!C!^!d!j!!#! !!! !$"-"@" H"T"]" f"q" v"""""(" " " #. #+;#g#p#%### # ### $$$ :$(E$ n$z$$$$ $$$ $$#% +%%8%^%w% %%% %%%%5%&&#&2&8&@& F& P& ]& g& t& & & & &&&1& && ''.'A'X'Pq''#''(( ()%(+O({(#(((( w********++4+Q+o+++&++5+,#,(P,y,,>,, , -&-&5-\-a-'|- - - -- -- .'.!;.].w...C.&/+6/!b///////)/ 0(0 /0:0A0_0P~0M0Q1o111111112 22 %2"12T2)Z22232222I3kN3j3*%4P4o4v4?4474 5 '525 952F53y5=555%6 -6;64L6)6)6#66-767U7 u7 7 7 7 7 7777 8 8*8C8_8q888 888*8 999"49 W9d9j9,9 9&9'9 $:1:::!T:,v:,:: : :';); <;F; U; `;m;};;;; ;;3; <8< I<<T<6< <<)<"=:= B=P= _== == =1=>0>B>Q>X> t> >> >>0>?1?1P?1?????@@,@=4@r@ z@@@@@ @@@ @@@A A "A0A7A7AK|b -p}&B*4;#g6 c9\%SOG$[o2FtU Md1nPq"Je' Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s. %s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission'%s' has changed since it was read. overwrite anyway?: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2012Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for ExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphFoundGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpen file ...Open file read onlyOpen gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FontSelect _AllSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To open the file in read-only mode.To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUse -h for help WrapWrap the current paragraph to the current line length_Edit_Export_External Edit_File_Format_Help_Hide All_Merge Items_New Page_Read Manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Tree_View_get_settings: Cant find sortAscendingRadioButtone.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjots2: %s already exists.gjots2: %s changedgjots2: Enter Passwordgjots2: can't lock file.gjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editorwindow1xterm -e vi %sProject-Id-Version: Gjots2 Report-Msgid-Bugs-To: POT-Creation-Date: 2012-01-08 00:54+1000 PO-Revision-Date: 2010-11-22 20:02+0100 Last-Translator: Cecilio Salmeron Language-Team: SPANISH Language: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Spanish X-Poedit-Country: SPAIN X-Poedit-SourceCharset: utf-8 Opciones Imprimir rango Orden para imprimir Imprimir con formato Prámetros para ordenar Niveles a ordenar%FSe han fusionado %d items %d sustitucionesCopiados %d items del árbolCortados %d items del árbol%s está bloqueado por pid %d%s no puede leerse%s protegido contra escritura%s necesita pygtk-%s. %s necesita python %s o más reciente.%s versión %s%s: Atención: abriendo el manual de gjots2 desde %s %s: Atención: módulos ejecutándose en %s %s: datos de geometría no válidos: %s %s: bloqueado por el proceso %d%s: permiso denegado'%s' ha sido modificado desde que fue leído. ¿Sobreescribir?: Error: ¿Guardar?: versión Añade fecha y hora (ver preferencias)Añade fecha y hora (ver preferencias)TodoTodo el texto seleccionadoTodos los items del arbol seleccionadosAlfabéticoAscendenteAutonumerarFormato para autonumeración:Hacia atrásContraseña incorrectaExpresión regular no válidaTítulos en negritaNo puede eliminarse el nodo raízNo se puede ir más alláNo puede irse más allá¡No se puede ir más all!No se puede bloquear el archivoNo puede bloquearse el archivo %s: Está retenido por el proceso %dNo puede crease archivo de bloqueo en No pueden fusionarse items que tienen hijosNo puede fusionarse el nodo raízNo puede abrirse "No puede leerseNo puede ejecutarse '%s'No puede escribirseNo se puede escribir en CancelarElegir tipografía para el panel de textoLimpiarCerrarConfirmar:CopiarCopia los items seleccionadosCopyright Bob Hepple 2002-2012No puede encontrarse el programa ccrypt. Por favor, instálelo y pruebe de nuevoNo puede encontrarse el programa gpg. Por favor, instálelo y pruebe de nuevoNo puede encontrarse el programa openssl. Por favor, instálelo y pruebe de nuevoCourier 10 Pitch 10Añade un nuevo hijoCrea un nuevo itemCrear una página nuevaTipografía actual:CortarQuita los items seleccionados_RebajarFechaFormato de fecha:RebajarDescendenteDistinguir mayúsculas/minúsculasBajarEdita el item actual en un editor externoIntroduzca contraseña para ExportarExportar los items seleccionados a un archivo gjotsExportar a ...Ed.ext.Editor externoEl formateador externo "%s" no está instalado . No se puede dar formato.Programa externo para editar una página (%s será reemplazado por el nombre del archivo temporal a editar)Programa externo al que enviar el texto a formatear (%d será reemplazado por el tamaño actual de línea)Usa una página nueva para cada item gjotsEl archivo no puede bloquearseBuscarBuscar y sustituirEl texto a buscar es una expresión regular (ver 'man 7 regex')Buscar:Formato para la funcion de fecha/hora (ver strftime(3))Da formato al párrafo actualEncontradoGlobalOcultar todoOculta todos los items excepto los de primer nivelOcultar todos los items excepto los de primer nivel¿Cuántos subniveles hay que ordenar? (0=ninguno; -1=todos) ImportarImportar desde ...Importar items desde un archivo gjotsError interno¡Error interno!LLama a un editor externo para editar el item actualTamaño de línea para ajuste de párrafoTransforma la selección en un nuevo itemCoincidir mayúsculas y minúsculasFusionar itemsFusiona los items seleccionados en uno únicoFusina los items seleccionadosMover la selección hacia abajoMover la selección hacia arribaNuevo hijoNueva páginaNuevo _hijoNuevo archivoNuevo...>>>No hay cambios que guardar¡No hay hijo!¡No hay padre!No encontradoNo guardado.No hay nada seleccionado¡No hay nada seleccionado!Nada que fusionarNada que pegarNada que guardar¡Nada que ordenar!NuméricoAbrir archivo ...Abrir como 'sólo lectura'Abre la ventana de 'preferencias' de gjots_PromocionarPáginaPáginas independientesLa contraseña no se ha confirmadoContraseña:PegarPega los items seleccionadosMuestra el diálogo de 'buscar y reemplazar'Muestra el diálogo de 'ordenar'Muestra el diálogo de 'ordenar texto'Muestra el diálogo de 'ordenar árbol'PreferenciasImprimirImprime la página actualImprime el archivo gjots completoImprime los títulos de los items en negritaImprime las páginas o el texto seleccionadoImprime este documentoPromocionarSólo lecturaLeer el manual en línea (usando gjots)Expresión regularSustituirSustituir todoSustituir:¿Sustituir?_Ordenar árbolGuardarGuardar como ...¿Guardar el trabajo actual?Guarda un documento gjotsGuardado.Búscar hacia atrásBuscar en todo el archivo, no sólo en esta entradaSeleccionar tipografíaSeleccionar_todoSelecciónLa selección se colocará como hijo del item al que precedeLa selección se colocará al mismo nivel que su padreMostrar todoMostrar _icono de textoMostrar todos los items debajo del actualMostrar el icono asociado al textoOrdenarOrdenar textoOrdenar árbolOrdenar según orden alfabéticoOrdenar en secuencia ascendenteOrdenar en secuencia descendenteOrdenar según orden numéricoDividir itemCorta la selección y crea con ella un nuevo itemBarra de _estadoTexto a sustituirTexto a buscarTe_xtoTamaño de línea de texto:Texto copiadoTexto cortadoFormateador de texto:Texto pegado¡Ese archivo ya está abierto!Para abrir eln archivo en modo de sólo lectura.Herramientas _principalesCambiar indicador de sólo lectura, si es posibleMuestra/oculta la barra principal de herramientasMuestra/oculta la barra de herramientas de árbolHerramientas de _árbol¡El árbol está vacío!Items del árbol pegadosInténtelo de nuevoSubirUse -h para ayuda AjustarAjusta el párrafo actual para amoldarse al tamaño de línea_Editar_Exportar_Editor externo_Archivo_Formato_Ayuda_Ocultar todo_Fusionar items_Nueva página_Leer manual_Sólo lecturaMostrar _todos_Ordenar texto_Dividir itemFecha y _horaAr_bol_Ver_get_settings: No se encuentra sortAscendingRadioButtonej. lpr:ej.: 1 para 1.2.1, afmt -w %d gjots2: %s ya existe.gjots2: %s modificado.gjots2: Introduzca contraseñagjots2: no se bloquear archivo.gjots2: Atención: la lista de selección está vacía. Se ignora el evento de cambio en seleción de arbol.gjots: preferenciashttp://bhepple.freeshell.org/gjots2etiqueta1etiqueta2No inicializado¿sobreescribir %s?orden para imprimir (puede ser una 'shell expression')¡Hace falta pygtk-2.2 para ejecutar este programa!texto modificado en un editor externotexto no modificado en un editor externoventana1xterm -e vi %sgjots2-2.4.1/po/es.po0000664000301100007650000006730312234162543014145 0ustar bhepplebhepple# Messages master file for gjots2. # Copyright (C) 2005-2012 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2012. # msgid "" msgstr "" "Project-Id-Version: Gjots2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2012-01-08 00:54+1000\n" "PO-Revision-Date: 2010-11-22 20:02+0100\n" "Last-Translator: Cecilio Salmeron \n" "Language-Team: SPANISH \n" "Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Spanish\n" "X-Poedit-Country: SPAIN\n" "X-Poedit-SourceCharset: utf-8\n" #: ../ui/about.ui:9 msgid "Copyright Bob Hepple 2002-2012" msgstr "Copyright Bob Hepple 2002-2012" #: ../ui/about.ui:10 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../ui/about.ui:20 #, fuzzy msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) \n" msgstr "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" #: ../ui/fileDialog.ui:23 msgid "Open file read only" msgstr "Abrir como 'sólo lectura'" #: ../ui/fileDialog.ui:27 msgid "To open the file in read-only mode." msgstr "Para abrir eln archivo en modo de sólo lectura." #: ../ui/findDialog.ui:7 msgid "Find & replace" msgstr "Buscar y sustituir" #: ../ui/findDialog.ui:28 msgid "Find:" msgstr "Buscar:" #: ../ui/findDialog.ui:40 msgid "Replace:" msgstr "Sustituir:" #: ../ui/findDialog.ui:57 msgid "String to search for" msgstr "Texto a buscar" #: ../ui/findDialog.ui:69 msgid "String to replace" msgstr "Texto a sustituir" #: ../ui/findDialog.ui:96 ../ui/gjots.ui:876 msgid "Find" msgstr "Buscar" #: ../ui/findDialog.ui:112 msgid "Close" msgstr "Cerrar" #: ../ui/findDialog.ui:128 msgid "Replace" msgstr "Sustituir" #: ../ui/findDialog.ui:144 msgid "Replace All" msgstr "Sustituir todo" #: ../ui/findDialog.ui:160 msgid "Cancel" msgstr "Cancelar" #: ../ui/findDialog.ui:179 msgid "Clear" msgstr "Limpiar" #: ../ui/findDialog.ui:233 msgid "Match case" msgstr "Coincidir mayúsculas y minúsculas" #: ../ui/findDialog.ui:237 msgid "Don't ignore case" msgstr "Distinguir mayúsculas/minúsculas" #: ../ui/findDialog.ui:247 msgid "Regular Expression" msgstr "Expresión regular" #: ../ui/findDialog.ui:251 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "El texto a buscar es una expresión regular (ver 'man 7 regex')" #: ../ui/findDialog.ui:263 msgid "Backwards" msgstr "Hacia atrás" #: ../ui/findDialog.ui:267 msgid "Search backwards" msgstr "Búscar hacia atrás" #: ../ui/findDialog.ui:282 msgid "Global" msgstr "Global" #: ../ui/findDialog.ui:286 msgid "Searches entire file not just this entry" msgstr "Buscar en todo el archivo, no sólo en esta entrada" #: ../ui/findDialog.ui:302 msgid " Options " msgstr " Opciones" #: ../ui/fontDialog.ui:8 msgid "Select Font" msgstr "Seleccionar tipografía" #: ../ui/generalDialog.ui:9 msgid "window1" msgstr "ventana1" #: ../ui/generalDialog.ui:21 ../ui/generalDialog.ui:56 #: ../ui/generalDialog.ui:102 msgid "label1" msgstr "etiqueta1" #: ../ui/generalDialog.ui:43 msgid "label2" msgstr "etiqueta2" #: ../ui/generalDialog.ui:178 msgid "Try again" msgstr "Inténtelo de nuevo" #: ../ui/generalDialog.ui:194 msgid "Read only" msgstr "Sólo lectura" #: ../ui/gjots.ui:23 msgid "_File" msgstr "_Archivo" #: ../ui/gjots.ui:92 msgid "Import items from a gjots file" msgstr "Importar items desde un archivo gjots" #: ../ui/gjots.ui:101 msgid "_Export" msgstr "_Exportar" #: ../ui/gjots.ui:104 msgid "Export selected items to a gjots file" msgstr "Exportar los items seleccionados a un archivo gjots" #: ../ui/gjots.ui:140 msgid "Toggle the read-only flag if possible" msgstr "Cambiar indicador de sólo lectura, si es posible" #: ../ui/gjots.ui:142 msgid "_Read-only" msgstr "_Sólo lectura" #: ../ui/gjots.ui:158 #, fuzzy msgid "Exit gjots2" msgstr "Cerrar gjots" #: ../ui/gjots.ui:175 msgid "_Edit" msgstr "_Editar" #: ../ui/gjots.ui:287 msgid "Find Previous" msgstr "" #: ../ui/gjots.ui:316 msgid "_View" msgstr "_Ver" #: ../ui/gjots.ui:324 msgid "_Show All" msgstr "Mostrar _todos" #: ../ui/gjots.ui:327 ../ui/gjots.ui:1131 msgid "Show all items below the current item" msgstr "Mostrar todos los items debajo del actual" #: ../ui/gjots.ui:336 msgid "_Hide All" msgstr "_Ocultar todo" #: ../ui/gjots.ui:339 msgid "Hide all items except the top level" msgstr "Ocultar todos los items excepto los de primer nivel" #: ../ui/gjots.ui:357 msgid "Toggles the main toolbar" msgstr "Muestra/oculta la barra principal de herramientas" #: ../ui/gjots.ui:359 msgid "To_p Toolbar" msgstr "Herramientas _principales" #: ../ui/gjots.ui:368 msgid "Toggles tree tool bar" msgstr "Muestra/oculta la barra de herramientas de árbol" #: ../ui/gjots.ui:370 msgid "Tre_e Toolbar" msgstr "Herramientas de _árbol" #: ../ui/gjots.ui:379 msgid "Show the related icon text" msgstr "Mostrar el icono asociado al texto" #: ../ui/gjots.ui:381 msgid "Show _Icon Text" msgstr "Mostrar _icono de texto" #: ../ui/gjots.ui:391 msgid "Status _Bar" msgstr "Barra de _estado" #: ../ui/gjots.ui:405 msgid "_Tree" msgstr "Ar_bol" #: ../ui/gjots.ui:413 msgid "_New Page" msgstr "_Nueva página" #: ../ui/gjots.ui:416 msgid "Create a new page" msgstr "Crear una página nueva" #: ../ui/gjots.ui:425 msgid "New _Child" msgstr "Nuevo _hijo" #: ../ui/gjots.ui:428 ../ui/gjots.ui:955 msgid "Create a new child" msgstr "Añade un nuevo hijo" #: ../ui/gjots.ui:447 ../ui/gjots.ui:987 msgid "Move selection up" msgstr "Mover la selección hacia arriba" #: ../ui/gjots.ui:459 ../ui/gjots.ui:1003 msgid "Move selection down" msgstr "Mover la selección hacia abajo" #: ../ui/gjots.ui:468 msgid "P_romote" msgstr "_Promocionar" #: ../ui/gjots.ui:471 ../ui/gjots.ui:1019 msgid "Selection becomes a sibling to their parent" msgstr "La selección se colocará al mismo nivel que su padre" #: ../ui/gjots.ui:480 msgid "D_emote" msgstr "_Rebajar" #: ../ui/gjots.ui:483 ../ui/gjots.ui:1035 msgid "Selection becomes a child of the previous item" msgstr "La selección se colocará como hijo del item al que precede" #: ../ui/gjots.ui:499 msgid "_Split Item" msgstr "_Dividir item" #: ../ui/gjots.ui:502 msgid "Make a new item from the current selection" msgstr "Transforma la selección en un nuevo item" #: ../ui/gjots.ui:511 msgid "_Merge Items" msgstr "_Fusionar items" #: ../ui/gjots.ui:514 msgid "Merge current items into the first one" msgstr "Fusiona los items seleccionados en uno único" #: ../ui/gjots.ui:523 msgid "S_ort Tree" msgstr "_Ordenar árbol" #: ../ui/gjots.ui:526 ../ui/gjots.ui:1147 msgid "Popup the sort tree dialog" msgstr "Muestra el diálogo de 'ordenar árbol'" #: ../ui/gjots.ui:542 msgid "Te_xt" msgstr "Te_xto" #: ../ui/gjots.ui:550 msgid "_Format" msgstr "_Formato" #: ../ui/gjots.ui:553 msgid "Format the current paragraph" msgstr "Da formato al párrafo actual" #: ../ui/gjots.ui:563 msgid "_Time stamp" msgstr "Fecha y _hora" #: ../ui/gjots.ui:566 msgid "Add a time/date stamp (see preferences)" msgstr "Añade fecha y hora (ver preferencias)" #: ../ui/gjots.ui:575 msgid "_External Edit" msgstr "_Editor externo" #: ../ui/gjots.ui:578 msgid "Edit current item in an external editor" msgstr "Edita el item actual en un editor externo" #: ../ui/gjots.ui:587 msgid "_Sort Text" msgstr "_Ordenar texto" #: ../ui/gjots.ui:590 msgid "Popup the sort text dialog" msgstr "Muestra el diálogo de 'ordenar texto'" #: ../ui/gjots.ui:606 msgid "_Help" msgstr "_Ayuda" #: ../ui/gjots.ui:614 msgid "_Read Manual" msgstr "_Leer manual" #: ../ui/gjots.ui:617 msgid "Read the online manual (using gjots)" msgstr "Leer el manual en línea (usando gjots)" #: ../ui/gjots.ui:714 msgid "Save gjots document" msgstr "Guarda un documento gjots" #: ../ui/gjots.ui:716 msgid "Save" msgstr "Guardar" #: ../ui/gjots.ui:730 msgid "Print this document" msgstr "Imprime este documento" #: ../ui/gjots.ui:732 ../ui/printDialog.ui:7 msgid "Print" msgstr "Imprimir" #: ../ui/gjots.ui:762 msgid "Cut selected items" msgstr "Quita los items seleccionados" #: ../ui/gjots.ui:764 msgid "Cut" msgstr "Cortar" #: ../ui/gjots.ui:778 msgid "Copy selected items" msgstr "Copia los items seleccionados" #: ../ui/gjots.ui:780 msgid "Copy" msgstr "Copiar" #: ../ui/gjots.ui:794 msgid "Paste selected items" msgstr "Pega los items seleccionados" #: ../ui/gjots.ui:796 msgid "Paste" msgstr "Pegar" #: ../ui/gjots.ui:826 msgid "Wrap the current paragraph to the current line length" msgstr "Ajusta el párrafo actual para amoldarse al tamaño de línea" #: ../ui/gjots.ui:828 msgid "Wrap" msgstr "Ajustar" #: ../ui/gjots.ui:842 msgid "Invoke an external editor on the current item" msgstr "LLama a un editor externo para editar el item actual" #: ../ui/gjots.ui:844 msgid "Ext.Ed." msgstr "Ed.ext." #: ../ui/gjots.ui:858 msgid "Add a time/date stamp (see prefs)" msgstr "Añade fecha y hora (ver preferencias)" #: ../ui/gjots.ui:860 msgid "Date" msgstr "Fecha" #: ../ui/gjots.ui:874 msgid "Popup the find and replace dialog" msgstr "Muestra el diálogo de 'buscar y reemplazar'" #: ../ui/gjots.ui:890 msgid "Popup the sort dialog" msgstr "Muestra el diálogo de 'ordenar'" #: ../ui/gjots.ui:892 ../ui/sortDialog.ui:15 msgid "Sort" msgstr "Ordenar" #: ../ui/gjots.ui:906 msgid "Open gjots preferences window" msgstr "Abre la ventana de 'preferencias' de gjots" #: ../ui/gjots.ui:908 msgid "Prefs" msgstr "Preferencias" #: ../ui/gjots.ui:939 msgid "Create a new item" msgstr "Crea un nuevo item" #: ../ui/gjots.ui:941 ../ui/treeContextMenu.ui:45 msgid "New Page" msgstr "Nueva página" #: ../ui/gjots.ui:957 ../ui/treeContextMenu.ui:52 msgid "New Child" msgstr "Nuevo hijo" #: ../ui/gjots.ui:989 msgid "Up" msgstr "Subir" #: ../ui/gjots.ui:1005 msgid "Down" msgstr "Bajar" #: ../ui/gjots.ui:1021 ../ui/treeContextMenu.ui:74 msgid "Promote" msgstr "Promocionar" #: ../ui/gjots.ui:1037 ../ui/treeContextMenu.ui:82 msgid "Demote" msgstr "Rebajar" #: ../ui/gjots.ui:1067 msgid "Split the text selection into a new item" msgstr "Corta la selección y crea con ella un nuevo item" #: ../ui/gjots.ui:1069 msgid "Split Item" msgstr "Dividir item" #: ../ui/gjots.ui:1083 msgid "Merge selected items together" msgstr "Fusina los items seleccionados" #: ../ui/gjots.ui:1085 ../ui/treeContextMenu.ui:89 msgid "Merge Items" msgstr "Fusionar items" #: ../ui/gjots.ui:1115 msgid "Hide all items except for the top level" msgstr "Oculta todos los items excepto los de primer nivel" #: ../ui/gjots.ui:1117 ../ui/treeContextMenu.ui:103 msgid "Hide All" msgstr "Ocultar todo" #: ../ui/gjots.ui:1133 ../ui/treeContextMenu.ui:96 msgid "Show All" msgstr "Mostrar todo" #: ../ui/gjots.ui:1149 ../ui/treeContextMenu.ui:110 ../lib/sortDialog.py:308 msgid "Sort Tree" msgstr "Ordenar árbol" #: ../ui/prefsDialog.ui:15 msgid "gjots: preferences" msgstr "gjots: preferencias" #: ../ui/prefsDialog.ui:35 msgid "Choose a font for the text panel" msgstr "Elegir tipografía para el panel de texto" #: ../ui/prefsDialog.ui:50 msgid "Date format:" msgstr "Formato de fecha:" #: ../ui/prefsDialog.ui:64 msgid "Format for the timestamp function (see strftime(3))" msgstr "Formato para la funcion de fecha/hora (ver strftime(3))" #: ../ui/prefsDialog.ui:65 msgid "%F" msgstr "%F" #: ../ui/prefsDialog.ui:80 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "" "Programa externo para editar una página (%s será reemplazado por el nombre " "del archivo temporal a editar)" #: ../ui/prefsDialog.ui:81 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../ui/prefsDialog.ui:96 msgid "External editor" msgstr "Editor externo" #: ../ui/prefsDialog.ui:110 msgid "Text Line Length: " msgstr "Tamaño de línea de texto:" #: ../ui/prefsDialog.ui:124 msgid "Line length for paragraph wrapping" msgstr "Tamaño de línea para ajuste de párrafo" #: ../ui/prefsDialog.ui:142 msgid "Text formatter: " msgstr "Formateador de texto:" #: ../ui/prefsDialog.ui:154 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "" "Programa externo al que enviar el texto a formatear (%d será reemplazado por " "el tamaño actual de línea)" #: ../ui/prefsDialog.ui:155 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../ui/prefsDialog.ui:168 msgid "Current text font" msgstr "Tipografía actual:" #: ../ui/prefsDialog.ui:170 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../ui/printDialog.ui:31 msgid "e.g. lpr: " msgstr "ej. lpr:" #: ../ui/printDialog.ui:47 msgid "print command (can be a shell expression)" msgstr "orden para imprimir (puede ser una 'shell expression')" #: ../ui/printDialog.ui:62 msgid " Print command " msgstr " Orden para imprimir" #: ../ui/printDialog.ui:86 msgid "Page" msgstr "Página" #: ../ui/printDialog.ui:90 msgid "Print the current page" msgstr "Imprime la página actual" #: ../ui/printDialog.ui:102 msgid "Selection" msgstr "Selección" #: ../ui/printDialog.ui:106 msgid "Print the selected pages or text" msgstr "Imprime las páginas o el texto seleccionado" #: ../ui/printDialog.ui:119 msgid "All" msgstr "Todo" #: ../ui/printDialog.ui:123 msgid "Print the entire gjots file" msgstr "Imprime el archivo gjots completo" #: ../ui/printDialog.ui:141 msgid " Print Range " msgstr " Imprimir rango" #: ../ui/printDialog.ui:169 msgid "Page feeds" msgstr "Páginas independientes" #: ../ui/printDialog.ui:173 msgid "Feeds a page before every new gjots item" msgstr "Usa una página nueva para cada item gjots" #: ../ui/printDialog.ui:185 msgid "Bold titles" msgstr "Títulos en negrita" #: ../ui/printDialog.ui:188 msgid "Print the gjots item titles in bold" msgstr "Imprime los títulos de los items en negrita" #: ../ui/printDialog.ui:200 msgid "Auto Number" msgstr "Autonumerar" #: ../ui/printDialog.ui:223 msgid "Auto-number format: " msgstr "Formato para autonumeración:" #: ../ui/printDialog.ui:234 msgid "eg. 1 for 1.2.1, a" msgstr "ej.: 1 para 1.2.1, a" #: ../ui/printDialog.ui:252 msgid " Print formatting " msgstr " Imprimir con formato" #: ../ui/sortDialog.ui:39 msgid "Ascending" msgstr "Ascendente" #: ../ui/sortDialog.ui:43 msgid "Sort in ascending order" msgstr "Ordenar en secuencia ascendente" #: ../ui/sortDialog.ui:54 msgid "Descending" msgstr "Descendente" #: ../ui/sortDialog.ui:58 msgid "Sort in descending order" msgstr "Ordenar en secuencia descendente" #: ../ui/sortDialog.ui:72 msgid "Alphabetic" msgstr "Alfabético" #: ../ui/sortDialog.ui:76 msgid "Sort in alphabetic order" msgstr "Ordenar según orden alfabético" #: ../ui/sortDialog.ui:89 msgid "Numeric" msgstr "Numérico" #: ../ui/sortDialog.ui:93 msgid "Sort in numeric order" msgstr "Ordenar según orden numérico" #: ../ui/sortDialog.ui:114 msgid " Sort Parameters " msgstr " Prámetros para ordenar" #: ../ui/sortDialog.ui:142 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "¿Cuántos subniveles hay que ordenar? (0=ninguno; -1=todos) " #: ../ui/sortDialog.ui:159 msgid " Sort Sublevels " msgstr " Niveles a ordenar" #: ../ui/treeContextMenu.ui:30 msgid "Select _All" msgstr "Seleccionar_todo" #: ../ui/treeContextMenu.ui:117 msgid "Import" msgstr "Importar" #: ../ui/treeContextMenu.ui:124 msgid "Export" msgstr "Exportar" #: ../gjots2:28 #, fuzzy msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gtk/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug to stdout\n" "-t, --trace: trace lines as they execute\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Uso: gjots [OPCIONES] [NOMBRE_DE_ARCHIVO]\n" "Un block de notas para gnome-2/X11\n" "\n" "OPCIONES:\n" "-h, --help: esta ayuda\n" "-d, --debug: enviar traza de depuración a stdout\n" "-g 123x456, --geometry=123x456: geometría inicial (X x Y)\n" "-p, --purge-password no almacenar contraseña\n" "-r, --readonly: no permitir edición (ni bloqueo)\n" "-V, --version: mostrar versión y salir\n" "\n" "NOMBRE_DE_ARCHIVO:\n" "\tarchivo gjots a editar (por defecto $HOME/.gjotsfile)\n" #: ../gjots2:54 #, python-format msgid "%s requires python%s or higher." msgstr "%s necesita python %s o más reciente." #: ../gjots2:64 #, python-format msgid "%s requires pygtk-%s.\n" msgstr "%s necesita pygtk-%s.\n" #: ../gjots2:77 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Atención: módulos ejecutándose en %s\n" #: ../gjots2:90 msgid "Use -h for help\n" msgstr "Use -h para ayuda\n" #: ../gjots2:104 #, python-format msgid "%s version %s" msgstr "%s versión %s" #: ../lib/gui.py:140 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "" "El formateador externo \"%s\" no está instalado . No se puede dar formato." #: ../lib/gui.py:399 msgid "not initialised" msgstr "No inicializado" #: ../lib/gui.py:657 ../lib/gui.py:698 ../lib/gui.py:702 #: ../lib/gui.py:744 ../lib/gui.py:748 ../lib/gui.py:807 #: ../lib/gui.py:812 ../lib/gui.py:1025 ../lib/gui.py:1034 #: ../lib/gui.py:1117 ../lib/gui.py:1126 ../lib/gui.py:1159 #: ../lib/gui.py:1164 ../lib/gui.py:1190 ../lib/gui.py:1551 #: ../lib/gui.py:2279 ../lib/gui.py:2298 ../lib/gui.py:2327 #: ../lib/gui.py:2357 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "No hay nada seleccionado" #: ../lib/gui.py:661 ../lib/gui.py:707 ../lib/gui.py:752 #: ../lib/gui.py:817 ../lib/gui.py:920 ../lib/gui.py:1195 #: ../lib/gui.py:2283 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "¡No hay padre!" #: ../lib/gui.py:665 ../lib/gui.py:718 msgid "No child!" msgstr "¡No hay hijo!" #: ../lib/gui.py:668 ../lib/gui.py:712 msgid "Can't go any further" msgstr "No se puede ir más allá" #: ../lib/gui.py:675 ../lib/gui.py:835 msgid "Internal error!" msgstr "¡Error interno!" #: ../lib/gui.py:756 msgid "Can't go further!" msgstr "¡No se puede ir más all!" #: ../lib/gui.py:959 msgid "Text cut" msgstr "Texto cortado" #: ../lib/gui.py:970 msgid "Text copied" msgstr "Texto copiado" #: ../lib/gui.py:982 msgid "Text pasted" msgstr "Texto pegado" #: ../lib/gui.py:991 msgid "All text selected" msgstr "Todo el texto seleccionado" #: ../lib/gui.py:997 msgid "All tree items selected" msgstr "Todos los items del arbol seleccionados" #: ../lib/gui.py:1005 msgid "Nothing selected!" msgstr "¡No hay nada seleccionado!" #: ../lib/gui.py:1029 msgid "Can't merge the root item" msgstr "No puede fusionarse el nodo raíz" #: ../lib/gui.py:1038 msgid "Nothing to merge" msgstr "Nada que fusionar" #: ../lib/gui.py:1045 msgid "Can't merge items that have children" msgstr "No pueden fusionarse items que tienen hijos" #: ../lib/gui.py:1075 #, python-format msgid "%d items merged" msgstr "Se han fusionado %d items " #: ../lib/gui.py:1121 msgid "Can't delete the root item" msgstr "No puede eliminarse el nodo raíz" #: ../lib/gui.py:1151 #, python-format msgid "%d tree items cut" msgstr "Cortados %d items del árbol" #: ../lib/gui.py:1178 #, python-format msgid "%d tree items copied" msgstr "Copiados %d items del árbol" #: ../lib/gui.py:1185 msgid "Nothing to paste" msgstr "Nada que pegar" #: ../lib/gui.py:1201 msgid "Tree items pasted" msgstr "Items del árbol pegados" #: ../lib/gui.py:1221 msgid "Can't write " msgstr "No puede escribirse" #: ../lib/gui.py:1231 #, python-format msgid "Can't run '%s'" msgstr "No puede ejecutarse '%s'" #: ../lib/gui.py:1240 msgid "Can't read " msgstr "No puede leerse" #: ../lib/gui.py:1248 msgid "text changed by external editor" msgstr "texto modificado en un editor externo" #: ../lib/gui.py:1250 msgid "text not changed by external editor" msgstr "texto no modificado en un editor externo" #: ../lib/gui.py:1268 msgid ": Error" msgstr ": Error" #: ../lib/gui.py:1281 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "No puede bloquearse el archivo %s: Está retenido por el proceso %d" #: ../lib/gui.py:1455 msgid ": Save?" msgstr ": ¿Guardar?" #: ../lib/gui.py:1456 msgid "Save current work?" msgstr "¿Guardar el trabajo actual?" #: ../lib/gui.py:1477 msgid "New file" msgstr "Nuevo archivo" #: ../lib/gui.py:1501 msgid "Open file ..." msgstr "Abrir archivo ..." #: ../lib/gui.py:1512 msgid "No changes to save" msgstr "No hay cambios que guardar" #: ../lib/gui.py:1516 ../lib/gui.py:1536 msgid "Saved." msgstr "Guardado." #: ../lib/gui.py:1518 ../lib/gui.py:1538 ../lib/file.py:429 msgid "Not saved." msgstr "No guardado." #: ../lib/gui.py:1532 msgid "Nothing to save" msgstr "Nada que guardar" #: ../lib/gui.py:1534 ../lib/file.py:651 msgid "Save as ..." msgstr "Guardar como ..." #: ../lib/gui.py:1548 msgid "Import from ..." msgstr "Importar desde ..." #: ../lib/gui.py:1559 msgid "Export to ..." msgstr "Exportar a ..." #: ../lib/gui.py:1878 ../lib/gui.py:1881 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Atención: abriendo el manual de gjots2 desde %s\n" #: ../lib/gui.py:1921 #, fuzzy msgid "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" "Aleksa Šušulić (sl) \n" "Uwe Steinmann (de) " msgstr "" "Rui Nibau (fr) \n" "Robert Emil Berge (no, nb) \n" "Sergey Bezdenezhnyh (ru) \n" "Raimondo Giammanco (it) \n" "Martin Sin (cs) \n" "Cecilio Salmeron (es) \n" #: ../lib/gui.py:2217 msgid "pygtk-2.2 is required for this application!" msgstr "¡Hace falta pygtk-2.2 para ejecutar este programa!" #: ../lib/gui.py:2223 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: Atención: la lista de selección está vacía. Se ignora el evento de \n" "cambio en seleción de arbol." #: ../lib/gui.py:2287 msgid "Can't go further" msgstr "No puede irse más allá" #: ../lib/gui.py:2316 msgid "Tree is empty!" msgstr "¡El árbol está vacío!" #: ../lib/gui.py:2585 msgid "Bad regular expression" msgstr "Expresión regular no válida" #: ../lib/gui.py:2678 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: datos de geometría no válidos: %s\n" #: ../lib/gui.py:2882 msgid "New...>>>" msgstr "Nuevo...>>>" #: ../lib/gui.py:2914 msgid "Install pygtksourceview to enable undo/redo" msgstr "" #: ../lib/gui.py:2967 msgid ": version " msgstr ": versión " #: ../lib/find.py:77 ../lib/find.py:100 msgid "Not found" msgstr "No encontrado" #: ../lib/find.py:79 msgid "Found" msgstr "Encontrado" #: ../lib/find.py:103 msgid "Replace?" msgstr "¿Sustituir?" #: ../lib/find.py:120 #, python-format msgid "%d substitutions" msgstr "%d sustituciones" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Introduzca contraseña para " #: ../lib/file.py:252 msgid "gjots2: Enter Password" msgstr "gjots2: Introduzca contraseña" #: ../lib/file.py:254 msgid "Password: " msgstr "Contraseña:" #: ../lib/file.py:255 msgid "Confirm: " msgstr "Confirmar:" #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "La contraseña no se ha confirmado" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "" "No puede encontrarse el programa ccrypt. Por favor, instálelo y pruebe de " "nuevo" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "" "No puede encontrarse el programa gpg. Por favor, instálelo y pruebe de nuevo" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "" "No puede encontrarse el programa openssl. Por favor, instálelo y pruebe de " "nuevo" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "No puede abrirse \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Contraseña incorrecta" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "El archivo no puede bloquearse" #: ../lib/file.py:430 msgid "Can't write to " msgstr "No se puede escribir en " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "No se puede bloquear el archivo" #: ../lib/file.py:560 #, python-format msgid "%s is not readable" msgstr "%s no puede leerse" #: ../lib/file.py:576 #, python-format msgid "%s: no permission" msgstr "%s: permiso denegado" #: ../lib/file.py:578 #, python-format msgid "%s: locked by process number %d" msgstr "%s: bloqueado por el proceso %d" #: ../lib/file.py:580 msgid "gjots2: can't lock file." msgstr "gjots2: no se bloquear archivo." #: ../lib/file.py:618 #, python-format msgid "gjots2: %s changed" msgstr "gjots2: %s modificado." #: ../lib/file.py:619 #, python-format msgid "" "'%s' has changed since it was read.\n" "overwrite anyway?" msgstr "" "'%s' ha sido modificado desde que fue leído.\n" "¿Sobreescribir?" #: ../lib/file.py:663 msgid "That file is already open!" msgstr "¡Ese archivo ya está abierto!" #: ../lib/file.py:680 #, python-format msgid "%s is locked by pid %d" msgstr "%s está bloqueado por pid %d" #: ../lib/file.py:684 msgid "Can't make a lockfile in " msgstr "No puede crease archivo de bloqueo en " #: ../lib/file.py:697 #, python-format msgid "%s is not writable" msgstr "%s protegido contra escritura" #: ../lib/file.py:700 #, python-format msgid "gjots2: %s already exists." msgstr "gjots2: %s ya existe." #: ../lib/file.py:701 #, python-format msgid "overwrite %s?" msgstr "¿sobreescribir %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: No se encuentra sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Error interno" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "¡Nada que ordenar!" #: ../lib/sortDialog.py:312 msgid "Sort Text" msgstr "Ordenar texto" #~ msgid "Recent" #~ msgstr "Recientes" #~ msgid "_Import" #~ msgstr "_Importar" #~ msgid "Find Next" #~ msgstr "Buscar siguiente" #~ msgid "Create a new child " #~ msgstr "Crear un nuevo hijo" #, fuzzy #~ msgid " Find: " #~ msgstr " Buscar:" #~ msgid "_Settings" #~ msgstr "_Preferencias" #~ msgid "Store and organise your random notes" #~ msgstr "Almacene y organice sus notas sueltas y apuntes" #~ msgid "Gjots2 Jotter" #~ msgstr "Gjots2 Jotter" #~ msgid "gjots" #~ msgstr "gjots" #~ msgid "_New" #~ msgstr "_Nuevo" #~ msgid "_Quit" #~ msgstr "_Salir" #~ msgid "_Toolbars" #~ msgstr "_Herramientas" #~ msgid "_Up" #~ msgstr "_Subir" #~ msgid "_Down" #~ msgstr "_Bajar" #~ msgid "Create a new gjots document" #~ msgstr "Crea un nuevo documento gjots" #~ msgid "Open an existing gjots document" #~ msgstr "Abre un documento gjots ya existente" #~ msgid "Open" #~ msgstr "Abrir" #~ msgid "Back" #~ msgstr "Atrás" #~ msgid "Forward" #~ msgstr "Adelante" #~ msgid "translator_credits" #~ msgstr "Cecilio Salmerón" #~ msgid "abcdefghijk ABCDEFGHIJK" #~ msgstr "abcdefghijk ABCDEFGHIJK" gjots2-2.4.1/po/cs/0000775000301100007650000000000012234163053013567 5ustar bhepplebhepplegjots2-2.4.1/po/cs/LC_MESSAGES/0000755000301100007650000000000012234163053015352 5ustar bhepplebhepplegjots2-2.4.1/po/cs/LC_MESSAGES/gjots2.mo0000664000301100007650000004336312234163053017132 0ustar bhepplebheppleD]l   .?BRcx + %7#] '!. F Q [g|   0O$i     !+0DCc@D-ATh  '< P[%b 7WW>(7!3'[x '#5&-=\k-{"*   & 5 S g y       !!,!>.>.J> y>>2>> >>? ?!3? U?!v??,??)? @@-@3@M@ _@l@ @@ @!@!@#@#A4AHA aAnAuACC^C-fCC CC C C CCCCD DD0D?DPDdDwDDD6DD DD EEVEsEEEE#EEEF F.%F"TF(wF.F FFF_O  6 /P;of7%5`B+~EX8<z@}QH=ujATnpV\m0!yb Rce>w&hKk -GJ3t?Y#.^($FsZ4LW2,N"]d)qSgC Ilai|'xUv1:{[M9*rD Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gnome-2/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug trace to stdout -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditswindow1xterm -e vi %sProject-Id-Version: gjots2 2.3.4 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-12-24 15:29+1000 PO-Revision-Date: 2007-02-26 10:08+0100 Last-Translator: Martin Sin Language-Team: Czech MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Nastavení Tisk oblasti Příkaz tisku Formátování tisku Parametry třídění Počet podúrovní %d.%m.%Y%d položek sloučeno%d substitucí%d položek stromu zkopírováno%d položek stromu vyjmuto%s je zamčen pid %d%s není čitelnýdo %s není možné zapisovat%s vyžaduje pygtk-%s.%s vyžaduje python%s nebo vyšší.%s verze %s%s: Varování: otevření manuálu gjots2 z %s %s: Varování: běžící moduly z %s %s: špatná specifikace rozměru: %s %s: zamčen procesem číslo %d%s: bez oprávnění: Chyba: Uložit?: verze Přidá čas/datum (podívejte se na nastavení)Přidá datum/čas (podívejte se na nastavení)VšeCelý text vybránVšechny položky stromu vybrányAbecedněVzestupněAutomatické číslováníAutomatické formát číselZpětZpětněŠpatné hesloŠpatný regulární výrazTituly tučněNemohu smazat kořenovou položkuNemohu pokračovatNemohu pokračovatNemohu pokračovat!Nemohu zamknout souborNemohu zamknout soubor %s: již zamčen procesem %dNemohu provést zamčení Nemohu sloučit položky, které obsahují potomkyNemohu spojit kořenové položkyNemohu otevřít "Nemohu číst Nemohu spustit '%s'Nemohu zapisovat Nemohu zapisovat do ZrušitZvolí písmo textového paneluVymazatZavřítPotvrdit: KopírovatZkopíruje vybrané položkyCopyright Bob Hepple 2002-2006Nemohu najít program ccrypt - nainstalujte ho prosím a zkuste to znovuNemohu najít program gpg - nainstalujte ho prosím a zkuste to znovuNemohu nalézt program openssl - nainstalujte ho prosím a zkuste to znovuCourier 10 Pitch 10Vytvoří nového potomkaVytvoří nového následníkaVytvoří nový dokument gjotsVytvoří novou položkuVytvoří novou stránkuAktuální písmo textuVyjmoutVyjme vybrané položky_SnížitDatumFormát data:SnížitSestupněDbát na velikostDolůUpraví aktuální položku v externím editoruZadejte heslo pro Ukončí gjotsExportovatExportuje vybrané položky do souboru gjotsExportovat do ...EditorExterní editorExterní formátovací program "%s" není nainstalován - nelze formátovatExterní program pro úpravu stránky (%s bude nahrazeno jménem dočasně vytvořeného souboru)Externí program pro spojení textu při formátování (%d je nahrazeno aktuální délkou řádku)Vyjede stránku před každou novou položkou gjotsSoubor není možné uzamknoutNajítNajít & nahraditNalezne řetězec odpovídající regulárnímu výrazu ('man 7 regex')Najít:Formát pro vložení časové značky (podívejte se na strftime(3))Naformátuje aktuální odstavecDalšíNalezenoZápisník Gjots2CelýSkrýt všeSkryje všechny položky kromě nejvyšší úrovněSkryje všechny položky kromě položek nejvyšší úrovněKolik podúrovní se má třídit (0 pro žádnou; -1 pro 'všechny')ImportovatImportovat z ...Importuje položky ze souboru gjotsInterní chybaInterní chyba!Zobrazí aktuální položku v externím editoruDélka řádku pro jeho zalomeníZ aktuálního výběru vytvoří novou položkuPorovnat velikostSpojit položkySpojí aktuální položky do té prvníSpojí vybrané položky dohromadyPřesune výběr dolůPřesune výběr nahoruNový potomekNová stránkaNový _následníkNový souborNová...>>>Žádné změny k uloženíNení potomek!Není rodič!NenalezenoNebylo uloženo.Nic není vybránoNic není vybráno!Nic ke sloučeníNic k vloženíNic k uloženíNic k setřídění!ČíselněOtevřítOtevře stávající dokument gjotsOtevřít soubor ...Otevře okno s nastavením gjots_ZvýšitStránkaPosun stránkyHesla si nesouhlasíHeslo: VložitVloží vybrané položkyZobrazí okno najít a nahraditZobrazí dialog setříditZobrazí dialogové okno setříděníZobrazí dialog setříděníNastaveníTisknoutVytiskne aktuální stránkuVytiskne celý soubor gjotsTučně vytiskne tituly gjotsVytiskne vybrané stránky nebo textVytiskne tento dokumentZvýšitPouze pro čteníPřečte online manuál (pomocí gjots)Regulární výrazNahraditNahradit všeNahradit:Nahradit?S_etřídit stromUložitUložit jako ...Uložit současnou práci?Uloží dokument gjotsUloženo.Hledá zpětněProhledá celý soubor ne pouze aktuální položkuVybrat soubor1Zvolit písmoVýběrVýběr se stane potomkem předchozí položkyVýběr se přesune na úroveň svého rodičeZobrazit vše_Zobrazit text ikonZobrazí všechny položky pod aktuální zvolenouZobrazí ikony s textemSetříditSetřídit textSetřídit stromSetřídí v abecedním pořadíSetřídí v vzestupném pořadíSetřídí v sestupném pořadíSetřídí v číselném pořadíRozdělit položkuRozdělí textový výběr do nové položkyStavový _PruhUkládá a organizuje náhodné poznámkyNahradit zaHledaný výrazTe_xtDélka řádku s textem: Text zkopírovánVyjmout textFormátovač textu: Text vloženTento soubor je již otevřen!_Horní panelPřepne značku pouze pro čteníZobrazí hlavní panel nástrojůZobrazí stromový panel nástrojů_Stromový panelStrom je prázdný!Položky stromu vloženyZkusit znovaNahoruUžití: gjots [VOLBY] [SOUBOR] Zápisník pro gnome-2/X11 VOLBY: -h, --help: tato nápověda -d, --debug: ladící výstup -g 123x456, --geometry=123x456: výchozí velikost (X x Y) -p, --purge-password nepamatovat heslo -r, --readonly: bez úprav (zamčení) -V, --version: vytisknout verzi a konec SOUBOR: datový soubor gjots (výchozí je $HOME/.gjotsfile) Pro nápovědu zadejte -h ZalomitNastaví zalomení řádku na zvolenou délku_Dolů_Exportovat_Externí editor_Formátovat_Skrýt vše_ImportovatS_pojit položky_NovýNová _stránka_KonecČís_t manuál_Pouze pro čtení_Zobrazit vše_Setřídit text_Rozdělit položku_Časové razítko_Panely nástrojů_Strom_Nahoru_get_settings: Nemohu nalézt sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKnapř. lpr: např. 1 pro 1.2.1, afmt -w %d gjotsgjots2: varování: výběr seznamu je prázdný. Přeskakuji událost změny stromu.gjots: %s již existuje.gjots: Zadat heslogjots: nemohu zamknout soubor.gjots: nastaveníhttp://bhepple.freeshell.org/gjots2label1label2není inicializovánopřepsat %s?příkaz k tisku (může být příkaz shellu)Tato aplikace vyžaduje pygtk-2.2!text změněn pomocí externího editorutext nebyl změněn pomocí externího editoruMartin Šínwindow1xterm -e vi %sgjots2-2.4.1/po/cs.po0000664000301100007650000006122012234162543014133 0ustar bhepplebhepple# Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # msgid "" msgstr "" "Project-Id-Version: gjots2 2.3.4\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: 2007-02-26 10:08+0100\n" "Last-Translator: Martin Sin \n" "Language-Team: Czech\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Ukládá a organizuje náhodné poznámky" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Zápisník Gjots2" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_Nový" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Importuje položky ze souboru gjots" #: ../gjots.glade2:99 msgid "_Import" msgstr "_Importovat" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Exportuje vybrané položky do souboru gjots" #: ../gjots.glade2:121 msgid "_Export" msgstr "_Exportovat" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "Přepne značku pouze pro čtení" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Pouze pro čtení" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Ukončí gjots" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Konec" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Panely nástrojů" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "Zobrazí hlavní panel nástrojů" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "_Horní panel" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "Zobrazí stromový panel nástrojů" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "_Stromový panel" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Zobrazí ikony s textem" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "_Zobrazit text ikon" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Stavový _Pruh" #: ../gjots.glade2:357 ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Zobrazí všechny položky pod aktuální zvolenou" #: ../gjots.glade2:358 msgid "_Show All" msgstr "_Zobrazit vše" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Skryje všechny položky kromě položek nejvyšší úrovně" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "_Skrýt vše" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Strom" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Vytvoří novou stránku" #: ../gjots.glade2:415 msgid "_New Page" msgstr "Nová _stránka" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Vytvoří nového následníka" #: ../gjots.glade2:437 msgid "New _Child" msgstr "Nový _následník" #: ../gjots.glade2:464 ../gjots.glade2:1525 msgid "Move selection up" msgstr "Přesune výběr nahoru" #: ../gjots.glade2:465 msgid "_Up" msgstr "_Nahoru" #: ../gjots.glade2:486 ../gjots.glade2:1543 msgid "Move selection down" msgstr "Přesune výběr dolů" #: ../gjots.glade2:487 msgid "_Down" msgstr "_Dolů" #: ../gjots.glade2:508 ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "Výběr se přesune na úroveň svého rodiče" #: ../gjots.glade2:509 msgid "P_romote" msgstr "_Zvýšit" #: ../gjots.glade2:530 ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "Výběr se stane potomkem předchozí položky" #: ../gjots.glade2:531 msgid "D_emote" msgstr "_Snížit" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Z aktuálního výběru vytvoří novou položku" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "_Rozdělit položku" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Spojí aktuální položky do té první" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "S_pojit položky" #: ../gjots.glade2:608 ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "Zobrazí dialog setřídění" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "S_etřídit strom" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Te_xt" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Naformátuje aktuální odstavec" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Formátovat" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Přidá čas/datum (podívejte se na nastavení)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Časové razítko" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Upraví aktuální položku v externím editoru" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_Externí editor" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Zobrazí dialogové okno setřídění" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Setřídit text" #: ../gjots.glade2:822 ../gjots.glade2:1165 ../gjots.glade2:1468 msgid "New Page" msgstr "Nová stránka" #: ../gjots.glade2:842 ../gjots.glade2:1486 msgid "New Child" msgstr "Nový potomek" #: ../gjots.glade2:868 ../gjots.glade2:1526 msgid "Up" msgstr "Nahoru" #: ../gjots.glade2:888 ../gjots.glade2:1544 msgid "Down" msgstr "Dolů" #: ../gjots.glade2:908 msgid "Promote" msgstr "Zvýšit" #: ../gjots.glade2:928 msgid "Demote" msgstr "Snížit" #: ../gjots.glade2:954 ../gjots.glade2:1638 msgid "Merge Items" msgstr "Spojit položky" #: ../gjots.glade2:980 ../gjots.glade2:1696 msgid "Show All" msgstr "Zobrazit vše" #: ../gjots.glade2:1000 ../gjots.glade2:1678 msgid "Hide All" msgstr "Skrýt vše" #: ../gjots.glade2:1026 ../gjots.glade2:1714 ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Setřídit strom" #: ../gjots.glade2:1052 msgid "Import" msgstr "Importovat" #: ../gjots.glade2:1072 msgid "Export" msgstr "Exportovat" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Přečte online manuál (pomocí gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "Čís_t manuál" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Vytvoří nový dokument gjots" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Otevře stávající dokument gjots" #: ../gjots.glade2:1183 msgid "Open" msgstr "Otevřít" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Uloží dokument gjots" #: ../gjots.glade2:1201 msgid "Save" msgstr "Uložit" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Vytiskne tento dokument" #: ../gjots.glade2:1219 ../gjots.glade2:3031 msgid "Print" msgstr "Tisknout" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Vyjme vybrané položky" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Vyjmout" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Zkopíruje vybrané položky" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Kopírovat" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Vloží vybrané položky" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Vložit" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Nastaví zalomení řádku na zvolenou délku" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Zalomit" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Zobrazí aktuální položku v externím editoru" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Editor" #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Přidá datum/čas (podívejte se na nastavení)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Datum" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Zobrazí okno najít a nahradit" #: ../gjots.glade2:1389 ../gjots.glade2:2739 msgid "Find" msgstr "Najít" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Zobrazí dialog setřídit" #: ../gjots.glade2:1407 ../gjots.glade2:3493 msgid "Sort" msgstr "Setřídit" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Otevře okno s nastavením gjots" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Nastavení" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Vytvoří novou položku" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Vytvoří nového potomka" #: ../gjots.glade2:1562 msgid "Back" msgstr "Zpět" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Další" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Rozdělí textový výběr do nové položky" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Rozdělit položku" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Spojí vybrané položky dohromady" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Skryje všechny položky kromě nejvyšší úrovně" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Copyright Bob Hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "Martin Šín" #: ../gjots.glade2:1928 msgid "window1" msgstr "window1" #: ../gjots.glade2:1949 ../gjots.glade2:2002 ../gjots.glade2:2080 msgid "label1" msgstr "label1" #: ../gjots.glade2:1979 msgid "label2" msgstr "label2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Zkusit znova" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Pouze pro čtení" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: nastavení" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Zvolí písmo textového panelu" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Formát data:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Formát pro vložení časové značky (podívejte se na strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%d.%m.%Y" #: ../gjots.glade2:2300 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "" "Externí program pro úpravu stránky (%s bude nahrazeno jménem dočasně " "vytvořeného souboru)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "Externí editor" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Délka řádku s textem: " #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Délka řádku pro jeho zalomení" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Formátovač textu: " #: ../gjots.glade2:2418 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "" "Externí program pro spojení textu při formátování (%d je nahrazeno aktuální " "délkou řádku)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Aktuální písmo textu" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Zvolit písmo" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Najít & nahradit" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Najít:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Nahradit:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "Hledaný výraz" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "Nahradit za" #: ../gjots.glade2:2759 msgid "Close" msgstr "Zavřít" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Nahradit" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Nahradit vše" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Zrušit" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Vymazat" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Dbát na velikost" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Porovnat velikost" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Nalezne řetězec odpovídající regulárnímu výrazu ('man 7 regex')" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Regulární výraz" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Hledá zpětně" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "Zpětně" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Prohledá celý soubor ne pouze aktuální položku" #: ../gjots.glade2:2980 msgid "Global" msgstr "Celý" #: ../gjots.glade2:3003 msgid " Options " msgstr " Nastavení " #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "např. lpr: " #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "příkaz k tisku (může být příkaz shellu)" #: ../gjots.glade2:3128 msgid " Print command " msgstr " Příkaz tisku " #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Vytiskne aktuální stránku" #: ../gjots.glade2:3181 msgid "Page" msgstr "Stránka" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Vytiskne vybrané stránky nebo text" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Výběr" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Vytiskne celý soubor gjots" #: ../gjots.glade2:3222 msgid "All" msgstr "Vše" #: ../gjots.glade2:3245 msgid " Print Range " msgstr " Tisk oblasti " #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Vyjede stránku před každou novou položkou gjots" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Posun stránky" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Tučně vytiskne tituly gjots" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Tituly tučně" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Automatické číslování" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Automatické formát čísel" #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "např. 1 pro 1.2.1, a" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr " Formátování tisku " #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Setřídí v vzestupném pořadí" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "Vzestupně" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Setřídí v sestupném pořadí" #: ../gjots.glade2:3569 msgid "Descending" msgstr "Sestupně" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Setřídí v abecedním pořadí" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Abecedně" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Setřídí v číselném pořadí" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Číselně" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr " Parametry třídění " #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Kolik podúrovní se má třídit (0 pro žádnou; -1 pro 'všechny')" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr " Počet podúrovní " #: ../gjots.glade2:3788 msgid "Select File" msgstr "Vybrat soubor1" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Užití: gjots [VOLBY] [SOUBOR]\n" "Zápisník pro gnome-2/X11\n" "\n" "VOLBY:\n" "-h, --help: tato nápověda\n" "-d, --debug: ladící výstup\n" "-g 123x456, --geometry=123x456: výchozí velikost (X x Y)\n" "-p, --purge-password \t\t\t\tnepamatovat heslo\n" "-r, --readonly: bez úprav (zamčení)\n" "-V, --version: vytisknout verzi a konec\n" "\n" "SOUBOR:\n" "\tdatový soubor gjots (výchozí je $HOME/.gjotsfile)\n" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s vyžaduje python%s nebo vyšší." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s vyžaduje pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Varování: běžící moduly z %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Pro nápovědu zadejte -h\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s verze %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "" "Externí formátovací program \"%s\" není nainstalován - nelze formátovat" #: ../lib/gui.py:326 msgid "not initialised" msgstr "není inicializováno" #: ../lib/gui.py:543 ../lib/gui.py:584 ../lib/gui.py:588 #: ../lib/gui.py:630 ../lib/gui.py:634 ../lib/gui.py:690 #: ../lib/gui.py:695 ../lib/gui.py:904 ../lib/gui.py:913 #: ../lib/gui.py:995 ../lib/gui.py:1004 ../lib/gui.py:1037 #: ../lib/gui.py:1042 ../lib/gui.py:1068 ../lib/gui.py:1349 #: ../lib/gui.py:1837 ../lib/gui.py:1856 ../lib/gui.py:1885 #: ../lib/gui.py:1908 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Nic není vybráno" #: ../lib/gui.py:547 ../lib/gui.py:593 ../lib/gui.py:638 #: ../lib/gui.py:700 ../lib/gui.py:799 ../lib/gui.py:1073 #: ../lib/gui.py:1841 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Není rodič!" #: ../lib/gui.py:551 ../lib/gui.py:604 msgid "No child!" msgstr "Není potomek!" #: ../lib/gui.py:554 ../lib/gui.py:598 msgid "Can't go any further" msgstr "Nemohu pokračovat" #: ../lib/gui.py:561 ../lib/gui.py:718 msgid "Internal error!" msgstr "Interní chyba!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Nemohu pokračovat!" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Vyjmout text" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Text zkopírován" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Text vložen" #: ../lib/gui.py:870 msgid "All text selected" msgstr "Celý text vybrán" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "Všechny položky stromu vybrány" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Nic není vybráno!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Nemohu spojit kořenové položky" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Nic ke sloučení" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Nemohu sloučit položky, které obsahují potomky" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d položek sloučeno" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Nemohu smazat kořenovou položku" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d položek stromu vyjmuto" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d položek stromu zkopírováno" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Nic k vložení" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Položky stromu vloženy" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Nemohu zapisovat " #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Nemohu spustit '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Nemohu číst " #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "text změněn pomocí externího editoru" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "text nebyl změněn pomocí externího editoru" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Chyba" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Nemohu zamknout soubor %s: již zamčen procesem %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr ": Uložit?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Uložit současnou práci?" #: ../lib/gui.py:1285 msgid "New file" msgstr "Nový soubor" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Otevřít soubor ..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "Žádné změny k uložení" #: ../lib/gui.py:1314 ../lib/gui.py:1334 msgid "Saved." msgstr "Uloženo." #: ../lib/gui.py:1316 ../lib/gui.py:1336 ../lib/file.py:429 msgid "Not saved." msgstr "Nebylo uloženo." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Nic k uložení" #: ../lib/gui.py:1332 ../lib/file.py:606 msgid "Save as ..." msgstr "Uložit jako ..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Importovat z ..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Exportovat do ..." #: ../lib/gui.py:1613 ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Varování: otevření manuálu gjots2 z %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "Tato aplikace vyžaduje pygtk-2.2!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: varování: výběr seznamu je prázdný. Přeskakuji událost změny \n" "stromu." #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Nemohu pokračovat" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "Strom je prázdný!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: špatná specifikace rozměru: %s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "Nová...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": verze " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Špatný regulární výraz" #: ../lib/find.py:198 ../lib/find.py:251 msgid "Not found" msgstr "Nenalezeno" #: ../lib/find.py:200 msgid "Found" msgstr "Nalezeno" #: ../lib/find.py:254 msgid "Replace?" msgstr "Nahradit?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d substitucí" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Zadejte heslo pro " #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Zadat heslo" #: ../lib/file.py:254 msgid "Password: " msgstr "Heslo: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Potvrdit: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Hesla si nesouhlasí" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Nemohu najít program ccrypt - nainstalujte ho prosím a zkuste to znovu" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Nemohu najít program gpg - nainstalujte ho prosím a zkuste to znovu" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "" "Nemohu nalézt program openssl - nainstalujte ho prosím a zkuste to znovu" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Nemohu otevřít \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Špatné heslo" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Soubor není možné uzamknout" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Nemohu zapisovat do " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Nemohu zamknout soubor" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s není čitelný" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: bez oprávnění" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: zamčen procesem číslo %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: nemohu zamknout soubor." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "Tento soubor je již otevřen!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s je zamčen pid %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Nemohu provést zamčení " #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "do %s není možné zapisovat" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s již existuje." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "přepsat %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Nemohu nalézt sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Interní chyba" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Nic k setřídění!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Setřídit text" gjots2-2.4.1/po/it/0000775000301100007650000000000012234163053013576 5ustar bhepplebhepplegjots2-2.4.1/po/it/LC_MESSAGES/0000755000301100007650000000000012234163053015361 5ustar bhepplebhepplegjots2-2.4.1/po/it/LC_MESSAGES/gjots2.mo0000664000301100007650000004575212234163053017145 0ustar bhepplebheppleD]l   .?BRcx + %7#] '!. F Q [g|   0O$i     !+0D!cC@D Ocv   1'6^ r}% 7WW`(7 C3I} '#5HO_~-"*  $ &0 W u      !!,!=!N!^!o!w!|! !!!! !! !" "!""D"Z"u"""""#" "#(# 0#$:#_#r# z### ## #####(# $ ($ 4$.>$+m$$$%$$$ $ % %%%=%V% l%(w% %$%%%%% &&&& 7&C& ^&%k&&& &&& &&&((5())&)5) =)G) O)\) a)k) q) ~) ) ) ) ) )))1)) ** 2*=*PC*****#*++!+ 1+)?++i++#++++y---&-----.$#.4H.}....&./8/&J/-q/#/// / /*/*%0P0V0)q0 0 00$0000!1710K1 |111$1H1-A2.o2+2222383V30_333 333&3)3c4_4d4F5Z5t5555"556 6(6-6 A6 K6"W6z6D666647 67D7#M7Bq7l7s!8=8#888D9Z98c9999 999797&:J^:::B:;;A";4d;A;$;<#<&3<*Z<'<< <<< <!<=1= B=N=_=q=======!=>'> ?>I>Q>*j>>>>*>>$?#8?\?d?k??.?(??@ @&*@Q@ f@r@ @ @@@@!@@ AA2%AXA$kA ACAAA B-B6JB#BBBBBBCC6C/ECuC*CCCCC C D!D:D$JD oD7D1DBD"=E`E#sEEEJEG HFHeHlHuH HHHHHHHH H H II ,I6IMIUI9\II II IImILJ fJ,JJ#JJJ JK>K-QK&K*K KK`P  6 /Q;pg7%5aC+FY8<{A~RI=vkBUoqW]n0!zc Sdf>x&iLl -HK3u@Z#._($Gt[4MX?2,O"^e)rThD Jmbj}'yVw1:|\N9*sE Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Copyright Raimondo Giammanco 2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gnome-2/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug trace to stdout -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editorwindow1xterm -e vi %sProject-Id-Version: gjots2 2.3.0 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-12-24 15:29+1000 PO-Revision-Date: 2006-02-27 19:57+0100 Last-Translator: Raimondo Giammanco Language-Team: Italian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Poedit-Language: Italian X-Poedit-Country: ITALY X-Poedit-SourceCharset: utf-8 Opzioni Dominio di Stampa Comando di Stampa Formattazione del processo di stampa Opzioni di riordino Ordina i Sottolivelli%F%d appunti unificati%d sostituzioni%d appunto(i) dell'elenco copiato(i)%d appunto(i) dell'elenco copiato(i) e cancellato(i)%s è bloccato dal pid %d%s è illeggibile%s non è riscrivibile%s ha bisogno di pygtk-%s.%s ha bisogno di python%s o superiore.%s versione %s%s: Attenzione: il manuale di gjots2 viene aperto da %s %s: Attenzione: moduli eseguiti da %s %s: non corrette informazioni geometriche:%s %s: bloccato dal processo numero %d%s: nessun permesso: Errore Memorizzare?: versione Aggiunge una data/ora (secondo le opzioni)Addiunge una data/ora (secondo le opzioni)TuttiTutto il testo selezionatoTutti gli appunti dell'elenco selezionatiAlfabeticoCrescenteNumerazione AutomaticaFormato della numerazione automaticaIndietroIndietroParola d'ordine errataEspressione regolare non correttaTitoli in GrassettoNon è possibile cancellare l'appunto principaleNon è possibile procedere oltreNon è possibile procedereNon è possibile procedereNon è possibile bloccare l'archivioNon è possibile bloccare larchivio %s: è già bloccato dal processo %dNon è possibile creare un file di blocco in Non è possibile unire appunti con particolariNon è possibile unire l'appunto principaleNon è possibile aprire "Non è possibile leggere Non è possibile eseguire '%s'Non è possibile scrivere Non è possibile scrivere su CancellaScegle un tipo di carattere per la sezione testoPulisciChiudeConfermare: CopiaCopia appunti selezionatiDiritti di Autore Bob Hepple 2002-2006Diritti di Autore Raimondo Giammanco 2006Non è stato possibile trovare il programma ccrypt - per favore installarlo e provare di nuovo dopoNon è stato possibile trovare il programma gpg- per favore installarlo e provare di nuovo dopoNon è stato possibile trovare il programma openssl - per favore installarlo e provare di nuovo dopoCourier 10 Pitch 10Crea un nuovo particolareCrea un nuovo particolareCrea un nuovo documento gjotsCrea un nuovo appuntoCrea un nuovo appuntoTipo di carattere di testo attualeTagliaTaglia appunti selezionatiR_etrocediDataFormato della data:RetrocediDecrescenteNon ignorare maiuscole e minuscoleSottoModifica l'appunto attuale in un programma esterno di videoscritturaImmettere parola d'ordine per Chiudi gjots ed EsciEsportaEsporta gli appunti selezionati in un archivio gjotsEsporta a ...Vid.Est.Programma di videoscrittura esternoImpaginatore esterno "%s" non è installato - non posso impaginareProgramma Esterno per modificare un appunto (%s viene sostituito dal nome del file da modificare temporaneo)Programma Esterno to cui incanalare il testo per impaginazione (%d viene sostituito dalla attualelunghezza di riga)Produci una nuova pagina prima di ogni nuovo appunto di gjotsL'archivio non puo' essere bloccatoRicercaRicerca & SostituisceLa frase da ricercare è una espressione normale (see 'man 7 regex')Ricerca:Formato per la funzione di stampa data (see strftime(3))Impagina il paragrafo attualeAvantiTrovatoGjots2 JotterGlobaleNascondi TuttoNascondi tutti gli appunti tranne quelli in primo pianoNascondi tutti gli appunti tranne quelli in primo pianoQuanti sottolivelli devono essere ordinati (0 per nessuno; -1 per 'tutti')ImportaImporta da ...Importa degli appunti a partire da un archivio gjots pre-esistenteErrore InternoErrore interno!Apri un programma di videoscrittura esterno per l'appunto attualeLunghezza di riga per l'incolonnamento dei paragrafiCrea un nuovo appunto a partire dal testo attualmente selezionatoFai coincidere maiuscole e minuscoleUnisci appuntiUnisci gli appunti attuali al primoUnisce assieme gli appunti selezionatiSposta l'appunto selezionato più in bassoSposta l'appunto selezionato più sopraNuovo particolareNuovo AppuntoNuovo _ParticolareNuovo archivioNuovo...>>>Nessun cambiamento da memorizzareNessun particolare!Nessun genitore!Non trovatoNon memorizzato.Nessuna selezioneNessuna selezione!Nulla da unireNiente da incollareNiente da memorizzareNiente da riordinare!OrdinaleApriApri un documento gjots esistenteAprire archivio ...Apre la finestra delle opzioni di gjotsP_romuoviAppuntoProduci una nuova paginaLa parola d'ordine non è stata confermataParola d'ordine: IncollaIncolla appunti selezionatiApre la finestra di ricerca e sostituzioneApre la finestra di riordinoMostra la finestra di riordino testoApri la finestra di riordino elencoOpzioniStampaStampa l'appunto attualeStampa l'intero documento gjotsStampa i nomi degli appunti gjots in grassettoStampa le pagine od il testo selezionatiStampa questo documentoPromuoviSola LetturaLeggi il manuale online (usando gjots)Espressione RegolareSostituisceSostituisce TuttiSostituisce:Sostituire?R_iordina ElencoSalvaMemorizza con nome ...Memorizzare il documento attuale?Salva documento gjotsMemorizzato.Ricerca all'indietroRicerda l'intero documento non solo questo appuntoSeleziona ArchivioSeleziona tipo di carattere di testoSelezioneL'appunto selezionato diventa un particolare del precedente appuntoIl particolare selezionato diventa fratello dell'attuale genitoreMostra TuttoMostra il testo delle _IconeMostra tutti gli appunti al di sotto di quello attualeMostra il testo relativo alle iconeRiordinaRiordina TestoRiordina ElencoOrdina in senso AlfabeticoOrdina in senso crescenteOrdina in senso decresenteOrdina in senso ordinaleDividi appuntoDividi il testo selezionato in un nuovo appuntoBarra di _StatoMemorizza ed organizza i tuoi vari appuntiFrase da sostituireFrase da ricercareTe_stoAltezza della linea di testo:Testo copiatoCopia ed elimina testoImpaginatore del testo: Testo incollatoQuell'archivio è già stato aperto!Barra degli Strumenti _Superiore(De)Seleziona la modalità di sola lettura se possibile(De)Seleziona la barra degli strumenti principale(De)Seleziona la Barra degli Strumenti per la gestione dell'elencoBarra degli Strumenti dell'_elencoL'elenco è vuoto!Incollato(i) appunto(i) dell'elencoProva di nuovoSopraUso: gjots [OPZIONI] [NOME ARCHIVIO] A gnome-2/X11 jotter OPZIONI: -h, --help: Questo Aiuto -d, --debug: Fornisci informazioni di errore alla porta di errore standard (stdout) -g 123x456, --geometry=123x456: Dimensioni iniziali a schermo della finestra (X x Y) -p, --purge-password Non memorizzare la parola d'ordine -r, --readonly: Nessuna modifica (o presa di possesso) -V, --version: Stampa la versione del programma ed esci FILENAME: gjots data filename (default is $HOME/.gjotsfile) Usare -h per avere un aiuto IncolonnaIncolonna il paragrafo attuale rispetto alla attuale lunghezza di riga_Basso_Esporta_Videoscrittura Esterna_Impagina_Nascondi Tutti_Importa_Unisci appunti_NuovoNuova _Appunto_Chiudi_Leggi Il Manuale_Sola-Lettura_Mostra Tutto_Riordina Testo_Dividi appunto_Data/Ora_Barre degli Strumenti_Elenco_Sopra_get_settings: Non posso trovare sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKi.e. lpr: i.e. 1 per 1.2.1, afmt -w %d gjotsgjots2: attenzione: la lista delle selezioni è vuota. Non eseguire l'operazione di cambio evento dell'elencogjots: %s esiste di già.gjots: Immettere parola d'ordinegjots: non è possibile bloccare l'archivio.gjots: opzionihttp://bhepple.freeshell.org/gjots2Nome1Nome2non attivatosovrascrivere %s?comando di stampa (puo' trattarsi di una espressione da shell)pygtk-2.2 è necessario per questo programma!testo modificato dal programma esternotesto non modificato dal programma esternoFinestra1xterm -e vi %sgjots2-2.4.1/po/it.po0000664000301100007650000006402012234162543014143 0ustar bhepplebhepple# Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # msgid "" msgstr "" "Project-Id-Version: gjots2 2.3.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: 2006-02-27 19:57+0100\n" "Last-Translator: Raimondo Giammanco \n" "Language-Team: Italian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Poedit-Language: Italian\n" "X-Poedit-Country: ITALY\n" "X-Poedit-SourceCharset: utf-8\n" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Memorizza ed organizza i tuoi vari appunti" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Gjots2 Jotter" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_Nuovo" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Importa degli appunti a partire da un archivio gjots pre-esistente" #: ../gjots.glade2:99 msgid "_Import" msgstr "_Importa" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Esporta gli appunti selezionati in un archivio gjots" #: ../gjots.glade2:121 msgid "_Export" msgstr "_Esporta" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "(De)Seleziona la modalità di sola lettura se possibile" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Sola-Lettura" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Chiudi gjots ed Esci" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Chiudi" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Barre degli Strumenti" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "(De)Seleziona la barra degli strumenti principale" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "Barra degli Strumenti _Superiore" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "(De)Seleziona la Barra degli Strumenti per la gestione dell'elenco" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "Barra degli Strumenti dell'_elenco" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Mostra il testo relativo alle icone" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "Mostra il testo delle _Icone" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Barra di _Stato" #: ../gjots.glade2:357 #: ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Mostra tutti gli appunti al di sotto di quello attuale" #: ../gjots.glade2:358 msgid "_Show All" msgstr "_Mostra Tutto" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Nascondi tutti gli appunti tranne quelli in primo piano" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "_Nascondi Tutti" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Elenco" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Crea un nuovo appunto" #: ../gjots.glade2:415 msgid "_New Page" msgstr "Nuova _Appunto" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Crea un nuovo particolare" #: ../gjots.glade2:437 msgid "New _Child" msgstr "Nuovo _Particolare" #: ../gjots.glade2:464 #: ../gjots.glade2:1525 msgid "Move selection up" msgstr "Sposta l'appunto selezionato più sopra" #: ../gjots.glade2:465 msgid "_Up" msgstr "_Sopra" #: ../gjots.glade2:486 #: ../gjots.glade2:1543 msgid "Move selection down" msgstr "Sposta l'appunto selezionato più in basso" #: ../gjots.glade2:487ù msgid "_Down" msgstr "_Basso" #: ../gjots.glade2:508 #: ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "Il particolare selezionato diventa fratello dell'attuale genitore" #: ../gjots.glade2:509 msgid "P_romote" msgstr "P_romuovi" #: ../gjots.glade2:530 #: ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "L'appunto selezionato diventa un particolare del precedente appunto" #: ../gjots.glade2:531 msgid "D_emote" msgstr "R_etrocedi" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Crea un nuovo appunto a partire dal testo attualmente selezionato" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "_Dividi appunto" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Unisci gli appunti attuali al primo" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "_Unisci appunti" #: ../gjots.glade2:608 #: ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "Apri la finestra di riordino elenco" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "R_iordina Elenco" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Te_sto" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Impagina il paragrafo attuale" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Impagina" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Aggiunge una data/ora (secondo le opzioni)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Data/Ora" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Modifica l'appunto attuale in un programma esterno di videoscrittura" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_Videoscrittura Esterna" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Mostra la finestra di riordino testo" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Riordina Testo" #: ../gjots.glade2:822 #: ../gjots.glade2:1165 #: ../gjots.glade2:1468 msgid "New Page" msgstr "Nuovo Appunto" #: ../gjots.glade2:842 #: ../gjots.glade2:1486 msgid "New Child" msgstr "Nuovo particolare" #: ../gjots.glade2:868 #: ../gjots.glade2:1526 msgid "Up" msgstr "Sopra" #: ../gjots.glade2:888 #: ../gjots.glade2:1544 msgid "Down" msgstr "Sotto" #: ../gjots.glade2:908 msgid "Promote" msgstr "Promuovi" #: ../gjots.glade2:928 msgid "Demote" msgstr "Retrocedi" #: ../gjots.glade2:954 #: ../gjots.glade2:1638 msgid "Merge Items" msgstr "Unisci appunti" #: ../gjots.glade2:980 #: ../gjots.glade2:1696 msgid "Show All" msgstr "Mostra Tutto" #: ../gjots.glade2:1000 #: ../gjots.glade2:1678 msgid "Hide All" msgstr "Nascondi Tutto" #: ../gjots.glade2:1026 #: ../gjots.glade2:1714 #: ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Riordina Elenco" #: ../gjots.glade2:1052 msgid "Import" msgstr "Importa" #: ../gjots.glade2:1072 msgid "Export" msgstr "Esporta" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Leggi il manuale online (usando gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "_Leggi Il Manuale" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Crea un nuovo documento gjots" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Apri un documento gjots esistente" #: ../gjots.glade2:1183 msgid "Open" msgstr "Apri" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Salva documento gjots" #: ../gjots.glade2:1201 msgid "Save" msgstr "Salva" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Stampa questo documento" #: ../gjots.glade2:1219 #: ../gjots.glade2:3031 msgid "Print" msgstr "Stampa" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Taglia appunti selezionati" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Taglia" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Copia appunti selezionati" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Copia" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Incolla appunti selezionati" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Incolla" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Incolonna il paragrafo attuale rispetto alla attuale lunghezza di riga" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Incolonna" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Apri un programma di videoscrittura esterno per l'appunto attuale" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Vid.Est." #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Addiunge una data/ora (secondo le opzioni)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Data" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Apre la finestra di ricerca e sostituzione" #: ../gjots.glade2:1389 #: ../gjots.glade2:2739 msgid "Find" msgstr "Ricerca" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Apre la finestra di riordino" #: ../gjots.glade2:1407 #: ../gjots.glade2:3493 msgid "Sort" msgstr "Riordina" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Apre la finestra delle opzioni di gjots" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Opzioni" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Crea un nuovo appunto" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Crea un nuovo particolare" #: ../gjots.glade2:1562 msgid "Back" msgstr "Indietro" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Avanti" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Dividi il testo selezionato in un nuovo appunto" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Dividi appunto" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Unisce assieme gli appunti selezionati" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Nascondi tutti gli appunti tranne quelli in primo piano" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Diritti di Autore Bob Hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "Copyright Raimondo Giammanco 2006" msgstr "Diritti di Autore Raimondo Giammanco 2006" #: ../gjots.glade2:1928 msgid "window1" msgstr "Finestra1" #: ../gjots.glade2:1949 #: ../gjots.glade2:2002 #: ../gjots.glade2:2080 msgid "label1" msgstr "Nome1" #: ../gjots.glade2:1979 msgid "label2" msgstr "Nome2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Prova di nuovo" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Sola Lettura" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: opzioni" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Scegle un tipo di carattere per la sezione testo" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Formato della data:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Formato per la funzione di stampa data (see strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%F" #: ../gjots.glade2:2300 msgid "External program to edit a page (%s is replaced by the name of the temporary edit file)" msgstr "Programma Esterno per modificare un appunto (%s viene sostituito dal nome del file da modificare temporaneo)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "Programma di videoscrittura esterno" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Altezza della linea di testo:" #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Lunghezza di riga per l'incolonnamento dei paragrafi" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Impaginatore del testo: " #: ../gjots.glade2:2418 msgid "External program to pipe text for formatting (%d is replaced by the current line width)" msgstr "Programma Esterno to cui incanalare il testo per impaginazione (%d viene sostituito dalla attualelunghezza di riga)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Tipo di carattere di testo attuale" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Seleziona tipo di carattere di testo" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Ricerca & Sostituisce" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Ricerca:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Sostituisce:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "Frase da ricercare" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "Frase da sostituire" #: ../gjots.glade2:2759 msgid "Close" msgstr "Chiude" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Sostituisce" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Sostituisce Tutti" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Cancella" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Pulisci" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Non ignorare maiuscole e minuscole" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Fai coincidere maiuscole e minuscole" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "La frase da ricercare è una espressione normale (see 'man 7 regex')" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Espressione Regolare" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Ricerca all'indietro" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "Indietro" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Ricerda l'intero documento non solo questo appunto" #: ../gjots.glade2:2980 msgid "Global" msgstr "Globale" #: ../gjots.glade2:3003 msgid " Options " msgstr " Opzioni" #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "i.e. lpr: " #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "comando di stampa (puo' trattarsi di una espressione da shell)" #: ../gjots.glade2:3128 msgid " Print command " msgstr " Comando di Stampa" #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Stampa l'appunto attuale" #: ../gjots.glade2:3181 msgid "Page" msgstr "Appunto" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Stampa le pagine od il testo selezionati" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Selezione" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Stampa l'intero documento gjots" #: ../gjots.glade2:3222 msgid "All" msgstr "Tutti" #: ../gjots.glade2:3245 msgid " Print Range " msgstr " Dominio di Stampa" #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Produci una nuova pagina prima di ogni nuovo appunto di gjots" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Produci una nuova pagina" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Stampa i nomi degli appunti gjots in grassetto" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Titoli in Grassetto" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Numerazione Automatica" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Formato della numerazione automatica" #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "i.e. 1 per 1.2.1, a" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr " Formattazione del processo di stampa " #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Ordina in senso crescente" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "Crescente" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Ordina in senso decresente" #: ../gjots.glade2:3569 msgid "Descending" msgstr "Decrescente" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Ordina in senso Alfabetico" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Alfabetico" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Ordina in senso ordinale" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Ordinale" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr " Opzioni di riordino" #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Quanti sottolivelli devono essere ordinati (0 per nessuno; -1 per 'tutti')" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr " Ordina i Sottolivelli" #: ../gjots.glade2:3788 msgid "Select File" msgstr "Seleziona Archivio" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Uso: gjots [OPZIONI] [NOME ARCHIVIO]\n" "A gnome-2/X11 jotter\n" "\n" "OPZIONI:\n" "-h, --help: Questo Aiuto\n" "-d, --debug: Fornisci informazioni di errore alla porta di errore standard (stdout)\n" "-g 123x456, --geometry=123x456: Dimensioni iniziali a schermo della finestra (X x Y)\n" "-p, --purge-password\t\t\t\tNon memorizzare la parola d'ordine\n" "-r, --readonly: Nessuna modifica (o presa di possesso)\n" "-V, --version: Stampa la versione del programma ed esci\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s ha bisogno di python%s o superiore." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s ha bisogno di pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Attenzione: moduli eseguiti da %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Usare -h per avere un aiuto\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s versione %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Impaginatore esterno \"%s\" non è installato - non posso impaginare" #: ../lib/gui.py:326 msgid "not initialised" msgstr "non attivato" #: ../lib/gui.py:543 #: ../lib/gui.py:584 #: ../lib/gui.py:588 #: ../lib/gui.py:630 #: ../lib/gui.py:634 #: ../lib/gui.py:690 #: ../lib/gui.py:695 #: ../lib/gui.py:904 #: ../lib/gui.py:913 #: ../lib/gui.py:995 #: ../lib/gui.py:1004 #: ../lib/gui.py:1037 #: ../lib/gui.py:1042 #: ../lib/gui.py:1068 #: ../lib/gui.py:1349 #: ../lib/gui.py:1837 #: ../lib/gui.py:1856 #: ../lib/gui.py:1885 #: ../lib/gui.py:1908 #: ../lib/file.py:439 #: ../lib/file.py:444 #: ../lib/sortDialog.py:247 #: ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 #: ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Nessuna selezione" #: ../lib/gui.py:547 #: ../lib/gui.py:593 #: ../lib/gui.py:638 #: ../lib/gui.py:700 #: ../lib/gui.py:799 #: ../lib/gui.py:1073 #: ../lib/gui.py:1841 #: ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Nessun genitore!" #: ../lib/gui.py:551 #: ../lib/gui.py:604 msgid "No child!" msgstr "Nessun particolare!" #: ../lib/gui.py:554 #: ../lib/gui.py:598 msgid "Can't go any further" msgstr "Non è possibile procedere oltre" #: ../lib/gui.py:561 #: ../lib/gui.py:718 msgid "Internal error!" msgstr "Errore interno!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Non è possibile procedere" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Copia ed elimina testo" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Testo copiato" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Testo incollato" #: ../lib/gui.py:870 msgid "All text selected" msgstr "Tutto il testo selezionato" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "Tutti gli appunti dell'elenco selezionati" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Nessuna selezione!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Non è possibile unire l'appunto principale" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Nulla da unire" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Non è possibile unire appunti con particolari" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d appunti unificati" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Non è possibile cancellare l'appunto principale" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d appunto(i) dell'elenco copiato(i) e cancellato(i)" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d appunto(i) dell'elenco copiato(i)" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Niente da incollare" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Incollato(i) appunto(i) dell'elenco" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Non è possibile scrivere " #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Non è possibile eseguire '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Non è possibile leggere " #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "testo modificato dal programma esterno" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "testo non modificato dal programma esterno" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Errore" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Non è possibile bloccare larchivio %s: è già bloccato dal processo %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr " Memorizzare?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Memorizzare il documento attuale?" #: ../lib/gui.py:1285 msgid "New file" msgstr "Nuovo archivio" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Aprire archivio ..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "Nessun cambiamento da memorizzare" #: ../lib/gui.py:1314 #: ../lib/gui.py:1334 msgid "Saved." msgstr "Memorizzato." #: ../lib/gui.py:1316 #: ../lib/gui.py:1336 #: ../lib/file.py:429 msgid "Not saved." msgstr "Non memorizzato." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Niente da memorizzare" #: ../lib/gui.py:1332 #: ../lib/file.py:606 msgid "Save as ..." msgstr "Memorizza con nome ..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Importa da ..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Esporta a ..." #: ../lib/gui.py:1613 #: ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Attenzione: il manuale di gjots2 viene aperto da %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 è necessario per questo programma!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: attenzione: la lista delle selezioni è vuota. Non eseguire l'operazione di cambio\n" "evento dell'elenco" #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Non è possibile procedere" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "L'elenco è vuoto!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: non corrette informazioni geometriche:%s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "Nuovo...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": versione " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Espressione regolare non corretta" #: ../lib/find.py:198 #: ../lib/find.py:251 msgid "Not found" msgstr "Non trovato" #: ../lib/find.py:200 msgid "Found" msgstr "Trovato" #: ../lib/find.py:254 msgid "Replace?" msgstr "Sostituire?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d sostituzioni" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Immettere parola d'ordine per " #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Immettere parola d'ordine" #: ../lib/file.py:254 msgid "Password: " msgstr "Parola d'ordine: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Confermare: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "La parola d'ordine non è stata confermata" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Non è stato possibile trovare il programma ccrypt - per favore installarlo e provare di nuovo dopo" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Non è stato possibile trovare il programma gpg- per favore installarlo e provare di nuovo dopo" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Non è stato possibile trovare il programma openssl - per favore installarlo e provare di nuovo dopo" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Non è possibile aprire \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Parola d'ordine errata" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "L'archivio non puo' essere bloccato" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Non è possibile scrivere su " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Non è possibile bloccare l'archivio" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s è illeggibile" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: nessun permesso" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: bloccato dal processo numero %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: non è possibile bloccare l'archivio." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "Quell'archivio è già stato aperto!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s è bloccato dal pid %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Non è possibile creare un file di blocco in " #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "%s non è riscrivibile" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s esiste di già." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "sovrascrivere %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Non posso trovare sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Errore Interno" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Niente da riordinare!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Riordina Testo" gjots2-2.4.1/po/ru/0000775000301100007650000000000012234163052013607 5ustar bhepplebhepplegjots2-2.4.1/po/ru/LC_MESSAGES/0000755000301100007650000000000012234163053015373 5ustar bhepplebhepplegjots2-2.4.1/po/ru/LC_MESSAGES/gjots2.mo0000664000301100007650000005521612234163053017153 0ustar bhepplebheppleD]l   .?BRcx + %7#] '!. F Q [g|   0O$i     !+0DCc@D-ATh  '< P[%b 7WW>(7!3'[x '#5&-=\k-{"*   & 5 S g y       !!,!J0>:{> >>>>?E?T^?[? @#@@@@!@"@p@a7ADA!AB[BCqBABDB{EE2E FF,F(LFuFF6F>F2 G?>G2~GGG0G" HI-HAwH.HH HHI$cIIIII(IIJ9/J)iJJJZJK2KJKX_KSK L)$LUNL5LL!LM=*M2hM,M9MNIN [NF|N N N OO*OJO"dOO&OOPOX8PVP-P*Q0AQ!rQ QQNGTTAT TT U"U>USU&oUUU U$U!UV"/VRV qV&{V V VGV-W2WAW ]WhWnW&X"?X@bXX#XXX%XYS2Y5Y=YBY9=ZwZZ_O  6 /P;of7%5`B+~EX8<z@}QH=ujATnpV\m0!yb Rce>w&hKk -GJ3t?Y#.^($FsZ4LW2,N"]d)qSgC Ilai|'xUv1:{[M9*rD Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gnome-2/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug trace to stdout -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditswindow1xterm -e vi %sProject-Id-Version: gjots 2.3.2 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-12-24 15:29+1000 PO-Revision-Date: 2006-01-22 11:47+0300 Last-Translator: Sergey Bezdenezhnyh Language-Team: Russian MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Параметры Область печати Команда печати Форматирование при печати Параметры сортировки Подуровни сортировки %F%d элементов объединено%d замен(ы)%d элементов скопировано%d элементов вырезано%s заблокирован процессом %d%s нельзя прочитать%s только для чтения%s требует наличия pygtk-%s.%s требует python%s или выше.%s версия %s%s: Внимание: gjots2 запущен вручную из %s %s: Внимание: модули запущены из %s %s: ошибочная спецификация положения: %s %s: заблокирован процессом %d%s: нет разрешения: Ошибка: Сохранить?: версия Добавить время/дату (см. параметры)Добавить время/дату (см. параметры)ВсеВесь текст выбранВсе элементы дерева выбраныАлфавитныйПо возрастаниюАвтонумерацияФормат нумерации: НазадНазадПлохой парольОшибочное выражениеЖирные заголовкиНе могу удалить корневой элементДвижение дальше невозможноНе могу дальше идтиНе могу двигаться дальше!Невозможно заблокировать файл.Невозможно заблокировать файл %s: он занят процессом %dНевозможно создать файл блокировки в Невозможно объединить элементы с подэлементамиНельзя объединить корневой элементНевозможно открыть "Не могу прочитатьНе получается запустить '%s'Не могу записатьНе могу записать в ОтменитьВыберите шрифт панели текстаОтчиститьЗакрытьПодтвердите: КопироватьКопировать выделенные элементыCopyright Bob Hepple 2002-2006Не могу найти программу ccrypt - установите ее и попробуйте сноваНе получается найти программу gpg - пожалуйста установите ее и попробуйте сноваНе получается найти программу openssl - пожалуйста установите ее и попробуйте сноваCourier 10 Pitch 10Создать новый дочерний элементСоздать новый дочерний элементСоздать новый документ gjotsСоздать новый элементСоздать новую страницуШрифт выделенного текстаВырезатьВырезать выделенные элементыПо_низитьДатаФормат даты:ПонизитьПо убываниюНе игнорировать регистр буквВнизРедактировать выбранный элемент во внешнем редактореВведите пароль для Покинуть gjotsЭкспортЭкспортировать выбранный элемент в другой файл gjots Экспортировать в ...Внешн.ред.Внешний редакторВнешний обработчик "%s" не установлен - форматирование невозможноВнешняя программа для редактирования (%s заменяется именем редактируемого файла)Внешняя программа для обработки текста (%d заменяется на длину строки)Протягивать бумагу перед каждым новым элементом gjotsФайл не может быть заблокированНайтиНайти и заменитьИскать только в полных строках (см. 'man 7 regex')Найти:Формат функции вывода времени (см strftime(3))Форматировать текущий параграфВпередНайденоБлокнот Gjots2Искать вездеСпрятать всеСпрятать все элементы, кроме верхнегоСкрыть все элементы, за исключением корневогоСколько подуровней сортировать (0 - нет; -1 для всех)ИмпортИмпортировать из ...Импортировать элемент из файла gjots Внутренняя ошибкаВнутренняя ошибка!Запустить внешний редактор для редактирования этой страницыДлина строки, используемая при переносе в параграфахСоздать новый элемент из выделенногоУчитывать регистрОбъединитьОбъединить выбранные элементы с первым выбраннымСоединить выбранные элементы вместеПереместить выбранный элемент внизПереместить выбранный элемент вверхНовый подэлементНовая страницаНовый _подэлементСоздать файлНовая страница...>>>Не было изменений, которые можно сохранитьНет дочернего элемента!Нет родителя!Не найденоНе сохранено.Нечего выбиратьНичего не выбрано!Нечего объединятьНечего вставлятьНечего сохранятьНечего сортировать!ЧисловойОткрытьОткрыть существующий документ gjotsОткрыть файл ...Открыть окно параметров gjotsПо_выситьСтраницаПротяжка страницПароль не подтвержденПароль: ВставитьВставить выделенные элементыПоказать диалог "Найти и заменить"Показать диалог сортировкиПоказать диалог сортировки текстаПоказать диалог сортировкиПараметрыНапечататьПечатать текущую страницуПечатать весь файлПечатать заголовки элементов gjots жирнымПечатать выбранные страницы текстаНапечатать этот документПовыситьТолько для чтенияЧитать инструкцию в сети (используя gjots)Только полные словаЗаменитьЗаменить всеЗаменить:Заменить?Отсор_тировать деревоСохранитьСохранить как ...Сохранить сделанные изменения?Сохранить документ gjotsСохранено.Искать назадИскать во всем файле, а не только на этой страницеВыбрать файлВыбор шрифтаВыделенноеСделать выбранный элемент дочерним предыдущемуПоднять выбранный элемент до уровня родителяПоказать всеПоказать текст _кнопокПоказать все элементы под выбранным элементомПоказывать текст под иконкойСортироватьСортировать текстСортироватьСортировать в алфавитном порядкеСортировать по возрастаниюСортировать по убываниюСортировать в числовом порядкеРазбитьВынести выбранный текст в новый элементСтрока _состоянияСохраняйте и организуйте Ваши заметкиСтрока для заменыСтрока для поискаТе_кстДлина строки:Текст скопированТекст вырезанОбработчик текста:Текст вставленЭтот файл уже открыт!Главная _панельЕсли возможно, включить флаг "только чтение"Изменить видимость главной панели инструментовИзменить видимость панели инструментов дереваПанель _дерева элементовВ дереве нет элементов!Элементы дерева вставленыПопробовать сноваВверхИспользование: gjots [ОПЦИИ] [ФАЙЛ] Блокнот для GNOME2/X11 ОПЦИИ: -h, --help: эта справка -d, --debug: отладочная информация в stdout -g 123x456, --geometry=123x456: начальное положение (X и Y) -p, --purge-password не запоминать пароль -r, --readonly: без редактирования(блокировка)) -V, --version: показать информацию о версии и выйти ФАЙЛ: файл данных gjots (по умолчанию $HOME/.gjotsfile) Для получения справки используйте опцию -h ПереносВыровнять параграф по длине строки Вн_из_Экспорт_Внешний редактор_ФорматироватьСкр_ыть все_Импортировать_Объединить элементы_Создать_Новая страница_Выход_Читать руководство_Только для чтения_Показать все_Сортировать текст_Разбить элемент_Дата_Панели инструментов_ДеревоВв_ерх_get_settings: Невозможно найти sortAscendingRadioButtonабвгдежзикл АБВГДЕЖЗИКЛНапр. lpr:напр. от 1 до 1.2.1fmt -w %d gjotsgjots2: внимание: выбранный список пуст. Произошел пропуск события изменения состояния дерева.gjots: %s уже существует.gjots: Введите парольgjots: невозможно заблокировать файл.gjots: параметрыhttp://bhepple.freeshell.org/gjots2label1label2не инициализированоперезаписать %s?команда печати (может быть командой оболочки)Этому приложению нужен pygtk-2.2!текст изменен внешним редакторомтекст не изменен внешним редакторомСергей Безденежных window1xterm -e vi %sgjots2-2.4.1/po/ru.po0000664000301100007650000007333412234162543014165 0ustar bhepplebhepple# Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # # Sergey Bezdenezhnyh , 2006 msgid "" msgstr "" "Project-Id-Version: gjots 2.3.2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: 2006-01-22 11:47+0300\n" "Last-Translator: Sergey Bezdenezhnyh \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Сохраняйте и организуйте Ваши заметки" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Блокнот Gjots2" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_Создать" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Импортировать элемент из файла gjots " #: ../gjots.glade2:99 msgid "_Import" msgstr "_Импортировать" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Экспортировать выбранный элемент в другой файл gjots " #: ../gjots.glade2:121 msgid "_Export" msgstr "_Экспорт" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "Если возможно, включить флаг \"только чтение\"" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Только для чтения" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Покинуть gjots" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Выход" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Панели инструментов" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "Изменить видимость главной панели инструментов" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "Главная _панель" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "Изменить видимость панели инструментов дерева" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "Панель _дерева элементов" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Показывать текст под иконкой" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "Показать текст _кнопок" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Строка _состояния" #: ../gjots.glade2:357 #: ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Показать все элементы под выбранным элементом" #: ../gjots.glade2:358 msgid "_Show All" msgstr "_Показать все" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Скрыть все элементы, за исключением корневого" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "Скр_ыть все" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Дерево" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Создать новую страницу" #: ../gjots.glade2:415 msgid "_New Page" msgstr "_Новая страница" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Создать новый дочерний элемент" #: ../gjots.glade2:437 msgid "New _Child" msgstr "Новый _подэлемент" #: ../gjots.glade2:464 #: ../gjots.glade2:1525 msgid "Move selection up" msgstr "Переместить выбранный элемент вверх" #: ../gjots.glade2:465 msgid "_Up" msgstr "Вв_ерх" #: ../gjots.glade2:486 #: ../gjots.glade2:1543 msgid "Move selection down" msgstr "Переместить выбранный элемент вниз" #: ../gjots.glade2:487 msgid "_Down" msgstr "Вн_из" #: ../gjots.glade2:508 #: ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "Поднять выбранный элемент до уровня родителя" #: ../gjots.glade2:509 msgid "P_romote" msgstr "По_высить" #: ../gjots.glade2:530 #: ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "Сделать выбранный элемент дочерним предыдущему" #: ../gjots.glade2:531 msgid "D_emote" msgstr "По_низить" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Создать новый элемент из выделенного" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "_Разбить элемент" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Объединить выбранные элементы с первым выбранным" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "_Объединить элементы" #: ../gjots.glade2:608 #: ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "Показать диалог сортировки" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "Отсор_тировать дерево" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Те_кст" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Форматировать текущий параграф" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Форматировать" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Добавить время/дату (см. параметры)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Дата" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Редактировать выбранный элемент во внешнем редакторе" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_Внешний редактор" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Показать диалог сортировки текста" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Сортировать текст" #: ../gjots.glade2:822 #: ../gjots.glade2:1165 #: ../gjots.glade2:1468 msgid "New Page" msgstr "Новая страница" #: ../gjots.glade2:842 #: ../gjots.glade2:1486 msgid "New Child" msgstr "Новый подэлемент" #: ../gjots.glade2:868 #: ../gjots.glade2:1526 msgid "Up" msgstr "Вверх" #: ../gjots.glade2:888 #: ../gjots.glade2:1544 msgid "Down" msgstr "Вниз" #: ../gjots.glade2:908 msgid "Promote" msgstr "Повысить" #: ../gjots.glade2:928 msgid "Demote" msgstr "Понизить" #: ../gjots.glade2:954 #: ../gjots.glade2:1638 msgid "Merge Items" msgstr "Объединить" #: ../gjots.glade2:980 #: ../gjots.glade2:1696 msgid "Show All" msgstr "Показать все" #: ../gjots.glade2:1000 #: ../gjots.glade2:1678 msgid "Hide All" msgstr "Спрятать все" #: ../gjots.glade2:1026 #: ../gjots.glade2:1714 #: ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Сортировать" #: ../gjots.glade2:1052 msgid "Import" msgstr "Импорт" #: ../gjots.glade2:1072 msgid "Export" msgstr "Экспорт" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Читать инструкцию в сети (используя gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "_Читать руководство" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Создать новый документ gjots" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Открыть существующий документ gjots" #: ../gjots.glade2:1183 msgid "Open" msgstr "Открыть" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Сохранить документ gjots" #: ../gjots.glade2:1201 msgid "Save" msgstr "Сохранить" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Напечатать этот документ" #: ../gjots.glade2:1219 #: ../gjots.glade2:3031 msgid "Print" msgstr "Напечатать" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Вырезать выделенные элементы" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Вырезать" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Копировать выделенные элементы" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Копировать" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Вставить выделенные элементы" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Вставить" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Выровнять параграф по длине строки " #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Перенос" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Запустить внешний редактор для редактирования этой страницы" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Внешн.ред." #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Добавить время/дату (см. параметры)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Дата" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Показать диалог \"Найти и заменить\"" #: ../gjots.glade2:1389 #: ../gjots.glade2:2739 msgid "Find" msgstr "Найти" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Показать диалог сортировки" #: ../gjots.glade2:1407 #: ../gjots.glade2:3493 msgid "Sort" msgstr "Сортировать" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Открыть окно параметров gjots" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Параметры" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Создать новый элемент" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Создать новый дочерний элемент" #: ../gjots.glade2:1562 msgid "Back" msgstr "Назад" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Вперед" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Вынести выбранный текст в новый элемент" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Разбить" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Соединить выбранные элементы вместе" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Спрятать все элементы, кроме верхнего" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Copyright Bob Hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "Сергей Безденежных " #: ../gjots.glade2:1928 msgid "window1" msgstr "window1" #: ../gjots.glade2:1949 #: ../gjots.glade2:2002 #: ../gjots.glade2:2080 msgid "label1" msgstr "label1" #: ../gjots.glade2:1979 msgid "label2" msgstr "label2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Попробовать снова" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Только для чтения" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: параметры" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Выберите шрифт панели текста" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Формат даты:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Формат функции вывода времени (см strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%F" #: ../gjots.glade2:2300 msgid "External program to edit a page (%s is replaced by the name of the temporary edit file)" msgstr "Внешняя программа для редактирования (%s заменяется именем редактируемого файла)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "Внешний редактор" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Длина строки:" #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Длина строки, используемая при переносе в параграфах" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Обработчик текста:" #: ../gjots.glade2:2418 msgid "External program to pipe text for formatting (%d is replaced by the current line width)" msgstr "Внешняя программа для обработки текста (%d заменяется на длину строки)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Шрифт выделенного текста" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Выбор шрифта" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "абвгдежзикл АБВГДЕЖЗИКЛ" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Найти и заменить" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Найти:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Заменить:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "Строка для поиска" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "Строка для замены" #: ../gjots.glade2:2759 msgid "Close" msgstr "Закрыть" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Заменить" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Заменить все" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Отменить" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Отчистить" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Не игнорировать регистр букв" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Учитывать регистр" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Искать только в полных строках (см. 'man 7 regex')" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Только полные слова" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Искать назад" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "Назад" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Искать во всем файле, а не только на этой странице" #: ../gjots.glade2:2980 msgid "Global" msgstr "Искать везде" #: ../gjots.glade2:3003 msgid " Options " msgstr " Параметры " #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "Напр. lpr:" #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "команда печати (может быть командой оболочки)" #: ../gjots.glade2:3128 msgid " Print command " msgstr " Команда печати " #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Печатать текущую страницу" #: ../gjots.glade2:3181 msgid "Page" msgstr "Страница" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Печатать выбранные страницы текста" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Выделенное" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Печатать весь файл" #: ../gjots.glade2:3222 msgid "All" msgstr "Все" #: ../gjots.glade2:3245 msgid " Print Range " msgstr " Область печати " #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Протягивать бумагу перед каждым новым элементом gjots" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Протяжка страниц" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Печатать заголовки элементов gjots жирным" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Жирные заголовки" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Автонумерация" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Формат нумерации: " #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "напр. от 1 до 1.2.1" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr " Форматирование при печати " #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Сортировать по возрастанию" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "По возрастанию" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Сортировать по убыванию" #: ../gjots.glade2:3569 msgid "Descending" msgstr "По убыванию" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Сортировать в алфавитном порядке" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Алфавитный" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Сортировать в числовом порядке" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Числовой" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr " Параметры сортировки " #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Сколько подуровней сортировать (0 - нет; -1 для всех)" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr " Подуровни сортировки " #: ../gjots.glade2:3788 msgid "Select File" msgstr "Выбрать файл" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Использование: gjots [ОПЦИИ] [ФАЙЛ]\n" "Блокнот для GNOME2/X11\n" "\n" "ОПЦИИ:\n" "-h, --help: эта справка\n" "-d, --debug: отладочная информация в stdout\n" "-g 123x456, --geometry=123x456: начальное положение (X и Y)\n" "-p, --purge-password\t\t\t\t не запоминать пароль\n" "-r, --readonly: без редактирования(блокировка))\n" "-V, --version: показать информацию о версии и выйти\n" "\n" "ФАЙЛ:\n" "\tфайл данных gjots (по умолчанию $HOME/.gjotsfile)\n" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s требует python%s или выше." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s требует наличия pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Внимание: модули запущены из %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Для получения справки используйте опцию -h\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s версия %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Внешний обработчик \"%s\" не установлен - форматирование невозможно" #: ../lib/gui.py:326 msgid "not initialised" msgstr "не инициализировано" #: ../lib/gui.py:543 #: ../lib/gui.py:584 #: ../lib/gui.py:588 #: ../lib/gui.py:630 #: ../lib/gui.py:634 #: ../lib/gui.py:690 #: ../lib/gui.py:695 #: ../lib/gui.py:904 #: ../lib/gui.py:913 #: ../lib/gui.py:995 #: ../lib/gui.py:1004 #: ../lib/gui.py:1037 #: ../lib/gui.py:1042 #: ../lib/gui.py:1068 #: ../lib/gui.py:1349 #: ../lib/gui.py:1837 #: ../lib/gui.py:1856 #: ../lib/gui.py:1885 #: ../lib/gui.py:1908 #: ../lib/file.py:439 #: ../lib/file.py:444 #: ../lib/sortDialog.py:247 #: ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 #: ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Нечего выбирать" #: ../lib/gui.py:547 #: ../lib/gui.py:593 #: ../lib/gui.py:638 #: ../lib/gui.py:700 #: ../lib/gui.py:799 #: ../lib/gui.py:1073 #: ../lib/gui.py:1841 #: ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Нет родителя!" #: ../lib/gui.py:551 #: ../lib/gui.py:604 msgid "No child!" msgstr "Нет дочернего элемента!" #: ../lib/gui.py:554 #: ../lib/gui.py:598 msgid "Can't go any further" msgstr "Движение дальше невозможно" #: ../lib/gui.py:561 #: ../lib/gui.py:718 msgid "Internal error!" msgstr "Внутренняя ошибка!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Не могу двигаться дальше!" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Текст вырезан" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Текст скопирован" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Текст вставлен" #: ../lib/gui.py:870 msgid "All text selected" msgstr "Весь текст выбран" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "Все элементы дерева выбраны" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Ничего не выбрано!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Нельзя объединить корневой элемент" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Нечего объединять" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Невозможно объединить элементы с подэлементами" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d элементов объединено" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Не могу удалить корневой элемент" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d элементов вырезано" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d элементов скопировано" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Нечего вставлять" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Элементы дерева вставлены" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Не могу записать" #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Не получается запустить '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Не могу прочитать" #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "текст изменен внешним редактором" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "текст не изменен внешним редактором" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Ошибка" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Невозможно заблокировать файл %s: он занят процессом %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr ": Сохранить?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Сохранить сделанные изменения?" #: ../lib/gui.py:1285 msgid "New file" msgstr "Создать файл" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Открыть файл ..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "Не было изменений, которые можно сохранить" #: ../lib/gui.py:1314 #: ../lib/gui.py:1334 msgid "Saved." msgstr "Сохранено." #: ../lib/gui.py:1316 #: ../lib/gui.py:1336 #: ../lib/file.py:429 msgid "Not saved." msgstr "Не сохранено." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Нечего сохранять" #: ../lib/gui.py:1332 #: ../lib/file.py:606 msgid "Save as ..." msgstr "Сохранить как ..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Импортировать из ..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Экспортировать в ..." #: ../lib/gui.py:1613 #: ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Внимание: gjots2 запущен вручную из %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "Этому приложению нужен pygtk-2.2!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: внимание: выбранный список пуст. Произошел пропуск события \n" "изменения состояния дерева." #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Не могу дальше идти" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "В дереве нет элементов!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: ошибочная спецификация положения: %s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "Новая страница...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": версия " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Ошибочное выражение" #: ../lib/find.py:198 #: ../lib/find.py:251 msgid "Not found" msgstr "Не найдено" #: ../lib/find.py:200 msgid "Found" msgstr "Найдено" #: ../lib/find.py:254 msgid "Replace?" msgstr "Заменить?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d замен(ы)" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Введите пароль для " #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Введите пароль" #: ../lib/file.py:254 msgid "Password: " msgstr "Пароль: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Подтвердите: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Пароль не подтвержден" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Не могу найти программу ccrypt - установите ее и попробуйте снова" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Не получается найти программу gpg - пожалуйста установите ее и попробуйте снова" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Не получается найти программу openssl - пожалуйста установите ее и попробуйте снова" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Невозможно открыть \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Плохой пароль" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Файл не может быть заблокирован" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Не могу записать в " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Невозможно заблокировать файл." #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s нельзя прочитать" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: нет разрешения" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: заблокирован процессом %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: невозможно заблокировать файл." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "Этот файл уже открыт!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s заблокирован процессом %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Невозможно создать файл блокировки в " #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "%s только для чтения" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s уже существует." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "перезаписать %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Невозможно найти sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Внутренняя ошибка" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Нечего сортировать!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Сортировать текст" gjots2-2.4.1/po/nb/0000775000301100007650000000000012234163053013561 5ustar bhepplebhepplegjots2-2.4.1/po/nb/LC_MESSAGES/0000755000301100007650000000000012234163053015344 5ustar bhepplebhepplegjots2-2.4.1/po/nb/LC_MESSAGES/gjots2.mo0000664000301100007650000004301012234163053017111 0ustar bhepplebheppleD]l   .?BRcx + %7#] '!. F Q [g|   0O$i     !+0DCc@D-ATh  '< P[%b 7WW>(7!3'[x '#5&-=\k-{"*   & 5 S g y       !!,! > >+>=>[>y> >*> >.>>?'?.? E? S?a?s???.?!? @)@<@K@ b@n@r@sBB+BB BB B B BBC C!C *C7CHC QC _C lCyCCC6CC CC DDSDhDDDD#D D DEE+(E&TE){E5EEEE_O  6 /P;of7%5`B+~EX8<z@}QH=ujATnpV\m0!yb Rce>w&hKk -GJ3t?Y#.^($FsZ4LW2,N"]d)qSgC Ilai|'xUv1:{[M9*rD Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gnome-2/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug trace to stdout -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditswindow1xterm -e vi %sProject-Id-Version: gjots2 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-12-24 15:29+1000 PO-Revision-Date: 2006-01-16 15:35+0100 Last-Translator: Robert Emil Berge Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11 InnstillingerUtskriftsrekkeviddeUtskriftskommandoUtskriftsformatSorteringsparametreSorter undernivåer%F%d elementer slått sammen%d erstatninger%d tre-elementer kopiert%d tre-elementer klippet ut%s er låst av pid %d%s er ikke lesbar%s er ikke skrivbar%s krever pygtk-%s.%s krever python%s eller høyere.%s versjon %s%s: Advarser: åpner gjots2-manualen fra %s %s: Advarsel: kjører moduler fra %s %s: feil spesifikasjon av vindustørelse: %s %s: låst av prosess nummer %d%s: ikke tilgang: Feil: Lagre?: versjon Sett inn tid/dato (see innstillinger)Sett inn stempel for tid/dato (se innstillinger)AltHele den valgte tekstenAlle valgte tre-elementerAlfabetiskStigendeAutonumreringAutonumererings-formatTilbakeBakoverFeilaktig passordFeilaktig regulært uttrykkFete titlerKan ikke slette rot-elementetKan ikke gå videreKan ikke gå videreKan ikke gå videre!Kan ikke låse filenKan ikke låse filen %s: allerede låst av prosess %dKan ikke lage en låsefil iKan ikke slå sammen elementer som har underelementerKan ikke slå sammen rot-elementetKan ikke opne "Kan ikke leseKan ikke kjøre '%s'Kan ikke skriveKan ikke skrive tilAvbrytVelg en skrifttype for tekstpaneletNullstillLukkBekreft:KopierKopier valgte elementerCopyright Bob Hepple 2002-2006Kunne ikke finne programmet ccrypt - installer det og forsøk igjenKunne ikke finne programmet gpg - installer det og forsøk igjenKunne ikke finne programmet openssl - installer det og forsøk igjenCourier 10 Pitch 10Lag et nytt underelementLag et nytt underelementLag et nytt gjots-dokumentLag et nytt elementLag nytt elementValgt skrifttypeKlipp utKlipp ut valgte elementer_DegraderDatoDatoformat:DegraderSynkendeIkke overse store og små bokstaverNedRediger gjeldende element i et eksternt skriveprogramSkriv inn passord forAvslutt gjotsEksporterEksporter valgte elementer til en gjots filEksporter til ...Ekst.prg.Eksternt skriveprogramEksternt formateringsprogram "%s" er ikke installert - kan ikke formatereEksternt program for å redigere et element (%s blir byttet ut med en midlertidig fil for redigering)Eksternt program for formatering (%d blir byttet ut med valgt linjelengde)Mater ut en blank side før hvert elementFilen kan ikke låsesFinnFinn og erstattSøketekst er et regulært uttrykk (se man 7 regex)Finn:Format for datostempelfunksjonen (se strftime(3))Formater gjeldende avsnittFramFunnetGjots2 JotterGlobaltSkjul altSkjul alle elementer utenom øverste nivåSkjul alle elementer utenom øverste nivåAntall undernivåer som skal sorteres (0 for ingen; -1 for 'alle')ImporterImporter fra ...Importer elementer fra en gjots-filIntern feilIntern feil!Start et eksternt skriveprogram for gjeldene elementLinjelengde for avsnittsbrytingLag et nytt element fra utvalgBruk kapitaliseringSlå sammen elementerSlå sammen valgte elementer inn i det førsteSlå sammen valgte elementerFlytt valgte elementer nedFlytt valgte elementer oppNytt underelementNytt elementNytt _underelementNy filNy...>>>Ingen forandringer å lagreUnderelement finnes ikke!Overelement finnes ikke!Ikke funnetIkke lagret.Ingenting er valgtIngenting er valgt!Ingenting å slå sammenIngenting å lime innIngenting å lagreIngenting å sortere!NumeriskÅpneÅpne et eksisterende gjots-dokumentÅpne fil ...Åpne vinduet for gjots innstillinger_ForfremElementBlanke forsiderPassordet ble ikke bekreftetPassord:Lim innLim inn valgte elementerÅpne dialogvinduet for finn/erstattÅpne dialogvinduet for å sortereÅpne dialogvindu for å sortere tekstÅpne dialogvindu for å sortere treetInnstillingerSkriv utSkriv ut gjeldene elementSkriv ut hele gjots-filenSkriv ut gjots elementtitler med fet skriftSkriv ut valgte elementer eller valgt tekstSkriv ut dette dokumentetForfremSkrivebeskyttetLes manualen fra internet (med gjots)Regulært uttrykkErstattErstatt alleErstatt:Erstatt?So_rter treetLagreLagre som ...Lagre forandringer?Lagre gjots-dokumentetLagret.Søk bakoverSøker i hele filen, ikke bare dette elementetVelg filVelg skrifttypeUtvalgUtvalg blir underelement til elementet førUtvalg kommer på samme nivå som overelementVis altVis ikontekstVis alle elementer under valgte elementVis tilhørende ikontekstSorterSorter tekstSorter treetSorter alfabetiskSorter i stigende rekkefølgeSorter i synkende rekkefølgeSorter numeriskDel elementSkill ut tekstutvalget til et nytt elementStatus_linjeOrganiser og ta vare på dine uordnede notaterTekst å erstatte medTekst å søke etterTe_kstLinjelengde for tekst:Kopiert tekstUtklipt tekstTekstformatering:Limt inn tekstDen filen er allerede åpen!Ø_verste verktøylinjeSkift flagget for skrivebeskyttelse hvis muligSkrur av/på hoved-verktøylinjenSkrur av/på tree-verktøylinjen_Tre-verktøylinjeTreet er tomt!Tre-elementer limt innPrøv igjenOppBruk: gjots [VALG] [FILNAVN] Et gnome-2/X11 jotter-program VALG: -h, --help: denne hjelpebeskjeden -d, --debug: feilsøkingsinformasjon til stdout -g 123x456, --geometry=123x456: vindustørelse ved programstart (X x Y) -p, --purge-password ikke husk passord -r, --readonly: ingen redigering (eller låsing) -V, --version: skriv programversjon og avslutt FILNAVN: gjots data filenavn (standard er $HOME/.gjotsfile) Bruk -h for hjelp BrytBryt gjeldene avsnitt til valgt linjelengde_Ned_Eksporter_Rediger eksternt_Formater_Skjul alt_Importer_Slå sammen elementer_Ny_Nytt element_AvsluttLes manualen_SkrivebeskyttetVis _alt_Sorter tekstDel _element_Tidsstempel_Verktøylinjer_Tre_Opp_get_settings: Kan ikke finne sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKf.eks. lpr:f.eks. 1 for 1.2.1, afmt -w %dgjotsgjots2: advarsel: Utvalgslisten er NULL. Hopper over tre-utvalg forandret hendelse.gjots: %s finnes allerede.gjots: Skriv inn passordgjots: kan ikke låse fil.gjots: innstillingerhttp://bhepple.freeshell.org/gjots2merkelapp1merkelapp2ikke initialisertskrive over %s?Utskriftkommando (kan være et skallutrykk)pygtk-2.2 kreves for dette programmet!tekst redigert med eksternt skriveprogramTekst som ikke er redigert med eksternt skriveprogramoversetter_medvirkningvindu1xterm -e vi %sgjots2-2.4.1/po/nb.po0000664000301100007650000006066512234162543014141 0ustar bhepplebhepple# translation of gjots2.po to # Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # msgid "" msgstr "" "Project-Id-Version: gjots2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: 2006-01-16 15:35+0100\n" "Last-Translator: Robert Emil Berge\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11\n" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Organiser og ta vare på dine uordnede notater" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Gjots2 Jotter" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_Ny" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Importer elementer fra en gjots-fil" #: ../gjots.glade2:99 msgid "_Import" msgstr "_Importer" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Eksporter valgte elementer til en gjots fil" #: ../gjots.glade2:121 msgid "_Export" msgstr "_Eksporter" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "Skift flagget for skrivebeskyttelse hvis mulig" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Skrivebeskyttet" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Avslutt gjots" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Avslutt" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Verktøylinjer" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "Skrur av/på hoved-verktøylinjen" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "Ø_verste verktøylinje" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "Skrur av/på tree-verktøylinjen" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "_Tre-verktøylinje" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Vis tilhørende ikontekst" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "Vis ikontekst" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Status_linje" #: ../gjots.glade2:357 ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Vis alle elementer under valgte element" #: ../gjots.glade2:358 msgid "_Show All" msgstr "Vis _alt" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Skjul alle elementer utenom øverste nivå" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "_Skjul alt" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Tre" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Lag nytt element" #: ../gjots.glade2:415 msgid "_New Page" msgstr "_Nytt element" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Lag et nytt underelement" #: ../gjots.glade2:437 msgid "New _Child" msgstr "Nytt _underelement" #: ../gjots.glade2:464 ../gjots.glade2:1525 msgid "Move selection up" msgstr "Flytt valgte elementer opp" #: ../gjots.glade2:465 msgid "_Up" msgstr "_Opp" #: ../gjots.glade2:486 ../gjots.glade2:1543 msgid "Move selection down" msgstr "Flytt valgte elementer ned" #: ../gjots.glade2:487 msgid "_Down" msgstr "_Ned" #: ../gjots.glade2:508 ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "Utvalg kommer på samme nivå som overelement" #: ../gjots.glade2:509 msgid "P_romote" msgstr "_Forfrem" #: ../gjots.glade2:530 ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "Utvalg blir underelement til elementet før" #: ../gjots.glade2:531 msgid "D_emote" msgstr "_Degrader" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Lag et nytt element fra utvalg" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "Del _element" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Slå sammen valgte elementer inn i det første" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "_Slå sammen elementer" #: ../gjots.glade2:608 ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "Åpne dialogvindu for å sortere treet" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "So_rter treet" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Te_kst" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Formater gjeldende avsnitt" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Formater" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Sett inn tid/dato (see innstillinger)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Tidsstempel" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Rediger gjeldende element i et eksternt skriveprogram" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_Rediger eksternt" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Åpne dialogvindu for å sortere tekst" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Sorter tekst" #: ../gjots.glade2:822 ../gjots.glade2:1165 ../gjots.glade2:1468 msgid "New Page" msgstr "Nytt element" #: ../gjots.glade2:842 ../gjots.glade2:1486 msgid "New Child" msgstr "Nytt underelement" #: ../gjots.glade2:868 ../gjots.glade2:1526 msgid "Up" msgstr "Opp" #: ../gjots.glade2:888 ../gjots.glade2:1544 msgid "Down" msgstr "Ned" #: ../gjots.glade2:908 msgid "Promote" msgstr "Forfrem" #: ../gjots.glade2:928 msgid "Demote" msgstr "Degrader" #: ../gjots.glade2:954 ../gjots.glade2:1638 msgid "Merge Items" msgstr "Slå sammen elementer" #: ../gjots.glade2:980 ../gjots.glade2:1696 msgid "Show All" msgstr "Vis alt" #: ../gjots.glade2:1000 ../gjots.glade2:1678 msgid "Hide All" msgstr "Skjul alt" #: ../gjots.glade2:1026 ../gjots.glade2:1714 ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Sorter treet" #: ../gjots.glade2:1052 msgid "Import" msgstr "Importer" #: ../gjots.glade2:1072 msgid "Export" msgstr "Eksporter" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Les manualen fra internet (med gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "Les manualen" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Lag et nytt gjots-dokument" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Åpne et eksisterende gjots-dokument" #: ../gjots.glade2:1183 msgid "Open" msgstr "Åpne" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Lagre gjots-dokumentet" #: ../gjots.glade2:1201 msgid "Save" msgstr "Lagre" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Skriv ut dette dokumentet" #: ../gjots.glade2:1219 ../gjots.glade2:3031 msgid "Print" msgstr "Skriv ut" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Klipp ut valgte elementer" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Klipp ut" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Kopier valgte elementer" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Kopier" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Lim inn valgte elementer" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Lim inn" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Bryt gjeldene avsnitt til valgt linjelengde" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Bryt" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Start et eksternt skriveprogram for gjeldene element" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Ekst.prg." #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Sett inn stempel for tid/dato (se innstillinger)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Dato" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Åpne dialogvinduet for finn/erstatt" #: ../gjots.glade2:1389 ../gjots.glade2:2739 msgid "Find" msgstr "Finn" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Åpne dialogvinduet for å sortere" #: ../gjots.glade2:1407 ../gjots.glade2:3493 msgid "Sort" msgstr "Sorter" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Åpne vinduet for gjots innstillinger" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Innstillinger" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Lag et nytt element" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Lag et nytt underelement" #: ../gjots.glade2:1562 msgid "Back" msgstr "Tilbake" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Fram" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Skill ut tekstutvalget til et nytt element" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Del element" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Slå sammen valgte elementer" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Skjul alle elementer utenom øverste nivå" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Copyright Bob Hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "oversetter_medvirkning" #: ../gjots.glade2:1928 msgid "window1" msgstr "vindu1" #: ../gjots.glade2:1949 ../gjots.glade2:2002 ../gjots.glade2:2080 msgid "label1" msgstr "merkelapp1" #: ../gjots.glade2:1979 msgid "label2" msgstr "merkelapp2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Prøv igjen" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Skrivebeskyttet" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: innstillinger" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Velg en skrifttype for tekstpanelet" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Datoformat:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format for datostempelfunksjonen (se strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%F" #: ../gjots.glade2:2300 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "Eksternt program for å redigere et element (%s blir byttet ut med en midlertidig fil for redigering)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "Eksternt skriveprogram" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Linjelengde for tekst:" #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Linjelengde for avsnittsbryting" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Tekstformatering:" #: ../gjots.glade2:2418 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "Eksternt program for formatering (%d blir byttet ut med valgt linjelengde)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d" #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Valgt skrifttype" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Velg skrifttype" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Finn og erstatt" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Finn:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Erstatt:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "Tekst å søke etter" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "Tekst å erstatte med" #: ../gjots.glade2:2759 msgid "Close" msgstr "Lukk" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Erstatt" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Erstatt alle" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Avbryt" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Nullstill" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Ikke overse store og små bokstaver" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Bruk kapitalisering" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Søketekst er et regulært uttrykk (se man 7 regex)" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Regulært uttrykk" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Søk bakover" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "Bakover" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Søker i hele filen, ikke bare dette elementet" #: ../gjots.glade2:2980 msgid "Global" msgstr "Globalt" #: ../gjots.glade2:3003 msgid " Options " msgstr "Innstillinger" #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "f.eks. lpr:" #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "Utskriftkommando (kan være et skallutrykk)" #: ../gjots.glade2:3128 msgid " Print command " msgstr "Utskriftskommando" #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Skriv ut gjeldene element" #: ../gjots.glade2:3181 msgid "Page" msgstr "Element" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Skriv ut valgte elementer eller valgt tekst" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Utvalg" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Skriv ut hele gjots-filen" #: ../gjots.glade2:3222 msgid "All" msgstr "Alt" #: ../gjots.glade2:3245 msgid " Print Range " msgstr "Utskriftsrekkevidde" #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Mater ut en blank side før hvert element" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Blanke forsider" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Skriv ut gjots elementtitler med fet skrift" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Fete titler" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Autonumrering" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Autonumererings-format" #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "f.eks. 1 for 1.2.1, a" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr "Utskriftsformat" #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Sorter i stigende rekkefølge" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "Stigende" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Sorter i synkende rekkefølge" #: ../gjots.glade2:3569 msgid "Descending" msgstr "Synkende" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Sorter alfabetisk" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Alfabetisk" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Sorter numerisk" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Numerisk" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr "Sorteringsparametre" #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Antall undernivåer som skal sorteres (0 for ingen; -1 for 'alle')" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr "Sorter undernivåer" #: ../gjots.glade2:3788 msgid "Select File" msgstr "Velg fil" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Bruk: gjots [VALG] [FILNAVN]\n" "Et gnome-2/X11 jotter-program\n" "\n" "VALG:\n" "-h, --help: denne hjelpebeskjeden\n" "-d, --debug: feilsøkingsinformasjon til stdout\n" "-g 123x456, --geometry=123x456: vindustørelse ved programstart (X x Y)\n" "-p, --purge-password\t\t\t\tikke husk passord\n" "-r, --readonly: ingen redigering (eller låsing)\n" "-V, --version: skriv programversjon og avslutt\n" "\n" "FILNAVN:\n" "\tgjots data filenavn (standard er $HOME/.gjotsfile)\n" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s krever python%s eller høyere." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s krever pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Advarsel: kjører moduler fra %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Bruk -h for hjelp\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s versjon %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Eksternt formateringsprogram \"%s\" er ikke installert - kan ikke formatere" #: ../lib/gui.py:326 msgid "not initialised" msgstr "ikke initialisert" #: ../lib/gui.py:543 ../lib/gui.py:584 ../lib/gui.py:588 #: ../lib/gui.py:630 ../lib/gui.py:634 ../lib/gui.py:690 #: ../lib/gui.py:695 ../lib/gui.py:904 ../lib/gui.py:913 #: ../lib/gui.py:995 ../lib/gui.py:1004 ../lib/gui.py:1037 #: ../lib/gui.py:1042 ../lib/gui.py:1068 ../lib/gui.py:1349 #: ../lib/gui.py:1837 ../lib/gui.py:1856 ../lib/gui.py:1885 #: ../lib/gui.py:1908 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Ingenting er valgt" #: ../lib/gui.py:547 ../lib/gui.py:593 ../lib/gui.py:638 #: ../lib/gui.py:700 ../lib/gui.py:799 ../lib/gui.py:1073 #: ../lib/gui.py:1841 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Overelement finnes ikke!" #: ../lib/gui.py:551 ../lib/gui.py:604 msgid "No child!" msgstr "Underelement finnes ikke!" #: ../lib/gui.py:554 ../lib/gui.py:598 msgid "Can't go any further" msgstr "Kan ikke gå videre" #: ../lib/gui.py:561 ../lib/gui.py:718 msgid "Internal error!" msgstr "Intern feil!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Kan ikke gå videre!" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Utklipt tekst" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Kopiert tekst" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Limt inn tekst" #: ../lib/gui.py:870 msgid "All text selected" msgstr "Hele den valgte teksten" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "Alle valgte tre-elementer" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Ingenting er valgt!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Kan ikke slå sammen rot-elementet" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Ingenting å slå sammen" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Kan ikke slå sammen elementer som har underelementer" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d elementer slått sammen" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Kan ikke slette rot-elementet" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d tre-elementer klippet ut" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d tre-elementer kopiert" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Ingenting å lime inn" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Tre-elementer limt inn" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Kan ikke skrive" #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Kan ikke kjøre '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Kan ikke lese" #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "tekst redigert med eksternt skriveprogram" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "Tekst som ikke er redigert med eksternt skriveprogram" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Feil" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Kan ikke låse filen %s: allerede låst av prosess %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr ": Lagre?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Lagre forandringer?" #: ../lib/gui.py:1285 msgid "New file" msgstr "Ny fil" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Åpne fil ..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "Ingen forandringer å lagre" #: ../lib/gui.py:1314 ../lib/gui.py:1334 msgid "Saved." msgstr "Lagret." #: ../lib/gui.py:1316 ../lib/gui.py:1336 ../lib/file.py:429 msgid "Not saved." msgstr "Ikke lagret." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Ingenting å lagre" #: ../lib/gui.py:1332 ../lib/file.py:606 msgid "Save as ..." msgstr "Lagre som ..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Importer fra ..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Eksporter til ..." #: ../lib/gui.py:1613 ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Advarser: åpner gjots2-manualen fra %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 kreves for dette programmet!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: advarsel: Utvalgslisten er NULL. Hopper over tre-utvalg forandret\n" "hendelse." #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Kan ikke gå videre" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "Treet er tomt!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: feil spesifikasjon av vindustørelse: %s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "Ny...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": versjon " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Feilaktig regulært uttrykk" #: ../lib/find.py:198 ../lib/find.py:251 msgid "Not found" msgstr "Ikke funnet" #: ../lib/find.py:200 msgid "Found" msgstr "Funnet" #: ../lib/find.py:254 msgid "Replace?" msgstr "Erstatt?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d erstatninger" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Skriv inn passord for" #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Skriv inn passord" #: ../lib/file.py:254 msgid "Password: " msgstr "Passord:" #: ../lib/file.py:255 msgid "Confirm: " msgstr "Bekreft:" #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Passordet ble ikke bekreftet" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Kunne ikke finne programmet ccrypt - installer det og forsøk igjen" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Kunne ikke finne programmet gpg - installer det og forsøk igjen" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Kunne ikke finne programmet openssl - installer det og forsøk igjen" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Kan ikke opne \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Feilaktig passord" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Filen kan ikke låses" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Kan ikke skrive til" #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Kan ikke låse filen" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s er ikke lesbar" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: ikke tilgang" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: låst av prosess nummer %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: kan ikke låse fil." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "Den filen er allerede åpen!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s er låst av pid %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Kan ikke lage en låsefil i" #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "%s er ikke skrivbar" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s finnes allerede." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "skrive over %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Kan ikke finne sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Intern feil" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Ingenting å sortere!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Sorter tekst" gjots2-2.4.1/po/no/0000775000301100007650000000000012234163053013576 5ustar bhepplebhepplegjots2-2.4.1/po/no/LC_MESSAGES/0000755000301100007650000000000012234163053015361 5ustar bhepplebhepplegjots2-2.4.1/po/no/LC_MESSAGES/gjots2.mo0000664000301100007650000004301012234163053017126 0ustar bhepplebheppleD]l   .?BRcx + %7#] '!. F Q [g|   0O$i     !+0DCc@D-ATh  '< P[%b 7WW>(7!3'[x '#5&-=\k-{"*   & 5 S g y       !!,! > >+>=>[>y> >*> >.>>?'?.? E? S?a?s???.?!? @)@<@K@ b@n@r@sBB+BB BB B B BBC C!C *C7CHC QC _C lCyCCC6CC CC DDSDhDDDD#D D DEE+(E&TE){E5EEEE_O  6 /P;of7%5`B+~EX8<z@}QH=ujATnpV\m0!yb Rce>w&hKk -GJ3t?Y#.^($FsZ4LW2,N"]d)qSgC Ilai|'xUv1:{[M9*rD Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gnome-2/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug trace to stdout -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditswindow1xterm -e vi %sProject-Id-Version: gjots2 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-12-24 15:29+1000 PO-Revision-Date: 2006-01-16 15:35+0100 Last-Translator: Robert Emil Berge Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Generator: KBabel 1.11 InnstillingerUtskriftsrekkeviddeUtskriftskommandoUtskriftsformatSorteringsparametreSorter undernivåer%F%d elementer slått sammen%d erstatninger%d tre-elementer kopiert%d tre-elementer klippet ut%s er låst av pid %d%s er ikke lesbar%s er ikke skrivbar%s krever pygtk-%s.%s krever python%s eller høyere.%s versjon %s%s: Advarser: åpner gjots2-manualen fra %s %s: Advarsel: kjører moduler fra %s %s: feil spesifikasjon av vindustørelse: %s %s: låst av prosess nummer %d%s: ikke tilgang: Feil: Lagre?: versjon Sett inn tid/dato (see innstillinger)Sett inn stempel for tid/dato (se innstillinger)AltHele den valgte tekstenAlle valgte tre-elementerAlfabetiskStigendeAutonumreringAutonumererings-formatTilbakeBakoverFeilaktig passordFeilaktig regulært uttrykkFete titlerKan ikke slette rot-elementetKan ikke gå videreKan ikke gå videreKan ikke gå videre!Kan ikke låse filenKan ikke låse filen %s: allerede låst av prosess %dKan ikke lage en låsefil iKan ikke slå sammen elementer som har underelementerKan ikke slå sammen rot-elementetKan ikke opne "Kan ikke leseKan ikke kjøre '%s'Kan ikke skriveKan ikke skrive tilAvbrytVelg en skrifttype for tekstpaneletNullstillLukkBekreft:KopierKopier valgte elementerCopyright Bob Hepple 2002-2006Kunne ikke finne programmet ccrypt - installer det og forsøk igjenKunne ikke finne programmet gpg - installer det og forsøk igjenKunne ikke finne programmet openssl - installer det og forsøk igjenCourier 10 Pitch 10Lag et nytt underelementLag et nytt underelementLag et nytt gjots-dokumentLag et nytt elementLag nytt elementValgt skrifttypeKlipp utKlipp ut valgte elementer_DegraderDatoDatoformat:DegraderSynkendeIkke overse store og små bokstaverNedRediger gjeldende element i et eksternt skriveprogramSkriv inn passord forAvslutt gjotsEksporterEksporter valgte elementer til en gjots filEksporter til ...Ekst.prg.Eksternt skriveprogramEksternt formateringsprogram "%s" er ikke installert - kan ikke formatereEksternt program for å redigere et element (%s blir byttet ut med en midlertidig fil for redigering)Eksternt program for formatering (%d blir byttet ut med valgt linjelengde)Mater ut en blank side før hvert elementFilen kan ikke låsesFinnFinn og erstattSøketekst er et regulært uttrykk (se man 7 regex)Finn:Format for datostempelfunksjonen (se strftime(3))Formater gjeldende avsnittFramFunnetGjots2 JotterGlobaltSkjul altSkjul alle elementer utenom øverste nivåSkjul alle elementer utenom øverste nivåAntall undernivåer som skal sorteres (0 for ingen; -1 for 'alle')ImporterImporter fra ...Importer elementer fra en gjots-filIntern feilIntern feil!Start et eksternt skriveprogram for gjeldene elementLinjelengde for avsnittsbrytingLag et nytt element fra utvalgBruk kapitaliseringSlå sammen elementerSlå sammen valgte elementer inn i det førsteSlå sammen valgte elementerFlytt valgte elementer nedFlytt valgte elementer oppNytt underelementNytt elementNytt _underelementNy filNy...>>>Ingen forandringer å lagreUnderelement finnes ikke!Overelement finnes ikke!Ikke funnetIkke lagret.Ingenting er valgtIngenting er valgt!Ingenting å slå sammenIngenting å lime innIngenting å lagreIngenting å sortere!NumeriskÅpneÅpne et eksisterende gjots-dokumentÅpne fil ...Åpne vinduet for gjots innstillinger_ForfremElementBlanke forsiderPassordet ble ikke bekreftetPassord:Lim innLim inn valgte elementerÅpne dialogvinduet for finn/erstattÅpne dialogvinduet for å sortereÅpne dialogvindu for å sortere tekstÅpne dialogvindu for å sortere treetInnstillingerSkriv utSkriv ut gjeldene elementSkriv ut hele gjots-filenSkriv ut gjots elementtitler med fet skriftSkriv ut valgte elementer eller valgt tekstSkriv ut dette dokumentetForfremSkrivebeskyttetLes manualen fra internet (med gjots)Regulært uttrykkErstattErstatt alleErstatt:Erstatt?So_rter treetLagreLagre som ...Lagre forandringer?Lagre gjots-dokumentetLagret.Søk bakoverSøker i hele filen, ikke bare dette elementetVelg filVelg skrifttypeUtvalgUtvalg blir underelement til elementet førUtvalg kommer på samme nivå som overelementVis altVis ikontekstVis alle elementer under valgte elementVis tilhørende ikontekstSorterSorter tekstSorter treetSorter alfabetiskSorter i stigende rekkefølgeSorter i synkende rekkefølgeSorter numeriskDel elementSkill ut tekstutvalget til et nytt elementStatus_linjeOrganiser og ta vare på dine uordnede notaterTekst å erstatte medTekst å søke etterTe_kstLinjelengde for tekst:Kopiert tekstUtklipt tekstTekstformatering:Limt inn tekstDen filen er allerede åpen!Ø_verste verktøylinjeSkift flagget for skrivebeskyttelse hvis muligSkrur av/på hoved-verktøylinjenSkrur av/på tree-verktøylinjen_Tre-verktøylinjeTreet er tomt!Tre-elementer limt innPrøv igjenOppBruk: gjots [VALG] [FILNAVN] Et gnome-2/X11 jotter-program VALG: -h, --help: denne hjelpebeskjeden -d, --debug: feilsøkingsinformasjon til stdout -g 123x456, --geometry=123x456: vindustørelse ved programstart (X x Y) -p, --purge-password ikke husk passord -r, --readonly: ingen redigering (eller låsing) -V, --version: skriv programversjon og avslutt FILNAVN: gjots data filenavn (standard er $HOME/.gjotsfile) Bruk -h for hjelp BrytBryt gjeldene avsnitt til valgt linjelengde_Ned_Eksporter_Rediger eksternt_Formater_Skjul alt_Importer_Slå sammen elementer_Ny_Nytt element_AvsluttLes manualen_SkrivebeskyttetVis _alt_Sorter tekstDel _element_Tidsstempel_Verktøylinjer_Tre_Opp_get_settings: Kan ikke finne sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKf.eks. lpr:f.eks. 1 for 1.2.1, afmt -w %dgjotsgjots2: advarsel: Utvalgslisten er NULL. Hopper over tre-utvalg forandret hendelse.gjots: %s finnes allerede.gjots: Skriv inn passordgjots: kan ikke låse fil.gjots: innstillingerhttp://bhepple.freeshell.org/gjots2merkelapp1merkelapp2ikke initialisertskrive over %s?Utskriftkommando (kan være et skallutrykk)pygtk-2.2 kreves for dette programmet!tekst redigert med eksternt skriveprogramTekst som ikke er redigert med eksternt skriveprogramoversetter_medvirkningvindu1xterm -e vi %sgjots2-2.4.1/po/no.po0000664000301100007650000006066512234162543014156 0ustar bhepplebhepple# translation of gjots2.po to # Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # msgid "" msgstr "" "Project-Id-Version: gjots2\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: 2006-01-16 15:35+0100\n" "Last-Translator: Robert Emil Berge\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11\n" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Organiser og ta vare på dine uordnede notater" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Gjots2 Jotter" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_Ny" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Importer elementer fra en gjots-fil" #: ../gjots.glade2:99 msgid "_Import" msgstr "_Importer" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Eksporter valgte elementer til en gjots fil" #: ../gjots.glade2:121 msgid "_Export" msgstr "_Eksporter" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "Skift flagget for skrivebeskyttelse hvis mulig" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Skrivebeskyttet" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Avslutt gjots" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Avslutt" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Verktøylinjer" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "Skrur av/på hoved-verktøylinjen" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "Ø_verste verktøylinje" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "Skrur av/på tree-verktøylinjen" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "_Tre-verktøylinje" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Vis tilhørende ikontekst" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "Vis ikontekst" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Status_linje" #: ../gjots.glade2:357 ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Vis alle elementer under valgte element" #: ../gjots.glade2:358 msgid "_Show All" msgstr "Vis _alt" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Skjul alle elementer utenom øverste nivå" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "_Skjul alt" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Tre" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Lag nytt element" #: ../gjots.glade2:415 msgid "_New Page" msgstr "_Nytt element" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Lag et nytt underelement" #: ../gjots.glade2:437 msgid "New _Child" msgstr "Nytt _underelement" #: ../gjots.glade2:464 ../gjots.glade2:1525 msgid "Move selection up" msgstr "Flytt valgte elementer opp" #: ../gjots.glade2:465 msgid "_Up" msgstr "_Opp" #: ../gjots.glade2:486 ../gjots.glade2:1543 msgid "Move selection down" msgstr "Flytt valgte elementer ned" #: ../gjots.glade2:487 msgid "_Down" msgstr "_Ned" #: ../gjots.glade2:508 ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "Utvalg kommer på samme nivå som overelement" #: ../gjots.glade2:509 msgid "P_romote" msgstr "_Forfrem" #: ../gjots.glade2:530 ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "Utvalg blir underelement til elementet før" #: ../gjots.glade2:531 msgid "D_emote" msgstr "_Degrader" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Lag et nytt element fra utvalg" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "Del _element" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Slå sammen valgte elementer inn i det første" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "_Slå sammen elementer" #: ../gjots.glade2:608 ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "Åpne dialogvindu for å sortere treet" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "So_rter treet" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Te_kst" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Formater gjeldende avsnitt" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Formater" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Sett inn tid/dato (see innstillinger)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Tidsstempel" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Rediger gjeldende element i et eksternt skriveprogram" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_Rediger eksternt" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Åpne dialogvindu for å sortere tekst" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Sorter tekst" #: ../gjots.glade2:822 ../gjots.glade2:1165 ../gjots.glade2:1468 msgid "New Page" msgstr "Nytt element" #: ../gjots.glade2:842 ../gjots.glade2:1486 msgid "New Child" msgstr "Nytt underelement" #: ../gjots.glade2:868 ../gjots.glade2:1526 msgid "Up" msgstr "Opp" #: ../gjots.glade2:888 ../gjots.glade2:1544 msgid "Down" msgstr "Ned" #: ../gjots.glade2:908 msgid "Promote" msgstr "Forfrem" #: ../gjots.glade2:928 msgid "Demote" msgstr "Degrader" #: ../gjots.glade2:954 ../gjots.glade2:1638 msgid "Merge Items" msgstr "Slå sammen elementer" #: ../gjots.glade2:980 ../gjots.glade2:1696 msgid "Show All" msgstr "Vis alt" #: ../gjots.glade2:1000 ../gjots.glade2:1678 msgid "Hide All" msgstr "Skjul alt" #: ../gjots.glade2:1026 ../gjots.glade2:1714 ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Sorter treet" #: ../gjots.glade2:1052 msgid "Import" msgstr "Importer" #: ../gjots.glade2:1072 msgid "Export" msgstr "Eksporter" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Les manualen fra internet (med gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "Les manualen" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Lag et nytt gjots-dokument" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Åpne et eksisterende gjots-dokument" #: ../gjots.glade2:1183 msgid "Open" msgstr "Åpne" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Lagre gjots-dokumentet" #: ../gjots.glade2:1201 msgid "Save" msgstr "Lagre" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Skriv ut dette dokumentet" #: ../gjots.glade2:1219 ../gjots.glade2:3031 msgid "Print" msgstr "Skriv ut" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Klipp ut valgte elementer" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Klipp ut" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Kopier valgte elementer" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Kopier" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Lim inn valgte elementer" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Lim inn" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Bryt gjeldene avsnitt til valgt linjelengde" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Bryt" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Start et eksternt skriveprogram for gjeldene element" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Ekst.prg." #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Sett inn stempel for tid/dato (se innstillinger)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Dato" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Åpne dialogvinduet for finn/erstatt" #: ../gjots.glade2:1389 ../gjots.glade2:2739 msgid "Find" msgstr "Finn" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Åpne dialogvinduet for å sortere" #: ../gjots.glade2:1407 ../gjots.glade2:3493 msgid "Sort" msgstr "Sorter" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Åpne vinduet for gjots innstillinger" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Innstillinger" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Lag et nytt element" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Lag et nytt underelement" #: ../gjots.glade2:1562 msgid "Back" msgstr "Tilbake" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Fram" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Skill ut tekstutvalget til et nytt element" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Del element" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Slå sammen valgte elementer" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Skjul alle elementer utenom øverste nivå" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Copyright Bob Hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "oversetter_medvirkning" #: ../gjots.glade2:1928 msgid "window1" msgstr "vindu1" #: ../gjots.glade2:1949 ../gjots.glade2:2002 ../gjots.glade2:2080 msgid "label1" msgstr "merkelapp1" #: ../gjots.glade2:1979 msgid "label2" msgstr "merkelapp2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Prøv igjen" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Skrivebeskyttet" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: innstillinger" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Velg en skrifttype for tekstpanelet" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Datoformat:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format for datostempelfunksjonen (se strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%F" #: ../gjots.glade2:2300 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "Eksternt program for å redigere et element (%s blir byttet ut med en midlertidig fil for redigering)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "Eksternt skriveprogram" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Linjelengde for tekst:" #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Linjelengde for avsnittsbryting" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Tekstformatering:" #: ../gjots.glade2:2418 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "Eksternt program for formatering (%d blir byttet ut med valgt linjelengde)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d" #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Valgt skrifttype" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Velg skrifttype" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Finn og erstatt" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Finn:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Erstatt:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "Tekst å søke etter" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "Tekst å erstatte med" #: ../gjots.glade2:2759 msgid "Close" msgstr "Lukk" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Erstatt" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Erstatt alle" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Avbryt" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Nullstill" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Ikke overse store og små bokstaver" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Bruk kapitalisering" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Søketekst er et regulært uttrykk (se man 7 regex)" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Regulært uttrykk" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Søk bakover" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "Bakover" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Søker i hele filen, ikke bare dette elementet" #: ../gjots.glade2:2980 msgid "Global" msgstr "Globalt" #: ../gjots.glade2:3003 msgid " Options " msgstr "Innstillinger" #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "f.eks. lpr:" #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "Utskriftkommando (kan være et skallutrykk)" #: ../gjots.glade2:3128 msgid " Print command " msgstr "Utskriftskommando" #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Skriv ut gjeldene element" #: ../gjots.glade2:3181 msgid "Page" msgstr "Element" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Skriv ut valgte elementer eller valgt tekst" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Utvalg" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Skriv ut hele gjots-filen" #: ../gjots.glade2:3222 msgid "All" msgstr "Alt" #: ../gjots.glade2:3245 msgid " Print Range " msgstr "Utskriftsrekkevidde" #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Mater ut en blank side før hvert element" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Blanke forsider" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Skriv ut gjots elementtitler med fet skrift" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Fete titler" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Autonumrering" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Autonumererings-format" #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "f.eks. 1 for 1.2.1, a" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr "Utskriftsformat" #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Sorter i stigende rekkefølge" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "Stigende" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Sorter i synkende rekkefølge" #: ../gjots.glade2:3569 msgid "Descending" msgstr "Synkende" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Sorter alfabetisk" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Alfabetisk" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Sorter numerisk" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Numerisk" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr "Sorteringsparametre" #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Antall undernivåer som skal sorteres (0 for ingen; -1 for 'alle')" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr "Sorter undernivåer" #: ../gjots.glade2:3788 msgid "Select File" msgstr "Velg fil" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Bruk: gjots [VALG] [FILNAVN]\n" "Et gnome-2/X11 jotter-program\n" "\n" "VALG:\n" "-h, --help: denne hjelpebeskjeden\n" "-d, --debug: feilsøkingsinformasjon til stdout\n" "-g 123x456, --geometry=123x456: vindustørelse ved programstart (X x Y)\n" "-p, --purge-password\t\t\t\tikke husk passord\n" "-r, --readonly: ingen redigering (eller låsing)\n" "-V, --version: skriv programversjon og avslutt\n" "\n" "FILNAVN:\n" "\tgjots data filenavn (standard er $HOME/.gjotsfile)\n" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s krever python%s eller høyere." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s krever pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Advarsel: kjører moduler fra %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Bruk -h for hjelp\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s versjon %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Eksternt formateringsprogram \"%s\" er ikke installert - kan ikke formatere" #: ../lib/gui.py:326 msgid "not initialised" msgstr "ikke initialisert" #: ../lib/gui.py:543 ../lib/gui.py:584 ../lib/gui.py:588 #: ../lib/gui.py:630 ../lib/gui.py:634 ../lib/gui.py:690 #: ../lib/gui.py:695 ../lib/gui.py:904 ../lib/gui.py:913 #: ../lib/gui.py:995 ../lib/gui.py:1004 ../lib/gui.py:1037 #: ../lib/gui.py:1042 ../lib/gui.py:1068 ../lib/gui.py:1349 #: ../lib/gui.py:1837 ../lib/gui.py:1856 ../lib/gui.py:1885 #: ../lib/gui.py:1908 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Ingenting er valgt" #: ../lib/gui.py:547 ../lib/gui.py:593 ../lib/gui.py:638 #: ../lib/gui.py:700 ../lib/gui.py:799 ../lib/gui.py:1073 #: ../lib/gui.py:1841 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Overelement finnes ikke!" #: ../lib/gui.py:551 ../lib/gui.py:604 msgid "No child!" msgstr "Underelement finnes ikke!" #: ../lib/gui.py:554 ../lib/gui.py:598 msgid "Can't go any further" msgstr "Kan ikke gå videre" #: ../lib/gui.py:561 ../lib/gui.py:718 msgid "Internal error!" msgstr "Intern feil!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Kan ikke gå videre!" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Utklipt tekst" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Kopiert tekst" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Limt inn tekst" #: ../lib/gui.py:870 msgid "All text selected" msgstr "Hele den valgte teksten" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "Alle valgte tre-elementer" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Ingenting er valgt!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Kan ikke slå sammen rot-elementet" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Ingenting å slå sammen" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Kan ikke slå sammen elementer som har underelementer" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d elementer slått sammen" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Kan ikke slette rot-elementet" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d tre-elementer klippet ut" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d tre-elementer kopiert" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Ingenting å lime inn" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Tre-elementer limt inn" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Kan ikke skrive" #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Kan ikke kjøre '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Kan ikke lese" #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "tekst redigert med eksternt skriveprogram" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "Tekst som ikke er redigert med eksternt skriveprogram" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Feil" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Kan ikke låse filen %s: allerede låst av prosess %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr ": Lagre?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Lagre forandringer?" #: ../lib/gui.py:1285 msgid "New file" msgstr "Ny fil" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Åpne fil ..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "Ingen forandringer å lagre" #: ../lib/gui.py:1314 ../lib/gui.py:1334 msgid "Saved." msgstr "Lagret." #: ../lib/gui.py:1316 ../lib/gui.py:1336 ../lib/file.py:429 msgid "Not saved." msgstr "Ikke lagret." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Ingenting å lagre" #: ../lib/gui.py:1332 ../lib/file.py:606 msgid "Save as ..." msgstr "Lagre som ..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Importer fra ..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Eksporter til ..." #: ../lib/gui.py:1613 ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Advarser: åpner gjots2-manualen fra %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 kreves for dette programmet!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: advarsel: Utvalgslisten er NULL. Hopper over tre-utvalg forandret\n" "hendelse." #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Kan ikke gå videre" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "Treet er tomt!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: feil spesifikasjon av vindustørelse: %s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "Ny...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": versjon " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Feilaktig regulært uttrykk" #: ../lib/find.py:198 ../lib/find.py:251 msgid "Not found" msgstr "Ikke funnet" #: ../lib/find.py:200 msgid "Found" msgstr "Funnet" #: ../lib/find.py:254 msgid "Replace?" msgstr "Erstatt?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d erstatninger" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Skriv inn passord for" #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Skriv inn passord" #: ../lib/file.py:254 msgid "Password: " msgstr "Passord:" #: ../lib/file.py:255 msgid "Confirm: " msgstr "Bekreft:" #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Passordet ble ikke bekreftet" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Kunne ikke finne programmet ccrypt - installer det og forsøk igjen" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Kunne ikke finne programmet gpg - installer det og forsøk igjen" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Kunne ikke finne programmet openssl - installer det og forsøk igjen" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Kan ikke opne \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Feilaktig passord" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Filen kan ikke låses" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Kan ikke skrive til" #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Kan ikke låse filen" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s er ikke lesbar" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: ikke tilgang" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: låst av prosess nummer %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: kan ikke låse fil." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "Den filen er allerede åpen!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s er låst av pid %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Kan ikke lage en låsefil i" #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "%s er ikke skrivbar" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s finnes allerede." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "skrive over %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Kan ikke finne sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Intern feil" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Ingenting å sortere!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Sorter tekst" gjots2-2.4.1/po/fr/0000775000301100007650000000000012234163053013571 5ustar bhepplebhepplegjots2-2.4.1/po/fr/LC_MESSAGES/0000755000301100007650000000000012234163053015354 5ustar bhepplebhepplegjots2-2.4.1/po/fr/LC_MESSAGES/gjots2.mo0000664000301100007650000004431112234163053017126 0ustar bhepplebheppleD]l   .?BRcx + %7#] '!. F Q [g|   0O$i     !+0DCc@D-ATh  '< P[%b 7WW>(7!3'[x '#5&-=\k-{"*   & 5 S g y       !!,!5K5c50g55 5585666F-6bt6h6.@7$o777M7 8$ 8/8 N8X8 `8n8 u8*808?89&9%99_9n91~9-939:':/;:#k:#:$: : ::; ;!; A;O; ^;k;|;;;;;; ;;!;<#-< Q<[<`<'t<<<<!<<$=&*=Q=W=`=z=#=.==> >#><> S>]> l> w>> >>>> >>A ?L?e? z?3?+? ??.@$>@c@i@ x@@@@@@4A;AJAfA{AAA A AA AAB$B%AB%gBBBBBB BDE8EPE UE_E pE zE EEEEEEE EEFFF+F2F18FjF FF FF[F G&G,DGqG#GGGG G5G/ H%w&hKk -GJ3t?Y#.^($FsZ4LW2,N"]d)qSgC Ilai|'xUv1:{[M9*rD Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPopup the sort tree dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUsage: gjots [OPTIONS] [FILENAME] A gnome-2/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug trace to stdout -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) Use -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots2: warning: selection list is NULL. Skipping tree selection changed event.gjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditswindow1xterm -e vi %sProject-Id-Version: gjots 2.3.0 Report-Msgid-Bugs-To: POT-Creation-Date: 2005-12-24 15:29+1000 PO-Revision-Date: 2006-01-07 11:07+0100 Last-Translator: Rui Nibau Language-Team: French MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Plural-Forms: nplurals=2; plural=(n > 1); Options Etendue de l'impressionCommande d'impressionFormat d'impressionParamètres de triTrier les sous-niveaux%F%d notes fusionnées%d substitutions%d notes de l'arbre copiées%d notes de l'arbre coupées%s est verrouillé par pid %d%s n'est pas lisible%s n'est pas ouvert en écriture%s nécessite pygtk-%s.%s nécessite python%s ou supérieur.%s version %s%s: Attention: ouverture du manuel de gjots2 depuis %s %s: Attention: modules lancés depuis %s %s: mauvaises spécifications géométriques: %s %s: verrouillé par le processus numéro %d%s: pas de permission: Erreur: Enregistrer?: version Ajouter la date/l'heure (voir préférences)Ajouter la date/l'heure (voir prefs)ToutTout le texte sélectionnéToutes les notes de l'arbre sélectionnéesAlphabétiqueCroissantNumérotation autoFormat numérotation: RemonterEn arrièreMauvais mot de passeExpression régulière mal forméeTitres en grasImpossible de supprimer la note racineImpossible d'aller plus loinImpossible d'aller plus loinImpossible d'aller plus loin!Impossible de verrouiller le fichierImpossible de verrouiller le fichier %s: déjà verrouillé par le processus %dImpossible de créer un fichier verrouillé dans Impossible de fusionner des notes qui possèdent des notes fillesImpossible de fusionner la note racineImpossible d'ouvrir "Impossible de lireImpossible de lancer '%s'Impossible d'écrireImpossible d'écrire dans AnnulerChoisir une police pour le texteEffacerFermerConfirmer: CopierCopier la sélectionCopyright Bob Hepple 2002-2006Impossible de trouver le programme ccrypt - installez-le et ré-essayezImpossible de trouver le programme gpg - Installez-le et ré-essayezImpossible de trouver le programme openssl - Installez-le et ré-essayezCourier 10 Pitch 10Créer une note filleCréer une nouvelle note filleCréer un nouveau document gjotsCréer une nouvelle noteCréer une nouvelle pagePolice actuelle du texteCouperCouper la sélection_DescendreDateFormat de la date:DescendreDécroissantNe pas ignorer la casseBasEditer la note courante dans un éditeur externeEntrer le mot de passe pourQuitter gjotsExporterExporter les notes sélectionnées dans un fichier gjotsExporter vers...Ed.Ext.Editeur externeLe formateur externe "%s" n'est pas installé - impossible de formaterProgramme externe pour éditer la page (%s est remplacé par le nom du fichier temporaire édité)Programme externe pour gérer le formatage du texte (%d est remplacé par la longueur de ligne actuelle)Nouvelle page avant chaque nouvelle note gjotsLe fichier ne peut être verrouilléChercherChercher & remplacerLa chaîne à rechercher est une expression régulière (voir 'man 7 regexp')Chercher:Format de la date (voir strftime(3))Formater le paragraphe courantDescendreTrouvéGjots2 JotterGlobalCacher toutCacher toutes les notes sauf la note mèreMasquer toutes les notes exceptée la note mèreCombien de sous-niveaux à trier (0 pour aucun; -1 pour 'tous')ImporterImporter depuis...Importer les notes d'un fichier gjotsErreur interneErreur interne!Appeler un éditeur externe pour la note couranteLongueur de ligne pour couper les paragraphesCréer une nouvelle note à partir de la sélectionSensible à la casseFusionner les notesFusionner les notes courantes dans la premièreFusionner les notes sélectionnéesDéplacer la sélection vers le basDéplacer la sélection vers le hautNouvel EnfantNouvelle pageNouvel _EnfantNouveau fichierNouveau...>>>Aucun changement à enregistrerPas d'enfant!Pas de parent!Rien trouvéNon enregistré.Aucune sélectionAucune sélection!Rien à fusionnerRien à collerRien à enregistrerRien à trier!NumeriqueOuvrirOuvrir un document gjots existantOuvrir un fichier...Afficher les préférences de gjots_RemonterPageAlimentation papierLe mot de passe n'a pas été confirméMot de passe: CollerColler la sélectionAfficher la fenêtre de rechercheAfficher la fenêtre de triAfficher la fenêtre de tri du texteAfficher la fenêtre de tri de l'arbrePrefsImprimerImprimer la page couranteImprimer tout le fichier gjotsImprimer le titre des notes en grasImprimer les pages sélectionnées ou le texteImprimer ce documentRemonterLecture seuleLire le manuel (en utilisant gjots)Expression régulièreRemplacerRemplacer toutRemplacer:Remplacer?_Trier l'arbreEnregistrerEnregistrer sous...Enregistrer ce travail?Enregistrer le document gjotsEnregistré.Recherche en arrièreRechercher dans tout le fichier et pas uniquement dans cette noteSélectionner un fichierSélectionner policeSélectionLa sélection devient fille de la note précédenteLa sélection devient une soeur de sa mèreMontrer toutMontrer le texte de l'_iconeMontrer toutes les notes sous la note couranteMontrer le texte associé à l'iconeTrierTrier le texteTrier l'arbreTrier par ordre alphabétiqueTrier par ordre croissantTrier par ordre décroissantTrier par ordre numériqueScinder la noteCréer une nouvelle note avec le texte sélectionnéBarre d'é_tatGère et organise vos notesChaîne à remplacerChaîne à rechercherTe_xteLongueur ligne:Texte copiéTexte coupéFormateur de texte:Texte colléCe fichier est déjà ouvert!Barre d'outils _principaleActiver la lecture seule si possibleAfficher la barre d'outils principaleAfficher la barre d'outils de l'arbreBarre d'outils de l'_arbreL'arbre est vide!Notes de l'arbre colléesEssayez à nouveauHautUsage: gjots [OPTIONS] [NOM_FICHIER] A gnome-2/X11 jotter OPTIONS: -h, --help: Aide -d, --debug: messages pour déboguer sur sortie courante -g 123x456, --geometry=123x456: taille initiale (X x Y) -p, --purge-password ne pas se souvenir du mot de passe -r, --readonly: pas d'édition (ou verrouiller) -V, --version: Afficher la version et quitter NOM_FICHIER: nom du fichier gjots ($HOME/.gjotsfile par défaut) Utiliser -h pour l'aide RetourCouper le paragraphe à la longueur de ligne spécifiée_Bas_Exporter_Editeur externe_Formater_Cacher toutIm_porter_Fusionner les notes_Nouveau_Nouvelle page_Quitter_Lire le manuel_Lecture seule_Montrer tout_Trier le texte_Scinder la note_Date_Barre d'outils_Arbre_Haut_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKex. lpr: ex. 1 pour 1.2.1, afmt -w %d gjotsgjots2: Attention: la liste de sélection est NULL. Skipping tree selection changed event.gjots: %s existe déjà.gjots: Entrer le mot de passegjots: impossible de verrouiller le fichier.gjots: préférenceshttp://bhepple.freeshell.org/gjots2label1label2Non initialiséremplacer %s?Commande d'impression (peut être une commande shell)pygtk-2.2 est nécessaire à cette application!Texte modifié par l'éditeur externeTexte non modifié par l'éditeur externeRui Nibau window1xterm -e vi %sgjots2-2.4.1/po/fr.po0000664000301100007650000006221112234162543014136 0ustar bhepplebhepple# Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # , fuzzy # , 2005. # # msgid "" msgstr "" "Project-Id-Version: gjots 2.3.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: 2006-01-07 11:07+0100\n" "Last-Translator: Rui Nibau \n" "Language-Team: French\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Gère et organise vos notes" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Gjots2 Jotter" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_Nouveau" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Importer les notes d'un fichier gjots" #: ../gjots.glade2:99 msgid "_Import" msgstr "Im_porter" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Exporter les notes sélectionnées dans un fichier gjots" #: ../gjots.glade2:121 msgid "_Export" msgstr "_Exporter" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "Activer la lecture seule si possible" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Lecture seule" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Quitter gjots" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Quitter" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Barre d'outils" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "Afficher la barre d'outils principale" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "Barre d'outils _principale" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "Afficher la barre d'outils de l'arbre" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "Barre d'outils de l'_arbre" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Montrer le texte associé à l'icone" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "Montrer le texte de l'_icone" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Barre d'é_tat" #: ../gjots.glade2:357 ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Montrer toutes les notes sous la note courante" #: ../gjots.glade2:358 msgid "_Show All" msgstr "_Montrer tout" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Masquer toutes les notes exceptée la note mère" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "_Cacher tout" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Arbre" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Créer une nouvelle page" #: ../gjots.glade2:415 msgid "_New Page" msgstr "_Nouvelle page" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Créer une nouvelle note fille" #: ../gjots.glade2:437 msgid "New _Child" msgstr "Nouvel _Enfant" #: ../gjots.glade2:464 ../gjots.glade2:1525 msgid "Move selection up" msgstr "Déplacer la sélection vers le haut" #: ../gjots.glade2:465 msgid "_Up" msgstr "_Haut" #: ../gjots.glade2:486 ../gjots.glade2:1543 msgid "Move selection down" msgstr "Déplacer la sélection vers le bas" #: ../gjots.glade2:487 msgid "_Down" msgstr "_Bas" #: ../gjots.glade2:508 ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "La sélection devient une soeur de sa mère" #: ../gjots.glade2:509 msgid "P_romote" msgstr "_Remonter" #: ../gjots.glade2:530 ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "La sélection devient fille de la note précédente" #: ../gjots.glade2:531 msgid "D_emote" msgstr "_Descendre" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Créer une nouvelle note à partir de la sélection" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "_Scinder la note" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Fusionner les notes courantes dans la première" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "_Fusionner les notes" #: ../gjots.glade2:608 ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "Afficher la fenêtre de tri de l'arbre" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "_Trier l'arbre" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Te_xte" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Formater le paragraphe courant" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Formater" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Ajouter la date/l'heure (voir préférences)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Date" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Editer la note courante dans un éditeur externe" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_Editeur externe" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Afficher la fenêtre de tri du texte" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Trier le texte" #: ../gjots.glade2:822 ../gjots.glade2:1165 ../gjots.glade2:1468 msgid "New Page" msgstr "Nouvelle page" #: ../gjots.glade2:842 ../gjots.glade2:1486 msgid "New Child" msgstr "Nouvel Enfant" #: ../gjots.glade2:868 ../gjots.glade2:1526 msgid "Up" msgstr "Haut" #: ../gjots.glade2:888 ../gjots.glade2:1544 msgid "Down" msgstr "Bas" #: ../gjots.glade2:908 msgid "Promote" msgstr "Remonter" #: ../gjots.glade2:928 msgid "Demote" msgstr "Descendre" #: ../gjots.glade2:954 ../gjots.glade2:1638 msgid "Merge Items" msgstr "Fusionner les notes" #: ../gjots.glade2:980 ../gjots.glade2:1696 msgid "Show All" msgstr "Montrer tout" #: ../gjots.glade2:1000 ../gjots.glade2:1678 msgid "Hide All" msgstr "Cacher tout" #: ../gjots.glade2:1026 ../gjots.glade2:1714 ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Trier l'arbre" #: ../gjots.glade2:1052 msgid "Import" msgstr "Importer" #: ../gjots.glade2:1072 msgid "Export" msgstr "Exporter" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Lire le manuel (en utilisant gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "_Lire le manuel" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Créer un nouveau document gjots" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Ouvrir un document gjots existant" #: ../gjots.glade2:1183 msgid "Open" msgstr "Ouvrir" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Enregistrer le document gjots" #: ../gjots.glade2:1201 msgid "Save" msgstr "Enregistrer" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Imprimer ce document" #: ../gjots.glade2:1219 ../gjots.glade2:3031 msgid "Print" msgstr "Imprimer" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Couper la sélection" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Couper" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Copier la sélection" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Copier" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Coller la sélection" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Coller" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Couper le paragraphe à la longueur de ligne spécifiée" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Retour" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Appeler un éditeur externe pour la note courante" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Ed.Ext." #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Ajouter la date/l'heure (voir prefs)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Date" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Afficher la fenêtre de recherche" #: ../gjots.glade2:1389 ../gjots.glade2:2739 msgid "Find" msgstr "Chercher" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Afficher la fenêtre de tri" #: ../gjots.glade2:1407 ../gjots.glade2:3493 msgid "Sort" msgstr "Trier" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Afficher les préférences de gjots" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Prefs" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Créer une nouvelle note" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Créer une note fille" #: ../gjots.glade2:1562 msgid "Back" msgstr "Remonter" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Descendre" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Créer une nouvelle note avec le texte sélectionné" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Scinder la note" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Fusionner les notes sélectionnées" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Cacher toutes les notes sauf la note mère" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Copyright Bob Hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "Rui Nibau " #: ../gjots.glade2:1928 msgid "window1" msgstr "window1" #: ../gjots.glade2:1949 ../gjots.glade2:2002 ../gjots.glade2:2080 msgid "label1" msgstr "label1" #: ../gjots.glade2:1979 msgid "label2" msgstr "label2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Essayez à nouveau" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Lecture seule" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: préférences" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Choisir une police pour le texte" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Format de la date:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format de la date (voir strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%F" #: ../gjots.glade2:2300 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "" "Programme externe pour éditer la page (%s est remplacé par le nom du fichier temporaire édité)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "Editeur externe" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Longueur ligne:" #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Longueur de ligne pour couper les paragraphes" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Formateur de texte:" #: ../gjots.glade2:2418 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "Programme externe pour gérer le formatage du texte (%d est remplacé par la longueur de ligne actuelle)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Police actuelle du texte" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Sélectionner police" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Chercher & remplacer" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Chercher:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Remplacer:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "Chaîne à rechercher" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "Chaîne à remplacer" #: ../gjots.glade2:2759 msgid "Close" msgstr "Fermer" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Remplacer" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Remplacer tout" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Annuler" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Effacer" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Ne pas ignorer la casse" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Sensible à la casse" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "La chaîne à rechercher est une expression régulière (voir 'man 7 regexp')" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Expression régulière" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Recherche en arrière" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "En arrière" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Rechercher dans tout le fichier et pas uniquement dans cette note" #: ../gjots.glade2:2980 msgid "Global" msgstr "Global" #: ../gjots.glade2:3003 msgid " Options " msgstr " Options " #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "ex. lpr: " #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "Commande d'impression (peut être une commande shell)" #: ../gjots.glade2:3128 msgid " Print command " msgstr "Commande d'impression" #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Imprimer la page courante" #: ../gjots.glade2:3181 msgid "Page" msgstr "Page" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Imprimer les pages sélectionnées ou le texte" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Sélection" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Imprimer tout le fichier gjots" #: ../gjots.glade2:3222 msgid "All" msgstr "Tout" #: ../gjots.glade2:3245 msgid " Print Range " msgstr "Etendue de l'impression" #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Nouvelle page avant chaque nouvelle note gjots" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Alimentation papier" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Imprimer le titre des notes en gras" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Titres en gras" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Numérotation auto" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Format numérotation: " #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "ex. 1 pour 1.2.1, a" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr "Format d'impression" #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Trier par ordre croissant" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "Croissant" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Trier par ordre décroissant" #: ../gjots.glade2:3569 msgid "Descending" msgstr "Décroissant" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Trier par ordre alphabétique" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Alphabétique" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Trier par ordre numérique" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Numerique" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr "Paramètres de tri" #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "Combien de sous-niveaux à trier (0 pour aucun; -1 pour 'tous')" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr "Trier les sous-niveaux" #: ../gjots.glade2:3788 msgid "Select File" msgstr "Sélectionner un fichier" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" "Usage: gjots [OPTIONS] [NOM_FICHIER]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: Aide\n" "-d, --debug: messages pour déboguer sur sortie courante\n" "-g 123x456, --geometry=123x456: taille initiale (X x Y)\n" "-p, --purge-password ne pas se souvenir du mot de passe\n" "-r, --readonly: pas d'édition (ou verrouiller)\n" "-V, --version: Afficher la version et quitter\n" "\n" "NOM_FICHIER:\n" "\tnom du fichier gjots ($HOME/.gjotsfile par défaut)\n" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s nécessite python%s ou supérieur." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s nécessite pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Attention: modules lancés depuis %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Utiliser -h pour l'aide\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s version %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "Le formateur externe \"%s\" n'est pas installé - impossible de formater" #: ../lib/gui.py:326 msgid "not initialised" msgstr "Non initialisé" #: ../lib/gui.py:543 ../lib/gui.py:584 ../lib/gui.py:588 #: ../lib/gui.py:630 ../lib/gui.py:634 ../lib/gui.py:690 #: ../lib/gui.py:695 ../lib/gui.py:904 ../lib/gui.py:913 #: ../lib/gui.py:995 ../lib/gui.py:1004 ../lib/gui.py:1037 #: ../lib/gui.py:1042 ../lib/gui.py:1068 ../lib/gui.py:1349 #: ../lib/gui.py:1837 ../lib/gui.py:1856 ../lib/gui.py:1885 #: ../lib/gui.py:1908 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Aucune sélection" #: ../lib/gui.py:547 ../lib/gui.py:593 ../lib/gui.py:638 #: ../lib/gui.py:700 ../lib/gui.py:799 ../lib/gui.py:1073 #: ../lib/gui.py:1841 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "Pas de parent!" #: ../lib/gui.py:551 ../lib/gui.py:604 msgid "No child!" msgstr "Pas d'enfant!" #: ../lib/gui.py:554 ../lib/gui.py:598 msgid "Can't go any further" msgstr "Impossible d'aller plus loin" #: ../lib/gui.py:561 ../lib/gui.py:718 msgid "Internal error!" msgstr "Erreur interne!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Impossible d'aller plus loin!" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Texte coupé" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Texte copié" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Texte collé" #: ../lib/gui.py:870 msgid "All text selected" msgstr "Tout le texte sélectionné" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "Toutes les notes de l'arbre sélectionnées" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Aucune sélection!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Impossible de fusionner la note racine" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Rien à fusionner" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Impossible de fusionner des notes qui possèdent des notes filles" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d notes fusionnées" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Impossible de supprimer la note racine" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d notes de l'arbre coupées" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d notes de l'arbre copiées" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Rien à coller" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Notes de l'arbre collées" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Impossible d'écrire" #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Impossible de lancer '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Impossible de lire" #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "Texte modifié par l'éditeur externe" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "Texte non modifié par l'éditeur externe" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Erreur" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Impossible de verrouiller le fichier %s: déjà verrouillé par le processus %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr ": Enregistrer?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Enregistrer ce travail?" #: ../lib/gui.py:1285 msgid "New file" msgstr "Nouveau fichier" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Ouvrir un fichier..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "Aucun changement à enregistrer" #: ../lib/gui.py:1314 ../lib/gui.py:1334 msgid "Saved." msgstr "Enregistré." #: ../lib/gui.py:1316 ../lib/gui.py:1336 ../lib/file.py:429 msgid "Not saved." msgstr "Non enregistré." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Rien à enregistrer" #: ../lib/gui.py:1332 ../lib/file.py:606 msgid "Save as ..." msgstr "Enregistrer sous..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Importer depuis..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Exporter vers..." #: ../lib/gui.py:1613 ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Attention: ouverture du manuel de gjots2 depuis %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 est nécessaire à cette application!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" "gjots2: Attention: la liste de sélection est NULL. Skipping tree selection changed \n" "event." #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Impossible d'aller plus loin" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "L'arbre est vide!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: mauvaises spécifications géométriques: %s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "Nouveau...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": version " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Expression régulière mal formée" #: ../lib/find.py:198 ../lib/find.py:251 msgid "Not found" msgstr "Rien trouvé" #: ../lib/find.py:200 msgid "Found" msgstr "Trouvé" #: ../lib/find.py:254 msgid "Replace?" msgstr "Remplacer?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d substitutions" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Entrer le mot de passe pour" #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Entrer le mot de passe" #: ../lib/file.py:254 msgid "Password: " msgstr "Mot de passe: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Confirmer: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Le mot de passe n'a pas été confirmé" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Impossible de trouver le programme ccrypt - installez-le et ré-essayez" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Impossible de trouver le programme gpg - Installez-le et ré-essayez" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Impossible de trouver le programme openssl - Installez-le et ré-essayez" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Impossible d'ouvrir \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Mauvais mot de passe" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "Le fichier ne peut être verrouillé" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Impossible d'écrire dans " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Impossible de verrouiller le fichier" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s n'est pas lisible" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: pas de permission" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: verrouillé par le processus numéro %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: impossible de verrouiller le fichier." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "Ce fichier est déjà ouvert!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s est verrouillé par pid %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Impossible de créer un fichier verrouillé dans " #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "%s n'est pas ouvert en écriture" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s existe déjà." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "remplacer %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Cant find sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Erreur interne" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Rien à trier!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Trier le texte" gjots2-2.4.1/po/en_US/0000775000301100007650000000000012234163053014173 5ustar bhepplebhepplegjots2-2.4.1/po/en_US/LC_MESSAGES/0000755000301100007650000000000012234163053015756 5ustar bhepplebhepplegjots2-2.4.1/po/en_US/LC_MESSAGES/gjots2.mo0000664000301100007650000003712412234163053017534 0ustar bhepplebhepple$[,   0BYl +%#9Yks {'!   4 9 CP gs0$!F ` my   C@_D  <N`rv  ' % @NV7fWW(Nw7308 >LS'\#5#-3"a*  &  1 ; D O X b u        ! !! 2!@!^!g! l!w! !!!!!!! """."#J" n""" "$""" "# # ## ##/#B#V#]#(n# # # #.#+#$$%-$S$n$ s$ }$$$$$ $($ %$'%L%^%s%y% %%% %% %%% &%& ;&I&X& j&t&w&&5&&&&& && &' '' ' )' 4' >' I' U' a'k'q'1u'' '' '''((6(#I(m(t({( ()(+((#)3)F)BU) * ******* ++/+A+X+k+~++ +++%+#,8,X,j,r, z,',!,,,, , - --3- 8- B-O- f-r-----0-.$ .E. _. l.x. ... ... ....C/@^/D/// 00;0M0_0q0u000 00 000'00 11%1 ?1M1U17e1W1W1(M2v222722323/373 =3K3R3'[3#3533334"4-24"`4*4 4 4&44 55 05:5 C5N5 W5a5 t5 ~5 5 55555556 66 16?6]6f6 k6v6 666!666 777-7#I7 m777 7$777 78 8 88 "8.8A8U8\8(m8 8 8 8.8+899%,9R9m9 r9 |99999 9(9 :$&:K:]:r:x: ::: :: :%: ;$; :;H;W; i;s;v;;5;;;;; ;; ;< << < (< 3< =< H< T< `<j<p<1t<< << <<<==5=#H=l=s=z= =)=+==#>2>E>pNi u4B\9KH73SEVlr-I!Mz0T1<=WZX2*/}>JQ%qy[{`d;PofY|RCe(tO$]+wg8m^k jh)D~a5?xv :Us" #c.&_ bLA@',GFn6 Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob Hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUse -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditsxterm -e vi %sProject-Id-Version: gjots2 Report-Msgid-Bugs-To: bhepple@freeshell.org POT-Creation-Date: 2005-12-24 15:11+1000 PO-Revision-Date: 2005-12-24 16:45+1000 Last-Translator: Bob hepple Language-Team: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Options Print Range Print command Print formatting Sort Parameters Sort Sublevels %F%d items merged%d substitutions%d tree items copied%d tree items cut%s is locked by pid %d%s is not readable%s is not writable%s requires pygtk-%s.%s requires python%s or higher.%s version %s%s: Warning: opening gjots2 manual from %s %s: Warning: running modules from %s %s: bad geometry specification: %s %s: locked by process number %d%s: no permission: Error: Save?: version Add a time/date stamp (see preferences)Add a time/date stamp (see prefs)AllAll text selectedAll tree items selectedAlphabeticAscendingAuto NumberAuto-number format: BackBackwardsBad passwordBad regular expressionBold titlesCan't delete the root itemCan't go any furtherCan't go furtherCan't go further!Can't lock fileCan't lock file %s: already locked by process %dCan't make a lockfile in Can't merge items that have childrenCan't merge the root itemCan't open "Can't read Can't run '%s'Can't write Can't write to CancelChoose a font for the text panelClearCloseConfirm: CopyCopy selected itemsCopyright Bob hepple 2002-2006Could not find the ccrypt program - please install it and try againCould not find the gpg program - please install it and try againCould not find the openssl program - please install it and try againCourier 10 Pitch 10Create a new childCreate a new child Create a new gjots documentCreate a new itemCreate a new pageCurrent text fontCutCut selected itemsD_emoteDateDate format:DemoteDescendingDon't ignore caseDownEdit current item in an external editorEnter password for Exit gjotsExportExport selected items to a gjots fileExport to ...Ext.Ed.External editorExternal formatter "%s" is not installed - can't formatExternal program to edit a page (%s is replaced by the name of the temporary edit file)External program to pipe text for formatting (%d is replaced by the current line width)Feeds a page before every new gjots itemFile cannot be lockedFindFind & replaceFind string is a regular expression (see 'man 7 regex')Find:Format for the timestamp function (see strftime(3))Format the current paragraphForwardFoundGjots2 JotterGlobalHide AllHide all items except for the top levelHide all items except the top levelHow many sublevels to sort (0 for none; -1 for 'all')ImportImport from ...Import items from a gjots fileInternal errorInternal error!Invoke an external editor on the current itemLine length for paragraph wrappingMake a new item from the current selectionMatch caseMerge ItemsMerge current items into the first oneMerge selected items togetherMove selection downMove selection upNew ChildNew PageNew _ChildNew fileNew...>>>No changes to saveNo child!No parent!Not foundNot saved.Nothing selectedNothing selected!Nothing to mergeNothing to pasteNothing to saveNothing to sort!NumericOpenOpen an existing gjots documentOpen file ...Open gjots preferences windowP_romotePagePage feedsPassword was not confirmedPassword: PastePaste selected itemsPopup the find and replace dialogPopup the sort dialogPopup the sort text dialogPrefsPrintPrint the current pagePrint the entire gjots filePrint the gjots item titles in boldPrint the selected pages or textPrint this documentPromoteRead onlyRead the online manual (using gjots)Regular ExpressionReplaceReplace AllReplace:Replace?S_ort TreeSaveSave as ...Save current work?Save gjots documentSaved.Search backwardsSearches entire file not just this entrySelect FileSelect FontSelectionSelection becomes a child of the previous itemSelection becomes a sibling to their parentShow AllShow _Icon TextShow all items below the current itemShow the related icon textSortSort TextSort TreeSort in alphabetic orderSort in ascending orderSort in descending orderSort in numeric orderSplit ItemSplit the text selection into a new itemStatus _BarStore and organise your random notesString to replaceString to search forTe_xtText Line Length: Text copiedText cutText formatter: Text pastedThat file is already open!To_p ToolbarToggle the read-only flag if possibleToggles the main toolbarToggles tree tool barTre_e ToolbarTree is empty!Tree items pastedTry againUpUse -h for help WrapWrap the current paragraph to the current line length_Down_Export_External Edit_Format_Hide All_Import_Merge Items_New_New Page_Quit_Read manual_Read-only_Show All_Sort Text_Split Item_Time stamp_Toolbars_Tree_Up_get_settings: Cant find sortAscendingRadioButtonabcdefghijk ABCDEFGHIJKe.g. lpr: eg. 1 for 1.2.1, afmt -w %d gjotsgjots: %s already exists.gjots: Enter Passwordgjots: can't lock file.gjots: preferenceshttp://bhepple.freeshell.org/gjots2label1label2not initialisedoverwrite %s?print command (can be a shell expression)pygtk-2.2 is required for this application!text changed by external editortext not changed by external editortranslator_creditsxterm -e vi %sgjots2-2.4.1/po/en_US.po0000664000301100007650000005604612234162543014551 0ustar bhepplebhepple# Language file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # msgid "" msgstr "" "Project-Id-Version: gjots2\n" "Report-Msgid-Bugs-To: bhepple@freeshell.org\n" "POT-Creation-Date: 2005-12-24 15:11+1000\n" "PO-Revision-Date: 2005-12-24 16:45+1000\n" "Last-Translator: Bob hepple \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "Store and organise your random notes" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "Gjots2 Jotter" #: ../gjots.glade2:10 msgid "gjots" msgstr "gjots" #: ../gjots.glade2:53 msgid "_New" msgstr "_New" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "Import items from a gjots file" #: ../gjots.glade2:99 msgid "_Import" msgstr "_Import" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "Export selected items to a gjots file" #: ../gjots.glade2:121 msgid "_Export" msgstr "_Export" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "Toggle the read-only flag if possible" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "_Read-only" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "Exit gjots" #: ../gjots.glade2:180 msgid "_Quit" msgstr "_Quit" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "_Toolbars" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "Toggles the main toolbar" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "To_p Toolbar" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "Toggles tree tool bar" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "Tre_e Toolbar" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "Show the related icon text" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "Show _Icon Text" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "Status _Bar" #: ../gjots.glade2:357 ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "Show all items below the current item" #: ../gjots.glade2:358 msgid "_Show All" msgstr "_Show All" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "Hide all items except the top level" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "_Hide All" #: ../gjots.glade2:405 msgid "_Tree" msgstr "_Tree" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "Create a new page" #: ../gjots.glade2:415 msgid "_New Page" msgstr "_New Page" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "Create a new child " #: ../gjots.glade2:437 msgid "New _Child" msgstr "New _Child" #: ../gjots.glade2:464 ../gjots.glade2:1525 msgid "Move selection up" msgstr "Move selection up" #: ../gjots.glade2:465 msgid "_Up" msgstr "_Up" #: ../gjots.glade2:486 ../gjots.glade2:1543 msgid "Move selection down" msgstr "Move selection down" #: ../gjots.glade2:487 msgid "_Down" msgstr "_Down" #: ../gjots.glade2:508 ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "Selection becomes a sibling to their parent" #: ../gjots.glade2:509 msgid "P_romote" msgstr "P_romote" #: ../gjots.glade2:530 ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "Selection becomes a child of the previous item" #: ../gjots.glade2:531 msgid "D_emote" msgstr "D_emote" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "Make a new item from the current selection" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "_Split Item" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "Merge current items into the first one" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "_Merge Items" #: ../gjots.glade2:608 ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "S_ort Tree" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "Te_xt" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "Format the current paragraph" #: ../gjots.glade2:644 msgid "_Format" msgstr "_Format" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "Add a time/date stamp (see preferences)" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "_Time stamp" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "Edit current item in an external editor" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "_External Edit" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "Popup the sort text dialog" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "_Sort Text" #: ../gjots.glade2:822 ../gjots.glade2:1165 ../gjots.glade2:1468 msgid "New Page" msgstr "New Page" #: ../gjots.glade2:842 ../gjots.glade2:1486 msgid "New Child" msgstr "New Child" #: ../gjots.glade2:868 ../gjots.glade2:1526 msgid "Up" msgstr "Up" #: ../gjots.glade2:888 ../gjots.glade2:1544 msgid "Down" msgstr "Down" #: ../gjots.glade2:908 msgid "Promote" msgstr "Promote" #: ../gjots.glade2:928 msgid "Demote" msgstr "Demote" #: ../gjots.glade2:954 ../gjots.glade2:1638 msgid "Merge Items" msgstr "Merge Items" #: ../gjots.glade2:980 ../gjots.glade2:1696 msgid "Show All" msgstr "Show All" #: ../gjots.glade2:1000 ../gjots.glade2:1678 msgid "Hide All" msgstr "Hide All" #: ../gjots.glade2:1026 ../gjots.glade2:1714 ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "Sort Tree" #: ../gjots.glade2:1052 msgid "Import" msgstr "Import" #: ../gjots.glade2:1072 msgid "Export" msgstr "Export" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "Read the online manual (using gjots)" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "_Read manual" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "Create a new gjots document" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "Open an existing gjots document" #: ../gjots.glade2:1183 msgid "Open" msgstr "Open" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "Save gjots document" #: ../gjots.glade2:1201 msgid "Save" msgstr "Save" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "Print this document" #: ../gjots.glade2:1219 ../gjots.glade2:3031 msgid "Print" msgstr "Print" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "Cut selected items" #: ../gjots.glade2:1259 msgid "Cut" msgstr "Cut" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "Copy selected items" #: ../gjots.glade2:1277 msgid "Copy" msgstr "Copy" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "Paste selected items" #: ../gjots.glade2:1295 msgid "Paste" msgstr "Paste" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "Wrap the current paragraph to the current line length" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "Wrap" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "Invoke an external editor on the current item" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "Ext.Ed." #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "Add a time/date stamp (see prefs)" #: ../gjots.glade2:1371 msgid "Date" msgstr "Date" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "Popup the find and replace dialog" #: ../gjots.glade2:1389 ../gjots.glade2:2739 msgid "Find" msgstr "Find" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "Popup the sort dialog" #: ../gjots.glade2:1407 ../gjots.glade2:3493 msgid "Sort" msgstr "Sort" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "Open gjots preferences window" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "Prefs" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "Create a new item" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "Create a new child" #: ../gjots.glade2:1562 msgid "Back" msgstr "Back" #: ../gjots.glade2:1580 msgid "Forward" msgstr "Forward" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "Split the text selection into a new item" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "Split Item" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "Merge selected items together" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "Hide all items except for the top level" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "Copyright Bob hepple 2002-2006" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "http://bhepple.freeshell.org/gjots2" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "translator_credits" #: ../gjots.glade2:1928 msgid "window1" msgstr "" #: ../gjots.glade2:1949 ../gjots.glade2:2002 ../gjots.glade2:2080 msgid "label1" msgstr "label1" #: ../gjots.glade2:1979 msgid "label2" msgstr "label2" #: ../gjots.glade2:2168 msgid "Try again" msgstr "Try again" #: ../gjots.glade2:2181 msgid "Read only" msgstr "Read only" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "gjots: preferences" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "Choose a font for the text panel" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "Date format:" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "Format for the timestamp function (see strftime(3))" #: ../gjots.glade2:2282 msgid "%F" msgstr "%F" #: ../gjots.glade2:2300 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "External program to edit a page (%s is replaced by the name of the temporary edit file)" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "xterm -e vi %s" #: ../gjots.glade2:2323 msgid "External editor" msgstr "External editor" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "Text Line Length: " #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "Line length for paragraph wrapping" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "Text formatter: " #: ../gjots.glade2:2418 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "External program to pipe text for formatting (%d is replaced by the current line width)" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "fmt -w %d " #: ../gjots.glade2:2441 msgid "Current text font" msgstr "Current text font" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "Courier 10 Pitch 10" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "Select Font" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "abcdefghijk ABCDEFGHIJK" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "Find & replace" #: ../gjots.glade2:2624 msgid "Find:" msgstr "Find:" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "Replace:" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "String to search for" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "String to replace" #: ../gjots.glade2:2759 msgid "Close" msgstr "Close" #: ../gjots.glade2:2779 msgid "Replace" msgstr "Replace" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "Replace All" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "Cancel" #: ../gjots.glade2:2839 msgid "Clear" msgstr "Clear" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "Don't ignore case" #: ../gjots.glade2:2914 msgid "Match case" msgstr "Match case" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "Find string is a regular expression (see 'man 7 regex')" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "Regular Expression" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "Search backwards" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "Backwards" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "Searches entire file not just this entry" #: ../gjots.glade2:2980 msgid "Global" msgstr "Global" #: ../gjots.glade2:3003 msgid " Options " msgstr " Options " #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "e.g. lpr: " #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "print command (can be a shell expression)" #: ../gjots.glade2:3128 msgid " Print command " msgstr " Print command " #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "Print the current page" #: ../gjots.glade2:3181 msgid "Page" msgstr "Page" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "Print the selected pages or text" #: ../gjots.glade2:3201 msgid "Selection" msgstr "Selection" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "Print the entire gjots file" #: ../gjots.glade2:3222 msgid "All" msgstr "All" #: ../gjots.glade2:3245 msgid " Print Range " msgstr " Print Range " #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "Feeds a page before every new gjots item" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "Page feeds" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "Print the gjots item titles in bold" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "Bold titles" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "Auto Number" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "Auto-number format: " #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "eg. 1 for 1.2.1, a" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr " Print formatting " #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "Sort in ascending order" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "Ascending" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "Sort in descending order" #: ../gjots.glade2:3569 msgid "Descending" msgstr "Descending" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "Sort in alphabetic order" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "Alphabetic" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "Sort in numeric order" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "Numeric" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr " Sort Parameters " #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "How many sublevels to sort (0 for none; -1 for 'all')" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr " Sort Sublevels " #: ../gjots.glade2:3788 msgid "Select File" msgstr "Select File" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "%s requires python%s or higher." #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "%s requires pygtk-%s." #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "%s: Warning: running modules from %s\n" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "Use -h for help\n" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "%s version %s" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "External formatter \"%s\" is not installed - can't format" #: ../lib/gui.py:326 msgid "not initialised" msgstr "not initialised" #: ../lib/gui.py:543 ../lib/gui.py:584 ../lib/gui.py:588 #: ../lib/gui.py:630 ../lib/gui.py:634 ../lib/gui.py:690 #: ../lib/gui.py:695 ../lib/gui.py:904 ../lib/gui.py:913 #: ../lib/gui.py:995 ../lib/gui.py:1004 ../lib/gui.py:1037 #: ../lib/gui.py:1042 ../lib/gui.py:1068 ../lib/gui.py:1349 #: ../lib/gui.py:1837 ../lib/gui.py:1856 ../lib/gui.py:1885 #: ../lib/gui.py:1908 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "Nothing selected" #: ../lib/gui.py:547 ../lib/gui.py:593 ../lib/gui.py:638 #: ../lib/gui.py:700 ../lib/gui.py:799 ../lib/gui.py:1073 #: ../lib/gui.py:1841 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "No parent!" #: ../lib/gui.py:551 ../lib/gui.py:604 msgid "No child!" msgstr "No child!" #: ../lib/gui.py:554 ../lib/gui.py:598 msgid "Can't go any further" msgstr "Can't go any further" #: ../lib/gui.py:561 ../lib/gui.py:718 msgid "Internal error!" msgstr "Internal error!" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "Can't go further!" #: ../lib/gui.py:838 msgid "Text cut" msgstr "Text cut" #: ../lib/gui.py:849 msgid "Text copied" msgstr "Text copied" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "Text pasted" #: ../lib/gui.py:870 msgid "All text selected" msgstr "All text selected" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "All tree items selected" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "Nothing selected!" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "Can't merge the root item" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "Nothing to merge" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "Can't merge items that have children" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "%d items merged" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "Can't delete the root item" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "%d tree items cut" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "%d tree items copied" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "Nothing to paste" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "Tree items pasted" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "Can't write " #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "Can't run '%s'" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "Can't read " #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "text changed by external editor" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "text not changed by external editor" #: ../lib/gui.py:1144 msgid ": Error" msgstr ": Error" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "Can't lock file %s: already locked by process %d" #: ../lib/gui.py:1263 msgid ": Save?" msgstr ": Save?" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "Save current work?" #: ../lib/gui.py:1285 msgid "New file" msgstr "New file" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "Open file ..." #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "No changes to save" #: ../lib/gui.py:1314 ../lib/gui.py:1334 msgid "Saved." msgstr "Saved." #: ../lib/gui.py:1316 ../lib/gui.py:1336 ../lib/file.py:429 msgid "Not saved." msgstr "Not saved." #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "Nothing to save" #: ../lib/gui.py:1332 ../lib/file.py:606 msgid "Save as ..." msgstr "Save as ..." #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "Import from ..." #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "Export to ..." #: ../lib/gui.py:1613 ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "%s: Warning: opening gjots2 manual from %s\n" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "pygtk-2.2 is required for this application!" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "Can't go further" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "Tree is empty!" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "%s: bad geometry specification: %s\n" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "New...>>>" #: ../lib/gui.py:2235 msgid ": version " msgstr ": version " #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "Bad regular expression" #: ../lib/find.py:198 ../lib/find.py:251 msgid "Not found" msgstr "Not found" #: ../lib/find.py:200 msgid "Found" msgstr "Found" #: ../lib/find.py:254 msgid "Replace?" msgstr "Replace?" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "%d substitutions" #: ../lib/file.py:250 msgid "Enter password for " msgstr "Enter password for " #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "gjots: Enter Password" #: ../lib/file.py:254 msgid "Password: " msgstr "Password: " #: ../lib/file.py:255 msgid "Confirm: " msgstr "Confirm: " #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "Password was not confirmed" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "Could not find the ccrypt program - please install it and try again" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "Could not find the gpg program - please install it and try again" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "Could not find the openssl program - please install it and try again" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "Can't open \"" #: ../lib/file.py:390 msgid "Bad password" msgstr "Bad password" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "File cannot be locked" #: ../lib/file.py:430 msgid "Can't write to " msgstr "Can't write to " #: ../lib/file.py:433 msgid "Can't lock file" msgstr "Can't lock file" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "%s is not readable" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "%s: no permission" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "%s: locked by process number %d" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "gjots: can't lock file." #: ../lib/file.py:618 msgid "That file is already open!" msgstr "That file is already open!" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "%s is locked by pid %d" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "Can't make a lockfile in " #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "%s is not writable" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "gjots: %s already exists." #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "overwrite %s?" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "_get_settings: Cant find sortAscendingRadioButton" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "Internal error" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "Nothing to sort!" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "Sort Text" gjots2-2.4.1/po/gjots2.pot0000664000301100007650000004453712234162543015136 0ustar bhepplebhepple# Messages master file for gjots2. # Copyright (C) 2005-2006 Bob Hepple # This file is distributed under the same license as the gjots2 package. # Bob Hepple , 2005. # msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2005-12-24 15:29+1000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: ../gjots2.desktop.in.h:1 msgid "Store and organise your random notes" msgstr "" #: ../gjots2.desktop.in.h:2 msgid "Gjots2 Jotter" msgstr "" #: ../gjots.glade2:10 msgid "gjots" msgstr "" #: ../gjots.glade2:53 msgid "_New" msgstr "" #: ../gjots.glade2:98 msgid "Import items from a gjots file" msgstr "" #: ../gjots.glade2:99 msgid "_Import" msgstr "" #: ../gjots.glade2:120 msgid "Export selected items to a gjots file" msgstr "" #: ../gjots.glade2:121 msgid "_Export" msgstr "" #: ../gjots.glade2:162 msgid "Toggle the read-only flag if possible" msgstr "" #: ../gjots.glade2:163 msgid "_Read-only" msgstr "" #: ../gjots.glade2:179 msgid "Exit gjots" msgstr "" #: ../gjots.glade2:180 msgid "_Quit" msgstr "" #: ../gjots.glade2:288 msgid "_Toolbars" msgstr "" #: ../gjots.glade2:297 msgid "Toggles the main toolbar" msgstr "" #: ../gjots.glade2:298 msgid "To_p Toolbar" msgstr "" #: ../gjots.glade2:308 msgid "Toggles tree tool bar" msgstr "" #: ../gjots.glade2:309 msgid "Tre_e Toolbar" msgstr "" #: ../gjots.glade2:325 msgid "Show the related icon text" msgstr "" #: ../gjots.glade2:326 msgid "Show _Icon Text" msgstr "" #: ../gjots.glade2:341 msgid "Status _Bar" msgstr "" #: ../gjots.glade2:357 ../gjots.glade2:1695 msgid "Show all items below the current item" msgstr "" #: ../gjots.glade2:358 msgid "_Show All" msgstr "" #: ../gjots.glade2:379 msgid "Hide all items except the top level" msgstr "" #: ../gjots.glade2:380 msgid "_Hide All" msgstr "" #: ../gjots.glade2:405 msgid "_Tree" msgstr "" #: ../gjots.glade2:414 msgid "Create a new page" msgstr "" #: ../gjots.glade2:415 msgid "_New Page" msgstr "" #: ../gjots.glade2:436 msgid "Create a new child " msgstr "" #: ../gjots.glade2:437 msgid "New _Child" msgstr "" #: ../gjots.glade2:464 ../gjots.glade2:1525 msgid "Move selection up" msgstr "" #: ../gjots.glade2:465 msgid "_Up" msgstr "" #: ../gjots.glade2:486 ../gjots.glade2:1543 msgid "Move selection down" msgstr "" #: ../gjots.glade2:487 msgid "_Down" msgstr "" #: ../gjots.glade2:508 ../gjots.glade2:1561 msgid "Selection becomes a sibling to their parent" msgstr "" #: ../gjots.glade2:509 msgid "P_romote" msgstr "" #: ../gjots.glade2:530 ../gjots.glade2:1579 msgid "Selection becomes a child of the previous item" msgstr "" #: ../gjots.glade2:531 msgid "D_emote" msgstr "" #: ../gjots.glade2:558 msgid "Make a new item from the current selection" msgstr "" #: ../gjots.glade2:559 msgid "_Split Item" msgstr "" #: ../gjots.glade2:580 msgid "Merge current items into the first one" msgstr "" #: ../gjots.glade2:581 msgid "_Merge Items" msgstr "" #: ../gjots.glade2:608 ../gjots.glade2:1713 msgid "Popup the sort tree dialog" msgstr "" #: ../gjots.glade2:609 msgid "S_ort Tree" msgstr "" #: ../gjots.glade2:634 msgid "Te_xt" msgstr "" #: ../gjots.glade2:643 msgid "Format the current paragraph" msgstr "" #: ../gjots.glade2:644 msgid "_Format" msgstr "" #: ../gjots.glade2:666 msgid "Add a time/date stamp (see preferences)" msgstr "" #: ../gjots.glade2:667 msgid "_Time stamp" msgstr "" #: ../gjots.glade2:688 msgid "Edit current item in an external editor" msgstr "" #: ../gjots.glade2:689 msgid "_External Edit" msgstr "" #: ../gjots.glade2:710 msgid "Popup the sort text dialog" msgstr "" #: ../gjots.glade2:711 msgid "_Sort Text" msgstr "" #: ../gjots.glade2:822 ../gjots.glade2:1165 ../gjots.glade2:1468 msgid "New Page" msgstr "" #: ../gjots.glade2:842 ../gjots.glade2:1486 msgid "New Child" msgstr "" #: ../gjots.glade2:868 ../gjots.glade2:1526 msgid "Up" msgstr "" #: ../gjots.glade2:888 ../gjots.glade2:1544 msgid "Down" msgstr "" #: ../gjots.glade2:908 msgid "Promote" msgstr "" #: ../gjots.glade2:928 msgid "Demote" msgstr "" #: ../gjots.glade2:954 ../gjots.glade2:1638 msgid "Merge Items" msgstr "" #: ../gjots.glade2:980 ../gjots.glade2:1696 msgid "Show All" msgstr "" #: ../gjots.glade2:1000 ../gjots.glade2:1678 msgid "Hide All" msgstr "" #: ../gjots.glade2:1026 ../gjots.glade2:1714 ../lib/sortDialog.py:307 msgid "Sort Tree" msgstr "" #: ../gjots.glade2:1052 msgid "Import" msgstr "" #: ../gjots.glade2:1072 msgid "Export" msgstr "" #: ../gjots.glade2:1105 msgid "Read the online manual (using gjots)" msgstr "" #: ../gjots.glade2:1106 msgid "_Read manual" msgstr "" #: ../gjots.glade2:1164 msgid "Create a new gjots document" msgstr "" #: ../gjots.glade2:1182 msgid "Open an existing gjots document" msgstr "" #: ../gjots.glade2:1183 msgid "Open" msgstr "" #: ../gjots.glade2:1200 msgid "Save gjots document" msgstr "" #: ../gjots.glade2:1201 msgid "Save" msgstr "" #: ../gjots.glade2:1218 msgid "Print this document" msgstr "" #: ../gjots.glade2:1219 ../gjots.glade2:3031 msgid "Print" msgstr "" #: ../gjots.glade2:1258 msgid "Cut selected items" msgstr "" #: ../gjots.glade2:1259 msgid "Cut" msgstr "" #: ../gjots.glade2:1276 msgid "Copy selected items" msgstr "" #: ../gjots.glade2:1277 msgid "Copy" msgstr "" #: ../gjots.glade2:1294 msgid "Paste selected items" msgstr "" #: ../gjots.glade2:1295 msgid "Paste" msgstr "" #: ../gjots.glade2:1334 msgid "Wrap the current paragraph to the current line length" msgstr "" #: ../gjots.glade2:1335 msgid "Wrap" msgstr "" #: ../gjots.glade2:1352 msgid "Invoke an external editor on the current item" msgstr "" #: ../gjots.glade2:1353 msgid "Ext.Ed." msgstr "" #: ../gjots.glade2:1370 msgid "Add a time/date stamp (see prefs)" msgstr "" #: ../gjots.glade2:1371 msgid "Date" msgstr "" #: ../gjots.glade2:1388 msgid "Popup the find and replace dialog" msgstr "" #: ../gjots.glade2:1389 ../gjots.glade2:2739 msgid "Find" msgstr "" #: ../gjots.glade2:1406 msgid "Popup the sort dialog" msgstr "" #: ../gjots.glade2:1407 ../gjots.glade2:3493 msgid "Sort" msgstr "" #: ../gjots.glade2:1424 msgid "Open gjots preferences window" msgstr "" #: ../gjots.glade2:1425 msgid "Prefs" msgstr "" #: ../gjots.glade2:1467 msgid "Create a new item" msgstr "" #: ../gjots.glade2:1485 msgid "Create a new child" msgstr "" #: ../gjots.glade2:1562 msgid "Back" msgstr "" #: ../gjots.glade2:1580 msgid "Forward" msgstr "" #: ../gjots.glade2:1619 msgid "Split the text selection into a new item" msgstr "" #: ../gjots.glade2:1620 msgid "Split Item" msgstr "" #: ../gjots.glade2:1637 msgid "Merge selected items together" msgstr "" #: ../gjots.glade2:1677 msgid "Hide all items except for the top level" msgstr "" #: ../gjots.glade2:1917 msgid "Copyright Bob Hepple 2002-2006" msgstr "" #: ../gjots.glade2:1918 msgid "http://bhepple.freeshell.org/gjots2" msgstr "" #: ../gjots.glade2:1922 msgid "translator_credits" msgstr "" #: ../gjots.glade2:1928 msgid "window1" msgstr "" #: ../gjots.glade2:1949 ../gjots.glade2:2002 ../gjots.glade2:2080 msgid "label1" msgstr "" #: ../gjots.glade2:1979 msgid "label2" msgstr "" #: ../gjots.glade2:2168 msgid "Try again" msgstr "" #: ../gjots.glade2:2181 msgid "Read only" msgstr "" #: ../gjots.glade2:2201 msgid "gjots: preferences" msgstr "" #: ../gjots.glade2:2232 msgid "Choose a font for the text panel" msgstr "" #: ../gjots.glade2:2253 msgid "Date format:" msgstr "" #: ../gjots.glade2:2277 msgid "Format for the timestamp function (see strftime(3))" msgstr "" #: ../gjots.glade2:2282 msgid "%F" msgstr "" #: ../gjots.glade2:2300 msgid "" "External program to edit a page (%s is replaced by the name of the temporary " "edit file)" msgstr "" #: ../gjots.glade2:2305 msgid "xterm -e vi %s" msgstr "" #: ../gjots.glade2:2323 msgid "External editor" msgstr "" #: ../gjots.glade2:2347 msgid "Text Line Length: " msgstr "" #: ../gjots.glade2:2371 msgid "Line length for paragraph wrapping" msgstr "" #: ../gjots.glade2:2394 msgid "Text formatter: " msgstr "" #: ../gjots.glade2:2418 msgid "" "External program to pipe text for formatting (%d is replaced by the current " "line width)" msgstr "" #: ../gjots.glade2:2423 msgid "fmt -w %d " msgstr "" #: ../gjots.glade2:2441 msgid "Current text font" msgstr "" #: ../gjots.glade2:2446 msgid "Courier 10 Pitch 10" msgstr "" #: ../gjots.glade2:2526 msgid "Select Font" msgstr "" #: ../gjots.glade2:2574 msgid "abcdefghijk ABCDEFGHIJK" msgstr "" #: ../gjots.glade2:2586 msgid "Find & replace" msgstr "" #: ../gjots.glade2:2624 msgid "Find:" msgstr "" #: ../gjots.glade2:2648 msgid "Replace:" msgstr "" #: ../gjots.glade2:2672 msgid "String to search for" msgstr "" #: ../gjots.glade2:2698 msgid "String to replace" msgstr "" #: ../gjots.glade2:2759 msgid "Close" msgstr "" #: ../gjots.glade2:2779 msgid "Replace" msgstr "" #: ../gjots.glade2:2799 msgid "Replace All" msgstr "" #: ../gjots.glade2:2819 msgid "Cancel" msgstr "" #: ../gjots.glade2:2839 msgid "Clear" msgstr "" #: ../gjots.glade2:2912 msgid "Don't ignore case" msgstr "" #: ../gjots.glade2:2914 msgid "Match case" msgstr "" #: ../gjots.glade2:2934 msgid "Find string is a regular expression (see 'man 7 regex')" msgstr "" #: ../gjots.glade2:2936 msgid "Regular Expression" msgstr "" #: ../gjots.glade2:2955 msgid "Search backwards" msgstr "" #: ../gjots.glade2:2957 msgid "Backwards" msgstr "" #: ../gjots.glade2:2978 msgid "Searches entire file not just this entry" msgstr "" #: ../gjots.glade2:2980 msgid "Global" msgstr "" #: ../gjots.glade2:3003 msgid " Options " msgstr "" #: ../gjots.glade2:3079 msgid "e.g. lpr: " msgstr "" #: ../gjots.glade2:3100 msgid "print command (can be a shell expression)" msgstr "" #: ../gjots.glade2:3128 msgid " Print command " msgstr "" #: ../gjots.glade2:3179 msgid "Print the current page" msgstr "" #: ../gjots.glade2:3181 msgid "Page" msgstr "" #: ../gjots.glade2:3199 msgid "Print the selected pages or text" msgstr "" #: ../gjots.glade2:3201 msgid "Selection" msgstr "" #: ../gjots.glade2:3220 msgid "Print the entire gjots file" msgstr "" #: ../gjots.glade2:3222 msgid "All" msgstr "" #: ../gjots.glade2:3245 msgid " Print Range " msgstr "" #: ../gjots.glade2:3302 msgid "Feeds a page before every new gjots item" msgstr "" #: ../gjots.glade2:3304 msgid "Page feeds" msgstr "" #: ../gjots.glade2:3321 msgid "Print the gjots item titles in bold" msgstr "" #: ../gjots.glade2:3323 msgid "Bold titles" msgstr "" #: ../gjots.glade2:3342 msgid "Auto Number" msgstr "" #: ../gjots.glade2:3373 msgid "Auto-number format: " msgstr "" #: ../gjots.glade2:3393 msgid "eg. 1 for 1.2.1, a" msgstr "" #: ../gjots.glade2:3424 msgid " Print formatting " msgstr "" #: ../gjots.glade2:3544 msgid "Sort in ascending order" msgstr "" #: ../gjots.glade2:3546 msgid "Ascending" msgstr "" #: ../gjots.glade2:3567 msgid "Sort in descending order" msgstr "" #: ../gjots.glade2:3569 msgid "Descending" msgstr "" #: ../gjots.glade2:3591 msgid "Sort in alphabetic order" msgstr "" #: ../gjots.glade2:3593 msgid "Alphabetic" msgstr "" #: ../gjots.glade2:3614 msgid "Sort in numeric order" msgstr "" #: ../gjots.glade2:3616 msgid "Numeric" msgstr "" #: ../gjots.glade2:3642 msgid " Sort Parameters " msgstr "" #: ../gjots.glade2:3693 msgid "How many sublevels to sort (0 for none; -1 for 'all')" msgstr "" #: ../gjots.glade2:3717 msgid " Sort Sublevels " msgstr "" #: ../gjots.glade2:3788 msgid "Select File" msgstr "" #: ../gjots2:14 msgid "" "Usage: gjots [OPTIONS] [FILENAME]\n" "A gnome-2/X11 jotter\n" "\n" "OPTIONS:\n" "-h, --help: this help\n" "-d, --debug: debug trace to stdout\n" "-g 123x456, --geometry=123x456: initial geometry (X x Y)\n" "-p, --purge-password\t\t\t\tdon't remember password\n" "-r, --readonly: no editing (or locking)\n" "-V, --version: print the version and exit\n" "\n" "FILENAME:\n" "\tgjots data filename (default is $HOME/.gjotsfile)\n" msgstr "" #: ../gjots2:39 #, python-format msgid "%s requires python%s or higher." msgstr "" #: ../gjots2:49 #, python-format msgid "%s requires pygtk-%s." msgstr "" #: ../gjots2:62 #, python-format msgid "%s: Warning: running modules from %s\n" msgstr "" #: ../gjots2:75 msgid "Use -h for help\n" msgstr "" #: ../gjots2:89 #, python-format msgid "%s version %s" msgstr "" #: ../lib/gui.py:96 #, python-format msgid "External formatter \"%s\" is not installed - can't format" msgstr "" #: ../lib/gui.py:326 msgid "not initialised" msgstr "" #: ../lib/gui.py:543 ../lib/gui.py:584 ../lib/gui.py:588 #: ../lib/gui.py:630 ../lib/gui.py:634 ../lib/gui.py:690 #: ../lib/gui.py:695 ../lib/gui.py:904 ../lib/gui.py:913 #: ../lib/gui.py:995 ../lib/gui.py:1004 ../lib/gui.py:1037 #: ../lib/gui.py:1042 ../lib/gui.py:1068 ../lib/gui.py:1349 #: ../lib/gui.py:1837 ../lib/gui.py:1856 ../lib/gui.py:1885 #: ../lib/gui.py:1908 ../lib/file.py:439 ../lib/file.py:444 #: ../lib/sortDialog.py:247 ../lib/sortDialog.py:252 #: ../lib/printDialog.py:110 ../lib/printDialog.py:115 msgid "Nothing selected" msgstr "" #: ../lib/gui.py:547 ../lib/gui.py:593 ../lib/gui.py:638 #: ../lib/gui.py:700 ../lib/gui.py:799 ../lib/gui.py:1073 #: ../lib/gui.py:1841 ../lib/sortDialog.py:263 msgid "No parent!" msgstr "" #: ../lib/gui.py:551 ../lib/gui.py:604 msgid "No child!" msgstr "" #: ../lib/gui.py:554 ../lib/gui.py:598 msgid "Can't go any further" msgstr "" #: ../lib/gui.py:561 ../lib/gui.py:718 msgid "Internal error!" msgstr "" #: ../lib/gui.py:642 msgid "Can't go further!" msgstr "" #: ../lib/gui.py:838 msgid "Text cut" msgstr "" #: ../lib/gui.py:849 msgid "Text copied" msgstr "" #: ../lib/gui.py:861 msgid "Text pasted" msgstr "" #: ../lib/gui.py:870 msgid "All text selected" msgstr "" #: ../lib/gui.py:876 msgid "All tree items selected" msgstr "" #: ../lib/gui.py:884 msgid "Nothing selected!" msgstr "" #: ../lib/gui.py:908 msgid "Can't merge the root item" msgstr "" #: ../lib/gui.py:917 msgid "Nothing to merge" msgstr "" #: ../lib/gui.py:924 msgid "Can't merge items that have children" msgstr "" #: ../lib/gui.py:954 #, python-format msgid "%d items merged" msgstr "" #: ../lib/gui.py:999 msgid "Can't delete the root item" msgstr "" #: ../lib/gui.py:1029 #, python-format msgid "%d tree items cut" msgstr "" #: ../lib/gui.py:1056 #, python-format msgid "%d tree items copied" msgstr "" #: ../lib/gui.py:1063 msgid "Nothing to paste" msgstr "" #: ../lib/gui.py:1079 msgid "Tree items pasted" msgstr "" #: ../lib/gui.py:1097 msgid "Can't write " msgstr "" #: ../lib/gui.py:1107 #, python-format msgid "Can't run '%s'" msgstr "" #: ../lib/gui.py:1116 msgid "Can't read " msgstr "" #: ../lib/gui.py:1124 msgid "text changed by external editor" msgstr "" #: ../lib/gui.py:1126 msgid "text not changed by external editor" msgstr "" #: ../lib/gui.py:1144 msgid ": Error" msgstr "" #: ../lib/gui.py:1157 #, python-format msgid "Can't lock file %s: already locked by process %d" msgstr "" #: ../lib/gui.py:1263 msgid ": Save?" msgstr "" #: ../lib/gui.py:1264 msgid "Save current work?" msgstr "" #: ../lib/gui.py:1285 msgid "New file" msgstr "" #: ../lib/gui.py:1301 msgid "Open file ..." msgstr "" #: ../lib/gui.py:1310 msgid "No changes to save" msgstr "" #: ../lib/gui.py:1314 ../lib/gui.py:1334 msgid "Saved." msgstr "" #: ../lib/gui.py:1316 ../lib/gui.py:1336 ../lib/file.py:429 msgid "Not saved." msgstr "" #: ../lib/gui.py:1330 msgid "Nothing to save" msgstr "" #: ../lib/gui.py:1332 ../lib/file.py:606 msgid "Save as ..." msgstr "" #: ../lib/gui.py:1346 msgid "Import from ..." msgstr "" #: ../lib/gui.py:1357 msgid "Export to ..." msgstr "" #: ../lib/gui.py:1613 ../lib/gui.py:1616 #, python-format msgid "%s: Warning: opening gjots2 manual from %s\n" msgstr "" #: ../lib/gui.py:1780 msgid "pygtk-2.2 is required for this application!" msgstr "" #: ../lib/gui.py:1786 msgid "" "gjots2: warning: selection list is NULL. Skipping tree selection changed \n" "event." msgstr "" #: ../lib/gui.py:1845 msgid "Can't go further" msgstr "" #: ../lib/gui.py:1874 msgid "Tree is empty!" msgstr "" #: ../lib/gui.py:2015 #, python-format msgid "%s: bad geometry specification: %s\n" msgstr "" #: ../lib/gui.py:2179 msgid "New...>>>" msgstr "" #: ../lib/gui.py:2235 msgid ": version " msgstr "" #: ../lib/find.py:154 msgid "Bad regular expression" msgstr "" #: ../lib/find.py:198 ../lib/find.py:251 msgid "Not found" msgstr "" #: ../lib/find.py:200 msgid "Found" msgstr "" #: ../lib/find.py:254 msgid "Replace?" msgstr "" #: ../lib/find.py:267 #, python-format msgid "%d substitutions" msgstr "" #: ../lib/file.py:250 msgid "Enter password for " msgstr "" #: ../lib/file.py:252 msgid "gjots: Enter Password" msgstr "" #: ../lib/file.py:254 msgid "Password: " msgstr "" #: ../lib/file.py:255 msgid "Confirm: " msgstr "" #: ../lib/file.py:263 msgid "Password was not confirmed" msgstr "" #: ../lib/file.py:270 msgid "Could not find the ccrypt program - please install it and try again" msgstr "" #: ../lib/file.py:299 msgid "Could not find the gpg program - please install it and try again" msgstr "" #: ../lib/file.py:324 msgid "Could not find the openssl program - please install it and try again" msgstr "" #: ../lib/file.py:387 msgid "Can't open \"" msgstr "" #: ../lib/file.py:390 msgid "Bad password" msgstr "" #: ../lib/file.py:393 msgid "File cannot be locked" msgstr "" #: ../lib/file.py:430 msgid "Can't write to " msgstr "" #: ../lib/file.py:433 msgid "Can't lock file" msgstr "" #: ../lib/file.py:544 #, python-format msgid "%s is not readable" msgstr "" #: ../lib/file.py:554 #, python-format msgid "%s: no permission" msgstr "" #: ../lib/file.py:556 #, python-format msgid "%s: locked by process number %d" msgstr "" #: ../lib/file.py:558 msgid "gjots: can't lock file." msgstr "" #: ../lib/file.py:618 msgid "That file is already open!" msgstr "" #: ../lib/file.py:626 #, python-format msgid "%s is locked by pid %d" msgstr "" #: ../lib/file.py:629 msgid "Can't make a lockfile in " msgstr "" #: ../lib/file.py:641 #, python-format msgid "%s is not writable" msgstr "" #: ../lib/file.py:643 #, python-format msgid "gjots: %s already exists." msgstr "" #: ../lib/file.py:644 #, python-format msgid "overwrite %s?" msgstr "" #: ../lib/sortDialog.py:103 msgid "_get_settings: Cant find sortAscendingRadioButton" msgstr "" #: ../lib/sortDialog.py:139 msgid "Internal error" msgstr "" #: ../lib/sortDialog.py:221 msgid "Nothing to sort!" msgstr "" #: ../lib/sortDialog.py:311 msgid "Sort Text" msgstr "" gjots2-2.4.1/bin/0000775000301100007650000000000012234163306013315 5ustar bhepplebhepplegjots2-2.4.1/bin/gjots2lpr0000775000301100007650000001357212234162541015201 0ustar bhepplebhepple#!/bin/sh # # Copyright (C) 1997-2007 Bob Hepple # # A simple script to print some ascii text - if possible by conversion # to PS or PDF and then invoking a suitable viewer. Otherwise, just # print through pr # $Id: gjots2lpr,v 1.2 2009-06-23 06:21:46 bhepple Exp $ # This program is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA # 02139, USA. usage() { echo "Usage: $PROG [-pt ] [ filename ... ] Prints a text file - if possible using postscript or PDF and available pre-viewers and printer dialog. It looks for and uses whatever utilities it can find on the system. If 'filename' is not given then STDIN is printed. -1: 1 page per sheet -2: 2 page per sheet -4: 4 page per sheet -p: convert to PDF rather than PS -t: stick to ASCII text - don't convert to postscript The following environment parameters are recognised and have default values: GJOTS_LPR: xpp, gtklp, kprinter or lpr GJOTS_TXT2PS: \"$A2PS_DEFAULTS\", \"$MPAGE_DEFAULTS\" or \"$ENSCRIPT_DEFAULTS\" GJOTS_PS2PDF: ps2pdf GJOTS_PSVIEWER: gv, kghostview, ggv or ghostview GJOTS_PDFVIEWER: acroread, kpdf or xpdf GJOTS_PRETTY: \"$PR_DEFAULTS\" GJOTS_TXTVIEWER: \"$XDIALOG_DEFAULTS\" or \"$XMESSAGE_DEFAULTS\" " } check_env() { # note that we cleverly check only $1 in case there's a bunch of options: RET="" if [ "$1" ]; then if type $1 >/dev/null 2>&1; then RET="$@" else RET="" fi fi echo $RET } PROG=`basename $0` TEXTONLY="" PDFONLY="" TEMP="/tmp/.tmp.$$" RM_LIST="" trap "rm -f \$RM_LIST" EXIT PAGE_UP=-2 ARGS=`getopt -o 124htp -- "$@"` DO_USAGE="" [ $? != 0 ] && echo "use -h for usage" >&2 && exit 1 eval set -- "$ARGS" while true; do case $1 in -[124]) PAGE_UP=$1; shift;; -t) TEXTONLY="true"; shift;; -p) PDFONLY="true"; shift;; -h) usage; DO_USAGE="yes"; break;; --) shift; break;; *) echo "$PROG: internal error" >&2 ; exit 1;; esac done MPAGE_DEFAULTS="mpage -f $PAGE_UP -I1 -P-" ENSCRIPT_DEFAULTS="enscript -p - $PAGE_UP -I1" A2PS_DEFAULTS="a2ps --margin=1 -B $PAGE_UP -o -" PR_DEFAULTS="pr -o 1 -T" XDIALOG_DEFAULTS="Xdialog --ok-label Print --textbox - 80 120" XMESSAGE_DEFAULTS="xmessage -buttons Cancel:1,Print:0 -file -" GJOTS_LPR=$(check_env $GJOTS_LPR) GJOTS_TXT2PS=$(check_env $GJOTS_TXT2PS) GJOTS_PS2PDF=$(check_env $GJOTS_PS2PDF) GJOTS_PSVIEWER=$(check_env $GJOTS_PSVIEWER) GJOTS_PDFVIEWER=$(check_env $GJOTS_PDFVIEWER) GJOTS_TXTVIEWER=$(check_env $GJOTS_TXTVIEWER) GJOTS_PRETTY=$(check_env $GJOTS_PRETTY) [ "$DO_USAGE" ] && usage && exit 0 # Get input files TTXT=$TEMP.txt RM_LIST="$TTXT" cat $@ >$TTXT # Find a printing program LPR=lpr if [ "$GJOTS_LPR" ]; then LPR="$GJOTS_LPR" else if [ "$DISPLAY" ]; then if type xpp >/dev/null 2>&1; then LPR=xpp elif type gtklp >/dev/null 2>&1; then LPR=gtklp elif type kprinter >/dev/null 2>&1; then LPR=kprinter fi fi fi # Find a text to postscript converter: if [ "$GJOTS_TXT2PS" ]; then TXT2PS="$GJOTS_TXT2PS" else TXT2PS="" if type a2ps >/dev/null 2>&1; then TXT2PS="$A2PS_DEFAULTS" elif type mpage >/dev/null 2>&1; then TXT2PS="$MPAGE_DEFAULTS" elif type enscript >/dev/null 2>&1; then TXT2PS="$ENSCRIPT_DEFAULTS" fi fi # Find a PS previewer: if [ "$GJOTS_LPR" ]; then PSVIEWER="$GJOTS_PSVIEWER" else PSVIEWER="" if [ "$DISPLAY" -a -z "$TEXTONLY" ] ; then if type gv >/dev/null 2>&1; then PSVIEWER="gv" elif type kghostview >/dev/null 2>&1; then PSVIEWER=kghostview elif type kpdf >/dev/null 2>&1; then PSVIEWER=kpdf elif type ggv >/dev/null 2>&1; then PSVIEWER="ggv" elif type ghostview >/dev/null 2>&1; then PSVIEWER=ghostview fi fi fi # If there's no PS viewer, maybe we can convert to pdf PDFVIEWER="" PS2PDF="" if [ "$DISPLAY" -a -z "$TEXTONLY" -a -n "$TXT2PS" ] ; then # We need a PS to PDF converter: if [ "$GJOTS_PS2PDF" ]; then PS2PDF="$GJOTS_PS2PDF" else if type ps2pdf >/dev/null 2>&1; then PS2PDF=ps2pdf fi fi # find a PS previewer: if [ -n "$PS2PDF" ]; then if [ "$GJOTS_PDFVIEWER" ]; then PDFVIEWER="$GJOTS_PDFVIEWER" else if type acroread >/dev/null 2>&1; then PDFVIEWER=acroread elif type kpdf >/dev/null 2>&1; then PDFVIEWER=kpdf elif type xpdf >/dev/null 2>&1; then PDFVIEWER=xpdf fi fi fi fi if [ "$PDFONLY" -a "$PDFVIEWER" ]; then PSVIEWER="" fi # Convert text to postscript & fire up a viewer if possible: if [ -z "$TEXTONLY" -a "$TXT2PS" ]; then TPS=$TEMP.ps TPDF=$TEMP.pdf RM_LIST="$RM_LIST $TPS $TPDF" $TXT2PS $TTXT > $TPS if [ "$PSVIEWER" ]; then $PSVIEWER $TPS elif [ "$PDFVIEWER" -a "$PS2PDF" ]; then # Convert to pdf & fire up a pdf viewer: $PS2PDF $TPS $TPDF $PDFVIEWER $TPDF else # if all else fails, just print the PS file $LPR $TPS fi exit 0 fi # We can't convert to postscript, just use text: PRETTY="cat" if type pr >/dev/null 2>&1; then PRETTY="$PR_DEFAULTS" fi if [ "$DISPLAY" ]; then # find a text previewer that can return 0 for "Print" and something else # for Cancel: if [ "$GJOTS_TXTVIEWER" ]; then TXTVIEWER="$GJOTS_TXTVIEWER" else if type Xdialog >/dev/null 2>&1; then TXTVIEWER="$XDIALOG_DEFAULTS" elif type xmessage >/dev/null 2>&1; then TXTVIEWER="$XMESSAGE_DEFAULTS" fi fi if [ "$TXTVIEWER" ]; then cat $TTXT |$TXTVIEWER if [ $? = 0 ]; then $PRETTY $TTXT | $LPR fi exit 0 fi fi # if all else fails, just print the thing: $PRETTY $TTXT | $LPR # Local variables # fill-column 79 gjots2-2.4.1/bin/gjots2emacs0000775000301100007650000000530512234162541015467 0ustar bhepplebhepple#!/bin/sh # # Copyright (C) 1997-2002 Bob Hepple # # A simple script to convert a gjots file to an HTML page - with table of contents # etc # # This program is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA # 02139, USA. # # This would probably be easier for most people to understand if it # were in perl(1)... but it's in sh, awk and m4. Anyone want to # rewrite it? usage() { echo "Usage: $PROG [filename] Converts a gjots file to emacs outline mode (on stdout). The emacs outline-regexp is defaulted to ===>+ -b base: base string for outline-regexp (default '===') -F char: marker for headers in outline-regexp (default '>') " } PROG=`basename $0` BASE="===" MARKER=">" ARGS=`getopt -o F:h -- "$@"` [ $? != 0 ] && echo "use -h for usage" >&2 && exit 1 eval set -- "$ARGS" while true; do case $1 in -h) usage; exit 0;; -b) BASE="$2"; shift 2;; -F) MARKER="$2"; shift 2;; --) shift; break;; *) echo "$PROG: internal error" >&2 ; exit 1;; esac done FILENAME="" [ -r $1 ] && FILENAME=$1 writeBody() { AWKFILE=/tmp/gjots2html.tmp$$.awk # Leave the here-document terminator unquoted to enable shell variable # expansion: $ \ ` and , need escaping with \: cat >$AWKFILE < 1) { level-- level_hdr = substr(level_hdr, 1, length(level_hdr) - 1) } } else { if (print_title) { printf("%s %s\n",level_hdr, \$0) print_title=0 } else { print } } } EOF cat $FILENAME | awk -f $AWKFILE rm $AWKFILE } # writeBody writeTrailer() { cat <any text to form the title Similarly the end of each section must live on its own line: Invalid XML will break this program - no checking of XML syntax or validation against the DTD is done. Make sure the DOCBOOK file is valid before processing with $PROG - perhaps by passing through jade(1) or nsgmls(1) without errors." } abend() { echo "$PROG: $1" >&2 echo "(Use -h for usage)" >&2 exit 1 } PROG=`basename $0` DOC_TYPE='"unknown"' ADD_PARA='"yes"' HAS_PREFACE='""' ENCODE_SPECIALS='"yes"' ARGS=`getopt -o h -- "$@"` [ $? != 0 ] && echo "use -h for usage" >&2 && exit 1 eval set -- "$ARGS" while true; do case $1 in -h) usage; exit 0;; --) shift; break;; *) echo "$PROG: internal error" >&2 ; exit 1;; esac done FILENAME="" [ -r $1 ] && FILENAME=$1 writeBody() { AWKFILE=/tmp/docbook2gjots.tmp$$.awk # Leave the here-document terminator unquoted to enable shell variable expansion: # $ \ ` and , need escaping with \: cat >$AWKFILE < level) { printf("\\\\EndFolder\\n", level) folder_open-- } while (folder_open < level) { printf("\\\\NewFolder\\n", level) folder_open++ } } { while (\$0) { if (\$0 ~ folder_start_regexp) { #print "folder_start:",\$0 left = gensub(folder_start_regexp, "\\\\1", 1) if (left) print left manage_folder() \$0 = gensub(folder_start_regexp, "\\\\3", 1) need_title = 1 level++ } else if (\$0 ~ folder_end_regexp) { #print "folder_end:",\$0 left = gensub(folder_end_regexp, "\\\\1", 1) if (left) print left level-- if (level < 0) { print "XML error" exit 1 } \$0 = gensub(folder_end_regexp, "\\\\3", 1) } else if (need_title && \$0 ~ title_start_regexp) { #print "title_start:",\$0 # dubius XML parsing here - we need to assume that the # title text comes immediately after the etc tag # and is all on one line (although not necessarily on the # same line as the or tags. This is a # quick and dirty hack after all, not a proper XML parsing # effort. left = gensub(title_start_regexp, "\\\\1", 1) if (left) print left \$0 = gensub(title_start_regexp, "\\\\3", 1) title="" while (\$0 !~ title_end_regexp) { if (!title) title = gensub("^[ ]*(.*)[ ]*", "\\\\1", 1) getline } if (!title) title = gensub(title_end_regexp, "\\\\1", 1) \$0 = gensub(title_end_regexp, "\\\\3", 1) printf("\\\\NewEntry\\n%s\\n\\n", title) need_title = 0 } else { print gensub("^[ ]*(.*)$", "\\\\1", 1) \$0 = "" } } } END { } EOF # NB - we are using gawk in order to access the gensub() function: cat $FILENAME | gawk -f $AWKFILE rm $AWKFILE } # writeBody # This is the main program (!): ( writeBody ) gjots2-2.4.1/bin/gjots2html.py0000775000301100007650000002674712234162541016007 0ustar bhepplebhepple#!/usr/bin/env python # TODO: # 1) Add option to generate the html file in chunks # 2) Increase number of levels to max supported by HTML (9?) # --> Is this a bit extreme? # 3) -r N, --rule=N:
for all levels up to N # --> I am not sure what this is??? # 4) -t title: Provide centered title before toc # --> This should also be simple, just add a branch for a centered # title. # # http://www.python.org/doc/current/lib/module-textwrap.html # import textwrap requires Python >= 2.3 """ From: "Munoz, Gabriel Aneceto" To: Subject: Gjots2 - inquire about development status Date: Wed, 9 Jun 2004 22:26:31 -0500 Hello again, I sent an email last week about the status of Gjots2, and now I have re-worked gjots2html while I was learning Python. I attached a current version of it to this email. I do not know if you, or anyone else was also working on changing this program, but hopefully no work is duplicated. The attached version of gjots2html is coded in Python, and has all the functionality that the previous version had, plus a few more things. I added the following functionality: embedding the output into an existing HTML template, no table of contents (from your development notes), '-o file' for output to a specified file, adding a link to a cascading style sheet, and wrapping the text at a specified length without requiring the source gjots file to be wrapped. The HTML output is in valid XHTML v1.1. I also added the functionality to allow for an arbitrary number of levels in the hierarchy to be supported. You can see examples of these formats here: http://blackhole.cs.uwec.edu/~munozga/docs/ I have successfully used this program to convert a rather large gjots file to html, one which was not fully convertible by the old version (I think due to the number of levels my gjots file had). Please let me know any thoughts and concerns. I would like to add the functionality for the other options you mentioned in the development notes, but I would need some more explanation as to what exactly is wanted. Gabe """ import re, os, getopt, sys, textwrap # Global variables for program preferences VERSION = '0.1' CONTENTS = CHUNKS = LINE = False PRINT_TOC = True EMBED = OUTPUT = WRAP = None FILENAME = STYLESHEET = '' WRAPPER = None TITLE = "Contents" STDOUT = sys.stdout # Regular expressions for parsing the gjots file format newEntry = re.compile('^\\\NewEntry$') newFolder = re.compile('^\\\NewFolder$') endFolder = re.compile('^\\\EndFolder$') # Reg ex's for replacing special characters trailDot = re.compile('\.$') # For printNode() number beautification link = re.compile('\s|\/|,|\+|"|=|~|\(|\)|>|<|&') amp = re.compile('&') quot = re.compile('"') lt = re.compile('<') gt = re.compile('>') fslash = re.compile('/') gjotsEmbed = re.compile('^INSERT GJOTS TEXT HERE$') # # Prints out usage information to stdout # def usage(): global STDOUT print >>STDOUT, 'Usage: ' + os.path.basename(sys.argv[0]) + \ """ [-c] [-e template] [-h] [-k] [-l] [-n] [-o out] [-s css] [-t title] [-v] [-w length] gjots_file -c, --contents Adds a link to the Table Of Contents after each section. Turned off by default. -e template, --embed template Embed the output of this program a pre-existing HTML template file. -h, --help Prints this usage information. -k, --chunks Output the HTML file in chunks. The default is a single HTML file. -l, --lines Adds
lines after each section. -n, --no-toc Suppress the table of contents. -o out, --output out Output the HTML to specified file/dir. -s css, --style-sheet css Add a link to the specified Cascading Style Sheet (in relation to your HTML root). -t title, --title title Adds a title to the page. The default is the name of the gjots file. -v, --version Prints the version of this utility. -w length, --wrap length Wrap the HTML output at the specified character length. Description: Converts a gjots file to html (on stdout)""" # # Shifts off the last number in `node', and increments the new last # number in the list by one. The current HTML heading is reduced (if # necessary) to the next level lower and returned by this function. # def removeNode(node): node.pop() node[len(node) - 1] = node[len(node) - 1] + 1 return headingValue(node) # # Pushes a new node number (default 1) onto the node list. A new HTML # heading is incremented (if necessary) and returned. # def addNode(node): node.append(1) return headingValue(node) # # Increments the last number in the list `node' by one. # def incrementNode(node): node[len(node) - 1] = node[len(node) - 1] + 1 # # Returns the current HTML heading level based upon the node list. This # function keeps the range between 2 (based on our discretion) and 6 # (based on the lowest level by the HTML standard). # def headingValue(node): if len(node) + 1 > 6: result = 6 else: result = len(node) + 1 return result # # Returns a string representation of a the current node number. `node' # is a list of numbers, and the string returned consists of each element # seperated by a period (e.g. 1.1, 2.3.4, etc). # def printNode(node): result = '' for n in node: result += str(n) + '.' if len(node) > 1: result = trailDot.sub('', result) return result # # Formats the plain text in buffer by changing special characters to # their HTML format (see an ascii table for values). # def format(buffer): buffer = amp.sub('&', buffer) buffer = quot.sub('"', buffer) buffer = lt.sub('<', buffer) buffer = gt.sub('>', buffer) buffer = fslash.sub('/', buffer) return buffer # # Formats a string to be a valid link # def formatLink(l): return link.sub('', l) def main(): global STDOUT, WRAPPER global VERSION, CONTENTS, CHUNKS, LINE, EMBED, OUTPUT, TITLE, WRAP global FILENAME, STYLESHEET, PRINT_TOC # Parse the command line options try: opts, args = getopt.getopt(sys.argv[1:], 'ce:hklno:s:t:vw:', \ ['contents', 'embed=', 'help', 'chunks', 'line', 'no-toc=', \ 'output=', 'style-sheet=', 'title=', 'version', 'wrap=']) except getopt.GetoptError: STDOUT = sys.stderr print >>STDOUT, 'error: Invalid Option(s)' usage() sys.exit(1) for o, a in opts: if o in ('-c', '--contents'): CONTENTS = True elif o in ('-e', '--embed'): EMBED = a elif o in ('-h', '--help'): usage() sys.exit() elif o in ('-k', '--chunks'): CHUNKS = True elif o in ('-l', '--lines'): LINE = True elif o in ('-n', '--no-toc'): PRINT_TOC = False elif o in ('-o', '--output'): OUTPUT = a elif o in ('-s', '--style-sheet'): STYLESHEET = a elif o in ('-t', '--title'): TITLE = a elif o in ('-v', '--version'): print os.path.basename(sys.argv[0]) + ' version ' + VERSION sys.exit() elif o in ('-w', '--wrap'): WRAP = a WRAPPER = textwrap.TextWrapper(width=int(WRAP), \ expand_tabs=False, replace_whitespace=False, \ initial_indent='', subsequent_indent='', \ fix_sentence_endings=False, break_long_words=False) # Make sure the last argument exists (should be a gjots file) if not os.path.isfile(sys.argv[len(sys.argv) - 1]) or \ len(sys.argv) <= 1: STDOUT = sys.stderr print >>STDOUT, 'error: You must specify a gjots file to convert' usage() sys.exit(1) FILENAME = sys.argv[len(sys.argv) - 1] # Set the title if not specified at the command line if not TITLE: TITLE = os.path.basename(FILENAME) # Re-direct output to a file if specified at the command line if OUTPUT: if not os.path.isfile(OUTPUT): STDOUT = open(OUTPUT, 'w') else: STDOUT = sys.stderr print >>STDOUT, 'error: Invalid output file - file already exists' usage() sys.exit(1) # Read in the HTML from a specified template file and output the new # file with text before and after the marked region (INSERT GJOTS TEXT # HERE). before = '' after = None if EMBED: if not os.path.isabs(EMBED): EMBED = os.path.abspath(EMBED) if os.path.isfile(EMBED): embedfile = open(EMBED, 'r') for line in embedfile: if gjotsEmbed.match(line): after = '' elif after != None: after += line else: before += line embedfile.close() print >>STDOUT, before else: STDOUT = sys.stderr print >>STDOUT, "error: Invalid output file - file doesn't exist" usage() sys.exit(1) # Pre-parse file for keyword order - NOTE: This is not efficient keywords = ['\NewEntry', '\NewFolder', '\EndFolder'] keys = [] file = open(FILENAME, 'r') for line in file: line = line.rstrip() if line in keywords: keys.append(line) file.close() # Print the header HTML information if not EMBED: print >>STDOUT, '>STDOUT, ' "http://www.w3.org/TR/xhtml1/DTD/xhtml11-strict.dtd">' print >>STDOUT, '\n\n' + TITLE + '' if STYLESHEET: print >>STDOUT, '' print >>STDOUT, '\n\n' print >>STDOUT, '

' + TITLE + '\n

' if PRINT_TOC: print >>STDOUT, '
    ' # Parse file for the actual conversion node = [1] # Start at node number 1 body = '' # Holds the persistent, formatted HTML output until end buffer = '' # Holds temporary parsed buffer H = 2 # The HTML heading level (default) file = open(FILENAME, 'r') line = (file.readline()).rstrip() for lookahead in file: lookahead = lookahead.rstrip() if line == '\NewEntry' and lookahead not in keywords: buffer = format(buffer) body += '
    \n' + buffer + '
    \n\n' if CONTENTS: body += 'Contents' if LINE: body += '
    ' body += '' + \ '' + printNode(node) + ' ' + \ format(lookahead) + '\n' buffer = '' if PRINT_TOC: print >>STDOUT, '
  • ' + printNode(node) + ' ' + format(lookahead) + '' keys.pop(0) if PRINT_TOC and len(keys) != 0 and keys[0] != '\NewFolder': print >>STDOUT, '
  • ' if len(keys) != 0 and keys[0] == '\NewEntry': incrementNode(node) elif line == '\NewFolder': if PRINT_TOC: print >>STDOUT, '
      ' H = addNode(node) keys.pop(0) elif line == '\EndFolder': if PRINT_TOC: print >>STDOUT, '
    ' H = removeNode(node) keys.pop(0) elif lookahead not in keywords: if WRAP and len(lookahead) > 72: buffer += WRAPPER.fill(lookahead) + '\n' else: buffer += lookahead + '\n' line = lookahead file.close() # Process any valid keywords and flush the buffer if PRINT_TOC: print >>STDOUT, '
\n\n

' if WRAP and len(lookahead) > 72: buffer += WRAPPER.fill(lookahead) buffer = format(buffer) body += '
\n' + buffer + '
\n' if CONTENTS: body += 'Contents' # Output the previously formatted body of the gjots file print >>STDOUT, body if not EMBED: print >>STDOUT, '\n' if EMBED: print >>STDOUT, after STDOUT.close() elif OUTPUT: STDOUT.close() if __name__ == "__main__": main() gjots2-2.4.1/bin/gjots2html0000775000301100007650000002506012234162541015343 0ustar bhepplebhepple#!/bin/sh # # Copyright (C) 1997-2002 Bob Hepple # # A simple script to convert a gjots file to an HTML page - with table of contents # etc # # This program is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA # 02139, USA. # # This would probably be easier for most people to understand if it # were in perl(1)... but it's in sh, awk and m4. Anyone want to # rewrite it? usage() { echo "Usage: $PROG [-l] [-c] [-t \"title text\"] [filename] Converts a gjots file to html (on stdout) -c: adds a link to the TABLE OF CONTENTS after each section -i level: indexes up to level (default is all levels) -l: adds
lines after each section -t \"title\": adds a title to the page " } PROG=`basename $0` ADD_HR='' ADD_CLINK='' ADD_TITLE='' LEVEL="100" ARGS=`getopt -o chi:lt: -- "$@"` [ $? != 0 ] && echo "use -h for usage" >&2 && exit 1 eval set -- "$ARGS" while true; do case $1 in -c) ADD_CLINK='yes'; shift;; -i) LEVEL="$2"; shift 2;; -l) ADD_HR='yes'; shift;; -t) ADD_TITLE="$2"; shift 2;; -h) usage; exit 0;; --) shift; break;; *) echo "$PROG: internal error" >&2 ; exit 1;; esac done #echo "ADD_HR=$ADD_HR" >&2 #echo "ADD_CLINK=$ADD_CLINK" >&2 #echo "ADD_TITLE=$ADD_TITLE" >&2 #echo "ARGS=$@" >&2 #exit 0 FILENAME="" [ -r $1 ] && FILENAME=$1 writeHeader() { # Quote the here-document terminator word to disable shell variable expansion: cat <<"EOF" m4_divert(-1) m4_changecom(`[[[[')m4_dnl to protect the # character m4_changequote({{{{,}}}}) m4_define({{{{_Start_TOC}}}},{{{{

    m4_divert(-1) m4_define({{{{_H1_num}}}},0) m4_define({{{{_H2_num}}}},0) m4_define({{{{_H3_num}}}},0) m4_define({{{{_H4_num}}}},0) m4_define({{{{_H5_num}}}},0) m4_define({{{{_H6_num}}}},0) m4_define({{{{_H7_num}}}},) m4_define({{{{_H8_num}}}},) m4_define({{{{_H1_end}}}},) m4_define({{{{_H2_end}}}},) m4_define({{{{_H3_end}}}},) m4_define({{{{_H4_end}}}},) m4_define({{{{_H5_end}}}},) m4_define({{{{_H6_end}}}},) m4_define({{{{_H7_end}}}},) m4_define({{{{_H8_end}}}},) m4_divert(1)}}}}) m4_define({{{{_H1}}}}, {{{{m4_divert(-1) m4_define({{{{_H1_num}}}},m4_incr(_H1_num))m4_dnl m4_define({{{{_H2_num}}}},0) m4_define({{{{_H3_num}}}},0) m4_define({{{{_H4_num}}}},0) m4_define({{{{_H5_num}}}},0) m4_define({{{{_H6_num}}}},0) m4_define({{{{_H7_num}}}},0) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num. $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl _H7_end()m4_define({{{{_H7_end}}}},)m4_dnl _H6_end()m4_define({{{{_H6_end}}}},)m4_dnl _H5_end()m4_define({{{{_H5_end}}}},)m4_dnl _H4_end()m4_define({{{{_H4_end}}}},)m4_dnl _H3_end()m4_define({{{{_H3_end}}}},)m4_dnl _H2_end()m4_define({{{{_H2_end}}}},)m4_dnl
  • _TOC_label m4_divert(1)

    _TOC_label

    }}}}) m4_define({{{{_H2}}}}, {{{{m4_divert(-1) m4_define({{{{_H2_end}}}},m4_ifelse(m4_eval(_LEVEL>=2),1,{{{{
}}}},)) m4_define({{{{_H2_start}}}},m4_ifelse(_H2_num,0,{{{{
    }}}},)) m4_define({{{{_H2_num}}}},m4_incr(_H2_num)) m4_define({{{{_H3_num}}}},0) m4_define({{{{_H4_num}}}},0) m4_define({{{{_H5_num}}}},0) m4_define({{{{_H6_num}}}},0) m4_define({{{{_H7_num}}}},0) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl _H7_end()m4_define({{{{_H7_end}}}},)m4_dnl _H6_end()m4_define({{{{_H6_end}}}},)m4_dnl _H5_end()m4_define({{{{_H5_end}}}},)m4_dnl _H4_end()m4_define({{{{_H4_end}}}},)m4_dnl _H3_end()m4_define({{{{_H3_end}}}},)m4_dnl m4_ifelse(m4_eval(_LEVEL>=2),1,{{{{_H2_start
  • _TOC_label }}}})m4_divert(1)

    _TOC_label

    }}}}) m4_define({{{{_H3}}}}, {{{{m4_divert(-1) m4_define({{{{_H3_end}}}},m4_ifelse(m4_eval(_LEVEL>=3),1,{{{{
}}}},)) m4_define({{{{_H3_start}}}},m4_ifelse(_H3_num,0,{{{{
    }}}},)) m4_define({{{{_H3_num}}}},m4_incr(_H3_num)) m4_define({{{{_H4_num}}}},0) m4_define({{{{_H5_num}}}},0) m4_define({{{{_H6_num}}}},0) m4_define({{{{_H7_num}}}},0) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num._H3_num $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl _H7_end()m4_define({{{{_H7_end}}}},)m4_dnl _H6_end()m4_define({{{{_H6_end}}}},)m4_dnl _H5_end()m4_define({{{{_H5_end}}}},)m4_dnl _H4_end()m4_define({{{{_H4_end}}}},)m4_dnl m4_ifelse(m4_eval(_LEVEL>=3),1,{{{{_H3_start
  • _TOC_label }}}})m4_divert(1)

    _TOC_label

    }}}}) m4_define({{{{_H4}}}}, {{{{m4_divert(-1) m4_define({{{{_H4_end}}}},m4_ifelse(m4_eval(_LEVEL>=4),1,{{{{
}}}},)) m4_define({{{{_H4_start}}}},m4_ifelse(_H4_num,0,{{{{
    }}}},)) m4_define({{{{_H4_num}}}},m4_incr(_H4_num)) m4_define({{{{_H5_num}}}},0) m4_define({{{{_H6_num}}}},0) m4_define({{{{_H7_num}}}},0) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num._H3_num._H4_num $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl _H7_end()m4_define({{{{_H7_end}}}},)m4_dnl _H6_end()m4_define({{{{_H6_end}}}},)m4_dnl _H5_end()m4_define({{{{_H5_end}}}},)m4_dnl m4_ifelse(m4_eval(_LEVEL>=4),1,{{{{_H4_start
  • _TOC_label }}}})m4_divert(1)
    _TOC_label
    }}}}) m4_define({{{{_H5}}}}, {{{{m4_divert(-1) m4_define({{{{_H5_end}}}},m4_ifelse(m4_eval(_LEVEL>=5),1,{{{{
}}}},)) m4_define({{{{_H5_start}}}},m4_ifelse(_H5_num,0,{{{{
    }}}},)) m4_define({{{{_H5_num}}}},m4_incr(_H5_num)) m4_define({{{{_H6_num}}}},0) m4_define({{{{_H7_num}}}},0) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num._H3_num._H4_num._H5_num $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl _H7_end()m4_define({{{{_H7_end}}}},)m4_dnl _H6_end()m4_define({{{{_H6_end}}}},)m4_dnl m4_ifelse(m4_eval(_LEVEL>=5),1,{{{{_H5_start
  • _TOC_label }}}})m4_divert(1)
    _TOC_label
    }}}}) m4_define({{{{_H6}}}}, {{{{m4_divert(-1) m4_define({{{{_H6_end}}}},m4_ifelse(m4_eval(_LEVEL>=6),1,{{{{
}}}},)) m4_define({{{{_H6_start}}}},m4_ifelse(_H6_num,0,{{{{
    }}}},)) m4_define({{{{_H6_num}}}},m4_incr(_H6_num)) m4_define({{{{_H7_num}}}},0) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num._H3_num._H4_num._H5_num._H6_num $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl _H7_end()m4_define({{{{_H7_end}}}},)m4_dnl m4_ifelse(m4_eval(_LEVEL>=6),1,{{{{_H6_start
  • _TOC_label }}}})m4_divert(1)_TOC_label}}}}) m4_define({{{{_H7}}}}, {{{{m4_divert(-1) m4_define({{{{_H7_end}}}},m4_ifelse(m4_eval(_LEVEL>=7),1,{{{{
}}}},)) m4_define({{{{_H7_start}}}},m4_ifelse(_H7_num,0,{{{{
    }}}},)) m4_define({{{{_H7_num}}}},m4_incr(_H7_num)) m4_define({{{{_H8_num}}}},0) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num._H3_num._H4_num._H5_num._H6_num._H7_num $1}}}}) m4_divert(0)m4_dnl _H8_end()m4_define({{{{_H8_end}}}},)m4_dnl m4_ifelse(m4_eval(_LEVEL>=7),1,{{{{_H7_start
  • _TOC_label }}}})m4_divert(1)_TOC_label}}}}) m4_define({{{{_H8}}}}, {{{{m4_divert(-1) m4_define({{{{_H8_end}}}},m4_ifelse(m4_eval(_LEVEL>=7),1,{{{{
}}}},)) m4_define({{{{_H8_start}}}},m4_ifelse(_H8_num,0,{{{{
    }}}},)) m4_define({{{{_H8_num}}}},m4_incr(_H8_num)) m4_define({{{{_TOC_label}}}},{{{{_H1_num._H2_num._H3_num._H4_num._H5_num._H6_num._H7_num._H8_num $1}}}}) m4_divert(0) m4_ifelse(m4_eval(_LEVEL>=8),1,{{{{_H8_start
  • _TOC_label }}}})m4_divert(1)_TOC_label}}}}) m4_define({{{{_End_TOC}}}},{{{{m4_divert(0)m4_dnl m4_ifelse(_H8_num,0,,{{{{
}}}})m4_dnl m4_ifelse(_H7_num,0,,{{{{ }}}})m4_dnl m4_ifelse(_H6_num,0,,{{{{ }}}})m4_dnl m4_ifelse(_H5_num,0,,{{{{ }}}})m4_dnl m4_ifelse(_H4_num,0,,{{{{ }}}})m4_dnl m4_ifelse(_H3_num,0,,{{{{ }}}})m4_dnl m4_ifelse(_H2_num,0,,{{{{ }}}})m4_dnl

}}}}) m4_divert m4_dnl EOF cat <$FILENAME EOF } # writeHeader writeBody() { TMP="/tmp/gjots2html.$$.awk" trap "rm -f $TMP" EXIT cat > $TMP <<'EOF' BEGIN { level = 1 print_title=1 #printf("add_hr=%s\n", add_hr) | "cat 1>&2" #printf("add_clink=%s\n", add_clink) | "cat 1>&2" #printf("add_title=%s\n", add_title) | "cat 1>&2" if (add_title != "") { printf("

%s

\n", add_title) } print "Contents

_Start_TOC\n

\n"
}

{
    if ($0 ~ /^\\NewEntry/) { 
        print_title=1
    } else if ($0 ~ /^\\NewFolder/) { 
        level++
        if (level > 8) {
            print "gjots2html: Too many levels of folder for this poor utility. Bailing out!" >"/dev/stderr"
            exit 1
        }
    } else if ($0 ~ /^\\EndFolder/) { 
        level--
    } else {
        gsub(/&/,"\\&")
        gsub(/"/,"\\"")
        gsub(//,"\\>")
        if (print_title) {
            # the first line is the title:
            printf("
\n") if (add_clink == "yes") { printf("

Contents

") } if (add_hr == "yes") { printf("


\n") } printf("_H%d(%s)\n
\n",level, $0)
            print_title=0
        } else {
            print
        }
    }
}

END { print "
\n"; } EOF awk -v add_hr="$ADD_HR" -v add_clink="$ADD_CLINK" \ -v add_title="$ADD_TITLE" -f $TMP $FILENAME } # writeBody writeTrailer() { cat <<"EOF" _End_TOC EOF } # writeTrailer # This is the main program (!): ( writeHeader writeBody writeTrailer ) | m4 -P -D_LEVEL=$LEVEL gjots2-2.4.1/bin/gjots2docbook0000775000301100007650000001157412234162541016024 0ustar bhepplebhepple#!/bin/sh # # Copyright (C) 1997-2002 Bob Hepple # # A simple script to convert a gjots file to an HTML page - with table of contents # etc # # This program is free software; you can redistribute it # and/or modify it under the terms of the GNU General Public # License as published by the Free Software Foundation; either # version 2 of the License, or (at your option) any later # version. # # This program is distributed in the hope that it will be # useful, but WITHOUT ANY WARRANTY; without even the implied # warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more # details. # # You should have received a copy of the GNU General Public # License along with this program; if not, write to the Free # Software Foundation, Inc., 675 Mass Ave, Cambridge, MA # 02139, USA. # usage() { echo "Usage: $PROG -a | -b [-e] [-P] [-p] [ filename ] Converts a gjots file to DOCBOOK XML (on stdout) -a: make an article -b: make a book -e: don't encode special characters eg < -> < -p: don't change blank lines to markers -P: first section is a preface rather than a chapter (book only) Either -a or -b must be given but not both. Items in the root element should contain or . If the file does not start with then appropriate lines will be added. The -e and -p options are provided in case your gjots file is already partially in docbook format. If properly installed, the docbook utilities can then be used to create HTML, man, ps, pdf etc files eg: $PROG -b ~/.gjotsfile >gjotsfile.xml docbook2pdf gjotsfile.xml It may be necessary to fine-tune the docbook formatting to access all features." } abend() { echo "$PROG: $1" >&2 echo "(Use -h for usage)" >&2 exit 1 } PROG=`basename $0` DOC_TYPE='"unknown"' ADD_PARA='"yes"' HAS_PREFACE='""' ENCODE_SPECIALS='"yes"' ARGS=`getopt -o abepPh -- "$@"` [ $? != 0 ] && echo "use -h for usage" >&2 && exit 1 eval set -- "$ARGS" while true; do case $1 in -a) DOC_TYPE='"article"'; shift;; -b) DOC_TYPE='"book"'; shift;; -e) ENCODE_SPECIALS='""'; shift;; -p) ADD_PARA='""'; shift;; -P) HAS_PREFACE='"yes"'; shift;; -h) usage; exit 0;; --) shift; break;; *) echo "$PROG: internal error" >&2 ; exit 1;; esac done if [ "$DOC_TYPE" = '"unknown"' ]; then abend "must give either -a or -b options" fi if [ "$DOC_TYPE" = '"article"' ] ; then if [ "$HAS_PREFACE" = '"yes"' ]; then abend "-P option is only valid with -b" fi fi FILENAME="" [ -r $1 ] && FILENAME=$1 writeBody() { AWKFILE=/tmp/gjots2docbook.tmp$$.awk # Leave the here-document terminator unquoted to enable shell variable expansion: # $ \ ` and , need escaping with \: cat >$AWKFILE <" while (title_open >= level) { title_element = "section" if (doc_type == "book") { if ( title_open == 1 ) { if ( has_preface ) { title_element = "preface" } else { title_element = "chapter" } } } print_indent() printf("\\n", title_element) title_open--; } has_preface = 0 } function open_title(title) { if (title_open) { close_title() } title_element = "section" if (doc_type == "book") { if ( level == 1 ) { if ( has_preface ) { title_element = "preface" } else { title_element = "chapter" } } } print_indent() printf("<%s>%s\\n", title_element, title) print_indent() print "" title_open = level } { if ( ! xml_done ) { xml_done = 1 if ( \$0 ~ "<\\?xml" || \$0 ~ "<\\?XML" ) { print \$0 next } else { print "" } } if ( ! docbook_done) { docbook_done = 1 if ( \$0 ~ "\n",doc_type) } } if (!main_element) { main_element=1 printf("<%s>\\n", doc_type) } if (\$0 ~ /^\\\\NewEntry/) { print_title=1 } else if (\$0 ~ /^\\\\NewFolder/) { level++ } else if (\$0 ~ /^\\\\EndFolder/) { level-- } else { if (encode_specials) { gsub(/&/,"\\\\&") gsub(/"/,"\\\\"") gsub(//,"\\\\>") } if (print_title) { open_title(\$0) print_title=0 } else if ( add_para && \$0 ~ "^[ ]*\$") { print_indent() print "" } else { print_indent() print } } } END { while (level) { close_title() level--; } printf("\n",doc_type) } EOF cat $FILENAME | awk -f $AWKFILE rm $AWKFILE } # writeBody # This is the main program (!): ( writeBody ) gjots2-2.4.1/bin/gjots20000775000301100007650000001205412234162542014456 0ustar bhepplebhepple#!/usr/bin/env python import sys, os, getopt import linecache def traceit(frame, event, arg): if event == "line" or event == "call": lineno = frame.f_lineno filename = frame.f_globals["__file__"] if (filename.endswith(".pyc") or filename.endswith(".pyo")): filename = filename[:-1] name = frame.f_globals["__name__"] line = linecache.getline(filename, lineno) print "%s:%s:%s: %s" % (event, name, lineno, line.rstrip()) return traceit def ver2str(ver): return ".".join(map(str,ver)) #from Gjots.gui import * #from Gjots.version import version def usage(): print _("""Usage: gjots [OPTIONS] [FILENAME] A gtk/X11 jotter OPTIONS: -h, --help: this help -d, --debug: debug to stdout -2, --glade2: use glade-2 gui if available -t, --trace: trace lines as they execute -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password don't remember password -r, --readonly: no editing (or locking) -V, --version: print the version and exit FILENAME: gjots data filename (default is $HOME/.gjotsfile) """) if __name__ == '__main__': pyver = (2,5) pygtkver = (2,16,0) # gjots2 might be: 'prefix' is then # /usr/bin/gjots2 /usr # /bin/gjots2 (fedora-18) /usr # /usr/local/bin/gjots2 /usr/local # /foo/bar/gjots2 /foo # ./gjots2 ./ dirName, progName = os.path.split(sys.argv[0]) # prefix, bin = os.path.split(dirName) prefix = dirName # fedora-18 puts things in /usr/bin but arg0 is /bin/gjots2 !!!! if dirName == "/bin" and os.access("/usr" + sys.argv[0], os.F_OK): prefix = "/usr/bin" prefix, junk = os.path.split(prefix) # # Add the library path to the system load path # # developer should use local version executed from the current directory: localdir = os.curdir + "/lib" if os.access(localdir, os.F_OK) and os.access("ui/gjots.ui", os.F_OK): prefix = localdir sys.path = [ localdir ] + sys.path sys.stderr.write("%s: Warning: running modules from %s\n" % (progName, localdir)) else: sys.path = [ prefix + '/lib/gjots2' ] + sys.path # i18n support import gettext import locale # Locale setting in gtk.Builder appears somewhat broken under Python. See: # https://bugzilla.gnome.org/show_bug.cgi?id=574520 locale_domain = "gjots2" locale_dir = prefix + "/share/locale" gettext.bindtextdomain(locale_domain, locale_dir) locale.setlocale(locale.LC_ALL, '') gettext.textdomain(locale_domain) gettext.install(locale_domain, localedir=locale_dir, unicode=True) try: locale.bindtextdomain(locale_domain, locale_dir) locale.bind_textdomain_codeset(locale_domain, 'UTF-8') except locale.Error: print "Couldn't bind the translation domain. Some translations won't work." _ = gettext.gettext # # python version # if sys.version_info[:2] < pyver: sys.stderr.write(_("%s requires python%s or higher.") % (progName, ver2str(pyver))) sys.exit(1) # # pygtk version # try: import pygtk except ImportError, err: print err sys.stderr.write(_("%s requires pygtk-%s.\n") % (progName, ver2str(pygtkver))) sys.exit(1) else: pygtk.require("2.0") from gui import * from version import * try: opts, args = getopt.getopt(sys.argv[1:], "2hdrtg:V", ["help", "glade2", "debug", "readonly", "trace", "geometry=", "version"]) except getopt.GetoptError, errmsg: sys.stderr.write("%s: %s\n" % (progName, errmsg)) sys.stderr.write(_("Use -h for help\n")) sys.exit(2) readonly = 0 output = None geometry = "" prefs = "" debug = 0 purge_password = 0 use_glade2 = 0 for o, a in opts: if o in ("-h", "--help"): usage() sys.exit(0) if o in ("-V", "--version"): print _("%s version %s") % (progName, gjots_version) sys.exit(0) if o in ("-2", "--glade2"): use_glade2 = 1 if o in ("-p", "--purge-password"): purge_password = 1 if o in ("-r", "--readonly"): readonly = 1 if o in ("-g", "--geometry"): geometry = a if o in ("-d", "--debug"): debug = 1 if o in ("-t", "--trace"): sys.settrace(traceit) if len(args): filename = args[0] else: filename = os.environ["HOME"]+"/.gjotsfile" if not os.access(filename, os.R_OK): os.system("touch " + filename) gui = gjots_gui(prefix, progName, geometry, filename, readonly, debug, purge_password, use_glade2) gtk.main() # Local variables: # eval:(setq compile-command "./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: gjots2-2.4.1/doc/0000775000301100007650000000000012234163306013312 5ustar bhepplebhepplegjots2-2.4.1/doc/gjots2.es.gjots0000664000301100007650000012664712234163306016220 0ustar bhepplebheppleMANUAL DE GJOTS2 g j o t s 2 Bob Hepple Brisbane Queensland Australia Versión 2.4.1 bhepple@freeshell.org http://bhepple.freeshell.org/gjots \NewEntry Introducción gjots2 es un programa para guardar y ordenar notas. ¿Para qué se necesita otro programa de gestión de notas? Bueno, cuando mi queriod organizador Psion-5 dejó de funcionar tuve que llevar mis notas a Linux y comencé a buscar software para gestionarlas. Encontré varios programas para llevar diarios y escribí uno para realizar cálculos (gdcalc) pero no encontré nada para gestionar un block de notas. Los paquetes que encontré eran: * demasiado simples (ej. sólo un nivel de notas), * demasiado complejos (demasiados componentes tales como Corba, SQL o similares) * basados en web * no permitían trabajar sobre el índice a la vez que sobre la jerarquía de notas * muy engorrosos - mostrando ventanas por todas partes, similares a las notas amarillas de quita y pon de 3M. Habia algunos que no logré hacer funcionar y otros que directamente no funcionaban. Sin embargo, aunque encontré algunos buenos programas, ninguno encajaba en mis necesidades. De entre ellos, kjots era el que más se parecía a lo que necesitaba. De todas formas, por aquella época quería aprender a hacer árboles en GTK y practicar glade - y nació gjots y todavía sobrevive. Fue escrito, originalmente, en C (ahora está en Python), glade y gtk, era muy rápido y es una aplicación que todavía uso diariamente. Juzgando por los emails que recibo creo que también es útil para muchas otras personas, lo que es agradable. Hubo incluso una versión en Japonés creada de un fork de gjots (0.3?) pero nunca enviaron el código para integrarlo con el código base, lo que es una pena. Sin embargo, el mundo no se detuvo, apareció GTK-2 y hubo un número importante de personas que querían LOTE (Languages Other Than English - Idiomas distintos del Inglés) incluyéndome a mi. También quería aprender python y de ahí que la actual versión de gjots - gjots2 o "hijo de gjots" - viniera al mundo. Al estar escrita en un lenguaje interpretado no es tán rápida al arrancar como la anterior versión; sin embrago ofrece muchas más funcionalidades. Como dijo Goldilocks sobre las sillas, las camas y las gachas, gjots2 es "justo lo necesario". \NewEntry Instalación Si puede, utilce RPM o emerge (Gentoo) - permiten una desinstalación sencilla y una mejor gestión de paquetes que setup.py \NewFolder \NewEntry Sistemas basados en RPM Simplemente haga lo siguiente: VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm yum install gjots2-${VERSION}-1.noarch.rpm \NewEntry Prerequisitos Deje que rpm se encargue de todo ... alternativamente ... Necesitará instalar (o re-instalar) libglade, pygtk, gnome-python, o gtk para su versión actual de python o posiblemente valga con dar valor a la variable de entorno PYTHONPATH eg. export PYTHONPATH=/usr/local/lib/python2.6/site-packages/ En el momento de escribir este texto (gjots-2.3.11), tengo lo siguiente instalado (on Fedora-13): glade3-libgladeui gnome-python2 gnome-python2-gconf gtk2 gtksourceview libglade2 libgnome libgnomecanvas libgnomeui pygtk2 pygtk2-libglade pygtksourceview Asegúrsese de que los paquetes de python están instalados en el directorio site-packages de la versión de python que se esté usando (ejecute "python -V" para averiguar la versión en uso): /usr/lib/pythonX.X/site-packages Si los paquetes no están ahí posiblemente los tendrá que reinstalar - por ejemplo, a mí me sucedió que al actualizar python desde la 2.2 a la 2.3, el directorio /usr/lib/python2.X/site-packages directory no se actualizó automáticamente. Entonces tve que hacer (en gentoo) lo siguiente: emerge unmerge libglade pygtk gnome-python bonobo-python pyorbit emerge libglade pygtk gnome-python bonobo-python pyorbit gjots2 está escrito con glade-3 así que si quiere modificar a arreglar algo en el código necesitará instalar también glade-3. En caso contrario es suficiente con tener python! \NewEntry Gentoo Nota: la versión 2.6.8 y las anteriores fueron probadas en gentoo. La 2.6.9 y todas las siguientes no. Hasta que gjots2 tenga un ebuild oficial (busque en /usr/portage/app-office) tendrá que hacer lo siguiente: Los paquetes necesarios en gentoo son (en orden de dependencia - puede resultar menos problemático si se instalan siguieno la lista de derececha a izquierda, dejando que el sistema de gestión de dependencias de Gentoo se encargue de los módulos listados a la izquierda - pero yo nunca lo he probado): >=gtk+-2 >=libglade-2 >=pygtk-2 gnome-python-2 >=pyorbit-2 Asegúrese de que en su archivo /etc/make.conf haya una línea como la siguiente: PORTDIR_OVERLAY=/usr/local/portage También se precisa incluir la siguiente línea en /etc/portage/packages.keywords: app-office/gjots2 ~x86 Realizado esto, hacer: VERSION=2.4.1 CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry Desde fuente en un tarball VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz Si se instala desde un tarball, despues de extraer el contenido del archivo tar y de hacer cd en el contenido, hay que hacer lo siguiente: python setup.py install [ --prefix=/usr/... ] Pra desinstalar usar el script uninstall.sh que viene en el tar. En algunos sistemas pueden producirse problemas de permisos en la instalación system-wide desde fuentes. Todos los nuevos directorios instalados deberían tener permisos 0775, y todos los archivos 0644, con excepción de 'docbook2gjots', 'gjots2', 'gjots2docbook', 'gjots2emacs' y 'gjots2html', que deberán tener permisos 0755. \EndFolder \NewEntry Contribuir Hay una lista de correo para desarrollo y soporte de gjots: Gjots Developers : http://lists.sourceforge.net/lists/listinfo/gjots2-devel Gjots Users : http://lists.sourceforge.net/mailman/listinfo/gjots2-users ¡Correcciones e informes de errores son bienvenidos! Si alguien quiere traducir esto a otro idioma por favor, que contacte conmigo y le proporcionaré una versión internacionalizada y el catálogo de mensajes. Incorporaré todas aquellas funcionalidades que me envíen como contribuciones, siempre que me parezcan adecuadas. Si va a trabajar en añadir algo a la rama principal de desarrollo, por favor, envíeme un email y me aseguraré de que nadie más esté ya trabajando en ello. Por favor use diff -ru para crear el 'patch', y adjúntelo como un archivo gzip. Si decido no incorporar su funcionalidad favorita, es usted libre de crear un 'fork' del programa pero, por favor, utilice un nombre distinto para su programa. Después de todo, este programa es GPL. Para cumplir con la licencia GPL necesitaré incluir su nombre y su dirección de email en las secciones de Autores y Licencia. Si quiere contribuir, escríbame a bhepple@freeshell.org, para asegurar que el trabajo no se duplica. Para ideas generales, por favor, mire la sección "Funcionalidades previstas". \NewEntry MANUAL DE USUARIO \NewFolder \NewEntry Comenzar Ejecute el programa tecleando "gjots2" - guardará todas stus notas en $HOME/.gjotsfile O utilice un parámetro - gjots2 accepta el nombre de un archivo, ej: gjots2 todo.gjots Estas opciones está disponibles: -h, --help: esta ayuda -d, --debug: envía info. de depurar a stdout -t, --trace: rastrea lineas a medida que las ejecuta -g 123x456, --geometry=123x456: tamaño inicial de ventana (X x Y) -p, --purge-password borrar contraseña tan pronto como se use -r, --readonly: no editar (ni bloquear) -V, --version: imprimir la versión y salir \NewEntry Abrir y guardar Abrir y guardar hacen lo esperado y operan sobre un archivo gjots en texto plano (ver 'Formato de loa archivos gjots2'). A menos que el indicador 'sólo lectura' esté activado, gjots2 crea un archivo de bloqueo (lockfile) para forzar a que sólo pueda modificarse por un usuario pero pueda ser leido concurrentemente por muchos. Si se intenta abrir un archivo que ya está abierto por otro usuario, aparece una ventana emergente con un mensaje y las opciones "Inténtelo de nuevo" ("Try Again") o "Sólo lectura" ("Readonly"). La opción "Inténtelo de nuevo" permite dar tiempo a que el usuario que tiene bloqueado el archivo lo libere. El archivo de bloqueo (lock file) es un archivo con el nombre .#filename, donde 'filename' es el mismo nombre que el archivo gjots2 que quiere editarse. El archivo de bloqueo está en el mismo directorio que el archivo gjots2 que se edita y contiene sólo el identificador del proceso (pid) que tiene bloqueado el archivo. Si ese proceso se cancela sin eliminar este archivo de bloqueo gjots2 lo detectará en el siguiente arranque. Por ello, el bloqueo es posible incluso en volúmenes NTFS. A los archivos abiertos como "sólo lectura" no se les aplica ningún bloqueo (lock). Hay un item en el menú "Archivos" que permite cambiar el indicador de 'sólo lectura'. También afecta al bloqueo y desbloqueo del archivo, como se ha comentado antes. Cuando gjots2 guarda un archivo, salva un backup de la versión anterior, siguiendo el mismo esquema que emacs; por ejemplo, si se está guardando el archivo "file.gjots" que ya existe, la versión anterior se salva como "file.gjots~" Si el archivo termina en ".cpt", gjots tratará de cifrarlo y descifrarlo usando ccrypt(1). Si ccrypt no está instalado (no es estandar en todas las distribuciones Linux) la operación de abrir/cerra el archivo fallará. Igualmente, los archivos con extensión .ssl wserán abiertos con (DES3) openssl y los .gpg con (DES3) gpg. Instale ccrypt, openssl o gpg para disponer de más seguridad. \NewEntry Menús e iconos La ventana principal tiene una barra de menú y otra de herramientas, que deberían ser auto-explicativas. La barra de herramientas (a la izquierda) contiene iconos para organizar la jerarquía de notas. Juega un poco con esos iconos y enseguida te darás cuenta de lo que hacen. Son los siguientes: "Nueva página" crea un nuevo hijo colgando de la página actual. "Nuevo hijo" crea un nuevo hijo colgando del item actual. "Arriba" Mueve la selección delante de la anterior de su mismo nivel. "Abajo" hace lo contrario que Arriba. "Atras" transforma el/los elemento(s) seleccionado(s) en hijos de sus abuelos (o, si lo prefiere, los hermanos de su padre). "Adelante" transforma los elementos seleccionads en hijos de los hermanos inmediatamente anteriores. "Dividir item" corta el texto seleccionado (en el panel de la derecha) y crea un nuevo elemento con ese texto. "Mezclar" fusiona el texto de todos los elementos seleccionados, creando un solo texto con ellos (separadas por un carácter de nueva línea). "Ocultar todo" colapsa la vista del árbol dejando visibles sólo los hijos del elemento raíz. "Mostrar todos" expande todos los niños del elemento seleccionado (recursivamente). "Ordenar árbol" muestra el cuadro de diálogo donde se puedn especificar las opciones para ordenar los elementos. Cuando una carpeta pierde todos los hijos se transforma automáticamente en un tema sencillo. En la barra de herramientas superior están los siguientes iconos: "Guardar" es lo habitual. "Imprimir" muestra el cuadro de diálogo Imprimir. Vea la sección "Imprimir". "Deshacer" y "Rehacer" son funciones que sólo operan en el búfer de texto, no en el árbol. Sólo están disponibles si la biblioteca gtksourceview está instalada. "Cortar", "Pegar" y "copiar" tienen una doble función, ya que operan tanto en los elementos de texto y como en el árbol. En cada caso actáun sobre la parte seleccionada, el panel de texto o el panel de árbol. El botón de formato divide elpárrafo actual en líneas, conforme a la longitud de línea que se haya establecido en el diálogo de preferencias (también se activa con ^L) El botón "Ext.Ed" invoca un editor externo. Para ello se ejecuta la orden que se haya introducido en el diálogo Preferencias. La orden predeterminada es '%s nedit', 's xedit% "o" xterm-e vi %s "- en función de lo que se haya instalado en el sistema - %s se sustituye por el nombre de archivo temporal. Cualquier otro editor se puede utilizar siempre y cuando puede aceptar un nombre de archivo como argumento - personalmente, prefiero "Emacsclient %s". El botón "Fecha" pone la fecha en el archivo, en la posición actual del cursor. El formato de la fecha puede definirse en el diálogo Preferencias - se usa el formato de fecha de strftime (3) - por favor, consulte el manual de strftime para más detalles. Algunas opciones comunes: % F: (11/03/2002) ... este es el valor predeterminado % C: Jue 03 de noviembre 2002 10:33:22 CEST (% D% b% Y): (03 02 de noviembre) m% d /% /% Y: 28/07/2007 "Buscar" muestra el cuadro de diálogo Buscar y reemplazar. "Ordenar" muestra el cuadro de diálogo de ordenación. "Preferencias" abre el diálogo de preferencias. \NewEntry Buscar y reemplazar ^B, Editar->Buscar o el botón Bucar en la barra superior de herramientas, muestran el diálogo de buscar y reemplazar. La operativa debería ser intuitiva - teclee el texto a buscar y pulse uno de los botones de búsqueda. Para reemplazar una ocurrencia del texto, introduzca el nuevo texto en el cuadro de 'reemplazar por' y pulse el botón Reemplazar. El programa buscará hacia adelante, desde la posición del cursor. Púlselo de nuevo y segurá buscando la siguiente ocurrencia. Para reemplazar todas las ocurrencias (desde la posición actual en el archivo) pulse el botón Reeemplazar todo. Los botones de Cerrar y Cancelar cierran el diálogo de buscar y reemplazar- El de Cerrar guarda, además, todas las opciones seleccionadas salvo los textos de búsqueda y de reemplazo. El botón Limpiar borra el contenido de los campos de buscar y reemplazar. Cualquier error que ocurra se muestra en el área inmediatamente dejajo del botón y también en la barra de estado del programa. A continuación, una guía rápida de los elementos para construir expresiones regulares de búsqueda. Nota: gjots2 usa el paquete 're' de Python. Vea la documentación de Python para detalles (las expresiones regulares son más sencillas que las de la versión regex de las versiones C de gjots): . cualquier carácter ^ comienzo de línea (sólo válido como primer carácter de una expresión RE) $ Fin de línea (sólo válido como último caractere de una expresión RE) * cero o más ocurrencias del caracter RE previo + una o más ocurrencias ? cero o una ocurrencia {n} exactamente, n ocurrencias {n,} n o más ocurrencias {n,m} entre n y m ocurrencias [ ] empareja cualquier carater del conjunto delimitado. Por ejemplo [a-z] [^ ] empareja cualquier carater que no esté en el conjunto delimitado. ( ) forma un patrón a 'recordar' | alternativas en un patrón. Ej.: x|y indica "empareja con x o con y" \n n es un dígito 1 a 9 - es una refernecia a un patrón previo \b comienzo o fin de palabra \d un digit0 == [0-9] \s un caracter en blanco == [ \t\n\r\f\v] \S un caracter distinto de los considerados caracteres en blanco \w alfnumérico \W no alfanumérico Para emparejar uno de los caracteres usados como marcadores ^.[$()|*+?{\ hay que precederlos con \ Para definir los patrones de reemplazo: \& pegar todo el texto encontrado \1..\9 pegar el patrón enésimo (definido con (...) ) \n insertar un caracter de nueva línea \NewEntry Imprimir El diálogo de imprimir permite seleccionar qué imprimir:: la página actual, la selección actual, o el tema entero Y permite algunas opciones: Incluir un salto de página tras cada item, y auto-numeración (todavía no está implementado) La orden de imprimir está implementadoa, en la versión 2.3.7 y siguientes, con "gjots2lpr. La idea es buscar herramientas existentes y usarlas. La operativa por defecto es paser el texto a imprimir mediante "a2ps" y ver el resultado con "gv". Si estos programas no están instalados, hay otros - vea "gjots2lpr -h" para más detalles. Antes de la 2.6.7 la orden de imprimir era bsatnate larga, pero se xepandía en el siguiente código: if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv; else lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)& Algunas sugerencias para la orden "Imprimir" en vez de lo que viene por defecto: Para enviar una copia, tal cual, directamente a la impresora: directly to the printer: lpr $1 \NewEntry Preferencias gjots puede personalizarse eligiendo las siguientes opciones: Formateador de texto - por defecto se usa "fmt -w %d" Tamaño de línea - se usa para formatear párrafos. Por defecto 65 Editor externo - editor a utilizar cuando se pulsa el botón "Ed.Ext." Ejemplos de valores para esta opción: nedit %s xedit %s xterm -e vi %s emacsclient %s Formato de fecha - formato de fecha a utilizar con strftime(3) para la función "Fecha". Consulte "man strftime" para información sobre posibles formatos. Ejemplos: %F : (2002-11-03) ... este es el valor por defecto %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) %d/%m/%Y : 28/07/2007 Fuente - El cuerpo de letra a utilizar en el texto. Los controles y el arbol con el índice siempre usan los valores por defecto de GTK-2. \NewEntry Ordenes con el teclado La mayoría de los atajos con teclas son los habituales. En la ventana de texto se usan los habituales en GTK-2 (ligeramente diferentes de las versiones C/GTK-1 de gjots): ^a Seleccionar todo el texto Inicio ir a inicio de línea Fin ir a fin de línea izquierda retroceder un carácter derecha avanzar un carácter ^izquierda retroceder una palabra ^derecha avanzar una palabra abajo avanzar a la siguiente línea up retroceder a la línea anterior ^Inicio/Fin Ir a inicio/final del texto Supr borrar el carácter actual backspace borra el caracter anterior ^L reformatera el párrafo ("wrap") Mayúsculas + marcan el texto para seleccionarlo. Además, se pueden usar las siguientes: ^x cortar ^c copiar ^v pegar En la ventana de árbol están definidas las siguientes teclas: En general la pulsación de una tecla sirve para moverse por el árbol. Y las teclas de control permiten manipular el árbol: arriba ir al item previo abajo ir al siguiente item ^arriba mover el item(s) actual hacia arriba ^abajo mover el item(s) actual hacia abajo mayúsculas+arriba/abajo amplian la selección izquierda ascender por el árbol derecha descender por el árbol ^izquierda promocionar (disminuir nivel) items ^derecha aumentar nivel de los items Inicio ir al primer item del nivel actual Fin ir al último item del nivel actual ^Inicio ir al primer item del árbol ^Fin ir al último item del árbol Atajos globales: ^s guardar el archivo ^q salir del programa ^f mostrar el diálogo de 'buscar y reemplazar' \NewEntry Importar y exportar Puede traer textos desde otros sitios o llevarlos a otros programas mediante las órdenes Importar y Exportar. Operan sobre el item o items que estén seleccionados, de forma que usted pueda controlar con precisión qué es lo que se exporta. El formato del archivo creado es el mismo que el que usa gjots2 para sus archivos. \NewEntry Formato de los archivos gjots2 El mismo que el que usaba gjots: texto plano con marcadores que definen la jerarquía de notas: \NewEntry título1 esto es el texto que va bajo la entrada 'título1' \NewFolder \NewEntry título2 y este el que va bajo 'título2' \NewEntry título3 texto para 'título3' \EndFolder Los \marcadores necesitan estar al comienzo de las líneas para ser reconocidos. \NewEntry Cifrado gjots2 puede cifrar y descifrar archivos usando los paquetes ccrypt(1), openssl(1) o gpg(1). Los archivos se criptografían con uno de ellos en función de la extensión que se ponga al archivo: .cpt ccrypt .ssl openssl .gpg gpg gjots2 pregunta por la contraseña cuando se necesita. Si quiere hacer uso de esta funcionalidad asegúrese que tiene instalado en su equipo ccrypt, openssl o gpg. No pierda la contraseña - No puedo hacer nada para ayudarle a recuperarla si la pierde. \NewEntry Seguridad Para cifrar con ccrypt, se usa el equivalente a: {write cleartext} | KEYWORD=password ccencrypt -E KEYWORD >filename.cpt Ello da lugar a que la contraseña quede comprometida durante unos instantes ya que se guarda en una variable de entorno, aunque es destruida y eliminada inmediatamente tras su uso. Según la página man ccrypt, "en la mayoría de los sistemas modernos" la orden 'ps' protege los parámetros de entorno de ser accedidos por usuarios con permisos normales. Bajo Linux, se puede hacer 'cat /proc/PID/environ' para ver los valores de entorno usados por cualquier proceso del que se sea propietario. Pero sólo el usuario root puede espiar los valores de otros usuarios. Por ello, usar -E no es menos seguro que su contraseña de login o la de root. La única forma alternativa de hacer esto (AFAICS) sería: {write cleartext} >file.gjot echo password |ccencrypt -k - file.gjot ... aunque esto mejora la protección de la contraseña, expone el texto claro (brevemente) en un archivo - es por tanto tan malo o tan bueno como exponer la contraseña en una variable de entorno. El descifrado es mucho más sencillo - gjots2 utiliza stdin para pasar la contraseña: echo password |ccdecrypt -c -k - filename.cpt | {read from pipe} Un canal adicional (eg. stdin=0, stdout=1 stderr=3 stdpasswd=3) para que ccrypt lea las contraseñas sería una solución mucho mejor (pero ccrypt no lo proporciona). \NewEntry URLs en el texto Si haces doble clic en una URL, gjots abrirá en tu navegador web esa URL. Sólo las URLs de la forma 'http[s]://...' son reconocidas por gjots2. La variable de entorno BROWSER se usa para elegir el navegador con el que acceder a internet. Si esta variable no está creada/inicializada se usará el navegador que esté arrancado, probando con los de la siguiente lista: firefox konqueror epiphany opera dillo Si ninguno de ellos estuviera arrancado, gjots usara'el primero de ellos que encuentre y pueda arrancar. \NewEntry Utilidades \NewFolder \NewEntry gjots2html gjots2html convierte un archivo gjots2 a HTML e incluye un índice con el mismo aspecto visual que el arbol de items. Vea la página man para más detalles. gjots2html.py es una versión python de esta misma utilidad que, posiblemente, sea más fiable. \NewEntry gjots2docbook convierte un archivo gjots2 a otro en formato DOCBOOK XML. Vea la página man para más detalles. \NewEntry docbook2gjots convierte un archivo DOCBOOK XML a otro en formato gjots2. Vea la página man para más detalles. \NewEntry gjots2emacs gjots2emacs convierte un archivo gjots a un formato más o menos utilizable para emacs (en modo 'outline'). Uso: gjots2emacs [filename] convierte un archivo gjots a emacs en modo 'outline' (en stdout). Como expresión regex de emacs por defecto se usa ===>+ -b base: el texto base para la expresión outline-regexp (por defecto '===') -F char: marcador para las cabeceras de la expresión outline-regexp (por defecto '>') \EndFolder \EndFolder \NewEntry Estado de desarrollo Cualquier idea para mejorar gjots2 es bienvenida. Por favor, escíbame a bhepple@freeshell.org \NewFolder \NewEntry Funcionalidades previstas What gets added will be limited to the design goal of "fast and lightweight", but might include: Localisation ============ As of version 2.3.0, gjots2 is internationalized and ready for translations. If you would like to see your language supported, please contact the mailing list on bhepple@freeshell.org Check the webpage for localisations already complete. gjots2 ====== Add timestamp to every item & display in appbar when selected autosort on/off for folders Edit->Clear, Properties, Settings->preferences autosave Support for item options: \Options including: open/closed para details ...? gjots2html ========== gjots2html is undergoing some possible changes. There is a new script marked as beta written in Python, and supports the following features: 1) Add
lines after each section. 2) Adds a link to the Table of Contents after each section. 3) Specify a title to the page. 4) Embed the output of gjots2html.py into a pre-existing HTML template file. 5) Suppress the table of contents section. 6) Output the HTML to a specified file. 7) Add a link to a specified Cascading Style Sheet. 8) Wrap the gjots2 text at a specified width. It also supports an arbitrary number of levels in the hierarchy, even though HTML only supports 9. Add options: -r N, --rule=N:
for all levels up to N \NewEntry Problemas conocidos Ninguno conocido salvo: Mensajes de error extraños si no se puede abrir gjots2 al arrancar. El diálogo 'ordenar' (sort) no se inicializa con los valores guardados en gconf. \NewEntry Platforms Tested on the following platforms: Fedora-13 Older version were tested on: Gentoo Linux i386 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Ubuntu Feisty Some of these platforms may require updated packages. Refer to our FAQ for a discussion of these issues. \EndFolder \NewEntry Preguntas frecuentes (FAQ) Preguntas frecuentes relativas a gjots2. Si tiene alguna pregunta que no etś respondida en esta sección, por favor, contacte con la lista . \NewFolder \NewEntry P: Los iconos de la barra de la izquierda parecen deformados. R: Su equipo usa una versión defectuosa de libglade2. Actualice libglade a 2.4.1 o superior. Mi recomendación es actualizar ese paquete mediante el gestor de paquetes de su distribución Linux. \NewEntry P: Se procude el error "ImportError: No module named distutils.core" cuando trato de montar gjots2 desde fuentes. R: Su distribución Linux tiene 'rota' la instalación de python ya que faltan algunos módulos de distutils que son parte del núcleo de python. Instale python correctamente para solucionar este problema. Este es un problema conocido en: Ubuntu (5.10), NLD9, SUSE 9.2. Para arrglarlo en Ubuntu 5.10 : # apt-get install pythonX.X-dev \NewEntry P: Recibo el error "ImportError: No module named gconf" R: Instale gnome-python-2. Este paquete contiene los enlaces necesarios para gconf y puede encontrarlo aquí: http://www.pygtk.org/ Debería buscar un paquete pre-construido, tal como uno de los siguientes: Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry P: ¿Cómo hago para usar gjots2 en Novell Linux Desktop? R: Tendrá que instalar gnome-python (y sus dependencias). \NewEntry P: ¿Cuál es la diferencia entre la antigua versión C (gjots-0.X) y la nueva versión python gjots-2.X.X ? R: Para la versión 2.0.0 las diferencias eran las siguientes (para cambios posteriores, consulte el archivo CHANGES): - Soporte Unicode en los archivos - de forma que pudieran incluirse textos en Ruso - y posiblemente en Turco, Arabe, ... ¡quién sabe si funciona! Si pueden informarme al respecto, lo agradecería. - La potencialidad de incluir soporte para LOTE - ¿algún voluntario para I18N y L10N? - 'Arrastrar y soltar' en el árbol, para facilitar su reorganización. - soporte para gconf con temas de GTK-2. - Ordenación de items y textos. - Mezcla de items - División de items - Imprimir \NewEntry P: ¿Por qué 'Deshacer' y 'Rehacer' no funcionan? R: ¿Están instaladas las librerías gtksourceview ? \EndFolder \NewEntry Autores y licencia \NewFolder \NewEntry Autores Programado por: Bob Hepple Ayuda de: Gabriel Munoz Jiahua Huang Logotipo de: DSP Popeck , 2002 Traducción al Francés: Rui Nibau Traducción al Noruego: Robert Emil Berge Traducción al Ruso: Sergey Bezdenezhnyh Traducción al Italiano: Raimondo Giammanco Traducción al Checo: Martin Sin Traducción al Español: Cecilio Salmerón \NewEntry Licencia (GPL) Copyright (C) 2007 Robert Hepple Copyright (C) 2002 DSP Popeck GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder gjots2-2.4.1/doc/gjots2.ru.gjots0000664000301100007650000016244612234163306016234 0ustar bhepplebheppleРУКОВОДСТВО GJOTS2 g j o t s 2 Боб Хеппле Брисбон Куинсленд Австралия Версия 2.4.1 bhepple@freeshell.org http://bhepple.freeshell.org/gjots \NewEntry Введение gjots2 - это блокнот для Вашего рабочего стола. Зачем нам нужен еще один блокнот? Когда сломался мой старый верный органайзер Psion-5, мне потребовалось перенести все мои заметки и записки в Linux, и я начал поиск подходящего ПО. В то время я нашел множество различных ежедневников и закончил написание калькулятора (gdcalc), но все это слабо походило на блокнот. Другие пакеты, которые я нашел оказались: * слишком простые (напр., с одним уровнем иерархии); * слишком сложные (включали такие компоненты, как Corba и SQL); * веб-ориентированные * неспособны одновременно отображать дерево и работать с текстом; * слишком беспорядочными – наподобие желтых бумажек Post-it по всему экрану. Хотя существовало множество программ, не было ни одной такой, которая бы удовлетворяла моим требованиям. Из всех программ, которые я тогда нашел, лучшей, наверное, была kjots. Так или иначе, мне пришлось изучить, как использовать деревья в GTK и попрактиковаться в использовании glade, – так появился gjots, который жив и по сей день. Первоначально он был написан на C (теперь на Python) c использованием gtk и glade и получился довольно быстрым. Судя по письмам, блокнот получился достаточно полезным не только для меня, это было здорово. Была даже японская версия, процесс разработки которой отделился от gjots (0.3?). Однако мир не стоит на месте: появился GTK-2, и набралось достаточно большое количество пользователей, которые хотели использовать программу на разных языках. Я же хотел подучить python, так появилась новая версия gjots, написанная на python - gjots2. Написанный на интерпретируемом языке gjots2 не так быстр, как предшественник, но предлагает гораздо больше функций. \NewEntry Установка Если возможно, используйте RPM или emerge (Gentoo) - они позволяют легко деинсталлировать программу, а также обеспечивают более гибкие возможности по управлению пакетами по сравнению с setup.py. \NewFolder \NewEntry Зависимости Вам может потребоваться установить (или переустановить) libglade, pygtk, gnome-python, bonobo-python, pyorbit или gtk для установленной версии python или, возможно, просто установить переменную PYTHONPATH, например: export PYTHONPATH=/usr/local/lib/python2.3/site-packages/ Во время написания программы, у меня были установлены пакеты (на Gentoo): dev-python/gnome-python-2.22.0 (2) dev-python/gnome-python-desktop-2.22.0 (0) gnome-base/gnome-common-2.20.0 (3) gnome-base/gnome-keyring-2.22.3 (0) gnome-base/gnome-mime-data-2.18.0 (0) gnome-base/gnome-vfs-2.22.0 (2) gnome-base/libgnome-2.22.0 (0) gnome-base/libgnomecanvas-2.20.1.1 (0) gnome-base/libgnomeui-2.22.1 (0) x11-themes/gnome-icon-theme-2.22.0 (0) dev-python/pygtk-2.12.1-r2 (2) x11-libs/gtk+-2.12.11 (2) gnome-base/libglade-2.6.3 (2.0) dev-python/pyorbit-2.14.3 (0) gnome-base/orbit-2.14.13 (2) Скорее всего, в системах, основанных на пакетах rpm (RedHat, Mandrake/Mandriva, SuSE), все будет похоже (пожалуйста, сообщите). Fedora Core требует наличия пакета gnome-python2-gconf. Убедитесь, что пакеты python установлены в директории site-packages используемой вами версии python (введите "python -V", чтобы узнать версию): /usr/lib/pythonX.X/site-packages Если пакетов там нет, потребуется переустановить их. Это случилось со мной, когда я обновил версию python с 2.2 на 2.3. При этом каталог /usr/lib/python2.X/site-packages автоматически не обновился. Тогда я сделал следующее: emerge unmerge libglade pygtk gnome-python bonobo-python pyorbit emerge libglade pygtk gnome-python bonobo-python pyorbit gjots2 был написан с использованием glade-2, так что если вы хотите изменить или поправить код, придется установить и его. \NewEntry Gentoo До тех пор пока gjots2 имеет официальный ebuild (см. в /usr/portage/app-office), вам потребуется сделать следующее: пакеты, необходимые в gentoo (в порядке зависимости): >=gtk+-2 >=libglade-2 >=pygtk-2 gnome-python-2 >=pyorbit-2 Убедитесь, что у Вас в фалйе /etc/make.conf есть строчка наподобие: PORTDIR_OVERLAY=/usr/local/portage Также в файле /etc/portage/packages.keywords у Вас должна быть строка: app-office/gjots2 ~x86 После этого: VERSION=2.4.1 CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry Системы, основанные на RPM Просто сделайте следующее: VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm rpm -i gjots2-${VERSION}-1.noarch.rpm Безусловно, вам предварительно потребуется удовлетворить все зависимости, такие как pygtk, libglade, и т.д. На моей системе Fedora Сore 4 были следующие зависимости: gtk2-2.6.7-4 libglade2-2.5.1-2 pygtk2-2.6.0-2 gnome-python2-2.10.0-1 gnome-python2-gconf-2.10.0-1 pyorbit-2.0.1-4 \NewEntry Из исходных кодов VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz При установке из исходных кодов, после разархивирования tar архива и входа в каталог программы, введите: python setup.py install [ --prefix=/usr/... ] Для удаления используйте скрипт uninstall.sh, находящийся там же. На некоторых системах при установке из исходных кодов у вас могут возникнуть проблемы с правами доступа. Все новые каталоги должны иметь разрешения 0755, а файлы - разрешения 0644, за исключением файлов 'docbook2gjots', 'gjots2', 'gjots2docbook', и 'gjots2html', у которых должны быть разрешения 0755. \EndFolder \NewEntry Содействие У нас есть две почтовых рассылки для разработчиков и пользователей gjots: Разработчики Gjots : http://lists.sourceforge.net/lists/listinfo/gjots2-devel Пользователи Gjots : http://lists.sourceforge.net/mailman/listinfo/gjots2-users Исправление ошибок всегда приветствуется! Если кто-то хочет перевести эту программу на другие языки, пожалуйста, напишите мне письмо, и я вышлю интернациональную версию каталога сообщений. Я приму все новые дополнения к коду только при условии что они мне понравятся. Если Вы хотите добавить что-то к основной ветке разработки, пожалуйста напишите мне, чтобы убедиться, что никто не работает уже над этой проблемой. Чтобы создать заплатку, желательно использовать команду diff -ru, посылать ее лучше в приложениях к письму в архивах .gz . Если я не захочу включить Ваши изменения, не бойтесь создать ответвление от этого проекта, однако при этом используйте другое название программы. В конце концов, этот код попадает под лицензию GPL. Хочу заметить, чтобы защитить Ваш труд лицензией GPL мне придется внести ваше имя и адрес электронной почты в раздел "Авторы и лицензии". Ели вы хотите участвовать в проекте, подпишитесь на список рассылки разработчиков , чтобы избежать дублирования труда. Если у вас есть глобальные мысли по поводу изменений в проекте, прочитайте раздел "Запланированные функции". \NewEntry РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ \NewFolder \NewEntry Запуск Просто запустите "gjots2", при этом все будет сохранено в файле $HOME/.gjotsfile Вы можете использовать аргумент, чтобы указать имя файла, например: gjots2 заметки.gjots Доступны следующие опции: --help Выводит справку по опциям. -g, --geometry ШИРИНАxВЫСОТА[+X+Y] Положение окна gjots2 при запуске. Внимание, параметры X и Y в настоящее время игнорируются. -r, --readonly Открыть файл в режиме только для чтения (без блокировки) -d, --debug Выводить всевозможную отладочную информацию \NewEntry Открытие и сохранение Открытие и сохранение это обычные действия над текстовыми файлами (см. дальше). За исключением режима «только для чтения», gjots2 создает файл блокировки, чтобы только один пользователь мог записывать в файл, но читать могли все. Если открыть файл, и программа найдет файл блокировки, появится диалог, вопрошающий: «Попытаться снова» и «Только для чтения». Выбор «Попытаться снова» позволяет выйти из программы, которая блокировала файл. Файл блокировки – это обычный файл, имеющий название .#имяфайла, где имя файла – это имя редактируемого файла. Он находиться в том же каталоге, что и редактируемый файл и содержит номер процесса (pid), блокирующего файл. Таким образом, если процесс, блокирующий файл, завершится не удалив файл блокировки, при следующем запуске программа сможет это обнаружить. Поэтому блокировка работает даже на сетевых томах NFS. При открытии фалов только для чтения, файл блокировки не создается. В меню «Файл» существует элемент, позволяющий изменять статус фала «только чтение». Он также следит за файлом блокировки, описанным выше. Когда gjots2 сохраняет файл, он перемещает предыдущую версию файла в резерв на подобии emacs. К примеру, при сохранении файла "кошки.gjots", предыдущая версия сохранится в файле "кошки.gjots~". Если файл имеет расширение ".cpt", gjots попробует расшифровать, а затем зашифровать его, с помощью программы ccrypt(1). Если программа ccrypt не найдена (она не входит в стандартный набор программ), произойдет ошибка ввода-вывода. Тоже самое будет при открытии файлов .ssl с помощью программы (DES3) openssl и файлов .gpg с помощью программы (DES3) gpg. Чтобы достичь лучшей безопасности, установите программы ccrypt, openssl и gpg. \NewEntry Управление Вверху окна программы есть меню и панель инструментов, способ их использования интуитивно понятен. Панель инструментов слева управляет деревом элементов. Попробуйте понажимать на кнопки и вскоре вы поймете что к чему. "Новая страница" - создает новую страницу на текущем уровне дерева. "Новый подэлемент" - создает новую страницу под выбранным элементом. "Вверх" - перемещает выбранный элемент на текущем уровне вверх. "Вниз" - перемещает выбранный элемент на текущем уровне вниз. "Назад" - поднимает выбранный элемент(ы) в дереве до уровня родителя. "Вперед" - делает выбранный элемент(ы) в дереве дочерним элементу непосредственно находящемуся перед ним. "Разбить" - копирует выделенный текст (в правой панели) и помещает его на новую страницу. "Объединить" - объединяет текст выбранных элементов в один большой элемент (разделенный параграфами). "Спрятать все" - сворачивает все ветви дерева до уровня корневого элемента. "Показать все" - раскрывает все ветви дерева, начиная с выбранного элемента (рекурсивно). "Сортировать" - показывает диалог сортировки, с помощью которого можно отсортировать элементы дерева по заданному критерию. Если элемент теряет все свои подэлементы, он автоматически становится простой страницей. На главной панели инструментов находятся кнопки: "Новая страница", "Открыть" и "Сохранить" - понятно без разъяснений. Кнопка "Напечатать" вызывает диалог "Печать". "Вырезать", "Вставить" и "Копировать" действуют по разному в зависимости от того, что выбрано текст или элементы дерева. Кнопка "Выровнять" выравнивает длину строки в параграфе в соответствии со значением, указанным в диалоге параметров (вызывается нажатием ^L). Кнопка "Внешн.ред." запускает внешний редактор, указанный в диалоге параметров в виде командной строки. По умолчанию в зависимости от системы она содержит строку 'nedit %s', 'xedit %s' или 'xterm -e vi %s' , при этом %s заменяется именем временного файла. Теоретически может использоватся любой редактор, главное, чтобы он открывал файлы из аргумента командной строки, лично я предпочитаю "emacsclient %s". Кнопка "Дата" на месте текущего положения курсора вставляет дату. Вы можете настроить формат даты в диалоге Параметры. Кнопка "Найти" открывает диалог "Найти и заменить". "Сортировать" открывает диалог сортировки текста. Кнопка "Параметры" вызывает диалог "Параметры". \NewEntry Поиск и замена ^F, Правка->Найти или кнопка "Найти" на главной панели инструментов, вызывает диалог "Найти и заменить". Эта операция интуитивно понятная - введите то, что вам нужно найти в поле диалоге "Найти и заменить", а затем нажмите кнопку "Найти". Чтобы заменить выражение, введите его в поле "Заменить", а затем нажмите кнопку "Заменить". Программы найдет и заменит ближайшее, встреченное ниже по тексту выражение, нажмете снова - поиск и замена повторится. Чтобы заменить все встречающиеся выражения (начиная с текущей позиции), нажмите кнопку "Заменить все". Обе кнопки "Закрыть" и "Отменить" - закрывают диалог, однако кнопка "Закрыть" сохраняет все установки для последующего их использования (за исключением содержания полей "Найти" и "Заменить"). Кнопка "Очистить" - очищает содержание полей "Найти" и "Заменить". Любые ошибки отражаются непосредственно под кнопкой, а также в строке состояния программы. В параметрах, находящихся под кнопками "Найти" и "Заменить", есть опция "Учитывать регистр" - она позволяет ограничить область поиска путем сравнения регистра букв в целевом и исходном выражениях. Опция "Искать везде" включена по умолчанию и позволяет производить поиск по всему документу, если ее отключить поиск будет производиться только по открытой странице. Опция "Регулярное выражение" позволяет использовать расширяемые Регулярные выражения (РВ) POSIX, описанные в "man 7 regex". Краткий обзор Регулярных выражений (замечу, что gjots2 использует пакеты Python, это намного проще нежели regex, используемый в С версии gjots): . любой символ ^ начало строки (только как первый элемент в РВ) $ конец строки (только как последний элемент в РВ) * ноль или больше повторений предыдущего РВ + одно или больше повторений предыдущего РВ ? ноль или одно повторение предыдущего РВ {n} точно n повторений предыдущего РВ {n,} n или больше повторений предыдущего РВ {n,m} от n до m повторений предыдущего РВ [ ] соответствует любому символу из набора. Пример набора: [а-я] [^ ] соответствует любому символу не из набора. ( ) формирует "хранимый" шаблон | чередование шаблона напр. а|б означает "соответствует а или б" \n n - это число от 1 до 9 - повторение предыдущего шаблона \b начало или конец слова \d цифра == [0-9] \s пробел == [ \t\n\r\f\v] \S не пробел \w буквенно-цифровое \W не буквенно-цифровое Чтобы задать один из 'волшебных' символов ^.[$()|*+?{\ поставьте перед ним \ Для шаблона замены доступны следующие выражения: \& полностью вставляет найденную строку \1..\9 вставляет подшаблон с номером n (определенный с помощью (...) ) \n вставляет новую строку \NewEntry Печать Диалог "Печать" позволяет Вам выбрать, что печатать: текущую страницу, текущее выделение или документ полностью и несколько усовершенствований: прогон страницы, после каждого элемента gjots автонумерацию (еще не до конца реализована) В настоящее время по умолчанию "Команда печати" имеет вид: if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv else # no preview command found, just print it lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)& Хотя этот код немного великоват для одной строки, он позволяет не заботиться о программах просмотра postscript (таких как: kghostview, evince и т.д.) и об их новых несовместимых версиях. Например, gv-3.6.1 больше на распознает опцию -seascape, теперь только --seascape. До тех пор пока в X есть стандартные механизмы предпросмотра вывода печати (включая Gnome, kde и других!!), мы полагаемся на тебя, о, образованный пользователь! Дабы ты сам изменил и оптимизировал этот код под свои нужды. Вот несколько вариантов замены "Команды печати": Чтобы просто направить поток текста на принтер: lpr $1 Чтобы использовать программу предпросмотра, задайте следующую "Команду печати": GV='gv -seascape'; T=/tmp/.tmp.$$;mpage -f -2 -I1 -P- $1 > $T;($GV $T; rm $T)& Этот вариант использует gv-3.5.8. Дабы использовать другую программу предпросмотра или другие опции, модифицируйте параметр GV как показано ниже: # чтобы использовать gv-3.6.1 как программу предпросмотра: GV='gv --seascape' # чтобы использовать ggv как программу предпросмотра: GV='ggv' # чтобы использовать ggv как программу предпросмотра: GV='kghostview' # чтобы использовать evince как программу предпросмотра: GV='evince' Хочу заметить, что ggv, kghostview и evince не имеют параметров, позволяющих инвертировать изображение, по этой причине Вам придется делать это самому вручную. Ну чего молчите? Я? Я использую gv. \NewEntry Параметры Перечисленные ниже элементы могут быть установлены при помощи gconf как параметры: Обработчик текста -по умолчанию это "fmt -w %d" Длина строки используется при выравнивании параграфа, (65) Внешний редактор - редактор, который будет запускаться по нажатию кнопки "Внешн.ред", например : nedit %s xedit %s xterm -e vi %s emacsclient %s Формат даты - строка, передающаяся функции strftime(3), возвращает дату определенного таким образом формата. Чтобы узнать больше обратитесь к страницам man программы strftime. (%F), напр.: %F : (2002-11-03) %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) Шрифт - шрифт, который используется для отображения текста. Элементы управления и дерево элементов используют системный шрифт GTK-2. \NewEntry Комбинации клавиш Большинство комбинаций клавиш такие же, как везде. В панели текста используется обычная раскладка клавиш GTK-2 (немного отличающаяся от C/GTK-1 версии gjots): ^a Выбрать весь текст home перейти в начало строки end перейти в конец строки влево переместить курсор на позицию назад вправо переместить курсор на позицию вперед ^влево переместить курсор на одно слово влево ^вправо переместить курсор на одно слово вправо вниз перейти к следующей строке вверх перейти к предыдущей строке ^home/end перейти в начало/в конец текста delete удалить символ после курсора backspace удалить символ перед курсором ^L переформатирование параграфа или "Перенос" Клавиша Shift и клавиши перемещения выделяют область. Дополнительные комбинации клавиш для работы: ^x вырезать ^c копировать ^v вставить Комбинации клавиш в дереве элементов: Клавиши навигации позволяют перемещаться по дереву, с зажатой клавишей Ctrl, они управляют деревом. вверх перейти к предыдущему элементу вниз перейти к следующему элементу ^вверх переместить выделенный элемент(ы) вверх ^вниз переместить выделенный элемент(ы) вниз shift-вверх/вниз увеличить выделение влево развернуть ветвь вправо свернуть ветвь ^влево повысить элементы ^вправо понизить элементы home перейти к первому элементу на текущем уровне end перейти к последнему элементу на текущем уровне ^home перейти к самому первому элементу ^end перейти к самому последнему (раскрытому) элементу Глобальные комбинации клавиш: ^s сохраниться ^q выйти ^f показать диалог "Найти и заменить" \NewEntry Импорт и экспорт Вы можете перемещать данные в/из gjots2 с помощью функций импорта/экспорта. Эти действия осуществляются над выделенным в этот момент элементом, так что Вы можете полностью контролировать, что будет сохранено. Формат файла обычно - формат gjots2. \NewEntry Формат файла gjots Такой же, как в gjots и такой же как в kjots, но с иерархией: \NewEntry заголовок 1 текст под заголовком 1 \NewFolder \NewEntry заголовок 2 текст под заголовком 2 \NewEntry заголовок 3 текст под заголовком 3 \EndFolder Чтобы распознавались ключевые слова, они должны находиться в начале строки. \NewEntry Шифрование gjots2 может шифровать и дешифровать файлы с использованием пакетов ccrypt(1), openssl(1) и gpg(1). Файлы сохраняются с шифрованием, в соответствии с присвоенным файлу расширением: .cpt ccrypt .ssl openssl .gpg gpg Когда необходимо, gjots2 уточняет у Вас пароль. Убедитесь, что у вас установлены программы ccrypt, openssl или gpg, если Вы хотите использовать эти функции. Не потеряйте свой пароль - я не смогу помочь Вам восстановить забытый или утерянный пароль. \NewEntry Безопасность Для шифрования в ccrypt, я использовал эквивалент: {write cleartext} | KEYWORD=пароль ccencrypt -E KEYWORD >имяфала.cpt Эта строка ненадолго раскрывает пароль, как переменную окружения, несмотря на то, что это снижает уровень безопасности, и сразу после использования удаляет его из переменных окружения gjots2. В соответствии со страницами руководства ccrypt "на большинстве современных систем команда ps защищает переменные окружения от обычных пользователей. Под Linux Вы можете использовать команду 'cat /proc/PID/environ', чтобы просмотреть переменные окружения любого процесса, которым Вы владеете, и только администратор имеет право просматривать переменные окружения других пользователей, так что использование параметра -E не менее безопасно, чем использование Вашего пароля на вход в систему. Единственный другой путь сделать это (AFAICS) : {write cleartext} >file.gjot echo password |ccencrypt -k - file.gjot ... это обеспечивает лучшую защиту пароля, однако (ненадолго) раскрывает текст как файл - это не намного лучше, чем открывать пароль в переменной окружения! Дешифровка производится намного проще - я использовал stdin для ввода пароля: echo password |ccdecrypt -c -k - имяфайла.cpt | {read from pipe} Использование дополнительного канала (напр. stdin=0, stdout=1 stderr=3 stdpasswd=3) для ccrypt при вводе паролей было бы хорошим решением (однако ccrypt не поддерживает их). \NewEntry Утилиты \NewFolder \NewEntry gjots2html gjots2html конвертирует файл gjots2 в HTML, вместе с таблицей содержания, которая выглядит как дерево. Чтобы узнать больше, смотри страницы man. gjots2html.py это версия той-же утилиты, написанная на python. \NewEntry gjots2docbook Конвертирует файлы gjots2 в формат DOCBOOK XML format. Чтобы узнать больше, смотри страницы man. \NewEntry docbook2gjots Конвертирует DOCBOOK XML в gjots2 - подробней, смотри страницы man \EndFolder \EndFolder \NewEntry Состояние разработки Если у Вас есть какие-нибудь идеи, как улучшить gjots2, напишите электронное письмо по адресу gjots2-users@lists.sourceforge.net. \NewFolder \NewEntry Запланированные функции То что будет добавлено, ограничивается девизом проекта "быстрый и легкий", но вскоре могут быть добавлены некоторые функции: Локализация ============ Начиная с версии 2.3.0, gjots2 интернационализирован и готов для перевода. Если Вы хотите использовать программу на своем языке, обратитесь к списку рассылки gjots2 ====== Добавить дату к каждому элементу при выборе автосортировка вкл/выкл для дерева Правка->Отчистить, Параметры, Установки->Параметры автосоханение Поддержка опций: \Опции включая: открыть/закрыть para details ...? gjots2html ========== В gjots2html будет несколько коренных изменений. Это будет новый скрипт написанный в Python и поддерживающий следующие функции: 1) Добавление
линии после каждой секции. 2) Добавление ссылки на Содержание после каждой секции. 3) Определение названия страницы в теге . 4) Возможность направить вывод gjots2html.py в существующий шаблон файла HTML 5) Удаление секции Содержание. 6) Вывод HTML в определенный файл. 7) Добавление ссылок на каскадные таблицы силей(CSS). 8) Перенос текста gjots2 по заданной ширине. Так же он будет поддерживать произвольное количество уровней в иерархии, так как сейчас он поддерживает всего 9. Будуит добавлены опции: -r N, --rule=N: <HR> for all levels up to N \NewEntry Известные ошибки Не найдено, за исключением: Несущественные сообщения об ошибках при первом запуске gjots2. Диалог сортировки, не может сам установить значения, хранящиеся в gconf. \NewEntry Платформы Программа протестирована на следующих системах: Gentoo Linux i386 Ubuntu 4.10 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Мы всегда с радостью принимаем помощь людей, которые тестирую gjots на своих системах. Ждем от них весточки по адресу <gjots2-devel@lists.sourceforge.net>, и их система будет добавлена в список протестированных. Некторые из этих систем могут потребовать обновления пакетов. Обратитесь к ЧАВО, чтобы узнать больше. \EndFolder \NewEntry Gjots ЧАВО Часто Задаваемые ВОпросы, относящиеся к gjots2. Если у Вас есть вопрос, на который тут нет ответа, Вы можете получить консультацию в почтовой рассылке пользователей gjots2 <gjots2-users@lists.sourceforge.net>. \NewFolder \NewEntry В: Иконки на панели дерева элементов залазят одна на другую. О: Вы используете старую версию библиотеки libglade2. Обновите библиотеку libglade до версии >= 2.4.1. Мы рекомендуем обновить этот пакет через менеджер пакетов Вашего дистрибутива. \NewEntry В: У меня возникает ошибка ImportError: No module named distutils.core when building gjots2 from source. О: В вашей системе неправильно установлен python - отсутствуют модули distutils, входящие в стандартную поставку python. Чтобы избавиться от этой ошибки - установите python правильно. Эта ошибка возникала на: Ubuntu (5.10), NLD9, SUSE 9.2. Решение проблемы на Ubuntu 5.10: # apt-get install pythonX.X-dev \NewEntry В:У меня возникает ошибка ImportError: No module named gconf О: Установите пакет gnome-python-2. Этот пакет содержит модули для работы с gconf, они находятся по адресу: http://www.pygtk.org/ Вы можете найти двоичные пакет для своего дистрибутива: Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry В: Где найти gjots2 работающий под Novell Linux Desktop? О: Для того, чтобы установить gjots на Novell Linux Desktop, достаточно установить gnome-python и все его зависимости. \NewEntry В: Какие различия между старой C версией (gjots-0.X) и новой версией на python (gjots-2.X.X) О: В версии 2.0.0, были следующие отличия (разработчики могут найти подробную информацию в файле CHANGES): Поддержка Unicode - так, что я смог делать заметки на русском, турецком и арабском. Сообщения об этом приветствуются! Потенциальная поддержка интернационализации в программе - есть добровольцы для I18N и L10N? Поддержка технологии "Drag and Drop" в дереве для упрощения работы. Поддержка gconf тем GTK-2. Сортировка элементов и/или текста Объединение элементов Возможность разделения элементов Печать \EndFolder \NewEntry Авторы и лицензии \NewFolder \NewEntry Авторы Программа написана: Bob Hepple <bhepple@freeshell.org> Gabriel Munoz <munozga@gmail.com> Логотип создал: DSP Popeck <wokoglopulator@yahoo.com>, 2002 Французский перевод: Rui Nibau <rui.nibau@omacronides.com>, 2005 Русский перевод: Сергей Безденежных <sib-mail@mtu-net.ru>, 2006 \NewEntry Лицензия (GPL) Copyright (C) 2005 Robert Hepple Copyright (C) 2002 DSP Popeck GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/doc/gjots2.nb.gjots��������������������������������������������������������������������0000664�0003011�0000765�00000160663�12234163306�016204� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GJOTS2 MANUAL g j o t s 2 AV Bob Hepple Brisbane Queensland Australia Versjon 2.4.1 bhepple@freeshell.org http://bhepple.freeshell.org/gjots \NewEntry Introduksjon gjots2 er et jotter-program for din datamaskin. Hvorfor trenger vi enda et jotter-program? Vel, da min gamle trofaste Psion-5-planlegger døde, måtte jeg flytte all informasjonen over til Linux, så jeg begynte å lete etter programvare som kunne utfylte behovene mine i henhold til dette. Jeg fant massevis av programvare for dagbøker, og jeg hadde allerede skrevet et fint kalkulatorprogram (gdcalc), men jeg fant ingenting som passet helt til en jotter. Andre programpakker jeg så på var: * altfor enkle (f.eks bare et nivås hierarki), * for komplekse (for mange komponenter som i Cobra, SQL eller liknende) * web-baserte * ikke i stand til å vise og arbeide på treet samtidig som på tekstelementene * for rotete - slang opp vinduer som postit-lapper over hele skjermen Så var det de som jeg ikke kunne få til å virke eller bare krasjet. Når det er sagt så finnes det mange gode programpakker der ute, men ingen som passet akkurat til mine behov. Kjots virket som det beste av dem. Uansett så trengte jeg å lære hvordan man lager GTK-trær, og å øve på å bruke glade - så dermed ble gjots født, og lever ennå. Det ble først skrevet i C (nå i Python), glade og gtk, var ganske raskt, og er fortsatt noe jeg bruker hver dag. Utifra e-posten jeg har mottatt så er det temmelig brukbart for andre også, noe som er fint. Det var til og med en japansk versjon, laget utifra en tidlig versjon av gjots (0.3?), men koden ble aldri gitt tilbake til hovedprogrammet, noe som er synd. Uansett, verden stopper ikke opp, og GTK-2 kom, og det var flere og flere som ønsket LOTE (Languages Other Than English = Andre språk enn engelsk), meg medberegnet. Jeg hadde også lyst til å lære om python og dermed ble denne nåværende versjon av gjots til - gjots2 eller "sønn av gjots". Siden det er skrevet i et tolket språk, er det ikke fullt så kjapt til å starte opp som orginalen gjots, men det har haugevis av nye funksjoner: Som Goldilocks sa om stoler, grøt og senger; gjots2 er "helt riktig". \NewEntry Installasjon Hvis mulig, bruk RPM eller emerge (Gentoo) - de gjør det lett å avinstallere, og bedre pakkehåndtering enn setup.py \NewFolder \NewEntry Før installasjonen Det er mulig du må intallere (eller reinstallere) libglade, pygtk, gnome-python, bonobo-python, pyorbit eller gtk for din versjon av python, eller så kan du muligens sette PYTHONPATH til f.eks: export PYTHONPATH=/usr/local/lib/python2.3/site-packages/ I skrivende stund har jeg følgende installert (i Gentoo): dev-python/gnome-python-2.22.0 (2) dev-python/gnome-python-desktop-2.22.0 (0) gnome-base/gnome-common-2.20.0 (3) gnome-base/gnome-keyring-2.22.3 (0) gnome-base/gnome-mime-data-2.18.0 (0) gnome-base/gnome-vfs-2.22.0 (2) gnome-base/libgnome-2.22.0 (0) gnome-base/libgnomecanvas-2.20.1.1 (0) gnome-base/libgnomeui-2.22.1 (0) x11-themes/gnome-icon-theme-2.22.0 (0) dev-python/pygtk-2.12.1-r2 (2) x11-libs/gtk+-2.12.11 (2) gnome-base/libglade-2.6.3 (2.0) dev-python/pyorbit-2.14.3 (0) gnome-base/orbit-2.14.13 (2) rpm-baserte systemer (RedHat, Mandrake/Mandriva, SuSE) er antakligvis likeledes (gi innspill). Fedora trenger tilsynelatende også gnome-python2-gconf. Make sure the python packages are installed in the site-packages directory for the version of python that you are using (do a "python -V" to find out the version): Vær sikker på at python-pakkene er installert i site-packages- mappen for den versjonen av python du bruker (skriv "python -V" for å finne ut av versjonen): /usr/lib/pythonX.X/site-packages Hvis de ikke er det, kan du være nødt til å resintallere dem - f.eks, skjedde det for meg når python bel oppgradert fra 2.2 til 2.3 - /usr/lib/python2.X/site-packages mappen blir ikke oppdatert automatisk. Da måtte jeg emerge unmerge libglade pygtk gnome-python bonobo-python pyorbit emerge libglade pygtk gnome-python bonobo-python pyorbit gjots2 er skrevet med glade-2, så hvis du vil forandre eller rette på koden, så må du installere det også. Ellers så er det bare python! \NewEntry Gentoo Inntil og om ikke gjots2 har et offisielt ebuild (se i /usr/portage/app-office), så må du gjøre dette: Pakker som trengs i gentoo er (i avhengighetsrekkefølge - det er muligens mindre trøbbel å installer dem fra høyresiden av denne listen, og la Gentoo ta seg av modulene på venstre side - men jeg har ikke prøvd det): >=gtk+-2 >=libglade-2 >=pygtk-2 gnome-python-2 >=pyorbit-2 Pass på at du har en linje som følger i /etc/make.conf: PORTDIR_OVERLAY=/usr/local/portage Du kommer til å trenge følgende linje i /etc/portage/packages.keywords: app-office/gjots2 ~x86 Så: VERSION=2.4.1 CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry RPM-baserte systemer Bare gjør dette: VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm rpm -i gjots2-${VERSION}-1.noarch.rpm Sølfølgelig kan du trenge å installere nødvendige programpakker først, slik som pygtk, libglade, etc På mitt Fedora core 4 system, må jeg ha disse pakkene: gtk2-2.6.7-4 libglade2-2.5.1-2 pygtk2-2.6.0-2 gnome-python2-2.10.0-1 gnome-python2-gconf-2.10.0-1 pyorbit-2.0.1-4 \NewEntry Fra tar-kildekoden VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz Hvis du installerer fra tar-kildekoden, dekomprimer først tar- filen, og cd inn i mappen og gjør dette: python setup.py install [ --prefix=/usr/... ] Avinstaller med uninstall.sh som også ligger der. På noen systemer kan du få tilgangsproblemer med innstallasjon i hovedsystemet fra kildekoden. Alle nye mapper som blir innstallert burde ha 0755 som tilgangskode, og alle filer burede ha 0644, bortsett fra 'docbook2gjots', 'gjots2', 'gjots2docbook', og 'gjots2html', som burde ha 0755. \EndFolder \NewEntry Hjelpe til Vi har satt opp to epost-lister for utvikling og support av gjots: Gjots utviklere <gjots2-devel@lists.sourceforge.net>: http://lists.sourceforge.net/lists/listinfo/gjots2-devel Gjots brukere <gjots2-users@lists.sourceforge.net>: http://lists.sourceforge.net/mailman/listinfo/gjots2-users Programfeilrettinger er svært velkomne! Hvis noen ønsker å oversette dette til et annet språk, ta kontakt, så vil jeg sende en internasjonalisert versjon og beskjed-katalog. Jeg vil inkorporere alle nye funksjoner som folk tilbyr, så lenge jeg også liker dem. Hvis du vil legge til noe til hoved- utviklingen, send meg en beskjed om det først, så jeg kan si ifra om noen andre holder på med det samme. Bruk diff -ru for å lage en patch, og send det som et gzipped fil-vedlegg. Hvis jeg ikke velger å inkorporere din favorittfunskjon, så er du velkommen til å splitte opp utviklingen av programmet, men vær så snill å velg et nytt navn. Alt tatt i betraktning, så er jo dette GPL-kode. Merk at for å beskytte GPL-lisensen, er jeg nødt til å ta med navnet og epost-adressen din i seksjonene Authors og License. Hvis du ønsker å tilføre noe, ta kontakt med epost-listen for utviklere <gjots2-devel@lists.sourceforge.net>, for å sjekke at du ikke utfører dobbelt arbeid. For generelle idéer, se "Planlagte funksjoner" \NewEntry BRUKERHÅNDBOK \NewFolder \NewEntry Oppstart Bare start det med "gjots2" - det vil lagre alt i $HOME/.gjotsfile Eller bruk et argument - gjots2 tar imot en enkelt fil, f.eks: gjots2 ågjøre.gjots Disse valgene er tilgjenglige: --help Skriver ut standard hjelp for gjots2 -g, --geometry BREDDExHØYDE[+X+Y] Vindustørrelse i oppstart for gjots2. Merk at X- og Y- komponentene blir ignorert for øyeblikket. -r, --readonly Åpner filen i uskrivbar modus (ingen låsing blir utført) -d, --debug Lag utførlig informasjon for avlusing \NewEntry Åpne og lagre Åpne og lagre gjør det vanlige, og opererer på gjots-formaterte tekstfiler (se nedenfor). Hvis ikke uskrivbar modus er i effekt, lager gjots2 en låsefil for å sikre at bare en bruker kan skrive til filen, men mange kan lese den. Hvis en fil blir åpnet som allerede er låst, vil et dialogvindu gi valgene "Prøv igjen" eller "Uskrivbar". "Prøv igjen"-valget gir deg mulighet til å avslutte programmet som har låst fila. Låsefila er en enkel fil med navn .#filnavn, hvor filenavn er det samme som gjots2-filen som blir redigert. Det befinner seg i samme mappe som en originale gjots2-filen, og det inneholder bare prosess-koden til prosessen. Hvis prosessen som har låst fila dør uten å slette låsefila, kan gjots2 oppdage det neste gang en fil åpnes. På den måten virker låsing til og med på disker montert over NFS. Filer som blir åpnet som uskrivbare blir ikke låst. I Fil-menyen er det et valg som gjør det mulig å slå uskrivbar- statusen til programmet av og på. Det sørger også for låsing og opplåsing av filen som beskrevet ovenfor. Når gjots2 lagrer en fil, flyttes den gamle versjonen av fila til en sikkerhetskopi på samme måte som emacs. Hvis man lagrer til "fil.gjots" og den allerede finnes, blir den gamle versjonen lagret til "fil.gjots~" Hvis filnavnet slutter på ".cpt", vil gjotst forsøke å kryptere og dekryptere filen med ccrypt(1). Hvis ccrypt ikke er innstallert (det er ikke en standard del av alle Linux-distribusjoner) vil ikke overføringen bli utført. På samme måte vil .ssl-filer bli åpnet med (DES3) openssl og .gpg bli åpnet med (DES3) gpg. Installer ccrypt, openssl og gpg for god sikkerhet! \NewEntry Kontroller Skjermen har en menylinje og en verktøylinje på toppen som burde være temmelig selvforklarende. Verktøylinjen tin venstre kontrollerer tre-hierarkiet. Bare prøv det ut, så vil du raskt finne ut av det. "Nytt element" lager et nytt element på samme nivå som gjeldene element. "Nytt underelement" lager et nytt underelement til gjeldende element. "Opp" flytter gjeldene utvalg foran elementet før på samme nivå. "Ned" gjør det motsatte av "Opp" "Tilbake" flytter gjeldene utvalg til nivået over. "Fram" gjør gjeldene utvalg til underelementer av elementet rett før dem. "Del element" tar utvalget (i høyre panel) og flytter det til et nytt element. "Slå sammen elementer" slår sammen teksten i alle de valgte elementene til et stort element (separert med linjeskift) "Skjul alt" kollapser treet så bare de øverste elementene, under rot-elementet synes. "Vis alt" ekspanderer alle underelementer til de valgte elementer (rekursivt). "Sorter treet" åpner dialogvinduet for å sortere treet basert på gitte kriterier. Når et overelement mister alle sine underelementer blir det automatisk til et normalt element. På den øverste verktøylinjen har vi: "Nytt element", "Åpne" og "Lagre" gjør alle det vanlige. "Skriv ut"-knappen åpner dialogvinduet for utskrift. "Klipp ut", "Lim inn" og "Kopier" har to funksjoner hver, de opererer både på valgt tekstvinduet til høyre og på tre-elementer, basert på om tekst eller tre-elementer er valgt. "Bryt"-knappen formatterer gjeldene avsnitt til linjelengden som er satt i innstillingene (også aktivert med ^L). "Rediger eksternt"-knappen starter et eksternt skriveprogram ut ifra kommandolinjen i instillingene. Standardkommandoen er enten 'nedit %s', 'xedit %s' eller 'xterm -e vi %s' - etter som hva som er innstallert på systemet - %s blir byttet ut med et midlertidig filnavn. Hvilket som helst annet skriveprogram kan brukes, så lenge det det aksepterer et filnavn som argument - personlig foretrekker jeg "emacsclient %s". "Dato"-knappen setter inn et datostempel i filen på gjeldende posisjon. Du kan forandre formatet for datostemplet i instillingene. "Finn"-knappen åpner dialogvinduet for "Finn og erstatt". "Sorter" åpner dialogvinduet for sortering. "Innstillinger" åpner dialogvinduet for instillinger. \NewEntry Finn of Erstatt ^F, Rediger->Finn eller Finn-knappen i øverste verktøylinje åpner dialogvinduet for finn og erstatt. Virkemåten bør være intuitiv - skriv inn det du ønsker å finne i finn-linjen, og trykk på finn-knappen. For å erstatte en forekomst, sett inn den nye teksten i erstatt- linjen, og trykk på erstatt-knappen. Programmet søker så forover, trykk erstatt igjen, og det vil erstatte og søke forover igjen. For å erstatte alle forekomster (fra gjeldende posisjon til slutten av filen), trykk på "erstatt alle"-knappen. Både Lukk- og Avbryt-knappene lukker søk- og erstatt-dialogvinduet - Lukk-knappen lagrer nye innstillinger for senere bruk (bortsett fra Finn- og Erstatt-tekstene). Nullstill-knappen, nullstiller Finn- og Erstatt-tekstene. Alle feil dukker opp både i området rett under knappen, og i status- linjen i hovedvinduet. Under Finn- og Erstatt-knappene kan man sette noen innstillinger. "Bruk kapitalisering" gjør at søket blir begrenset til uttrykk der store og små bokstaver stemmer overens. "Globalt" gjør det søkes gjennom hele filen. Alternativet er å begrense søket til gjeldene element. "Regulært uttrykk" gjør at man kan bruke POSIX utvidede regulære uttrykk som definert i "man 7 regex" (f.eks. som brukt i egrep). En rask referanse til regulære utrykk (merk at gjots2 bruker Pythons re-pakke - se Python-dokumentasjon for fullstendige detaljer, den er en del enklere en den regex som ble brukt i C- versjonen av gjots): . hvilket som helst tegn ^ begynnelsen på linjen (bare som det første tegnet i det RE) $ slutten på linjen (bare som det siste tegnet i det RE) * ingen eller flere repetisjoner av forige RE + en eller flere repetisjoner av forige RE ? ingen eller en repetisjon av forige RE {n} nøyaktig n repetisjoner av forige RE {n,} n eller flere repetisjoner av forige RE {n,m} n til m repetisjoner av forige RE [ ] treffer på hvilket som helst tegn i settet. Områder er f.eks. [a-z] [^ ] treffer på hvilket som helst tegn som ikke er i settet. ( ) Danner et 'husket' mønster | Mønster alterasjon, f.eks. x|y betyr "treffer på x eller y" \n n er 1 til 9 - tilbakereferanse til tidligere mønster \b begynnelse eller slutt av et ord \d et siffer == [0-9] \s tomrom == [ \t\n\r\f\v] \S ikke tomrom \w alfanumerisk \W ikke alfanumerisk For å bruke en av de 'magiske' tegnene ^.[$()|*+?{\, så sett en \ foran. For erstatningsmønstret er følgende sekvenser tilgjengelige: \& lim inn hele den funnede teksten \1..\9 lim inn det nth funnede undermønstret (definert med (...) ) \n sett inn linjeskift \NewEntry Utskrift "Skriv ut"-dialogvinduet lar deg velge "hva som skal skrives ut": Gjeldene element, Utvalg eller alt sammen og noen forbedringer: Mate ut en side etter hvert element og Autonumrering (ikke egentlig implementert ennå) Standarden for "Skriv ut"-kommandoen er å forsøke å skrive ut via et forhåndsvisningsprogram, og kommandoen ser slik ut: if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv else # no preview command found, just print it lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)&B Bortsett fra å være noe kompleks for en enlinjes kommando, lider den også av å ikke vite noe om postscript-visere (f.eks. kghostview, evince etc.) eller om nye inkompatible versjoner, f.eks, gv-3.6.1 kjenner ikke -seascape, den forstår bare --seascape. Før det finnes noen standard mekanisme for å forhåndsvise utskrifter i X (i både kde, gnome og andre!!) vil vi stole på at du, kjære bruker, stiller inn dette til å passe dine egene behov og ditt system. Noen mulige forslag for "Utskriftskommando" istedet for standarden: For helt enkelt å sende rå utdata direkte til skriveren: lpr $1 For å bruke en forhåndsviser, set "Utskriftskommando" slik: GV='gv -seascape'; T=/tmp/.tmp.$$;mpage -f -2 -I1 -P- $1 > $T;($GV $T; rm $T)& Den antar at du har gv-3.5.8 innstallert. For å bruke en annen forhåndsviser eller andre innstillinger, modifiser GV-parameterne slik: # for å bruke gv-3.6.1 som forhåndsviser: GV='gv --seascape' # for å bruke gvv som foråndsviser: GV='ggv' # for å bruke kghostview som forhåndsviser: GV='kghostview' # for å bruke evince som forhåndsviser(ikke utprøvd): GV='evince' Merk at gvv, kghostview og evince (?) ikke har kommandolinjeparametere for å invertere bildet, så du må gjøre det ved å peke og klikke. Dumt, ikke sant? Hva med meg? Jeg bruker gv. \NewEntry Innstillinger Følgende ting kan velges som innstillinger med gconf: Tekstformatering - standard er "fmt -w %d" Linjelengde for tekst - blir brukt når avsnitt formateres, (65) Eksternt skriveprogram - skriveprogram som skal brukes for "Rediger eksternt" f.eks.: nedit %s xedit %s xterm -e vi %s emacsclient %s Datoformat - formatteskt å mate til strftime(3) til bruk i datostempel. Prøv "man strftime" for detaljer. (%F) f.eks.: %F : (2002-11-03) %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) Skrifttype - skrifttypen som skal brukes til å vise tekst. Kontroller og treet bruker fortsatt standard GTK-2 skrifttyper. \NewEntry Tasteoperasjoner De fleste tastesnarveiene er som normalt. I tekstvinduet gjelder det normale GTK-2 tasteoppsettet (noe forskjellig fra C/GTK-1-versjonen av gjots): ^a Velg all teksten home gå til begynnelsen av linjen end gå til slutten av linjen venstre gå tilbake et tegn høyre gå fram et tegn ^venstre gå et ord til venstre ^høyre gå et ord til høyre ned gå til neste linje opp gå til forige linje ^home/end gå til begynnelsen/slutten av teksten delete slett tegnet etter markøren slettetast slett tegnet før markøren ^L omformater avsnittet, eller "linjebryt" Shift og <gå> markerer et utvalg. I tillegg virker følgende: ^x klipp ut ^c kopier ^v lim inn Tasteoppsett i treet: Generelt beveger de deg runt i treet med normale taster. Sammen med kontrolltasten manipulerer du treet. opp gå til forige element ned gå til neste element ^opp flytt valgte element(er) oppover i treet ^ned flytt valgte element(er) nedover i treet shift-opp/ned utvid utvalget venstre gå til overelementer høyre gå til underelementer ^venstre forfrem element(er) ^høyre degrader element(er) home gå til det første elementet på gjeldende nivå end gå til det siste elementet på gjeldende nivå ^home gå til det aller første elementet ^end gå til det siste (viste) elementet Globalt tasteoppsett: ^s Lagre ^q Avslutte ^f Åpner dialogvinduet for Finn og erstatt \NewEntry Importer og eksporter Du kan føre data inn og ut av gjots2 med importer- og eksporter-' funksjonene. Disse opererer på det valgte elementet, så du kan kontrollere nøyaktig hva som blir lagret. Filformatet er det normale gjots2-formatet. \NewEntry gjots2 filformat Det er det samme som for gjots, men med et hierarki. \NewEntry tittel1 det er dette som finnes i tittel1 \NewFolder \NewEntry tittel2 dette er skrift i tittel2 \NewEntry title3 og tittel3s tekst \EndFolder \nøkkelordene må være på begynnelsen av linjen for å bli gjenkjent. \NewEntry Kryptering gjots2 kan kryptere og dekryptere file med ccrypt(1), openssl(1) eller gpg(1). Filene blir lagret med kryptering i henhold til fil-etternavnet du gir: .cpt ccrypt .ssl openssl .gpg gpg gjots2 spør etter passord der det trengs. Pass på at du har ccrypt, openssl eller gpg installert hvis du ønsker å bruke denne funksjonen. Ikke mist passordet - Jeg kan ikke hjelpe deg med å finne tapte passord. \NewEntry Sikkerhet For kryptering i ccrypt, har jeg brukt tilsvardende som: {write klartekst} | KEYWORD=passord ccencrypt -E KEYWORD >filnavn.cpt Dette avslører passordet et kort øyeblikk i en miljø- parameter, men den blir slettet fra gjots2-prosessen med en gang den er brukt. ccrypts man-side sier at "på de fleste moderne systemer", så beskytter ps-kommandoen miljøparametere fra vanlige brukere. I Linux kan du skrive 'cat /proc/PID/environ' for å se miljøparameterne til prosesser som du selv eien - bare root kan spionere på noen andres milje, så det å bruke -E er ikke mindre sikkert enn ditt eget innloggingspassord og roots innloggingspassord. Den eneste alternative måten å gjøre dette på, som jeg kan ser, ville være: {write klartekst} >fil.gjot echo passord |ccencrypt -k - fil.gjot ... selv om dette gir bedre beskyttelse av passordet, så eksponerer det (for et kort øyeblikk) filen som klartekst - like ille, eller verre enn å eksponere nøkkelens som en miljøparameter! Dekryptering er mye lettere - Jeg bruker stdin til å gi passordet: echo passord |ccdecrypt -c -k - filnavn.cpt | {les fra pipe} En tilleggskanal (f.eks. stdin=0, stdout=1 stderr=3 stdpasswd=3= for ccrypt for å lese passord ville vært en bedre løsning (men ccrypt har ikke støtte for det). \NewEntry Verktøysprogrammer \NewFolder \NewEntry gjots2html gjots2html konverterer en gjots2-fil til HTML, sammen med en innholdsfortegnelse som ser besynderlig ut som et tema-tre. Se man-siden for flere detaljer. gjots2html.py er en python-versjon av det samme programmet som kan være mer stabilt. \NewEntry gjots2docbook konverterer en gjots2-fil til DOCBOOK XML-format. Les man-siden for en mer detaljert beskrivelse. \NewEntry docbook2gjots Konverterer DOCBOOK XML til gjots2 - les man-siden for fullstendig beksrivelse. \EndFolder \EndFolder \NewEntry Development status Hvis du har idéer om hvordan gjots2 kan bli forbedret, send en epost til gjots2-users@lists.sourceforge.net \NewFolder \NewEntry Planlagte funksjoner Det som blir lagt til vil være begrenset av design-målet om å være "raskt og lett", men kan inneholde: Lokalisering ============ Fra og med versjon 2.3.0 er gjots2 internasjonalisert og klar for oversettelser. Hvis du ønsker å se støtte for ditt språk, kontakt epost-listen på <gjots2-devel@lists.sourceforge.net> gjots2 ====== Legg til tidsstempel på hvert element og vis det i statuslinjen nå de er valgt. autosortert av/på for mapper Rediger->Tøm, Egenskaper, Innstillinger->Brukervalg autosave Støtte for innstillger per element: \Options åpent/lukket para detaljer ...? gjots2html ========== gjots2html går gjennom noen positive forandringer. Det er et nytt script markert som beta skrevet i Python, som støtter følgende: 1) Legg til <HR>-linjer etter hver seksjon. 2) Legger til en lenke til Innholdsfortegnelsen etter hver seksjon. 3) Spesifiserer en tittel på siden. 4) Legg inn resultatet fra gjots2html.py inn i en eksisterende HTML mal. 5) Ikke ta med innholdsfortegneslen. 6) Skriv HTML til en spesifisert fil. 7) Legg til en link til en spesifisert CSS-fil. 8) Bryt gjots2-teksten på en spesifisert linjelengde. Den har også støtte for et ubestemt antall nivåer i hierarkiet, selv om HTML bare har støtte for 9. Legg til parametere: -r N, --rule=N: <HR> for alle nivåer oppt til N \NewEntry Kjente programfeil Ingen kjente, selvfølgelig, utenom: Feilaktige feilmeldinger hvis det ikke er mulig å åpne en gjots2- fil ved oppstart. Dialogvinduet for sortering kan ikke sette seg selv til verdiene lagret i gconf. \NewEntry Platformer Testet på følgende platformer: Gentoo Linux i386 Ubuntu 4.10 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Vi ser alltid etter hjelp av folk som kan teste gjots-versjoner på sine favorittdistribusjoner. Gi en beskjed i <gjots2-devel@lists.sourceforge.net> og vil bli glade for å legge til din testede distribusjon. Noen av disse platformene kan trenge oppdaterte pakker. Referer til vår OSS (ofte spurte spørsmål) for en diskusjon om dette. \EndFolder \NewEntry Gjots OSS Ofte spurte sprørsmål om gjots2 Hvis du har spørsmål som ikke er svart på her, kontakt epostlisten for gjots2-brukere <gjots2-users@lists.sourceforge.net>. \NewFolder \NewEntry Sp: Ikonene til venstre ser krønsjet ut. Sv: Du bruker en dårlig versjon av libglade2. Oppgrader libglade til vesjon >= 2.4.1. Vi anbefaler at du oppdater denne pakken ved hjelp av din distribusjons pakkehåndterer. \NewEntry Sp: Jeg får feilmeldingen, ImportError: No module named distutils.core når jeg bygger gjots2 fra kildekoden. Sv: Distribusjonen din har effektivt *ødelagt* python-installasjonen ved å ikke inkludere distutils-modulene, som er en del av pythons kjernepakke. Installer python slik det skal være for å ordne opp. Vi kjenner til at dette skjer i: Ubuntu (5.10), NLD9, SUSE 9.2. Ubuntu 5.10 fiks: # apt-get install pythonX.X-dev \NewEntry Sp: Jeg får feilmeldingen, ImprtError: No module named gconf Sv: Installer gnome-python.2. Denne pakken vil inneholde Python- bindingene for gconf og finnes her: http://www.pygtk.org/ Du burde være i stand til å finne forhåndsbygde pakker for disse, slik som følgende: Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry Sp: Hvordan får du gjots2 til å kjøre på Novell Linux Desktop? Sv: Nå må installere gnome-python (og de pakkene den er avhengig av) \NewEntry Sp: Hva er forskjellen på en gamle C-versjonen (gjots-0.X) og den nye python-versjonen, gjots-2.X.X? Sv: Ved 2.0.0 utgivelsen, var det disse forskjellene (for utvikling siden da, se CHANGES logger): Støtte for Unicode i datafilene, så jeg kan lage notater på russisk, kanskje tyrkisk, arabisk, hvem vet hva som vil fungere. Rapporter er velkomne. Mulighet for andre språk enn engelsk i selve programmet. Er det noen frivillige for I18N og L10N? Dra og slipp i tre-vinduet, for enkel organisering. Støtte for gconf med GTK-2 temaer. Sortering av elementer og/eller tekst Slå sammen elementer Dele opp elementer Utskrift \EndFolder \NewEntry Forfattere & Lisens \NewFolder \NewEntry Forfattere Skrevet av: Bob Hepple <bhepple@freeshell.org> Gabriel Munoz <munozga@gmail.com> Logo av: DSP Popeck <wokoglopulator@yahoo.com>, 2002 Fransk oversettelse av: Rui Nibau <rui.nibau@omacronides.com>, 2005 Norsk oversettelse av: Robert Emil Berge <robert@rebi.no>, 2006 \NewEntry Lisens (GPL) Copyright (C) 2005 Robert Hepple Copyright (C) 2002 DSP Popeck Her kommer først en uoffisiell oversettelse av GPL. Lisensen som gjelder for dette programmet står på engelsk under. GNU GENERAL PUBLIC LICENCE * Forord * LOVER OG REGLER FOR KOPIERING, DISTRIBUSJON OG MODIFISERING * Hvordan du kan legge til disse reglene til dine nye programmer GNU GENERAL PUBLIC LICENCE (GNU GENERELL OFFENTLIG LISENS) Versjon 2, juni 1991, oversatt januar 2004; oppdatert juli 2005. Opphavsrett © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Alle har lov til å kopiere og distribuere umodifiserte kopier av dette lisensdokumentet, men å endre det er forbudt. Forord De fleste programvarelisenser er laget for å ta vekk din frihet til å dele og endre programvaren. GNU General Public Licence vil som en konstrast garantere din frihet til å dele og endre fri programvare -- og gjøre det sikkert at programvaren er fri for alle dets brukere. Denne GNU General Public Licence gjelder for mesteparten av Free Software Foundations programvare og til alle andre programmer som er laget av folk som vil bruke den (Noen andre av Free Software Foundation sin programvare er dekket av GNU Library General Public Licence isteden.). Du kan legge den til dine programmer, også. Når en snakker om fri programvare, refererer en til frihet, ikke pris. Våre lisenser er laget for å forsikre at du har frihet til å distribuere kopier av fri programvare (og ta deg betalt for tjenesten om du ønsker), som du mottar kildekoden til eller kan få hvis du vil ha den, slik at du kan endre programvaren eller bruke deler av den i nye, frie programmer, og at du vet at du kan gjøe dette. For å beskytte dine rettigheter, må det være regler som forbyr noen å nekte deg disse rettighetene eller be deg om å gi dem fra deg. Disse reglene betyr en del ansvar for deg hvis du distribuerer kopier av programvaren, eller endrer den. For eksempel, hvis du distribuerer kopier av et slikt program, enten gratis eller for penger, må du gi mottakeren alle de rettighetene du har. Du må være sikker på at de også, mottar eller kan få kildekoden. Og du må vise dem disse reglene slik at de vet hvilke rettigheter de har. GNU GPL beskytter rettighetene dine i to steg: (1) Gir deg opphavsrett til programvaren, og (2) tilby deg denne lisensen som gir deg lovlig tilatelse til å kopiere, distribuere og/eller endre programvaren. Også, for hver forfatters beskyttelse og våres, vil en forsikre seg om at alle forstår at det ikke er noen garanti for denne frie programvaren. Dersom programvaren er endret av noen andre og gitt videre, vil de at mottakeren skal vite at det de har fått, ikke er originalen, slik at problemer introdusert av andre ikke vil reflektere den originale forfatterens rykter. Til slutt, ethvert fritt program er konstant truet av programvarepatenter. De ønsker å unngå faren som redistributører av frie programmer vil individuelt ta patenter, noe som gjør at programvaren blir eiendom. For å unngå dette,har de gjort det klart at enhver patent må være lisensert for alles fri bruk eller ikke lisensert i det hele tatt. De presise lovene og reglene for kopiering, distribusjon og modifisering er under. LOVER OG REGLER FOR KOPIERING, DISTRIBUSJON OG MODIFISERING 0. Lisensen gjelder for ethvert program eller annet verk som inneholderen notis plassert ved opphavsrettholderen som sier at det kan bli distribuert under lovene av denne General Public Licence. "Programmet", under, refererer til et slikt program eller verk, og et "verk basert på programmet" betyr enten Programmet eller noe som helst underliggende verk under copyright loven: det betyr, et verk som inneholder Programmet eller en del av det, enten umodifisert eller med modifikasjoner og/eller oversatt til et annet språk. (Heretter er oversettelse inkludert uten begrensninger innenfor uttrykket "modifikasjon"). Hver lisensier er addressert som "deg". Aktiviteter annet en kopiering, distribuering og modifisering er ikke dekket av denne Lisensen; de er utenfor dette. Det å kjøre et program er det ikke noen restriksjoner på, og utskrift fra programmet er dekket kun dersom innholdet baserer seg på et verk basert på Programmet (uavhengig av om det har blitt laget av det kjørende Programmet). Enten det er sant eller ikke avhenger av hva programmet gjør. 1. Du kan kopiere og distribuere umodifiserte kopier av Programmets kildekode så lenge du mottar det, i hvilket som helst medium, gitt at du lett synlig og korrekt ved hver kopi legger en riktig opphavsrettnotis og informasjon om garanti; ha i takt alle notisene som refererer til denne Lisensen og at det ikke finnes noen som helst form for garanti; og gi alle andre mottakere av Programmet en kopi av denne Lisensen ved Programmet. 2. Du kan modifisere din kopi eller kopier av Programmet eller hvilken som helst den av den, følgende forme et verk basert på Programmet, og kopiere og distribuere slike typer av modifikasjoner og verk under regler i Seksjon 1 over, gitt at du også oppfyller alle disse krav: a) Du må sørge for at de modifiserte filene har viktige notiser som sier at du endret filene til den tiden og den datoen du gjorde endringer. b) Du må sørge for at ethvert verk du distribuerer eller publiserer, som i sin helhet eller deler av er tatt fra Programmet eller enhver del derav, blir lisensiert helhetlig uten kostnader til alle tredjeparter under reglene i denne Lisensen. c) Dersom det modifiserte programmet normalt sett leser kommandoer interaktivt når det kjører, må du sørge for at det, når det starter å kjøre interaktivt på den mest ordinære måten, skriver ut eller viser en passende opphavsrettnotis og en notis som sier at det ikke er noen garanti (eller, som sier at du selv tilbyr en garanti) og at brukere kan redistribuere programmene under disse betingelsene, og fortelle brukeren hvordan det er mulig å vise en kopi av denne Lisensen. (Unntak: Dersom Programmet i seg selv er interaktivt, men normalt sett ikke skriver en slik notis, trenger ikke ditt verk basert på Programmet å skrive ut en slik notis.) Disse betingelsene gjelder for det hele modifiserte verket. Dersom identifiserbare seksjoner av det verket ikke er fra Programmet, og kan bli fornuftig ansett som uavhengig og et separat verk i seg selv, ikke legg til de seksjonene når du distribuerer dem som separate verk. Men når du distribuerer den samme seksjonen som del av et helt verk som er basert på Programmet, må hele distribusjonen være på betingelsene i denne Lisensen, hvis rettigheter for andre lisenser utvider til det hele, og følgende til hver og en del uavhengig av hvem som skrev det. Følgende er det ikke meningen i denne seksjonen å kreve rettigheter eller konkurrere dine rettigheter til verk laget bare av deg; isteden er meningen å utøve retten til å kontrollere distribusjonen av utspringere eller samlebare verk basert på Programmet. I tillegg, små uviktige biter av et annet verk som ikke er basert på Programmet med Programmet (eller et verk basert på Programmet) på et lagringsmedium bringer ikke det andre verket under denne lisensen. 3. Du kan kopiere og distribuere Programmet (eller et verk basert på det, under Seksjon 2) i objektkode eller kompilert form under reglene i Seksjon 1 og 2 over gitt at du gjør ett av følgende: a) Legger ved komplett korresponderende maskinleselig kildekode, som må være distribuert under reglene i Seksjon 1 og 2 på et medium spesielt brukt for programvareutgivelse; eller: b) Legge ved et skriftlig tilbud, gyldig for minst tre år, om å gi ethvert tredjeparti, for en sum mindre enn å fysisk utføre kildekodedistribusjon, en komplett maskinleselig kopi av den korresponderende kildekoden, for å bli distribuert under reglene i Seksjon 1 og 2 over på et medium spesielt brukt for programvareutgivelse; eller: c) Legge ved informasjon du mottok som tilbudet til å distribuere korresponderende kildekode. (Dette alternativet er kun tillatt for ikke-kommersiell distribusjon og kun dersom du mottok programmet i objektkode eller kompilert form med et slikt tilbud, i følge Underseksjon b over.) Kildekoden for et verk betyr den foretrukne formen av verket for å modifisere det. For et kjørbart arbeid, betyr komplett kildekode all kildekode for alle modulene det inneholder, pluss alle tilhørende grensesnittsdefinisjonsfiler, pluss skriptene som brukes til å kontrollere kompilering og installasjon av det kjørbare programmet. Men, som et spesielt unntak, kildekoden som blir distribuert trenger ikke å inkludere noe som vanligvis er distribuert (i enten kilde eller binær form) med viktige komponenter (kompilator, kjerne og så videre) av operativsystemet til det systemet som det kjørbare programmet kjører på, med mindre den komponenten i seg selv akkompagnierer det kjørbare programmet. Dersom distribusjonen av maskinkoden eller objektkoden er laget for å tilby tilgang til å kopiere fra en bestemt plass, da vil det å tilby tilsvarende tilgang til å kopiere kildekode fra den samme plassen telle som distribusjon av kildekoden, selv om tredjepartier ikke er påbudt å kopiere kildekoden ved objektkoden. 4. Du kan ikke kopiere, modifisere, underlisensere, eller distribuere Programmet på andre måter enn slik som er uttrykt i denne Lisensen. Ethvert forsøk på å kopiere, modifisere, underlisensere eller distribuere Programmet er ugyldig og du vil automatisk få fratatt dine rettigheter under denne Lisensen. Men, partier som ikke har mottatt kopier, eller rettigheter, fra deg under denne Lisensen vil ikke få deres rettigheter fratatt så lenge slike partier fortsatt følger reglene. 5. Du er ikke påkrevd å akseptere denne Lisensen, siden du ikke har signert den. Men, ingenting annet gir deg rett til å modifisere eller distribuere Programmet eller programmer som stammer fra det. Disse handlingene er forbudt ved lov dersom du ikke aksepterer denne Lisensen. Derfor, ved å modifisere eller distribuere Programmet (eller ethvert verk basert på Programmet), indikerer du at du aksepterer denne Lisensen til å gjøre det, og alle dets regler og retningslinjer for å kopiere eller modifisere Programmet eller verk basert på det. 6. Hver gang du redistribuerer Programmet (eller et arbeid basert på Programmet), vil mottakeren automatisk motta en lisens fra den originale forfatteren til å kopiere, distribuere eller modifiserere Programmet ettre disse reglene. Du kan ikke påtvinge videre restriksjoner for mottakerens rettigheter gitt her. Du er ikke ansvarlig for å påtvinge at tredjepartier aksepterer denne Lisensen. 6. Hver gang du redistribuerer Programmet (eller et arbeid basert på Programmet), vil mottakeren automatisk motta en lisens fra den originale forfatteren til å kopiere, distribuere eller modifiserere Programmet etter disse reglene. Du kan ikke påtvinge videre restriksjoner for mottakerens rettigheter gitt her. Du er ikke ansvarlig for å påtvinge at tredjepartier aksepterer denne Lisensen. 7. Dersom, som en konsekvens av en dom fra retten eller en patent som begrenser dine rettigheter eller for enhver annen grunn (ikke begrenset til patentsaker), gjør at du er påtvunget (enten av en dommer, en avtale eller annet) til å gå mot reglene til denne Lisensen, unnskylder de deg ikke fra reglene i denne Lisensen. Dersom du ikke kan distribuere for så å tilfredsstille sammenhengene, dine obligasjoner under denne Lisensen og enhver relevant obligasjon, vil du som en konsekvens ikke kunne distribuere Programmet i det hele tatt. For eksempel, dersom en patent lisens ikke tillater fri redistribusjon av Programmet av alle som mottar kopiere direkte eller indirekte gjennom deg, da er den eneste måten du kan tilfredsstille den og denne Lisensen å totalt frastå fra distribuering av Programmet. Dersom noen del av denne seksjonen blir holdt ugyldig eller anses som ikke-påtvingbar, er balansen av denne seksjonen er ment til å gjelde og seksjonen som en helhet er ment å gjelde i andre situasjoner. Det er ikke meningen i denne seksjonen å få deg til å oppgi patenter eller andre eiendomsretter eller få deg til å ugyldiggjøre dem; denne seksjonen har som intensjon å beskytte integriteten av det frie programvaredistribusjonssystem, som er implementert av offentlige lisensutøvere. Mange folk har kommet med generøse deltakelser i det store spekter av programvare distribuert gjennom systemet i avhengighet av konsistent gjennomføring av systemet, det er opp til forfatteren/donoren å bestemme om vedkommende er villig til å distribuere programvare gjennom et annet system og en som har en lisens kan ikke ta den avgjørelsen. Denne seksjonen er ment for å gjøre det klart hva som er trodd å være en konsekvens av resten av denne Lisensen. 8. Dersom distribusjonen og/eller bruk av Programmet har restriksjoner i bestemte land eller patenter eller av opphavsrett, kan den orignale opphavsrettinnehaveren som plasserer Programmet under denne lisensen legge til geografiske distribusjonsbegrensninger, slik at distribusjon er tillatt bare i eller mellom land som ikke er ekskludert. I slike tilfeller, blir denne Lisensen del av begreninsningen slik som skrevet i kroppen av denne Lisensen. 9. Free Software Foundation kan utgi reviderte og/eller nye versjoner av General Public Licence-dokumentet fra tid til annen. Slike nye versjoner vil bli værelike i ånd til den nåværende versjonen, men kan endre seg når det gjelder adresse. Enhver versjon er gitt et versjonnummer. Dersom Programmet spesifiserer et versjonnummer av denne Lisensen som legger til det og "enhver senere versjon" ("any later version"), har du valget mellom de følgende reglene enten den versjonen eller enhver senere versjon publisert av Free Software Foundation. Dersom Programmet ikke spesifeiserer et versjonnummer av denne Lisensen, kan du velge enhver versjon noen gang utgitt av Free Software Foundation. 10. Dersom du vil legge til deler av Programmet inn i alle gratis programmer hvis distribusjonsregler er forskjellige, skriv til forfatteren og spør om tillatelse. For programvare som er copyrightet av Free Software Foundation, skriv til Free Software Foundation, de gjør noen ganger unntak for dette. Deres avgjørelse vil bli veiledet av de to målene om å beholde den frie statusen av alt som stammer fra deres frie programvare og for å bemerke deling og gjenbruk av programvare generelt sett. INGEN GARANTI 11. FORDI DETTE PROGRAMMET ER LISENSERT GRATIS, ER DET INGEN GARANTI FOR PROGRAMET, MED MINDRE FORLENGET AV LOVEN. UNNTATT NÅR DET ER UTTRYKT ANNERLEDES I SKRIVET OPPHAVSRETTINNEHAVEREN OG/ELLER ANDRE PARTIER TILBYR PROGRAMMET "SOM DET ER" UTEN GARANTI AV NOE SLAG, ENTEN UTTRYKT ELLER PÅTVUNGET, INKLUDERT, MEN IKKE BEGRENSET TIL, GARANTIER AV UTGIVING FOR DET BESTEMTE FORMÅLET. HELE RISIKOEN OG KVALITETEN OG UTFØRINGEN AV PROGRAMMET ER MED DEG. SKULLE PROGRAMMET VISE SEG Å VÆRE DEFEKT, MÅ DU SELV BETALE ALLE KOSTNADENE FOR NØDVENDIG SERVICE, REPARERING ELLER KORRIGERING. 12. I INGEN SITUASJON PÅKREVD AV LOV ELLER AVTALT TIL I SKRIVET VIL ENHVER OPPHAVSRETTINNEHAVER, ELLER ET ANNET PARTI SOM KAN MODIFISERE OG/ELLER REDISTRIBUERE PROGRAMMET SOM TILLATT OVER, VÆRE ANSVARLIG FOR DINE SKADER, INKLUDERT ETHVERT GENERELT, SPESIELT, VIKTIG, ELLER KONSEKVENTE SKADER SOM KOMMER AV BRUK ELLER AT DET IKKE ER MULIG Å BRUKE PROGRAMMET (INKLUDERT MEN IKKE BEGRENSET TIL TAP AV DATA ELLER DATA SOM BLIR LAGET UNØYAKTIG ELLER TAP FORÅRSAKET AV DEG ELLER TREDJEPARTIER ELLER AT PROGRAMMET FEILER I Å OPERERE MED ANDRE PROGRAMMER). SELV OM SLIKE INNEHAVERE ELLER ANDRE PARTIER HAR BLITT FORTALT OM SANNSYNLIGHETEN FOR SLIKE SKADER. Slutt på regler Her kommer den offisielle GPL på engelsk, som gjelder for dette programmet. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder �����������������������������������������������������������������������������gjots2-2.4.1/doc/gjots2.no.gjots��������������������������������������������������������������������0000664�0003011�0000765�00000160663�12234163306�016221� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GJOTS2 MANUAL g j o t s 2 AV Bob Hepple Brisbane Queensland Australia Versjon 2.4.1 bhepple@freeshell.org http://bhepple.freeshell.org/gjots \NewEntry Introduksjon gjots2 er et jotter-program for din datamaskin. Hvorfor trenger vi enda et jotter-program? Vel, da min gamle trofaste Psion-5-planlegger døde, måtte jeg flytte all informasjonen over til Linux, så jeg begynte å lete etter programvare som kunne utfylte behovene mine i henhold til dette. Jeg fant massevis av programvare for dagbøker, og jeg hadde allerede skrevet et fint kalkulatorprogram (gdcalc), men jeg fant ingenting som passet helt til en jotter. Andre programpakker jeg så på var: * altfor enkle (f.eks bare et nivås hierarki), * for komplekse (for mange komponenter som i Cobra, SQL eller liknende) * web-baserte * ikke i stand til å vise og arbeide på treet samtidig som på tekstelementene * for rotete - slang opp vinduer som postit-lapper over hele skjermen Så var det de som jeg ikke kunne få til å virke eller bare krasjet. Når det er sagt så finnes det mange gode programpakker der ute, men ingen som passet akkurat til mine behov. Kjots virket som det beste av dem. Uansett så trengte jeg å lære hvordan man lager GTK-trær, og å øve på å bruke glade - så dermed ble gjots født, og lever ennå. Det ble først skrevet i C (nå i Python), glade og gtk, var ganske raskt, og er fortsatt noe jeg bruker hver dag. Utifra e-posten jeg har mottatt så er det temmelig brukbart for andre også, noe som er fint. Det var til og med en japansk versjon, laget utifra en tidlig versjon av gjots (0.3?), men koden ble aldri gitt tilbake til hovedprogrammet, noe som er synd. Uansett, verden stopper ikke opp, og GTK-2 kom, og det var flere og flere som ønsket LOTE (Languages Other Than English = Andre språk enn engelsk), meg medberegnet. Jeg hadde også lyst til å lære om python og dermed ble denne nåværende versjon av gjots til - gjots2 eller "sønn av gjots". Siden det er skrevet i et tolket språk, er det ikke fullt så kjapt til å starte opp som orginalen gjots, men det har haugevis av nye funksjoner: Som Goldilocks sa om stoler, grøt og senger; gjots2 er "helt riktig". \NewEntry Installasjon Hvis mulig, bruk RPM eller emerge (Gentoo) - de gjør det lett å avinstallere, og bedre pakkehåndtering enn setup.py \NewFolder \NewEntry Før installasjonen Det er mulig du må intallere (eller reinstallere) libglade, pygtk, gnome-python, bonobo-python, pyorbit eller gtk for din versjon av python, eller så kan du muligens sette PYTHONPATH til f.eks: export PYTHONPATH=/usr/local/lib/python2.3/site-packages/ I skrivende stund har jeg følgende installert (i Gentoo): dev-python/gnome-python-2.22.0 (2) dev-python/gnome-python-desktop-2.22.0 (0) gnome-base/gnome-common-2.20.0 (3) gnome-base/gnome-keyring-2.22.3 (0) gnome-base/gnome-mime-data-2.18.0 (0) gnome-base/gnome-vfs-2.22.0 (2) gnome-base/libgnome-2.22.0 (0) gnome-base/libgnomecanvas-2.20.1.1 (0) gnome-base/libgnomeui-2.22.1 (0) x11-themes/gnome-icon-theme-2.22.0 (0) dev-python/pygtk-2.12.1-r2 (2) x11-libs/gtk+-2.12.11 (2) gnome-base/libglade-2.6.3 (2.0) dev-python/pyorbit-2.14.3 (0) gnome-base/orbit-2.14.13 (2) rpm-baserte systemer (RedHat, Mandrake/Mandriva, SuSE) er antakligvis likeledes (gi innspill). Fedora trenger tilsynelatende også gnome-python2-gconf. Make sure the python packages are installed in the site-packages directory for the version of python that you are using (do a "python -V" to find out the version): Vær sikker på at python-pakkene er installert i site-packages- mappen for den versjonen av python du bruker (skriv "python -V" for å finne ut av versjonen): /usr/lib/pythonX.X/site-packages Hvis de ikke er det, kan du være nødt til å resintallere dem - f.eks, skjedde det for meg når python bel oppgradert fra 2.2 til 2.3 - /usr/lib/python2.X/site-packages mappen blir ikke oppdatert automatisk. Da måtte jeg emerge unmerge libglade pygtk gnome-python bonobo-python pyorbit emerge libglade pygtk gnome-python bonobo-python pyorbit gjots2 er skrevet med glade-2, så hvis du vil forandre eller rette på koden, så må du installere det også. Ellers så er det bare python! \NewEntry Gentoo Inntil og om ikke gjots2 har et offisielt ebuild (se i /usr/portage/app-office), så må du gjøre dette: Pakker som trengs i gentoo er (i avhengighetsrekkefølge - det er muligens mindre trøbbel å installer dem fra høyresiden av denne listen, og la Gentoo ta seg av modulene på venstre side - men jeg har ikke prøvd det): >=gtk+-2 >=libglade-2 >=pygtk-2 gnome-python-2 >=pyorbit-2 Pass på at du har en linje som følger i /etc/make.conf: PORTDIR_OVERLAY=/usr/local/portage Du kommer til å trenge følgende linje i /etc/portage/packages.keywords: app-office/gjots2 ~x86 Så: VERSION=2.4.1 CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry RPM-baserte systemer Bare gjør dette: VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm rpm -i gjots2-${VERSION}-1.noarch.rpm Sølfølgelig kan du trenge å installere nødvendige programpakker først, slik som pygtk, libglade, etc På mitt Fedora core 4 system, må jeg ha disse pakkene: gtk2-2.6.7-4 libglade2-2.5.1-2 pygtk2-2.6.0-2 gnome-python2-2.10.0-1 gnome-python2-gconf-2.10.0-1 pyorbit-2.0.1-4 \NewEntry Fra tar-kildekoden VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz Hvis du installerer fra tar-kildekoden, dekomprimer først tar- filen, og cd inn i mappen og gjør dette: python setup.py install [ --prefix=/usr/... ] Avinstaller med uninstall.sh som også ligger der. På noen systemer kan du få tilgangsproblemer med innstallasjon i hovedsystemet fra kildekoden. Alle nye mapper som blir innstallert burde ha 0755 som tilgangskode, og alle filer burede ha 0644, bortsett fra 'docbook2gjots', 'gjots2', 'gjots2docbook', og 'gjots2html', som burde ha 0755. \EndFolder \NewEntry Hjelpe til Vi har satt opp to epost-lister for utvikling og support av gjots: Gjots utviklere <gjots2-devel@lists.sourceforge.net>: http://lists.sourceforge.net/lists/listinfo/gjots2-devel Gjots brukere <gjots2-users@lists.sourceforge.net>: http://lists.sourceforge.net/mailman/listinfo/gjots2-users Programfeilrettinger er svært velkomne! Hvis noen ønsker å oversette dette til et annet språk, ta kontakt, så vil jeg sende en internasjonalisert versjon og beskjed-katalog. Jeg vil inkorporere alle nye funksjoner som folk tilbyr, så lenge jeg også liker dem. Hvis du vil legge til noe til hoved- utviklingen, send meg en beskjed om det først, så jeg kan si ifra om noen andre holder på med det samme. Bruk diff -ru for å lage en patch, og send det som et gzipped fil-vedlegg. Hvis jeg ikke velger å inkorporere din favorittfunskjon, så er du velkommen til å splitte opp utviklingen av programmet, men vær så snill å velg et nytt navn. Alt tatt i betraktning, så er jo dette GPL-kode. Merk at for å beskytte GPL-lisensen, er jeg nødt til å ta med navnet og epost-adressen din i seksjonene Authors og License. Hvis du ønsker å tilføre noe, ta kontakt med epost-listen for utviklere <gjots2-devel@lists.sourceforge.net>, for å sjekke at du ikke utfører dobbelt arbeid. For generelle idéer, se "Planlagte funksjoner" \NewEntry BRUKERHÅNDBOK \NewFolder \NewEntry Oppstart Bare start det med "gjots2" - det vil lagre alt i $HOME/.gjotsfile Eller bruk et argument - gjots2 tar imot en enkelt fil, f.eks: gjots2 ågjøre.gjots Disse valgene er tilgjenglige: --help Skriver ut standard hjelp for gjots2 -g, --geometry BREDDExHØYDE[+X+Y] Vindustørrelse i oppstart for gjots2. Merk at X- og Y- komponentene blir ignorert for øyeblikket. -r, --readonly Åpner filen i uskrivbar modus (ingen låsing blir utført) -d, --debug Lag utførlig informasjon for avlusing \NewEntry Åpne og lagre Åpne og lagre gjør det vanlige, og opererer på gjots-formaterte tekstfiler (se nedenfor). Hvis ikke uskrivbar modus er i effekt, lager gjots2 en låsefil for å sikre at bare en bruker kan skrive til filen, men mange kan lese den. Hvis en fil blir åpnet som allerede er låst, vil et dialogvindu gi valgene "Prøv igjen" eller "Uskrivbar". "Prøv igjen"-valget gir deg mulighet til å avslutte programmet som har låst fila. Låsefila er en enkel fil med navn .#filnavn, hvor filenavn er det samme som gjots2-filen som blir redigert. Det befinner seg i samme mappe som en originale gjots2-filen, og det inneholder bare prosess-koden til prosessen. Hvis prosessen som har låst fila dør uten å slette låsefila, kan gjots2 oppdage det neste gang en fil åpnes. På den måten virker låsing til og med på disker montert over NFS. Filer som blir åpnet som uskrivbare blir ikke låst. I Fil-menyen er det et valg som gjør det mulig å slå uskrivbar- statusen til programmet av og på. Det sørger også for låsing og opplåsing av filen som beskrevet ovenfor. Når gjots2 lagrer en fil, flyttes den gamle versjonen av fila til en sikkerhetskopi på samme måte som emacs. Hvis man lagrer til "fil.gjots" og den allerede finnes, blir den gamle versjonen lagret til "fil.gjots~" Hvis filnavnet slutter på ".cpt", vil gjotst forsøke å kryptere og dekryptere filen med ccrypt(1). Hvis ccrypt ikke er innstallert (det er ikke en standard del av alle Linux-distribusjoner) vil ikke overføringen bli utført. På samme måte vil .ssl-filer bli åpnet med (DES3) openssl og .gpg bli åpnet med (DES3) gpg. Installer ccrypt, openssl og gpg for god sikkerhet! \NewEntry Kontroller Skjermen har en menylinje og en verktøylinje på toppen som burde være temmelig selvforklarende. Verktøylinjen tin venstre kontrollerer tre-hierarkiet. Bare prøv det ut, så vil du raskt finne ut av det. "Nytt element" lager et nytt element på samme nivå som gjeldene element. "Nytt underelement" lager et nytt underelement til gjeldende element. "Opp" flytter gjeldene utvalg foran elementet før på samme nivå. "Ned" gjør det motsatte av "Opp" "Tilbake" flytter gjeldene utvalg til nivået over. "Fram" gjør gjeldene utvalg til underelementer av elementet rett før dem. "Del element" tar utvalget (i høyre panel) og flytter det til et nytt element. "Slå sammen elementer" slår sammen teksten i alle de valgte elementene til et stort element (separert med linjeskift) "Skjul alt" kollapser treet så bare de øverste elementene, under rot-elementet synes. "Vis alt" ekspanderer alle underelementer til de valgte elementer (rekursivt). "Sorter treet" åpner dialogvinduet for å sortere treet basert på gitte kriterier. Når et overelement mister alle sine underelementer blir det automatisk til et normalt element. På den øverste verktøylinjen har vi: "Nytt element", "Åpne" og "Lagre" gjør alle det vanlige. "Skriv ut"-knappen åpner dialogvinduet for utskrift. "Klipp ut", "Lim inn" og "Kopier" har to funksjoner hver, de opererer både på valgt tekstvinduet til høyre og på tre-elementer, basert på om tekst eller tre-elementer er valgt. "Bryt"-knappen formatterer gjeldene avsnitt til linjelengden som er satt i innstillingene (også aktivert med ^L). "Rediger eksternt"-knappen starter et eksternt skriveprogram ut ifra kommandolinjen i instillingene. Standardkommandoen er enten 'nedit %s', 'xedit %s' eller 'xterm -e vi %s' - etter som hva som er innstallert på systemet - %s blir byttet ut med et midlertidig filnavn. Hvilket som helst annet skriveprogram kan brukes, så lenge det det aksepterer et filnavn som argument - personlig foretrekker jeg "emacsclient %s". "Dato"-knappen setter inn et datostempel i filen på gjeldende posisjon. Du kan forandre formatet for datostemplet i instillingene. "Finn"-knappen åpner dialogvinduet for "Finn og erstatt". "Sorter" åpner dialogvinduet for sortering. "Innstillinger" åpner dialogvinduet for instillinger. \NewEntry Finn of Erstatt ^F, Rediger->Finn eller Finn-knappen i øverste verktøylinje åpner dialogvinduet for finn og erstatt. Virkemåten bør være intuitiv - skriv inn det du ønsker å finne i finn-linjen, og trykk på finn-knappen. For å erstatte en forekomst, sett inn den nye teksten i erstatt- linjen, og trykk på erstatt-knappen. Programmet søker så forover, trykk erstatt igjen, og det vil erstatte og søke forover igjen. For å erstatte alle forekomster (fra gjeldende posisjon til slutten av filen), trykk på "erstatt alle"-knappen. Både Lukk- og Avbryt-knappene lukker søk- og erstatt-dialogvinduet - Lukk-knappen lagrer nye innstillinger for senere bruk (bortsett fra Finn- og Erstatt-tekstene). Nullstill-knappen, nullstiller Finn- og Erstatt-tekstene. Alle feil dukker opp både i området rett under knappen, og i status- linjen i hovedvinduet. Under Finn- og Erstatt-knappene kan man sette noen innstillinger. "Bruk kapitalisering" gjør at søket blir begrenset til uttrykk der store og små bokstaver stemmer overens. "Globalt" gjør det søkes gjennom hele filen. Alternativet er å begrense søket til gjeldene element. "Regulært uttrykk" gjør at man kan bruke POSIX utvidede regulære uttrykk som definert i "man 7 regex" (f.eks. som brukt i egrep). En rask referanse til regulære utrykk (merk at gjots2 bruker Pythons re-pakke - se Python-dokumentasjon for fullstendige detaljer, den er en del enklere en den regex som ble brukt i C- versjonen av gjots): . hvilket som helst tegn ^ begynnelsen på linjen (bare som det første tegnet i det RE) $ slutten på linjen (bare som det siste tegnet i det RE) * ingen eller flere repetisjoner av forige RE + en eller flere repetisjoner av forige RE ? ingen eller en repetisjon av forige RE {n} nøyaktig n repetisjoner av forige RE {n,} n eller flere repetisjoner av forige RE {n,m} n til m repetisjoner av forige RE [ ] treffer på hvilket som helst tegn i settet. Områder er f.eks. [a-z] [^ ] treffer på hvilket som helst tegn som ikke er i settet. ( ) Danner et 'husket' mønster | Mønster alterasjon, f.eks. x|y betyr "treffer på x eller y" \n n er 1 til 9 - tilbakereferanse til tidligere mønster \b begynnelse eller slutt av et ord \d et siffer == [0-9] \s tomrom == [ \t\n\r\f\v] \S ikke tomrom \w alfanumerisk \W ikke alfanumerisk For å bruke en av de 'magiske' tegnene ^.[$()|*+?{\, så sett en \ foran. For erstatningsmønstret er følgende sekvenser tilgjengelige: \& lim inn hele den funnede teksten \1..\9 lim inn det nth funnede undermønstret (definert med (...) ) \n sett inn linjeskift \NewEntry Utskrift "Skriv ut"-dialogvinduet lar deg velge "hva som skal skrives ut": Gjeldene element, Utvalg eller alt sammen og noen forbedringer: Mate ut en side etter hvert element og Autonumrering (ikke egentlig implementert ennå) Standarden for "Skriv ut"-kommandoen er å forsøke å skrive ut via et forhåndsvisningsprogram, og kommandoen ser slik ut: if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv else # no preview command found, just print it lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)&B Bortsett fra å være noe kompleks for en enlinjes kommando, lider den også av å ikke vite noe om postscript-visere (f.eks. kghostview, evince etc.) eller om nye inkompatible versjoner, f.eks, gv-3.6.1 kjenner ikke -seascape, den forstår bare --seascape. Før det finnes noen standard mekanisme for å forhåndsvise utskrifter i X (i både kde, gnome og andre!!) vil vi stole på at du, kjære bruker, stiller inn dette til å passe dine egene behov og ditt system. Noen mulige forslag for "Utskriftskommando" istedet for standarden: For helt enkelt å sende rå utdata direkte til skriveren: lpr $1 For å bruke en forhåndsviser, set "Utskriftskommando" slik: GV='gv -seascape'; T=/tmp/.tmp.$$;mpage -f -2 -I1 -P- $1 > $T;($GV $T; rm $T)& Den antar at du har gv-3.5.8 innstallert. For å bruke en annen forhåndsviser eller andre innstillinger, modifiser GV-parameterne slik: # for å bruke gv-3.6.1 som forhåndsviser: GV='gv --seascape' # for å bruke gvv som foråndsviser: GV='ggv' # for å bruke kghostview som forhåndsviser: GV='kghostview' # for å bruke evince som forhåndsviser(ikke utprøvd): GV='evince' Merk at gvv, kghostview og evince (?) ikke har kommandolinjeparametere for å invertere bildet, så du må gjøre det ved å peke og klikke. Dumt, ikke sant? Hva med meg? Jeg bruker gv. \NewEntry Innstillinger Følgende ting kan velges som innstillinger med gconf: Tekstformatering - standard er "fmt -w %d" Linjelengde for tekst - blir brukt når avsnitt formateres, (65) Eksternt skriveprogram - skriveprogram som skal brukes for "Rediger eksternt" f.eks.: nedit %s xedit %s xterm -e vi %s emacsclient %s Datoformat - formatteskt å mate til strftime(3) til bruk i datostempel. Prøv "man strftime" for detaljer. (%F) f.eks.: %F : (2002-11-03) %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) Skrifttype - skrifttypen som skal brukes til å vise tekst. Kontroller og treet bruker fortsatt standard GTK-2 skrifttyper. \NewEntry Tasteoperasjoner De fleste tastesnarveiene er som normalt. I tekstvinduet gjelder det normale GTK-2 tasteoppsettet (noe forskjellig fra C/GTK-1-versjonen av gjots): ^a Velg all teksten home gå til begynnelsen av linjen end gå til slutten av linjen venstre gå tilbake et tegn høyre gå fram et tegn ^venstre gå et ord til venstre ^høyre gå et ord til høyre ned gå til neste linje opp gå til forige linje ^home/end gå til begynnelsen/slutten av teksten delete slett tegnet etter markøren slettetast slett tegnet før markøren ^L omformater avsnittet, eller "linjebryt" Shift og <gå> markerer et utvalg. I tillegg virker følgende: ^x klipp ut ^c kopier ^v lim inn Tasteoppsett i treet: Generelt beveger de deg runt i treet med normale taster. Sammen med kontrolltasten manipulerer du treet. opp gå til forige element ned gå til neste element ^opp flytt valgte element(er) oppover i treet ^ned flytt valgte element(er) nedover i treet shift-opp/ned utvid utvalget venstre gå til overelementer høyre gå til underelementer ^venstre forfrem element(er) ^høyre degrader element(er) home gå til det første elementet på gjeldende nivå end gå til det siste elementet på gjeldende nivå ^home gå til det aller første elementet ^end gå til det siste (viste) elementet Globalt tasteoppsett: ^s Lagre ^q Avslutte ^f Åpner dialogvinduet for Finn og erstatt \NewEntry Importer og eksporter Du kan føre data inn og ut av gjots2 med importer- og eksporter-' funksjonene. Disse opererer på det valgte elementet, så du kan kontrollere nøyaktig hva som blir lagret. Filformatet er det normale gjots2-formatet. \NewEntry gjots2 filformat Det er det samme som for gjots, men med et hierarki. \NewEntry tittel1 det er dette som finnes i tittel1 \NewFolder \NewEntry tittel2 dette er skrift i tittel2 \NewEntry title3 og tittel3s tekst \EndFolder \nøkkelordene må være på begynnelsen av linjen for å bli gjenkjent. \NewEntry Kryptering gjots2 kan kryptere og dekryptere file med ccrypt(1), openssl(1) eller gpg(1). Filene blir lagret med kryptering i henhold til fil-etternavnet du gir: .cpt ccrypt .ssl openssl .gpg gpg gjots2 spør etter passord der det trengs. Pass på at du har ccrypt, openssl eller gpg installert hvis du ønsker å bruke denne funksjonen. Ikke mist passordet - Jeg kan ikke hjelpe deg med å finne tapte passord. \NewEntry Sikkerhet For kryptering i ccrypt, har jeg brukt tilsvardende som: {write klartekst} | KEYWORD=passord ccencrypt -E KEYWORD >filnavn.cpt Dette avslører passordet et kort øyeblikk i en miljø- parameter, men den blir slettet fra gjots2-prosessen med en gang den er brukt. ccrypts man-side sier at "på de fleste moderne systemer", så beskytter ps-kommandoen miljøparametere fra vanlige brukere. I Linux kan du skrive 'cat /proc/PID/environ' for å se miljøparameterne til prosesser som du selv eien - bare root kan spionere på noen andres milje, så det å bruke -E er ikke mindre sikkert enn ditt eget innloggingspassord og roots innloggingspassord. Den eneste alternative måten å gjøre dette på, som jeg kan ser, ville være: {write klartekst} >fil.gjot echo passord |ccencrypt -k - fil.gjot ... selv om dette gir bedre beskyttelse av passordet, så eksponerer det (for et kort øyeblikk) filen som klartekst - like ille, eller verre enn å eksponere nøkkelens som en miljøparameter! Dekryptering er mye lettere - Jeg bruker stdin til å gi passordet: echo passord |ccdecrypt -c -k - filnavn.cpt | {les fra pipe} En tilleggskanal (f.eks. stdin=0, stdout=1 stderr=3 stdpasswd=3= for ccrypt for å lese passord ville vært en bedre løsning (men ccrypt har ikke støtte for det). \NewEntry Verktøysprogrammer \NewFolder \NewEntry gjots2html gjots2html konverterer en gjots2-fil til HTML, sammen med en innholdsfortegnelse som ser besynderlig ut som et tema-tre. Se man-siden for flere detaljer. gjots2html.py er en python-versjon av det samme programmet som kan være mer stabilt. \NewEntry gjots2docbook konverterer en gjots2-fil til DOCBOOK XML-format. Les man-siden for en mer detaljert beskrivelse. \NewEntry docbook2gjots Konverterer DOCBOOK XML til gjots2 - les man-siden for fullstendig beksrivelse. \EndFolder \EndFolder \NewEntry Development status Hvis du har idéer om hvordan gjots2 kan bli forbedret, send en epost til gjots2-users@lists.sourceforge.net \NewFolder \NewEntry Planlagte funksjoner Det som blir lagt til vil være begrenset av design-målet om å være "raskt og lett", men kan inneholde: Lokalisering ============ Fra og med versjon 2.3.0 er gjots2 internasjonalisert og klar for oversettelser. Hvis du ønsker å se støtte for ditt språk, kontakt epost-listen på <gjots2-devel@lists.sourceforge.net> gjots2 ====== Legg til tidsstempel på hvert element og vis det i statuslinjen nå de er valgt. autosortert av/på for mapper Rediger->Tøm, Egenskaper, Innstillinger->Brukervalg autosave Støtte for innstillger per element: \Options åpent/lukket para detaljer ...? gjots2html ========== gjots2html går gjennom noen positive forandringer. Det er et nytt script markert som beta skrevet i Python, som støtter følgende: 1) Legg til <HR>-linjer etter hver seksjon. 2) Legger til en lenke til Innholdsfortegnelsen etter hver seksjon. 3) Spesifiserer en tittel på siden. 4) Legg inn resultatet fra gjots2html.py inn i en eksisterende HTML mal. 5) Ikke ta med innholdsfortegneslen. 6) Skriv HTML til en spesifisert fil. 7) Legg til en link til en spesifisert CSS-fil. 8) Bryt gjots2-teksten på en spesifisert linjelengde. Den har også støtte for et ubestemt antall nivåer i hierarkiet, selv om HTML bare har støtte for 9. Legg til parametere: -r N, --rule=N: <HR> for alle nivåer oppt til N \NewEntry Kjente programfeil Ingen kjente, selvfølgelig, utenom: Feilaktige feilmeldinger hvis det ikke er mulig å åpne en gjots2- fil ved oppstart. Dialogvinduet for sortering kan ikke sette seg selv til verdiene lagret i gconf. \NewEntry Platformer Testet på følgende platformer: Gentoo Linux i386 Ubuntu 4.10 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Vi ser alltid etter hjelp av folk som kan teste gjots-versjoner på sine favorittdistribusjoner. Gi en beskjed i <gjots2-devel@lists.sourceforge.net> og vil bli glade for å legge til din testede distribusjon. Noen av disse platformene kan trenge oppdaterte pakker. Referer til vår OSS (ofte spurte spørsmål) for en diskusjon om dette. \EndFolder \NewEntry Gjots OSS Ofte spurte sprørsmål om gjots2 Hvis du har spørsmål som ikke er svart på her, kontakt epostlisten for gjots2-brukere <gjots2-users@lists.sourceforge.net>. \NewFolder \NewEntry Sp: Ikonene til venstre ser krønsjet ut. Sv: Du bruker en dårlig versjon av libglade2. Oppgrader libglade til vesjon >= 2.4.1. Vi anbefaler at du oppdater denne pakken ved hjelp av din distribusjons pakkehåndterer. \NewEntry Sp: Jeg får feilmeldingen, ImportError: No module named distutils.core når jeg bygger gjots2 fra kildekoden. Sv: Distribusjonen din har effektivt *ødelagt* python-installasjonen ved å ikke inkludere distutils-modulene, som er en del av pythons kjernepakke. Installer python slik det skal være for å ordne opp. Vi kjenner til at dette skjer i: Ubuntu (5.10), NLD9, SUSE 9.2. Ubuntu 5.10 fiks: # apt-get install pythonX.X-dev \NewEntry Sp: Jeg får feilmeldingen, ImprtError: No module named gconf Sv: Installer gnome-python.2. Denne pakken vil inneholde Python- bindingene for gconf og finnes her: http://www.pygtk.org/ Du burde være i stand til å finne forhåndsbygde pakker for disse, slik som følgende: Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry Sp: Hvordan får du gjots2 til å kjøre på Novell Linux Desktop? Sv: Nå må installere gnome-python (og de pakkene den er avhengig av) \NewEntry Sp: Hva er forskjellen på en gamle C-versjonen (gjots-0.X) og den nye python-versjonen, gjots-2.X.X? Sv: Ved 2.0.0 utgivelsen, var det disse forskjellene (for utvikling siden da, se CHANGES logger): Støtte for Unicode i datafilene, så jeg kan lage notater på russisk, kanskje tyrkisk, arabisk, hvem vet hva som vil fungere. Rapporter er velkomne. Mulighet for andre språk enn engelsk i selve programmet. Er det noen frivillige for I18N og L10N? Dra og slipp i tre-vinduet, for enkel organisering. Støtte for gconf med GTK-2 temaer. Sortering av elementer og/eller tekst Slå sammen elementer Dele opp elementer Utskrift \EndFolder \NewEntry Forfattere & Lisens \NewFolder \NewEntry Forfattere Skrevet av: Bob Hepple <bhepple@freeshell.org> Gabriel Munoz <munozga@gmail.com> Logo av: DSP Popeck <wokoglopulator@yahoo.com>, 2002 Fransk oversettelse av: Rui Nibau <rui.nibau@omacronides.com>, 2005 Norsk oversettelse av: Robert Emil Berge <robert@rebi.no>, 2006 \NewEntry Lisens (GPL) Copyright (C) 2005 Robert Hepple Copyright (C) 2002 DSP Popeck Her kommer først en uoffisiell oversettelse av GPL. Lisensen som gjelder for dette programmet står på engelsk under. GNU GENERAL PUBLIC LICENCE * Forord * LOVER OG REGLER FOR KOPIERING, DISTRIBUSJON OG MODIFISERING * Hvordan du kan legge til disse reglene til dine nye programmer GNU GENERAL PUBLIC LICENCE (GNU GENERELL OFFENTLIG LISENS) Versjon 2, juni 1991, oversatt januar 2004; oppdatert juli 2005. Opphavsrett © 1989, 1991 Free Software Foundation, Inc. 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. Alle har lov til å kopiere og distribuere umodifiserte kopier av dette lisensdokumentet, men å endre det er forbudt. Forord De fleste programvarelisenser er laget for å ta vekk din frihet til å dele og endre programvaren. GNU General Public Licence vil som en konstrast garantere din frihet til å dele og endre fri programvare -- og gjøre det sikkert at programvaren er fri for alle dets brukere. Denne GNU General Public Licence gjelder for mesteparten av Free Software Foundations programvare og til alle andre programmer som er laget av folk som vil bruke den (Noen andre av Free Software Foundation sin programvare er dekket av GNU Library General Public Licence isteden.). Du kan legge den til dine programmer, også. Når en snakker om fri programvare, refererer en til frihet, ikke pris. Våre lisenser er laget for å forsikre at du har frihet til å distribuere kopier av fri programvare (og ta deg betalt for tjenesten om du ønsker), som du mottar kildekoden til eller kan få hvis du vil ha den, slik at du kan endre programvaren eller bruke deler av den i nye, frie programmer, og at du vet at du kan gjøe dette. For å beskytte dine rettigheter, må det være regler som forbyr noen å nekte deg disse rettighetene eller be deg om å gi dem fra deg. Disse reglene betyr en del ansvar for deg hvis du distribuerer kopier av programvaren, eller endrer den. For eksempel, hvis du distribuerer kopier av et slikt program, enten gratis eller for penger, må du gi mottakeren alle de rettighetene du har. Du må være sikker på at de også, mottar eller kan få kildekoden. Og du må vise dem disse reglene slik at de vet hvilke rettigheter de har. GNU GPL beskytter rettighetene dine i to steg: (1) Gir deg opphavsrett til programvaren, og (2) tilby deg denne lisensen som gir deg lovlig tilatelse til å kopiere, distribuere og/eller endre programvaren. Også, for hver forfatters beskyttelse og våres, vil en forsikre seg om at alle forstår at det ikke er noen garanti for denne frie programvaren. Dersom programvaren er endret av noen andre og gitt videre, vil de at mottakeren skal vite at det de har fått, ikke er originalen, slik at problemer introdusert av andre ikke vil reflektere den originale forfatterens rykter. Til slutt, ethvert fritt program er konstant truet av programvarepatenter. De ønsker å unngå faren som redistributører av frie programmer vil individuelt ta patenter, noe som gjør at programvaren blir eiendom. For å unngå dette,har de gjort det klart at enhver patent må være lisensert for alles fri bruk eller ikke lisensert i det hele tatt. De presise lovene og reglene for kopiering, distribusjon og modifisering er under. LOVER OG REGLER FOR KOPIERING, DISTRIBUSJON OG MODIFISERING 0. Lisensen gjelder for ethvert program eller annet verk som inneholderen notis plassert ved opphavsrettholderen som sier at det kan bli distribuert under lovene av denne General Public Licence. "Programmet", under, refererer til et slikt program eller verk, og et "verk basert på programmet" betyr enten Programmet eller noe som helst underliggende verk under copyright loven: det betyr, et verk som inneholder Programmet eller en del av det, enten umodifisert eller med modifikasjoner og/eller oversatt til et annet språk. (Heretter er oversettelse inkludert uten begrensninger innenfor uttrykket "modifikasjon"). Hver lisensier er addressert som "deg". Aktiviteter annet en kopiering, distribuering og modifisering er ikke dekket av denne Lisensen; de er utenfor dette. Det å kjøre et program er det ikke noen restriksjoner på, og utskrift fra programmet er dekket kun dersom innholdet baserer seg på et verk basert på Programmet (uavhengig av om det har blitt laget av det kjørende Programmet). Enten det er sant eller ikke avhenger av hva programmet gjør. 1. Du kan kopiere og distribuere umodifiserte kopier av Programmets kildekode så lenge du mottar det, i hvilket som helst medium, gitt at du lett synlig og korrekt ved hver kopi legger en riktig opphavsrettnotis og informasjon om garanti; ha i takt alle notisene som refererer til denne Lisensen og at det ikke finnes noen som helst form for garanti; og gi alle andre mottakere av Programmet en kopi av denne Lisensen ved Programmet. 2. Du kan modifisere din kopi eller kopier av Programmet eller hvilken som helst den av den, følgende forme et verk basert på Programmet, og kopiere og distribuere slike typer av modifikasjoner og verk under regler i Seksjon 1 over, gitt at du også oppfyller alle disse krav: a) Du må sørge for at de modifiserte filene har viktige notiser som sier at du endret filene til den tiden og den datoen du gjorde endringer. b) Du må sørge for at ethvert verk du distribuerer eller publiserer, som i sin helhet eller deler av er tatt fra Programmet eller enhver del derav, blir lisensiert helhetlig uten kostnader til alle tredjeparter under reglene i denne Lisensen. c) Dersom det modifiserte programmet normalt sett leser kommandoer interaktivt når det kjører, må du sørge for at det, når det starter å kjøre interaktivt på den mest ordinære måten, skriver ut eller viser en passende opphavsrettnotis og en notis som sier at det ikke er noen garanti (eller, som sier at du selv tilbyr en garanti) og at brukere kan redistribuere programmene under disse betingelsene, og fortelle brukeren hvordan det er mulig å vise en kopi av denne Lisensen. (Unntak: Dersom Programmet i seg selv er interaktivt, men normalt sett ikke skriver en slik notis, trenger ikke ditt verk basert på Programmet å skrive ut en slik notis.) Disse betingelsene gjelder for det hele modifiserte verket. Dersom identifiserbare seksjoner av det verket ikke er fra Programmet, og kan bli fornuftig ansett som uavhengig og et separat verk i seg selv, ikke legg til de seksjonene når du distribuerer dem som separate verk. Men når du distribuerer den samme seksjonen som del av et helt verk som er basert på Programmet, må hele distribusjonen være på betingelsene i denne Lisensen, hvis rettigheter for andre lisenser utvider til det hele, og følgende til hver og en del uavhengig av hvem som skrev det. Følgende er det ikke meningen i denne seksjonen å kreve rettigheter eller konkurrere dine rettigheter til verk laget bare av deg; isteden er meningen å utøve retten til å kontrollere distribusjonen av utspringere eller samlebare verk basert på Programmet. I tillegg, små uviktige biter av et annet verk som ikke er basert på Programmet med Programmet (eller et verk basert på Programmet) på et lagringsmedium bringer ikke det andre verket under denne lisensen. 3. Du kan kopiere og distribuere Programmet (eller et verk basert på det, under Seksjon 2) i objektkode eller kompilert form under reglene i Seksjon 1 og 2 over gitt at du gjør ett av følgende: a) Legger ved komplett korresponderende maskinleselig kildekode, som må være distribuert under reglene i Seksjon 1 og 2 på et medium spesielt brukt for programvareutgivelse; eller: b) Legge ved et skriftlig tilbud, gyldig for minst tre år, om å gi ethvert tredjeparti, for en sum mindre enn å fysisk utføre kildekodedistribusjon, en komplett maskinleselig kopi av den korresponderende kildekoden, for å bli distribuert under reglene i Seksjon 1 og 2 over på et medium spesielt brukt for programvareutgivelse; eller: c) Legge ved informasjon du mottok som tilbudet til å distribuere korresponderende kildekode. (Dette alternativet er kun tillatt for ikke-kommersiell distribusjon og kun dersom du mottok programmet i objektkode eller kompilert form med et slikt tilbud, i følge Underseksjon b over.) Kildekoden for et verk betyr den foretrukne formen av verket for å modifisere det. For et kjørbart arbeid, betyr komplett kildekode all kildekode for alle modulene det inneholder, pluss alle tilhørende grensesnittsdefinisjonsfiler, pluss skriptene som brukes til å kontrollere kompilering og installasjon av det kjørbare programmet. Men, som et spesielt unntak, kildekoden som blir distribuert trenger ikke å inkludere noe som vanligvis er distribuert (i enten kilde eller binær form) med viktige komponenter (kompilator, kjerne og så videre) av operativsystemet til det systemet som det kjørbare programmet kjører på, med mindre den komponenten i seg selv akkompagnierer det kjørbare programmet. Dersom distribusjonen av maskinkoden eller objektkoden er laget for å tilby tilgang til å kopiere fra en bestemt plass, da vil det å tilby tilsvarende tilgang til å kopiere kildekode fra den samme plassen telle som distribusjon av kildekoden, selv om tredjepartier ikke er påbudt å kopiere kildekoden ved objektkoden. 4. Du kan ikke kopiere, modifisere, underlisensere, eller distribuere Programmet på andre måter enn slik som er uttrykt i denne Lisensen. Ethvert forsøk på å kopiere, modifisere, underlisensere eller distribuere Programmet er ugyldig og du vil automatisk få fratatt dine rettigheter under denne Lisensen. Men, partier som ikke har mottatt kopier, eller rettigheter, fra deg under denne Lisensen vil ikke få deres rettigheter fratatt så lenge slike partier fortsatt følger reglene. 5. Du er ikke påkrevd å akseptere denne Lisensen, siden du ikke har signert den. Men, ingenting annet gir deg rett til å modifisere eller distribuere Programmet eller programmer som stammer fra det. Disse handlingene er forbudt ved lov dersom du ikke aksepterer denne Lisensen. Derfor, ved å modifisere eller distribuere Programmet (eller ethvert verk basert på Programmet), indikerer du at du aksepterer denne Lisensen til å gjøre det, og alle dets regler og retningslinjer for å kopiere eller modifisere Programmet eller verk basert på det. 6. Hver gang du redistribuerer Programmet (eller et arbeid basert på Programmet), vil mottakeren automatisk motta en lisens fra den originale forfatteren til å kopiere, distribuere eller modifiserere Programmet ettre disse reglene. Du kan ikke påtvinge videre restriksjoner for mottakerens rettigheter gitt her. Du er ikke ansvarlig for å påtvinge at tredjepartier aksepterer denne Lisensen. 6. Hver gang du redistribuerer Programmet (eller et arbeid basert på Programmet), vil mottakeren automatisk motta en lisens fra den originale forfatteren til å kopiere, distribuere eller modifiserere Programmet etter disse reglene. Du kan ikke påtvinge videre restriksjoner for mottakerens rettigheter gitt her. Du er ikke ansvarlig for å påtvinge at tredjepartier aksepterer denne Lisensen. 7. Dersom, som en konsekvens av en dom fra retten eller en patent som begrenser dine rettigheter eller for enhver annen grunn (ikke begrenset til patentsaker), gjør at du er påtvunget (enten av en dommer, en avtale eller annet) til å gå mot reglene til denne Lisensen, unnskylder de deg ikke fra reglene i denne Lisensen. Dersom du ikke kan distribuere for så å tilfredsstille sammenhengene, dine obligasjoner under denne Lisensen og enhver relevant obligasjon, vil du som en konsekvens ikke kunne distribuere Programmet i det hele tatt. For eksempel, dersom en patent lisens ikke tillater fri redistribusjon av Programmet av alle som mottar kopiere direkte eller indirekte gjennom deg, da er den eneste måten du kan tilfredsstille den og denne Lisensen å totalt frastå fra distribuering av Programmet. Dersom noen del av denne seksjonen blir holdt ugyldig eller anses som ikke-påtvingbar, er balansen av denne seksjonen er ment til å gjelde og seksjonen som en helhet er ment å gjelde i andre situasjoner. Det er ikke meningen i denne seksjonen å få deg til å oppgi patenter eller andre eiendomsretter eller få deg til å ugyldiggjøre dem; denne seksjonen har som intensjon å beskytte integriteten av det frie programvaredistribusjonssystem, som er implementert av offentlige lisensutøvere. Mange folk har kommet med generøse deltakelser i det store spekter av programvare distribuert gjennom systemet i avhengighet av konsistent gjennomføring av systemet, det er opp til forfatteren/donoren å bestemme om vedkommende er villig til å distribuere programvare gjennom et annet system og en som har en lisens kan ikke ta den avgjørelsen. Denne seksjonen er ment for å gjøre det klart hva som er trodd å være en konsekvens av resten av denne Lisensen. 8. Dersom distribusjonen og/eller bruk av Programmet har restriksjoner i bestemte land eller patenter eller av opphavsrett, kan den orignale opphavsrettinnehaveren som plasserer Programmet under denne lisensen legge til geografiske distribusjonsbegrensninger, slik at distribusjon er tillatt bare i eller mellom land som ikke er ekskludert. I slike tilfeller, blir denne Lisensen del av begreninsningen slik som skrevet i kroppen av denne Lisensen. 9. Free Software Foundation kan utgi reviderte og/eller nye versjoner av General Public Licence-dokumentet fra tid til annen. Slike nye versjoner vil bli værelike i ånd til den nåværende versjonen, men kan endre seg når det gjelder adresse. Enhver versjon er gitt et versjonnummer. Dersom Programmet spesifiserer et versjonnummer av denne Lisensen som legger til det og "enhver senere versjon" ("any later version"), har du valget mellom de følgende reglene enten den versjonen eller enhver senere versjon publisert av Free Software Foundation. Dersom Programmet ikke spesifeiserer et versjonnummer av denne Lisensen, kan du velge enhver versjon noen gang utgitt av Free Software Foundation. 10. Dersom du vil legge til deler av Programmet inn i alle gratis programmer hvis distribusjonsregler er forskjellige, skriv til forfatteren og spør om tillatelse. For programvare som er copyrightet av Free Software Foundation, skriv til Free Software Foundation, de gjør noen ganger unntak for dette. Deres avgjørelse vil bli veiledet av de to målene om å beholde den frie statusen av alt som stammer fra deres frie programvare og for å bemerke deling og gjenbruk av programvare generelt sett. INGEN GARANTI 11. FORDI DETTE PROGRAMMET ER LISENSERT GRATIS, ER DET INGEN GARANTI FOR PROGRAMET, MED MINDRE FORLENGET AV LOVEN. UNNTATT NÅR DET ER UTTRYKT ANNERLEDES I SKRIVET OPPHAVSRETTINNEHAVEREN OG/ELLER ANDRE PARTIER TILBYR PROGRAMMET "SOM DET ER" UTEN GARANTI AV NOE SLAG, ENTEN UTTRYKT ELLER PÅTVUNGET, INKLUDERT, MEN IKKE BEGRENSET TIL, GARANTIER AV UTGIVING FOR DET BESTEMTE FORMÅLET. HELE RISIKOEN OG KVALITETEN OG UTFØRINGEN AV PROGRAMMET ER MED DEG. SKULLE PROGRAMMET VISE SEG Å VÆRE DEFEKT, MÅ DU SELV BETALE ALLE KOSTNADENE FOR NØDVENDIG SERVICE, REPARERING ELLER KORRIGERING. 12. I INGEN SITUASJON PÅKREVD AV LOV ELLER AVTALT TIL I SKRIVET VIL ENHVER OPPHAVSRETTINNEHAVER, ELLER ET ANNET PARTI SOM KAN MODIFISERE OG/ELLER REDISTRIBUERE PROGRAMMET SOM TILLATT OVER, VÆRE ANSVARLIG FOR DINE SKADER, INKLUDERT ETHVERT GENERELT, SPESIELT, VIKTIG, ELLER KONSEKVENTE SKADER SOM KOMMER AV BRUK ELLER AT DET IKKE ER MULIG Å BRUKE PROGRAMMET (INKLUDERT MEN IKKE BEGRENSET TIL TAP AV DATA ELLER DATA SOM BLIR LAGET UNØYAKTIG ELLER TAP FORÅRSAKET AV DEG ELLER TREDJEPARTIER ELLER AT PROGRAMMET FEILER I Å OPERERE MED ANDRE PROGRAMMER). SELV OM SLIKE INNEHAVERE ELLER ANDRE PARTIER HAR BLITT FORTALT OM SANNSYNLIGHETEN FOR SLIKE SKADER. Slutt på regler Her kommer den offisielle GPL på engelsk, som gjelder for dette programmet. GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder �����������������������������������������������������������������������������gjots2-2.4.1/doc/gjots2.fr.gjots��������������������������������������������������������������������0000664�0003011�0000765�00000126165�12234163306�016213� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������MANUEL GJOTS2 g j o t s 2 Par Bob Hepple Brisbane Queensland Australie Version _VERSION bhepple@freeshell.org http://bhepple.freeshell.org/gjots Traduction : Rui Nibau (RNB) rui.nibau@omacronides.com \NewEntry Introduction gjots2 est un éditeur de notes pour le bureau Gnome. Pourquoi aurions-nous besoin d'un autre programme de prise de notes ? Et bien, lorsque mon cher et vieux organiseur Psion-5 a rendu l'âme, j'ai dû transférer toutes mes données sous Linux et j'ai commencé à rechercher des logiciels répondant à mes besoins. J'en ai trouvé plusieurs agenda et j'ai même écrit une calculatricer (gdcalc), mais rien de vraiment adapté à la prise de notes. Les programmes que j'ai essayé étaient : * trop simples (un seul niveau de hiérarchisation), * trop complexes (trop de composants comme Cobra, SQL ou équivalents) * basé sur une interface web * incapables d'afficher l'arborescence et de travailler en même temps sur les notes * trop fouilli - créant une multitude de fenêtres type post-it sur tout l'écran Et puis il y avait ceux que je n'arraivais pas à faire fonctionner. Au final, il y avait de nombreux et d'excellents programmes, mais aucun qui répondait totalement à mes besoins. Kjots semblait être à ce moment là le meilleur de la catégorie. J'avais de toute façon besoin d'apprendre à créer des arborescences GTK et à utiliser Glade - et Gjots est donc né, et poursuit son chemin depuis. Il a d'abord été écrit en C (maintenant en Python), glade et gtk, était assez rapide et je l'utilise tous les jours. A en juger par les e-mails que j'ai reçu, il est aussi utile à beaucoup d'autres, ce qui est très bien. Il y a même eu une version japonaise du premier gjots (0.3?) mais le code n'a jamais été intégré à la branche principale de développement, ce qui est fort dommage. Quoi qu'il en soit, le monde ne s'est pas arrêté et GTK-2 est apparu et de nombreuses personnes voulaient des LOTE (Languages Other Than English, ou Langues autre que l'anglais), y compris moi-même. Je voulais aussi apprendre la programmation python et l'actuelle version de gjots - gjots2 ou "le fils de gjots" a vu le jour. Une version écrite en language interprété fût plus compliquée à mettre en route que le gjots original, mais cela permet d'avoir de plus grandes fonctionnalités : Like Goldilocks said about the chairs, porridge and beds, gjots2 is "just right". (Là, si quelqu'un comprend cette citation, qu'il me fasse signe. NdT) \NewEntry Installation Utilisez de préférences les paquetages rpm ou emerge (Gentoo) plutôt que setup.py. Ils permettent une meilleur gestion des dépendances et de la désinstallation. \NewFolder \NewEntry Prerequis Vous pourriez avoir besoin d'installer (ou de ré-installer) libglade, pygtk, gnome-python, bonobo-python, pyorbit ou gtk pour votre version de python ou plus simplement d'ajuster le chemin de Python comme ci-dessous : export PYTHONPATH=/usr/local/lib/python2.3/site-packages/ A l'heure où j'écris ses lignes, ma configuration est la suivante (sur une Gentoo) : x11-libs/gtk+-2.6.10-r1 gnome-base/libglade-2.5.1 dev-python/pygtk-2.6.2 dev-python/gnome-python-2.10.0 (pulls in pyorbit) dev-python/pyorbit-2.0.1 Les distributions à base de rpm (RedHat, Mandrake/Mandriva, SuSE) ont certainement des paquetages similaires (m'avertir si ce n'est pas le cas). Apparemement, Fedora nécessite en plus gnome-python2-gconf. Assurez-vous que les paquetages python sont installés dans le répertoire "site-packages" de la version de python que vous utilisez (faites un "python -V" pour trouver cette version) : /usr/lib/pythonX.X/site-packages Si ce n'est pas le cas, vous devrez les ré-installer - cela m'est par exemple arrivé lors du passage de la version 2.2 à la version 2.3 de python - le répertoire /usr/lib/python2.X/site-packages n'est pas automatiquement mis à jour. J'ai donc du faire : emerge unmerge libglade pygtk gnome-python bonobo-python pyorbit emerge libglade pygtk gnome-python bonobo-python pyorbit Gjots2 a été écrit avec glade-2 donc si vous souhaitez modifier ou corriger le code, il faudra l'installer aussi. Sinon, c'est juste du python ! \NewEntry Sur une Gentoo Tant que Gjots2 n'a pas de paquetage officiel ebuild (regardez dans /usr/portage/app-office) vous devrez faire ce qui suit : Les paquetages nécessaires sous Gentoo (par ordre de dépendance - il y aura sans doute moins de problèmes d'installation en partant de la droite de cette liste et en laissant Gentoo s'occuper des dépendances des modules) : >=gtk+-2 >=libglade-2 >=pygtk-2 gnome-python-2 >=pyorbit-2 Assurez-vous que vous avez une ligne identique à ce qui suit dans /etc/make.conf : PORTDIR_OVERLAY=/usr/local/portage Vous aurez besoin de la ligne suivante dans /etc/portage/packages.keywords : app-office/gjots2 ~x86 Puis : VERSION=_VERSION CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry Avec les paquetages RPM Faîtes simplement ce qui suit : VERSION=_VERSION wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm rpm -i gjots2-${VERSION}-1.noarch.rpm Vous devrez bien-sur installer toutes les dépendances comme pygtk, libglade, etc. Sur ma Fedora core 4, voici les dépendances listées : gtk2-2.6.7-4 libglade2-2.5.1-2 pygtk2-2.6.0-2 gnome-python2-2.10.0-1 gnome-python2-gconf-2.10.0-1 pyorbit-2.0.1-4 \NewEntry A partir des sources VERSION=_VERSION wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz Si vous installez à partir de l'archive tarball, placez-vous dans le répertoire des sources après l'extraction de l'archive puis : python setup.py install [ --prefix=/usr/... ] Désinstallez avec le script uninstall.sh fournit. Sur certains systèmes, vous pourriez avoir des problèmes de permissions. Tous les répertoires installés doivent avoir les permissions 0755 et tous les fichiers installés les permissions 0644, à l'exception de 'docbook2gjots', 'gjots2', 'gjots2docbook' et 'gjots2html', qui doivent avoir les permissions 0755. \EndFolder \NewEntry Contribuer Nous avons deux listes de discussion, pour le développement et pour l'utilisation de gjots : Gjots Developers <gjots2-devel@lists.sourceforge.net>: http://lists.sourceforge.net/lists/listinfo/gjots2-devel Gjots Users <gjots2-users@lists.sourceforge.net>: http://lists.sourceforge.net/mailman/listinfo/gjots2-users Les corrections de bugs sont les bienvenus ! Si quelqu'un veut traduire gjots dans une autre langue, contactez-moi et je vous fournirais une version traduisible et les catalogues de message. J'ajouterai toute nouvelle fonctionnalité à laquelle les utilisateurs veulent contribuer si je l'aime aussi. Si vous souhaitez participer au développement principal du code, contactez-moi d'abord pour être sur que d'autres personnes ne travaillent pas sur le même sujet. S'il vous plait, utilisez diff -ru pour créer un patch, et envoyez-le sous forme d'archive compressée gzip en pièce attachée. Si je décide de ne pas incoprorer votre fonctionnalité, vous êtes libre de créer un fork, mais s'il vous plait choisissez un nom différent pour votre programme. Il s'agit de code sous GPL après tout. Notez que pour respecter la licence GPL, je devrais inclure vos nom et e-mail dans la section Auteurs & Licence. Si vous souhaitez contribuer, contactez la liste de diffusion du développement <gjots2-devel@lists.sourceforge.net>, pour être sur qu'il n'y a pas de doublons dans le travail. Pour des questions plus générales, lisez "Fonctionnalités prévues". \NewEntry MANUEL UTILISATEUR \NewFolder \NewEntry Démarrage Lancez juste "gjots2" - cela sauvegradera tout dans le fichier $HOME/.gjotsfile Ou ajoutez un argument - gjots2 s'ouvre avec un fichier uniquement : gjots2 fichier.gjots Voici les options disponibles : --help Affiche l'aide -g, --geometry LARGEURxHAUTEUR[+X+Y] Taille initiale de la fenêtre. X et Y sont pour le moment ignorés. -r, --readonly Ouvre un fichier en lecture seule -d, --debug Affiche des informations pour le déboguage \NewEntry Ouvrir et enregistrer Ouvrir et enregistrer ont la même fonction que partout ailleurs, pour des fichiers au format gjots (voir plus bas). A moins que l'option Lecture seule soit active, gjots2 créé un fichier verrouillé à chaque ouverture pour assurer qu'un seul utilisateur puisse y écrire, tout en permettant de multiples lecteurs. Si un fichier est ouvert alors qu'il est déjà verrouillé, un petit message d'alerte donnera à choisir entre "lecture seule" et "ré-essayer". L'option "ré-essayer" permet de quitter le programme qui verrouille le fichier. Le fichier verrouillé est un fichier nommé .#nom_fichier, ou "nom_fichier" est le nom du fichier en train d'être édité. Il se situe dans le même répertoire que le fichier gjots2 original et il contient juste l'identifiant du processus (pid) qui le verrouille. Si le processus qui verrouille s'arrête sans nettoyer ce fichier, alors gjots2 pourrait le détecter à la prochaine ouverture. Le verrouillage est valable même sur un volume NFS. Un fichier ouvert en lecture seule n'est pas verrouillé. Il existe une entrée dans le menu "fichiers" qui permet d'activer l'option "Lecture seule". Elle prend aussi soin de verrouiller ou de déverrouiller le fichier. Quand Gjots2 enregistre un fichier, il enregistre aussi la version précédente dans un fichier de sauvegarde, à la manière d'emacs. Si vous enregistrez un fichier "fichier.gjots", alors la version sauvegardée s'appelera "fichier.gjots~". Si l'extension du fichier est ".cpt", gjots essayera de chiffrer et déchiffrer le fichier en utilisant ccrypt(1). Si ccrypt n'est pas installé (il ne l'est pas par défaut dans de nombreuses distributions Linux), l'enregistrement échouera. De la même manière, les fichiers .ssl seront ouvert avec (DES3) openssl et les fichiers .gpg avec (DES3) gpg. Installer ccrypt, openssl or gpg pour une meilleure sécurité ! \NewEntry Contrôles La fenêtre possède une barre de menus et une barre d'outils suffisamment explicites. La barre d'outil sur la gauche contrôle la hiérarchie de l'arborescence. Amusez-vous un peu avec les boutons et vous verrez vite comment les utiliser. "Nouvelle Page" créé une nouvelle note soeur de la note courante. "Nouvel Enfant" créé une note fille de la note courante. "Haut" place la sélection avant la note précédente. "Bas" fait exactement le contraire. "Remonter" fait remonter les notes sélectionnées d'un niveau dans la hiérarchie. "descendre" fait descendre d'une niveau les notes sélectionnées. "Scinder la note" prend le texte sélectionné (dans la fenêtre d'édition, à droite) et le place dans une nouvelle note "Fusionnez les notes" prend le texte et les notes sélectionnés pour les fusionner en une seule note. "Masquer Tout" masque l'arborescence de l'arbre pour ne garder les notes filles de la note racine. "Montrer Tout" affiche toute l'arborescence de la note courante. "Trier l'arbre" affiche la fenêtre de tri avec différents critères pour modifier l'organisation. Lorsqu'une note ou dossier perd toutes ces notes filles, elle redevient une note simple. Dans la barre d'outils principale : "Nouvelle Page", "Ouvrir" et "Enregistrer" font ce qui est habituel. Le bouton "Impression" affiche la fenêtre d'impression. "Couper", "Coller" et "Copier" ont une double fonctionnalité puisqu'ils agissent à la fois sur le texte et sur l'arborescence, en fonction de ce qui est sélectionné. Le bouton "Retour" formate le paragraphe courant en coupant la ligne à la longueur spécifier dans les préférences. (activer par le raccourci-clavier CTRL+L) Le bouton "Ed.Ext." ouvre l'éditeur de texte définit dans les préférences. La commande par défaut est 'nedit %s', 'xedit %s' ou 'xterm -e vi %s' - en fonction de votre distribution - le %s étant remplacé par le nom du fichier temporaire. Tout autre éditeur peut être utilisé s'il accepte un nom de fichier comme argument - personnellement, je préfère "emacsclient %s". Le bouton "Date" insère le date/l'heure à la position du curseur. vous pouvez spécifier le format de cette insertion dans les préférences. Le bouton "Chercher" ouvre la fenêtre chercher/remplacer. Le bouton "Trier" affiche la fenêtre de tri. Le bouton "Prefs" affiche la fenêtre des préférences. \NewEntry Cherchez et Remplacer Ctrl+F, Edition->Rechercher ou le bouton "Chercher" dans la barre d'outils principale affichent la fenêtre de recherche. Son utilisation est assez intuitive : tapez le mot à rechercher dans le champ "Chercher" est cliquez sur le bouton "Chercher". Pour remplacer une occurence, tapez le nouveau texte dans le champ "Remplacer" et cliquez sur le bouton "Remplacer". Le programme cherche cette première occurence. Cliquez sur le bouton de nouveau et elle sera remplacée et l'occurence suivante sera trouvée. Pour remplacer toutes les occurences, utilisez le bouton "Remplacer Tout". Les boutons "Fermer" et "Annuler" ferment tout deux la fenêtre de recherche - le bouton "Fermer" sauvegarde tous les nouveaux paramètres pour une utilisation ultérieure (à l'exception des chaînes à chercher et à remplacer). Le bouton "Effacer" efface juste les champs "Chercher" et "Remplacer". Toutes les erreurs apparaissent dans la zone directement au dessous du bouton et dans la barre d'état de gjots2. Les options sous les boutons sont : - "sensible à la casse", pour limiter la recherche en fonction de la casse - "Global" permet d'effectuer les opérations sur tout le fichier; sinon, elles se font sur la note courante - "Expression régulière" permet d'utiliser les expressions régulières (ER) étendues POSIX. Ces expressions sont définies dans "man 7 regex" (utilisées de la même manière dans egrep). Voici une rapide introduction aux expressions régulières (notez que gjots2 utilise les paquetages python - consultez la documentation python pour plus de détails, c'est beaucoup plus simple que regex utilisé dans la version en C de gjots) : . n'importe quel caractère ^ Début de ligne (si placer au début de l'ER) $ Fin de ligne (si placer en fin d'ER) * répétitions 0 ou plusieurs fois du caractère précédent + répétition une ou plusieurs fois du caractère précédent ? présence ou absence du caratère précédent {n} le caractère précédent doit être répété n fois {n,} le caractère précédent doit être répété n fois ou plus {n,m} le caractère précédent est répété entre n et m fois [ ] trouver n'importe quel caractère situé entre les crochets. ex. [a-z] [^ ] Les caractères entre crochets ne doivent pas être dans l'expression recherchée ( ) Définition d'un groupe | le "ou" : x|y signifie "trouver x ou y" \n n de 1 à 9 - référence aux groupes définis avant \b Début ou fin de mot \d tout caractère numérique == [0-9] \s n'importe quel espace (fin de ligne, tabulation, etc.) == [ \t\n\r\f\v] \S Tout caractère qui n'est pas un espace \w caractère alphanumerique \W caractère non-alphanumerique Pour trouver un des caractères "magiques" ^.[$()|*+?{\ il faut le faire précéder d'un \ Pour remplacer l'expression, les fonctions suivantes sont disponibles : \& coller toute la chaîne trouvée \1..\9 coller le groupe désigné (de 1 à 9), défini par (...) \n insérer une nouvelle ligne \NewEntry Impression La fenêtre d'impression vous permet de choisir ce que vous voulez imprimer : la page courante, la sélection ou tout le fichier Quelques petites personnalisations : alimenter l'imprimante avec une nouvelle page après chaque note et numérotation des pages (pas encore fonctionnelle) Les réglages actuels de la commande "Impression" essayent d'imprimer par l'intermédiaire du programme de pré-visualisation de votre système tel que : if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv else # no preview command found, just print it lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)& En plus d'être un peu compliqué, ce script souffre de ne pouvoir reconnaître d'autres visionneurs postscripts (kghostview, evince, etc) ou des incompatibiltés de versions, comme gv-3.6.1 qui ne comprend pas -seascape, il nécessite --seascape. Jusqu'à ce qu'il y ait un système standardisé pour pré-visualiser une impression dans X (pour Kde, Gnome et les autres!!), nous nous en remettons à vous, aimables utilisateurs, pour personnaliser le script afin qu'il convienne à votre configuration. Quelques suggestions pouvant remplacer le script par défaut : Envoyer simplement les données vers l'imprimante : lpr $1 Pour utiliser un programme de pré-visualisation, ajustez la commande "Impression" comme suit : GV='gv -seascape'; T=/tmp/.tmp.$$;mpage -f -2 -I1 -P- $1 > $T;($GV $T; rm $T)& Cela suppose que vous ayez gv-3.5.8. Pour utiliser un autre programme ou des options différentes, modifiez les paramètres de GV comme suit : # pour utiliser gv-3.6.1: GV='gv --seascape' # pour utiliser ggv: GV='ggv' # pour utiliser kghostview: GV='kghostview' # pour utiliser evince (non testé): GV='evince' Remarquez que ggv, kghostview et evince (?) n'ont pas d'option en ligne de commande pour inverser l'image, vous devrez donc le faire avec la souris. C'est fou non ? Moi ? J'utilise gv. \NewEntry Préférences Les données suivantes peuvent être personnalisées et utilisées par gconf : Formatteur de texte - par défaut, "fmt -w %d" Longueur de ligne - Utiliser dans le formatage d'un paragraphe, (65) Editeur externer - éditeur à utiliser avec le bouton "Ed.Ext.". Exemples : nedit %s xedit %s xterm -e vi %s emacsclient %s Format Date - chaîne à adresser à strftime(3) pour insérer la date/l'heure. Faites un "man strftime" pour comprendre la syntaxe. Exemples : %F : (2002-11-03) %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) Police - Police à utiliser pour afficher le texte. Les boutons et l'arbre utilisent les polices par défaut de GTK-2. \NewEntry Raccourcis clavier La plupart des raccourcis clavier de gjots sont ceux utilisés ailleurs. Dans la fenêtre d'édition du texte, les raccourcis GTK-2 sont utilisés (quelque peu différents de ceux de la version C/GTK-1 de gjots): Ctrl+a Selectionner tout le texte home Retour en début de ligne fin Aller en fin de ligne gauche retour en arrière d'un caractère droite Avancer d'un caractère Ctrl+gauche Reculer d'un mot Ctrl+droite Avancer d'un mot bas Aller à la ligne suivante haut Remonter d'un ligne Ctrl+home/fin Aller au début/à la fin du texte suppr supprimer un caractère retour Supprimer le caractère précédent Ctrl+L Formater le paragraphe La touche Maj et les flèches permettent de selectionner le texte. Ces raccourcis clavier fonctionnent aussi: Ctrl+x couper Ctrl+c copier Ctrl+v coller Les raccourcis dans l'arbre: En général, les touches simples permettent de se déplacer dans l'arbre. La touche Contrôle manipule l'arbre. haut Aller à la note précédente bas Aller à la note suivante Ctrl+haut Déplace la note courante vers le haut Ctrl+bas Déplace la note courante vers le bas maj-haut/bas Etend la sélection gauche ascend the tree right descend the tree Ctrl+gauche Remonte la sélection dans l'arborescence Ctrl+bas Descend la sélection dans l'arborescence home Aller à la première note du niveau courant end Aller à la dernière note du niveau courant Ctrl+home Aller à la toute première note Ctrl+fin Aller à la toute dernière note (visible) Raccourcis clavier globaux: Ctrl+s Enregistrer Ctrl+q Quitter Ctrl+f Fenêtre de recherche \NewEntry Importer and exporter Vous pouvez importer ou exporter des données dans gjots en utilisant les fonctions dédiées à cet effet. L'opération s'effectue dans la note courante donc vous pouvez contrôler ce qui sera enregistré. Le format des fichier est le format habituel de gjots2. \NewEntry Format des fichier gjots2 Le même que celui de gjots, qui est le même que celui de kjots, avec la hiérachie en plus : \NewEntry titre1 Texte qui appartient à la note de titre1 \NewFolder \NewEntry titre2 Texte de la note titre2, fille de titre1 \NewEntry titre3 Texte de la note titre3, toujours fille de titre1 \EndFolder Les mots-clés \mots-clés doivent être en début de ligne pour qu'ils soient reconnus. \NewEntry Chiffrement gjots2 peut chiffrer et déchiffrer des fichiers en utilisant les paquetages ccrypt(1), openssl(1) et gpg(1). Les fichiers sont enregistrés avec un chiffrement qui dépend du suffixe utilisé : .cpt ccrypt .ssl openssl .gpg gpg gjots2 demandera un mot de passe quand cela est nécessaire. Assurez-vous d'avoir installé ccrypt, openssl ou gpg si vous voulez utiliser ces fonctionnalités. Ne perdez pas votre mot de passe - je ne pourrais pas vous aider à le retrouver. \NewEntry Sécurité Pour le chiffrement avec ccrypt, j'ai utilisé l'équivalent de : {write cleartext} | KEYWORD=password ccencrypt -E KEYWORD >filename.cpt Ceci expose brièvement le mot de passe en tant que paramètre d'environnement bien qu'il soit 'ré-écrit' et supprimé du processus de gjots2 juste après son utilisation. D'après le manuel de ccrypt, "sur la plupart des systèmes modernes", la commande ps protège les paramètres d'environnement des utilisateurs. Sous Linux, vous pouvez faire un 'cat/proc/PID/environ' pour voir les paramètres d'environnement qui vous appartiennent - seul le root peut espionner les autres environnements donc utiliser -E n'est pas moins sécurisé que votre mot de passe de session ou le mot de passe du root. L'unique autre manière de faire cela (AFAICS) serait : {write cleartext} >file.gjot echo password |ccencrypt -k - file.gjot ... alors que cela offre une meilleure protection du mot de passe, cela expose aussi (brièvement) le cleartext en tant que fichier - tout aussi mauvais que d'exposer la clé en tant que paramètre d'environnement ! Le déchiffrement est plus simple - j'utilise stdin pour transmettre le mot de passe : echo password |ccdecrypt -c -k - filename.cpt | {read from pipe} Une voie supplémentaire (ex. stdin=0, stdout=1 stderr=3 stdpasswd=3) pour que ccrypt lise les mots de passe pourrait être une meilleure solution (mais ccrypt ne le permet pas). \NewEntry Utilitaires \NewFolder \NewEntry gjots2html gjots2html convertit les fichiers gjots2 en fichier HTML avec un sommaire qui ressemble à l'arborescence du fichier. Lisez la page man dédiée pour en savoir plus. gjots2html.py est une version python du même utilitaire sans doute plus digne de confiance. \NewEntry gjots2docbook Convertit le fichier gjots2 au format XML DOCBOOK. Lisez la page man dédiée pour plus de détails. \NewEntry docbook2gjots Convertit un fichier XML DOCBOOK en fichier gjots2. Lisez la page man dédiée pour plus de détails. \EndFolder \EndFolder \NewEntry Etat du projet Si vous avez des idées pour améliorer gjots2, envoyez un e-mail à gjots2-users@lists.sourceforge.net \NewFolder \NewEntry Fonctionnalités prévues Ce qu'il reste à ajouter se limitera au niveau du design à ce qui est "rapide et léger", mais pourra inclure : Traduction ============ Depuis la version _VERSION, gjots2 est prêt pour d'éventuelles traductions. Si vous souhaitez avoir une version de gjots dans votre langue, contactez la liste de diffusion consacrée au développement <gjots2-devel@lists.sourceforge.net> gjots2 ====== Ajouter la date/l'heure à toutes les notes. Tri automatique on/off Edition->Effacer, Propriétés, Paramètres->préferences Enregistrement automatique Supportpour des options su les notes: \les options incluant: fermer/ouvrir détails des paramètres ...? gjots2html ========== gjots2html pourrait être modifié. Il y a un script python encore en phase beta qui permet : 1) d'ajouter un <HR> après chaque section. 2) d'ajouter un lien vers le sommaire après chaque section. 3) de définir un titre pour la page. 4) d'insérer le résultat de la conversion par gjots2html.py dans un modèle de page HTML. 5) de supprimer le sommaire des sections. 6) d'ajouter le contenu dans un fichier HTML spécifié. 7) d'ajouter un lien vers une feuille de styles en cascade. 8) de couper le texte de gjots2 à une largeur définie. Il permet aussi un nombre de niveaux hiérarchiques arbitraires, même si HTML n'en possède que 6. Ajouter les options: -r N, --rule=N: <HR> pour tous les niveaux supérieurs à N \NewEntry Bugs connus Aucun de connu, bien sur, à part : Message d'erreur innaproprié s'il est impossible d'ouvrir un fichier gjots2 au premier lancement The sort dialog can't set itself to the values stored in gconf. \NewEntry Plateformes Tester sur les plateformes suivantes : Gentoo Linux i386 Ubuntu 5.10 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Nous sommes toujours à la recherche de personnes capables de tester gjots2 sur leur distribution favorite. Laissez-nous un message à <gjots2-devel@lists.sourceforge.net> et nous serons heureux d'ajouter votre distribution dans la liste des plateformes testées. Certaines de ces distributions nécessitent peut-être une mise à jour de certains paquetages. Voyez la FAQ pour plus de détails. \EndFolder \NewEntry FAQ Gjots Foire Aux Questions ou questions fréquemment posées sur Gjots2 Si vous avez une question qui n'est pas listée ci-dessous, laissez un message sur la liste de discussion des utilisateurs de gjots2 <gjots2-users@lists.sourceforge.net>. \NewFolder \NewEntry Q: Les icones de la barre d'outils latérales sont écrasées. R: vous utilisez une version buguer de libglade2. Mettez à jour votre système avec une version >= 2.4.1. Nous vous conseillons de le faire par l'intermédiaire du gestionnaire de paquetages de votre distribution. \NewEntry Q: Je reçois le message d'erreur suivant: ImportError: No module named distutils.core when building gjots2 from source. R: Votre distribution n'a pas inclut les modules distutils lors de l'installation des paquetages python. Installez python correctement pour résoudre le problème. Cela arrive pour Ubuntu (5.10), NLD9, SUSE 9.2. Correction pour Ubuntu 5.10: # apt-get install pythonX.X-dev \NewEntry Q: Je reçois le message d'erreur suivant: ImportError: No module named gconf R: Installez gnome-python-2. Ce paquetage contient les liens Python pour gconf. Vous pouvez le trouver ici : http://www.pygtk.org/ Vous devriez trouver des paquetages déjà construit comme les suivants. Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry Q: Comment utilisez gjots2 sur une distribution Novell Linux Desktop? R: Vous devrez installer gnome-python (et toutes ses dépendances). \NewEntry Q: Quelles sont les différences entre l'ancienne version en C (gjots-0.X) et la nouvelle version en python (gjots-2.X.X) R: Pour la version 2.0.0, voici les différences (pour les versions ultérieures, lisez le CHANGES logs): Support de l'Unicode - je peux donc écrire des notes en Russe - peut-être en turque, en arabe, qui sait comment ca marchera. Toutes remarques à ce sujet sont les bienvenues ! Support pour LOTE (langues autre que l'anglais). Des volontaires pour I18N et L10N? Glisser-déposer dans l'arborescence pour faciliter l'organisation. Support gconf avec les thèmes GTK-2. Tri du texte ou des notes Fusion des notes Scinder les notes Impression \EndFolder \NewEntry Auteurs & Licence \NewFolder \NewEntry Auteurs Ecrit par : Bob Hepple <bhepple@freeshell.org> Gabriel Munoz <munozga@gmail.com> Logo par : DSP Popeck <wokoglopulator@yahoo.com>, 2002 Traduction française par : Rui Nibau <rui.nibau@omacronides.com>, 2005 \NewEntry Licence (GPL) - français Vous pouvez trouver une traduction française de la GNU GPL ici : http://fsffrance.org/gpl/gpl-fr.fr.html Attention : seule la version originale, en anglais, reproduite ci-dessous, à valeur juridique. La traduction française n'est là que pour mieux vous aidez à comprendre le sens de cette licence. \NewEntry Licence (GPL) Copyright (C) 2005 Robert Hepple Copyright (C) 2002 DSP Popeck GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/doc/gjots2.en_US.gjots�����������������������������������������������������������������0000664�0003011�0000765�00000122750�12234163306�016611� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GJOTS2 MANUAL (en_US) g j o t s 2 By Bob Hepple Brisbane Queensland Australia Version _VERSION_ bhepple@freeshell.org http://bhepple.freeshell.org/gjots \NewEntry Introduction gjots2 is a jotter application for your desktop. Why do we need yet another jotter program? Well, when my faithful old Psion-5 organiser died I needed to move all my bits and pieces onto Linux and I started to look around for software to fill that need. I found lots of software for diary and I already wrote a beaut calculator (gdcalc) but somehow nothing was quite right for the jotter. Other packages that I looked at were either: * much too simplistic (eg. a single level hierarchy), * too complex (too many components like Corba, SQL or suchlike) * web based * unable to display & work on the tree at the same time as the text entries * too messy - throwing windows up like 3M yellow stickers all over the screen Then there were the ones I couldn't get to work or which just plain bombed. Nonetheless, there are many fine packages around but none really suited my needs. kjots seemed at the time to be the best of the lot. Anyhow, I needed to learn how to do GTK trees and practise glade - and so gjots was born and lives still. It was originally written in C (now Python), glade and gtk, was pretty fast and is still something I use every day. Judging by the emails I've been sent it is quite useful to others too, which is nice. There was even a Japanese version created from an early cut of gjots (0.3?) but the code was never contributed back to the mainstream which is a shame. However the world doesn't stop still and GTK-2 came along and there was an increasing number of people who wanted LOTE (Languages Other Than English) including myself. I also wanted to learn about python and hence the current python version of gjots - gjots2 or "son of gjots" came into being. Being written in an interpreted language it isn't quite so fast to start up as the original gjots* but it offers heaps more features: Like Goldilocks said about the chairs, porridge and beds, gjots2 is "just right". * this was true when I wrote this in about 2004. In 2012, my i7 brings it up practically instantly. \NewEntry Installing If possible, use RPM or emerge (Gentoo) - they allow easy uninstallation and more package management than setup.py \NewFolder \NewEntry RPM-based systems fedora includes gjots2 Just download and do this: VERSION=_VERSION_ wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm yum install gjots2-${VERSION}-1.noarch.rpm \NewEntry Prerequisites Let rpm take the strain ... otherwise ... Install pygtksourceview to enable Undo/Redo You may need to install (or re-install) libglade, pygtk, or gtk for your current version of python or possibly you can just set your PYTHONPATH eg. export PYTHONPATH=/usr/local/lib/python2.6/site-packages/ As at this writing (gjots-2.3.11), I have the following installed (on Fedora-13): gtk2 gtksourceview libglade2 pygtk2 pygtk2-libglade pygtksourceview glade3-libgladeui Make sure the python packages are installed in the site-packages directory for the version of python that you are using (do a "python -V" to find out the version): /usr/lib/pythonX.X/site-packages If they're not there then you may need to re-install them - for example, it happened to me when python got upgraded from 2.2 to 2.3 - /usr/lib/python2.X/site-packages directory is not automatically updated.) I then had to (on gentoo) do this: emerge unmerge libglade pygtk bonobo-python pyorbit emerge libglade pygtk bonobo-python pyorbit gjots2 was written with glade-3 so if you want to change or fix the code you will need to install it too. Otherwise, it's just python! \NewEntry Gentoo Note: 2.6.8 and earlier were tested on gentoo. 2.6.9 and on were not. Until and unless gjots2 has an official ebuild (look in /usr/portage/app-office) you'll have to do this: Packages needed on gentoo are (in dependency order - it might be less trouble to install them from the right hand side of this list and let the Gentoo dependency system take care of modules to the left - but I haven't tried it): >=gtk+-2 >=libglade-2 >=pygtk-2 >=pyorbit-2 Make sure you have a line like the following in your /etc/make.conf: PORTDIR_OVERLAY=/usr/local/portage You will need a line like this in /etc/portage/packages.keywords: app-office/gjots2 ~x86 Then: VERSION=_VERSION_ CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry From the tarball source VERSION=_VERSION_ wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz If installing from the tarball, after unpacking the tar file and cd'ing to it do this: python setup.py install [ --prefix=/usr/... ] Uninstall with the uninstall.sh script provided here. On some systems, you may have permission problems with system-wide installations from source. All new directories installed should have permissions 0755, and all installed files should have permissions 0644, with the exception of 'docbook2gjots', 'gjots2', 'gjots2docbook', 'gjots2emacs' and 'gjots2html', which should have permissions 0755. \EndFolder \NewEntry Contributing We have two mailing lists setup for development and support of gjots: <NOTE: these are SPAM-infested - I rarely look at them! better send to bhepple@freeshell.org> Gjots Developers <gjots2-devel@lists.sourceforge.net>: http://lists.sourceforge.net/lists/listinfo/gjots2-devel Gjots Users <gjots2-users@lists.sourceforge.net>: http://lists.sourceforge.net/mailman/listinfo/gjots2-users Bug fixes are very welcome! If anyone wants to translate this into another language please get in touch and I will provide an internationalised version and message catalogs. I will incorporate any new features that people want to contribute provided I like them too. If you want to add something to the mainstream development please drop me a line first and I will make sure no-one else is working on that area. Please use diff -ru to create the patch, and send it as a gzipped file attachment. If I choose not to incorporate your favourite feature, feel free to fork the development but please choose a different name for the program. This is GPL code after all. Note that to protect the GPL license I will need to include your name and email address in the Authors and License section. If you want to contribute please get in touch with me at bhepple@freeshell.org, to make sure work is not duplicated. For general ideas, please see "Planned Features". \NewEntry USER MANUAL \NewFolder \NewEntry Startup Just start it as "gjots2" - it will save anything in $HOME/.gjotsfile Or use an argument - gjots2 accepts a single file, eg: gjots2 todo.gjots These options are available: -h, --help: this help -d, --debug: debug to stdout -2, --glade2: use glade-2 gui if available -t, --trace: trace lines as they execute -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password scrub password as soon as it's used -r, --readonly: no editing (or locking) -V, --version: print the version and exit For supported languages other than English, you can use eg: LC_ALL=de_DE.utf8 gjots2 or (eg fedora-16+): LANGUAGE=de_DE.utf8 gjots2 To see what languages are currently supported: ls /usr/{,local/}share/locale/*/LC_MESSAGES/gjots2.mo \NewEntry Open and save Open and save do the usual and operate on gjots-format text files (see below). Unless readonly mode is in effect, gjots2 will create a lockfile to enforce single-writer but allow multiple readers. If a file is opened while it is already locked then a popup window will offer "Try Again" or "Readonly". The "Try Again" option allows you to exit the program which is locking the file. The lock file is a simple file called .#filename, where filename is the name of the gjots2 file being edited. It is in the same directory as the original gjots2 file and it contains just the process identifier (pid) of the locking process. If the locking process dies without cleaning up the lockfile then gjots2 can detect it on the next open. Thus, locking is viable even on an NFS mounted volume. Files opened "readonly" have no locking applied. There is a menu item under "Files" which allows the readonly status of the program to be toggled. It also takes care of locking and unlocking the file as above. When gjots2 saves a file it moves any prior version of the file to a backup in the manner of emacs ie. if saving to "file.gjots" which already exists, the old version would get saved to "file.gjots~" If your filename ends in ".cpt", gjots will attempt to decrypt and encrypt the file using ccrypt(1). If ccrypt is not installed (it is not a standard part of all Linux distributions) the IO will fail. Similiarly, .ssl will be opened using (DES3) openssl and .gpg will be opened with (DES3) gpg. Install ccrypt, openssl or gpg for good security! \NewEntry Controls The screen has a menubar and toolbar at the top which should be fairly self-explanatory. The toolbar on the left controls the tree hierarchy. Just play around with it and you'll soon get the hang of it. "New Page" create a new sibling of the current page. "New Child" creates a new child of the current item. "Up" Moves the current selection to before the previous sibling. "Down" does the opposite of Up. "Back" makes the currently selected item(s) into children of their grandparent (or, if you prefer, siblings of their parent). "Forward" makes the current items(s) into children of the sibling immediately before them. "Split item" takes the currently selected text (in the right hand panel) and moves it into a new item. "Merge Items" merges the text of all currently selected items into one big item (separated by a newline character) "Hide All" collapses the view of the tree to just the children of the root item. "Show All" expands all the children of the currently selected items (recursively). "Sort Tree" brings up the sort dialog box where you can sort elements based on a given criteria. When a folder loses all of its child items it gets automatically demoted to a plain item. On the top toolbar, we have: "Save" is the usual thing. The 'Print' button pops up the Print dialog. See the "Printing" item one level up from here. The "Undo" and "Redo" functions only operate on the text buffer, not on the tree. They are only available if the gtksourceview library is available. "Cut", "Paste" and "Copy" have dual functionality, thus, they operate on both text and tree items based on whether the text or tree panels are selected. The "Wrap" button formats the current paragraph according to the line length set in the preferences dialog (also activated by ^L) The "Ext.Ed" button invokes an external editor according to the command string in the Preferences dialog. The default string is either 'nedit %s', 'xedit %s' or 'xterm -e vi %s' - depending on what is installed on the system - the %s is replaced by the temporary filename. Any other editor can be used as long as it can accept a filename as an argument - personally, I prefer "emacsclient %s". The "Date" button puts a date stamp into the file at the current position. You can adjust the format of the date stamp in the Preferences dialog - it uses the date format from strftime(3) - please check the manual for full details. Some popular choices: %F : (2002-11-03) ... this is the default %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) %d/%m/%Y : 28/07/2007 The "Find" button pops up the find & replace dialog. "Sort" pops up the sort dialog. "Prefs" button will pop up the preferences dialog. \NewEntry Find & Replace ^F, Edit->Find or the Find button in the top toolbar popup the find & replace dialog. The top toolbar also holds the most recent find string and quick forward and back search buttons. There is a drop-down of recent searches to the right of this. ^G is a shortcut for 'next' and Shift-^G is for 'previous'. The operation should be intuitive - type in what you want to find into the Find & Replace dialog Find entry and press the Find button. To replace one occurance put the new text in the Replace entry box and press the Replace button. The program will search forward - press it again and it will and replace the text and search forward again. To replace all occurances (from the current position to the end of file) press the Replace All button. The Close and Cancel button both hide the find dialog - the close button saves any new settings for future use (except for the Find and Replace strings). The Clear button just clears the Find & Replace entries. Any errors appear both in the area immediately below the button and also in the main program status bar. Options appear below the Find & Replace buttons and include "Match Case" to limit the search to the same upper and lower case. "Global" is the default and allows the search to take place across the whole file. The alternative is to limit the search to the current item. "Regular Expression" permits the use of POSIX Extended Regular Expressions as defined in "man 7 regex" (ie as used in egrep). A quick reference to regular expressions (note that gjots2 uses Python's re package - see the Python docs for full details, it is rather simpler than the regex used in the C version of gjots): . any character ^ start of line (only as the first item in the RE) $ end of line (only as the last item in the RE) * zero or more repetitions of the previous RE + one or more repetitions of the previous RE ? zero or one repetitions of the previous RE {n} exactly n repetitions of the previous RE {n,} n or more repetitions of the previous RE {n,m} n to m repetitions of the previous RE [ ] matches any character in the set. Ranges are eg. [a-z] [^ ] matches any character not in the set ( ) forms a 'remembered' pattern | pattern alternation eg. x|y means "matches x or y" \n n is 1 to 9 - a backreference to a previous pattern \b start or end of a word \d a digit == [0-9] \s whitespace == [ \t\n\r\f\v] \S non-whitespace \w alphanumeric \W non-alphanumeric To match one of the 'magic' characters ^.[$()|*+?{\ escape it with \ For the replacement pattern the following sequences are available: \& paste the entire found string \1..\9 paste the nth found sub-pattern (defined with (...) ) \n insert a newline \NewEntry Printing The Print dialog lets you select "what to print": the current page, the current selection or the whole thing and a few enhancements: page feed after every gjots item and auto numbering (not actually implemented yet) The print command that ships with 2.3.7 and later is "gjots2lpr" which is a simple script to try to find useful printing tools and to use them. The default operation is to pass the text through "a2ps" and to view the result with "gv". If these programs are not installed, others are sought - see "gjots2lpr -h" for more details. Before 2.6.7 the default print comman was rather long, but it expanded to the following which is supposed to do something similar: if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv; else lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)& Some possible suggestions for the "Print command" instead of the default: To simply send the raw output directly to the printer: lpr $1 \NewEntry Preferences The following items can be selected as preferences by gconf: Text formatter - default is "fmt -w %d" Text line length - used in paragraph formating, (65) External Editor - editor to use with the Ext.Ed. button eg.: nedit %s xedit %s xterm -e vi %s emacsclient %s Date format - format string to feed to strftime(3) for use in date stamp. Do a "man strftime" for details. e.g.: %F : (2002-11-03) ... this is the default %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) %d/%m/%Y : 28/07/2007 Font - the font to be used for the text display. The controls and tree still use the default GTK-2 fonts. \NewEntry Keyboard operation Most of the key shortcuts are the usual. In the text display, the normal GTK-2 key mappings apply (slightly different to the C/GTK-1 version of gjots): ^a Select all text home goto start of line end goto end of line left move back one place right move forward one place ^left move one word left ^right move one word right down move to next line up move to previous line ^home/end goto start/end of text delete delete one char backspace delete one char backwards ^L paragraph re-format or "wrap" Shift and <move> mark the region. Plus the following work: ^x cut ^c copy ^v paste Key mappings in the tree: In general, plain keys just move around the tree. Control keys manipulate the tree. up goto previous item down goto next item ^up move the current item(s) up the tree ^down move the current item(s) down the tree shift-up/down extend the selection left ascend the tree right descend the tree ^left promote items ^right demote items home goto to the first item at the present level end goto to the last item at the present level ^home goto the very first item ^end goto the very last (expanded) item Global key mappings: ^s does save ^q does quit ^f Popup the find dialog ^g find next shift-^g find previous \NewEntry Import and export You can bring data in and out of gjots2 using the import and export functions. These operate on the currently selected item so you can control exactly what gets saved. The format of the file is the normal gjots2 format. \NewEntry gjots2 file format The same as gjots which is plain text but with a hierarchy introduced by some keywords: \NewEntry title1 this is the stuff that goes into title1 \NewFolder \NewEntry title2 this is title2's stuff \NewEntry title3 title 3's stuff \EndFolder The \keywords need to be at the start of the line to be recognised. \NewEntry Encryption gjots2 can encrypt and decrypt files using the ccrypt(1), openssl(1), gpg2(1) or gpg(1) packages. If the gpg-agent is detected (ie if the GPG_AGENT_INFO variable is set) then it is used for passwords. Files are saved with encryption according to the file suffix you provide: .cpt ccrypt .ssl openssl .gpg gpg gjots2 prompts for passwords where needed. Make sure you have ccrypt, openssl, gpg2 or gpg installed if you want to use this feature. Don't lose your password - I can't help you recover lost passwords!! \NewEntry Security gjots2 has not been audited for security, so don't assume it is secure. That said, it's probably secure enough for most private use. The static, encrypted files on disc are as good as gpg/openssl/ccrypt, ie pretty good, (the default algorithm and key lengths are used in each encryption program). For encryption in ccrypt, I've used the equivalent of: {write cleartext} | KEYWORD=password ccencrypt -E KEYWORD >filename.cpt This exposes the password briefly as an environment parameter although it is 'scrubbed' and removed from the gjots2 process environment immediately after use. According to the ccrypt man page, "on most modern systems" the ps command protects environment parameters from ordinary users. Under Linux, you can 'cat /proc/PID/environ' to see the environment parameters of any process that you own - only root can spy on another's environment so using -E is no less secure than your login password and root's login password. The only other way to do this (AFAICS) would be: {write cleartext} >file.gjot echo password |ccencrypt -k - file.gjot ... while this provides better protection for the password, this (briefly) exposes the cleartext as a file - as bad as or worse than exposing the key as an environment parameter! Decrypting is much easier - I use stdin to pass in the password: echo password |ccdecrypt -c -k - filename.cpt | {read from pipe} A supplementary channel (eg. stdin=0, stdout=1 stderr=3 stdpasswd=3) for ccrypt to read passwords would be a better solution (but ccrypt does not provide it). \NewEntry URL handling If you double-click on a URL then your browser is activated and the URL is selected. Only http[s]://... URLs are recognised. The browser that gets started or activated is the first from: An already-running browser from the list below is activated. Failing that, the BROWSER environment parameter is obeyed Failing that, the gnome prefered browser is run. Failing that, then the first one from the list that can be found is run. xdg-open gnome-open firefox4 chrome firefox konqueror epiphany opera dillo \NewEntry Utilities \NewFolder \NewEntry gjots2html gjots2html converts a gjots2 file into HTML together with a table of contents which looks remarkably like the subject tree. See the man page for more details. gjots2html.py is a python version of the same utility which may be more reliable. \NewEntry gjots2docbook converts a gjots2 file into DOCBOOK XML format. See the man page for more details. \NewEntry docbook2gjots Converts DOCBOOK XML into gjots2 - see the man page for full details See the man page for more details. \NewEntry gjots2emacs gjots2emacs converts a gjotsfile to a format more or less suitable for emacs' outline mode. Usage: gjots2emacs [filename] Converts a gjots file to emacs outline mode (on stdout). The emacs outline-regexp is defaulted to ===>+ -b base: base string for outline-regexp (default '===') -F char: marker for headers in outline-regexp (default '>') \EndFolder \EndFolder \NewEntry Development status If you have ideas on how to improve gjots2, please email to bhepple@freeshell.org \NewFolder \NewEntry Planned features What gets added will be limited to the design goal of "fast and lightweight", but might include: Localisation ============ As of version 2.3.0, gjots2 is internationalized and ready for translations. If you would like to see your language supported, please contact the mailing list on bhepple@freeshell.org Check the webpage for localisations already complete. gjots2 ====== Add timestamp to every item & display in appbar when selected autosort on/off for folders Edit->Clear, Properties, Settings->preferences autosave Support for item options: \Options including: open/closed para details ...? gjots2html ========== gjots2html is undergoing some possible changes. There is a new script marked as beta written in Python, and supports the following features: 1) Add <HR> lines after each section. 2) Adds a link to the Table of Contents after each section. 3) Specify a title to the page. 4) Embed the output of gjots2html.py into a pre-existing HTML template file. 5) Suppress the table of contents section. 6) Output the HTML to a specified file. 7) Add a link to a specified Cascading Style Sheet. 8) Wrap the gjots2 text at a specified width. It also supports an arbitrary number of levels in the hierarchy, even though HTML only supports 9. Add options: -r N, --rule=N: <HR> for all levels up to N \NewEntry Known bugs None known, of course, other than: Inappropriate error messages if can't open a gjots2 file on initial startup. The sort dialog can't set itself to the values stored in gconf. \NewEntry Platforms Tested on the following platforms: Fedora-13 Older version were tested on: Gentoo Linux i386 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Ubuntu Feisty Some of these platforms may require updated packages. Refer to our FAQ for a discussion of these issues. \EndFolder \NewEntry Gjots FAQ Frequently Asked Questions regarding gjots2. If you ever have any questions that aren't answered here, please contact the gjots2 users list <gjots2-users@lists.sourceforge.net>. \NewFolder \NewEntry Q: The icons in the left toolbar look squashed. A: You are using a buggy version of libglade2. Upgrade libglade to a version >= 2.4.1. We recommed you update this package through your distribution package manager. \NewEntry Q: I receive the error ImportError: No module named distutils.core when building gjots2 from source. A: Your distribution has effectively *broken* the python installation by not including the distutils modules, which are part of the python core package. Install python correctly to fix this issue. This is known to happen in: Ubuntu (5.10), NLD9, SUSE 9.2. Ubuntu 5.10 fix: # apt-get install pythonX.X-dev \NewEntry Q: I receive the error ImportError: No module named gconf A: Install gnome-python-2. This package will contain the Python bindings for gconf and is located here: http://www.pygtk.org/ You should be able to find pre-built packages for these such as the following. Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry Q: How do you get gjots2 to run under Novell Linux Desktop? A: You will have to install gnome-python (and its dependencies). \NewEntry Q: What's the difference between the old C version (gjots-0.X) and the new python version gjots-2.X.X A: At the 2.0.0 release, these were the differences (for development since then see the CHANGES logs): Unicode support in the data files - so I can make notes in Russian - maybe Turkish, Arabic, who knows what will work. Reports solicited and most welcome! The potential for LOTE support in the program itself - any volunteers for I18N and L10N? Drag and Drop in the tree view to simplify organisation. gconf support with GTK-2 themes. Sorting items and/or text Merging items Spliting items Printing \NewEntry Q: Why do the Undo and Redo functions not work? A: Have you got the gtksourceview libraries installed? \EndFolder \NewEntry Authors & Licence \NewFolder \NewEntry Authors Written by: Bob Hepple <bhepple@freeshell.org> Assistance from: Gabriel Munoz <munozga@gmail.com> Jiahua Huang <jhuangjiahua@gmail.com> Logo by: DSP Popeck <wokoglopulator@yahoo.com>, 2002 French translation by: Rui Nibau <rui.nibau@omacronides.com> Norwegian translation by: Robert Emil Berge <filoktetes@linuxophic.org> Russian tranlsation by: Sergey Bezdenezhnyh <sib-mail@mtu-net.ru> Italian tranlation by: Raimondo Giammanco <rongten@member.fsf.org> Czech translation by: Martin Sin <martin.sin@zshk.cz> Spanish translation by: Cecilio Salmeron <s.cecilio@gmail.com> Slovenian translation by: Aleksa Šušulić <susulic@gmail.com> German translation by: Uwe Steinmann <uwe@steinmann.cx> \NewEntry Licence (GPL) Copyright (C) 2007 Robert Hepple Copyright (C) 2002 DSP Popeck GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder ������������������������gjots2-2.4.1/doc/gjots2.gjots�����������������������������������������������������������������������0000664�0003011�0000765�00000122720�12234163306�015576� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������GJOTS2 MANUAL g j o t s 2 By Bob Hepple Brisbane Queensland Australia Version 2.4.1 bhepple@freeshell.org http://bhepple.freeshell.org/gjots \NewEntry Introduction gjots2 is a jotter application for your desktop. Why do we need yet another jotter program? Well, when my faithful old Psion-5 organiser died I needed to move all my bits and pieces onto Linux and I started to look around for software to fill that need. I found lots of software for diary and I already wrote a beaut calculator (gdcalc) but somehow nothing was quite right for the jotter. Other packages that I looked at were either: * much too simplistic (eg. a single level hierarchy), * too complex (too many components like Corba, SQL or suchlike) * web based * unable to display & work on the tree at the same time as the text entries * too messy - throwing windows up like 3M yellow stickers all over the screen Then there were the ones I couldn't get to work or which just plain bombed. Nonetheless, there are many fine packages around but none really suited my needs. kjots seemed at the time to be the best of the lot. Anyhow, I needed to learn how to do GTK trees and practise glade - and so gjots was born and lives still. It was originally written in C (now Python), glade and gtk, was pretty fast and is still something I use every day. Judging by the emails I've been sent it is quite useful to others too, which is nice. There was even a Japanese version created from an early cut of gjots (0.3?) but the code was never contributed back to the mainstream which is a shame. However the world doesn't stop still and GTK-2 came along and there was an increasing number of people who wanted LOTE (Languages Other Than English) including myself. I also wanted to learn about python and hence the current python version of gjots - gjots2 or "son of gjots" came into being. Being written in an interpreted language it isn't quite so fast to start up as the original gjots* but it offers heaps more features: Like Goldilocks said about the chairs, porridge and beds, gjots2 is "just right". * this was true when I wrote this in about 2004. In 2012, my i7 brings it up practically instantly. \NewEntry Installing If possible, use RPM or emerge (Gentoo) - they allow easy uninstallation and more package management than setup.py \NewFolder \NewEntry RPM-based systems fedora includes gjots2 Just download and do this: VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}-1.noarch.rpm yum install gjots2-${VERSION}-1.noarch.rpm \NewEntry Prerequisites Let rpm take the strain ... otherwise ... Install pygtksourceview to enable Undo/Redo You may need to install (or re-install) libglade, pygtk, or gtk for your current version of python or possibly you can just set your PYTHONPATH eg. export PYTHONPATH=/usr/local/lib/python2.6/site-packages/ As at this writing (gjots-2.3.11), I have the following installed (on Fedora-13): gtk2 gtksourceview libglade2 pygtk2 pygtk2-libglade pygtksourceview glade3-libgladeui Make sure the python packages are installed in the site-packages directory for the version of python that you are using (do a "python -V" to find out the version): /usr/lib/pythonX.X/site-packages If they're not there then you may need to re-install them - for example, it happened to me when python got upgraded from 2.2 to 2.3 - /usr/lib/python2.X/site-packages directory is not automatically updated.) I then had to (on gentoo) do this: emerge unmerge libglade pygtk bonobo-python pyorbit emerge libglade pygtk bonobo-python pyorbit gjots2 was written with glade-3 so if you want to change or fix the code you will need to install it too. Otherwise, it's just python! \NewEntry Gentoo Note: 2.6.8 and earlier were tested on gentoo. 2.6.9 and on were not. Until and unless gjots2 has an official ebuild (look in /usr/portage/app-office) you'll have to do this: Packages needed on gentoo are (in dependency order - it might be less trouble to install them from the right hand side of this list and let the Gentoo dependency system take care of modules to the left - but I haven't tried it): >=gtk+-2 >=libglade-2 >=pygtk-2 >=pyorbit-2 Make sure you have a line like the following in your /etc/make.conf: PORTDIR_OVERLAY=/usr/local/portage You will need a line like this in /etc/portage/packages.keywords: app-office/gjots2 ~x86 Then: VERSION=2.4.1 CAT=/usr/local/portage/app-office/gjots2 cd /usr/portage/distfiles wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz mkdir -p ${CAT} cd ${CAT} wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.ebuild ebuild ${CAT}/gjots2-${VERSION}.ebuild digest emerge gjots2 \NewEntry From the tarball source VERSION=2.4.1 wget http://bhepple.freeshell.org/gjots/gjots2-${VERSION}.tgz If installing from the tarball, after unpacking the tar file and cd'ing to it do this: python setup.py install [ --prefix=/usr/... ] Uninstall with the uninstall.sh script provided here. On some systems, you may have permission problems with system-wide installations from source. All new directories installed should have permissions 0755, and all installed files should have permissions 0644, with the exception of 'docbook2gjots', 'gjots2', 'gjots2docbook', 'gjots2emacs' and 'gjots2html', which should have permissions 0755. \EndFolder \NewEntry Contributing We have two mailing lists setup for development and support of gjots: <NOTE: these are SPAM-infested - I rarely look at them! better send to bhepple@freeshell.org> Gjots Developers <gjots2-devel@lists.sourceforge.net>: http://lists.sourceforge.net/lists/listinfo/gjots2-devel Gjots Users <gjots2-users@lists.sourceforge.net>: http://lists.sourceforge.net/mailman/listinfo/gjots2-users Bug fixes are very welcome! If anyone wants to translate this into another language please get in touch and I will provide an internationalised version and message catalogs. I will incorporate any new features that people want to contribute provided I like them too. If you want to add something to the mainstream development please drop me a line first and I will make sure no-one else is working on that area. Please use diff -ru to create the patch, and send it as a gzipped file attachment. If I choose not to incorporate your favourite feature, feel free to fork the development but please choose a different name for the program. This is GPL code after all. Note that to protect the GPL license I will need to include your name and email address in the Authors and License section. If you want to contribute please get in touch with me at bhepple@freeshell.org, to make sure work is not duplicated. For general ideas, please see "Planned Features". \NewEntry USER MANUAL \NewFolder \NewEntry Startup Just start it as "gjots2" - it will save anything in $HOME/.gjotsfile Or use an argument - gjots2 accepts a single file, eg: gjots2 todo.gjots These options are available: -h, --help: this help -d, --debug: debug to stdout -2, --glade2: use glade-2 gui if available -t, --trace: trace lines as they execute -g 123x456, --geometry=123x456: initial geometry (X x Y) -p, --purge-password scrub password as soon as it's used -r, --readonly: no editing (or locking) -V, --version: print the version and exit For supported languages other than English, you can use eg: LC_ALL=de_DE.utf8 gjots2 or (eg fedora-16+): LANGUAGE=de_DE.utf8 gjots2 To see what languages are currently supported: ls /usr/{,local/}share/locale/*/LC_MESSAGES/gjots2.mo \NewEntry Open and save Open and save do the usual and operate on gjots-format text files (see below). Unless readonly mode is in effect, gjots2 will create a lockfile to enforce single-writer but allow multiple readers. If a file is opened while it is already locked then a popup window will offer "Try Again" or "Readonly". The "Try Again" option allows you to exit the program which is locking the file. The lock file is a simple file called .#filename, where filename is the name of the gjots2 file being edited. It is in the same directory as the original gjots2 file and it contains just the process identifier (pid) of the locking process. If the locking process dies without cleaning up the lockfile then gjots2 can detect it on the next open. Thus, locking is viable even on an NFS mounted volume. Files opened "readonly" have no locking applied. There is a menu item under "Files" which allows the readonly status of the program to be toggled. It also takes care of locking and unlocking the file as above. When gjots2 saves a file it moves any prior version of the file to a backup in the manner of emacs ie. if saving to "file.gjots" which already exists, the old version would get saved to "file.gjots~" If your filename ends in ".cpt", gjots will attempt to decrypt and encrypt the file using ccrypt(1). If ccrypt is not installed (it is not a standard part of all Linux distributions) the IO will fail. Similiarly, .ssl will be opened using (DES3) openssl and .gpg will be opened with (DES3) gpg. Install ccrypt, openssl or gpg for good security! \NewEntry Controls The screen has a menubar and toolbar at the top which should be fairly self-explanatory. The toolbar on the left controls the tree hierarchy. Just play around with it and you'll soon get the hang of it. "New Page" create a new sibling of the current page. "New Child" creates a new child of the current item. "Up" Moves the current selection to before the previous sibling. "Down" does the opposite of Up. "Back" makes the currently selected item(s) into children of their grandparent (or, if you prefer, siblings of their parent). "Forward" makes the current items(s) into children of the sibling immediately before them. "Split item" takes the currently selected text (in the right hand panel) and moves it into a new item. "Merge Items" merges the text of all currently selected items into one big item (separated by a newline character) "Hide All" collapses the view of the tree to just the children of the root item. "Show All" expands all the children of the currently selected items (recursively). "Sort Tree" brings up the sort dialog box where you can sort elements based on a given criteria. When a folder loses all of its child items it gets automatically demoted to a plain item. On the top toolbar, we have: "Save" is the usual thing. The 'Print' button pops up the Print dialog. See the "Printing" item one level up from here. The "Undo" and "Redo" functions only operate on the text buffer, not on the tree. They are only available if the gtksourceview library is available. "Cut", "Paste" and "Copy" have dual functionality, thus, they operate on both text and tree items based on whether the text or tree panels are selected. The "Wrap" button formats the current paragraph according to the line length set in the preferences dialog (also activated by ^L) The "Ext.Ed" button invokes an external editor according to the command string in the Preferences dialog. The default string is either 'nedit %s', 'xedit %s' or 'xterm -e vi %s' - depending on what is installed on the system - the %s is replaced by the temporary filename. Any other editor can be used as long as it can accept a filename as an argument - personally, I prefer "emacsclient %s". The "Date" button puts a date stamp into the file at the current position. You can adjust the format of the date stamp in the Preferences dialog - it uses the date format from strftime(3) - please check the manual for full details. Some popular choices: %F : (2002-11-03) ... this is the default %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) %d/%m/%Y : 28/07/2007 The "Find" button pops up the find & replace dialog. "Sort" pops up the sort dialog. "Prefs" button will pop up the preferences dialog. \NewEntry Find & Replace ^F, Edit->Find or the Find button in the top toolbar popup the find & replace dialog. The top toolbar also holds the most recent find string and quick forward and back search buttons. There is a drop-down of recent searches to the right of this. ^G is a shortcut for 'next' and Shift-^G is for 'previous'. The operation should be intuitive - type in what you want to find into the Find & Replace dialog Find entry and press the Find button. To replace one occurance put the new text in the Replace entry box and press the Replace button. The program will search forward - press it again and it will and replace the text and search forward again. To replace all occurances (from the current position to the end of file) press the Replace All button. The Close and Cancel button both hide the find dialog - the close button saves any new settings for future use (except for the Find and Replace strings). The Clear button just clears the Find & Replace entries. Any errors appear both in the area immediately below the button and also in the main program status bar. Options appear below the Find & Replace buttons and include "Match Case" to limit the search to the same upper and lower case. "Global" is the default and allows the search to take place across the whole file. The alternative is to limit the search to the current item. "Regular Expression" permits the use of POSIX Extended Regular Expressions as defined in "man 7 regex" (ie as used in egrep). A quick reference to regular expressions (note that gjots2 uses Python's re package - see the Python docs for full details, it is rather simpler than the regex used in the C version of gjots): . any character ^ start of line (only as the first item in the RE) $ end of line (only as the last item in the RE) * zero or more repetitions of the previous RE + one or more repetitions of the previous RE ? zero or one repetitions of the previous RE {n} exactly n repetitions of the previous RE {n,} n or more repetitions of the previous RE {n,m} n to m repetitions of the previous RE [ ] matches any character in the set. Ranges are eg. [a-z] [^ ] matches any character not in the set ( ) forms a 'remembered' pattern | pattern alternation eg. x|y means "matches x or y" \n n is 1 to 9 - a backreference to a previous pattern \b start or end of a word \d a digit == [0-9] \s whitespace == [ \t\n\r\f\v] \S non-whitespace \w alphanumeric \W non-alphanumeric To match one of the 'magic' characters ^.[$()|*+?{\ escape it with \ For the replacement pattern the following sequences are available: \& paste the entire found string \1..\9 paste the nth found sub-pattern (defined with (...) ) \n insert a newline \NewEntry Printing The Print dialog lets you select "what to print": the current page, the current selection or the whole thing and a few enhancements: page feed after every gjots item and auto numbering (not actually implemented yet) The print command that ships with 2.3.7 and later is "gjots2lpr" which is a simple script to try to find useful printing tools and to use them. The default operation is to pass the text through "a2ps" and to view the result with "gv". If these programs are not installed, others are sought - see "gjots2lpr -h" for more details. Before 2.6.7 the default print comman was rather long, but it expanded to the following which is supposed to do something similar: if type gv; then GV='gv -seascape' else if type ggv; then GV=ggv; else lpr $1 exit fi fi T=/tmp/.tmp.$$ mpage -f -2 -I1 -P- $1 > $T ($GV $T; rm $T)& Some possible suggestions for the "Print command" instead of the default: To simply send the raw output directly to the printer: lpr $1 \NewEntry Preferences The following items can be selected as preferences by gconf: Text formatter - default is "fmt -w %d" Text line length - used in paragraph formating, (65) External Editor - editor to use with the Ext.Ed. button eg.: nedit %s xedit %s xterm -e vi %s emacsclient %s Date format - format string to feed to strftime(3) for use in date stamp. Do a "man strftime" for details. e.g.: %F : (2002-11-03) ... this is the default %c : Sun 03 Nov 2002 10:33:22 AM EST (%d %b %y) : (03 Nov 02) %d/%m/%Y : 28/07/2007 Font - the font to be used for the text display. The controls and tree still use the default GTK-2 fonts. \NewEntry Keyboard operation Most of the key shortcuts are the usual. In the text display, the normal GTK-2 key mappings apply (slightly different to the C/GTK-1 version of gjots): ^a Select all text home goto start of line end goto end of line left move back one place right move forward one place ^left move one word left ^right move one word right down move to next line up move to previous line ^home/end goto start/end of text delete delete one char backspace delete one char backwards ^L paragraph re-format or "wrap" Shift and <move> mark the region. Plus the following work: ^x cut ^c copy ^v paste Key mappings in the tree: In general, plain keys just move around the tree. Control keys manipulate the tree. up goto previous item down goto next item ^up move the current item(s) up the tree ^down move the current item(s) down the tree shift-up/down extend the selection left ascend the tree right descend the tree ^left promote items ^right demote items home goto to the first item at the present level end goto to the last item at the present level ^home goto the very first item ^end goto the very last (expanded) item Global key mappings: ^s does save ^q does quit ^f Popup the find dialog ^g find next shift-^g find previous \NewEntry Import and export You can bring data in and out of gjots2 using the import and export functions. These operate on the currently selected item so you can control exactly what gets saved. The format of the file is the normal gjots2 format. \NewEntry gjots2 file format The same as gjots which is plain text but with a hierarchy introduced by some keywords: \NewEntry title1 this is the stuff that goes into title1 \NewFolder \NewEntry title2 this is title2's stuff \NewEntry title3 title 3's stuff \EndFolder The \keywords need to be at the start of the line to be recognised. \NewEntry Encryption gjots2 can encrypt and decrypt files using the ccrypt(1), openssl(1), gpg2(1) or gpg(1) packages. If the gpg-agent is detected (ie if the GPG_AGENT_INFO variable is set) then it is used for passwords. Files are saved with encryption according to the file suffix you provide: .cpt ccrypt .ssl openssl .gpg gpg gjots2 prompts for passwords where needed. Make sure you have ccrypt, openssl, gpg2 or gpg installed if you want to use this feature. Don't lose your password - I can't help you recover lost passwords!! \NewEntry Security gjots2 has not been audited for security, so don't assume it is secure. That said, it's probably secure enough for most private use. The static, encrypted files on disc are as good as gpg/openssl/ccrypt, ie pretty good, (the default algorithm and key lengths are used in each encryption program). For encryption in ccrypt, I've used the equivalent of: {write cleartext} | KEYWORD=password ccencrypt -E KEYWORD >filename.cpt This exposes the password briefly as an environment parameter although it is 'scrubbed' and removed from the gjots2 process environment immediately after use. According to the ccrypt man page, "on most modern systems" the ps command protects environment parameters from ordinary users. Under Linux, you can 'cat /proc/PID/environ' to see the environment parameters of any process that you own - only root can spy on another's environment so using -E is no less secure than your login password and root's login password. The only other way to do this (AFAICS) would be: {write cleartext} >file.gjot echo password |ccencrypt -k - file.gjot ... while this provides better protection for the password, this (briefly) exposes the cleartext as a file - as bad as or worse than exposing the key as an environment parameter! Decrypting is much easier - I use stdin to pass in the password: echo password |ccdecrypt -c -k - filename.cpt | {read from pipe} A supplementary channel (eg. stdin=0, stdout=1 stderr=3 stdpasswd=3) for ccrypt to read passwords would be a better solution (but ccrypt does not provide it). \NewEntry URL handling If you double-click on a URL then your browser is activated and the URL is selected. Only http[s]://... URLs are recognised. The browser that gets started or activated is the first from: An already-running browser from the list below is activated. Failing that, the BROWSER environment parameter is obeyed Failing that, the gnome prefered browser is run. Failing that, then the first one from the list that can be found is run. xdg-open gnome-open firefox4 chrome firefox konqueror epiphany opera dillo \NewEntry Utilities \NewFolder \NewEntry gjots2html gjots2html converts a gjots2 file into HTML together with a table of contents which looks remarkably like the subject tree. See the man page for more details. gjots2html.py is a python version of the same utility which may be more reliable. \NewEntry gjots2docbook converts a gjots2 file into DOCBOOK XML format. See the man page for more details. \NewEntry docbook2gjots Converts DOCBOOK XML into gjots2 - see the man page for full details See the man page for more details. \NewEntry gjots2emacs gjots2emacs converts a gjotsfile to a format more or less suitable for emacs' outline mode. Usage: gjots2emacs [filename] Converts a gjots file to emacs outline mode (on stdout). The emacs outline-regexp is defaulted to ===>+ -b base: base string for outline-regexp (default '===') -F char: marker for headers in outline-regexp (default '>') \EndFolder \EndFolder \NewEntry Development status If you have ideas on how to improve gjots2, please email to bhepple@freeshell.org \NewFolder \NewEntry Planned features What gets added will be limited to the design goal of "fast and lightweight", but might include: Localisation ============ As of version 2.3.0, gjots2 is internationalized and ready for translations. If you would like to see your language supported, please contact the mailing list on bhepple@freeshell.org Check the webpage for localisations already complete. gjots2 ====== Add timestamp to every item & display in appbar when selected autosort on/off for folders Edit->Clear, Properties, Settings->preferences autosave Support for item options: \Options including: open/closed para details ...? gjots2html ========== gjots2html is undergoing some possible changes. There is a new script marked as beta written in Python, and supports the following features: 1) Add <HR> lines after each section. 2) Adds a link to the Table of Contents after each section. 3) Specify a title to the page. 4) Embed the output of gjots2html.py into a pre-existing HTML template file. 5) Suppress the table of contents section. 6) Output the HTML to a specified file. 7) Add a link to a specified Cascading Style Sheet. 8) Wrap the gjots2 text at a specified width. It also supports an arbitrary number of levels in the hierarchy, even though HTML only supports 9. Add options: -r N, --rule=N: <HR> for all levels up to N \NewEntry Known bugs None known, of course, other than: Inappropriate error messages if can't open a gjots2 file on initial startup. The sort dialog can't set itself to the values stored in gconf. \NewEntry Platforms Tested on the following platforms: Fedora-13 Older version were tested on: Gentoo Linux i386 Mandrake 10.1 Fedora Core 3, 4 Novell Linux Desktop 9 SUSE 9.2, 9.3 Ubuntu Feisty Some of these platforms may require updated packages. Refer to our FAQ for a discussion of these issues. \EndFolder \NewEntry Gjots FAQ Frequently Asked Questions regarding gjots2. If you ever have any questions that aren't answered here, please contact the gjots2 users list <gjots2-users@lists.sourceforge.net>. \NewFolder \NewEntry Q: The icons in the left toolbar look squashed. A: You are using a buggy version of libglade2. Upgrade libglade to a version >= 2.4.1. We recommed you update this package through your distribution package manager. \NewEntry Q: I receive the error ImportError: No module named distutils.core when building gjots2 from source. A: Your distribution has effectively *broken* the python installation by not including the distutils modules, which are part of the python core package. Install python correctly to fix this issue. This is known to happen in: Ubuntu (5.10), NLD9, SUSE 9.2. Ubuntu 5.10 fix: # apt-get install pythonX.X-dev \NewEntry Q: I receive the error ImportError: No module named gconf A: Install gnome-python-2. This package will contain the Python bindings for gconf and is located here: http://www.pygtk.org/ You should be able to find pre-built packages for these such as the following. Mandrake 10.1: # rpm -ivh gnome-python-gconf-2.0.3-1mdk.i586.rpm Fedora Core 3: # rpm -ivh gnome-python2-gconf-2.6.0-3.i386.rpm \NewEntry Q: How do you get gjots2 to run under Novell Linux Desktop? A: You will have to install gnome-python (and its dependencies). \NewEntry Q: What's the difference between the old C version (gjots-0.X) and the new python version gjots-2.X.X A: At the 2.0.0 release, these were the differences (for development since then see the CHANGES logs): Unicode support in the data files - so I can make notes in Russian - maybe Turkish, Arabic, who knows what will work. Reports solicited and most welcome! The potential for LOTE support in the program itself - any volunteers for I18N and L10N? Drag and Drop in the tree view to simplify organisation. gconf support with GTK-2 themes. Sorting items and/or text Merging items Spliting items Printing \NewEntry Q: Why do the Undo and Redo functions not work? A: Have you got the gtksourceview libraries installed? \EndFolder \NewEntry Authors & Licence \NewFolder \NewEntry Authors Written by: Bob Hepple <bhepple@freeshell.org> Assistance from: Gabriel Munoz <munozga@gmail.com> Jiahua Huang <jhuangjiahua@gmail.com> Logo by: DSP Popeck <wokoglopulator@yahoo.com>, 2002 French translation by: Rui Nibau <rui.nibau@omacronides.com> Norwegian translation by: Robert Emil Berge <filoktetes@linuxophic.org> Russian tranlsation by: Sergey Bezdenezhnyh <sib-mail@mtu-net.ru> Italian tranlation by: Raimondo Giammanco <rongten@member.fsf.org> Czech translation by: Martin Sin <martin.sin@zshk.cz> Spanish translation by: Cecilio Salmeron <s.cecilio@gmail.com> Slovenian translation by: Aleksa Šušulić <susulic@gmail.com> German translation by: Uwe Steinmann <uwe@steinmann.cx> \NewEntry Licence (GPL) Copyright (C) 2007 Robert Hepple Copyright (C) 2002 DSP Popeck GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS \EndFolder ������������������������������������������������gjots2-2.4.1/doc/man/�������������������������������������������������������������������������������0000775�0003011�0000765�00000000000�12234163306�014065� 5����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/doc/man/man1/��������������������������������������������������������������������������0000775�0003011�0000765�00000000000�12234163306�014721� 5����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/doc/man/man1/docbook2gjots.1�����������������������������������������������������������0000664�0003011�0000765�00000004073�12234162542�017561� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Copyright (c) 2002 Robert Hepple .TH DOCBOOK2GJOTS 1 \" -*- nroff -*- .SH NAME docbook2gjots \- Convert a DOCBOOK file to gjots format (on .BR stdout ) .SH SYNOPSIS .hy 0 .na .B docbook2gjots [ .I DOCBOOK-file ] .ad b .hy 1 .SH DESCRIPTION .B docbook2gjots converts a DOCBOOK XML file into gjots format. .P .B docbook2gjots uses .BR gawk (1) to perform the conversion. .P .BR <preface> , .BR <chapter> , .BR <section> , .BR <sect1> , .BR <sect2> , .BR <sect3> and .BR <sect4> tags are used to define .B NewEntry and .B NewFolder boundaries. They should definitely have .BR <title> tags. .P This is a quick and dirty hack using .BR gawk (1) and does no formal checking of XML or SGML syntax nor does it validate against the DOCBOOK DTD. Consequently, if the syntax of the file is broken the conversion will probably fail. .P It is intended that a round-trip can be made so that .BR gjots (1) can be used as a tool at all stages of DOCBOOK production - mainly as an outline processor to help the author organise and order the work. A document may well start its life in .BR gjots (1) as the initial thoughts are marshalled. As the document forms up, it can be converted to DOCBOOK with the following command which automatically adds tags such as .BR <?xml...> , .B <para> etc: .P .RS .nf .ft CW gjots2docbook -b file.gjots >file.xml .br docbook2pdf file.xml .fi .RE .P Or, starting with an existing DOCBOOK file: .P .RS .nf .ft CW docbook2gjots file.xml >file.gjots .fi .RE .P In the latter case, the document will already have a lot of DOCBOOK tags so to convert back to docbook, add the -e and -p options: .P .RS .nf .ft CW gjots2docbook -b -p -e file.gjots >file.xml .br docbook2pdf file.xml .fi .RE .P .SH "AUTHOR" Written by Bob Hepple <bhepple@freeshell.org> .P .RB http://bhepple.freeshell.org/gjots .SH "COPYRIGHT" Copyright (c) 2002 Robert Hepple .br This is free software; see the source for copying condi tions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .SH "SEE ALSO" .BR gjots (1), .BR gjots2html (1), .BR gjots2docbook (1) ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/doc/man/man1/gjots2docbook.1�����������������������������������������������������������0000664�0003011�0000765�00000003741�12234162542�017562� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Copyright (c) 2002 Robert Hepple .TH GJOTS2DOCBOOK 1 \" -*- nroff -*- .SH NAME gjots2docbook \- Convert a gjotsfile to DOCBOOK (on .BR stdout ) .SH SYNOPSIS .hy 0 .na .B gjots2docbook .BR \-a | \-b [ .B \-e ] [ .B \-P ] [ .B \-p ] [ .I gjotsfile ] .ad b .hy 1 .SH DESCRIPTION .B gjots2docbook converts a gjotsfile into DOCBOOK XML. .P .B gjots2docbook uses .BR awk (1) to perform the conversion. .P .B gjots2docbook does not create them so the first element in the file should contain any <bookinfo> or <artheader> element. Similarly, <bibliographic> elements are not created. In fact the output is very simplistic with item titles in the .B gjotsfile being converted to chapter or section headings in DOCBOOK. There is no reason why your gjotsfile should not contain valid DOCBOOK XML - and that is why the -e and -p options are provided. .P If the file does not start with <?xml ...> then appropriate lines will be added as follows: .P .RS .nf .ft CW <?xml version="1.0" encoding="UTF-8"?> .br <!DOCTYPE doc_type PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"> .fi .RE .P If properly installed, the docbook utilities can then be used to create HTML, man, ps, pdf etc files eg: .P .RS .nf .ft CW gjots2docbook -b ~/.gjotsfile >gjotsfile.xml .br docbook2pdf gjotsfile.xml .fi .RE .P It may be necessary to fine-tune the docbook formatting to access all features. .SH OPTIONS .TP .B \-a makes a DOCBOOK article .TP .B \-b makes a DOCBOOK book .TP .B \-e don't encode special characters eg < -> < .TP .B \-p don't change blank lines to </para><para> markers .TP .B \-P first section is a preface rather than a chapter (book only) .SH "AUTHOR" Written by Bob Hepple <bhepple@freeshell.org> .P .RB http://bhepple.freeshell.org/gjots .SH "COPYRIGHT" Copyright (c) 2002 Robert Hepple .br This is free software; see the source for copying condi tions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .SH "SEE ALSO" .BR gjots (1), .BR gjots2html (1), .BR docbook2gjots (1)�������������������������������gjots2-2.4.1/doc/man/man1/gjots2html.1��������������������������������������������������������������0000664�0003011�0000765�00000002245�12234162542�017104� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Copyright (c) 2002-2011 Robert Hepple .TH GJOTS2HTML 1 \" -*- nroff -*- .SH NAME gjots2html \- Convert a gjotsfile to HTML (on .BR stdout ) .SH SYNOPSIS .hy 0 .na .B gjots2html { .B \-lc ] [ .BI \-t " title" ] [ .BI \-i " level" } [ .I gjotsfile ] .ad b .hy 1 .SH DESCRIPTION .B gjots2html converts a gjotsfile into HTML with a table of contents. .P Presently up to 8 levels of table of contents subject tree are supported. .P .B gjotsfile uses .BR m4 (1) and .BR awk (1) .SH OPTIONS .TP .B \-l adds .I <HR> lines after each section. .TP .B \-c adds a link to the TABLE OF CONTENTS after each section. .TP .BI \-t " title" adds a title to the page .TP .BI \-i " level" Creates the table of contents down to that level of heading. The default is to include all headings. .SH "AUTHOR" Written by Bob Hepple <bhepple@freeshell.org> .P .RB http://bhepple.freeshell.org/gjots .SH "COPYRIGHT" Copyright (c) 2002-2011 Robert Hepple .br This is free software; see the source for copying condi tions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .SH "SEE ALSO" .BR gjots (1), .BR gjots2docbook (1), .BR docbook2gjots (1), .BR gjots2html.py (1) �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/doc/man/man1/gjots2.1������������������������������������������������������������������0000664�0003011�0000765�00000010063�12234162542�016214� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" Copyright (c) 2004-2011 Robert Hepple .\" $Id: gjots2.1,v 1.4.4.3 2011-01-02 23:34:04 bhepple Exp $ .TH GJOTS2 1 \" -*- nroff -*- .SH NAME gjots2 \- A gnome-2/X11 jotter .SH SYNOPSIS .hy 0 .na .B gjots2 .RB "[\|" "options" "\|]" .I gjotsfile .ad b .hy 0 .SH DESCRIPTION .B gjots2 is a fairly simple jotter application for your desktop. It displays your data organised in a tree with each leaf being your text. .P Getting data into .BR gjots2 is fairly easy - you can type it in, cut and paste text or use an editor to convert other text files to the simple .B gjots2 format (see below for details). You can also convert an existing DOCBOOK file into .B gjots2 format with .BR docbook2gjots (1). .P .B gjots2 files can be simply converted into HTML using .BR gjots2html (1) or into DOCBOOK with .BR gjots2docbook (1) .P Sensitive data can be encrypted by .BR ccrypt "(1), " openssl "(1) or " gpg (1) simply by saving with an appropriate file suffix and providing a password: .P .RS .TP 10 .B ccrypt .cpt .TP 10 .B openssl .ssl .TP 10 .B gpg .gpg .RE .P Don't forget your passwords. Obviously, the appropriate encryption utility must have been installed. .P Simple text formatting is provided with the usual cut & paste operations and paragraph formatting (line wrapping) according to the line length set in .I "Settings->Preferences." Lines are formatted by pressing the .I Wrap button or ^L. This requires the .BR fmt (1) command which is in the .I coreutils package in .B fedora and in the .I sys-apps/textutils directory on .BR Gentoo . .P An external editor (configured in .IR "Settings->Preferences" ) can be invoked by pressing the .B "Ext.Ed" button. .B gjots2 is suspended while the editing is carried on. .P File locking is implemented by a lockfile .RI ( .#filename ) in the same directory as the file being edited. Multiple users can open the file readonly but only one user can open the file for writing. Since the locking is done with a lockfile even NFS-mounted files can be protected. .SH OPTIONS .TP .B \-\-help Prints help. .TP \fB\-g\fR, \fB\-\-geometry\fR \fIWIDTHxHEIGHT\fR[\fI+X+Y\fR] Initial window geometry for .B gjots2. Note that the X and Y components are presently ignored. .TP \fB\-p\fR, \fB\-\-purge-password\fR When opening an encrypted file, .B gjots now remembers the password for subsequent writes. To restore the old behaviour where .B gjots purged the password, use this option. .TP \fB\-r\fR, \fB\-\-readonly\fR Opens the gjotsfile in readonly mode (with no locking and no ability to write) .TP \fB\-d\fR, \fB\-\-debug\fR debug to stdout .TP \fB\-t\fR, \fB\-\-trace\fR trace lines as they execute .TP \fB\-V\fR, \fB\-\-version\fR Print the version and quit .SH "FILES" .BI $HOME/.gjotsfile The default data file .TP \&`\fBdirname \fP\fIfilename\fP`\fI/.#\fP`\fBbasename\fP \fIfilename\fP` The lock file for the file called .IR filename . .SH "FILE FORMAT" .B gjots2 uses a simple text file format with the addition of a hierarchy of items introduced by keywords. The keywords need to be at the start of line to be recognised. Only 3 keywords are presently used: .TP 15 \fB\\NewEntry\fR Starts a new entry .TP 15 \fB\\NewFolder\fR Promotes the current item to a folder .TP 15 \fB\\EndFolder\fR Ends a folder .P The first line in every entry is used as the 'title' for the tree. .P In a future release the \fB\\Option\fR keyword may be added. .SH "EXAMPLE" .nf \\NewEntry title1 this is the stuff that goes into title1 \\NewFolder \\NewEntry title3 title 3's stuff \\EndFolder .fi .SH "AUTHOR" Written by Bob Hepple <bhepple@freeshell.org> .P .RB http://bhepple.freeshell.org/gjots .SH "COPYRIGHT" Copyright (c) 2002-2011 Robert Hepple .br This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. .SH "SEE ALSO" .BR gjots2html (1), .BR gjots2docbook (1), .BR docbook2gjots (1). .P Also, see the .BR gjots2 (1) README, probably as something like: .P .RS .nf .ft CW gjots /usr/share/doc/gjots-0.8/gjots2.gjots .ft .RE .P or .P .RS .nf .ft CW netscape /usr/share/doc/gjots-0.8/gjots2.html .ft .fi .RE .P �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/�����������������������������������������������������������������������������������0000775�0003011�0000765�00000000000�12234163306�013313� 5����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/version.py�������������������������������������������������������������������������0000664�0003011�0000765�00000000026�12234163303�015345� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots_version="2.4.1" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/sortDialog.py����������������������������������������������������������������������0000664�0003011�0000765�00000023104�12234162542�015775� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������import gtk.keysyms import gtk.glade import re import inspect import tempfile import pipes import string """ We'll actually sort a list of list, each element of which is [ row, title, value ] "value" is only used for numeric sorts and is extracted by the _safe_float routine. """ def _sort_function_alpha_asc(x, y): return cmp(string.lower(x[1]), string.lower(y[1])) def _sort_function_alpha_des(x, y): return -cmp(string.lower(x[1]), string.lower(y[1])) def _safe_float(xin): """ Hopefully, this will barf on nothing, unlike a bare "float" - always returns a number or None if "not a number" """ x = xin if not x or x == "": return None m = re.search('[-+]?(\d+(\.\d*)?|\d*\.\d+)([eE][-+]?\d+)?', x) if m: return(float(x[m.start():m.end()])) else: return None def _num_cmp(xin, yin): x = _safe_float(xin) y = _safe_float(yin) if x == y: # could both be "None" return 0 if x == None: return -1; if y == None: return 1; if x < y: return -1 return 1 def _sort_function_num_asc(x, y): return _num_cmp(x[1], y[1]) def _sort_function_num_des(x, y): return -_num_cmp(x[1], y[1]) class sort_dialog: def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.sort_get_widget(self.name).destroy() def saveSettings(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] w = self.sort_get_widget("sortAscendingRadioButton") if w: self.gui.client.set_bool(self.gui.sort_ascending_path, w.get_active()) else: print "Cant find sortAscendingRadioButton" w = self.sort_get_widget("sortAlphabeticRadioButton") if w: self.gui.client.set_bool(self.gui.sort_alpha_path, w.get_active()) w = self.sort_get_widget("sortSublevelsSpinButton") if w: self.gui.client.set_int(self.gui.sort_sublevels_path, w.get_value_as_int()) return def on_sortDialog_destroy(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] return def on_sortCommandEntry_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() # to get all keysyms: print gtk.keysyms.__dict__ if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_sortOKButton_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_sortCancelButton_clicked(widget) return def _get_settings(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] sort_ascending = sort_alpha = sort_items = sort_sublevels = 0 w = self.sort_get_widget("sortAscendingRadioButton") if w: sort_ascending = w.get_active() else: print _("_get_settings: Cant find sortAscendingRadioButton") w = self.sort_get_widget("sortAlphabeticRadioButton") if w: sort_alpha = w.get_active() w = self.sort_get_widget("sortSublevelsSpinButton") if w: sort_sublevels = w.get_value_as_int() if self.type == "tree": sort_items = True return sort_ascending, sort_alpha, sort_items, sort_sublevels def _sort_item(self, item, start_iter, end_iter, sort_ascending, sort_alpha, sort_sublevels, level): """ Sort the children of the current item, starting at start_iter, ending at end_iter (0,0 mean first & last). Always sort one level. If sublevels, then sort children recursively up to sort_sublevels deep (<0 for all). Sorting only takes place on the title, not on the body. """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] child = self.gui.treestore.iter_children(item) if not child: return if start_iter == 0: start_iter = child else: while not self.gui.same_iter(child, start_iter): child = self.gui.treestore.iter_next(child) if not child: self.gui.msg(_("Internal error")) return if end_iter == 0: next = end_iter = start_iter while next: end_iter = next next = self.gui.treestore.iter_next(end_iter) # contruct the sort list sort_list = [ ] child = self.gui.treestore.iter_children(item) selection_start = -1 selection_end = -1 count = 0 while child: if selection_start == -1 and self.gui.same_iter(child, start_iter): selection_start = count if selection_start != -1 and selection_end == -1: sort_list.append([count, self.gui.get_node_title(child)]) if sort_sublevels < 0 or level < sort_sublevels: if self.gui.treestore.iter_children(child): self._sort_item(child, 0, 0, sort_ascending, sort_alpha, sort_sublevels, level + 1) if selection_end == -1 and self.gui.same_iter(child, end_iter): selection_end = count child = self.gui.treestore.iter_next(child) count = count + 1 #print "sort_list before sort = ", sort_list # Do the sort if sort_alpha: if sort_ascending: sort_list.sort(_sort_function_alpha_asc) else: sort_list.sort(_sort_function_alpha_des) else: if sort_ascending: sort_list.sort(_sort_function_num_asc) else: sort_list.sort(_sort_function_num_des) #print "sort_list after sort = ", sort_list # Extract a reorder list from the sorted list child = self.gui.treestore.iter_children(item) count = 0 reorder_list = [ ] while count < selection_start: reorder_list.append(count) child = self.gui.treestore.iter_next(child) count = count + 1 sorted_count = 0 while child and count <= selection_end: reorder_list.append(sort_list[sorted_count].pop(0)) child = self.gui.treestore.iter_next(child) count = count + 1 sorted_count = sorted_count + 1 while child: reorder_list.append(count) child = self.gui.treestore.iter_next(child) count = count + 1 #print "reorder_list = ", reorder_list self.gui.treestore.reorder(item, reorder_list) return def on_sortOKButton_clicked(self, widget): """ """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.sync_text_buffer() self.saveSettings() sort_ascending, sort_alpha, sort_items, sort_sublevels = self._get_settings() if not sort_items: # then sort lines body, start_text, end_text = self.gui.get_selected_text() if not body: start_text = self.gui.textBuffer.get_start_iter() end_text = self.gui.textBuffer.get_end_iter() body = self.gui.textBuffer.get_text(start_text, end_text) if not body: self.gui.msg(_("Nothing to sort!")) return text_list = body.split('\n') if sort_alpha: if sort_ascending: text_list.sort(lambda x, y: cmp(string.lower(x), string.lower(y))) else: text_list.sort(lambda x, y: -cmp(string.lower(x), string.lower(y))) else: if sort_ascending: text_list.sort(lambda x, y: cmp(x, y)) else: text_list.sort(lambda x, y: -cmp(x, y)) body = string.join(text_list, "\n") self.gui.textBuffer.delete(start_text, end_text) self.gui.textBuffer.insert(start_text, body, len(body)) self.gui._set_dirtyflag() return """ Sorting items - if only one item selected then sort its children. Otherwise sort the selected items """ first_selected = self.gui.get_first_selected_iter() if not first_selected: self.gui.msg(_("Nothing selected")) return last_selected = self.gui.get_last_selected_iter() if not last_selected: self.gui.msg(_("Nothing selected")) return if self.gui.same_iter(first_selected, last_selected): # Only one item selected self._sort_item(first_selected, 0, 0, sort_ascending, sort_alpha, sort_sublevels, 0) self.gui._set_dirtyflag() return parent = self.gui.treestore.iter_parent(first_selected) if not parent: self.gui.msg(_("No parent!")) return self._sort_item(parent, first_selected, last_selected, sort_ascending, sort_alpha, sort_sublevels, 0) self.gui._set_dirtyflag() return def on_sortCancelButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.destroy() return def __init__(self, gui, type): """ Print dialog """ self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] callbacks = { "on_sortDialog_destroy": self.on_sortDialog_destroy, "on_sortCommandEntry_key_press_event": self.on_sortCommandEntry_key_press_event, "on_sortOKButton_clicked": self.on_sortOKButton_clicked, "on_sortCancelButton_clicked": self.on_sortCancelButton_clicked, } self.name = "sortDialog" if self.gui.builder: self.gui.builder.add_from_file(self.gui.sharedir + "ui/sortDialog.ui") self.gui.builder.connect_signals(callbacks) self.sort_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.sort_get_widget = self.xml.get_widget # Initialize the GUI state of the radio buttons and spin button # based on the type of sort ('tree', 'text', or 'both') # TODO: Shouldn't we be setting each radio button??? w = self.sort_get_widget("sortAscendingRadioButton") w.set_active(self.gui.client.get_bool(self.gui.sort_ascending_path)) w = self.sort_get_widget("sortAlphabeticRadioButton") w.set_active(self.gui.client.get_bool(self.gui.sort_alpha_path)) if type == "tree": self.type = "tree" self.sort_get_widget("sortSublevelsSpinButton").set_sensitive(True) self.sort_get_widget("sortDialog").set_title(_("Sort Tree")) elif type == "text": self.type = "text" self.sort_get_widget("sortRangeFrame").hide() self.sort_get_widget("sortDialog").set_title(_("Sort Text")) return # sort_dialog # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/printDialog.py���������������������������������������������������������������������0000664�0003011�0000765�00000014007�12234162542�016144� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������import gtk.keysyms import gtk.glade import re import inspect import tempfile import pipes class print_dialog: def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.print_get_widget(self.name).destroy() def saveSettings(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] w = self.print_get_widget("printPageRadioButton") if w: self.gui.client.set_bool(self.gui.print_page_path, w.get_active()) w = self.print_get_widget("printSelectionRadioButton") if w: self.gui.client.set_bool(self.gui.print_selection_path, w.get_active()) w = self.print_get_widget("printAllRadioButton") if w: self.gui.client.set_bool(self.gui.print_all_path, w.get_active()) w = self.print_get_widget("printPageFeedButton") if w: self.gui.client.set_bool(self.gui.print_page_feed_path, w.get_active()) w = self.print_get_widget("printBoldTitlesButton") if w: self.gui.client.set_bool(self.gui.print_bold_title_path, w.get_active()) w = self.print_get_widget("printCommandEntry") if w: self.gui.client.set_string(self.gui.print_command_path, w.get_text()) return def on_printDialog_destroy(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] return def on_printCommandEntry_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() # to get all keysyms: print gtk.keysyms.__dict__ if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_printOKButton_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_printCancelButton_clicked(widget) return def _get_settings(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] print_page = print_selection = print_all = page_feed = bold_titles = 0 print_command = "" w = self.print_get_widget("printPageRadioButton") if w: print_page = w.get_active() if not print_page: w = self.print_get_widget("printSelectionRadioButton") if w: print_selection = w.get_active() if not print_selection: print_all = 1 w = self.print_get_widget("printPageFeedButton") if w: page_feed = w.get_active() w = self.print_get_widget("printBoldTitlesButton") if w: bold_titles = w.get_active() w = self.print_get_widget("printCommandEntry") if w: print_command = w.get_text() return print_page, print_selection, print_all, page_feed, bold_titles, print_command def on_printOKButton_clicked(self, widget): """ if print_all is set then print all the pages else If print_page is set then print the page else if 1 tree item is selected then print the selected text else print all the selected pages. """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.sync_text_buffer() self.saveSettings() print_page, print_selection, print_all, page_feed, bold_titles, print_command = self._get_settings() if print_all: this_iter = self.gui.get_root() else: this_iter = self.gui.get_first_selected_iter() if not this_iter: self.gui.msg(_("Nothing selected")) return last_selected = self.gui.get_last_selected_iter() if not last_selected: self.gui.msg(_("Nothing selected")) return t = pipes.Template() t.append(print_command, "-.") scratch = tempfile.mktemp() f = t.open(scratch, "w") single_page = 0 if print_page or ( print_selection and self.gui.same_iter(this_iter, last_selected) ): single_page = 1 while (1): if print_selection and single_page: body, insertion_point, selection_bound = self.gui.get_selected_text() else: body = self.gui.get_node_value(this_iter) if body: f.write(body) if single_page: break if print_selection: if self.gui.same_iter(this_iter, last_selected): break this_iter = self.gui.get_linear_next(this_iter) if not this_iter: break if page_feed: f.write(' ') f.close() os.unlink(scratch) self.destroy() return def on_printCancelButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.destroy() return def __init__(self, gui): """ Print dialog """ self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] callbacks = { "on_printDialog_destroy": self.on_printDialog_destroy, "on_printCommandEntry_key_press_event": self.on_printCommandEntry_key_press_event, "on_printOKButton_clicked": self.on_printOKButton_clicked, "on_printCancelButton_clicked": self.on_printCancelButton_clicked, } self.name = "printDialog" if self.gui.builder: self.gui.builder.add_from_file(self.gui.sharedir + "ui/printDialog.ui") self.gui.builder.connect_signals(callbacks) self.print_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.print_get_widget = self.xml.get_widget w = self.print_get_widget("printPageRadioButton") if w: w.set_active(self.gui.client.get_bool(self.gui.print_page_path)) w = self.print_get_widget("printSelectionRadioButton") if w: w.set_active(self.gui.client.get_bool(self.gui.print_selection_path)) w = self.print_get_widget("printAllRadioButton") if w: w.set_active(self.gui.client.get_bool(self.gui.print_all_path)) w = self.print_get_widget("printPageFeedButton") if w: w.set_active(self.gui.client.get_bool(self.gui.print_page_feed_path)) w = self.print_get_widget("printBoldTitlesButton") if w: w.set_active(self.gui.client.get_bool(self.gui.print_bold_title_path)) w = self.print_get_widget("printCommandEntry") if w: w.set_text(self.gui.client.get_string(self.gui.print_command_path)) return # print_dialog # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/prefs.py���������������������������������������������������������������������������0000664�0003011�0000765�00000016620�12234162542�015012� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������import gtk import gconf import inspect from common import * """ OK, yeah, I know - strictly speaking we should have a nofifier in here in case something else (eg gconf-editor) changes a setting while we are in here, but quite honestly - really! """ class font_dialog: def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.fonts_get_widget(self.name).destroy() def on_fontCancel_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.value = CANCEL def on_fontApply_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.value = OK def on_fontOK_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.value = OK def __init__(self, gui): """ Font dialog """ self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] callbacks = { "on_fontCancel_clicked": self.on_fontCancel_clicked, "on_fontApply_clicked": self.on_fontApply_clicked, "on_fontOK_clicked": self.on_fontOK_clicked, } self.name = "fontselectiondialog" if self.gui.builder: self.gui.builder.add_from_file(self.gui.sharedir + "ui/fontDialog.ui") self.gui.builder.connect_signals(callbacks) self.fonts_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.fonts_get_widget = self.xml.get_widget self.fontselectiondialog = self.fonts_get_widget("fontselectiondialog") self.fontselectiondialog.set_font_name(self.gui.client.get_string(self.gui.text_font_path)) self.value = WAITING while self.value == WAITING: gtk.main_iteration() class prefs_dialog: def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.prefs_get_widget(self.name).destroy() def on_fontButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] f = font_dialog(self.gui) if f.value == OK: self.fontName_entry.set_text(f.fontselectiondialog.get_font_name()) f.destroy() def on_prefsOK_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.client.set_int(self.gui.line_length_path, self.lineLength_spinbutton.get_value_as_int()) self.gui.client.set_string(self.gui.text_formatter_path, self.textFormatter_entry.get_text()) self.gui.client.set_string(self.gui.external_editor_path, self.externalEditor_entry.get_text()) self.gui.client.set_string(self.gui.date_format_path, self.dateFormat_entry.get_text()) self.gui.client.set_string(self.gui.text_font_path, self.fontName_entry.get_text()) self.gui.client.set_int(self.gui.auto_save_interval_path, self.autoSaveInterval_spinbutton.get_value_as_int()) self.gui.client.set_int(self.gui.auto_read_only_timeout_path, self.autoReadOnlyTimeout_spinbutton.get_value_as_int()) self.destroy() def on_prefsCancel_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.destroy() def on_textFormatter_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_prefsOK_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_prefsCancel_clicked(widget) return def on_lineLength_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_prefsOK_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_prefsCancel_clicked(widget) return def on_externalEditor_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_prefsOK_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_prefsCancel_clicked(widget) return def on_dateFormat_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_prefsOK_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_prefsCancel_clicked(widget) return def on_fontName_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_prefsOK_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_prefsCancel_clicked(widget) return def __init__(self, gui): """ Prefs dialog """ self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] callbacks = { "on_fontButton_clicked": self.on_fontButton_clicked, "on_prefsOK_clicked": self.on_prefsOK_clicked, "on_prefsCancel_clicked": self.on_prefsCancel_clicked, "on_textFormatter_key_press_event": self.on_textFormatter_key_press_event, "on_lineLength_key_press_event": self.on_lineLength_key_press_event, "on_externalEditor_key_press_event": self.on_externalEditor_key_press_event, "on_dateFormat_key_press_event": self.on_dateFormat_key_press_event, "on_fontName_key_press_event": self.on_fontName_key_press_event, } self.name = "prefsDialog" if self.gui.builder: self.gui.builder.add_from_file(self.gui.sharedir + "ui/prefsDialog.ui") self.gui.builder.connect_signals(callbacks) self.prefs_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.prefs_get_widget = self.xml.get_widget self.lineLength_spinbutton = self.prefs_get_widget("lineLength") self.autoSaveInterval_spinbutton = self.prefs_get_widget("autoSaveInterval") self.autoReadOnlyTimeout_spinbutton = self.prefs_get_widget("autoReadOnlyTimeout") self.textFormatter_entry = self.prefs_get_widget("textFormatter") self.externalEditor_entry = self.prefs_get_widget("externalEditor") self.dateFormat_entry = self.prefs_get_widget("dateFormat") self.fontName_entry = self.prefs_get_widget("fontName") self.lineLength_spinbutton.set_value(self.gui.client.get_int (self.gui.line_length_path)) self.textFormatter_entry.set_text (self.gui.client.get_string(self.gui.text_formatter_path)) self.externalEditor_entry.set_text (self.gui.client.get_string(self.gui.external_editor_path)) self.dateFormat_entry.set_text (self.gui.client.get_string(self.gui.date_format_path)) self.fontName_entry.set_text (self.gui.client.get_string(self.gui.text_font_path)) self.autoSaveInterval_spinbutton.set_value(self.gui.client.get_int(self.gui.auto_save_interval_path)) self.autoReadOnlyTimeout_spinbutton.set_value(self.gui.client.get_int(self.gui.auto_read_only_timeout_path)) # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: ����������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/__init__.py������������������������������������������������������������������������0000664�0003011�0000765�00000000000�12234162542�015413� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/gui.py�����������������������������������������������������������������������������0000664�0003011�0000765�00000312755�12234162542�014467� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������# -*- coding: utf-8 -*- import os, sys import gobject import tempfile import gconf import pango import time # for strftime import pipes import inspect import signal from file import * from prefs import * from general import * from common import * from find import * from printDialog import * from sortDialog import * from version import * """ Notes: Recall that a GtkTreeStore implements GtkTreeModel - so all treemodel methods apply to treestore According to file:///usr/share/gtk-doc/html/gtk/GtkTreeModel.html, tree_row_references are not necessary as "some models guarantee that an iterator is valid for as long as the node it refers to is valid (most notably the GtkTreeStore and GtkListStore)." Note that every selection is constrained to be of siblings only at the time the selection changes - so we can always make that assumption. """ def _insert_primary_callback(clipboard, text, user_data): self, x, y = user_data if not self.readonly: hit_iter = self.textView.get_iter_at_location(x, y) self.textBuffer.place_cursor(hit_iter) self.textBuffer.insert_at_cursor(text) clipboard.set_text(text, -1) self.msg(_("Text pasted")) def _alarm_handler(signalnum, stack): gui = stack.f_globals['gui'] if gui.dirtyflag: gui._do_save(reuse_password = 1) else: gui.set_readonly(1, 1) gui.alarm_set = 0 class gjots_gui: def _set_dirtyflag(self): self.dirtyflag = "* " if self.alarm_set: signal.alarm(0) self.alarm_set = 0 timeout = self.client.get_int(self.auto_save_interval_path) if timeout > 0: signal.signal(signal.SIGALRM, _alarm_handler) signal.alarm(timeout) self.alarm_set = timeout def _start_of_para(self): """ Para marker is \n\n """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] cursor_mark = self.textBuffer.get_insert() start_iter = self.textBuffer.get_iter_at_mark(cursor_mark) back_one = self.textBuffer.get_iter_at_mark(cursor_mark) if not back_one.backward_char(): return start_iter if start_iter.ends_line() and back_one.ends_line(): return start_iter back_one = self.textBuffer.get_iter_at_mark(cursor_mark) back_two = self.textBuffer.get_iter_at_mark(cursor_mark) back_two.backward_char() while 1: if not back_one.backward_char(): return start_iter if not back_two.backward_char(): return back_one if back_one.ends_line() and back_two.ends_line(): return start_iter start_iter.backward_char() def _end_of_para(self): """ Para marker is \n\n or Unicode equiv (I suppose ???) """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] cursor_mark = self.textBuffer.get_insert() next_iter = self.textBuffer.get_iter_at_mark(cursor_mark) end_iter = self.textBuffer.get_iter_at_mark(cursor_mark) if end_iter.ends_line(): return end_iter while 1: if not next_iter.forward_char(): return end_iter if end_iter.ends_line() and next_iter.ends_line(): return end_iter end_iter.forward_char() def _start_of_url(self): """ Look for a continuous sequence of characters in a single line that might be a url. Word marker is \n \t or space. Returns a TextBuffer iterator. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] cursor_mark = self.textBuffer.get_insert() start_iter = self.textBuffer.get_iter_at_mark(cursor_mark) this_char = start_iter.get_char() if this_char == ' ' or this_char == '\t' or this_char == '\n': return start_iter while 1: if start_iter.starts_line(): return start_iter if not start_iter.backward_char(): return start_iter this_char = start_iter.get_char() if this_char == ' ' or this_char == '\t' or this_char == '\n': start_iter.forward_char() return start_iter def _end_of_url(self): """ Word marker is \n \t or space """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] cursor_mark = self.textBuffer.get_insert() end_iter = self.textBuffer.get_iter_at_mark(cursor_mark) next_char = end_iter.get_char() if next_char == ' ' or next_char == '\t' or next_char == '\n': return end_iter while 1: if end_iter.ends_line(): return end_iter if not end_iter.forward_char(): return end_iter next_char = end_iter.get_char() if next_char == ' ' or next_char == '\t' or next_char == '\n': return end_iter def do_format_paragraph(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] text_formatter=self.client.get_string(self.text_formatter_path) r = text_formatter.find(" ") if r: bin = text_formatter[0:r] else: bin = text_formatter if os.system("type %s >/dev/null 2>&1" % bin): self.err_msg(_("External formatter \"%s\" is not installed - can't format") % bin) return start_iter = self._start_of_para() end_iter = self._end_of_para() para = self.textBuffer.get_text(start_iter, end_iter) t = pipes.Template() if text_formatter.find("%d") >= 0: runstring = text_formatter % self.client.get_int(self.line_length_path) else: runstring = text_formatter t.append(runstring, "--") scratch = tempfile.mktemp() f = t.open(scratch, "w") f.write(para) f.close() para = open(scratch, "r").read() if para and para[-1] == '\n': para = para[0:-1] if self.debug: print ("\"%s\"\n" % para) self.textBuffer.place_cursor(start_iter) self.textBuffer.delete(start_iter, end_iter) self.textBuffer.insert(start_iter, para, len(para)) # move to next para: if start_iter.forward_char(): start_iter.forward_char() self.textBuffer.place_cursor(start_iter) os.unlink(scratch) return def do_time_stamp(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] format = self.client.get_string(self.date_format_path) newstring = time.strftime(format) self.textBuffer.insert_at_cursor(newstring, len(newstring)) return def update_find_entry(self): # Potential for wonderful infinite loops here? if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] m = self.gui_get_widget("menubar_find_entry") if not m: # glade2 m = self.gui_get_widget("menubar_find_combobox") if m: m = m.child if m: m.set_text(self.client.get_string(self.find_text_path)) if self.find_dialog: self.find_dialog.update_find_entry() def on_gconf_find_text_changed(self, client, cnxn_id, entry, label): return 0 if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "find_text=", self.client.get_string(self.find_text_path) self.update_find_entry() return def on_gjots_focus_out_event(self, arg1, arg2): signal.alarm(0) if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.client.get_int(self.auto_save_interval_path) > 0: self._do_save(reuse_password = 1) timeout = self.client.get_int(self.auto_read_only_timeout_path) if timeout > 0: signal.signal(signal.SIGALRM, _alarm_handler) signal.alarm(timeout) self.alarm_set = timeout def on_combobox_changed(self, combobox): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] s = combobox.get_active_text() self.client.set_string(self.find_text_path, s) return 0 def on_gconf_text_font_changed(self, client, cnxn_id, entry, label): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "text_font=", client.get_string(self.text_font_path) font_desc = pango.FontDescription(self.client.get_string(self.text_font_path)) self.textView.modify_font(font_desc) return def on_gconf_top_toolbar_changed(self, client, cnxn_id, entry, label): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] value = self.client.get_bool(self.top_toolbar_path) w = self.gui_get_widget("topToolbar") if w: if value: w.show() else: w.hide() # how come this doesn't create an infinite loop - doesn't the # GtkMenuChecklist item get a notification? w = self.gui_get_widget("topToolbarCheckMenuItem") if w: w.set_active(value) return def on_gconf_side_toolbar_changed(self, client, cnxn_id, entry, label): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] value = self.client.get_bool(self.side_toolbar_path) w = self.gui_get_widget("treeToolbar") if w: if value: w.show() else: w.hide() # how come this doesn't create an infinite loop - doesn't the # GtkMenuChecklist item get a notification? w = self.gui_get_widget("treeToolbarCheckMenuItem") if w: w.set_active(value) return def on_gconf_show_icon_text_changed(self, client, cnxn_id, entry, label): if self.client.get_bool(self.show_icon_text_path): self.gui_get_widget("topToolbar").set_style(gtk.TOOLBAR_BOTH) self.gui_get_widget("treeToolbar").set_style(gtk.TOOLBAR_BOTH) else: self.gui_get_widget("topToolbar").set_style(gtk.TOOLBAR_ICONS) self.gui_get_widget("treeToolbar").set_style(gtk.TOOLBAR_ICONS) self.gui_get_widget("showIconTextCheckMenuItem").set_active(self.client.get_bool(self.show_icon_text_path)) return def on_gconf_status_bar_changed(self, client, cnxn_id, entry, label): if self.client.get_bool(self.status_bar_path): self.gui_get_widget("appbar").show() else: self.gui_get_widget("appbar").hide() self.gui_get_widget("statusBarMenuItem").set_active(self.client.get_bool(self.status_bar_path)) return def on_gconf_pane_position_changed(self, client, cnxn_id, entry, label): self.gui_get_widget("treeTextPane").set_position(client.get_int(self.pane_position_path)) return def _setup_gconf(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.base_path = "/apps/" + self.progName self.line_length_path = self.base_path + "/line_length" self.auto_save_interval_path = self.base_path + "/autoSaveInterval" self.auto_read_only_timeout_path = self.base_path + "/autoReadOnlyTimeout" self.text_formatter_path = self.base_path + "/text_formatter" self.external_editor_path = self.base_path + "/external_editor" self.date_format_path = self.base_path + "/date_format" self.text_font_path = self.base_path + "/text_font" self.top_toolbar_path = self.base_path + "/top_toolbar" self.side_toolbar_path = self.base_path + "/side_toolbar" self.show_icon_text_path = self.base_path + "/show_icon_text" self.status_bar_path = self.base_path + "/status_bar" self.pane_position_path = self.base_path + "/pane_position" self.initialised_path = self.base_path + "/initialised" self.find_text_path = self.base_path + "/find_text" self.replace_text_path = self.base_path + "/replace_text" self.find_match_case_path = self.base_path + "/find_match_case" self.find_global_path = self.base_path + "/find_global" self.find_regex_path = self.base_path + "/find_regex" self.find_backwards_path = self.base_path + "/find_backwards" self.width_path = self.base_path + "/width" self.height_path = self.base_path + "/height" self.print_page_path = self.base_path + "/print_page" self.print_selection_path = self.base_path + "/print_selection" self.print_all_path = self.base_path + "/print_all" self.print_command_path = self.base_path + "/print_command" self.print_page_feed_path = self.base_path + "/print_page_feed" self.print_bold_title_path = self.base_path + "/print_bold_title" self.sort_ascending_path = self.base_path + "/sort_ascending" self.sort_alpha_path = self.base_path + "/sort_alpha" self.sort_items_path = self.base_path + "/sort_items" self.sort_sublevels_path = self.base_path + "/sort_sublevels" self.client = gconf.client_get_default() self.client.add_dir(self.base_path, gconf.CLIENT_PRELOAD_NONE) # handle startup defaults: if not self.client.get_int(self.line_length_path): self.client.set_int(self.line_length_path, 70) if not self.client.get_int(self.auto_save_interval_path): self.client.set_int(self.auto_save_interval_path, 0) if not self.client.get_int(self.auto_read_only_timeout_path): self.client.set_int(self.auto_read_only_timeout_path, 0) if not self.client.get_string(self.text_formatter_path): self.client.set_string(self.text_formatter_path, "fmt -w %d") if not self.client.get_string(self.print_command_path): self.client.set_string(self.print_command_path, "gjots2lpr $1") if not self.client.get_string(self.external_editor_path): if os.system("type gedit >/dev/null 2>&1") == 0: self.client.set_string(self.external_editor_path, "gedit %s") elif os.system("type nedit >/dev/null 2>&1") == 0: self.client.set_string(self.external_editor_path, "nedit %s") elif os.system("type xedit >/dev/null 2>&1") == 0: self.client.set_string(self.external_editor_path, "xedit %s") else: self.client.set_string(self.external_editor_path, "xterm -e vi %s") if not self.client.get_string(self.date_format_path): self.client.set_string(self.date_format_path, "%F" ) if not self.client.get_string(self.text_font_path): self.client.set_string(self.text_font_path, "Courier 10 Pitch 10") if not self.client.get_string(self.find_text_path): self.client.set_string(self.find_text_path, "") for i in range(0, self.combobox_max_lines_to_save): if not self.client.get_string(self.find_text_path + str(i)): self.client.set_string(self.find_text_path + str(i), "") if not self.client.get_string(self.replace_text_path): self.client.set_string(self.replace_text_path, "") if not self.client.get_int(self.pane_position_path): self.client.set_int(self.pane_position_path, 211) font_desc = pango.FontDescription(self.client.get_string(self.text_font_path)) self.textView.modify_font(font_desc) if not self.client.get_int(self.sort_sublevels_path): self.client.set_int(self.sort_sublevels_path, 1) # There is no get_bool_with_default() so we have to test for first invocation: if not self.client.get_bool(self.initialised_path): print _("not initialised") self.client.set_bool(self.top_toolbar_path, 1) self.client.set_bool(self.side_toolbar_path, 1) self.client.set_bool(self.show_icon_text_path, 0) self.client.set_bool(self.initialised_path, 1) self.client.set_bool(self.find_match_case_path, 0) self.client.set_bool(self.find_global_path, 0) self.client.set_bool(self.find_regex_path, 0) self.client.set_bool(self.find_backwards_path, 0) self.client.set_bool(self.print_page_path, 1) self.client.set_bool(self.print_selection_path, 0) self.client.set_bool(self.print_all_path, 0) self.client.set_bool(self.print_page_feed_path, 0) self.client.set_bool(self.print_bold_title_path, 0) self.client.set_bool(self.sort_ascending_path, 1) self.client.set_bool(self.sort_alpha_path, 1) self.client.set_bool(self.sort_items_path, 1) self.on_gconf_top_toolbar_changed(self.client, 0, 0, 0) self.on_gconf_side_toolbar_changed(self.client, 0, 0, 0) self.on_gconf_show_icon_text_changed(self.client, 0, 0, 0) self.on_gconf_status_bar_changed(self.client, 0, 0, 0) self.on_gconf_pane_position_changed(self.client, 0, 0, 0) # setup notifiers: self.global_find_index = 0 self.client.notify_add(self.find_text_path, self.on_gconf_find_text_changed, self.gjots) self.client.notify_add(self.text_font_path, self.on_gconf_text_font_changed, self.gjots) self.client.notify_add(self.top_toolbar_path, self.on_gconf_top_toolbar_changed, self.gjots) self.client.notify_add(self.side_toolbar_path, self.on_gconf_side_toolbar_changed, self.gjots) self.client.notify_add(self.show_icon_text_path, self.on_gconf_show_icon_text_changed, self.gjots) self.client.notify_add(self.status_bar_path, self.on_gconf_status_bar_changed, self.gjots) self.client.notify_add(self.pane_position_path, self.on_gconf_pane_position_changed, self.gjots) return def _create_empty_tree(self): # create an empty tree: if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gjotsfile = gjotsfile(self) self.flush_tree() self.new_node(None, None, self.progName, "") self.show_tree(self.progName) def flush_tree(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.treestore = gtk.TreeStore( gobject.TYPE_STRING, # title == first line of body except for root, which is filename gobject.TYPE_STRING, # body gobject.TYPE_INT) # body_temp_flag - used after creating new items def set_title(self, basename): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() self.gjots.set_title(self.progName + ": %s" % basename) def show_tree(self, basenanme): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() # remove the old column, if there: column = self.treeView.get_column(0) if column: self.treeView.remove_column(column) self.treeView.set_model(self.treestore) renderer = gtk.CellRendererText() column = gtk.TreeViewColumn(self.progName, renderer, text=0) self.column = column self.treeView.append_column(column) self.set_title(basenanme) self.treeView.get_selection().set_mode(gtk.SELECTION_MULTIPLE) self.treeView.show() return def get_node_value(self, treeiter): "Get the text value of the node at location 'treeiter'" if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.treestore.get_value(treeiter, 1) def get_node_title(self, treeiter): "Get the title value of the node at location 'treeiter'" if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] body = self.treestore.get_value(treeiter, 1) eol = body.find("\n") if eol >= 0: title = body[0:eol] else: title = body return title def get_first_child(self, treeiter): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.treestore.iter_nth_child(treeiter, 0) def get_root(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.treestore.get_iter_first() def get_next(self, treeiter): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.treestore.iter_next(treeiter) def _get_deepest_child(self, iter): """ if current has no children return it. Otherwise recurse down the tree and return the last (deepest) child """ while 1: num_children = self.treestore.iter_n_children(iter) if num_children == 0: return iter iter = self.treestore.iter_nth_child(iter, num_children - 1) def get_linear_prev(self, iter): """ Get the previous tree item - if current has a previous sibling, return its last (deepest) child. If no more siblings, get the last (deepest) child of the previous sibling of the parent. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] prev = self._iter_prev(iter) if prev: return self._get_deepest_child(prev) while iter: iter = self.treestore.iter_parent(iter) if not iter: return None prev = self._iter_prev(iter) if prev: return self._get_deepest_child(prev) return iter def get_linear_next(self, iter): """ Get the very next tree item - if current has a child, return it. Otherwise, return the next sibling. If no more siblings, get the next sibling of the parent recursively. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] next = self.treestore.iter_children(iter) if next: return next next = self.treestore.iter_next(iter) if next: return next while iter: iter = self.treestore.iter_parent(iter) if not iter: return None next = self.treestore.iter_next(iter) if next: return next return iter def new_node(self, parent, sibling, title, body): # bit too verbose to trace: #if self.debug: # print inspect.getframeinfo(inspect.currentframe())[2], vars() if sibling: treeiter = self.treestore.insert_after(parent, sibling) else: treeiter = self.treestore.insert_before(parent, None) # None means insert at end! self.treestore.set_value(treeiter, 0, title) self.treestore.set_value(treeiter, 1, body) self.treestore.set_value(treeiter, 2, 0) # temp_flag return treeiter def _do_new_page(self): """ Inserts a new blank item into the tree after the last one selected. Make the new item the selection. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] sibling = self.get_last_selected_iter() if not sibling or self.same_iter(sibling, self.get_root()): # nothing selected or tree is empty or root is selected - insert at end parent = self.get_root() newnode = self.treestore.insert_before(parent, None) else: parent = self.treestore.iter_parent(sibling) newnode = self.treestore.insert_after(parent, sibling) self.treestore.set_value(newnode, 0, self.temp_text) self.treestore.set_value(newnode, 1, self.temp_text) self.treestore.set_value(newnode, 2, 1) # body is temporary # Make sure new item is visible: # self.treeView.expand_to_path(self.treestore.get_path(newnode)) ... not in pygtk-2.0 parent_path = self.treestore.get_path(parent) self.treeView.expand_row(parent_path, 0) # narrow the selection to the new item: self._warp(newnode) # Now put the cursor into the right place self.textView.grab_focus() self._set_dirtyflag() def _do_new_child(self): """ Inserts a new blank item as a child of the last one selected. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self._set_dirtyflag() parent = self.get_last_selected_iter() if not parent: # nothing selected or tree is empty - just add an new page self._do_new_page() return new_child = self.treestore.insert_before(parent, None) self.treestore.set_value(new_child, 0, self.temp_text) self.treestore.set_value(new_child, 1, self.temp_text) self.treestore.set_value(new_child, 2, 1) # body is temporary # Make sure new item is visible: parent_path = self.treestore.get_path(parent) self.treeView.expand_row(parent_path, 0) # narrow the selection to the new child: self._warp(new_child) # Now put the cursor into the right place self.textView.grab_focus() def _do_move_up(self): """ Move the current selection before the first's sibling, if any. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return parent = self.treestore.iter_parent(first_selected) if not parent: self.msg(_("No parent!")) return this = self.treestore.iter_children(parent) # returns first sibling of first_selected if not this: self.msg(_("No child!")) return if self.same_iter(this, first_selected): # we're at the end of this level - see if we can push into # the parents prev sibling: new_parent = self._iter_prev(parent) if not new_parent: self.msg(_("Can't go any further")) return this = first_selected new_selection_start = new_selection_end = None while this: if not self.treeView.get_selection().iter_is_selected(this): break next = self.treestore.iter_next(this) new_selection_end = self._copy_subtree(self.treestore, this, self.treestore, new_parent, -1) if not new_selection_start: new_selection_start = new_selection_end self.treestore.remove(this) self._set_dirtyflag() this = next parent_path = self.treestore.get_path(new_parent) self.treeView.expand_row(parent_path, 0) self._select_range(new_selection_start, new_selection_end) return # scan the siblings until we get to the first_selected: while (this): next = self.treestore.iter_next(this) if not next: self.msg(_("Internal error!")) return if self.same_iter(next, first_selected): pivot = this # now scan again, this time looking for selected items and moving before pivot this = self.treestore.iter_children(parent) # returns first child while this: if self.treeView.get_selection().iter_is_selected(this): self.treestore.move_before(this, pivot) # gtk 2.2 only this = self.treestore.iter_next(this) self._set_dirtyflag() return this = next def _copy_subtree(self, from_treestore, from_iter, to_treestore, to_iter, position): """ position = 0 means to the start position =-1 means to the end position = otherwise _before_ that position """ title = from_treestore.get_value(from_iter, 0) text = from_treestore.get_value(from_iter, 1) if (type(position) == type(to_iter)): new = to_treestore.insert_before(to_iter, position) else: if position == -1: position = to_treestore.iter_n_children(to_iter) + 1 new = to_treestore.insert(to_iter, position) to_treestore.set_value(new, 0, title) to_treestore.set_value(new, 1, text) this = from_treestore.iter_nth_child(from_iter, 0) while this: self._copy_subtree(from_treestore, this, to_treestore, new, -1) this = from_treestore.iter_next(this) return new def _select_range(self, start, end): # temporarily disconnect selection updating as structure is unstable (bug 1250753): self.treeView.get_selection().disconnect(self.on_tree_selection_changed_handler) self.treeView.get_selection().select_range(self.treestore.get_path(start), self.treestore.get_path(end)) # disabled, so we also need to manually set self.current_item!): self.current_item = start self.on_tree_selection_changed_handler = self.treeView.get_selection().connect("changed", self.on_tree_selection_changed) def _do_move_down(self): """ Move the current selection after the last's sibling, if any. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return parent = self.treestore.iter_parent(last_selected) if not parent: self.msg(_("No parent!")) return pivot = self.treestore.iter_next(last_selected) if not pivot: # we're at the end of this level - see if we can push into # the parents next sibling: new_parent = self.treestore.iter_next(parent) if not new_parent: self.msg(_("Can't go any further")) return this = last_selected new_selection_start = new_selection_end = None while this: prev = self._iter_prev(this) if self.same_iter(this, first_selected): prev = None new_selection_start = self._copy_subtree(self.treestore, this, self.treestore, new_parent, 0) if not new_selection_end: new_selection_end = new_selection_start self.treestore.remove(this) self._set_dirtyflag() this = prev parent_path = self.treestore.get_path(new_parent) self.treeView.expand_row(parent_path, 0) self._select_range(new_selection_start, new_selection_end) return # now scan siblings looking for selected items and moving after pivot this = self.treestore.iter_children(parent) # returns first sibling of last_selected if not this: self.msg(_("No child!")) return while this: next = self.treestore.iter_next(this) if self.treeView.get_selection().iter_is_selected(this): self.treestore.move_after(this, pivot) # gtk 2.2 only self._set_dirtyflag() this = next def _do_move_left(self): """ "Promote" - selection becomes a sibling of its parent - treestore.move_after() only operates within one level so we can't use it here - instead, it looks like we have to write all items out to disc and then read them back in at the right position. Sigh. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return parent = self.treestore.iter_parent(last_selected) if not parent: self.msg(_("No parent!")) return grandparent = self.treestore.iter_parent(parent) if not grandparent: self.msg(_("Can't go further!")) return # temporarily disconnect selection updating as structure is unstable (bug 1250753): self.treeView.get_selection().disconnect(self.on_tree_selection_changed_handler) f = tempfile.TemporaryFile() this = first_selected while this: next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = None self.gjotsfile.writeItem(f, this, 0) if not self.treestore.remove(this): # returns false if at end next = None this = next f.seek(0, 0) last_selected = self.gjotsfile.readItem(f, start=parent, parent=grandparent) # Now, reselect the items (on_tree_selection_changed is # disabled, so we also need to manually set self.current_item!): self.current_item = None this = self.treestore.iter_next(parent) while this: if not self.current_item: self.current_item = this next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = None self.treeView.get_selection().select_iter(this) this = next self.on_tree_selection_changed_handler = self.treeView.get_selection().connect("changed", self.on_tree_selection_changed) self._set_dirtyflag() def _do_move_right(self): """ "Demote" - selected items become children of the previous item, if any. treestore.move_after() only operates within one level so we can't use it here - instead, it looks like we have to write all items out to disc and then read them back in at the right position. Sigh. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return parent = self.treestore.iter_parent(last_selected) if not parent: self.msg(_("No parent!")) return newParent = self.treestore.iter_children(parent) # returns first sibling of selected items if self.same_iter(first_selected, newParent): # create a new node for this lot to sit under: newParent = self.treestore.insert_after(parent, None) self.treestore.set_value(newParent, 0, self.temp_text) self.treestore.set_value(newParent, 1, self.temp_text) self.treestore.set_value(newParent, 2, 1) # temp_flag else: # scan forward for prior item: while newParent: next = self.treestore.iter_next(newParent) if self.same_iter(next, first_selected): break; newParent = next if not newParent: self.msg(_("Internal error!")) return # write out items to temporary file: f = tempfile.TemporaryFile() this = first_selected # temporarily disconnect selection updating as structure is unstable (bug 1250753): self.treeView.get_selection().disconnect(self.on_tree_selection_changed_handler) while this: next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = None self.gjotsfile.writeItem(f, this, 0) if not self.treestore.remove(this): # returns false if no more items next = None this = next # Now read them into the right place: f.seek(0, 0) # what is last item in newParent? Used to compute new selection. last_item = None num_children = self.treestore.iter_n_children(newParent) if num_children > 0: last_item = self.treestore.iter_nth_child(newParent, num_children - 1) # read into end of newParent last_selected = self.gjotsfile.readItem(f, None, newParent) # make sure new parent is visible: parent_path = self.treestore.get_path(newParent) self.treeView.expand_row(parent_path, 0) # Now, reselect the items (on_tree_selection_changed is # disabled, so we also need to manually set self.current_item!): if last_item: this = self.treestore.iter_next(last_item) else: this = self.treestore.iter_children(newParent) self.current_item = None while this: if not self.current_item: self.current_item = this next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = None self.treeView.get_selection().select_iter(this) this = next self.on_tree_selection_changed_handler = self.treeView.get_selection().connect("changed", self.on_tree_selection_changed) self._set_dirtyflag() def _new_tree_cut_buffer(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] # TODO: How do I enable/disable the paste button for both tree and # text operations??? #self._disable_tree_paste() if not self.readonly: self.tree_cutbuffer = gtk.TreeStore( gobject.TYPE_STRING, # title == first line of body except for root, which is filename gobject.TYPE_STRING, # body gobject.TYPE_INT) # body_temp_flag - used after creating new items # create a root: self.tree_cutbuffer_root = self.tree_cutbuffer.insert(None, 0) def _iter_prev(self, this): """ This is not provided by gtk2 !! This is the obvious implementation but it doesn't work - this_path.prev() barfs with: AttributeError: 'tuple' object has no attribute 'prev' this_path = self.treestore.get_path(this) if this_path.prev(): return self.treestore.get_iter(this_path) else: return None """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if not this: return None parent = self.treestore.iter_parent(this) if not parent: self.msg(_("No parent!")) return iter = self.treestore.iter_children(parent) if iter == None or self.same_iter(iter, this): return None while iter: next = self.treestore.iter_next(iter) if not next: return None if self.same_iter(next, this): return iter iter = next return None def get_selected_text(self): """ Returns (text, insert, selection_bound) """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] insert = self.textBuffer.get_iter_at_mark(self.textBuffer.get_insert()) selection_bound = self.textBuffer.get_iter_at_mark(self.textBuffer.get_selection_bound()) if insert and selection_bound: return (self.textBuffer.get_text(insert, selection_bound), insert, selection_bound) else: return (None, None, None) def _do_text_cut(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") text, insert, select_bound = self.get_selected_text() if text and len(text): if self.clipboard: self.textBuffer.cut_clipboard(self.clipboard, self.textView.get_editable()) self.msg(_("Text cut")) return def _do_text_copy(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") text, insert, select_bound = self.get_selected_text() if text and len(text): if self.clipboard: self.textBuffer.copy_clipboard(self.clipboard) self.msg(_("Text copied")) return def _do_text_paste(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if not self.readonly: self.msg("") if self.clipboard: cursor_mark = self.textBuffer.get_insert() insert_iter = self.textBuffer.get_iter_at_mark(cursor_mark) self.textBuffer.paste_clipboard(self.clipboard, insert_iter, self.textView.get_editable()) self.msg(_("Text pasted")) return def _do_text_select_all(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.textBuffer.select_range(self.textBuffer.get_start_iter(), self.textBuffer.get_end_iter()) self.msg(_("All text selected")) return def _do_tree_select_all(self): self.msg("") self.treeView.get_selection().select_all() self.msg(_("All tree items selected")) def _do_split_item(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") body, start_iter, end_iter = self.get_selected_text() if not body: self.msg(_("Nothing selected!")) return self.textBuffer.delete(start_iter, end_iter) self.sync_text_buffer() eol = body.find("\n") if eol >= 0: title = body[0:eol] else: title = body self._do_new_page() self.textBuffer.insert_at_cursor(body, len(body)) self._set_dirtyflag() return def _do_merge_items(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return if self.same_iter(first_selected, self.get_root()): self.msg(_("Can't merge the root item")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return if self.same_iter(first_selected, last_selected): self.msg(_("Nothing to merge")) return # First, make sure nothing has a child: this = first_selected while this: if self.treestore.iter_children(this): self.msg(_("Can't merge items that have children")) return if self.same_iter(this, last_selected): break this = self.treestore.iter_next(this) # Copy the text into the first one selected: this = first_selected count = 0 this = self.treestore.iter_next(this) while this: count = count + 1 body = self.treestore.get_value(first_selected, 1) + "\n" + self.get_node_value(this) self.treestore.set_value(first_selected, 1, body) if self.same_iter(this, last_selected): break this = self.treestore.iter_next(this) # Now delete all except the first one selected: this = first_selected this = self.treestore.iter_next(this) while this: next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = 0 if not self.treestore.remove(this): # returns false if no more items break this = next self._set_dirtyflag() self.msg(_("%d items merged") % count) return def _show_all(self, item): """ Recursively open child below this point. """ if not item: return child = self.treestore.iter_children(item) if not child: return path = self.treestore.get_path(item) self.treeView.expand_row(path, 0) while child: self._show_all(child) child = self.get_next(child) def _do_show_all(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") if self.current_item: self._show_all(self.current_item) return def _do_hide_all(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.treeView.collapse_all() item = self.get_root() path = self.treestore.get_path(item) self.treeView.expand_row(path, 0) return def _do_tree_cut(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.readonly: return self.msg("") first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return if self.same_iter(first_selected, self.get_root()): self.msg(_("Can't delete the root item")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return new_selection = self.treestore.iter_next(last_selected) if not new_selection: new_selection = self._iter_prev(first_selected) if not new_selection: new_selection = self.treestore.iter_parent(first_selected) self._new_tree_cut_buffer() this = first_selected count = 0 while this: count = count + 1 next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = None self._copy_subtree( self.treestore, this, self.tree_cutbuffer, self.tree_cutbuffer_root, -1) if not self.treestore.remove(this): # returns false if no more items next = None this = next #self._enable_tree_paste() if new_selection: self.treeView.get_selection().select_iter(new_selection) self._set_dirtyflag() self.msg(_("%d tree items cut") % count) def _do_tree_copy(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return self._new_tree_cut_buffer() this = first_selected count = 0 while this: count = count + 1 next = self.treestore.iter_next(this) if self.same_iter(this, last_selected): next = None self._copy_subtree( self.treestore, this, self.tree_cutbuffer, self.tree_cutbuffer_root, -1) this = next #self._enable_tree_paste() self.msg(_("%d tree items copied") % count) def _do_tree_paste(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.readonly: return self.msg("") if not self.tree_cutbuffer: self.msg(_("Nothing to paste")) return last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return parent = self.treestore.iter_parent(last_selected) if not parent: self.msg(_("No parent!")) return this = self.tree_cutbuffer.iter_children(self.tree_cutbuffer_root) while this: last_selected = self._copy_subtree(self.tree_cutbuffer, this, self.treestore, parent, last_selected) this = self.treestore.iter_next(this) self._set_dirtyflag() self.msg(_("Tree items pasted")) def _do_external_edit(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") first_selected = self.get_first_selected_iter() if not first_selected: self.msg("Nothing selected") return self.sync_text_buffer() body = self.get_node_value(first_selected) if not body: return scratch = tempfile.mktemp() try: f = open(scratch, "w") f.write(body) f.close() except IOError: self.msg(_("Can't write ") + scratch) os.unlink(scratch) return external_editor = self.client.get_string(self.external_editor_path) if external_editor.find("%s") >= 0: ext_ed_string = (external_editor % scratch) else: ext_ed_string = (external_editor + " %s" % scratch) if os.system(ext_ed_string) != 0: self.err_msg(_("Can't run '%s'") % ext_ed_string) os.unlink(scratch) return try: f = open(scratch, "r") newbody = ''.join(f.readlines()) f.close() os.unlink(scratch) except: self.msg(_("Can't read ") + scratch) f.close() os.unlink(scratch) return if newbody != body: self.textBuffer.set_text(newbody, len(newbody)) self.current_dirty = 1 self._set_dirtyflag() self.msg(_("text changed by external editor")) else: self.msg(_("text not changed by external editor")) def msg(self, message): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() # print "msg: \"" + message + "\"" # this optimisation really speeds up typing in the textbuffer - gui.msg("") is called for every keystroke message = self.dirtyflag + message if message == self.last_message: return self.appbar.pop(self.appbar.get_context_id("main")) self.appbar.push(self.appbar.get_context_id("main"), message) self.last_message = message def err_msg(self, message): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() general = general_dialog(self, self.progName + _(": Error"), message, OK) def set_readonly(self, readonly, quietly): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if readonly: self.gjotsfile.unlock_file(self.gjotsfile.filename) else: failed, pid = self.gjotsfile.lock_file("") if failed: readonly = 1 if not quietly: self.err_msg(_("Can't lock file %s: already locked by process %d") % (self.gjotsfile.filename, pid)) self.readonly = readonly writeable = not readonly if writeable: self._enable_tree_paste() else: self._disable_tree_paste() w = self.gui_get_widget("cutButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("pasteButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("wrapButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("externalEditButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("timeStampButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("newChildButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("newPageButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("upButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("downButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("promoteButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("demoteButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("saveButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("sortTreeButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("importMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("saveMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("newPageMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("upMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("downMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("newChildMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("promoteMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("demoteMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("undoMenuItem") if self.has_gtksourceview: w.set_sensitive(writeable) else: w.set_sensitive(0) w = self.gui_get_widget("redoMenuItem") if self.has_gtksourceview: w.set_sensitive(writeable) else: w.set_sensitive(0) w = self.gui_get_widget("cutMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("pasteMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("formatMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("externalEditMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("timeStampMenuItem") w.set_sensitive(writeable) w = self.gui_get_widget("splitItemButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("mergeItemsButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("sortButton") if writeable: w.show() else: w.hide() w = self.gui_get_widget("splitItemMenuItem") if writeable: w.show() else: w.hide() w = self.gui_get_widget("mergeItemsMenuItem") if writeable: w.show() else: w.hide() w = self.gui_get_widget("sortTreeMenuItem") if writeable: w.show() else: w.hide() w = self.gui_get_widget("sortTextMenuItem") if writeable: w.show() else: w.hide() self.textView.set_editable(writeable) if self.builder: self.gui_get_widget("cutContextMenuItem").set_sensitive(writeable) self.gui_get_widget("pasteContextMenuItem").set_sensitive(writeable) self.gui_get_widget("newPageContextMenuItem").set_sensitive(writeable) self.gui_get_widget("newChildContextMenuItem").set_sensitive(writeable) self.gui_get_widget("upContextMenuItem").set_sensitive(writeable) self.gui_get_widget("downContextMenuItem").set_sensitive(writeable) self.gui_get_widget("promoteContextMenuItem").set_sensitive(writeable) self.gui_get_widget("demoteContextMenuItem").set_sensitive(writeable) self.gui_get_widget("mergeItemsContextMenuItem").set_sensitive(writeable) self.gui_get_widget("sortTreeContextMenuItem").set_sensitive(writeable) self.gui_get_widget("importContextMenuItem").set_sensitive(writeable) else: self.treeContextMenu_xml.get_widget("cutContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("pasteContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("newPageContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("newChildContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("upContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("downContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("promoteContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("demoteContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("mergeItemsContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("sortTreeContextMenuItem").set_sensitive(writeable) self.treeContextMenu_xml.get_widget("importContextMenuItem").set_sensitive(writeable) # Need to disconnect temporarily to prevent looping: self.readOnly_widget.disconnect(self.readOnly_handler) self.readOnly_widget.set_active(not writeable) self.readOnly_handler = self.readOnly_widget.connect("activate", self.on_readOnly_trigger) def _enable_tree_paste(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] w = self.gui_get_widget("pasteButton") w.set_sensitive(1) def _disable_tree_paste(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] w = self.gui_get_widget("pasteButton") w.set_sensitive(0) def _save_if_dirty(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.debug: print "_save_if_dirty" if self.dirtyflag: general = general_dialog(self, self.progName + _(": Save?"), _("Save current work?"), YES|NO|CANCEL, 0, 0, "", "", "", "", "") if general.get_value() == CANCEL: return CANCEL if general.get_value() == OK: if self.gjotsfile.write_file(prompt="", exporting=0): self.dirtyflag = "" return OK # File menu callbacks: def on_new_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.sync_text_buffer() if self._save_if_dirty() == CANCEL: return self._create_empty_tree() self.dirtyflag = "" self.msg(_("New file")) def on_open_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self._do_open(None) def on_recent_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] uri = widget.get_current_item().get_uri() # Strip 'file://' from the beginning of the uri file_to_open = uri[7:] self._do_open(file_to_open) def _do_open(self, file_to_open): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() if self._save_if_dirty() == CANCEL: return self.gjotsfile.close() # does python have a destructor mechanism? self.gjotsfile = gjotsfile(self) if self.gjotsfile.read_file(_("Open file ..."), file_to_open, self.readonly, import_after=None): self.dirtyflag = "" self._do_goto_root() self._do_tree_selection_changed() def _do_save(self, reuse_password = 0): signal.alarm(0) self.alarm_set = 0 if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() if not self.dirtyflag: self.msg(_("No changes to save")) return if self.gjotsfile.write_file(prompt="", exporting=0, reuse_password=reuse_password): self.dirtyflag = "" self.msg(_("Saved.")) else: self.msg(_("Not saved.")) return def on_save_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self._do_save() def on_saveAs_trigger(self, widget): signal.alarm(0) self.alarm_set = 0 if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() if not self.gjotsfile: self.msg(_("Nothing to save")) return if self.gjotsfile.write_file(_("Save as ..."), exporting=0): self.dirtyflag = "" self.msg(_("Saved.")) else: self.msg(_("Not saved.")) return def on_import_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.sync_text_buffer() self.msg("") import_after = self.get_last_selected_iter() if import_after: if self.gjotsfile.read_file(_("Import from ..."), None, 1, import_after): self._set_dirtyflag() else: self.msg(_("Nothing selected")) return def on_export_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.sync_text_buffer() self.msg("") self.gjotsfile.write_file(_("Export to ..."), exporting=1) return def on_print_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") # TODO: Which line is the right one??? #print_dialog(self) print_d = print_dialog(self) def on_readOnly_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.set_readonly(self.readOnly_widget.get_active(), quietly=0) return def on_quit_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() if self._save_if_dirty() == CANCEL: return gtk.TRUE self._wrangle_geometry() self.gjotsfile.close() # Save the paned widget position self.client.set_int(self.pane_position_path, self.gui_get_widget("treeTextPane").get_position()) gtk.main_quit() def delete_event(self, widget, event, data=None): """ Delete event signal sent by closing the gjots window through the window manager. This takes a different number of arguments than the quit signal emitted by a menu or button, so this method simply wraps the main 'on_quit_trigger'. """ return self.on_quit_trigger(widget) # Edit menu callbacks: def on_undo_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") if self.textView.is_focus(): self.textBuffer.undo() def on_redo_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") if self.textView.is_focus(): self.textBuffer.redo() def on_cut_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.readonly: return self.msg("") self.sync_text_buffer() if self.textView.is_focus(): self._do_text_cut() elif self.treeView.is_focus(): self._do_tree_cut() def on_copy_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.sync_text_buffer() if self.textView.is_focus(): self._do_text_copy() elif self.treeView.is_focus(): self._do_tree_copy() def on_paste_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.readonly: return self.msg("") if self.textView.is_focus(): self._do_text_paste() elif self.treeView.is_focus(): self._do_tree_paste() def on_selectAll_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") if self.textView.is_focus(): self._do_text_select_all() elif self.treeView.is_focus(): self._do_tree_select_all() def on_find_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.find_dialog = find_dialog(self) def on_findAgain_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.client.set_bool(self.find_backwards_path, 0) w = self.gui_get_widget("menubar_find_entry") if not w: # glade2 w = self.gui_get_widget("menubar_find_combobox") if w: w = w.child if w: w.select_region(0, -1) w.grab_focus() if self.find_next(): self.msg("Found") else: self.msg("Not found") def on_findAgainBackwards_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.client.set_bool(self.find_backwards_path, 1) w = self.gui_get_widget("menubar_find_entry") if not w: # glade2 w = self.gui_get_widget("menubar_find_combobox") if w: w = w.child if w: w.select_region(0, -1) w.grab_focus() if self.find_next(): self.msg("Found") else: self.msg("Not found") def on_menubar_find_entry_icon_press(self, widget, icon_pos, event): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "icon_pos=", icon_pos # on_menubar_find_entry_changed() should be enough: #self.client.set_string(self.find_text_path, widget.get_text()) # this doesn't seem to be needed, which is good because i # can't see how to stop the extra search: send activate signal # to combo so that text gets put on the stack: # widget.emit("activate") if icon_pos == gtk.ENTRY_ICON_PRIMARY: self.on_findAgainBackwards_trigger(widget) else: self.on_findAgain_trigger(widget) def on_menubar_find_entry_changed(self, widget): # glade-3 only: if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "changed to: " + widget.get_text() self.client.set_string(self.find_text_path, widget.get_text()) def on_menubar_find_entry_activate(self, widget): # glade-3 only: if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] # on_menubar_find_entry_changed() should be enough: #self.client.set_string(self.find_text_path, widget.get_text()) if self.find_next(): self.msg("Found") else: self.msg("Not found") # View menu callbacks: def on_topToolbarCheck_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") w = self.gui_get_widget("topToolbarCheckMenuItem") if w: value = w.get_active() self.client.set_bool(self.top_toolbar_path, value) return def on_treeToolbarCheck_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") w = self.gui_get_widget("treeToolbarCheckMenuItem") if w: value = w.get_active() self.client.set_bool(self.side_toolbar_path, value) return def on_showIconText_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") w = self.gui_get_widget("showIconTextCheckMenuItem") if w: value = w.get_active() self.client.set_bool(self.show_icon_text_path, value) return def on_statusBarMenuItem_trigger(self, widget): self.msg("") self.client.set_bool(self.status_bar_path, self.gui_get_widget("statusBarMenuItem").get_active()) return def on_showAll_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_show_all() def on_hideAll_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_hide_all() # Tree menu callbacks: def on_newPage_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_new_page() def on_newChild_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_new_child() def on_up_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_move_up() def on_down_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_move_down() def on_promote_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_move_left() def on_demote_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_move_right() def on_splitItem_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("on_splitItem_trigger") self._do_split_item() def on_mergeItems_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_merge_items() def on_sort_trigger(self, widget): """ This is a generic trigger that will auto-detect whether the text view or the tree view is focused, and it will call the more specific handler to open a sort dialog for the detected context. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") if self.gui_get_widget("textView").is_focus(): self.on_sortText_trigger(widget) elif self.gui_get_widget("treeView").is_focus(): self.on_sortTree_trigger(widget) def on_sortTree_trigger(self, widget): self.msg("") sort_dialog(self, "tree") def on_sortText_trigger(self, widget): self.msg("") sort_dialog(self, "text") # Text menu callbacks: def on_format_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.do_format_paragraph() def on_timeStamp_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self.do_time_stamp() def on_externalEdit_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") self._do_external_edit() return # Settings menu callbacks: def on_prefs_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") prefs = prefs_dialog(self) # Help menu callbacks: def on_readManual_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") # Check to see if we are running from the tarball, cvs, or system. # Determine the gjots2 binary path. if os.access("./gjots2", os.R_OK | os.X_OK): gjots_cmd = "./gjots2 -r " elif os.access("./bin/gjots2", os.R_OK | os.X_OK): gjots_cmd = "./bin/gjots2 -r " else: # run from system share directory gjots_cmd = "gjots2 -r " # Determine the path for the gjots2.gjots documentation file to # open. gjots_file = "" if os.access("./gjots2.gjots", os.R_OK): gjots_file = "./gjots2.gjots" sys.stderr.write(_("%s: Warning: opening gjots2 manual from %s\n") % ("gjots2", gjots_file)) elif os.access("./doc/gjots2.gjots", os.R_OK): gjots_file = "./doc/gjots2.gjots" sys.stderr.write(_("%s: Warning: opening gjots2 manual from %s\n") % ("gjots2", gjots_file)) else: # run from the system share directory - try to find a # locale version. Version could be 2.3.11.201012291355: v = gjots_version.split('.') vers = ".".join(v[0:3]) gjots_file_base = self.prefix + "/share/doc/gjots2-" + vers + "/gjots2" for env in "LANGUAGE", "LC_ALL", "LC_MESSAGES", "LANG": locale_lang = "" try: locale = os.environ[env] locale_lang = locale[0:2] gjots_file = gjots_file_base + "." + locale_lang + ".gjots" if os.access(gjots_file, os.R_OK): break else: gjots_file="" except KeyError: gjots_file="" pass if gjots_file == "": gjots_file = gjots_file_base + ".gjots" # Execute gjots to open its documentation. if os.access(gjots_file, os.R_OK): gjots_cmd += gjots_file + "&" os.system(gjots_cmd) return def on_about_trigger(self, widget): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") dlg = gtk.AboutDialog() dlg.set_version(gjots_version) dlg.set_name("Gjots2") dlg.set_authors(["Bob Hepple", "Gabriel Munoz"]) dlg.set_copyright("Copyright Bob Hepple 2002-2012") dlg.set_website("http://bhepple.freeshell.org/gjots2") dlg.set_translator_credits(_("""Rui Nibau (fr) <rui.nibau@omacronides.com> Robert Emil Berge (no, nb) <filoktetes@linuxophic.org> Sergey Bezdenezhnyh (ru) <sib-mail@mtu-net.ru> Raimondo Giammanco (it) <rongten@member.fsf.org> Martin Sin (cs) <martin.sin@zshk.cz> Cecilio Salmeron (es) <s.cecilio@gmail.com> Aleksa Šušulić (sl) <susulic@gmail.com> Uwe Steinmann (de) <uwe@steinmann.cx> Morgan Antonsson (sv) <morgan.antonsson@gmail.com>""")) def close(w, res): if res == gtk.RESPONSE_CANCEL: w.hide() dlg.connect("response", close) dlg.show() # Text display callbacks: def on_textView_key_press_event(self, widget, key_event): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "keyval=", key_event.keyval print "state=", key_event.state self.msg("") if key_event.keyval == gtk.keysyms.F12: self.treeView.grab_focus() return 1 if key_event.keyval == gtk.keysyms.Page_Up: if self.textBuffer.get_iter_at_mark(self.textBuffer.get_insert()).is_start(): self.sync_text_buffer() current_item = self.get_linear_prev(self.current_item) if not current_item: return 0 self.current_item = current_item current_tree_path = self.treestore.get_path(self.current_item) self.treeView.expand_to_path(current_tree_path) self.treeView.get_selection().unselect_all() self.treeView.get_selection().select_iter(self.current_item) self.treeView.scroll_to_cell(current_tree_path, None, 1, 0.5, 0.5) return 1 if key_event.keyval == gtk.keysyms.Page_Down: if self.textBuffer.get_iter_at_mark(self.textBuffer.get_insert()).is_end(): self.sync_text_buffer() current_item = self.get_linear_next(self.current_item) if not current_item: return 0 self.current_item = current_item current_tree_path = self.treestore.get_path(self.current_item) self.treeView.expand_to_path(current_tree_path) self.treeView.get_selection().unselect_all() self.treeView.get_selection().select_iter(self.current_item) self.treeView.scroll_to_cell(current_tree_path, None, 1, 0.5, 0.5) self.textBuffer.place_cursor(self.textBuffer.get_start_iter()) return 1 #if key_event.keyval == gtk.keysyms.Insert and key_event.state & gtk.gdk.SHIFT_MASK: # print "Got Shift-Insert" # self._do_text_paste() # widget.signal_emit_by_name("paste-cipboard") return 0 # allow further signal propagation def backtick(self, command): """ Equivalent of Bourne shell's backtick See http://www.python.org/doc/2.5.1/lib/node534.html """ from subprocess import Popen, PIPE #print "backtick: command='%s'\n" % command value = Popen(["sh", "-c", command], stdout=PIPE).communicate()[0].rstrip() #print "returning '%s'\n" % value return(value) def _get_browser(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.browser: return self.browser browser_list = { # reminder: this list's order means nothing: # <name of executable>:<what to search for in ps -ef list> "xdg-open": "", "gnome-open": "", "firefox4": "/[x]ulrunner-2/.*firefox-", "google-chrome": "[/]chrome ", "firefox": "/[x]ulrunner/", "konqueror": "[k]onqueror", "epiphany": "[e]piphany", "opera": "[o]pera", "dillo": "[d]illo" } # see if there's one already running for this user: for browser in browser_list.keys(): if browser_list[browser]: if os.system("ps -U " + os.getenv("USER") + " -o args | grep -q " + browser_list[browser]) == 0: self.browser = browser if self.debug: print "using a running browser: ", browser break # see if there's something we can use in $BROWSER if not self.browser: browser = os.getenv("BROWSER") if browser and os.system("type " + browser + " >/dev/null 2>&1") == 0: self.browser = browser if self.debug: print "using the setting from BROWSER: ", browser # see if there's a preferred one in gnome: if not self.browser: self.browser = self.backtick("gconftool-2 -g /desktop/gnome/url-handlers/http/command 2>/dev/null").split()[0] if self.debug: print "using gnome-preferred browser: ", self.browser if not self.browser: # see if there's an executable one: for browser in browser_list.keys(): if os.system("type " + browser + " >/dev/null 2>&1") == 0: self.browser = browser if self.debug: print "using executable browser: ", browser break return self.browser def _run_browser_on(self, url): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] browser = self._get_browser() if browser: os.system(browser + " '" + url + "' &") else: self.msg("Can't run a browser") return 0 def on_textView_button_press_event(self, widget, key_event): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print key_event if key_event.button == 2: # "middle button" is paste - but (unlike GtkEntry, emacs, # firefox and kde apps like 'kate') # GtkTextView/GtkTextBuffer don't move the mark to the # location of the paste - also, the PRIMARY is wiped after # one use. This sucks majorly - so until they fix it # (logged as bug # https://bugzilla.gnome.org/show_bug.cgi?id=673760) # here's a little hack to place the cursor in the right # place and to remember the previous copy: x, y = self.textView.window_to_buffer_coords( self.textView.get_window_type( self.textView.get_window(gtk.TEXT_WINDOW_TEXT)), int(key_event.x), int(key_event.y)) self.primary.request_text(_insert_primary_callback, (self, x, y)) return 1 if key_event.type == gtk.gdk._2BUTTON_PRESS: cursor_mark = self.textBuffer.get_insert() start_iter = self._start_of_url() end_iter = self._end_of_url() word = self.textBuffer.get_text(start_iter, end_iter) # print ("word=\"%s\"\n" % word) matchobj = re.compile("^https*://").search(word) if matchobj: self.textBuffer.select_range(end_iter, start_iter) self._run_browser_on(word) return 1 return 0 # allow further signal propagation def on_textView_button_release_event(self, widget, key_event): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] return 0 # allow further signal propagation def on_textView_move_cursor(self, widget, event, x, y): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.msg("") def same_iter(self, treeiter1, treeiter2): "Check if 2 iterators point to the same item" if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if treeiter1 == None or treeiter2 == None: return 1 return self.treestore.get_path(treeiter1) == self.treestore.get_path(treeiter2) def _check_title(self, treeiter, body): """ Make sure the title and the first line of the text are in sync. But don't change the root title - it is the filename. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.same_iter(treeiter, self.get_root()): return eol = body.find("\n") if eol >= 0: title = body[0:eol] else: title = body #old_title = self.get_node_value(treeiter) #if not title == old_title self.treestore.set_value(treeiter, 0, title) def _foreach_findfirst(self, model, path, iter, self2): if self.first_selected == None: self.first_selected = iter def get_first_selected_iter(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.first_selected = None selection = self.treeView.get_selection() if not selection: return None selection.selected_foreach(self._foreach_findfirst, self) return self.first_selected def get_cursor_iter(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] path, column = self.treeView.get_cursor() print "get_cursor_iter: path = ", path if not path: return None return self.treestore.get_iter(path) def _foreach_findlast(self, model, path, iter, self2): self.last_selected = iter def get_last_selected_iter(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.last_selected = None self.treeView.get_selection().selected_foreach(self._foreach_findlast, self) return self.last_selected def on_textBuffer_changed(self, widget): """ If temp flag is set on this item then erase all the text except for the new stuff """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self._set_dirtyflag() self.msg("") self.current_dirty = 1 if not self.current_item: return body = self.textBuffer.get_text(self.textBuffer.get_start_iter(), self.textBuffer.get_end_iter(), 0) temp_flag = self.treestore.get_value(self.current_item, 2) if temp_flag: # body = [left]New...[right] temp_text_pos = body.find(self.temp_text) if temp_text_pos >= 0: if temp_text_pos > 0: left = body[0:temp_text_pos] else: left = "" right = body[temp_text_pos + len(self.temp_text):] body = left + right self.treestore.set_value(self.current_item, 2, 0) # temp_flag if self.textBuffer_changed_handler: self.textBuffer.disconnect(self.textBuffer_changed_handler) self.textBuffer.set_text(body, len(body)) self.textBuffer_changed_handler = self.textBuffer.connect("changed", self.on_textBuffer_changed) self.treestore.set_value(self.current_item, 1, body) body = self.textBuffer.get_text(self.textBuffer.get_start_iter(), self.textBuffer.get_end_iter(), 0) self._check_title(self.current_item, body) def sync_text_buffer(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.current_item and self.current_dirty: if self.debug: print "sync_text_buffer: syncing dirty data" body = self.textBuffer.get_text(self.textBuffer.get_start_iter(), self.textBuffer.get_end_iter(), 0) self.treestore.set_value(self.current_item, 1, body) self.current_dirty = 0 def on_tree_selection_changed(self, widget): """ Save off any changes. Always display the first one selected Always put the cursor at the start of text. Check that selection is legal - ie all are siblings of first_selected """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "widget =", widget print "rows =", self.treeView.get_selection().count_selected_rows() self._do_tree_selection_changed() def _do_tree_selection_changed(self): self.msg("") self.sync_text_buffer() treeiter = self.get_first_selected_iter() if treeiter: if self.debug: print "Title =", self.treestore.get_value(treeiter, 0) text = self.treestore.get_value(treeiter, 1) if self.textBuffer_changed_handler: self.textBuffer.disconnect(self.textBuffer_changed_handler) self.textBuffer.set_text(text, len(text)) self.textBuffer_changed_handler = self.textBuffer.connect("changed", self.on_textBuffer_changed) # Now enforce the rule that all other selected items must be siblings: # NB with 2 items selected, selection_list is: # (<gtk.TreeStore object (GtkTreeStore) at 0x404f14b4>, [(0, 1), (0, 2)]) first_selected = self.get_first_selected_iter() if not first_selected: return selection = self.treeView.get_selection() try: selection_list = selection.get_selected_rows() except AttributeError: self.err_msg(_("pygtk-2.2 is required for this application!")) gtk.main_quit() return # Bug fix to check for a null selection list to prevent GTK from # segfaulting. if selection_list == None or selection_list[1] == None: print _("gjots2: warning: selection list is NULL. Skipping tree selection changed \nevent.") return path_list = selection_list[1] parent = self.treestore.iter_parent(first_selected) for path in path_list: iter = self.treestore.get_iter(path) iter_parent = self.treestore.iter_parent(iter) if not self.same_iter(iter_parent, parent): selection.unselect_iter(iter) self.current_item = treeiter self.current_dirty = 0 # Now put the cursor into the right place #self.textView.grab_focus() #startIter = self.textBuffer.get_start_iter() #self.textBuffer.place_cursor(startIter) def on_tree_drag_drop(self, widget, drag_context, x, y, time): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() path, position = self.treeView.get_dest_row_at_pos(x, y) # path = (0, 2) on non-root items and (0,) on the root item if len(path) < 2 and position == gtk.TREE_VIEW_DROP_BEFORE: return 1 self._set_dirtyflag() self.current_item = None return def _warp(self, iter): """ Make iter the only selected row and the cursor. Also scroll so that it's visible. For some reason the scrolling is not working whether or not we set use_align. Maybe we should also expand iter's parent ...? """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if not iter: return path = self.treestore.get_path(iter) selection = self.treeView.get_selection() selection.unselect_all() selection.select_path(path) self.treeView.set_cursor(path, None, 0) self.treeView.scroll_to_cell(path, None, 1, 0.5, 0.5) def _do_goto_first_sibling(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() first_selected = self.get_first_selected_iter() if not first_selected: self.msg(_("Nothing selected")) return parent = self.treestore.iter_parent(first_selected) if not parent: self.msg(_("No parent!")) return iter = self.treestore.iter_children(parent) if iter == None or self.same_iter(iter, first_selected): self.msg(_("Can't go further")) return None self._warp(iter) def _do_goto_last_sibling(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return iter = last_selected while iter: next = iter next = self.treestore.iter_next(next) if not next: self._warp(iter) return iter = next def _do_goto_root(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() iter = self.treestore.get_iter_first() if not iter: self.msg(_("Tree is empty!")) return self._warp(iter) def _do_goto_last_visible(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() last_selected = self.get_last_selected_iter() if not last_selected: self.msg(_("Nothing selected")) return iter = last_selected while 1: next = iter next = self.treestore.iter_next(next) if not next: if self.treestore.iter_children(iter): path = self.treestore.get_path(iter) if self.treeView.row_expanded(path): iter = self.treestore.iter_children(iter) continue self._warp(iter) return iter = next def _do_goto_last_absolute(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() self._do_show_all() self._do_goto_root() self._do_goto_last_visible() def _do_toggle_expand(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() iter = self.current_item if not iter: self.msg(_("Nothing selected")) return path = self.treestore.get_path(iter) if self.treeView.row_expanded(path): self.treeView.collapse_row(path) else: self.treeView.expand_row(path, 0) def on_tree_key_press_event(self, widget, key_event): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() print "key_event.keyval=", key_event.keyval print "key_event.state=", key_event.state, "gtk.keysyms.End=", gtk.keysyms.End modifier = key_event.state & gtk.gdk.MODIFIER_MASK # why is MOD2_MASK being set? It's 'hyper'. Ignore it. Hmmm, # this only happens on raita. wassup with that? modifier &= ~gtk.gdk.MOD2_MASK if modifier & gtk.gdk.CONTROL_MASK: if key_event.keyval == gtk.keysyms.Up: self._do_move_up() return 1 if key_event.keyval == gtk.keysyms.Down: self._do_move_down() return 1 if key_event.keyval == gtk.keysyms.Left: self._do_move_left() return 1 if key_event.keyval == gtk.keysyms.Right: self._do_move_right() return 1 if key_event.keyval == gtk.keysyms.Home: self._do_goto_root() return 1 if key_event.keyval == gtk.keysyms.End: self._do_goto_last_absolute() return 1 if key_event.keyval == gtk.keysyms.Page_Down: self._do_goto_last_sibling() return 1 if key_event.keyval == gtk.keysyms.Page_Up: self._do_goto_first_sibling() return 1 # hmmm - these never get a chance because of the 'global' accelerators: if key_event.keyval == gtk.keysyms.X: self._do_tree_cut() return 1 if key_event.keyval == gtk.keysyms.C: self._do_tree_cut() return 1 if key_event.keyval == gtk.keysyms.V: self._do_tree_paste() return 1 elif modifier == 0: # plain keys if key_event.keyval == gtk.keysyms.Home: self._do_goto_first_sibling() return 1 if key_event.keyval == gtk.keysyms.End: self._do_goto_last_sibling() return 1 if key_event.keyval == gtk.keysyms.F12: self.textView.grab_focus() return 1 if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self._do_toggle_expand() return 1 return 0 # allow further signal propagation def on_tree_button_press_event(self, treeview, event): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() print "event.button=", event.button print "event.state=", event.state # event.button 1 left-click # event.button 2 middle-click # event.button 3 right-click # Need to popup menu on right-click - also on Shift-F10 apparently if event.button == 3: x = int(event.x) y = int(event.y) time = event.time pthinfo = treeview.get_path_at_pos(x, y) if pthinfo != None: path, col, cellx, celly = pthinfo # If $path is not in current selection. De-select current # selection and select $path, which is what the user just # right-clicked on. selection = treeview.get_selection() model, selected = selection.get_selected_rows() for row in selected: if row == path: treeview.grab_focus() self.treeContextMenu_get_widget("treeContextMenu").popup(None, None, None, event.button, time) return 1 # If we get here, then we need to de-select the current # selection and select the path that has been right-clicked. selection.unselect_all() selection.select_path(path) treeview.grab_focus() self.treeContextMenu_get_widget("treeContextMenu").popup(None, None, None, event.button, time) return 1 return 0 # allow further signal propagation def remove_tag(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.hit_end != -1 and self.hit_start != -1: hit_start_iter = self.textBuffer.get_iter_at_offset( self.start_offset + self.hit_start) hit_end_iter = self.textBuffer.get_iter_at_offset( self.start_offset + self.hit_end) self.textBuffer.remove_tag(self.found_tag, hit_start_iter, hit_end_iter) def add_string_to_combobox(self, s): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] print "s=", s combobox = self.gui_get_widget("menubar_find_combobox"); if combobox: num_items = 0 model = combobox.get_model() # liststore iter = model.get_iter_first() while iter: if s == model.get_value(iter, 0): combobox.set_active(num_items) return iter = model.iter_next(iter) num_items += 1 combobox.prepend_text(s) combobox.set_active(0) num_items += 1 while model.iter_n_children(None) > self.combobox_max_lines_to_save: # trim them back model.remove(model.iter_nth_child(None, self.combobox_max_lines_to_save)) num_items -= 1 for i in range(0, num_items): s = model.get_value(model.iter_nth_child(None, i), 0) self.client.set_string(self.find_text_path + str(i), s) def update_combobox_from_gconf(self): """ In glade2 we have GtkComboBoxEntry which is subclassed from GtkComboBox """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] combobox = self.gui_get_widget("menubar_find_combobox") if combobox: for i in range(0, self.combobox_max_lines_to_save): combobox.remove_text(0) for i in range(0, self.combobox_max_lines_to_save - 1): s = self.client.get_string(self.find_text_path + str(i)) combobox.append_text(s) s = self.client.get_string(self.find_text_path) self.add_string_to_combobox(s) def find_next(self): """ Returns textBuffer iters for the start and end of the next match within the text from the "insert" mark and the end (or beginning) of the element (or -1 if none). For regex matches, sets self.match May move to the next item in the tree if "global_bool" is set. Returns 1 if something found; else 0. """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.remove_tag() self.hit_start = self.hit_end = -1 # set this to 0 when we can't find anything in the current item: look_in_current_item = 1 current_tree_iter = self.get_first_selected_iter() while self.hit_start == -1: if look_in_current_item: if self.client.get_bool(self.find_backwards_path): start_iter = self.textBuffer.get_start_iter() end_mark = self.textBuffer.get_insert() end_iter = self.textBuffer.get_iter_at_mark(end_mark) self.start_offset = 0 else: start_mark = self.textBuffer.get_insert() start_iter = self.textBuffer.get_iter_at_mark(start_mark) end_iter = self.textBuffer.get_end_iter() self.start_offset = start_iter.get_offset() zone = self.textBuffer.get_text(start_iter, end_iter) else: if not self.client.get_bool(self.find_global_path): return 0 # we need the next tree item: if self.client.get_bool(self.find_backwards_path): current_tree_iter = self.get_linear_prev(current_tree_iter) else: current_tree_iter = self.get_linear_next(current_tree_iter) if not current_tree_iter: return 0 zone = self.get_node_value(current_tree_iter) self.start_offset = 0 search_regex = self.client.get_string(self.find_text_path) self.add_string_to_combobox(search_regex) search_regex = search_regex.decode("utf-8") zone = zone.decode("utf-8") if not self.client.get_bool(self.find_regex_path): search_regex = re.escape(search_regex) options = re.MULTILINE | re.LOCALE | re.UNICODE if not self.client.get_bool(self.find_match_case_path): options = options | re.IGNORECASE # re.I doesn't work on unicode strings somehow. At # least not at the moment. Maybe it's a bug in python, # maybe it'll get fixed, who knows. Meanwhile, this # fixes the problem for russian, at least: search_regex = string.lower(search_regex) zone = string.lower(zone) try: self.pattern = re.compile(search_regex, options) except: self.err_msg(_("Bad regular expression")) return self.match = None if self.client.get_bool(self.find_backwards_path): # accept the last match: for self.match in self.pattern.finditer(zone): pass else: self.match = self.pattern.search(zone) if self.match: self.hit_start = self.match.start() self.hit_end = self.match.end() else: look_in_current_item = 0 continue # OK - we got one, now return: if not look_in_current_item: current_tree_path = self.treestore.get_path(current_tree_iter) self.treeView.expand_to_path(current_tree_path) self.treeView.get_selection().unselect_all() self.treeView.get_selection().select_iter(current_tree_iter) self.treeView.scroll_to_cell(current_tree_path, None, 1, 0.5, 0.5) hit_start_iter = self.textBuffer.get_iter_at_offset( self.start_offset + self.hit_start) hit_end_iter = self.textBuffer.get_iter_at_offset( self.start_offset + self.hit_end) #self.textBuffer.move_mark_by_name("selection_bound", hit_start_iter) self.textBuffer.apply_tag(self.found_tag, hit_start_iter, hit_end_iter) if self.client.get_bool(self.find_backwards_path): self.textBuffer.place_cursor(hit_start_iter) else: self.textBuffer.place_cursor(hit_end_iter) start_mark = self.textBuffer.get_insert() self.textView.scroll_to_mark(start_mark, 0.0 , 1, 1.0, 0.5) return 1 def replace_next(self): """ Returns 1 if something found; else 0 """ if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.sync_text_buffer() if self.hit_start == -1: return self.find_next() hit_start_iter = self.textBuffer.get_iter_at_offset( self.start_offset + self.hit_start) hit_end_iter = self.textBuffer.get_iter_at_offset( self.start_offset + self.hit_end) if self.client.get_bool(self.find_regex_path): new_text = self.pattern.sub( self.client.get_string(self.replace_text_path).decode("utf-8"), self.textBuffer.get_text(hit_start_iter, hit_end_iter).decode("utf-8")) else: new_text = self.client.get_string(self.replace_text_path).decode("utf-8") self.textBuffer.place_cursor(hit_end_iter) self.textBuffer.delete(hit_start_iter, hit_end_iter) self.textBuffer.insert_at_cursor(new_text) # "insert" mark is now at the _end_ of the replaced text. # Now place the "selection" mark at the start of the replaced text: start_mark = self.textBuffer.get_insert() start_iter = self.textBuffer.get_iter_at_mark(start_mark) self.start_offset = start_iter.get_offset() new_selection_bound_iter = self.textBuffer.get_iter_at_offset( self.start_offset - len(new_text)) self.textBuffer.move_mark_by_name("selection_bound", new_selection_bound_iter) # now find the next one: return self.find_next() def _wrangle_geometry(self): if self.debug: print inspect.getframeinfo(inspect.currentframe())[2] if not self.has_set_size: self.has_set_size = 1 width = height = 0 if self.geometry and len(self.geometry) > 0: m = re.match(r"(\d+)x(\d+)", self.geometry) if m and m.group: width = long(m.group(1)) height = long(m.group(2)) else: sys.stderr.write(_("%s: bad geometry specification: %s\n") % (self.progName, self.geometry)) sys.exit(1) self.geometry = "" if height == 0 and width == 0 and self.client: width = self.client.get_int(self.width_path) height = self.client.get_int(self.height_path) if height > 0 and width > 0: #print width, height self.gjots.resize(width, height) else: width, height = self.gjots.get_size() self.client.set_int(self.width_path, width) self.client.set_int(self.height_path, height) return def _init_icons(self): """ Registers all of the required images as stock items for easy use within the gjots2 ui file. """ for stock_name, file in self.icons.iteritems(): factory = gtk.IconFactory() pixbuf = gtk.gdk.pixbuf_new_from_file(file) iconset = gtk.IconSet(pixbuf) factory.add(stock_name, iconset) factory.add_default() def _add_recent_menu(self): # glade-2 only self.recent_file_filter = gtk.RecentFilter() self.recent_file_filter.add_pattern(self.file_filter_pattern) self.recent_file_filter.add_application("gjots2") self.recent_file_filter.set_name("All gjots files") w = self.gui_get_widget("recentMenuItem") m = gtk.RecentChooserMenu() m.set_show_numbers(True) m.add_filter(self.recent_file_filter) m.connect("item_activated", self.on_recent_trigger) w.set_submenu(m) def __init__(self, prefix, progName, geometry, filename, readonly, debug, purge_password, use_glade2): """ In this init we are going to display the main gjots window """ if debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() self.debug = 1 #sys.settrace(self.debugfunc) else: self.debug = 0 self.purge_password = purge_password callbacks = { # File menu: "on_new_trigger": self.on_new_trigger, "on_open_trigger": self.on_open_trigger, "on_save_trigger": self.on_save_trigger, "on_saveAs_trigger": self.on_saveAs_trigger, "on_import_trigger": self.on_import_trigger, "on_export_trigger": self.on_export_trigger, "on_print_trigger": self.on_print_trigger, # do this one manually: # "on_readOnly_trigger": self.on_readOnly_trigger, "on_quit_trigger": self.on_quit_trigger, # Edit menu: "on_undo_trigger": self.on_undo_trigger, "on_redo_trigger": self.on_redo_trigger, "on_cut_trigger": self.on_cut_trigger, "on_copy_trigger": self.on_copy_trigger, "on_paste_trigger": self.on_paste_trigger, "on_selectAll_trigger": self.on_selectAll_trigger, "on_find_trigger": self.on_find_trigger, "on_findAgain_trigger": self.on_findAgain_trigger, "on_findAgainBackwards_trigger": self.on_findAgainBackwards_trigger, # View menu: "on_topToolbarCheck_trigger": self.on_topToolbarCheck_trigger, "on_treeToolbarCheck_trigger": self.on_treeToolbarCheck_trigger, "on_showIconText_trigger": self.on_showIconText_trigger, "on_statusBarMenuItem_trigger": self.on_statusBarMenuItem_trigger, "on_showAll_trigger": self.on_showAll_trigger, "on_hideAll_trigger": self.on_hideAll_trigger, # Tree menu: "on_newPage_trigger": self.on_newPage_trigger, "on_newChild_trigger": self.on_newChild_trigger, "on_up_trigger": self.on_up_trigger, "on_down_trigger": self.on_down_trigger, "on_promote_trigger": self.on_promote_trigger, "on_demote_trigger": self.on_demote_trigger, "on_splitItem_trigger": self.on_splitItem_trigger, "on_mergeItems_trigger": self.on_mergeItems_trigger, "on_sortTree_trigger": self.on_sortTree_trigger, # Text menu: "on_format_trigger": self.on_format_trigger, "on_timeStamp_trigger": self.on_timeStamp_trigger, "on_externalEdit_trigger": self.on_externalEdit_trigger, "on_sortText_trigger": self.on_sortText_trigger, # Setting menu: "on_prefs_trigger": self.on_prefs_trigger, # Help menu: "on_readManual_trigger": self.on_readManual_trigger, "on_about_trigger": self.on_about_trigger, # Special, context-sensitive triggers: "on_sort_trigger": self.on_sort_trigger, # text display callbacks: "on_textView_key_press_event": self.on_textView_key_press_event, "on_textView_button_release_event": self.on_textView_button_release_event, "on_textView_button_press_event": self.on_textView_button_press_event, "on_textView_move_cursor": self.on_textView_move_cursor, # tree callbacks "on_tree_selection_changed": self.on_tree_selection_changed, "on_tree_drag_drop": self.on_tree_drag_drop, "on_tree_key_press_event": self.on_tree_key_press_event, "on_tree_button_press_event": self.on_tree_button_press_event, # menutoolbar callbacks "on_menubar_find_entry_icon_press": self.on_menubar_find_entry_icon_press, "on_menubar_find_entry_activate": self.on_menubar_find_entry_activate, "on_menubar_find_entry_changed": self.on_menubar_find_entry_changed, "on_combobox_changed": self.on_combobox_changed, "on_gjots_focus_out_event": self.on_gjots_focus_out_event, } # create widget tree ... self.has_set_size = 0 self.progName = progName self.geometry = geometry # Try ./ first (if one local development file exists, then assume # all others exists) - developer's version, else goto site-packages. self.sharedir = "./" self.password = "" self.prefix = prefix # Format is 'stock-name':'file-name' self.icons = { 'gjots2-new-page' : 'gjots2-new-page.png', 'gjots2-new-child' : 'gjots2-new-child.png', 'gjots2-merge-items' : 'gjots2-merge-items.png', 'gjots2-split-item' : 'gjots2-split-item.png', 'gjots2-hide-all' : 'gjots2-hide-all.png', 'gjots2-show-all' : 'gjots2-show-all.png', 'gjots2-clock' : 'gjots2-clock.png'} # Perform more developer checks. If running from CVS or local # tarball, then register local icons, otherwise look in the system # data directory (e.g. /usr/share/gjots2). gui_file = "ui/gjots.ui" self.gui_filename = self.sharedir + gui_file if not os.access(self.gui_filename, os.F_OK): self.sharedir = prefix + "/share/gjots2/" self.gui_filename = self.sharedir + gui_file for name, file in self.icons.iteritems(): self.icons[name] = self.sharedir + "pixmaps/" + self.icons[name] self._init_icons() import gtk gtk.window_set_default_icon( gtk.gdk.pixbuf_new_from_file(self.sharedir + "pixmaps/gjots.png")) try: if use_glade2: raise NameError('Using glade2') self.builder = gtk.Builder() self.builder.set_translation_domain('gjots2') self.builder.add_from_file(self.gui_filename) self.builder.add_from_file(self.sharedir + "ui/treeContextMenu.ui") self.builder.connect_signals(callbacks) self.gui_get_widget = self.builder.get_object self.treeContextMenu_get_widget = self.builder.get_object except: import gtk.glade gui_file = "gjots.glade2" self.gui_filename = self.sharedir + gui_file self.builder = None override = {} self.xml = gtk.glade.XML(self.gui_filename, "gjots", "gjots2", override) self.treeContextMenu_xml = gtk.glade.XML(self.gui_filename, "treeContextMenu", "gjots2", override) self.xml.signal_autoconnect(callbacks) self.treeContextMenu_xml.signal_autoconnect(callbacks) self.gui_get_widget = self.xml.get_widget self.treeContextMenu_get_widget = self.treeContextMenu_xml.get_widget self.treestore = None self.gjots = self.gui_get_widget("gjots") # Connect the window manager close window event to our callback self.gjots.connect("delete_event", self.delete_event) self.textView = self.gui_get_widget("textView") self.treeView = self.gui_get_widget("treeView") self.appbar = self.gui_get_widget("appbar") self.last_message = "" #self.appbar.set_default(self.last_message) self.dirtyflag = "" self._create_empty_tree() self.temp_text = _("New...>>>") # must be odd enough to never be in the user's text - problem when documenting gjots itself?? self.tree_cutbuffer = None self.current_item = None self.combobox_max_lines_to_save = 10 # this flag is used to reduce overhead on every keystroke - it # is set when the textBuffer is out of sync with the current # treestore item. It needs to be checked and sync'd # (sync_text_buffer()) before the current item is used eg in # any save, cut, copy, export and before exit. It is auto # sync'd on change of selection. There must be a nicer way to # do this with signals ... self.current_dirty = 0 self.has_gtksourceview = 1 sourceview_msg = "" try: import gtksourceview3 self.textBuffer = gtksourceview3.Buffer() self.textBuffer.set_text = lambda *args: not not ( self.textBuffer.begin_not_undoable_action(), apply(gtksourceview3.Buffer.set_text, [self.textBuffer] + list(args)), self.textBuffer.end_not_undoable_action(), ) except: try: import gtksourceview2 self.textBuffer = gtksourceview2.Buffer() self.textBuffer.set_text = lambda *args: not not ( self.textBuffer.begin_not_undoable_action(), apply(gtksourceview2.Buffer.set_text, [self.textBuffer] + list(args)), self.textBuffer.end_not_undoable_action(), ) except: try: import gtksourceview self.textBuffer = gtksourceview.SourceBuffer() self.textBuffer.set_text = lambda *args: not not ( self.textBuffer.begin_not_undoable_action(), apply(gtksourceview.Buffer.set_text, [self.textBuffer] + list(args)), self.textBuffer.end_not_undoable_action(), ) except: sourceview_msg = _("Install pygtksourceview to enable undo/redo") self.textBuffer = gtk.TextBuffer() self.has_gtksourceview = 0 self.textView.set_buffer(self.textBuffer) self.textBuffer.set_text("", 0) self.hit_start = self.hit_end = -1 self.found_tag = self.textBuffer.create_tag(None, background="lightblue") self.textBuffer_changed_handler = self.textBuffer.connect("changed", self.on_textBuffer_changed) self.on_tree_selection_changed_handler = self.treeView.get_selection().connect("changed", self.on_tree_selection_changed) self.readOnly_widget = self.gui_get_widget("readOnlyMenuItem") self.readOnly_handler = self.readOnly_widget.connect("activate", self.on_readOnly_trigger) # add a model to make the combobox == combobox_with_text (can't do it in glade2 or 3) combobox = self.gui_get_widget("menubar_find_combobox"); if combobox: liststore = gtk.ListStore(gobject.TYPE_STRING) combobox.set_model(liststore) cell = gtk.CellRendererText() combobox.pack_start(cell, True) if not self.builder: # glade-2: combobox.set_text_column(0) combobox.child.set_icon_from_stock(0, "gtk-media-previous") combobox.child.set_icon_activatable(0, True) combobox.child.set_icon_from_stock(1, "gtk-media-next") combobox.child.set_icon_activatable(1, True) combobox.child.connect("icon-press", self.on_menubar_find_entry_icon_press) combobox.child.connect("activate", self.on_menubar_find_entry_activate) combobox.child.connect("changed", self.on_menubar_find_entry_changed) self._setup_gconf() self._wrangle_geometry() self.cut_text = None self.browser = None self.find_dialog = None self.update_find_entry() self.update_combobox_from_gconf() self.file_filter = gtk.FileFilter() self.file_filter_pattern = "*.gjots*" self.file_filter.add_pattern(self.file_filter_pattern) self.file_filter.set_name("All gjots files") self.display = gtk.gdk.display_manager_get().get_default_display() # Init the clipboard to use the system default "CLIPBOARD" self.clipboard = gtk.Clipboard(self.display, "CLIPBOARD") if not self.clipboard: print "No clipboard" sys.exit(3) self.primary = gtk.Clipboard(self.display, "PRIMARY") if not self.primary: print "No primary clipboard" sys.exit(3) if not self.gjotsfile.read_file("", filename, readonly, import_after=None): sys.exit(1) self._disable_tree_paste() root_path = self.treestore.get_path(self.get_root()) self.treeView.expand_row(root_path, 0) self._warp(self.get_root()) #self.treeView.get_selection().select_path(root_path) self.msg(progName + _(": version ") + gjots_version + sourceview_msg) self.set_readonly(readonly, quietly=1) # gtkBuilder has recent built in to the file dialog if not self.builder: self._add_recent_menu() self.treeView.grab_focus() self.gjots.show() if sourceview_msg != "": self.err_msg(sourceview_msg) self.alarm_set = 0 return # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: �������������������gjots2-2.4.1/lib/general.py�������������������������������������������������������������������������0000664�0003011�0000765�00000014451�12234162542�015310� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������import gtk import inspect from common import * class general_dialog: def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.general_get_widget(self.name).destroy() def on_generalField1_key_press_event(self, widget, event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] if event.keyval == 65307: # Escape self.generalValue = CANCEL; return 1 if event.keyval == 65289: # tab if self.generalNumFields > 1: self.general_get_widget("generalField2").grab_focus() return 1 if event.keyval == 65421 or event.keyval == 65293: # KP_Enter / Return if self.generalNumFields > 1: #generalDialog = gtk_widget_get_toplevel(widget); self.general_get_widget("generalField2").grab_focus() else: self.generalValue = OK; return 1 return 0 def on_generalField2_key_press_event(self, widget, event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] if event.keyval == 65307: # Escape self.generalValue = CANCEL; return 1 if event.keyval == 65289: # tab self.general_get_widget("generalField1").grab_focus() return 1 if event.keyval == 65421 or event.keyval == 65293: # KP_Enter / Return self.generalValue = OK; return 1 return 0 def on_generalOK_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.generalValue = OK def on_generalNo_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.generalValue = NO def on_generalCancel_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.generalValue = CANCEL def on_generalTryagain_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.generalValue = TRYAGAIN def on_generalReadonly_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.generalValue = READONLY def get_field1(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.field1 def get_field2(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.field2 def get_value(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.generalValue def __init__(self, gui, title, prompt, buttons, num_fields = 0, secretp = 0, feedback = "", field1_label = "", field1_default = "", field2_label = "", field2_default = ""): self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() callbacks = { # General popup: "on_generalField1_key_press_event": self.on_generalField1_key_press_event, "on_generalField2_key_press_event": self.on_generalField2_key_press_event, "on_generalOK_clicked": self.on_generalOK_clicked, "on_generalNo_clicked": self.on_generalNo_clicked, "on_generalCancel_clicked": self.on_generalCancel_clicked, "on_generalTryagain_clicked": self.on_generalTryagain_clicked, "on_generalReadonly_clicked": self.on_generalReadonly_clicked, } self.field1 = field1_default self.field2 = field2_default self.generalNumFields = num_fields self.name = "generalDialog" self.filename = self.gui.sharedir + "ui/generalDialog.ui" if self.gui.builder: self.gui.builder.add_from_file(self.filename) self.gui.builder.connect_signals(callbacks) self.general_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.general_get_widget = self.xml.get_widget self.general_dialog = self.general_get_widget(self.name) #gtk.Widget.show(self) self.general_dialog.set_transient_for(self.gui.gjots) self.general_dialog.set_title(title) self.general_get_widget("generalPromptLabel").set_label(prompt) if num_fields < 1: self.general_get_widget("generalLabel1").hide() self.general_get_widget("generalField1").hide() else: self.general_get_widget("generalLabel1").set_label(field1_label) self.general_get_widget("generalLabel1").show() self.general_get_widget("generalField1").set_text(field1_default) self.general_get_widget("generalField1").set_visibility(not secretp) self.general_get_widget("generalField1").show() if num_fields < 2: self.general_get_widget("generalLabel2").hide() self.general_get_widget("generalField2").hide() else: self.general_get_widget("generalLabel2").set_label(field2_label) self.general_get_widget("generalLabel2").show() self.general_get_widget("generalField2").set_text(field2_default) self.general_get_widget("generalField2").set_visibility(not secretp) self.general_get_widget("generalField2").show() if feedback: self.general_get_widget("generalFeedback").set_label(feedback) self.general_get_widget("generalFeedback").show() else: self.general_get_widget("generalFeedback").hide() if (buttons & YES or buttons & OK): self.general_get_widget("generalOK").show() if (buttons & YES): self.general_get_widget("generalOK").set_label(_("Yes")) else: self.general_get_widget("generalOK").hide() if (buttons & NO): self.general_get_widget("generalNo").show() else: self.general_get_widget("generalNo").hide() if (buttons & CANCEL): self.general_get_widget("generalCancel").show() else: self.general_get_widget("generalCancel").hide() if (buttons & READONLY): self.general_get_widget("generalReadonly").show() else: self.general_get_widget("generalReadonly").hide() if (buttons & TRYAGAIN): self.general_get_widget("generalTryagain").show() else: self.general_get_widget("generalTryagain").hide() self.generalValue = WAITING while self.generalValue == WAITING: gtk.main_iteration() if self.generalValue == OK: if num_fields > 1: self.field2 = self.general_get_widget("generalField2").get_text() if num_fields > 0: self.field1 = self.general_get_widget("generalField1").get_text() self.general_get_widget(self.name).destroy() # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/find.py����������������������������������������������������������������������������0000664�0003011�0000765�00000015275�12234162542�014620� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������import gtk.keysyms import gtk.glade import re import inspect class find_dialog: def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.find_get_widget(self.name).destroy() self.gui.remove_tag() def saveSettings(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] w = self.find_get_widget("caseCheckbutton") if w: self.gui.client.set_bool(self.gui.find_match_case_path, w.get_active()) w = self.find_get_widget("globalCheckbutton") if w: self.gui.client.set_bool(self.gui.find_global_path, w.get_active()) w = self.find_get_widget("regexCheckbutton") if w: self.gui.client.set_bool(self.gui.find_regex_path, w.get_active()) w = self.find_get_widget("backwardsCheckbutton") if w: self.gui.client.set_bool(self.gui.find_backwards_path, w.get_active()) w = self.find_get_widget("findEntry") if w: self.gui.client.set_string(self.gui.find_text_path, w.get_text()) m = self.find_get_widget("menubar_find_entry") if not m: # glade2 m = self.gui.gui_get_widget("menubar_find_combobox").child if m: m.set_text(w.get_text()) w = self.find_get_widget("replaceEntry") if w: self.gui.client.set_string(self.gui.replace_text_path, w.get_text()) return def on_findDialog_destroy(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.find_dialog = None return def on_replaceEntry_key_press_event(self, widget, key_event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if key_event.keyval == gtk.keysyms.Return or key_event.keyval == gtk.keysyms.KP_Enter: self.on_replaceStartButton_clicked(widget) if key_event.keyval == gtk.keysyms.Escape: self.on_findCancelButton_clicked(widget) return def feedback(self, msg): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() w = self.find_get_widget("findFeedback") if w: w.set_text(msg) return def on_findStartButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.sync_text_buffer() self.saveSettings() self.feedback("") if not self.gui.find_next(): self.feedback(_("Not found")) else: self.feedback(_("Found")) w = self.find_get_widget("findEntry") if w: w.grab_focus() def on_findCloseButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.saveSettings() self.destroy() return def on_replaceStartButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.sync_text_buffer() self.saveSettings() self.feedback("") if not self.gui.replace_next(): self.feedback(_("Not found")) return self.feedback(_("Replace?")) w = self.find_get_widget("findEntry") if w: w.grab_focus() return def on_replaceAllButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.gui.sync_text_buffer() self.saveSettings() total = 0 i = 1 while i: i = self.gui.replace_next() total = total + i self.feedback(_("%d substitutions") % total) w = self.find_get_widget("findEntry") if w: w.grab_focus() return def on_findCancelButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.destroy() return def on_findClearButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] w = self.find_get_widget("findEntry") if w: w.set_text("") w.grab_focus() w = self.find_get_widget("replaceEntry") if w: w.set_text("") return def update_find_entry(self): # Potential for wonderful infinite loops here? if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] m = self.find_get_widget("findEntry") if m: m.set_text(self.gui.client.get_string(self.gui.find_text_path)) def _set_readonly(self, mode): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] if mode: w = self.find_get_widget("replaceStartButton") w.hide() w = self.find_get_widget("replaceEntry") w.hide() w = self.find_get_widget("replaceLabel") w.hide() w = self.find_get_widget("replaceAllButton") w.hide() else: w = self.find_get_widget("replaceStartButton") w.show() w = self.find_get_widget("replaceEntry") w.show() w = self.find_get_widget("replaceLabel") w.show() w = self.find_get_widget("replaceAllButton") w.show() def __init__(self, gui): """ Find dialog """ self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] callbacks = { "on_findDialog_destroy": self.on_findDialog_destroy, "on_replaceEntry_key_press_event": self.on_replaceEntry_key_press_event, "on_findStartButton_clicked": self.on_findStartButton_clicked, "on_findCloseButton_clicked": self.on_findCloseButton_clicked, "on_replaceStartButton_clicked": self.on_replaceStartButton_clicked, "on_replaceAllButton_clicked": self.on_replaceAllButton_clicked, "on_findCancelButton_clicked": self.on_findCancelButton_clicked, "on_findClearButton_clicked": self.on_findClearButton_clicked } self.name = "findDialog" if self.gui.builder: self.gui.builder.add_from_file(self.gui.sharedir + "ui/findDialog.ui") self.gui.builder.connect_signals(callbacks) self.find_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.find_get_widget = self.xml.get_widget w = self.find_get_widget("caseCheckbutton") if w: w.set_active(self.gui.client.get_bool(self.gui.find_match_case_path)) w = self.find_get_widget("globalCheckbutton") if w: w.set_active(self.gui.client.get_bool(self.gui.find_global_path)) w = self.find_get_widget("regexCheckbutton") if w: w.set_active(self.gui.client.get_bool(self.gui.find_regex_path)) w = self.find_get_widget("backwardsCheckbutton") if w: w.set_active(self.gui.client.get_bool(self.gui.find_backwards_path)) w = self.find_get_widget("findEntry") if w: w.set_text(self.gui.client.get_string(self.gui.find_text_path)) w.select_region(0, -1) w = self.find_get_widget("replaceEntry") if w: w.set_text(self.gui.client.get_string(self.gui.replace_text_path)) self.feedback("") self._set_readonly(self.gui.readonly) # find_dialog # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/file.py����������������������������������������������������������������������������0000664�0003011�0000765�00000056465�12234162542�014625� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������import gtk, os, re import tempfile, fcntl import inspect import gui from general import * from common import * class PasswordError(Exception): def __init__(self): pass class LockingError(Exception): def __init__(self): pass class gjotsfile: def _make_lockfile_name(self, filename): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() dirname, basename = os.path.split(filename) if dirname and len(dirname) and dirname[-1] != "/": dirname = dirname + "/" name = dirname + ".#" + basename return name def lock_file(self, filename): """ Returns (reason, pid) where reason is: 0: OK 1: no permission to create lockfile 2: already locked by another process pid is the pid of the locking process or 0 on success """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if not filename or len(filename) == 0: filename = self.filename lockfile = self._make_lockfile_name(filename) if self.gui.debug: print "lock_file: lockfile name =", lockfile pid = 0 if os.access(lockfile, os.F_OK): # file already exists - see if it was ours if not os.access(lockfile, os.W_OK): return (1, 0) try: fd = file(lockfile, "r", 0644) except IOError: return (1, 0) # fcntl.flock() returns None!! Error through exception? IOError? fcntl.flock(fd, fcntl.LOCK_EX) try: line = fd.readline() m = re.match(r"(\d+)", line) if m and m.group: pid = long(m.group(1)) except: pass if self.gui.debug: print "lock: pid = %d\n" % pid if pid > 0: if pid == os.getpid(): # we already own this lock: fcntl.flock(fd, fcntl.LOCK_UN) fd.close() return (0, pid) # hmmm - there's no getpgid() call in python if os.system("ps -ef |awk '{print $2}'|grep %d >/dev/null 2>&1" % pid) == 0: # locking process still exists: fcntl.flock(fd, fcntl.LOCK_UN) fd.close() return (2, pid) # nothing read from lockfile or process no longer exists: if self.gui.debug: print "lock_file: locking to pid", os.getpid() try: fd = file(lockfile, "w") fd.write("%d\n" % os.getpid()) fcntl.flock(fd, fcntl.LOCK_UN) fd.close() except IOError: return (1, 0) return (0, 0) def unlock_file(self, filename): """ Returns 0 on success, 1 on fail """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if not filename or len(filename) == 0: return 1 # make sure we locked this file: lockfile = self._make_lockfile_name(filename) try: fd = file(lockfile, "r") except IOError: return 0 fcntl.flock(fd, fcntl.LOCK_EX) pid = 0 try: line = fd.readline() m = re.match(r"(\d+)", line) if m and m.group: pid = long(m.group(1)) except: # nothing read - harmless pass retval = 1 if pid == 0 or pid == os.getpid(): # yes - it's ours - or it's corrupt os.unlink(lockfile) retval = 0 fcntl.flock(fd, fcntl.LOCK_UN) fd.close() return retval def wrapItem(self, sibling, parent, title, body): """ Make new node after sibling. sibling=None means insert at end. "title" goes into the tree (left panel). "body" goes into the right panel. parent=None is a special case - it is creating the root of the tree """ # Too verbose to trace this #if self.gui.debug: # print inspect.getframeinfo(inspect.currentframe())[2], vars() newNode = None if title or body: if title and title[-1] == '\n': title = title[0:-1] newNode = self.gui.new_node(parent, sibling, title, ''.join(body)) return newNode def readItem(self, f, start, parent, title = ""): """ Read lines from f, populating parent, starting after "start" or at the end of parent if null. "title" is used to override the title of the first item - generally because it's the filename. If parent=None then we're creating the root item - further items are inserted there. Return the last item inserted. """ # Too verbose to trace this #if self.gui.debug: # print inspect.getframeinfo(inspect.currentframe())[2], vars() body = [] while 1: line = f.readline() if not line or line == "": # ie EOF break if line.find(r"\NewEntry") == 0: if title or body: start = self.wrapItem(start, parent, title, body) if parent == None: # we created the root item - put everything else inside there parent = start start = None title = "" body = [] continue if line.find(r"\NewFolder") == 0: if title or body: start = self.wrapItem(start, parent, title, body) if parent == None: parent = start start = None title = "" body = [] self.readItem(f, start=None, parent=start) continue if line.find(r"\EndFolder") == 0: break # Normal (non-special) lines: if not title: title = line body.append(line) if title or body: start = self.wrapItem(start, parent, title, body) return start def writeItem(self, f, treeiter, first): """ Write node to file f recursively. first=suppress printing first level \NewEntry and \NewFolder - we're doing root """ # Too verbose to trace this #if self.gui.debug: # print inspect.getframeinfo(inspect.currentframe())[2], vars() if not first: f.write("\\NewEntry\n") body = self.gui.get_node_value(treeiter) if body: f.write(body) if not body[-1] == '\n': f.write('\n') treeiter = self.gui.get_first_child(treeiter) if treeiter: if not first: f.write("\\NewFolder\n") while treeiter: self.writeItem(f, treeiter, 0) treeiter = self.gui.get_next(treeiter) if not first: f.write("\\EndFolder\n") def get_password(self, num_fields, filename, mode, password): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() secretp = 1 feedback = " " confirm = password dirname, basename = os.path.split(filename) prompt = _("Enter password for ") + basename while 1: general = general_dialog(self.gui, _("gjots2: Enter Password"), prompt, OK|CANCEL, num_fields, secretp, feedback, _("Password: "), password, _("Confirm: "), confirm) if not general.get_value() == OK: raise PasswordError password = general.get_field1() confirm = general.get_field2() if mode == "r" or password == confirm: break feedback = _("Password was not confirmed") return password def ccrypt_open(self, filename, mode = "r", reuse_password = 0): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if os.system("type ccdecrypt >/dev/null 2>&1") != 0: self.gui.err_msg(_("Could not find the ccrypt program - please install it and try again")) raise PasswordError # get a password: if mode == "w": num_fields = 2 else: num_fields = 1 if not reuse_password or self.gui.password == None or self.gui.password == "": self.gui.password = self.get_password(num_fields, filename, mode, self.gui.password) envname = "DH665" # or anything you like! os.environ[envname] = self.gui.password if mode == "r": f = os.popen("ccdecrypt -c -E " + envname + " " + filename, "r") else: f = os.popen("ccencrypt -E " + envname + ">" + filename, "w") # Note - I don't think the following actually scrubs the memory for local variables - need something mutable... blank = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" os.environ[envname] = blank if self.gui.purge_password: self.gui.password = blank self.gui.password = "" return f def gpg_open(self, filename, mode = "r", reuse_password = 0): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() prog = "gpg2" if os.system("type " + prog + " >/dev/null 2>&1") != 0: prog = "gpg" if os.system("type " + prog + " >/dev/null 2>&1") != 0: self.gui.err_msg(_("Neither gpg2 nor gpg are available - please install one (perhaps package gnupg2) and try again")) raise PasswordError # allow agent to provide password if available: if os.environ["GPG_AGENT_INFO"]: prefix = "" option = "" else: if (mode == "r"): num_fields = 1 else: num_fields = 2 if not reuse_password or self.gui.password == None or self.gui.password == "": self.gui.password = self.get_password(num_fields, filename, mode, self.gui.password) prefix = "echo \"" + self.gui.password + "\" | " option = "--passphrase-fd 0 " if mode == "r": f = os.popen(prefix + prog + " --batch --no-tty --decrypt --use-agent " + option + filename + " 2>/dev/null", "r") else: scratch = tempfile.mktemp() cmd = "cat > " + scratch + "; " + prefix + prog + " --batch --no-tty -o - --symmetric " + option + scratch + "> " + filename + " 2>/dev/null; rm " + scratch f = os.popen(cmd, "w") blank = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if self.gui.purge_password: self.gui.password = blank self.gui.password = "" return f def ssl_open(self, filename, mode = "r", reuse_password = 0): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if os.system("type openssl >/dev/null 2>&1") != 0: self.gui.err_msg(_("No openssl program - please install it and try again")) raise PasswordError # get a password: if mode == "w": num_fields = 2 else: num_fields = 1 if not reuse_password or self.gui.password == None or self.gui.password == "": self.gui.password = self.get_password(num_fields, filename, mode, self.gui.password) if mode == "r": f = os.popen("echo \"" + self.gui.password + "\" | openssl des3 -d -pass stdin -in " + filename + " 2>&1", "r") else: scratch = tempfile.mktemp() f = os.popen("cat > " + scratch + "; echo \"" + self.gui.password + "\" | openssl des3 -pass stdin -in " + scratch + " -out " + filename + " 2>&2; rm " + scratch, "w") blank = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" if self.gui.purge_password: self.gui.password = blank self.gui.password = "" return f def close(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] if self.filename: self.unlock_file(self.filename) def _general_open(self, filename, mode, reuse_password = 0): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() self.last_file = filename if mode == "w": try: backup_file = filename + "~" s = os.stat(filename) os.system("cp -f " + filename + " " + backup_file) os.utime(backup_file, (s.st_atime, s.st_mtime)) os.chmod(backup_file, s.st_mode) # os.chown(backup_file, s.st_uid, s.st_gid) ... not permitted!! except OSError: pass exti = filename.rfind(".cpt") if not exti == -1: return self.ccrypt_open(filename, mode = mode, reuse_password = reuse_password) exti = filename.rfind(".gpg2") if not exti == -1: return self.gpg_open(filename, mode = mode, reuse_password = reuse_password) exti = filename.rfind(".gpg") if not exti == -1: return self.gpg_open(filename, mode = mode, reuse_password = reuse_password) exti = filename.rfind(".ssl") if not exti == -1: return self.ssl_open(filename, mode = mode, reuse_password = reuse_password) return open(filename, mode) def _do_load(self, filename, import_after): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() dirname, basename = os.path.split(filename) try: f = self._general_open(filename, "r") except IOError: self.gui.msg(_('Can\'t open "') + basename + '"') return "" except PasswordError: self.gui.msg(_("Bad password")) return "" except LockingError: self.gui.err_msg(_("File cannot be locked")) return "" if import_after: self.readItem(f, None, import_after, None) else: self.gui.flush_tree() # needs a try/except: self.readItem(f, None, None, basename) self.filename = filename self.gui.show_tree(basename) if f.close() != None: self.gui.err_msg(_("failed!")) return "" return self.filename def _do_store(self, filename, selection, reuse_password = 0): """ Internal storage routine - no prompting, locking or other checking. Save entire tree unless selection is set - in which we are "exporting". Return filename on success, "" on error """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if not filename: return "" dirname, basename = os.path.split(filename) try: f = self._general_open(filename, "w", reuse_password = reuse_password) except IOError: dirname, basename = os.path.split(filename) self.gui.msg(_("Not saved.")) self.gui.err_msg(_("Can't write to ") + basename) return "" except LockingError: self.gui.err_msg(_("Can't lock file")) return "" if selection: first_selected = self.gui.get_first_selected_iter() if not first_selected: self.gui.err_msg(_("Nothing selected")) return "" last_selected = self.gui.get_last_selected_iter() if not last_selected: self.gui.err_msg(_("Nothing selected")) return "" this = first_selected count = 0 while this: count = count + 1 next = self.gui.treestore.iter_next(this) if self.gui.same_iter(this, last_selected): next = None self.writeItem(f, this, 0) this = next else: treeiter = self.gui.get_root() # needs a try/except: for IO errors, eg. out of space, network failed ... self.writeItem(f, treeiter, 1) if f.close() != None: self.gui.err_msg(_("failed!")) return "" return filename def destroy(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.file_get_widget(self.name).destroy() def on_fileselection_key_press_event(self, widget, event): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] # Nothing is needed here - return & escape work as expected pass def on_fileselectionCancelButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.prompt_filename = None self.fileselectionValue = CANCEL def on_fileselectionOkButton_clicked(self, widget): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.prompt_filename = self.fileselection_dialog.get_filename() self.fileselectionValue = OK self.fileselection_readonly = self.file_get_widget("fileselectionReadonly").get_active() def get_value(self): if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] return self.prompt_filename def _file_dialog(self, title, mode): """ File selection dialog """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() callbacks = { # File selector popup: "on_fileselection_key_press_event": self.on_fileselection_key_press_event, "on_fileselectionCancelButton_clicked": self.on_fileselectionCancelButton_clicked, "on_fileselectionOkButton_clicked": self.on_fileselectionOkButton_clicked, } self.name = "fileselection" if self.gui.builder: self.gui.builder.add_from_file(self.gui.sharedir + "ui/fileDialog.ui") self.gui.builder.connect_signals(callbacks) self.file_get_widget = self.gui.gui_get_widget else: self.xml = gtk.glade.XML(self.gui.gui_filename, self.name, domain="gjots2") self.xml.signal_autoconnect(callbacks) self.file_get_widget = self.xml.get_widget self.fileselection_dialog = self.file_get_widget(self.name) self.fileselection_dialog.set_title(title) self.fileselection_dialog.add_filter(self.gui.file_filter) if self.last_file == None: self.last_file = os.environ["HOME"] self.last_file = self.gui.backtick("readlink -n -m " + self.last_file) self.fileselection_dialog.set_filename(self.last_file) all_filter = gtk.FileFilter() all_filter.add_pattern("*") all_filter.set_name("All files") self.fileselection_dialog.add_filter(all_filter) self.fileselection_dialog.set_action(mode) self.fileselection_dialog.show() self.fileselectionValue = WAITING if mode == gtk.FILE_CHOOSER_ACTION_SAVE: self.fileselection_dialog.set_do_overwrite_confirmation(True) self.file_get_widget("fileselectionReadonly").hide() if self.gui.builder: self.gui.builder.connect_signals(callbacks) else: self.xml.signal_autoconnect(callbacks) while self.fileselectionValue == WAITING: gtk.main_iteration() self.fileselection_dialog.destroy() def read_file(self, prompt, filename, readonly, import_after): """ Top level file reading - with prompting and locking of files. Reads items in after "import_after" if set, otherwise to root. Returns filename read in or "" """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if prompt and not filename: self._file_dialog(prompt, gtk.FILE_CHOOSER_ACTION_OPEN) if self.fileselectionValue != OK or not self.prompt_filename: return "" else: if not filename: filename = os.environ["HOME"]+"/.gjotsfile" self.prompt_filename = filename dirname, basename = os.path.split(self.prompt_filename) if import_after or self.fileselection_readonly: readonly = 1 if not os.access(self.prompt_filename, os.R_OK): self.gui.err_msg(_("%s is not readable") % basename) return "" gtk.recent_manager_get_default().add_full( "file://" + self.prompt_filename, {"mime_type": "application/gjots", "app_name": "gjots2", "app_exec": "gjots2"}) # lock the file while not readonly: reason, pid = self.lock_file(self.prompt_filename) if reason == 0: # it's locked, all in order... break if reason == 1: msg = _("%s: no permission") % basename else: msg = _("%s: locked by process number %d") % (basename, pid) general = general_dialog(self.gui, title = _("gjots2: can't lock file."), prompt = msg, buttons = TRYAGAIN | CANCEL | READONLY, secretp = 0, feedback = "", field1_label = "", field1_default = "", field2_label = "", field2_default = "") if general.get_value() == CANCEL: raise LockingError if general.get_value() == READONLY: self.gui.set_readonly(1, quietly=1) readonly = 1 retval = self._do_load(self.prompt_filename, import_after) self.filename_timestamp = 0 if retval: if not import_after: self.filename = self.prompt_filename self.filename_timestamp = os.stat(self.filename).st_mtime if readonly: self.gui.set_readonly(1, quietly=1) else: self.unlock_file(self.prompt_filename) self.filename = "" self.gui.set_readonly(0, quietly=1) return retval def _check_timestamp(self, filename, timestamp): if timestamp: dirname, basename = os.path.split(filename) try: s = os.stat(filename) except: return 0 if s.st_mtime > self.filename_timestamp: general = general_dialog(self.gui, _("gjots2: %s changed") % basename, _("'%s' has changed since it was read.\noverwrite anyway?") % basename, YES|CANCEL, 0, 0, "", "", "", "", "") if general.get_value() == OK: return 0 return 1 return 0 def write_file(self, prompt = "", exporting=0, reuse_password=1): """ Top level file writing - with prompting if necessary. If no prompt just use the default file and don't check about overwriting it. Always lock the file before writing - leave it locked (and remove any other locks) unless exporting. If exporting then only write the current selection - no need to change the default filename to this one; otherwise, write the root item and change the default filename to this one. If we already know the password and reuse_password is 0 then just save the sucker. Return filename on success, "" on error """ if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2], vars() if self.gui.readonly or not self.filename: if not prompt or len(prompt) == 0: prompt = _("Save as ...") retval = "" while 1: # use 'while' simply so that we can use break: if prompt: self._file_dialog(prompt, gtk.FILE_CHOOSER_ACTION_SAVE) if self.fileselectionValue == OK and self.prompt_filename: dirname, basename = os.path.split(self.prompt_filename) # we may need to use "fully expanded name" here: if self.filename == self.prompt_filename: if exporting: self.gui.err_msg(_("That file is already open!")) return "" if self._check_timestamp(self.filename, self.filename_timestamp): return "" retval = self._do_store(self.filename, selection = exporting, reuse_password = reuse_password) if not exporting: try: s = os.stat(self.filename) self.filename_timestamp = s.st_mtime except: pass break reason, pid = self.lock_file(self.prompt_filename) if reason == 2: self.gui.err_msg(_("%s is locked by pid %d") % (basename, pid)) return "" if reason == 1: self.gui.err_msg(_("Can't make a lockfile in ") + dirname) return "" # We know that the directory is writable, so we can # create a file here. See if it already exists, if so, # is it writable, if so should we overwrite it?: try: f = open(self.prompt_filename) f.close() if not os.access(self.prompt_filename, os.W_OK): self.unlock_file(self.prompt_filename) self.gui.err_msg(_("%s is not writable") % basename) return "" general = general_dialog(self.gui, _("gjots2: %s already exists.") % basename, _("overwrite %s?") % basename, YES|CANCEL, 0, 0, "", "", "", "", "") if not general.get_value() == OK: self.unlock_file(self.prompt_filename) return "" except IOError: pass retval = self._do_store(self.prompt_filename, selection = exporting, reuse_password = reuse_password) if exporting: self.unlock_file(self.prompt_filename) else: if retval: self.close() self.filename = self.prompt_filename self.gui.set_title(basename) try: s = os.stat(self.filename) self.filename_timestamp = s.st_mtime except: pass break else: # self.fileselectionValue != OK return "" else: # just save the sucker # assert exporting == 0 if self._check_timestamp(self.filename, self.filename_timestamp): return "" retval = self._do_store(self.filename, selection = exporting, reuse_password = reuse_password) try: s = os.stat(self.filename) self.filename_timestamp = s.st_mtime except: pass break # developers may want to enable this to check the before & after file images: # if self.gui.dev: # os.system("meld " + self.prompt_filename + " " + self.prompt_filename + "~") gtk.recent_manager_get_default().add_full( "file://" + self.filename, {"mime_type": "application/gjots", "app_name": "gjots2", "app_exec": "gjots2"}) return retval def __init__(self, gui): self.gui = gui if self.gui.debug: print inspect.getframeinfo(inspect.currentframe())[2] self.prompt_filename = "" self.filename = "" self.fileselectionValue = OK self.fileselection_readonly = False self.file_filter = None self.last_file = None # Local variables: # eval:(setq compile-command "cd ..; ./gjots2 test.gjots") # eval:(setq-default indent-tabs-mode 1) # eval:(setq tab-width 4) # eval:(setq python-indent 4) # End: �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������gjots2-2.4.1/lib/common.py��������������������������������������������������������������������������0000664�0003011�0000765�00000000147�12234162542�015160� 0����������������������������������������������������������������������������������������������������ustar �bhepple�������������������������bhepple����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������WAITING = 1 YES = 1<<1 OK = 1<<2 NO = 1<<3 CANCEL = 1<<4 TRYAGAIN = 1<<5 READONLY = 1<<6 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������