###################################################################### # Copyright (c) 2007, Petteri Aimonen # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions are met: # * Redistributions of source code must retain the above copyright # notice and this list of conditions. # * Redistributions in binary form must reproduce the above copyright # notice and this list of conditions in the documentation and/or other # materials provided with the distribution. '''Small images stored as python strings to save the trouble of distributing image files.''' import wx import cStringIO def mkicon(data): '''Make icon from image datastring''' stream = cStringIO.StringIO(data) image = wx.ImageFromStream(stream) bitmap = wx.BitmapFromImage(image) return wx.IconFromBitmap(bitmap) def geticons(): data16 = '\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00\x10\x00\x00\x00\x10\x08\x03\x00\x00\x00(-\x0fS\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x018PLTE\x00\x00\x00\x00\x00\x00\x01\x01\x01\x02\x02\x02\x03\x02\x02\x04\x02\x02\x04\x03\x03\x05\x03\x03\x05\x04\x04\x07\x05\x05\t\x06\x06\n\x07\x07\x19\x14\x14\x1c\x16\x16\x1d\x16\x16$\x1c\x1c%\x1d\x1d\'\x1e\x1e) +!!,"".%%0&&1&&5**:..<..=00?11@11@22F77H88K;;L<y\x92\xdak\xd7\xf8p\xdd:\x04\xe1\xf1mG\x0c\x19\x02\x80(\x08a=\n0kZ\x96\xc3\xe5\xb2g$\'\x1b\xa6\xe4\xe4\xd0\xcfl\xa6\xc5j\xe5\xd6\xbd{\x98\x0c\x06\x00n55\xf1\xee\xc7\x1f\xd3b\xb52)>\x9e\x9f\xcc\x99\x83\xa6\xaa\xe8\xba\xce\x8eO>\xa1p\xf5j\x16\xa7\xa6v\xc9\x1b:h\xd0\xb7\x95\xa1\xaa\xa1=\x990H\x14\x84\xc6\x1f\xcf\x9e-}\x98\x97\x87\xae\xeb\xd8\xecv\xcc\xc6\xc7\xbd\xe7rC\x03\xef\xee\xd9\xc3\xe5\x86\x06j\xea\xeby`\xb31&:\x9a\xf2\x9d;\xd1u\x1d\x00\x1f\x93\xe9;\x89\x1f\xdal\xf4\x9b:\x15\x7f\x93\xa9\xac\xa7\x7f\xe0\x07\x1e]\x972\xa6L\xe1Fc#?Z\xb7\x8es\x97.\xb1\xf1\xcd7\xf9\xc5\xeb\xaf\x03\xf0RH\x08\x1f\xe5\xe5\x01\xd0f\xb7\xb3i\xf7nf&%u\x11\xd9\x1d|L&TY\xb6\x01/>S\x80QU\xe7\xe8@R\\\x1c\xb5W\xafr\xb6\xae\x8e\xe1aa]\xcc\xf4\x08{?\xfb\x8c\x9a\xfaz6eg#IR\xaf\x0cjP\x94\xdb6\x87cH\xb7\x02dQ\\\xdb\xe6p\xcc\xfe\xf9\xc2\x85|z\xe2\x04\x005%%D\x0f\x1d\x8a(v-\x9c?\x96\x96\xb2x\xc3\x06\x00R\xc6\x8d#9!\xa1W\x02F\x84\x87\xbf\xf4\xf7K\x97Z\x9e\xf6@\xb2I\xd3rl\xed\xed\xf3\x9enR\xc3\x87\x0ee\x7f~>\xd1aa\xdfI\xf6\xd1\x91#H\xa2\xc8\x0f\xa7O\xc7\xd8a\xce\x9e\xf0\xcf\xeb\xd7\x19\x95\x99I\xd6\xdc\xb9\x9d$\xb2\xa6({\xdb\x9d\xce\x0cI\x14\x1f\xac_\xb2\xc4/).\x0e\xbb\xc3A\xc5\x97_r\xa6\xb6\x96/jk1i\x1a\xc7w\xec`\xec\x88\x11}~\xa4\xd7]\xbb\xc6\x8c\x95+\x89\x0c\t\xe1\xcf[\xb7~+@S\x94B\x87\xcb\x95{|\xfbvq\xe2\xc8\x91(\xb2\xdcmMg\xbc\xfd6\x0bRR\xf8\xc3\xa6M}"\xff\xfd\xb1c\xac,( u\xc2\x04~\xb7~=&\x83\x01\x19Hp\xb8\\\xb9k33\xc5\xe4\x84\x04\xfev\xe1\x02\x9a\xaa2f\xf8\xf0.\x9b\xd3-\x16\x86\x85\x84p\xa0\xa2\x82\x16\xab\x15\x7f_\xdf^\x13\xdfhldUa!\'\xcf\x9f\xa7(7\x97%ii\x9d1\xd1\xaci\x05\xaa$\xb5\xe5ee\xb1\xaa\xa0\x00Kv6\x13\x97.\xc5\xda\xda\xca\xe9\x9a\x1aV\xbc\xff>\x9f\x9f=\x0b\xc0\xacI\x93hw:\xb9\xd9\xd4\xe4\xd5\xc9\xf7\x97\x97\x13\xe0\xeb\xcb?JJ\xba\x90\x03\xc8\x0e\xb7{|Rl\xac\xd1l4R\xdeA\x14\x1c\x14D\xf3\xfd\xfb$\xe7\xe4\xe0v\xbb\xd1\x14\x85i\x89\x89\xdc\xfd\xe6\x1b\x00\xc2^x\xc1+\x01o-Z\xf4\xcc\x98\xe8\xf1x\x94\xe6\x96\x16\x00\xa6\x8d\x1d\x8b\xa6(\xcc\x9f>\x9d\xaa\xdaZ\xdcn7\x00\rw\xee\x00\xd0x\xef\x1e\x06E\xe9\xb6\xbb\xf5\x15\xb2I\xd3\xce\xd7]\xbf>\xe6B}=\xf1QQ\xdc>v\x0c\x7f__\xac\xad\xadD\x0e\x19\xc2\xd5\xdb\xb7;]\x7f\xff\xe1C$I\xe2\xeb\xe6f\x06\xf7\xef\xff\xbf\x19t\x81\xf9\xc0\xdeW_~\x99\xfd\xf9\xf9]\x82\x0e\xa7\x93\x16\xab\x95\x81\x81\x81<\xb4\xd9\xe8\x9f\x92\x82\xcb\xed&>2\x92c\xdb\xb6100\xb0\xcb\x80\xd2]\xf5<\x0f\x12p\xd1\xaci\xf3j\xae\\\t\x8a\x08\x0e\xe6\xfb\x91\x91\x8f\x83\x92\xd4\xd9\xd7\x8f\x9c:\xc5\xbe\xe3\xc7\x89\x8b\x88\xe0\xc2\xe5\xcb\xec-+c@@\x00\xa2 \xf0\xd3\xfc|\xca\xab\xabI\xb3X\xfa$@w\xba\xdd\x95\x8a$e\x1d\xaa\xac\x14\x8d\x06\x830:*\n\xf9\x89\xd3|\xdd\xdc\xcc\xabk\xd72:*\x8a\xbf\x16\x173(0\x90C\x95\x95|Z^\xce\xae\x03\x07\x00\xd8\x9a\x9bKP@@\x9f\xae\xe0\x11&k\x8ar\xb8\xdd\xe9\x0c\x18\xe0\xe7\xc7\xc2\xd4T\x06\x05\x06\xd2b\xb5Rz\xe6\x0c\x0f\xacVN\x15\x17\xf3\xbd\xa0 \xde).f\xf3\xee\xdd\xbc\x93\x9dM\xda\xe4\xc9\xcf\x1dLz+\x00\xc0\x00,2\xaa\xea/\xdb\x1c\x8e\x88\'~\xe4\xdc\xb8|\xb9"\x89"\x7f*+\xe3\xe6\xdd\xbb\x14\xadYC\xe6S\x83\xc6\xd3\xf8\xe2\xab\xaf\xd8\xbeo\x1f\xadv;\x87\n\nz%\xe0\x11&\xa9\xb2\xbc\xcb\xe1rui\xfa###I\xb3X\xc8]\xb0\x80~>>\xcf$>XQAQI\t\xd5\x17/2o\xda4\x96\xa5\xa73i\xd4(\xaf\x04\x00\xf8\x9b5\xad\xa4\xb5\xbd}\xa6 \x08\x9e\xd4\xf1\xe3\xc5\xf93f05!\x81\xe0\x81\x03\xbb\xddPS_\xcf\xaa\xc2B.54\xb0\xe2\xb5\xd7X\x9e\x91\xc1\x00\x7f\x7f\xaf\xae\xa0\xdb\xc9\xc8\xc7`\xf8Y\x9b\xc3\x91\xe4\xf6x\x94\x8e\x87\xd7\x83\xb111~\xe1\xc1\xc1\x84\x0e\x1e\x8c\xcb\xe3\xa1\xba\xae\x8e\x8as\xe7\xc8\xc9\xc8`cv6\xbeO\xbc\'\xfc\xb7\x02\x9e\xf4\xc7D`\x9cIUc\x13cb\x16\xdclj\xe2_w\xee\xd8F\x84\x87\x9bFGG\xb3b\xde\xb1\xb1|\x7f\xf4\xe8\x13\xe7\no\x0f\x0f\xe3\xaeuk\xca\x0e\xcc\x05\xc6\x0b!t\x19\xef\xbf\xaf:s\xf92\xe57n\xf0b\xbf~\xe4o\xde\x8c\x94\x92\x1e\x9d;?\xf2\xe1k7o\x12\xf6\xdakTTV\x02\xf0\xe6\xf2\xe5\x9c\xa8KV-\x16\xc7\xdf\xfc\xad\xba\xb1\x1dP\x80\xa9\xc0b\x83\x93\xdd\x9e\xbff\r\x03&O&:)\x89\x0eQQ\xa4\xef\xd8A\x077\xb7F\x17sk\xd7\x8eqfG\xc6\xd5\xc9\xe9\x89w\xe0\xc4\xd9\xb3F\xc7\xcfk\xc8s\xbc\ro|\x8a\x94\xb2\xc7\xe3&\xf3tq\xe1\xab\xa5Ky\xbeW\xafF\xf5\x8e\x16\x14\xe0\xec\xe0\x80\xaf\xb7\xf7\x93\xd1\x1f\xbbv\xf1JJJ]\x94[\xbe\xbc^?\x10)`\xab\x84\xd6\x86\x8c{->*\xca\xad\xdf\xb3\xcfb\xd7\xaa\x15\xe5\x95\x95\xfc\xf7\xf8q\xbe\xfb\xf1\xc7z[\xbao\xe5J\x02z\xf4\xe0i\x8a*0p\x82"\xc4F\xbd\x94,HH y\xca\x14\x0b\x00\xe1\x02r$(q\x11\x11D\x05\x07\x13\x13\x12B\xeb\x062\xe2\xa5\x92\x12\xb4Z-\x9brrX\x98\x9e\x0e@LH\x08\xdb\x96.}*\x86\xeb\xf5zl\x82\x83\xdfQ\x14e\x91^\xafg\xc9\xcc\x99\xbc\x19\x17g\xd1\x91\xb9\n!\n\xa4\x94\x1e\xf1\x91\x91|>o^\x93\'\x1f\x9f\x9c\xcc\x96\xbd{Q)\n\xc5;w\xe2YW\xf2ZM\xae\x94\x973q\xfe|\x0e\xe4\xe5\xe1\xec\xe8Hzr\xb2E!it\xe2O\xa4\x94\x1e\x8a\x10W\x97\xbf\xf1F\xb3\x16X\x90\x90\x00\x80N\xaf\'#\'\xc7j\x86K)Y\xbbc\x07}\xe2\xe28\x90\x97GP\xef\xde\xe4m\xd8`a\xbc\x11@ 0\x11 c\xc1\x02O\xa7\xb6m9y\xee\x1c/N\x9f\x8e*0\x90I\xf3\xe7\xd7\x9b\xfc\xcc\xa5K\x94]\xbf\x0e\x80_\xa7N\xf8h4u\xfc\xc7\xbe}V;2\x83\x13\x13IX\xb4\x08\x9dN\xc7\xb2\xd9\xb39\xb8z5\x9d\xda\xb7\xaf\xa7\xab\x06\xe6\x18\x1a\x95K\xe3\xc2\xc3}\xce\x17\x17\xd3\x7f\xd2$tz=\x00\x1bsrX2s&\x9e..\xac\xc8\xca"c\xcf\x1eJ\xaf]\xe3\xd7\xed\xdb-:\xa5K%%\xf5*\xcc\x16\xb3e\x8aBp\x9f>t\xf3\xf2bQbb\xa3\xc7R-\x84\x08\x92R\xf2rh\xa8\x8f\x10\x82\x93\xe7\xce\x99\x8c\x07\xe8\xe0\xea\x8a\xab\x93\x13\xab\xbf\xfa\x8a\xa4\xb44\xd3\xf8\xfe\xe3\xc7\t\x7f\xfey\x00.^\xb9\x02@\xe7\x0e\x1d\xacv\x84\x16\xcd\x98\xd14\xb0H\xa9\x01hmk\x0b@\xff\x9e=Q\x9b\xb5\x8a\x93\x86\x0e\xc5F\xadf\xde\x9a5\x96q\xfd\xcc\x19\x00\xee\xd4\xd6r\xf5\xc6\r\x004\xee\xee\xbf;\xb3\xacP\xc7\xaeq\xfa\xe2\xc5\xba,\xe6\xe9IO\xb3\xb6mXH\x08\xf7\xee\xdf\xe7\x96Y=od\x1c\x8c\xe5\xb4Q\\\x1c\x1d\x7f\x7f\x00R\xca#\x00\'\n\x0b\xb9TR\xc2\xe6\xef\xbecxH\x08Wv\xef\xe6\xc1\xe1\xc3\x04\xf6\xea\x85m\xabVL\x88\x88\xb0\xe4\xba\r]\x979\x8f\xf34\x9a\xfc\xc7&7\xc0\x06\x18!\xa5\xa4\xba\xa6\x867\xe3\xe2\x08\x1b0\x80\xb6\xf6\xf6\x165\xfa\x90\xc0@\xd4j5\xce\x0e\x0e\xa4&%\x99\xfa\x82\x03yyd\x1b\xa2\xcf\x81\xbc\x8c"D=\xc2\xd7\x1a>`\xea\xc1\x15!\xc6Kp<[T\xc4\xeeC\x87\xe8\xdc\xa1\x03\xbe\x96<\x8cIr\xf3\xf3\x89MNF\xaf\xd7\xb3t\xe6L\xc6\x86\x85\x11\xfd\xc2\x0b\xf8w\xef\xce\x9e#G\xb8\xff\xe0\x015\xb5\xb5\\.-\xe5\xce\xbd{\x8c\x184\x88/?\xfc\xd0*\xfd\xc0\xc3\x99\xd8(\xe5z)\xc3\x15!\xbe\xd7K\xa99q\xf6,Q\xb3g#\x84\xf8\xe5\xa3Y\xb3\x9e\t\t\x08\xe0\xde\xfd\xfb\\\xaf\xaa\xe2Fu5\xffX\xbd\x9a\x07Z-#\x06\r2\xb1\xc7\x00\xa7\xce\x9f\xe7VM\r\x8a\xa2\x904~<=\xbbve\xd8\x0b/\xe0be\xc3\x1b\xfb>\xe0\x02\xcc\x15B$J)\x1d\x1a{\xb8\xa3\xbb;\'7m\xc2\xd9\xd1\x91_KKY\x9a\x91\xc1\xbf\xb6mC\xa5(d/^\\\xaf\xf0jj\x1d\xb4\xef\xd81\xdc\x9d\x9d\xf1\xef\xde\xbdE\x00\x8c\xd2\x16\x887\\A\r\x11L\x13""hmk\xcb\x8f\x05\x05\x1c>u\n\x80\x9e>>|\xfc\xfa\xeb\x0c\tl\xdeW\xa0\x9a\xbbw\xf9\xf7\xf6\xed\xa4m\xdeLQY\x19C\x82\x82\xf8&5\xf5\x89\x00\xfc\xf6=@\x88\x13R\xcaF\xd3\xac\x8fFCRl,\xd3G\x8d\xc2\x9c\x12\x7f\x9c\x94TT\xb02;\x9bU\xdb\xb6q\xf3\xd6-Z\xa9\xd5\xc4\x0c\x1a\xc4\xacq\xe3,x\xa3\'\x01P\xc7\xbf\x08qPo`\xa6\x8dYwH` \x03\xfd\xfdy94\xd4TR7UnTU\xf1\xee\xaaU\xa4\xef\xdc\x89V\xa7\xc3G\xa3!q\xf4h\xa6\x0c\x1b\x86s3J\x92\xe6P\x8b\x1e\x86p\x1ba\xf6\xb0N\xc2\xe1\x05\t\t\x7f\x0e\xed\xdf\x9f\x00??\xec\x0cEac\x8d\xca\xc6\x9c\x1c\xfe\xbeb\x05\x15\x95\x95\xf4\xf6\xf5e\xee\xc4\x89\x8c\r\rm\x90N\xb7&\x00\xa3L\x16B\xbc%\xa5|\xb6^HS\xab\xd1j\xb5\'\xc7\xbc\xf4\x92\xbf\xaf\x97\x17\x1d=<\xe8\xe8\xe1\x81\xc6\xcd\r\x9d^\xcf\xf9\xe2bVm\xddJn~>\xce\x8e\x8e|\x90\x98\xc8\xb4\x98\x98f\x1d9k\x000Q\xf5\xc0_\x80!B\x88\x17\xa5\x94M\x8e\x93\x7f\r\x0f\'u\xce\x1c<\\\\\x9eJ\x18m\xe9<=\x80\xde\x80/\xd0\x95\xba\xcf\xa0\x1aE\x08/@%\xe1f\xe2\xa8Q>S\x86\x0f\xb7*\xfd\xf2\x7f\xbe\xad\xd2\xec\xb79\xa1L\x00\x00\x00\x00IEND\xaeB`\x82' bundle = wx.IconBundle() bundle.AddIcon(mkicon(data16)) bundle.AddIcon(mkicon(data32)) bundle.AddIcon(mkicon(data48)) return bundle iconbundle = geticons()