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 |