267 min_width, min_height = self.GetMinElementSize() |
267 min_width, min_height = self.GetMinElementSize() |
268 width = max(self.MinElementSize[0], min_width) |
268 width = max(self.MinElementSize[0], min_width) |
269 height = max(self.MinElementSize[1], min_height) |
269 height = max(self.MinElementSize[1], min_height) |
270 self.Element.SetSize(width, height) |
270 self.Element.SetSize(width, height) |
271 |
271 |
|
272 # Get element bounding box to center in preview |
|
273 bbox = self.Element.GetBoundingBox() |
|
274 |
272 # Get Preview panel size |
275 # Get Preview panel size |
273 client_size = self.Preview.GetClientSize() |
276 client_size = self.Preview.GetClientSize() |
274 |
277 |
275 # If graphic element is too big to be displayed in preview panel, |
278 # If graphic element is too big to be displayed in preview panel, |
276 # calculate preview panel scale so that graphic element fit inside |
279 # calculate preview panel scale so that graphic element fit inside |
277 scale = (max(float(width) / client_size.width, |
280 scale = (max(float(bbox.width) / client_size.width, |
278 float(height) / client_size.height) * 1.2 |
281 float(bbox.height) / client_size.height) * 1.2 |
279 if width * 1.2 > client_size.width or |
282 if bbox.width * 1.1 > client_size.width or |
280 height * 1.2 > client_size.height |
283 bbox.height * 1.1 > client_size.height |
281 else 1.0) |
284 else 1.0) |
282 dc.SetUserScale(1.0 / scale, 1.0 / scale) |
285 dc.SetUserScale(1.0 / scale, 1.0 / scale) |
283 |
286 |
284 # Center graphic element in preview panel |
287 # Center graphic element in preview panel |
285 x = int(client_size.width * scale - width) / 2 |
288 x = int(client_size.width * scale - bbox.width) / 2 |
286 y = int(client_size.height * scale - height) / 2 |
289 y = int(client_size.height * scale - bbox.height) / 2 |
287 self.Element.SetPosition(x, y) |
290 self.Element.SetPosition(x, y) |
288 |
291 |
289 # Draw graphic element |
292 # Draw graphic element |
290 self.Element.Draw(dc) |
293 self.Element.Draw(dc) |
291 |
294 |