''' Collection of the image paths. The module is meant to act as a singleton, hence the globals() abuse. Image credit: kidcomic.net ''' from functools import partial import os from gooey.gui.util.freeze import get_resource_path _image_details = ( ('program_icon', 'program_icon.ico'), ('success_icon', 'success_icon.png'), ('running_icon', 'running_icon.png'), ('loading_icon', 'loading_icon.gif'), ('config_icon', 'config_icon.png'), ('error_icon', 'error_icon.png') ) def init(image_dir): ''' initalize the images from the default directory path ''' defaults = {variable_name: os.path.join(image_dir, filename) for variable_name, filename in _image_details} globals().update(defaults) def patch_images(new_image_dir): ''' Loads custom images from the user supplied directory ''' pathto = partial(os.path.join, new_image_dir) if new_image_dir != 'default': if not os.path.isdir(new_image_dir): raise IOError('Unable to find the user supplied directory {}'.format(new_image_dir)) new_images = ((varname, pathto(filename)) for varname, filename in _image_details if os.path.exists(pathto(filename))) # push the changes into module scope globals().update(new_images) default_dir = get_resource_path('images') init(default_dir)