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