degal/image.py
author Tero Marttila <terom@fixme.fi>
Fri, 05 Jun 2009 23:42:03 +0300
changeset 76 e22d9f699081
parent 70 67dd32adf159
child 77 2a53c5ade434
permissions -rw-r--r--
misc. fixes
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     1
"""
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     2
    Per-image gallery state
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     3
"""
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     4
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     5
from __future__ import with_statement
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     6
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
     7
import filesystem, render, html
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
     8
from utils import lazy_load
12
c2d8e9a754a1 Major code restructuring. Version is now 0.5, templates use Mako, and the code is split off into several files under lib/
terom
parents:
diff changeset
     9
c2d8e9a754a1 Major code restructuring. Version is now 0.5, templates use Mako, and the code is split off into several files under lib/
terom
parents:
diff changeset
    10
import PIL.Image
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    11
from lib import EXIF
33
4943047bfcb5 merged http://pajukanta.fi/temp/degal_exif_r33.tar.bz2 patch from Japsu
terom
parents: 28
diff changeset
    12
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    13
class Image (filesystem.File) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    14
    """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    15
        An Image is a filesystem File that represents an image that can be thumbnailed, and handled.
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    16
    """
44
533b7e8b5d3b strip copyright/license boilerplate from modules, except dexif and formatbytes
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
    17
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
    18
    def __init__ (self, *args, **kwargs) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    19
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    20
            Initialize as an Image based on the given Node, linked with the given previous node
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    21
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    22
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    23
        super(Image, self).__init__(node)
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    24
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    25
        # links
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
    26
        self.prev = None
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    27
        self.next = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    28
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    29
        # the .html file for this image
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    30
        self.html = self.parent.subfile(self.basename + '.html')
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    31
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    32
        # info
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    33
        self.title = self.name
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    34
        self.description = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    35
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    36
        # lazy-loading
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    37
        self.img = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    38
        self.exif = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    39
        self.metadata = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    40
        self.stat_data = None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    41
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    42
    def load_stat (self) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    43
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    44
            Load and return the os.stat info for this file
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    45
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    46
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    47
        if not self.stat_data :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    48
            self.stat_data = self.stat()
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    49
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    50
        return self.stat_data
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    51
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    52
    def load_image (self) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    53
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    54
            Loads the image as a PIL.Image
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    55
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    56
        
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    57
        if not self.img :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    58
            # open it up
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    59
            self.img = PIL.Image.open(self.path)
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    60
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    61
        return self.img
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    62
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    63
    def load_exif (self) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    64
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    65
            Loads the EXIF data for the image and returns as a dict of EXIF tag names -> values.
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    66
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    67
            Returns None if no exif data was found
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    68
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    69
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    70
        if self.exif is None :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    71
            # load
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    72
            with self.open('rb') as fh :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    73
                # XXX: details=False?
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    74
                self.exif = EXIF.process_file(fh)
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    75
            
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    76
        # empty dict -> no exif data
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    77
        if self.exif :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    78
            return self.exif
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    79
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    80
        else :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    81
            return None
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    82
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    83
    def load_metadata (self) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    84
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    85
            Load and return the metadata for the image as a dictionary
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    86
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    87
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    88
        if not self.metadata :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    89
            # load stuff
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    90
            stat = self.load_stat()
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    91
            exif = self.load_exif()
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    92
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    93
            # XXX: avoid having to open the image?
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    94
            size = self.load_image().size
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    95
            
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    96
            # build
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    97
            self.metadata = dict({
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    98
                "File name":        self.name,
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
    99
                "Resolution":       "%dx%d" % size,
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   100
                "File size":        format.filesize(stat.st_size),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   101
                "Last modified":    format.filetime(stat.st_mtime),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   102
            }, **dict(
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   103
                (name, exif[tag]) for tag, name in self.config.exif_tags if exif and tag in exif
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   104
            ))
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   105
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   106
        return self.metadata
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   107
    
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   108
    @lazy_load
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   109
    def thumb (self) :
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   110
        """
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   111
            Load and update the thumbnail if needed
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   112
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   113
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   114
        # renderer to use
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   115
        # XXX: get from elsewhere
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   116
        render_machine = self.config.get_renderer()
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   117
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   118
        # render if needed
76
e22d9f699081 misc. fixes
Tero Marttila <terom@fixme.fi>
parents: 70
diff changeset
   119
        return render_machine.render_lazy(self,
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   120
            self.config.thumb_size, self.parent.load_thumb_dir.subnode(self.name)
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   121
        )
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   122
    
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   123
    @lazy_load
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   124
    def preview (self) :
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   125
        """
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   126
            Load and update the preview if needed
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   127
        """
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   128
70
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   129
        # renderer to use
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   130
        # XXX: get from elsewhere
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   131
        render_machine = self.config.get_renderer()
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   132
67dd32adf159 remove old Folder, Image code, wrap up both
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   133
        return render_machine.render_lazy(self, 
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   134
            self.config.preview_size, self.parent.load_preview_dir.subnode(self.name)
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 44
diff changeset
   135
        )
44
533b7e8b5d3b strip copyright/license boilerplate from modules, except dexif and formatbytes
Tero Marttila <terom@fixme.fi>
parents: 41
diff changeset
   136