IDEFrame.py
changeset 2737 38afed869ff6
parent 2614 6b4061f6ced6
child 3303 0ffb41625592
child 3350 0d86fd9691ec
equal deleted inserted replaced
2736:a81b72ef156c 2737:38afed869ff6
   112     if is_base64:
   112     if is_base64:
   113         path = base64.decodestring(path)
   113         path = base64.decodestring(path)
   114     return text(path, sys.getfilesystemencoding())
   114     return text(path, sys.getfilesystemencoding())
   115 
   115 
   116 
   116 
   117 def AppendMenu(parent, help, id, kind, text):
   117 def AppendMenu(parent, help, kind, text, id=wx.ID_ANY):
   118     parent.Append(help=help, id=id, kind=kind, text=text)
   118     return parent.Append(help=help, kind=kind, text=text, id=id)
   119 
   119 
   120 
   120 
   121 [
   121 [
   122     TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE,
   122     TITLE, EDITORTOOLBAR, FILEMENU, EDITMENU, DISPLAYMENU, PROJECTTREE,
   123     POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES
   123     POUINSTANCEVARIABLESPANEL, LIBRARYTREE, SCALING, PAGETITLES
   442                        kind=wx.ITEM_NORMAL, text=_(u'Clear Errors') + '\tCTRL+K')
   442                        kind=wx.ITEM_NORMAL, text=_(u'Clear Errors') + '\tCTRL+K')
   443         parent.AppendSeparator()
   443         parent.AppendSeparator()
   444         zoommenu = wx.Menu(title='')
   444         zoommenu = wx.Menu(title='')
   445         parent.AppendMenu(wx.ID_ZOOM_FIT, _("Zoom"), zoommenu)
   445         parent.AppendMenu(wx.ID_ZOOM_FIT, _("Zoom"), zoommenu)
   446         for idx, value in enumerate(ZOOM_FACTORS):
   446         for idx, value in enumerate(ZOOM_FACTORS):
   447             new_id = wx.NewId()
   447             new_item = AppendMenu(zoommenu, help='',
   448             AppendMenu(zoommenu, help='', id=new_id,
       
   449                        kind=wx.ITEM_RADIO, text=str(int(round(value * 100))) + "%")
   448                        kind=wx.ITEM_RADIO, text=str(int(round(value * 100))) + "%")
   450             self.Bind(wx.EVT_MENU, self.GenerateZoomFunction(idx), id=new_id)
   449             self.Bind(wx.EVT_MENU, self.GenerateZoomFunction(idx), new_item)
   451 
   450 
   452         parent.AppendSeparator()
   451         parent.AppendSeparator()
   453         AppendMenu(parent, help='', id=ID_PLCOPENEDITORDISPLAYMENUSWITCHPERSPECTIVE,
   452         AppendMenu(parent, help='', id=ID_PLCOPENEDITORDISPLAYMENUSWITCHPERSPECTIVE,
   454                    kind=wx.ITEM_NORMAL, text=_(u'Switch perspective') + '\tF12')
   453                    kind=wx.ITEM_NORMAL, text=_(u'Switch perspective') + '\tF12')
   455         self.Bind(wx.EVT_MENU, self.SwitchPerspective, id=ID_PLCOPENEDITORDISPLAYMENUSWITCHPERSPECTIVE)
   454         self.Bind(wx.EVT_MENU, self.SwitchPerspective, id=ID_PLCOPENEDITORDISPLAYMENUSWITCHPERSPECTIVE)
  1904             else:
  1903             else:
  1905                 name = self.UNEDITABLE_NAMES_DICT[name]
  1904                 name = self.UNEDITABLE_NAMES_DICT[name]
  1906 
  1905 
  1907             if name == "Data Types":
  1906             if name == "Data Types":
  1908                 menu = wx.Menu(title='')
  1907                 menu = wx.Menu(title='')
  1909                 new_id = wx.NewId()
  1908                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add DataType"))
  1910                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add DataType"))
  1909                 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, new_item)
  1911                 self.Bind(wx.EVT_MENU, self.OnAddDataTypeMenu, id=new_id)
       
  1912 
  1910 
  1913             elif name in ["Functions", "Function Blocks", "Programs", "Project"]:
  1911             elif name in ["Functions", "Function Blocks", "Programs", "Project"]:
  1914                 menu = wx.Menu(title='')
  1912                 menu = wx.Menu(title='')
  1915 
  1913 
  1916                 if name != "Project":
  1914                 if name != "Project":
  1917                     new_id = wx.NewId()
  1915                     new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add POU"))
  1918                     AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add POU"))
  1916                     self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction({"Functions": "function", "Function Blocks": "functionBlock", "Programs": "program"}[name]), new_item)
  1919                     self.Bind(wx.EVT_MENU, self.GenerateAddPouFunction({"Functions": "function", "Function Blocks": "functionBlock", "Programs": "program"}[name]), id=new_id)
  1917 
  1920 
  1918                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Paste POU"))
  1921                 new_id = wx.NewId()
  1919                 self.Bind(wx.EVT_MENU, self.OnPastePou, new_item)
  1922                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Paste POU"))
       
  1923                 self.Bind(wx.EVT_MENU, self.OnPastePou, id=new_id)
       
  1924                 if self.GetCopyBuffer() is None:
  1920                 if self.GetCopyBuffer() is None:
  1925                     menu.Enable(new_id, False)
  1921                     menu.Enable(new_item, False)
  1926 
  1922 
  1927             elif name == "Configurations":
  1923             elif name == "Configurations":
  1928                 menu = wx.Menu(title='')
  1924                 menu = wx.Menu(title='')
  1929                 new_id = wx.NewId()
  1925                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
  1930                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Configuration"))
  1926                 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, new_item)
  1931                 self.Bind(wx.EVT_MENU, self.OnAddConfigurationMenu, id=new_id)
       
  1932 
  1927 
  1933             elif name == "Transitions":
  1928             elif name == "Transitions":
  1934                 menu = wx.Menu(title='')
  1929                 menu = wx.Menu(title='')
  1935                 new_id = wx.NewId()
  1930                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1936                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
       
  1937                 parent = self.ProjectTree.GetItemParent(item)
  1931                 parent = self.ProjectTree.GetItemParent(item)
  1938                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1932                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1939                 while parent_type != ITEM_POU:
  1933                 while parent_type != ITEM_POU:
  1940                     parent = self.ProjectTree.GetItemParent(parent)
  1934                     parent = self.ProjectTree.GetItemParent(parent)
  1941                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1935                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1942                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.ProjectTree.GetItemText(parent)), id=new_id)
  1936                 self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(self.ProjectTree.GetItemText(parent)), new_item)
  1943 
  1937 
  1944             elif name == "Actions":
  1938             elif name == "Actions":
  1945                 menu = wx.Menu(title='')
  1939                 menu = wx.Menu(title='')
  1946                 new_id = wx.NewId()
  1940                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1947                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
       
  1948                 parent = self.ProjectTree.GetItemParent(item)
  1941                 parent = self.ProjectTree.GetItemParent(item)
  1949                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1942                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1950                 while parent_type != ITEM_POU:
  1943                 while parent_type != ITEM_POU:
  1951                     parent = self.ProjectTree.GetItemParent(parent)
  1944                     parent = self.ProjectTree.GetItemParent(parent)
  1952                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1945                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1953                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.ProjectTree.GetItemText(parent)), id=new_id)
  1946                 self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(self.ProjectTree.GetItemText(parent)), new_item)
  1954 
  1947 
  1955             elif name == "Resources":
  1948             elif name == "Resources":
  1956                 menu = wx.Menu(title='')
  1949                 menu = wx.Menu(title='')
  1957                 new_id = wx.NewId()
  1950                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  1958                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
       
  1959                 parent = self.ProjectTree.GetItemParent(item)
  1951                 parent = self.ProjectTree.GetItemParent(item)
  1960                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1952                 parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1961                 while parent_type not in [ITEM_CONFIGURATION, ITEM_PROJECT]:
  1953                 while parent_type not in [ITEM_CONFIGURATION, ITEM_PROJECT]:
  1962                     parent = self.ProjectTree.GetItemParent(parent)
  1954                     parent = self.ProjectTree.GetItemParent(parent)
  1963                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1955                     parent_type = self.ProjectTree.GetPyData(parent)["type"]
  1967                     if len(config_names) > 0:
  1959                     if len(config_names) > 0:
  1968                         parent_name = config_names[0]
  1960                         parent_name = config_names[0]
  1969                 else:
  1961                 else:
  1970                     parent_name = self.ProjectTree.GetItemText(parent)
  1962                     parent_name = self.ProjectTree.GetItemText(parent)
  1971                 if parent_name is not None:
  1963                 if parent_name is not None:
  1972                     self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(parent_name), id=new_id)
  1964                     self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(parent_name), new_item)
  1973 
  1965 
  1974         else:
  1966         else:
  1975             if item_infos["type"] == ITEM_POU:
  1967             if item_infos["type"] == ITEM_POU:
  1976                 menu = wx.Menu(title='')
  1968                 menu = wx.Menu(title='')
  1977                 if self.Controler.GetPouBodyType(name) == "SFC":
  1969                 if self.Controler.GetPouBodyType(name) == "SFC":
  1978                     new_id = wx.NewId()
  1970                     new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1979                     AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Transition"))
  1971                     self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), new_item)
  1980                     self.Bind(wx.EVT_MENU, self.GenerateAddTransitionFunction(name), id=new_id)
  1972                     new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Action"))
  1981                     new_id = wx.NewId()
  1973                     self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), new_item)
  1982                     AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Action"))
       
  1983                     self.Bind(wx.EVT_MENU, self.GenerateAddActionFunction(name), id=new_id)
       
  1984                     menu.AppendSeparator()
  1974                     menu.AppendSeparator()
  1985 
  1975 
  1986                 new_id = wx.NewId()
  1976                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Copy POU"))
  1987                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Copy POU"))
  1977                 self.Bind(wx.EVT_MENU, self.OnCopyPou, new_item)
  1988                 self.Bind(wx.EVT_MENU, self.OnCopyPou, id=new_id)
       
  1989 
  1978 
  1990                 pou_type = self.Controler.GetPouType(name)
  1979                 pou_type = self.Controler.GetPouType(name)
  1991                 if pou_type in ["function", "functionBlock"]:
  1980                 if pou_type in ["function", "functionBlock"]:
  1992                     change_menu = wx.Menu(title='')
  1981                     change_menu = wx.Menu(title='')
  1993                     if pou_type == "function":
  1982                     if pou_type == "function":
  1994                         new_id = wx.NewId()
  1983                         new_item = AppendMenu(change_menu, help='', kind=wx.ITEM_NORMAL, text=_("Function Block"))
  1995                         AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Function Block"))
  1984                         self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), new_item)
  1996                         self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "functionBlock"), id=new_id)
  1985                     new_item = AppendMenu(change_menu, help='', kind=wx.ITEM_NORMAL, text=_("Program"))
  1997                     new_id = wx.NewId()
  1986                     self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), new_item)
  1998                     AppendMenu(change_menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Program"))
       
  1999                     self.Bind(wx.EVT_MENU, self.GenerateChangePouTypeFunction(name, "program"), id=new_id)
       
  2000                     menu.AppendMenu(wx.NewId(), _("Duplicate as..."), change_menu)
  1987                     menu.AppendMenu(wx.NewId(), _("Duplicate as..."), change_menu)
  2001                 new_id = wx.NewId()
  1988                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Rename"))
  2002                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Rename"))
  1989                 self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, new_item)
  2003                 self.Bind(wx.EVT_MENU, self.OnRenamePouMenu, id=new_id)
       
  2004 
  1990 
  2005             elif item_infos["type"] == ITEM_CONFIGURATION:
  1991             elif item_infos["type"] == ITEM_CONFIGURATION:
  2006                 menu = wx.Menu(title='')
  1992                 menu = wx.Menu(title='')
  2007                 new_id = wx.NewId()
  1993                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  2008                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Add Resource"))
  1994                 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), new_item)
  2009                 self.Bind(wx.EVT_MENU, self.GenerateAddResourceFunction(name), id=new_id)
       
  2010 
  1995 
  2011             elif item_infos["type"] in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
  1996             elif item_infos["type"] in [ITEM_DATATYPE, ITEM_TRANSITION, ITEM_ACTION, ITEM_RESOURCE]:
  2012                 menu = wx.Menu(title='')
  1997                 menu = wx.Menu(title='')
  2013 
  1998 
  2014             if menu is not None:
  1999             if menu is not None:
  2015                 new_id = wx.NewId()
  2000                 new_item = AppendMenu(menu, help='', kind=wx.ITEM_NORMAL, text=_("Delete"))
  2016                 AppendMenu(menu, help='', id=new_id, kind=wx.ITEM_NORMAL, text=_("Delete"))
  2001                 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, new_item)
  2017                 self.Bind(wx.EVT_MENU, self.OnDeleteMenu, id=new_id)
       
  2018 
  2002 
  2019         if menu is not None:
  2003         if menu is not None:
  2020             self.FindFocus().PopupMenu(menu)
  2004             self.FindFocus().PopupMenu(menu)
  2021             menu.Destroy()
  2005             menu.Destroy()
  2022 
  2006