graphics/GraphicCommons.py
changeset 338 87e5015330ae
parent 334 cf0809bc5675
child 339 d4977f6d1621
equal deleted inserted replaced
337:388a00b05b6b 338:87e5015330ae
   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: