beremiz

Fixing bug in scrollbars and content position in Topology panel when expand and collapse elements in treectrls
  • +17 -6
    Beremiz.py
  • --- a/Beremiz.py Sun Jan 08 19:10:12 2012 +0100
    +++ b/Beremiz.py Mon Jan 09 18:18:43 2012 +0100
    @@ -649,10 +649,11 @@
    sizer = self.PLCConfig.GetSizer()
    if sizer:
    maxx, maxy = sizer.GetMinSize()
    + posx = max(0, min(xstart, (maxx - window_size[0]) / SCROLLBAR_UNIT))
    + posy = max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT))
    + self.PLCConfig.Scroll(posx, posy)
    self.PLCConfig.SetScrollbars(SCROLLBAR_UNIT, SCROLLBAR_UNIT,
    - maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT,
    - max(0, min(xstart, (maxx - window_size[0]) / SCROLLBAR_UNIT)),
    - max(0, min(ystart, (maxy - window_size[1]) / SCROLLBAR_UNIT)))
    + maxx / SCROLLBAR_UNIT, maxy / SCROLLBAR_UNIT, posx, posy)
    def RefreshPLCParams(self):
    self.Freeze()
    @@ -815,7 +816,6 @@
    self.ExpandLocation(locations_infos, "root", force)
    if force:
    locations_infos["root"]["expanded"] = True
    -
    def CollapsePlugin(self, plugin, force = False):
    for child in self.PluginInfos[plugin]["children"]:
    @@ -1085,6 +1085,7 @@
    treectrl.Bind(wx.EVT_TREE_BEGIN_DRAG, self.GenerateLocationBeginDragFunction(locations_infos))
    treectrl.Bind(wx.EVT_TREE_ITEM_EXPANDED, self.GenerateLocationExpandCollapseFunction(locations_infos, True))
    treectrl.Bind(wx.EVT_TREE_ITEM_COLLAPSED, self.GenerateLocationExpandCollapseFunction(locations_infos, False))
    + treectrl.Bind(wx.EVT_MOUSEWHEEL, self.OnMouseWheelTreeCtrl)
    treectrl.AddRoot("")
    self.PluginTreeSizer.AddWindow(treectrl, 0, border=0, flag=0)
    @@ -1100,6 +1101,7 @@
    self.GenerateLocationTreeBranch(treectrl, treectrl.GetRootItem(), locations_infos, "root", location)
    treectrl.Expand(treectrl.GetRootItem())
    if locations_infos["root"]["expanded"]:
    + self.PluginTreeSizer.Layout()
    self.ExpandLocation(locations_infos, "root")
    else:
    self.RefreshTreeCtrlSize(treectrl)
    @@ -1138,7 +1140,7 @@
    if location_name is not None:
    infos = locations_infos[location_name]["infos"]
    if infos["type"] in [LOCATION_VAR_INPUT, LOCATION_VAR_OUTPUT, LOCATION_VAR_MEMORY]:
    - data = wx.TextDataObject(str((infos["location"], "location", infos["IEC_type"], infos["name"], infos["description"])))
    + data = wx.TextDataObject(str((infos["location"], "location", infos["IEC_type"], infos["var_name"], infos["description"])))
    dragSource = wx.DropSource(self)
    dragSource.SetData(data)
    dragSource.DoDragDrop()
    @@ -1146,9 +1148,18 @@
    def RefreshTreeCtrlSize(self, treectrl):
    rect = self.GetTreeCtrlItemRect(treectrl, treectrl.GetRootItem())
    - treectrl.SetMinSize(wx.Size(max(rect.width, rect.x + rect.width) + 20, max(rect.height, rect.y + rect.height) + 10))
    + treectrl.SetMinSize(wx.Size(max(rect.width, rect.x + rect.width) + 20, max(rect.height, rect.y + rect.height) + 20))
    self.PLCConfigMainSizer.Layout()
    self.PLCConfig.Refresh()
    + wx.CallAfter(self.RefreshScrollBars)
    +
    + def OnMouseWheelTreeCtrl(self, event):
    + x, y = self.PLCConfig.GetViewStart()
    + rotation = - (event.GetWheelRotation() / event.GetWheelDelta()) * 3
    + if event.ShiftDown():
    + self.PLCConfig.Scroll(x + rotation, y)
    + else:
    + self.PLCConfig.Scroll(x, y + rotation)
    def GetTreeCtrlItemRect(self, treectrl, item):
    item_rect = treectrl.GetBoundingRect(item, True)