Package Camelot :: Package camelot :: Package view :: Module art
[frames] | no frames]

Source Code for Module Camelot.camelot.view.art

  1  #  ============================================================================ 
  2  # 
  3  #  Copyright (C) 2007-2008 Conceptive Engineering bvba. All rights reserved. 
  4  #  www.conceptive.be / project-camelot@conceptive.be 
  5  # 
  6  #  This file is part of the Camelot Library. 
  7  # 
  8  #  This file may be used under the terms of the GNU General Public 
  9  #  License version 2.0 as published by the Free Software Foundation 
 10  #  and appearing in the file LICENSE.GPL included in the packaging of 
 11  #  this file.  Please review the following information to ensure GNU 
 12  #  General Public Licensing requirements will be met: 
 13  #  http://www.trolltech.com/products/qt/opensource.html 
 14  # 
 15  #  If you are unsure which license is appropriate for your use, please 
 16  #  review the following information: 
 17  #  http://www.trolltech.com/products/qt/licensing.html or contact 
 18  #  project-camelot@conceptive.be. 
 19  # 
 20  #  This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 
 21  #  WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 
 22  # 
 23  #  For use of this library in commercial applications, please contact 
 24  #  project-camelot@conceptive.be 
 25  # 
 26  #  ============================================================================ 
 27   
 28  """Manages icons and artworks""" 
 29   
 30  import os 
 31  import logging 
 32  logger = logging.getLogger('camelot.view.art') 
 33   
 34  from camelot.view.model_thread import gui_function 
 35   
 36  from PyQt4 import QtGui 
37 38 -def file_(name):
39 from camelot.core.resources import resource_filename 40 import camelot 41 return resource_filename(camelot.__name__, 'art/%s'%name, 'CAMELOT_MAIN_DIRECTORY')
42
43 -class Pixmap(object):
44 """Load pixmaps from the camelot art library""" 45
46 - def __init__(self, path, module=None):
47 """:param path: the path of the pixmap relative to the art directory, use 48 '/' as a path separator 49 :param module: the module that contains the art directory, if None is given 50 this will be camelot""" 51 self._path = path 52 self._cached_pixmap = None 53 if not module: 54 import camelot 55 self._module_name = camelot.__name__ 56 else: 57 self._module_name = module.__name__
58
59 - def __unicode__(self):
60 return self._path
61
62 - def __repr__(self):
63 return self.__class__.__name__ + "('" + self._path + "')"
64
65 - def fullpath(self):
66 """Obsolete : avoid this method, since it will copy the resource file 67 from its package and copy it to a temp folder if the resource is 68 packaged.""" 69 from camelot.core.resources import resource_filename 70 pth = resource_filename(self._module_name, 'art/%s'%(self._path), 'CAMELOT_MAIN_DIRECTORY') 71 if os.path.exists(pth): 72 return pth 73 else: 74 return ''
75 76 @gui_function
77 - def getQPixmap(self):
78 """QPixmaps can only be used in the gui thread""" 79 if self._cached_pixmap: 80 return self._cached_pixmap 81 from camelot.core.resources import resource_string 82 from PyQt4.QtGui import QPixmap 83 qpm = QPixmap() 84 success = qpm.loadFromData(resource_string(self._module_name, 85 'art/%s'%(self._path), 86 'CAMELOT_MAIN_DIRECTORY')) 87 if not success: 88 msg = u'Could not load pixmap %s from camelot art library' 89 logger.warn(msg % self._path) 90 self._cached_pixmap = qpm 91 return qpm
92
93 -class Icon(Pixmap):
94 """Manages paths to the icons images""" 95 96 @gui_function
97 - def getQIcon(self):
98 """QPixmaps can only be used in the gui thread""" 99 from PyQt4.QtGui import QIcon 100 return QIcon(self.getQPixmap())
101
102 -class ColorScheme(object):
103 """The default color scheme for camelot, based on the Tango icon set 104 see http://tango.freedesktop.org/Generic_Icon_Theme_Guidelines 105 """ 106 yellow = QtGui.QColor('#ffff00') 107 yellow_0 = yellow 108 yellow_1 = QtGui.QColor('#fce94f') 109 yellow_2 = QtGui.QColor('#edd400') 110 yellow_3 = QtGui.QColor('#c4a000') 111 orange_1 = QtGui.QColor('#fcaf3e') 112 orange_2 = QtGui.QColor('#f57900') 113 orange_3 = QtGui.QColor('#cd5c00') 114 brown_1 = QtGui.QColor('#e9b96e') 115 brown_2 = QtGui.QColor('#c17d11') 116 brown_3 = QtGui.QColor('#8f5902') 117 red = QtGui.QColor('#ff0000') 118 red_0 = red 119 red_1 = QtGui.QColor('#ef2929') 120 red_2 = QtGui.QColor('#cc0000') 121 red_3 = QtGui.QColor('#a40000') 122 blue = QtGui.QColor('#0000ff') 123 blue_0 = blue 124 blue_1 = QtGui.QColor('#000080') 125 green = QtGui.QColor('#00ff00') 126 green_0 = green 127 cyan = QtGui.QColor('#00ffff') 128 cyan_0 = cyan 129 cyan_1 = QtGui.QColor('#008080') 130 magenta = QtGui.QColor('#ff00ff') 131 magenta_0 = magenta 132 magenta_1 = QtGui.QColor('#800080') 133 pink_1 = QtGui.QColor('#f16c6c') 134 pink_2 = QtGui.QColor('#f13c3c') 135 aluminium_0 = QtGui.QColor('#eeeeec') 136 aluminium_1 = QtGui.QColor('#d3d7cf') 137 aluminium_2 = QtGui.QColor('#babdb6') 138 aluminium = aluminium_0 139 grey_0 = QtGui.QColor('#eeeeee') 140 grey_1 = QtGui.QColor('#cccccc') 141 grey_2 = QtGui.QColor('#333333') 142 grey_3 = QtGui.QColor('#666666') 143 grey_4 = QtGui.QColor('#999999') 144 grey = grey_0 145 146 VALIDATION_ERROR = red_1 147 """ 148 for consistency with QT: 149 Qt::white 3 White (#ffffff) 150 Qt::black 2 Black (#000000) 151 Qt::red 7 Red (#ff0000) 152 Qt::darkRed 13 Dark red (#800000) 153 Qt::green 8 Green (#00ff00) 154 Qt::darkGreen 14 Dark green (#008000) 155 Qt::blue 9 Blue (#0000ff) 156 Qt::darkBlue 15 Dark blue () 157 Qt::cyan 10 Cyan (#00ffff) 158 Qt::darkCyan 16 Dark cyan (#008080) 159 Qt::magenta 11 Magenta (#ff00ff) 160 Qt::darkMagenta 17 Dark magenta (#800080) 161 Qt::yellow 12 Yellow (#ffff00) 162 Qt::darkYellow 18 Dark yellow (#808000) 163 Qt::gray 5 Gray (#a0a0a4) 164 Qt::darkGray 4 Dark gray (#808080) 165 Qt::lightGray 6 Light gray (#c0c0c0) 166 Qt::transparent 19 a transparent black value (i.e., QColor(0, 0, 0, 0)) 167 Qt::color0 0 0 pixel value (for bitmaps) 168 Qt::color1 1 1 pixel value (for bitmaps) 169 """
170