1
0
mirror of https://github.com/gryf/pygtktalog.git synced 2025-12-17 11:30:19 +01:00

Added junk stuff, that belongs to 1.x branch. Mostly it is attempt to add i18n

support, rest are files with some temporary ideas.
This commit is contained in:
2009-05-04 15:48:40 +00:00
parent 56c77ae9a4
commit 0e6ed92c53
5 changed files with 732 additions and 0 deletions

36
README
View File

@@ -121,6 +121,42 @@ design prevent from deleting any file from media directory (placed in
~/.pygtktalog/images). Functionality for exporting images and corresponding db
file is planned.
UPDATE
------
There can be added images for virtually any item in catalog. Therefore there is
some hazard with image filenames.
After long consideration and experiments I've decided, that images for every
item will have file name as follows:
sha512("filename" + "file size" + "file modification date").hexdigest()
for thumbnails:
sha512("filename" + "file size" + "file modification date").hexdigest() + "_t"
Why that way? There is plenty ways to achive goal to keep thumbnails/data with
applications, however I wanted to keep all things in one place, just to prevent
mixing this up with existing, system specific (Gnome, KDE, maybe MacOS, or any
other which is capable to run this application) own solution. Another reason
lays on catalogs update mechanizm. Imagine, that you have large collection of
movie clips and want to frequently add and/or delete somethong from that.
Changing file names of virtually all files is rather rare case. However moving
them between directories will be much more frequent scenario. And now, if you
want to update things in catalog, program will just check if there is such
generated image from movie filename, size and dates, and then it will just
assign that image to file in catalog. No need to wase time again for generating
movie shots all over again.
Of course there are some limits for such approach. There is relatively small
possibility to generate two filenames that are the same in two cases:
1. There are two different files (movies or images) with the same name, same
size and same timestamp in different directories. This could happen in case of
images that have fixed size (like BMP) and then due to image/thumbnail creating
policy only the first one will be placed in images directory.
2. Another possibility........ fuck.
BUGS
====

23
extract_gettext.sh Executable file
View File

@@ -0,0 +1,23 @@
#!/bin/sh
# Create new messages.pot file
blacklist="EXIF.py no_thumb.py"
rm locale/pygtktalog.pot
xgettext -L Python --keyword=_ -o locale/pygtktalog.pot pygtktalog.py
svn ls | grep '.py$'|grep -v 'pygtktalog.py' |while read file; do
xgettext -j -L Python --keyword=_ -o locale/pygtktalog.pot $file
done
for dir in src/ctrls src/models src/views src/lib; do
svn ls -R $dir| grep '.py$' |grep -v 'EXIF.py'|grep -v 'no_thumb.py'| while read file; do
xgettext -j -L Python --keyword=_ -o locale/pygtktalog.pot $dir/$file
done
done
cd locale
msginit --input=pygtktalog.pot --locale=pl_PL.UTF-8
# now its time to make .mo files:
mkdir -p pl_PL/LC_MESSAGES
#msgfmt --output-file=pl_PL/LC_MESSAGES/pygtktalog.mo pl.po

303
locale/pl.po Normal file
View File

@@ -0,0 +1,303 @@
# Polish translations for PACKAGE package
# Polskie tłumaczenia dla pakietu PACKAGE.
# Copyright (C) 2009 THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# <gryf73@gmail.com>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-01-11 13:51+0100\n"
"PO-Revision-Date: 2009-01-11 13:51+0100\n"
"Last-Translator: <gryf73@gmail.com>\n"
"Language-Team: Polish\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
#: pygtktalog.py:38
msgid ""
"WARNING: You'll need Python Imaging Library (PIL), if you want to make "
"thumbnails!"
msgstr ""
#: src/ctrls/c_main.py:284
msgid "Delete thumbnails"
msgstr "Usunięcie miniaturek"
#: src/ctrls/c_main.py:284
msgid "Delete thumbnails?"
msgstr "Usunąć mniniaturki?"
#: src/ctrls/c_main.py:285
msgid "Thumbnails for selected items will be permanently removed from catalog."
msgstr "Miniaturki zaznaczonych obiektów zostaną trwale usunięte z katalogu."
#: src/ctrls/c_main.py:308 src/ctrls/c_main.py:731 src/ctrls/c_main.py:736
msgid "Delete images"
msgstr "Usnięcie obrazów"
#: src/ctrls/c_main.py:308
msgid "Delete all images?"
msgstr "Usunąć wszystkie obrazy?"
#: src/ctrls/c_main.py:309
msgid "All images for selected items will be permanently removed from catalog."
msgstr "Wszystkie obrazy zaznaczonych obiektów zostaną trwale usunięte z katalogu."
#: src/ctrls/c_main.py:342
msgid "Image view"
msgstr "Przeglądarka obrazów"
#: src/ctrls/c_main.py:342
msgid "No Image"
msgstr "Brak obrazu"
#: src/ctrls/c_main.py:343
msgid "Image file does not exist."
msgstr "Plik obrazu nie istnieje."
#: src/ctrls/c_main.py:491
msgid "Quit application"
msgstr "Zakończ aplikację"
#: src/ctrls/c_main.py:492
msgid "Do you really want to quit?"
msgstr "Czy naprawdę chcesz zakończyć?"
#: src/ctrls/c_main.py:493 src/ctrls/c_main.py:506
msgid "Current database is not saved, any changes will be lost."
msgstr "Bieżąca baza nie została zachowana, wszystkie zmiany zostaną utracone."
#: src/ctrls/c_main.py:504 src/ctrls/c_main.py:638
msgid "Unsaved data"
msgstr "Niezapisane dane"
#: src/ctrls/c_main.py:505
msgid "Do you want to abandon changes?"
msgstr "Czy chcesz porzucić zmiany?"
#: src/ctrls/c_main.py:541
msgid "Error mounting device"
msgstr "Błąd w trakcie podłączania urzadzenia"
#: src/ctrls/c_main.py:542
#, python-format
msgid "Cannot mount device pointed to %s"
msgstr "Nie można podłączyć urządzenia %s"
#: src/ctrls/c_main.py:544
#, python-format
msgid ""
"Last mount message:\n"
"%s"
msgstr "Ostatni komunikat polecenia mount:\n%s"
#: src/ctrls/c_main.py:616
msgid "Error writing file"
msgstr "Błąd w zapisie pliku"
#: src/ctrls/c_main.py:617
#, python-format
msgid "Cannot write file %s."
msgstr "Nie można zapisać pliku %s."
#: src/ctrls/c_main.py:639
msgid "There is not saved database"
msgstr ""
#: src/ctrls/c_main.py:640
msgid "Pressing <b>Ok</b> will abandon catalog."
msgstr ""
#: src/ctrls/c_main.py:664
msgid "Error opening file"
msgstr ""
#: src/ctrls/c_main.py:665
#, python-format
msgid "Cannot open file %s."
msgstr ""
#: src/ctrls/c_main.py:731
msgid "No images selected"
msgstr ""
#: src/ctrls/c_main.py:732
msgid "You have to select at least one image to delete."
msgstr ""
#: src/ctrls/c_main.py:736
msgid "Delete selected images?"
msgstr ""
#: src/ctrls/c_main.py:737
msgid "Selected images will be permanently removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:767
msgid "Choose directory to save images"
msgstr ""
#: src/ctrls/c_main.py:792 src/ctrls/c_main.py:798
msgid "Save images"
msgstr ""
#: src/ctrls/c_main.py:793
#, python-format
msgid "%d images was succsefully saved."
msgstr ""
#: src/ctrls/c_main.py:794
#, python-format
msgid ""
"Images are placed in directory:\n"
"%s."
msgstr ""
#: src/ctrls/c_main.py:796
msgid "Images probably don't have real images - only thumbnails."
msgstr ""
#: src/ctrls/c_main.py:798
msgid "No images was saved."
msgstr ""
#: src/ctrls/c_main.py:807 src/ctrls/c_main.py:811
msgid "Set thumbnail"
msgstr ""
#: src/ctrls/c_main.py:807
msgid "No image selected"
msgstr ""
#: src/ctrls/c_main.py:808 src/ctrls/c_main.py:812
msgid "You have to select one image to set as thumbnail."
msgstr ""
#: src/ctrls/c_main.py:811
msgid "To many images selected"
msgstr ""
#: src/ctrls/c_main.py:870
msgid "Choose export file"
msgstr ""
#: src/ctrls/c_main.py:1016 src/ctrls/c_main.py:1025
msgid "Remove tags"
msgstr ""
#: src/ctrls/c_main.py:1016 src/ctrls/c_main.py:1167
msgid "No files selected"
msgstr ""
#: src/ctrls/c_main.py:1017
msgid "You have to select some files first."
msgstr ""
#: src/ctrls/c_main.py:1025
msgid "No tags selected"
msgstr ""
#: src/ctrls/c_main.py:1026
msgid "You have to select any tag to remove from files."
msgstr ""
#: src/ctrls/c_main.py:1052
msgid "Don't copy images. Generate only thumbnails."
msgstr ""
#: src/ctrls/c_main.py:1116
msgid "Delete disc"
msgstr ""
#: src/ctrls/c_main.py:1116
msgid "No disc selected"
msgstr ""
#: src/ctrls/c_main.py:1117
msgid "You have to select disc first before you can delete it"
msgstr ""
#: src/ctrls/c_main.py:1123
#, python-format
msgid "Delete %s"
msgstr ""
#: src/ctrls/c_main.py:1123
#, python-format
msgid "Delete %s?"
msgstr ""
#: src/ctrls/c_main.py:1124
msgid "Object will be permanently removed."
msgstr ""
#: src/ctrls/c_main.py:1167 src/ctrls/c_main.py:1172
msgid "Delete files"
msgstr ""
#: src/ctrls/c_main.py:1168
msgid "You have to select at least one file to delete."
msgstr ""
#: src/ctrls/c_main.py:1172
msgid "Delete files?"
msgstr ""
#: src/ctrls/c_main.py:1173
msgid ""
"Selected files and directories will be permanently\n"
" removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:1215
msgid "Delete thumbnail"
msgstr ""
#: src/ctrls/c_main.py:1215
msgid "Delete thumbnail?"
msgstr ""
#: src/ctrls/c_main.py:1216
msgid "Current thumbnail will be permanently removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:1364
msgid "Error ejecting device"
msgstr ""
#: src/ctrls/c_main.py:1366
#, python-format
msgid "Cannot eject device pointed to %s"
msgstr ""
#: src/ctrls/c_main.py:1368
#, python-format
msgid ""
"Last eject message:\n"
"%s"
msgstr ""
#: src/ctrls/c_main.py:1372
msgid "Error unmounting device"
msgstr ""
#: src/ctrls/c_main.py:1374
#, python-format
msgid "Cannot unmount device pointed to %s"
msgstr ""
#: src/ctrls/c_main.py:1376
#, python-format
msgid ""
"Last umount message:\n"
"%s"
msgstr ""
#: src/lib/device_helper.py:85
msgid "Eject program not specified"
msgstr ""

301
locale/pygtktalog.pot Normal file
View File

@@ -0,0 +1,301 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2009-01-11 13:51+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: pygtktalog.py:38
msgid ""
"WARNING: You'll need Python Imaging Library (PIL), if you want to make "
"thumbnails!"
msgstr ""
#: src/ctrls/c_main.py:284
msgid "Delete thumbnails"
msgstr ""
#: src/ctrls/c_main.py:284
msgid "Delete thumbnails?"
msgstr ""
#: src/ctrls/c_main.py:285
msgid "Thumbnails for selected items will be permanently removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:308 src/ctrls/c_main.py:731 src/ctrls/c_main.py:736
msgid "Delete images"
msgstr ""
#: src/ctrls/c_main.py:308
msgid "Delete all images?"
msgstr ""
#: src/ctrls/c_main.py:309
msgid "All images for selected items will be permanently removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:342
msgid "Image view"
msgstr ""
#: src/ctrls/c_main.py:342
msgid "No Image"
msgstr ""
#: src/ctrls/c_main.py:343
msgid "Image file does not exist."
msgstr ""
#: src/ctrls/c_main.py:491
msgid "Quit application"
msgstr ""
#: src/ctrls/c_main.py:492
msgid "Do you really want to quit?"
msgstr ""
#: src/ctrls/c_main.py:493 src/ctrls/c_main.py:506
msgid "Current database is not saved, any changes will be lost."
msgstr ""
#: src/ctrls/c_main.py:504 src/ctrls/c_main.py:638
msgid "Unsaved data"
msgstr ""
#: src/ctrls/c_main.py:505
msgid "Do you want to abandon changes?"
msgstr ""
#: src/ctrls/c_main.py:541
msgid "Error mounting device"
msgstr ""
#: src/ctrls/c_main.py:542
#, python-format
msgid "Cannot mount device pointed to %s"
msgstr ""
#: src/ctrls/c_main.py:544
#, python-format
msgid ""
"Last mount message:\n"
"%s"
msgstr ""
#: src/ctrls/c_main.py:616
msgid "Error writing file"
msgstr ""
#: src/ctrls/c_main.py:617
#, python-format
msgid "Cannot write file %s."
msgstr ""
#: src/ctrls/c_main.py:639
msgid "There is not saved database"
msgstr ""
#: src/ctrls/c_main.py:640
msgid "Pressing <b>Ok</b> will abandon catalog."
msgstr ""
#: src/ctrls/c_main.py:664
msgid "Error opening file"
msgstr ""
#: src/ctrls/c_main.py:665
#, python-format
msgid "Cannot open file %s."
msgstr ""
#: src/ctrls/c_main.py:731
msgid "No images selected"
msgstr ""
#: src/ctrls/c_main.py:732
msgid "You have to select at least one image to delete."
msgstr ""
#: src/ctrls/c_main.py:736
msgid "Delete selected images?"
msgstr ""
#: src/ctrls/c_main.py:737
msgid "Selected images will be permanently removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:767
msgid "Choose directory to save images"
msgstr ""
#: src/ctrls/c_main.py:792 src/ctrls/c_main.py:798
msgid "Save images"
msgstr ""
#: src/ctrls/c_main.py:793
#, python-format
msgid "%d images was succsefully saved."
msgstr ""
#: src/ctrls/c_main.py:794
#, python-format
msgid ""
"Images are placed in directory:\n"
"%s."
msgstr ""
#: src/ctrls/c_main.py:796
msgid "Images probably don't have real images - only thumbnails."
msgstr ""
#: src/ctrls/c_main.py:798
msgid "No images was saved."
msgstr ""
#: src/ctrls/c_main.py:807 src/ctrls/c_main.py:811
msgid "Set thumbnail"
msgstr ""
#: src/ctrls/c_main.py:807
msgid "No image selected"
msgstr ""
#: src/ctrls/c_main.py:808 src/ctrls/c_main.py:812
msgid "You have to select one image to set as thumbnail."
msgstr ""
#: src/ctrls/c_main.py:811
msgid "To many images selected"
msgstr ""
#: src/ctrls/c_main.py:870
msgid "Choose export file"
msgstr ""
#: src/ctrls/c_main.py:1016 src/ctrls/c_main.py:1025
msgid "Remove tags"
msgstr ""
#: src/ctrls/c_main.py:1016 src/ctrls/c_main.py:1167
msgid "No files selected"
msgstr ""
#: src/ctrls/c_main.py:1017
msgid "You have to select some files first."
msgstr ""
#: src/ctrls/c_main.py:1025
msgid "No tags selected"
msgstr ""
#: src/ctrls/c_main.py:1026
msgid "You have to select any tag to remove from files."
msgstr ""
#: src/ctrls/c_main.py:1052
msgid "Don't copy images. Generate only thumbnails."
msgstr ""
#: src/ctrls/c_main.py:1116
msgid "Delete disc"
msgstr ""
#: src/ctrls/c_main.py:1116
msgid "No disc selected"
msgstr ""
#: src/ctrls/c_main.py:1117
msgid "You have to select disc first before you can delete it"
msgstr ""
#: src/ctrls/c_main.py:1123
#, python-format
msgid "Delete %s"
msgstr ""
#: src/ctrls/c_main.py:1123
#, python-format
msgid "Delete %s?"
msgstr ""
#: src/ctrls/c_main.py:1124
msgid "Object will be permanently removed."
msgstr ""
#: src/ctrls/c_main.py:1167 src/ctrls/c_main.py:1172
msgid "Delete files"
msgstr ""
#: src/ctrls/c_main.py:1168
msgid "You have to select at least one file to delete."
msgstr ""
#: src/ctrls/c_main.py:1172
msgid "Delete files?"
msgstr ""
#: src/ctrls/c_main.py:1173
msgid ""
"Selected files and directories will be permanently\n"
" removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:1215
msgid "Delete thumbnail"
msgstr ""
#: src/ctrls/c_main.py:1215
msgid "Delete thumbnail?"
msgstr ""
#: src/ctrls/c_main.py:1216
msgid "Current thumbnail will be permanently removed from catalog."
msgstr ""
#: src/ctrls/c_main.py:1364
msgid "Error ejecting device"
msgstr ""
#: src/ctrls/c_main.py:1366
#, python-format
msgid "Cannot eject device pointed to %s"
msgstr ""
#: src/ctrls/c_main.py:1368
#, python-format
msgid ""
"Last eject message:\n"
"%s"
msgstr ""
#: src/ctrls/c_main.py:1372
msgid "Error unmounting device"
msgstr ""
#: src/ctrls/c_main.py:1374
#, python-format
msgid "Cannot unmount device pointed to %s"
msgstr ""
#: src/ctrls/c_main.py:1376
#, python-format
msgid ""
"Last umount message:\n"
"%s"
msgstr ""
#: src/lib/device_helper.py:85
msgid "Eject program not specified"
msgstr ""

69
prefs_prefs.py Normal file
View File

@@ -0,0 +1,69 @@
import pygtk
pygtk.require('2.0')
import gtk
class PreferencesMgr(gtk.Dialog):
def __init__(self):
gtk.Dialog.__init__(self, 'Preferences', None,
gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT,
(gtk.STOCK_OK, gtk.RESPONSE_OK,
gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
self.current_frame = None
self.create_gui()
def create_gui(self):
model = gtk.ListStore(str, gtk.gdk.Pixbuf)
pixbuf = gtk.gdk.pixbuf_new_from_file('/usr/share/icons/Buuf/128x128/status/stock_weather-night-clear.png')
model.append(['General', pixbuf])
pixbuf = gtk.gdk.pixbuf_new_from_file('/usr/share/icons/Buuf/128x128/stock/generic/stock_alarm.png')
model.append(['Security', pixbuf])
self.icon_view = gtk.IconView(model)
self.icon_view.set_text_column(0)
self.icon_view.set_pixbuf_column(1)
self.icon_view.set_orientation(gtk.ORIENTATION_VERTICAL)
self.icon_view.set_selection_mode(gtk.SELECTION_SINGLE)
self.icon_view.connect('selection-changed', self.on_select, model)
self.icon_view.set_columns(1)
self.icon_view.set_item_width(-1)
self.icon_view.set_size_request(72, -1)
self.content_box = gtk.HBox(False)
self.content_box.pack_start(self.icon_view, fill=True, expand=False)
self.icon_view.select_path((0,)) # select a category, will create frame
self.show_all()
self.vbox.pack_start(self.content_box)
self.resize(640, 480)
self.show_all()
def on_select(self, icon_view, model=None):
selected = icon_view.get_selected_items()
if len(selected) == 0: return
i = selected[0][0]
category = model[i][0]
if self.current_frame is not None:
self.content_box.remove(self.current_frame)
self.current_frame.destroy()
self.current_frame = None
if category == 'General':
self.current_frame = self.create_general_frame()
elif category == 'Security':
self.current_frame = self.create_security_frame()
self.content_box.pack_end(self.current_frame, fill=True, expand=True)
self.show_all()
def create_general_frame(self):
frame = gtk.Frame('General')
return frame
def create_security_frame(self):
frame = gtk.Frame('Security')
return frame
if __name__ == '__main__':
p = PreferencesMgr()
p.run()
p.destroy()