289 dc.SetLogicalFunction(wx.XOR) |
289 dc.SetLogicalFunction(wx.XOR) |
290 if self.currentBox: |
290 if self.currentBox: |
291 # Draw current box |
291 # Draw current box |
292 dc.DrawRectangle(self.currentBox.x, self.currentBox.y, self.currentBox.width, |
292 dc.DrawRectangle(self.currentBox.x, self.currentBox.y, self.currentBox.width, |
293 self.currentBox.height) |
293 self.currentBox.height) |
|
294 |
|
295 #------------------------------------------------------------------------------- |
|
296 # Viewer Rubberband |
|
297 #------------------------------------------------------------------------------- |
|
298 |
|
299 """ |
|
300 Class that implements a custom tool tip |
|
301 """ |
|
302 |
|
303 class ToolTip(wx.PopupWindow): |
|
304 |
|
305 # Create a rubberband by indicated on which window it must be drawn |
|
306 def __init__(self, parent, tip): |
|
307 wx.PopupWindow.__init__(self, parent) |
|
308 self.SetTip(tip) |
|
309 |
|
310 self.Bind(wx.EVT_PAINT, self.OnPaint) |
|
311 |
|
312 def SetTip(self, tip): |
|
313 self.Tip = tip |
|
314 dc = wx.ClientDC(self) |
|
315 w, h = dc.GetTextExtent(tip) |
|
316 self.SetSize(wx.Size(w + 4, h + 4)) |
|
317 self.Refresh() |
|
318 |
|
319 def OnPaint(self, event): |
|
320 dc = wx.AutoBufferedPaintDC(self) |
|
321 dc.Clear() |
|
322 dc.SetPen(wx.BLACK_PEN) |
|
323 dc.SetBrush(wx.Brush(wx.Colour(255, 238, 170))) |
|
324 dc.BeginDrawing() |
|
325 w, h = dc.GetTextExtent(self.Tip) |
|
326 dc.DrawRectangle(0, 0, w + 4, h + 4) |
|
327 dc.DrawText(self.Tip, 2, 2) |
|
328 dc.EndDrawing() |
|
329 event.Skip() |
294 |
330 |
295 #------------------------------------------------------------------------------- |
331 #------------------------------------------------------------------------------- |
296 # Helper for highlighting error in drawn text |
332 # Helper for highlighting error in drawn text |
297 #------------------------------------------------------------------------------- |
333 #------------------------------------------------------------------------------- |
298 |
334 |
1383 self.ValueSize = None |
1419 self.ValueSize = None |
1384 self.ComputedValue = None |
1420 self.ComputedValue = None |
1385 self.OverStart = False |
1421 self.OverStart = False |
1386 self.OverEnd = False |
1422 self.OverEnd = False |
1387 self.ComputingType = False |
1423 self.ComputingType = False |
|
1424 self.ToolTip = None |
1388 self.Font = parent.GetMiniFont() |
1425 self.Font = parent.GetMiniFont() |
1389 |
1426 |
1390 def Flush(self): |
1427 def Flush(self): |
1391 self.StartConnected = None |
1428 self.StartConnected = None |
1392 self.EndConnected = None |
1429 self.EndConnected = None |
|
1430 |
|
1431 def CreateToolTip(self, pos): |
|
1432 if self.Value is not None and self.Value != "undefined" and not isinstance(self.Value, BooleanType): |
|
1433 if isinstance(self.Value, StringType): |
|
1434 self.ComputedValue = "\"%s\""%self.Value |
|
1435 else: |
|
1436 self.ComputedValue = str(self.Value) |
|
1437 self.ToolTip = ToolTip(self.Parent, self.ComputedValue) |
|
1438 self.ToolTip.SetPosition(pos) |
|
1439 self.ToolTip.Show() |
|
1440 |
|
1441 def ClearToolTip(self): |
|
1442 if self.ToolTip is not None: |
|
1443 self.ToolTip.Destroy() |
|
1444 self.ToolTip = None |
1393 |
1445 |
1394 # Returns the RedrawRect |
1446 # Returns the RedrawRect |
1395 def GetRedrawRect(self, movex = 0, movey = 0): |
1447 def GetRedrawRect(self, movex = 0, movey = 0): |
1396 rect = Graphic_Element.GetRedrawRect(self, movex, movey) |
1448 rect = Graphic_Element.GetRedrawRect(self, movex, movey) |
1397 if self.StartConnected: |
1449 if self.StartConnected: |
1530 elif self.EndConnected: |
1582 elif self.EndConnected: |
1531 return True |
1583 return True |
1532 return False |
1584 return False |
1533 |
1585 |
1534 def SetValue(self, value): |
1586 def SetValue(self, value): |
1535 if self.Value != value: |
1587 if self.Value != value and self.Parent: |
1536 self.Value = value |
1588 self.Value = value |
1537 if value is not None and not isinstance(value, BooleanType): |
1589 if value is not None and not isinstance(value, BooleanType): |
1538 if isinstance(value, StringType): |
1590 if isinstance(value, StringType): |
1539 self.ComputedValue = "\"%s\""%value |
1591 self.ComputedValue = "\"%s\""%value |
1540 else: |
1592 else: |
1541 self.ComputedValue = str(value) |
1593 self.ComputedValue = str(value) |
|
1594 if self.ToolTip is not None: |
|
1595 self.ToolTip.SetTip(self.ComputedValue) |
1542 if len(self.ComputedValue) > 4: |
1596 if len(self.ComputedValue) > 4: |
1543 self.ComputedValue = self.ComputedValue[:4] + "..." |
1597 self.ComputedValue = self.ComputedValue[:4] + "..." |
1544 if isinstance(self.ComputedValue, StringType): |
1598 if isinstance(self.ComputedValue, StringType): |
1545 dc = wx.ClientDC(self.Parent) |
1599 dc = wx.ClientDC(self.Parent) |
1546 dc.SetFont(self.Font) |
1600 dc.SetFont(self.Font) |
1547 self.ValueSize = dc.GetTextExtent(self.ComputedValue) |
1601 self.ValueSize = dc.GetTextExtent(self.ComputedValue) |
1548 else: |
1602 else: |