debian/0000755000000000000000000000000012223111643007161 5ustar debian/rules0000755000000000000000000000331312210447654010253 0ustar #!/usr/bin/make -f PKG_P_DIR=$(CURDIR)/debian/phatch PKG_C_DIR=$(CURDIR)/debian/phatch-cli PKG_D_DIR=$(CURDIR)/debian/phatch-doc PKG_N_DIR=$(CURDIR)/debian/phatch-nautilus %: dh $@ --with python2 --buildsystem=pybuild override_dh_auto_install: # install to phatch-cli by default and move files later PYBUILD_INSTALL_ARGS="--install-lib=/usr/share/phatch --prefix=/usr --root=$(PKG_C_DIR)" \ dh_auto_install rm -rf $(PKG_C_DIR)/usr/share/phatch/docs # install_data creates it find $(PKG_C_DIR) -name '*.py[co]' -delete sed -i -e "s|import phatch|sys.path.insert(0,'/usr/share/phatch/');import phatch|" $(PKG_C_DIR)/usr/bin/phatch mv $(PKG_C_DIR)/usr/share/phatch/phatch/pyWx $(PKG_P_DIR)/usr/share/phatch/phatch mv $(PKG_C_DIR)/usr/share/phatch/phatch/lib/pyWx $(PKG_P_DIR)/usr/share/phatch/phatch/lib mv $(PKG_C_DIR)/usr/share/applications $(PKG_P_DIR)/usr/share cp $(CURDIR)/debian/phatch.lintian $(PKG_P_DIR)/usr/share/lintian/overrides/phatch mkdir -p $(PKG_N_DIR)/usr/share/phatch/phatch/lib/linux/ mv $(PKG_C_DIR)/usr/share/phatch/phatch/lib/linux/nautilusExtension.py\ $(PKG_N_DIR)/usr/share/phatch/phatch/lib/linux/ cd docs && python update.py dh_install -p phatch-doc docs/build/html /usr/share/doc/phatch/ dh_link -p phatch-doc /usr/share/javascript/jquery/jquery.js \ /usr/share/doc/phatch/html/_static/jquery.js rm -f $(PKG_D_DIR)/usr/share/doc/phatch/html/.buildinfo echo "phatch-doc: extra-license-file usr/share/doc/phatch/html/_sources/data.license.txt" \ >> $(PKG_D_DIR)/usr/share/lintian/overrides/phatch-doc override_dh_python2: dh_python2 dh_python2 -p phatch-cli /usr/share/phatch/phatch override_dh_auto_clean: dh_auto_clean rm -rf build docs/build debian/phatch-nautilus/ debian/compat0000644000000000000000000000000212210435225010360 0ustar 9 debian/phatch-cli.links0000644000000000000000000000025411377533272012257 0ustar /usr/share/fonts/truetype/freefont/FreeSans.ttf /usr/share/phatch/data/fonts/FreeSans.ttf /usr/share/fonts/truetype/thai/Purisa.ttf /usr/share/phatch/data/fonts/Purisa.ttf debian/copyright0000644000000000000000000003726111377533272011144 0ustar This package was debianized by Emilio Pozuelo Monfort on Wed, 05 Dec 2007 19:42:32 +0100. It was downloaded from http://photobatch.stani.be Upstream Authors: Stani , Copyright: (c) 2007-2010 Stani License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-3'. The Debian packaging is Copyright (C) 2007-2009 Emilio Pozuelo Monfort and is licensed under the GPL, see above. The Files in phatch/other/pyWx: - pubsub.py is Copyright (c) 2004 Oliver Schoenborn - img2py.py, img2img.py is Copyright (c) 2002 Total Control Software - ToasterBox.py is Copyright (c) 2005-2007 Andrea Gavana - TextCtrlAutoComplete.py is Copyright (c) 2006 Edward Flick (CDF Inc, http://www.cdf-imaging.com) and are licensed under the wxWidgets/wxWindows license: http://www.wxwidgets.org/about/newlicen.htm http://www.opensource.org/licenses/wxwindows.php WXWINDOWS LIBRARY LICENCE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public Licence as published by the Free Software Foundation; either version 2 of the Licence, or (at your option) any later version. This library 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 Library General Public Licence for more details. You should have received a copy of the GNU Library General Public Licence along with this software, usually in a file named COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. EXCEPTION NOTICE 1. As a special exception, the copyright holders of this library give permission for additional uses of the text contained in this release of the library as licenced under the wxWindows Library Licence, applying either version 3 of the Licence, or (at your option) any later version of the Licence as published by the copyright holders of version 3 of the Licence document. 2. The exception is that you may use, copy, link, modify and distribute under the user's own terms, binary object code versions of works based on the Library. 3. If you copy code from files distributed under the terms of the GNU General Public Licence or the GNU Library General Public Licence into a copy of this library, as this licence permits, the exception does not apply to the code that you add in this way. To avoid misleading anyone as to the status of such modified files, you must delete this exception notice from such code and/or adjust the licensing conditions notice accordingly. 4. If you write modifications of your own for this library, it is your choice whether to permit this exception to apply to your modifications. If you do not wish that, you must delete the exception notice from such code and/or adjust the licensing conditions notice accordingly. The Files JpegImagePlugin.py and TiffImagePlugin.py in phatch/other are patched versions of source files of the Python Imaging Library (PIL) and are licensed under its license: http://www.pythonware.com/products/pil/license.htm Copyright (c) 1997-2006 by Secret Labs AB Copyright (c) 1995-2006 by Fredrik Lundh By obtaining, using, and/or copying this software and/or its associated documentation, you agree that you have read, understood, and will comply with the following terms and conditions: Permission to use, copy, modify, and distribute this software and its associated documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of Secret Labs AB or the author not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. The file phatch/other/EXIF.py is copyrighted and licensed as: Copyright (c) 2002-2007 Gene Cash All rights reserved Copyright (c) 2007-2008 Ianaré Sévi All rights reserved Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the authors nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The file phatch/other/findsystem.py is a source file of TTFQuery-1.0.1 and is licensed under its license: http://ttfquery.sourceforge.net/ THIS SOFTWARE IS NOT FAULT TOLERANT AND SHOULD NOT BE USED IN ANY SITUATION ENDANGERING HUMAN LIFE OR PROPERTY. TTFQuery License Copyright (c) 2003, Michael C. Fletcher and Contributors All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. The name of Michael C. Fletcher, or the name of any Contributor, may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The file phatch/other/surd.py is copyrighted as: Copyright (c) 1995 Nick Seidenman, nick@osg.saic.com It is freely available from: http://www.python.org/ftp/python/contrib-09-Dec-1999/DataStructures/ The file phatch/other/relativedelta.py is a source file of dateutil and is licensed under its license: Copyright (c) 2003-2007 Gustavo Niemeyer This module offers extensions to the standard python 2.3+ datetime module. PSF License The file phatch/other/tamogen.py is Copyright (C) 2008-2009 Jack Whitsitt, Juho Vepsäläinen and is licensed under the GPL, see above. Most Icons embedded in the Files in phatch/actions are from the Open Clip Art Library and their copyright information is embedded in the svg image files in the image/source/openclipart folder of the original phatch source tarball. The icons belong to the Public Domain: Copyright-Only Dedication (based on United States law) or Public Domain Certification The person or persons who have associated work with this document (the "Dedicator" or "Certifier") hereby either (a) certifies that, to the best of his knowledge, the work of authorship identified is in the public domain of the country from which the work is published, or (b) hereby dedicates whatever copyright the dedicators holds in the work of authorship identified below (the "Work") to the public domain. A certifier, moreover, dedicates any copyright interest he may have in the associated work, and for these purposes, is described as a "dedicator" below. A certifier has taken reasonable steps to verify the copyright status of this work. Certifier recognizes that his good faith efforts may not shield him from liability if in fact the work certified is not in the public domain. Dedicator makes this dedication for the benefit of the public at large and to the detriment of the Dedicator's heirs and successors. Dedicator intends this dedication to be an overt act of relinquishment in perpetuity of all present and future rights under copyright law, whether vested or contingent, in the Work. Dedicator understands that such relinquishment of all rights includes the relinquishment of all rights to enforce (by lawsuit or otherwise) those copyrights in the Work. Dedicator recognizes that, once placed in the public domain, the Work may be freely reproduced, distributed, transmitted, used, modified, built upon, or otherwise exploited by anyone for any purpose, commercial or non-commercial, and in any way, including by methods that have not yet been invented or conceived. http://openclipart.org The Phatch Logo and Icon, and some Icons embedded in the Files in phatch/actions are Copyright (c)2007-2008 Igor Kekeljevic and their copyright information is embedded in the svg images or blender files in the image/source/actions folder of the original phatch source tarball. These icons are released under the GPL, see above. The Icons embedded in phatch/pyWx/nuovext.py are Copyright (c) 2005 Alexandre Moore and are licensed under the GPL, see above. The icons can be obtained from: http://www.gnome-look.org/content/download.php?content=26448&id=1&tan=15504822&PHPSESSID=34ec3de1af33e253ee03357a124bfbeb The copyright information of the files in phatch/images is embedded in the svg images: - Copyright (c) 2009 Nadia Alramli , GPL license - Copyright (c) 2009 Stani , GPL license The Icon embedded in phatch/actions/colour_to_alpha.py is Copyright (c) Everaldo Coelho and is licensed under the LGPL. The icon can be obtained from: http://www.iconlet.com/info/9657_colorscm_128x128 The Icon embedded in phatch/actions/sketch.py is Copyright (c) Jonatan Castro Fernández The icon can be obtained from:http://www.tutorial9.net/resources/free-icon-pack-web-injection/ This Free Icon Pack is for use in your personal and commercial projects, and can be used without attribution. It may not be redistributed. The font fonts/FreeSans.ttf is licensed and copyrighted as: Copyleft 2002, 2003, 2005, 2008 Free Software Foundation The use of this font is granted subject to GNU General Public License The font fonts/Purisa.ttf is licensed and copyrighted as: Copyright (C) 2003, 2004 Free Poonlap Veerathanbutr The use of this font is granted subject to GNU General Public License Files book.blend, can.blend, cd.blend and lcd.blend have been licensed in the following way as described at http://e2-productions.com/repository/: All submissions to the Blender Model Repository can be used for any use. None of the original files have any additional restrictions. The original files are available according to the next listing: book.blend - http://e2-productions.com/repository/modules/PDdownloads/singlefile.php?cid=10&lid=242 can.blend - http://e2-productions.com/repository/modules/PDdownloads/singlefile.php?cid=10&lid=186 cd.blend - http://e2-productions.com/repository/modules/PDdownloads/singlefile.php?cid=10&lid=268 lcd.blend - http://e2-productions.com/repository/modules/PDdownloads/singlefile.php?cid=19&lid=327 box.blend and sphere.blend are Copyright (c) of Juho Vepsäläinen and licensed under GPL, see above. The file phatch/other/pep8.py is Copyright (C) 2006 Johann C. Rocholl and licensed under: pep8.py - Check Python source code formatting, according to PEP 8 Copyright (C) 2006 Johann C. Rocholl Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. phatch/actions/grid.py and phatch/actions/warm_up.py files are: Copyright (C) 2010 by Pawel T. Jochym , www.stani.be Files in tests/ are: Copyright (C) 2007-2010 www.stani.be Copyright (C) 2009 Nadia Alramli, Stani (www.stani.be) tools/change_tags.py: Copyright (C) 2009 Nadia Alramli, Stani (www.stani.be) debian/phatch.menu0000644000000000000000000000022211377533272011331 0ustar ?package(phatch):needs="X11"\ section="Applications/Graphics"\ title="phatch"\ description="Photo Batch Processor"\ command="/usr/bin/phatch" debian/control0000644000000000000000000000652012223111376010572 0ustar Source: phatch Section: graphics Priority: optional Maintainer: Python Applications Packaging Team Uploaders: Emilio Pozuelo Monfort , Stani M , Piotr Ożarowski Standards-Version: 3.9.4 Homepage: http://photobatch.stani.be Vcs-Browser: http://anonscm.debian.org/viewvc/python-apps/packages/phatch/trunk/ Vcs-Svn: svn://anonscm.debian.org/python-apps/packages/phatch/trunk/ Build-Depends: debhelper (>= 9), python, dh-python, pkg-config, python-sphinx, locate Package: phatch Architecture: all Depends: ${python:Depends}, ${misc:Depends}, phatch-cli (= ${binary:Version}), xdg-utils, # move these to phatch-wx in the future: python-wxgtk2.8, python-wxversion, Suggests: blender, inkscape Enhances: thunar Replaces: phatch-cli (<= 0.2.3-2) Description: simple to use Photo Batch Processor - GUI Phatch handles all popular image formats and can duplicate (sub)folder hierarchies. It can batch resize, rotate, apply perspective, shadows, rounded corners, ... and more in minutes instead of hours or days if you do it manually. Phatch allows you to use EXIF and IPTC tags for renaming and data stamping. Package: phatch-cli Conflicts: phatch (<< 0.2-1~) Breaks: phatch-nautilus (<< 0.2.7-3) Replaces: phatch-nautilus (<< 0.2.7-3) Architecture: all Depends: ${python:Depends}, ${misc:Depends}, python-imaging, python-notify, python-pyexiv2 (>= 0.3), libtiff-tools, fonts-freefont-ttf, fonts-thai-tlwg, locate | mlocate # move Recommends to phatch-plugins if we'll decide to split out plugins: Recommends: xcftools, dcraw, imagemagick, libjpeg-progs, exiftran Description: simple to use Photo Batch Processor - command line interface Phatch handles all popular image formats and can duplicate (sub)folder hierarchies. It can batch resize, rotate, apply perspective, shadows, rounded corners, ... and more in minutes instead of hours or days if you do it manually. Phatch allows you to use EXIF and IPTC tags for renaming and data stamping. . This package contains command line interface to Phatch. #Package: phatch-nautilus #Architecture: all #Depends: ${misc:Depends}, phatch, nautilus, python-nautilus #Enhances: nautilus #Description: simple to use Photo Batch Processor - Nautilus scripts # Phatch handles all popular image formats and can duplicate (sub)folder # hierarchies. It can batch resize, rotate, apply perspective, shadows, rounded # corners, ... and more in minutes instead of hours or days if you do it # manually. Phatch allows you to use EXIF and IPTC tags for renaming and data # stamping. # . # This package integrates Phatch with Nautilus. Package: phatch-doc Architecture: all Priority: extra Section: doc Depends: ${misc:Depends}, libjs-jquery Suggests: phatch Description: simple to use Photo Batch Processor - developer documentation Phatch handles all popular image formats and can duplicate (sub)folder hierarchies. It can batch resize, rotate, apply perspective, shadows, rounded corners, ... and more in minutes instead of hours or days if you do it manually. Phatch allows you to use EXIF and IPTC tags for renaming and data stamping. . This package provides Phatch documentation for developers. debian/phatch-cli.manpages0000644000000000000000000000001711377533272012727 0ustar linux/phatch.1 debian/watch0000644000000000000000000000016011377533272010226 0ustar version=3 opts="uversionmangle=s/.bzr/~bzr/" \ http://photobatch.stani.be/download/package/phatch-(.*)\.tar\.gz debian/patches/0000755000000000000000000000000011540207431010612 5ustar debian/patches/series0000644000000000000000000000006311540206306012026 0ustar do_not_raise_string_exceptions.patch pyexiv2.patch debian/patches/pyexiv2.patch0000644000000000000000000005264411540206504013254 0ustar Author: Olivier Tilloy Description: Adapt all uses of pyexiv2 to the new API (≥ 0.2). This patch actually makes use of new APIs introduced in pyexiv2 0.3, and would therefore require minor changes to work with pyexiv2 0.2 too. Bug: https://bugs.launchpad.net/phatch/+bug/585169 Index: phatch-0.2.7.1/AUTHORS =================================================================== --- phatch-0.2.7.1.orig/AUTHORS +++ phatch-0.2.7.1/AUTHORS @@ -27,7 +27,7 @@ http://www.python.org - Python 2.5.2 - P http://wxglade.sourceforge.net/ - wxGlade - Alberto Griggio pubsub.py - wxWidgets license - Oliver Schoenborn http://wiki.wxpython.org/TextCtrlAutoComplete - TextCtrlAutoComplete.py - wxWidgets license - Edward Flick (CDF Inc, http://www.cdf-imaging.com) -http://tilloy.net/dev/pyexiv2/ - PyExiv2 - GPL license - Olivier Somon +http://tilloy.net/dev/pyexiv2/ - pyexiv2 - GPL license - Olivier Tilloy http://www.gnome.org/projects/nautilus/ - python-nautilus - GPL license http://www.pythonware.com/products/pil/ - Python Image Library 1.1.6 - PIL license - Fredrik Lundh http://www.wxpython.org - wxPython 2.8.7.1 - wxWidgets license - Robin Dunn Index: phatch-0.2.7.1/phatch/core/pil.py =================================================================== --- phatch-0.2.7.1.orig/phatch/core/pil.py +++ phatch-0.2.7.1/phatch/core/pil.py @@ -180,8 +180,8 @@ class InfoPhoto(dict): metadata.InfoZexif: image} #check format -> readable/writable metadata with pyexiv2 if exif and exif.is_readable_format(image.format): - self.pyexiv2 = pyexiv2.Image(path) - self.pyexiv2.readMetadata() + self.pyexiv2 = pyexiv2.ImageMetadata(path) + self.pyexiv2.read() self.writable_exif = exif.is_writable_format_exif(image.format) self.writable_iptc = exif.is_writable_format_exif(image.format) self.writable = self.writable_exif or self.writable_iptc @@ -308,14 +308,9 @@ class InfoPhoto(dict): self.assert_transparency() del self.get_pil().info[tag] return - pyexiv2_tag = self._fix(tag) # pexiv2 demands str - # a bit clumsy but pyexiv2 does not support get or in - try: - pyexiv2_tag_value = self.pyexiv2[pyexiv2_tag] - except KeyError: - pyexiv2_tag_value = None - if self.pyexiv2 and pyexiv2_tag_value != None: - self.pyexiv2[pyexiv2_tag] = None + pyexiv2_tag = self._fix(tag) # pyexiv2 demands str + if pyexiv2_tag in self.pyexiv2: + del self.pyexiv2[pyexiv2_tag] if tag in self: super(InfoPhoto, self).__delitem__(tag) @@ -343,7 +338,26 @@ class InfoPhoto(dict): super(InfoPhoto, self).__setitem__(tag, value) if metadata.RE_PYEXIV2_TAG_EDITABLE.match(tag): try: - self.pyexiv2[self._fix(tag)] = value + key = self._fix(tag) + if isinstance(value, metadata.DateTime): + self.pyexiv2[key] = value.datetime + else: + if key.startswith('Iptc'): + stripped = value.strip() + if stripped.startswith('[') and stripped.endswith(']'): + # This looks like a list of values + try: + values = eval(stripped) + except SyntaxError: + value = [value] + else: + if isinstance(values, list): + value = values + else: + value = [value] + else: + value = [value] + self.pyexiv2[key] = value except Exception, message: raise KeyError('%s:\n%s' % (_('Impossible to write tag "%s"') % tag, message)) Index: phatch-0.2.7.1/phatch/data/info.py =================================================================== --- phatch-0.2.7.1.orig/phatch/data/info.py +++ phatch-0.2.7.1/phatch/data/info.py @@ -310,9 +310,9 @@ CREDITS = { 'license': 'wxWidgets license', 'url': 'http://wiki.wxpython.org/TextCtrlAutoComplete', }, - {'name': 'PyExiv2', + {'name': 'pyexiv2', 'url': 'http://tilloy.net/dev/pyexiv2/', - 'author': 'Olivier Somon', + 'author': 'Olivier Tilloy', 'license': 'GPL license', }, {'name': 'python-nautilus', Index: phatch-0.2.7.1/phatch/lib/_pyexiv2.py =================================================================== --- phatch-0.2.7.1.orig/phatch/lib/_pyexiv2.py +++ phatch-0.2.7.1/phatch/lib/_pyexiv2.py @@ -15,15 +15,13 @@ # Follows PEP8 -import re +import os +import shutil +import system + import pyexiv2 -BROKEN = 'Exif[.]Canon' -RE_BROKEN = re.compile(BROKEN) -ISSUES = 'Saving metadata to %s caused following issues:\n' -FAILED = ''' -Failed to save metadata to %s:\npyexiv2: %s -Trying again by ignoring tags with following pattern:\n%s\n''' +FAILED = 'Failed to save metadata to %s:\npyexiv2: %s\n' #info taken from http://dev.exiv2.org/wiki/exiv2/Supported_image_formats READ_EXIF = ['JPEG', 'EXV', 'CR2', 'CRW', 'MRW', 'TIFF', 'DNG', 'NEF', 'PEF', @@ -76,7 +74,7 @@ def write_metadata(source_pyexiv2_image, target_format=None, thumbdata=None): """ :param source_pyexiv2_image: file opened by pyexiv2 - :type source_pyexiv2_image: pyexiv2.Image + :type source_pyexiv2_image: pyexiv2.ImageMetadata :param target: target filename :type target: string :param source_format: source format e.g. obtained by PIL @@ -89,106 +87,21 @@ def write_metadata(source_pyexiv2_image, #if there is nothing to read or write, return immediately if not is_writable_format(target_format): return '' - #correct tags if not source_pyexiv2_image: return '' - #make two attempts to copy metadata: - #1. normal - #2. exclude tags which (might) break exiv2 (eg Canon tuples) - - # This will probably be obsolete for python-pyexiv2 0.2 - # -> If that is True add a version check - - #verify if there are tags which might break exiv2 - broken_tag = None - - for tag in list(source_pyexiv2_image.exifKeys()) + \ - list(source_pyexiv2_image.iptcKeys()): - if RE_BROKEN.match(tag): - broken_tag = RE_BROKEN - break - - #copy the tags - log = '' - - #attempt to copy metadata + target, temp = read_metadata_temp(target) try: - warnings = _copy_metadata(source_pyexiv2_image, target, - source_format, target_format, broken_tag, thumbdata) - copied = True - except Exception, message: - copied = False - - #if metadata copied succesfully, check for warnings - if copied: - if warnings: - log += ISSUES % target + warnings + source_pyexiv2_image.copy(target) + except Exception, error: + if temp: + temp.close() + return FAILED % (target.filename, error.message) else: - log = FAILED % (target, message, BROKEN) - - return log - - -def _copy_metadata(source_pyexiv2_image, target, source_format=None, - target_format=None, broken_tag=None, thumbdata=None): - """ - :param source_pyexiv2_image: file opened by pyexiv2 - :type source_pyexiv2_image: pyexiv2.Image - :param target: target filename - :type target: string - :param source_format: source format e.g. obtained by PIL - :type source_format: string - :param target_format: target format e.g. obtained by PIL - :type target_format: string - :param broken_tag: tag which might possibly break the metadata writing - :type broken_tag: compiled regular expression - :param thumbdata: new thumbnail (e.g. with StringIO, see :mod:`imtools`) - :type thumbdata: string - """ - #read target - target = pyexiv2.Image(target) - target.readMetadata() - warnings = [] - written = False - #copy exif metadata - if (not source_format or source_format in READ_EXIF) and \ - (not target_format or target_format in WRITE_EXIF): - for tag in source_pyexiv2_image.exifKeys(): - if not(broken_tag and broken_tag.match(tag)): - try: - #the following is more or less the same as - #target[tag] = source_pyexiv2_image[tag] - #but prevents conversions - target._Image__setExifTag(tag, - source_pyexiv2_image._Image__getExifTag(tag)[1]) - written = True - except Exception, message: - message = '%s: %s' % (tag, message) - warnings.append(message) - #copy iptc metadata - if (not source_format or source_format in READ_IPTC) and \ - (not target_format or target_format in WRITE_IPTC): - for tag in source_pyexiv2_image.iptcKeys(): - try: - target[tag] = source_pyexiv2_image[tag] - written = True - except Exception, message: - message = '%s: %s' % (tag, message) - warnings.append(message) - #copy comment - if (not source_format or source_format in READ_COMMENT) and \ - (not target_format or target_format in WRITE_COMMENT): - try: - target.setComment(source_pyexiv2_image.getComment()) - written = True - except Exception, message: - warnings.append(message) - warnings.append(write_thumbdata(target, thumbdata)) - #save metadata (this might rise an exception) - if written: - target.writeMetadata() - return '\n'.join(warnings) + target.write() + if temp: + temp.close(dest=target.filename) + return '' def extension_to_image_format(ext): @@ -202,7 +115,7 @@ def extension_to_image_format(ext): def read_thumbdata(image): try: - return image.getThumbnailData() + return image.exif_thumbnail.data except Exception, message: return None @@ -211,7 +124,7 @@ def write_thumbdata(image, thumbdata=Non if (thumbdata is None): return '' try: - image.setThumbnailData(thumbdata) + image.exif_thumbnail.data = thumbdata return '' except Exception, message: return unicode(message) @@ -234,7 +147,21 @@ def write_thumbdata(image, thumbdata=Non def flush(image, thumbdata): warnings = [write_thumbdata(image, thumbdata)] try: - image.writeMetadata() + image.write() except Exception, message: warnings.append(unicode(message)) return '\n'.join(warnings) + + +def read_metadata_temp(filename): + try: + image = pyexiv2.ImageMetadata(filename) + image.read() + temp = None + except (IOError, UnicodeDecodeError): + temp = system.TempFile(suffix=os.path.splitext(filename)[-1]) + shutil.copy2(filename, temp.path) + image = pyexiv2.ImageMetadata(temp.path) + image.read() + return image, temp + Index: phatch-0.2.7.1/phatch/lib/imageTable.py =================================================================== --- phatch-0.2.7.1.orig/phatch/lib/imageTable.py +++ phatch-0.2.7.1/phatch/lib/imageTable.py @@ -27,6 +27,7 @@ if __name__ == '__main__': import glob import os import re +import bisect import metadata import openImage @@ -204,8 +205,8 @@ class Table(object): #---key def _add_key(self, key): if not(key in self.keys): - self.keys = self.keys[:self.key_amount] + [key]\ - + self.keys[self.key_amount:] + # keep the list of keys alphabetically sorted + bisect.insort(self.keys, key, hi=self.key_amount) self.key_amount += 1 def add_key(self, key, value=''): @@ -306,11 +307,28 @@ class Table(object): key, image = self._get_key_image(row, col) if value == self.get_cell_value(row, col): return + if value == '': + value = None return self.set_image_key_value(image, key, value) def set_image_key_value(self, image, key, value): if not(value is None): value = unicode(value) + if key.startswith('Iptc'): + stripped = value.strip() + if stripped.startswith('[') and stripped.endswith(']'): + # This looks like a list of values + try: + values = eval(stripped) + except SyntaxError: + value = [value] + else: + if isinstance(values, list): + value = values + else: + value = [value] + else: + value = [value] return self._write( changes=((image, {key: value}), ), error_message=_('Unable to save tag <%s>')) @@ -353,18 +371,19 @@ class Table(object): """ log = [] keys_to_delete = set() + keys_to_add = set() for image, image_changes in changes: # try to save to image file try: - exiv2_image = pyexiv2.Image(image.filename) - exiv2_image.readMetadata() + exiv2_image = pyexiv2.ImageMetadata(image.filename) + exiv2_image.read() for key, value in image_changes.items(): exiv2_key = str(key.replace(SEPARATOR, '.')) if value: exiv2_image[exiv2_key] = value else: del exiv2_image[exiv2_key] - exiv2_image.writeMetadata() + exiv2_image.write() except Exception, error: log.append('%s:\n%s'\ % (error_message % key, unicode(error))) @@ -373,14 +392,28 @@ class Table(object): image.update_time() if value: image.info[key] = value + before = set(image.info.keys()) metadata.InfoExtract.expand_var(image.info, key, metadata.convert_from_string(value)) + after = set(image.info.keys()) + removed = before - after + for key in removed: + keys_to_delete.add(key) + added = after - before + for key in added: + keys_to_add.add(key) else: + for k in image.info.keys(): + if k.startswith('%s[' % key): + del image.info[k] + keys_to_delete.add(k) del image.info[key] keys_to_delete.add(key) for key in keys_to_delete: if self.is_key_empty(key): self._delete_key(key) + for key in keys_to_add: + self._add_key(key) return '\n'.join(log) #---selecting Index: phatch-0.2.7.1/phatch/lib/metadata.py =================================================================== --- phatch-0.2.7.1.orig/phatch/lib/metadata.py +++ phatch-0.2.7.1/phatch/lib/metadata.py @@ -899,7 +899,7 @@ class _InfoPyexiv2(_InfoCache): :type var: string """ return self.convert(self._source['%s.%s' \ - % (self.type, var.replace('_', '.'))]) + % (self.type, var.replace('_', '.'))].value) def _extract_others_from_keys(self, exif_keys): """Extract all other vars""" @@ -907,7 +907,7 @@ class _InfoPyexiv2(_InfoCache): _var = var.replace('.', '_') if not(_var in self.dict): try: - value = self._source[var] + value = self._source[var].value except: continue self.dict[_var] = self.convert(value) @@ -921,21 +921,16 @@ class _InfoPyexiv2(_InfoCache): cls._pyexiv2 = _pyexiv2 @classmethod - def _get_source_from_file(cls, filename, all=False): + def _get_source_from_file(cls, filename): """Load the pyexiv2 source from a file. :param filename: filename of the source file :type filename: string - :param all: cache all tags - :type all: bool """ format = imtools.get_format(os.path.splitext(filename)[-1][1:]) if cls._pyexiv2.is_readable_format(format): - source = cls.pyexiv2.Image(filename) - source.readMetadata() - if all: - source.cacheAllExifTags() - source.cacheAllIptcTags() + source = cls.pyexiv2.ImageMetadata(filename) + source.read() return source else: return {} @@ -949,8 +944,8 @@ class InfoExif(_InfoPyexiv2): >>> info['Exif_Image_DateTime'] DateTime('2010:03:03 11:03:08') >>> import pyexiv2 - >>> exif = pyexiv2.Image(filename) - >>> exif.readMetadata() + >>> exif = pyexiv2.ImageMetadata(filename) + >>> exif.read() >>> info = InfoExif(exif) >>> info['Exif_Image_DateTime'] DateTime('2010:03:03 11:03:08') @@ -1124,13 +1119,13 @@ class InfoExif(_InfoPyexiv2): """Extract orientation from source image as integer.""" try: #be careful to use dots here instead of _ - self.dict['orientation'] = self._source['Exif.Image.Orientation'] + self.dict['orientation'] = self._source['Exif.Image.Orientation'].value except KeyError: self.dict['orientation'] = 1 def _extract_others(self): """Extract all other vars""" - self._extract_others_from_keys(self._source.exifKeys()) + self._extract_others_from_keys(self._source.exif_keys) regex = re.compile('^Exif|^orientation$') type = 'Exif' @@ -1150,8 +1145,8 @@ class InfoIptc(_InfoPyexiv2): >>> info['Iptc_Application2_RecordVersion'] 0 >>> import pyexiv2 - >>> exif = pyexiv2.Image(filename) - >>> exif.readMetadata() + >>> exif = pyexiv2.ImageMetadata(filename) + >>> exif.read() >>> info = InfoIptc(exif) >>> info['Iptc_Application2_RecordVersion'] 0 @@ -1170,7 +1165,7 @@ class InfoIptc(_InfoPyexiv2): def _extract_others(self): """Extract all other vars""" - self._extract_others_from_keys(self._source.iptcKeys()) + self._extract_others_from_keys(self._source.iptc_keys) type = 'Iptc' regex = re.compile('^Iptc_') @@ -2129,9 +2124,22 @@ class InfoExtract: if isinstance(value, DateTime): for attr in DateTime.attrs: d['%s.%s' % (key, attr)] = getattr(value, attr) - elif type(value) in (tuple, list) and len(value) < 10: - for index, value_index in enumerate(value): - d['%s[%d]' % (key, index)] = value[index] + elif isinstance(value, list) and len(value) < 10: + # IPTC values (always a list) + if len(value) == 1: + d[key] = value[0] + else: + for index, value_index in enumerate(value): + d['%s[%d]' % (key, index)] = value[index] + # Delete extra values if needed: + index = len(value) + while True: + try: + del d['%s[%d]' % (key, index)] + except KeyError: + break + else: + index = index + 1 elif hasattr(value, 'denominator') and value.denominator != 1: d['%s.denominator' % key] = value.denominator d['%s.numerator' % key] = value.numerator Index: phatch-0.2.7.1/phatch/lib/openImage.py =================================================================== --- phatch-0.2.7.1.orig/phatch/lib/openImage.py +++ phatch-0.2.7.1/phatch/lib/openImage.py @@ -77,9 +77,9 @@ def open_image_exif(uri): def open_image_exif_thumb(uri): if pyexiv2: try: - pyexiv2_image = pyexiv2.Image(uri) - pyexiv2_image.readMetadata() - thumb_data = pyexiv2_image.getThumbnailData() + pyexiv2_image = pyexiv2.ImageMetadata(uri) + pyexiv2_image.read() + thumb_data = pyexiv2_image.exif_thumbnail.data if thumb_data: return imtools.open_image_data(thumb_data) except Exception, details: Index: phatch-0.2.7.1/tests/test_suite/utils.py =================================================================== --- phatch-0.2.7.1.orig/tests/test_suite/utils.py +++ phatch-0.2.7.1/tests/test_suite/utils.py @@ -168,12 +168,12 @@ def match_metadata(image1_path, image2_p """Compare images metadata""" try: import pyexiv2 - image1 = pyexiv2.Image(image1_path) - image1.readMetadata() - image2 = pyexiv2.Image(image2_path) - image2.readMetadata() - metadata1 = sorted([(key, image1[key]) for key in image1.exifKeys()]) - metadata2 = sorted([(key, image2[key]) for key in image2.exifKeys()]) + image1 = pyexiv2.ImageMetadata(image1_path) + image1.read() + image2 = pyexiv2.ImageMetadata(image2_path) + image2.read() + metadata1 = sorted([(key, image1[key].value) for key in image1.exif_keys]) + metadata2 = sorted([(key, image2[key].value) for key in image2.exif_keys]) return metadata1 == metadata2 except IOError: return True debian/patches/do_not_raise_string_exceptions.patch0000644000000000000000000000173111377535031020141 0ustar Index: phatch-0.2.7/phatch/lib/pyWx/treeDragDrop.py =================================================================== --- phatch-0.2.7.orig/phatch/lib/pyWx/treeDragDrop.py +++ phatch-0.2.7/phatch/lib/pyWx/treeDragDrop.py @@ -78,7 +78,7 @@ class Mixin: return 0 return 1 else: - raise 'no order' + raise Exception('no order') # Drag & drop def EnableDrag(self, dragTo=None): Index: phatch-0.2.7/phatch/other/pubsub.py =================================================================== --- phatch-0.2.7.orig/phatch/other/pubsub.py +++ phatch-0.2.7/phatch/other/pubsub.py @@ -97,7 +97,7 @@ def _paramMinCount(callableObject): elif isfunction(callableObject): return _paramMinCountFunc(callableObject) else: - raise 'Cannot determine type of callable: '+repr(callableObject) + raise Exception('Cannot determine type of callable: '+repr(callableObject)) def _tupleize(items): debian/source/0000755000000000000000000000000011377534437010504 5ustar debian/source/format0000644000000000000000000000001411377535300011700 0ustar 3.0 (quilt) debian/changelog0000644000000000000000000002262312223111234011034 0ustar phatch (0.2.7.1-3) unstable; urgency=low * Replace python-imaging-compat dependency with python-imaging (closes: 722920) -- Piotr Ożarowski Wed, 02 Oct 2013 23:38:19 +0200 phatch (0.2.7.1-2) unstable; urgency=low [ Jakub Wilk ] * Use canonical URIs for Vcs-* fields. [ Barry Warsaw ] * debian/control - Depend on python-imaging-compat since PILcompat.pth is necessary to expose the required imports. (Closes: #709370) [ Piotr Ożarowski ] * Replace ttf-thai-tlwg dependency with fonts-thai-tlwg and ttf-freefont with fonts-freefont-ttf (closes: #709763) * Convert from pysupport to dh_python2, add dh-python to Build-Depends (closes: #658852) * Convert from cdbs to dh (and pybuild build system) * python-nautilus removed from Build-Depends (closes: #644979) * Byte-compile Python files in phatch-cli package (closes: #659880) * Bump Standards-Version to 3.9.4 (no changes needed) * Bump debian/compat to 9 -- Piotr Ożarowski Sat, 31 Aug 2013 20:35:18 +0200 phatch (0.2.7.1-1) unstable; urgency=low * New upstream release * Add pyexiv2.patch to use new pyexiv2 API (thanks to Olivier Tilloy, closes: #614008 and LP: #710874) * Bump python-pyexiv2's minimum required version to 0.3 * Bump Standards-Version to 3.9.1 (no changes needed) -- Piotr Ożarowski Wed, 16 Mar 2011 20:09:14 +0100 phatch (0.2.7-5) unstable; urgency=low * Fix version number in phatch-cli Replaces/Conflicts (really closes: 608952) -- Piotr Ożarowski Sat, 08 Jan 2011 15:06:17 +0100 phatch (0.2.7-4) unstable; urgency=low * Make sure old phatch-nautilus package is removed (closes: 608952) -- Piotr Ożarowski Tue, 04 Jan 2011 23:49:48 +0100 phatch (0.2.7-3) unstable; urgency=low * Drop phatch-nautilus binary package until next upstream release (closes: 601622) * Do not compress objects.inv file (closes: 608764) -- Piotr Ożarowski Mon, 03 Jan 2011 23:01:27 +0100 phatch (0.2.7-2) unstable; urgency=low * Prepare for Python 2.6: - do_not_raise_string_exceptions.patch added * Source package format changed to 3.0 (quilt) -- Piotr Ożarowski Thu, 27 May 2010 20:17:37 +0200 phatch (0.2.7-1) unstable; urgency=low [ Stani M ] * Upstream bugfix release (Closes LP: #472978, #487435, #516763, #516858, #525999, #526047, #526235, #526237, #526489, #529343, #529429, #525831, #526237, #529544, #529605, #531375, #531705, #531728, #532346, #532356, #532540, #532544, #533068, #534723, #534834, #534835, #535189, #535192, #536820) * debian/control: Add python-nautilus to phatch-nautilus's Depends [ Emilio Pozuelo Monfort ] * debian/rules: - Adapt for the upstream changes. * debian/copyright: - Updated for the new version. -- Emilio Pozuelo Monfort Fri, 12 Mar 2010 14:04:02 +0100 phatch (0.2.6-1) unstable; urgency=low * New upstream release * Add xdg-utils to phatch's Depends * Bump Standards-Version to 3.8.4 (no changes needed) -- Piotr Ożarowski Tue, 16 Feb 2010 22:43:48 +0100 phatch (0.2.5-1) unstable; urgency=low [ Stani M ] * Upstream bugfix release (Closes LP: #454426, #458366, #469231, #481751, #492665) * debian/watch: updated new location [ Bernd Zeimetz ] * debian/control: - Removing myself from Uploaders. -- Stani M Thu, 10 Dec 2009 01:07:36 +0100 phatch (0.2.4-1) unstable; urgency=low * Upstream bugfix release (Closes LP: #450693, #449404, #452261, #448993) * debian/control: added for phatch: Replaces: phatch-cli (<= 0.2.3-2) to fix file overwrite errors (LP: #450800) -- Stani M Thu, 15 Oct 2009 18:22:54 +0200 phatch (0.2.3-2) unstable; urgency=low * phatch.desktop and menu files are now shipped by phatch package (LP: #449210) - add lintian overrides for above changes (phatch depends on phatch-cli so everything is ok) -- Piotr Ożarowski Mon, 12 Oct 2009 11:53:43 +0200 phatch (0.2.3-1) unstable; urgency=low * Upstream bugfix release (Closes LP: #448845, #446725, #445943) -- Stani M Sun, 11 Oct 2009 19:07:45 +0200 phatch (0.2.2-1) unstable; urgency=low * Upstream bugfix release (Closes LP: #236548, #436595, #437161, #437376, #437852, #439108, #439359, #440273, #440956) * debian/control: Dropped dependency python-wxgtk2.6 -- Stani M Thu, 01 Oct 2009 05:36:09 +0200 phatch (0.2.1-4) unstable; urgency=low * Add mlocate as an alternative dependency to locate (Closes: #548251) -- Piotr Ożarowski Fri, 25 Sep 2009 23:22:12 +0200 phatch (0.2.1-3) unstable; urgency=low * replace --install-scripts=/usr/bin with --prefix=/usr (so that data files will be installed in the right place as well) -- Piotr Ożarowski Thu, 24 Sep 2009 20:16:44 +0200 phatch (0.2.1-2) unstable; urgency=low * pass --install-scripts=/usr/bin to setup.py (otherwise it will FTBFS when default Python version is >= 2.6) -- Piotr Ożarowski Thu, 24 Sep 2009 18:28:39 +0200 phatch (0.2.1-1) unstable; urgency=low [ Stani M ] * New upstream release (Closes LP: #198365, #234788, #270478, #297241, #304132, #311646, #344548, #352009, #378889, #378890, #379280, #379720, #380415, #380776, #380816, #381091, #381145, #381149, #381169, #381379, #381660, #382266, #382763, #382766, #382776, #382977, #383140, #383664, #383889, #384273, #384315, #384322, #384420, #384421, #384495, #384522, #384548, #384974, #385058, #385059, #385166, #385246, #385356, #385740, #386411, #386494, #386509, #386638, #386643, #386707, #386741, #386761, #386772, #387116, #387413, #388094, #388155, #388371, #388848, #390070, #391006, #391483, #391484, #391486, #391488, #391539, #391542, #392907, #392999, #393183, #393255, #393257, #393993, #394022, #394041, #394946, #398704, #413271, #415152, #418519, #419459, #419563, #425910) * debian/copyright: - Added copyrights for the new contributions. * debian/control: - Added python-notify and libtiff-tools as dependencies [ Emilio Pozuelo Monfort ] * debian/rules: - Install phatch in /usr/share/phatch instead of as a public module. - Stop removing a file from a pysupport folder. With the above change is not necessary anymore. Closes: #516322. * debian/copyright: - Add "Copyright" to the debian copyright. - Update years. * debian/control: - move python-nautilus and pkg-config to Build-Depends-Indep. - Wrap depends. * Update my email address. [ Piotr Ożarowski ] * Splitting out the package, new binary packages: - phatch-cli (command line interface) - phatch-doc (documentation for developers) - phatch-nautilus (Python nautilus integration) * Add blender and inkscape to phatch's Suggests * Add imagemagick, libjpeg-progs, exiftran, xcftools and dcraw to phatch-cli's Recommends (new actions will use them) * Add ttf-freefont and ttf-thai-tlwg to phatch-cli Depends (and add symlinks to use fonts from these packages instead of local copies) * Add locate to phatch-cli's Depends (used to find fonts) * Add python-sphinx and locate to build depens (docs are regenerated at build time) * Add lintian override for extra-license-file in phatch-doc (false positive) * Bump Standards-Version to 3.8.3 (no changes needed) -- Piotr Ożarowski Wed, 23 Sep 2009 10:24:46 +0200 phatch (0.1.6-1) unstable; urgency=low [ Stani M ] * New upstream release (Closes LP: #288404, #277073, #260549) [ Emilio Pozuelo Monfort ] * Fix watch file. [ Sandro Tosi ] * debian/control - switch Vcs-Browser field to viewsvn -- Piotr Ożarowski Sun, 09 Nov 2008 21:43:23 +0100 phatch (0.1.5-1) unstable; urgency=medium [ Stani M ] * New upstream release(Closes LP: #228259, #232436, #236282, #236462, #237359) * debian/control: - Added pkg-config and python-nautilus to build-depends, as setup.py uses nautilus-python.pc to look for the nautilus extensions path. Closes: #475233. * debian/patches: - All patches of Ubuntu and Debian are implemented upstream and are removed from the package [ Piotr Ożarowski ] * Bump Standards-Version to 3.8.0 (no changes needed) * debian/copyright wrapped at column 80 (where possible) -- Piotr Ożarowski Mon, 21 Jul 2008 12:53:17 +0200 phatch (0.1.3-2) unstable; urgency=low * debian/patches/from_upstream_fix_themes.patch: - Fix Phatch not working properly with some themes. Thanks to Stani for the patch. -- Emilio Pozuelo Monfort Wed, 09 Apr 2008 14:00:05 +0200 phatch (0.1.3-1) unstable; urgency=low * New upstream release -- Stani M Mon, 07 Apr 2008 14:23:43 +0200 phatch (0.1.2-1) unstable; urgency=low * New upstream release -- Stani M Sat, 29 Mar 2008 00:21:07 +0100 phatch (0.1.1-1) unstable; urgency=low * New upstream release [ Stani M ] * Short and long description updated [ Piotr Ożarowski ] * Add myself to Uploaders -- Piotr Ożarowski Thu, 06 Mar 2008 20:09:11 +0100 phatch (0.1-1) unstable; urgency=low * Initial release (Closes: #454499) -- Emilio Pozuelo Monfort Wed, 13 Feb 2008 23:48:47 +0100 debian/phatch.dirs0000644000000000000000000000007211377533272011331 0ustar /usr/share/phatch/phatch/lib /usr/share/lintian/overrides debian/phatch-doc.dirs0000644000000000000000000000007111377533272012073 0ustar /usr/share/doc/phatch/html/ /usr/share/lintian/overrides debian/phatch.lintian0000644000000000000000000000024211377533272012025 0ustar phatch: desktop-command-not-in-package /usr/share/applications/phatch.desktop phatch phatch: menu-command-not-in-package /usr/share/menu/phatch:5 /usr/bin/phatch