Mercurial > traipse_dev
annotate orpg/mapper/miniatures.py @ 139:8e07c1a2c69b alpha
Traipse Alpha 'OpenRPG' {091123-00}
Traipse is a distribution of OpenRPG that is designed to be easy to setup and go. Traipse also makes it easy for
developers to work on code without fear of sacrifice. 'Ornery-Orc' continues the trend of 'Grumpy' and adds fixes to
the code. 'Ornery-Orc's main goal is to offer more advanced features and enhance the productivity of the user.
Update Summary (Cleaning up for Beta)
Added Bookmarks
Fix to Remote Admin Commands
Minor fix to text based Server
Fix to Pretty Print, from Core
Fix to Splitter Nodes not being created
Fix to massive amounts of images loading, from Core
Added 'boot' command to remote admin
Added confirmation window for sent nodes
Minor changes to allow for portability to an OpenSUSE linux OS
Miniatures Layer pop up box allows users to turn off Mini labels, from FlexiRPG
Zoom Mouse plugin added
Images added to Plugin UI
Switching to Element Tree
Map efficiency, from FlexiRPG
Added Status Bar to Update Manager
default_manifest.xml renamed to default_upmana.xml
Cleaner clode for saved repositories
New TrueDebug Class in orpg_log (See documentation for usage)
Mercurial's hgweb folder is ported to upmana
Pretty important update that can help remove thousands of dead children from your gametree.
Children, <forms />, <group_atts />, <horizontal />, <cols />, <rows />, <height />, etc... are all tags now. Check
your gametree and look for dead children!!
New Gametree Recursion method, mapping, and context sensitivity. !Infinite Loops return error instead of freezing the
software!
New Syntax added for custom PC sheets
Tip of the Day added, from Core and community
Fixed Whiteboard ID to prevent random line or text deleting. Modified ID's to prevent non updated clients from
ruining the fix.
author | sirebral |
---|---|
date | Mon, 23 Nov 2009 03:22:50 -0600 |
parents | 54446a995007 |
children | 06f10429eedc |
rev | line source |
---|---|
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
1 # Copyright (C) 2000-2001 The OpenRPG Project |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
2 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
3 # openrpg-dev@lists.sourceforge.net |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
4 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
5 # This program is free software; you can redistribute it and/or modify |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
6 # it under the terms of the GNU General Public License as published by |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
7 # the Free Software Foundation; either version 2 of the License, or |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
8 # (at your option) any later version. |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
9 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
10 # This program is distributed in the hope that it will be useful, |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
13 # GNU General Public License for more details. |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
14 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
15 # You should have received a copy of the GNU General Public License |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
16 # along with this program; if not, write to the Free Software |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
17 # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
18 # -- |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
19 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
20 # File: mapper/miniatures.py |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
21 # Author: Chris Davis |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
22 # Maintainer: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
23 # Version: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
24 # $Id: miniatures.py,v 1.46 2007/12/07 20:39:50 digitalxero Exp $ |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
25 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
26 # Description: This file contains some of the basic definitions for the chat |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
27 # utilities in the orpg project. |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
28 # |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
29 __version__ = "$Id: miniatures.py,v 1.46 2007/12/07 20:39:50 digitalxero Exp $" |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
30 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
31 from base import * |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
32 import thread |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
33 import time |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
34 import urllib |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
35 import os.path |
88 | 36 import mimetypes |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
37 |
88 | 38 import xml.dom.minidom as minidom |
76
37a11fea3304
More clean up. Images now posts a Chat Info post if image doesn't load.
sirebral
parents:
71
diff
changeset
|
39 from orpg.tools.orpg_settings import settings |
37a11fea3304
More clean up. Images now posts a Chat Info post if image doesn't load.
sirebral
parents:
71
diff
changeset
|
40 |
118 | 41 from xml.etree.ElementTree import ElementTree, Element |
42 from xml.etree.ElementTree import fromstring, tostring | |
43 | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
44 MIN_STICKY_BACK = -0XFFFFFF |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
45 MIN_STICKY_FRONT = 0xFFFFFF |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
46 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
47 ##---------------------------------------- |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
48 ## miniature object |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
49 ##---------------------------------------- |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
50 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
51 FACE_NONE = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
52 FACE_NORTH = 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
53 FACE_NORTHEAST = 2 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
54 FACE_EAST = 3 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
55 FACE_SOUTHEAST = 4 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
56 FACE_SOUTH = 5 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
57 FACE_SOUTHWEST = 6 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
58 FACE_WEST = 7 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
59 FACE_NORTHWEST = 8 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
60 SNAPTO_ALIGN_CENTER = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
61 SNAPTO_ALIGN_TL = 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
62 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
63 def cmp_zorder(first,second): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
64 f = first.zorder |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
65 s = second.zorder |
20 | 66 if f == None: f = 0 |
67 if s == None: s = 0 | |
68 if f == s: value = 0 | |
69 elif f < s: value = -1 | |
70 else: value = 1 | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
71 return value |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
72 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
73 class BmpMiniature: |
118 | 74 def __init__(self, id, path, bmp, pos=cmpPoint(0,0), |
71
449a8900f9ac
Code refining almost completed, for this round. Some included files are still in need of some clean up, but this is test worthy.
sirebral
parents:
21
diff
changeset
|
75 heading=FACE_NONE, face=FACE_NONE, label="", |
449a8900f9ac
Code refining almost completed, for this round. Some included files are still in need of some clean up, but this is test worthy.
sirebral
parents:
21
diff
changeset
|
76 locked=False, hide=False, snap_to_align=SNAPTO_ALIGN_CENTER, |
118 | 77 zorder=0, width=0, height=0, log=None, local=False, localPath='', localTime=-1, func='none'): |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
78 self.heading = heading |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
79 self.face = face |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
80 self.label = label |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
81 self.path = path |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
82 self.pos = pos |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
83 self.selected = False |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
84 self.locked = locked |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
85 self.snap_to_align = snap_to_align |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
86 self.hide = hide |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
87 self.id = id |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
88 self.zorder = zorder |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
89 self.left = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
90 self.local = local |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
91 self.localPath = localPath |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
92 self.localTime = localTime |
20 | 93 if not width: self.width = 0 |
94 else: self.width = width | |
95 if not height: self.height = 0 | |
96 else: self.height = height | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
97 self.right = bmp.GetWidth() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
98 self.top = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
99 self.bottom = bmp.GetHeight() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
100 self.isUpdated = False |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
101 self.gray = False |
118 | 102 self.set_bmp(bmp) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
103 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
104 def __del__(self): |
118 | 105 del self.image |
106 self.image = None | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
107 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
108 def set_bmp(self, bmp): |
118 | 109 ### Alpha ### |
110 try: bmp = bmp.ConvertToImage() | |
111 except: pass | |
112 ### Still ironing out some kinks to FlexiRPG's map features ### | |
113 self.image = bmp | |
114 self.image.ConvertAlphaToMask() | |
115 self.generate_bmps() | |
116 | |
117 def generate_bmps(self): | |
118 if self.width: | |
119 bmp = self.image.Copy() | |
120 bmp.Rescale(int(self.width), int(self.height)) | |
121 else: | |
122 bmp = self.image | |
123 self.bmp = bmp.ConvertToBitmap() | |
124 self.bmp_gray = bmp.ConvertToGreyscale().ConvertToBitmap() | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
125 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
126 def set_min_props(self, heading=FACE_NONE, face=FACE_NONE, label="", locked=False, hide=False, width=0, height=0): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
127 self.heading = heading |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
128 self.face = face |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
129 self.label = label |
20 | 130 if locked: self.locked = True |
131 else: self.locked = False | |
132 if hide: self.hide = True | |
133 else: self.hide = False | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
134 self.width = int(width) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
135 self.height = int(height) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
136 self.isUpdated = True |
118 | 137 self.generate_bmps() |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
138 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
139 def hit_test(self, pt): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
140 rect = self.get_rect() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
141 result = None |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
142 result = rect.InsideXY(pt.x, pt.y) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
143 return result |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
144 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
145 def get_rect(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
146 ret = wx.Rect(self.pos.x, self.pos.y, self.bmp.GetWidth(), self.bmp.GetHeight()) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
147 return ret |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
148 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
149 def draw(self, dc, mini_layer, op=wx.COPY): |
118 | 150 if self.hide and mini_layer.canvas.frame.session.my_role() == mini_layer.canvas.frame.session.ROLE_GM: |
151 # set the width and height of the image | |
152 """ | |
153 if self.width and self.height: | |
154 tmp_image = self.bmp.ConvertToImage() | |
155 tmp_image.Rescale(int(self.width), int(self.height)) | |
156 tmp_image.ConvertAlphaToMask() | |
157 self.bmp = tmp_image.ConvertToBitmap() | |
158 mask = wx.Mask(self.bmp, wx.Colour(tmp_image.GetMaskRed(), | |
159 tmp_image.GetMaskGreen(), tmp_image.GetMaskBlue())) | |
160 self.bmp.SetMask(mask) | |
161 del tmp_image | |
162 del mask | |
163 """ | |
164 self.left = 0 | |
165 self.right = self.bmp.GetWidth() | |
166 self.top = 0 | |
167 self.bottom = self.bmp.GetHeight() | |
168 # grey outline | |
169 graypen = wx.Pen("gray", 1, wx.DOT) | |
170 dc.SetPen(graypen) | |
171 dc.SetBrush(wx.TRANSPARENT_BRUSH) | |
172 #if width or height < 20 then offset = 1 | |
173 if self.bmp.GetWidth() <= 20: xoffset = 1 | |
174 else: xoffset = 5 | |
175 if self.bmp.GetHeight() <= 20: yoffset = 1 | |
176 else: yoffset = 5 | |
177 dc.DrawRectangle(self.pos.x + xoffset, | |
178 self.pos.y + yoffset, self.bmp.GetWidth(), | |
179 self.bmp.GetHeight()) | |
180 dc.SetBrush(wx.NullBrush) | |
181 dc.SetPen(wx.NullPen) | |
182 if mini_layer.show_labels: | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
183 ## draw label in the center of the mini |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
184 label = mini_layer.get_mini_label(self) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
185 if len(label): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
186 dc.SetTextForeground(wx.RED) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
187 (textWidth,textHeight) = dc.GetTextExtent(label) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
188 x = self.pos.x +((self.bmp.GetWidth() - textWidth) /2) - 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
189 y = self.pos.y + (self.bmp.GetHeight() / 2) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
190 dc.SetPen(wx.GREY_PEN) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
191 dc.SetBrush(wx.LIGHT_GREY_BRUSH) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
192 dc.DrawRectangle(x, y, textWidth+2, textHeight+2) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
193 if (textWidth+2 > self.right): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
194 self.right += int((textWidth+2-self.right)/2)+1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
195 self.left -= int((textWidth+2-self.right)/2)+1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
196 self.bottom = y+textHeight+2-self.pos.y |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
197 dc.SetPen(wx.NullPen) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
198 dc.SetBrush(wx.NullBrush) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
199 dc.DrawText(label, x+1, y+1) |
118 | 200 |
201 #selected outline | |
202 if self.selected: | |
203 dc.SetPen(wx.RED_PEN) | |
204 dc.SetBrush(wx.TRANSPARENT_BRUSH) | |
205 dc.DrawRectangle(self.pos.x, self.pos.y, self.bmp.GetWidth(), self.bmp.GetHeight()) | |
206 dc.SetBrush(wx.NullBrush) | |
207 dc.SetPen(wx.NullPen) | |
208 return True | |
209 elif self.hide: return True | |
210 | |
211 else: | |
212 bmp = self.bmp_gray if self.gray else self.bmp | |
213 try: dc.DrawBitmap(bmp, self.pos.x, self.pos.y, True) | |
214 except: print bmp | |
215 self.left = 0 | |
216 self.right = self.bmp.GetWidth() | |
217 self.top = 0 | |
218 self.bottom = self.bmp.GetHeight() | |
219 | |
220 # Draw the facing marker if needed | |
221 if self.face != 0: | |
222 x_mid = self.pos.x + (self.bmp.GetWidth()/2) | |
223 x_right = self.pos.x + self.bmp.GetWidth() | |
224 y_mid = self.pos.y + (self.bmp.GetHeight()/2) | |
225 y_bottom = self.pos.y + self.bmp.GetHeight() | |
226 dc.SetPen(wx.WHITE_PEN) | |
227 dc.SetBrush(wx.RED_BRUSH) | |
228 triangle = [] | |
229 | |
230 # Figure out which direction to draw the marker!! | |
231 tri_list = { | |
232 FACE_WEST: [cmpPoint(self.pos.x, self.pos.y), cmpPoint(self.pos.x-5, y_mid), cmpPoint(self.pos.x, y_bottom)], | |
233 FACE_EAST: [cmpPoint(x_right, self.pos.y), cmpPoint(x_right + 5, y_mid), cmpPoint(x_right, y_bottom)], | |
234 FACE_SOUTH: [cmpPoint(self.pos.x, y_bottom), cmpPoint(x_mid, y_bottom + 5), cmpPoint(x_right, y_bottom)], | |
235 FACE_NORTH: [cmpPoint(self.pos.x, self.pos.y), cmpPoint(x_mid, self.pos.y - 5), cmpPoint(x_right, self.pos.y)], | |
236 FACE_NORTHEAST: [cmpPoint(x_mid, self.pos.y), cmpPoint(x_right + 5, self.pos.y - 5), cmpPoint(x_right, y_mid), cmpPoint(x_right, self.pos.y)], | |
237 FACE_SOUTHEAST: [cmpPoint(x_right, y_mid), cmpPoint(x_right + 5, y_bottom + 5), cmpPoint(x_mid, y_bottom), cmpPoint(x_right, y_bottom)], | |
238 FACE_SOUTHWEST: [cmpPoint(x_mid, y_bottom), cmpPoint(self.pos.x - 5, y_bottom + 5), | |
239 cmpPoint(self.pos.x, y_mid), cmpPoint(self.pos.x, y_bottom)], | |
240 FACE_NORTHWEST: [cmpPoint(self.pos.x, y_mid), cmpPoint(self.pos.x - 5, self.pos.y - 5), cmpPoint(x_mid, self.pos.y), cmpPoint(self.pos.x, self.pos.y)] | |
241 } | |
242 for tri in tri_list[self.face]: | |
243 triangle.append(tri) | |
244 del tri_list | |
245 dc.DrawPolygon(triangle) | |
246 dc.SetBrush(wx.NullBrush) | |
247 dc.SetPen(wx.NullPen) | |
248 | |
249 # Draw the heading if needed | |
250 if self.heading: | |
251 x_adjust = 0 | |
252 y_adjust = 4 | |
253 x_half = self.bmp.GetWidth()/2 | |
254 y_half = self.bmp.GetHeight()/2 | |
255 x_quarter = self.bmp.GetWidth()/4 | |
256 y_quarter = self.bmp.GetHeight()/4 | |
257 x_3quarter = x_quarter*3 | |
258 y_3quarter = y_quarter*3 | |
259 x_full = self.bmp.GetWidth() | |
260 y_full = self.bmp.GetHeight() | |
261 x_center = self.pos.x + x_half | |
262 y_center = self.pos.y + y_half | |
263 # Remember, the pen/brush must be a different color than the | |
264 # facing marker!!!! We'll use black/cyan for starters. | |
265 # Also notice that we will draw the heading on top of the | |
266 # larger facing marker. | |
267 dc.SetPen(wx.BLACK_PEN) | |
268 dc.SetBrush(wx.CYAN_BRUSH) | |
269 triangle = [] | |
270 # Figure out which direction to draw the marker!! | |
271 tri_list = { | |
272 FACE_NORTH: [cmpPoint(x_center - x_quarter, y_center - y_half ), cmpPoint(x_center, y_center - y_3quarter ), cmpPoint(x_center + x_quarter, y_center - y_half)], | |
273 FACE_SOUTH: [cmpPoint(x_center - x_quarter, y_center + y_half ), cmpPoint(x_center, y_center + y_3quarter ), cmpPoint(x_center + x_quarter, y_center + y_half )], | |
274 FACE_NORTHEAST: [cmpPoint(x_center + x_quarter, y_center - y_half ), cmpPoint(x_center + x_3quarter, y_center - y_3quarter ), cmpPoint(x_center + x_half, y_center - y_quarter)], | |
275 FACE_EAST: [cmpPoint(x_center + x_half, y_center - y_quarter ), cmpPoint(x_center + x_3quarter, y_center ), cmpPoint(x_center + x_half, y_center + y_quarter )], | |
276 FACE_SOUTHEAST: [cmpPoint(x_center + x_half, y_center + y_quarter ), cmpPoint(x_center + x_3quarter, y_center + y_3quarter ), cmpPoint(x_center + x_quarter, y_center + y_half )], | |
277 FACE_SOUTHWEST: [cmpPoint(x_center - x_quarter, y_center + y_half ), cmpPoint(x_center - x_3quarter, y_center + y_3quarter ), cmpPoint(x_center - x_half, y_center + y_quarter )], | |
278 FACE_WEST: [cmpPoint(x_center - x_half, y_center + y_quarter ), cmpPoint(x_center - x_3quarter, y_center ), cmpPoint(x_center - x_half, y_center - y_quarter )], | |
279 FACE_NORTHWEST: [cmpPoint(x_center - x_half, y_center - y_quarter ), cmpPoint(x_center - x_3quarter, y_center - y_3quarter ), cmpPoint(x_center - x_quarter, y_center - y_half )]} | |
280 for tri in tri_list[self.heading]: | |
281 triangle.append(tri) | |
282 del tri_list | |
283 dc.DrawPolygon(triangle) | |
284 dc.SetBrush(wx.NullBrush) | |
285 dc.SetPen(wx.NullPen) | |
286 #selected outline | |
287 if self.selected: | |
288 dc.SetPen(wx.RED_PEN) | |
289 dc.SetBrush(wx.TRANSPARENT_BRUSH) | |
290 dc.DrawRectangle(self.pos.x, self.pos.y, self.bmp.GetWidth(), self.bmp.GetHeight()) | |
291 dc.SetBrush(wx.NullBrush) | |
292 dc.SetPen(wx.NullPen) | |
293 if mini_layer.show_labels: | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
294 # draw label |
118 | 295 self.mini_label(mini_layer, dc) |
296 self.top-=5 | |
297 self.bottom+=5 | |
298 self.left-=5 | |
299 self.right+=5 | |
300 return True | |
301 | |
302 | |
303 def mini_label(self, mini_layer, dc): | |
304 label = mini_layer.get_mini_label(self) | |
305 if len(label): | |
306 dc.SetTextForeground(wx.RED) | |
307 (textWidth,textHeight) = dc.GetTextExtent(label) | |
308 x = self.pos.x +((self.bmp.GetWidth() - textWidth) /2) - 1 | |
309 y = self.pos.y + self.bmp.GetHeight() + 6 | |
310 dc.SetPen(wx.WHITE_PEN) | |
311 dc.SetBrush(wx.WHITE_BRUSH) | |
312 dc.DrawRectangle(x,y,textWidth+2,textHeight+2) | |
313 if (textWidth+2 > self.right): | |
314 self.right += int((textWidth+2-self.right)/2)+1 | |
315 self.left -= int((textWidth+2-self.right)/2)+1 | |
316 self.bottom = y+textHeight+2-self.pos.y | |
317 dc.SetPen(wx.NullPen) | |
318 dc.SetBrush(wx.NullBrush) | |
319 dc.DrawText(label,x+1,y+1) | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
320 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
321 def toxml(self, action="update"): |
139 | 322 if action == "del": |
323 xml_str = "<miniature action='del' id='" + self.id + "'/>" | |
324 return xml_str | |
325 xml_str = "<miniature" | |
326 xml_str += " action='" + action + "'" | |
327 xml_str += " label='" + self.label + "'" | |
328 xml_str+= " id='" + self.id + "'" | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
329 if self.pos != None: |
139 | 330 xml_str += " posx='" + str(self.pos.x) + "'" |
331 xml_str += " posy='" + str(self.pos.y) + "'" | |
332 if self.heading != None: xml_str += " heading='" + str(self.heading) + "'" | |
333 if self.face != None: xml_str += " face='" + str(self.face) + "'" | |
334 if self.path != None: xml_str += " path='" + urllib.quote(self.path).replace('%3A', ':') + "'" | |
335 if self.locked: xml_str += " locked='1'" | |
336 else: xml_str += " locked='0'" | |
337 if self.hide: xml_str += " hide='1'" | |
338 else: xml_str += " hide='0'" | |
339 if self.snap_to_align != None: xml_str += " align='" + str(self.snap_to_align) + "'" | |
340 if self.id != None: xml_str += " zorder='" + str(self.zorder) + "'" | |
341 if self.width != None: xml_str += " width='" + str(self.width) + "'" | |
342 if self.height != None: xml_str += " height='" + str(self.height) + "'" | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
343 if self.local: |
139 | 344 xml_str += ' local="' + str(self.local) + '"' |
345 xml_str += ' localPath="' + str(urllib.quote(self.localPath).replace('%3A', ':')) + '"' | |
346 xml_str += ' localTime="' + str(self.localTime) + '"' | |
347 xml_str += " />" | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
348 if (action == "update" and self.isUpdated) or action == "new": |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
349 self.isUpdated = False |
139 | 350 print xml_str; return xml_str |
20 | 351 else: return '' |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
352 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
353 def takedom(self, xml_dom): |
139 | 354 self.id = xml_dom.getAttribute("id") |
355 if xml_dom.hasAttribute("posx"): | |
356 self.pos.x = int(xml_dom.getAttribute("posx")) | |
357 if xml_dom.hasAttribute("posy"): | |
358 self.pos.y = int(xml_dom.getAttribute("posy")) | |
359 if xml_dom.hasAttribute("heading"): | |
360 self.heading = int(xml_dom.getAttribute("heading")) | |
361 if xml_dom.hasAttribute("face"): | |
362 self.face = int(xml_dom.getAttribute("face")) | |
363 if xml_dom.hasAttribute("path"): | |
364 self.path = urllib.unquote(xml_dom.getAttribute("path")) | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
365 self.set_bmp(ImageHandler.load(self.path, 'miniature', self.id)) |
139 | 366 if xml_dom.hasAttribute("locked"): |
367 if xml_dom.getAttribute("locked") == '1' or xml_dom.getAttribute("locked") == 'True': self.locked = True | |
20 | 368 else: self.locked = False |
139 | 369 if xml_dom.hasAttribute("hide"): |
370 if xml_dom.getAttribute("hide") == '1' or xml_dom.getAttribute("hide") == 'True': self.hide = True | |
20 | 371 else: self.hide = False |
139 | 372 if xml_dom.hasAttribute("label"): |
373 self.label = xml_dom.getAttribute("label") | |
374 if xml_dom.hasAttribute("zorder"): | |
375 self.zorder = int(xml_dom.getAttribute("zorder")) | |
376 if xml_dom.hasAttribute("align"): | |
377 if xml_dom.getAttribute("align") == '1' or xml_dom.getAttribute("align") == 'True': self.snap_to_align = 1 | |
20 | 378 else: self.snap_to_align = 0 |
139 | 379 if xml_dom.hasAttribute("width"): |
380 self.width = int(xml_dom.getAttribute("width")) | |
381 if xml_dom.hasAttribute("height"): | |
382 self.height = int(xml_dom.getAttribute("height")) | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
383 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
384 ##----------------------------- |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
385 ## miniature layer |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
386 ##----------------------------- |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
387 class miniature_layer(layer_base): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
388 def __init__(self, canvas): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
389 self.canvas = canvas |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
390 layer_base.__init__(self) |
7
2b9e766f9dee
Tests fixes issues with Linux GUI effecting miniatures
sirebral
parents:
0
diff
changeset
|
391 self.id = -1 #added. |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
392 self.miniatures = [] |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
393 self.serial_number = 0 |
118 | 394 self.show_labels = True |
7
2b9e766f9dee
Tests fixes issues with Linux GUI effecting miniatures
sirebral
parents:
0
diff
changeset
|
395 # Set the font of the labels to be the same as the chat window |
2b9e766f9dee
Tests fixes issues with Linux GUI effecting miniatures
sirebral
parents:
0
diff
changeset
|
396 # only smaller. |
76
37a11fea3304
More clean up. Images now posts a Chat Info post if image doesn't load.
sirebral
parents:
71
diff
changeset
|
397 font_size = int(settings.get_setting('defaultfontsize')) |
20 | 398 if (font_size >= 10): font_size -= 2 |
137 | 399 self.label_font = wx.Font(font_size, |
400 wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, | |
401 wx.FONTWEIGHT_NORMAL, | |
76
37a11fea3304
More clean up. Images now posts a Chat Info post if image doesn't load.
sirebral
parents:
71
diff
changeset
|
402 False, settings.get_setting('defaultfont')) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
403 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
404 def next_serial(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
405 self.serial_number += 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
406 return self.serial_number |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
407 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
408 def get_next_highest_z(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
409 z = len(self.miniatures)+1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
410 return z |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
411 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
412 def cleanly_collapse_zorder(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
413 # lock the zorder stuff |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
414 sorted_miniatures = self.miniatures[:] |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
415 sorted_miniatures.sort(cmp_zorder) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
416 i = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
417 for mini in sorted_miniatures: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
418 mini.zorder = i |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
419 i = i + 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
420 # unlock the zorder stuff |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
421 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
422 def collapse_zorder(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
423 # lock the zorder stuff |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
424 sorted_miniatures = self.miniatures[:] |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
425 sorted_miniatures.sort(cmp_zorder) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
426 i = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
427 for mini in sorted_miniatures: |
20 | 428 if (mini.zorder != MIN_STICKY_BACK) and (mini.zorder != MIN_STICKY_FRONT): mini.zorder = i |
429 else: pass | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
430 i = i + 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
431 # unlock the zorder stuff |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
432 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
433 def rollback_serial(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
434 self.serial_number -= 1 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
435 |
19
78407d627cba
Beginning of Code Clean-up. Some code untested, may break!
sirebral
parents:
7
diff
changeset
|
436 def add_miniature(self, id, path, pos=cmpPoint(0,0), label="", heading=FACE_NONE, |
78407d627cba
Beginning of Code Clean-up. Some code untested, may break!
sirebral
parents:
7
diff
changeset
|
437 face=FACE_NONE, width=0, height=0, local=False, localPath='', localTime=-1): |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
438 bmp = ImageHandler.load(path, 'miniature', id) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
439 if bmp: |
19
78407d627cba
Beginning of Code Clean-up. Some code untested, may break!
sirebral
parents:
7
diff
changeset
|
440 mini = BmpMiniature(id, path, bmp, pos, heading, face, label, |
118 | 441 zorder=self.get_next_highest_z(), width=width, |
71
449a8900f9ac
Code refining almost completed, for this round. Some included files are still in need of some clean up, but this is test worthy.
sirebral
parents:
21
diff
changeset
|
442 height=height, local=local, localPath=localPath, localTime=localTime) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
443 self.miniatures.append(mini) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
444 xml_str = "<map><miniatures>" |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
445 xml_str += mini.toxml("new") |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
446 xml_str += "</miniatures></map>" |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
447 self.canvas.frame.session.send(xml_str) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
448 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
449 def get_miniature_by_id(self, id): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
450 for mini in self.miniatures: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
451 if str(mini.id) == str(id): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
452 return mini |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
453 return None |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
454 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
455 def del_miniature(self, min): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
456 xml_str = "<map><miniatures>" |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
457 xml_str += min.toxml("del") |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
458 xml_str += "</miniatures></map>" |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
459 self.canvas.frame.session.send(xml_str) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
460 self.miniatures.remove(min) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
461 del min |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
462 self.collapse_zorder() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
463 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
464 def del_all_miniatures(self): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
465 while len(self.miniatures): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
466 min = self.miniatures.pop() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
467 del min |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
468 self.collapse_zorder() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
469 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
470 def layerDraw(self, dc, topleft, size): |
7
2b9e766f9dee
Tests fixes issues with Linux GUI effecting miniatures
sirebral
parents:
0
diff
changeset
|
471 dc.SetFont(self.label_font) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
472 sorted_miniatures = self.miniatures[:] |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
473 sorted_miniatures.sort(cmp_zorder) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
474 for m in sorted_miniatures: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
475 if (m.pos.x>topleft[0]-m.right and |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
476 m.pos.y>topleft[1]-m.bottom and |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
477 m.pos.x<topleft[0]+size[0]-m.left and |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
478 m.pos.y<topleft[1]+size[1]-m.top): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
479 m.draw(dc, self) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
480 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
481 def find_miniature(self, pt, only_unlocked=False): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
482 min_list = [] |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
483 for m in self.miniatures: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
484 if m.hit_test(pt): |
20 | 485 if m.hide and self.canvas.frame.session.my_role() != self.canvas.frame.session.ROLE_GM: continue |
486 if only_unlocked and not m.locked: min_list.append(m) | |
487 elif not only_unlocked and m.locked: min_list.append(m) | |
488 else: continue | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
489 if len(min_list) > 0: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
490 return min_list |
71
449a8900f9ac
Code refining almost completed, for this round. Some included files are still in need of some clean up, but this is test worthy.
sirebral
parents:
21
diff
changeset
|
491 else: return None |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
492 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
493 def layerToXML(self, action="update"): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
494 """ format """ |
139 | 495 minis_string = "" |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
496 if self.miniatures: |
139 | 497 for m in self.miniatures: minis_string += m.toxml(action) |
498 if minis_string != '': | |
499 s = "<miniatures" | |
500 s += " serial='" + str(self.serial_number) + "'" | |
501 s += ">" | |
502 s += minis_string | |
503 s += "</miniatures>" | |
504 return s | |
71
449a8900f9ac
Code refining almost completed, for this round. Some included files are still in need of some clean up, but this is test worthy.
sirebral
parents:
21
diff
changeset
|
505 else: return "" |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
506 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
507 def layerTakeDOM(self, xml_dom): |
139 | 508 if xml_dom.hasAttribute('serial'): |
509 self.serial_number = int(xml_dom.getAttribute('serial')) | |
510 children = xml_dom._get_childNodes() | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
511 for c in children: |
139 | 512 action = c.getAttribute("action") |
513 id = c.getAttribute('id') | |
21
fdd70f11bc7e
One too many deletes last time. This run tested on Linux and working
sirebral
parents:
20
diff
changeset
|
514 if action == "del": |
fdd70f11bc7e
One too many deletes last time. This run tested on Linux and working
sirebral
parents:
20
diff
changeset
|
515 mini = self.get_miniature_by_id(id) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
516 if mini: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
517 self.miniatures.remove(mini) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
518 del mini |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
519 elif action == "new": |
139 | 520 pos = cmpPoint(int(c.getAttribute('posx')),int(c.getAttribute('posy'))) |
521 path = urllib.unquote(c.getAttribute('path')) | |
522 label = c.getAttribute('label') | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
523 height = width = heading = face = snap_to_align = zorder = 0 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
524 locked = hide = False |
139 | 525 if c.hasAttribute('height'): height = int(c.getAttribute('height')) |
526 if c.hasAttribute('width'): width = int(c.getAttribute('width')) | |
527 if c.getAttribute('locked') == 'True' or c.getAttribute('locked') == '1': locked = True | |
528 if c.getAttribute('hide') == 'True' or c.getAttribute('hide') == '1': hide = True | |
529 if c.getAttribute('heading'): heading = int(c.getAttribute('heading')) | |
530 if c.hasAttribute('face'): face = int(c.getAttribute('face')) | |
531 if c.hasAttribute('align'): snap_to_align = int(c.getAttribute('align')) | |
532 if c.getAttribute('zorder'): zorder = int(c.getAttribute('zorder')) | |
533 min = BmpMiniature(id, path, ImageHandler.load(path, 'miniature', id), pos, heading, | |
534 face, label, locked, hide, snap_to_align, zorder, width, height) | |
535 self.miniatures.append(min) | |
536 if c.hasAttribute('local') and c.getAttribute('local') == 'True' and os.path.exists(urllib.unquote(c.getAttribute('localPath'))): | |
537 localPath = urllib.unquote(c.getAttribute('localPath')) | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
538 local = True |
139 | 539 localTime = float(c.getAttribute('localTime')) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
540 if localTime-time.time() <= 144000: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
541 file = open(localPath, "rb") |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
542 imgdata = file.read() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
543 file.close() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
544 filename = os.path.split(localPath) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
545 (imgtype,j) = mimetypes.guess_type(filename[1]) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
546 postdata = urllib.urlencode({'filename':filename[1], 'imgdata':imgdata, 'imgtype':imgtype}) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
547 thread.start_new_thread(self.upload, (postdata, localPath, True)) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
548 # collapse the zorder. If the client behaved well, then nothing should change. |
139 | 549 # Otherwise, this will ensure that there's some kind of z-order |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
550 self.collapse_zorder() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
551 else: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
552 mini = self.get_miniature_by_id(id) |
20 | 553 if mini: mini.takedom(c) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
554 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
555 def upload(self, postdata, filename, modify=False, pos=cmpPoint(0,0)): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
556 self.lock.acquire() |
76
37a11fea3304
More clean up. Images now posts a Chat Info post if image doesn't load.
sirebral
parents:
71
diff
changeset
|
557 url = settings.get_setting('ImageServerBaseURL') |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
558 file = urllib.urlopen(url, postdata) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
559 recvdata = file.read() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
560 file.close() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
561 try: |
137 | 562 xml_dom = fromstring(recvdata) |
563 if xml_dom.tag == 'path': | |
564 path = xml_dom.get('url') | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
565 path = urllib.unquote(path) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
566 if not modify: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
567 start = path.rfind("/") + 1 |
137 | 568 if self.canvas.parent.handlers[2].auto_label: min_label = path[start:len(path)-4] |
20 | 569 else: min_label = "" |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
570 id = 'mini-' + self.canvas.frame.session.get_next_id() |
19
78407d627cba
Beginning of Code Clean-up. Some code untested, may break!
sirebral
parents:
7
diff
changeset
|
571 self.add_miniature(id, path, pos=pos, label=min_label, local=True, |
78407d627cba
Beginning of Code Clean-up. Some code untested, may break!
sirebral
parents:
7
diff
changeset
|
572 localPath=filename, localTime=time.time()) |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
573 else: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
574 self.miniatures[len(self.miniatures)-1].local = True |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
575 self.miniatures[len(self.miniatures)-1].localPath = filename |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
576 self.miniatures[len(self.miniatures)-1].localTime = time.time() |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
577 self.miniatures[len(self.miniatures)-1].path = path |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
578 else: |
137 | 579 print xml_dom.get('msg') |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
580 except Exception, e: |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
581 print e |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
582 print recvdata |
88 | 583 finally: |
584 urllib.urlcleanup() | |
585 self.lock.release() | |
0
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
586 #################################################################### |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
587 ## helper function |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
588 |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
589 def get_mini_label(self, mini): |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
590 # override this to change the label displayed under each mini (and the label on hidden minis) |
4385a7d0efd1
Deleted and repushed it with the 'grumpy-goblin' branch. I forgot a y
sirebral
parents:
diff
changeset
|
591 return mini.label |