home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2012 January / maximum-cd-2012-01.iso / DiscContents / digsby_setup.exe / lib / gui / skin / skintransform.pyo (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2011-10-05  |  7.2 KB  |  248 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.6)
  3.  
  4. from __future__ import division
  5. from gui.toolbox import colorfor
  6. import wx
  7. from util.primitives import strlist, LowerStorage, autoassign
  8. import traceback
  9. import sys
  10. from gui.textutil import CopyFont, default_font
  11. from logging import getLogger
  12. log = getLogger('skintransform')
  13. from gui.skin import SkinException
  14. from gui.skin.skinparse import makeBrush, makeImage, makeFont, makePadding
  15. from gui.skin.skinobjects import Margins
  16. SUBSIGIL = '$'
  17.  
  18. def which_rule(k):
  19.     k = k.lower()
  20.     for rule in erules:
  21.         if k.endswith(rule):
  22.             return rule
  23.     
  24.  
  25.  
  26. def subs_common(s, common):
  27.     words = s.split()
  28.     for i, word in enumerate(list(words)):
  29.         if word.startswith(SUBSIGIL):
  30.             val = common.get(word[1:].lower(), None)
  31.             if val is None:
  32.                 continue
  33.             
  34.             words[i] = val
  35.             continue
  36.     
  37.     return ' '.join((lambda .0: for w in .0:
  38. unicode(w))(words))
  39.  
  40.  
  41. def transform(skintree, do_string_subs = True):
  42.     if do_string_subs:
  43.         common = skintree.setdefault('common', { })
  44.     else:
  45.         common = { }
  46.     
  47.     def apply_string_substitution(elem):
  48.         if isinstance(elem, dict):
  49.             for k, v in elem.iteritems():
  50.                 if isinstance(v, basestring):
  51.                     elem[k] = subs_common(v, common)
  52.                     continue
  53.                 elem[k] = apply_string_substitution(v)
  54.             
  55.         elif isinstance(elem, list):
  56.             newlist = []
  57.             for e in elem:
  58.                 if isinstance(e, basestring):
  59.                     e = subs_common(e, common)
  60.                 
  61.                 newlist.append(e)
  62.             
  63.             elem[:] = newlist
  64.         
  65.         return elem
  66.  
  67.     
  68.     def recursive_transform(elem):
  69.         if isinstance(elem, dict):
  70.             for k, v in elem.iteritems():
  71.                 if k in rules:
  72.                     elem[k] = rules[k](v)
  73.                     continue
  74.                 if k.lower() not in erule_excludes and k.lower().endswith(tuple(erules.keys())):
  75.                     elem[k] = erules[which_rule(k)](v)
  76.                     continue
  77.                 recursive_transform(v)
  78.             
  79.         
  80.         return elem
  81.  
  82.     if do_string_subs:
  83.         return recursive_transform(apply_string_substitution(skintree))
  84.     return recursive_transform(skintree)
  85.  
  86.  
  87. def r_backgrounds(v):
  88.     if v is None:
  89.         return v
  90.     for key, value in v.iteritems():
  91.         v[key] = makeBrush(value)
  92.     
  93.     return v
  94.  
  95.  
  96. def r_background(v):
  97.     return makeBrush(v)
  98.  
  99.  
  100. def r_frame(v):
  101.     return makeBrush(v)
  102.  
  103.  
  104. def r_size(s):
  105.     return makePadding(s)
  106.  
  107.  
  108. def r_framesize(s):
  109.     return Margins(s)
  110.  
  111.  
  112. def er_margins(s):
  113.     return Margins(s)
  114.  
  115.  
  116. def er_padding(s):
  117.     return makePadding(s)
  118.  
  119.  
  120. def er_colors(v):
  121.     for colorname, color in v.iteritems():
  122.         v[colorname] = colorfor(color)
  123.     
  124.     return v
  125.  
  126.  
  127. def er_color(v):
  128.     return colorfor(v)
  129.  
  130.  
  131. def er_icons(v):
  132.     skin = skin
  133.     import gui
  134.     for iconname, iconpath in v.iteritems():
  135.         v[iconname] = skin.load_bitmap(iconpath)
  136.     
  137.     return v
  138.  
  139.  
  140. def er_icon(v):
  141.     skin = skin
  142.     import gui
  143.     if v.startswith('skin:'):
  144.         return skin.get(v[5:], v)
  145.     bitmap = skin.load_bitmap(v)
  146.     if not bitmap.Ok():
  147.         raise SkinException('invalid bitmap %s' % v)
  148.     bitmap.Ok()
  149.     return bitmap
  150.  
  151.  
  152. def er_images(v):
  153.     for key, value in v.iteritems():
  154.         v[key] = makeImage(value)
  155.     
  156.     return v
  157.  
  158.  
  159. def er_image(v):
  160.     return makeBrush(v)
  161.  
  162.  
  163. def r_directionicons(v):
  164.     skincore = skin
  165.     import gui
  166.     img = skincore.load_image
  167.     up = None if 'up' in v else None
  168.     down = None if 'down' in v else None
  169.     left = None if 'left' in v else None
  170.     right = None if 'right' in v else None
  171.     count = len(filter(None, [
  172.         up,
  173.         down,
  174.         left,
  175.         right]))
  176.     if count == 2:
  177.         if (left or right) and up:
  178.             pass
  179.         if not down:
  180.             if not left:
  181.                 left = right.Mirror(True)
  182.             
  183.             if not right:
  184.                 right = left.Mirror(True)
  185.             
  186.             if not up:
  187.                 up = down.Mirror(False)
  188.             
  189.             if not down:
  190.                 down = up.Mirror(False)
  191.             
  192.         elif count != 4:
  193.             while not up and down and left and right:
  194.                 if not up:
  195.                     up = left.Rotate90()
  196.                 
  197.                 if not right:
  198.                     right = up.Rotate90()
  199.                 
  200.                 if not down:
  201.                     down = right.Rotate90()
  202.                 
  203.                 if not left:
  204.                     left = down.Rotate90()
  205.                     continue
  206.         
  207.     return LowerStorage({
  208.         'up': wx.BitmapFromImage(up),
  209.         'down': wx.BitmapFromImage(down),
  210.         'left': wx.BitmapFromImage(left),
  211.         'right': wx.BitmapFromImage(right) })
  212.  
  213.  
  214. def r_color(v):
  215.     return wx.Brush(colorfor(v))
  216.  
  217.  
  218. def er_fonts(v):
  219.     for key, value in v.iteritems():
  220.         v[key] = r_font(value)
  221.     
  222.     return v
  223.  
  224.  
  225. def r_fontcolor(v):
  226.     return colorfor(v)
  227.  
  228.  
  229. def r_font(v):
  230.     return makeFont(v)
  231.  
  232. erule_excludes = [
  233.     'emoticon',
  234.     'emoticons',
  235.     'buddyicons']
  236. rules = { }
  237. for func in locals().values():
  238.     if callable(func) and func.__name__.startswith('r_'):
  239.         rules[func.__name__[2:]] = func
  240.         continue
  241.  
  242. erules = { }
  243. for func in locals().values():
  244.     if callable(func) and func.__name__.startswith('er_'):
  245.         erules[func.__name__[3:]] = func
  246.         continue
  247.  
  248.