degal/config.py
author Tero Marttila <terom@fixme.fi>
Wed, 01 Jul 2009 20:40:00 +0300
changeset 141 9387da0dc183
parent 135 6534c77de93f
child 142 2b8dfacc6d2d
permissions -rw-r--r--
move .config from filesystem to gallery/folder/image, rename degal_dir to app_dir
51
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Configuration
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
     5
import copy, logging
67
01220ae43902 add log_level config setting
Tero Marttila <terom@fixme.fi>
parents: 60
diff changeset
     6
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
     7
class InstanceContext (object) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
     8
    """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
     9
        An object that behaves like a dict, performing all item lookups as attribute lookups on the given object.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    10
134
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    11
        Additionally, it only lets you re-bind existing attributes via setitem, raising AttributeError if setting
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    12
        unknown attributes.
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    13
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    14
        Useful for binding an exec statement's locals.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    15
    """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    16
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    17
    def __init__ (self, obj) : self.obj = obj
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    18
    def __getitem__ (self, key) : return getattr(self.obj, key)
134
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    19
    def __setitem__ (self, key, value) : 
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    20
        """
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    21
            Replace the named attribute, asserting that the target has such an attribute.
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    22
        """
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    23
        
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    24
        # test
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    25
        if hasattr(self.obj, key) :
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    26
            setattr(self.obj, key, value)
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    27
        
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    28
        else :
ea05fe81ff67 modify config.InstanceContext to raise an AttributeError for __setitem__ on non-pre-existing attributes - this makes a lot of sense :)
Tero Marttila <terom@fixme.fi>
parents: 120
diff changeset
    29
            raise AttributeError(key)
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    30
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    31
class ConfigurationMachinery (object) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    32
    """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    33
        The low-level configuration machinery.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    34
    """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    35
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    36
    def import_py (self, path) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    37
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    38
            Import python-style configuration from the given File object into this one.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    39
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    40
            This runs the file's code using exec, using a context mapped to this object.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    41
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    42
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    43
        # the code
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    44
        file = open(path)
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    45
 
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    46
        # build suitable locals/globals to proxy this object
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    47
        locals = InstanceContext(self)
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    48
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    49
        # run
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    50
        exec file in {}, locals
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    51
       
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    52
    def import_file (self, path) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    53
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    54
            Import configuration from the given File into this one.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    55
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    56
        
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    57
        # as python code
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    58
        self.import_py(path)
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    59
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    60
    def load (self, path) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    61
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    62
            Loads the configuration from the given File, creating a new Configuration with defaults from this one.
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    63
        """
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    64
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    65
        # copy ourself
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    66
        new = copy.copy(self)
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    67
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    68
        # import into it
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    69
        new.import_file(path)
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    70
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    71
        # return
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    72
        return new
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    73
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    74
class Configuration (ConfigurationMachinery) :
51
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
    """
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
        Various configuration settings
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
    """
67
01220ae43902 add log_level config setting
Tero Marttila <terom@fixme.fi>
parents: 60
diff changeset
    78
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    79
    # the path to the gallery root
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    80
    # only valid in top-level config
60
406da27a4be2 do some filesystem.Path stuff, and read_only mode
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
    81
    gallery_path        = "."
87
a7a18893730d implement up-to-date checking for commands.main, and add --force-update option
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    82
    
a7a18893730d implement up-to-date checking for commands.main, and add --force-update option
Tero Marttila <terom@fixme.fi>
parents: 77
diff changeset
    83
    # force-update items
101
698dc68a985d split --force-update into --force-thumb/--force-html options, implement for main
Tero Marttila <terom@fixme.fi>
parents: 87
diff changeset
    84
    force_thumb         = False
698dc68a985d split --force-update into --force-thumb/--force-html options, implement for main
Tero Marttila <terom@fixme.fi>
parents: 87
diff changeset
    85
    force_html          = False
60
406da27a4be2 do some filesystem.Path stuff, and read_only mode
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
    86
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    87
    def get_force_update (self) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    88
        return self.force_thumb or self.force_html
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    89
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    90
    def set_force_update (self, value) :
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    91
        self.force_thumb = self.force_html = value
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    92
    
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    93
    force_update = property(get_force_update, set_force_update)
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    94
67
01220ae43902 add log_level config setting
Tero Marttila <terom@fixme.fi>
parents: 60
diff changeset
    95
    # minimum logging level
01220ae43902 add log_level config setting
Tero Marttila <terom@fixme.fi>
parents: 60
diff changeset
    96
    log_level           = logging.INFO
01220ae43902 add log_level config setting
Tero Marttila <terom@fixme.fi>
parents: 60
diff changeset
    97
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    98
    def quiet (self) : self.log_level = logging.WARN
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
    99
    def debug (self) : self.log_level = logging.DEBUG
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   100
117
a2e4562deaab implement concurrency... :)
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
   101
    # number of threads to use for concurrency
135
6534c77de93f urlencode native filesystem node paths for template's http URLs
Tero Marttila <terom@fixme.fi>
parents: 134
diff changeset
   102
    # use some heuristic?
117
a2e4562deaab implement concurrency... :)
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
   103
    thread_count        = 2
a2e4562deaab implement concurrency... :)
Tero Marttila <terom@fixme.fi>
parents: 111
diff changeset
   104
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   105
    # the name of this folder, only applies on one level
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   106
    # default applies to the root gallery
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   107
    title               = "Image Gallery"
51
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   109
    # recognized image extensions, case-insensitive
51
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
    image_exts          = ('jpg', 'jpeg', 'png', 'gif', 'bmp')
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
    
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   112
    # subdirectory names used for generated thumbnails/previews
51
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
    thumb_dir           = 'thumbs'
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
    preview_dir         = 'previews'
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   116
    # size of generated thumbnails/previews as (width, height) tuples
51
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
    thumb_size          = (160, 120)
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
    preview_size        = (640, 480)
0f39cb5e4b11 start writing new structure, with config, render, filesystem modules
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   120
    # number of images displayed per folder page
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   121
    images_per_page     = 50
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   122
    
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   123
    # load Exif data for images, this may be slow
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   124
    with_exif           = False
111
ecceaf23c969 make loading exif metadata optional
Tero Marttila <terom@fixme.fi>
parents: 109
diff changeset
   125
120
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   126
    # name of Exif handler to use
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   127
    exif_handler_name   = None
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   128
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   129
    # explicit Exif handler class
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   130
    exif_handler        = None
55cb7fc9c8fb add new exif.py to abstract between different exif libraries, and add partially working support for pyexiv2 and EXIFpy
Tero Marttila <terom@fixme.fi>
parents: 118
diff changeset
   131
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   132
    # exif tags used in output
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   133
    # Copyright (C) 2008, Santtu Pajukanta <santtu@pajukanta.fi>
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   134
    # XXX: import from dexif?
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   135
    exif_tags           = (
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   136
        # TODO Create date is in a useless format, needs some strptime love
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   137
        ("CreateDate",              "Create date"               ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   138
        ("Model",                   "Camera model"              ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   139
        ("Aperture",                "Aperture"                  ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   140
        ("ExposureMode",            "Exposure mode"             ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   141
        ("ExposureCompensation",    "Exposure compensation"     ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   142
        ("ExposureTime",            "Exposure time"             ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   143
        ("Flash",                   "Flash mode"                ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   144
        ("ISO",                     "ISO"                       ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   145
        ("ShootingMode",            "Shooting mode"             ),
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   146
        ("LensType",                "Lens type"                 ),
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   147
        ("FocalLength",             "Focal length"              ),
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   148
    )
60
406da27a4be2 do some filesystem.Path stuff, and read_only mode
Tero Marttila <terom@fixme.fi>
parents: 57
diff changeset
   149
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   150
    # XXX: move elsewhere?
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   151
    def is_image (self, file) :
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   152
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   153
            Tests if the given File is an image, based on its file extension
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   154
57
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   155
        """
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   156
8d06e0283b88 start implementing new Image stuff, tie in RenderMachine into the new Image class, assoicated config stuff
Tero Marttila <terom@fixme.fi>
parents: 51
diff changeset
   157
        return file.matchext(self.image_exts)
118
60b126ff0b74 configuration magic - can now load configuration data from ./degal.cfg, --config, folder/degal.cfg
Tero Marttila <terom@fixme.fi>
parents: 117
diff changeset
   158