plugins/python/modules/svgui/svguilib.py
changeset 371 b7cb57a2da08
child 381 5c0f34a9ab00
equal deleted inserted replaced
370:ee802ef00ca5 371:b7cb57a2da08
       
     1 
       
     2 class button:
       
     3     
       
     4     def __init__(self, parent, back_id, sele_id, toggle, state, active):
       
     5         self.parent = parent
       
     6         self.back_elt = getSVGElementById(back_id)
       
     7         self.sele_elt = getSVGElementById(sele_id)
       
     8         self.toggle = toggle
       
     9         self.state = state
       
    10         self.active = active
       
    11         self.dragging = False
       
    12         if toggle:
       
    13             self.up = not state
       
    14         else:
       
    15             self.up = True
       
    16         
       
    17         # Add event on each element of the button
       
    18         if self.active:
       
    19             self.back_elt.addEventListener("mouseup", self, False)
       
    20             self.back_elt.addEventListener("mousedown", self, False)
       
    21             self.back_elt.addEventListener("mouseover", self, False)
       
    22             self.back_elt.addEventListener("mouseout", self, False)
       
    23             
       
    24             self.sele_elt.addEventListener("mouseup", self, False)
       
    25             self.sele_elt.addEventListener("mousedown", self, False)
       
    26             self.sele_elt.addEventListener("mouseover", self, False)
       
    27             self.sele_elt.addEventListener("mouseout", self, False)
       
    28         
       
    29         blockSVGElementDrag(self.back_elt)
       
    30         blockSVGElementDrag(self.sele_elt)
       
    31 
       
    32         self.updateElements()
       
    33 
       
    34     # method to display the current state of interface
       
    35     def updateElements(self):
       
    36         if self.up:
       
    37             self.sele_elt.setAttribute("visibility", "hidden")
       
    38             self.back_elt.setAttribute("visibility", "visible")
       
    39         else:
       
    40             self.sele_elt.setAttribute("visibility", "visible")
       
    41             self.back_elt.setAttribute("visibility", "hidden")
       
    42         
       
    43     def updateState(self, value):
       
    44         self.up = not value
       
    45         self.updateElements()
       
    46 
       
    47     def handleEvent(self, evt):
       
    48         # Quand le bouton de la souris est presse
       
    49         if evt.type == "mousedown":
       
    50             evt.stopPropagation()
       
    51             setCurrentObject(self)
       
    52             
       
    53             self.dragging = True
       
    54             
       
    55             if self.toggle:
       
    56                 self.up = self.state
       
    57             else:
       
    58                 self.up = False
       
    59                 self.state = True
       
    60                 updateAttr(self.back_elt.id, 'state', self.state)
       
    61             self.updateElements()
       
    62         
       
    63         if isCurrentObject(self) and self.dragging:
       
    64             # Quand le bouton est survole
       
    65             if evt.type == "mouseover" and self.toggle:
       
    66                 self.up = self.state
       
    67                 self.updateElements()
       
    68             
       
    69             # Quand le curseur quitte la zone du bouton
       
    70             elif evt.type == "mouseout" and self.toggle:       
       
    71                 self.up = not self.state
       
    72                 self.updateElements()
       
    73             
       
    74             # Quand le bouton de la souris est relache
       
    75             elif evt.type == "mouseup":
       
    76                 evt.stopPropagation()
       
    77                 if self.toggle and self.up == self.state:
       
    78                     self.state = not self.state
       
    79                     updateAttr(self.back_elt.id, 'state', self.state)
       
    80                 elif not self.toggle:
       
    81                     self.up = True
       
    82                     self.state = False
       
    83                     updateAttr(self.back_elt.id, 'state', self.state)
       
    84                     self.updateElements()
       
    85                 self.dragging = False
       
    86         
       
    87 class textControl:
       
    88     
       
    89     def __init__(self, parent, back_id, state):
       
    90         self.parent = parent
       
    91         self.back_elt = getSVGElementById(back_id)
       
    92         self.state = state
       
    93         self.setValue(self.state)
       
    94     
       
    95     def handleEvent(self, evt):
       
    96         pass
       
    97     
       
    98     def getValue(self):
       
    99         return self.back_elt.firstChild.firstChild.textContent
       
   100     
       
   101     def setValue(self, value):
       
   102         self.back_elt.firstChild.firstChild.textContent = value
       
   103     
       
   104     def updateState(self, value):
       
   105         self.setValue(value)
       
   106