937 |
937 |
938 _ProjectFilesView = None |
938 _ProjectFilesView = None |
939 def _OpenProjectFiles(self): |
939 def _OpenProjectFiles(self): |
940 self._OpenView("Project files") |
940 self._OpenView("Project files") |
941 |
941 |
|
942 _FileEditors = {} |
|
943 def _OpenFileEditor(self, filepath): |
|
944 self._OpenView(filepath) |
|
945 |
942 def _OpenView(self, name=None, onlyopened=False): |
946 def _OpenView(self, name=None, onlyopened=False): |
943 if name == "IEC code": |
947 if name == "IEC code": |
944 if self._IECCodeView is None: |
948 if self._IECCodeView is None: |
945 plc_file = self._getIECcodepath() |
949 plc_file = self._getIECcodepath() |
946 |
950 |
953 except: |
957 except: |
954 text = '(* No IEC code have been generated at that time ! *)' |
958 text = '(* No IEC code have been generated at that time ! *)' |
955 self._IECCodeView.SetText(text = text) |
959 self._IECCodeView.SetText(text = text) |
956 self._IECCodeView.SetIcon(GetBitmap("ST")) |
960 self._IECCodeView.SetIcon(GetBitmap("ST")) |
957 |
961 |
|
962 if self._IECCodeView is not None: |
958 self.AppFrame.EditProjectElement(self._IECCodeView, name) |
963 self.AppFrame.EditProjectElement(self._IECCodeView, name) |
959 |
|
960 elif onlyopened: |
|
961 self.AppFrame.EditProjectElement(self._IECCodeView, name, onlyopened) |
|
962 |
964 |
963 return self._IECCodeView |
965 return self._IECCodeView |
964 |
966 |
965 elif name == "IEC raw code": |
967 elif name == "IEC raw code": |
966 if self._IECRawCodeView is None: |
968 if self._IECRawCodeView is None: |
970 #self._IECRawCodeView.Enable(False) |
972 #self._IECRawCodeView.Enable(False) |
971 self._IECRawCodeView.SetTextSyntax("ALL") |
973 self._IECRawCodeView.SetTextSyntax("ALL") |
972 self._IECRawCodeView.SetKeywords(IEC_KEYWORDS) |
974 self._IECRawCodeView.SetKeywords(IEC_KEYWORDS) |
973 self._IECRawCodeView.RefreshView() |
975 self._IECRawCodeView.RefreshView() |
974 self._IECRawCodeView.SetIcon(GetBitmap("ST")) |
976 self._IECRawCodeView.SetIcon(GetBitmap("ST")) |
975 |
977 |
|
978 if self._IECRawCodeView is not None: |
976 self.AppFrame.EditProjectElement(self._IECRawCodeView, name) |
979 self.AppFrame.EditProjectElement(self._IECRawCodeView, name) |
977 |
|
978 elif onlyopened: |
|
979 self.AppFrame.EditProjectElement(self._IECRawCodeView, name, onlyopened) |
|
980 |
980 |
981 return self._IECRawCodeView |
981 return self._IECRawCodeView |
982 |
982 |
983 elif name == "Project files": |
983 elif name == "Project files": |
984 if self._ProjectFilesView is None: |
984 if self._ProjectFilesView is None: |
985 self._ProjectFilesView = FileManagementPanel(self.AppFrame.TabsOpened, self, name, self._getProjectFilesPath(), True) |
985 self._ProjectFilesView = FileManagementPanel(self.AppFrame.TabsOpened, self, name, self._getProjectFilesPath(), True) |
986 |
986 |
|
987 extensions = [] |
|
988 for extension, name, editor in features.file_editors: |
|
989 if extension not in extensions: |
|
990 extensions.append(extension) |
|
991 self._ProjectFilesView.SetEditableFileExtensions(extensions) |
|
992 |
|
993 if self._ProjectFilesView is not None: |
987 self.AppFrame.EditProjectElement(self._ProjectFilesView, name) |
994 self.AppFrame.EditProjectElement(self._ProjectFilesView, name) |
988 |
995 |
989 elif onlyopened: |
996 return self._ProjectFilesView |
990 self.AppFrame.EditProjectElement(self._ProjectFilesView, name, onlyopened) |
997 |
|
998 elif name is not None and os.path.isfile(name): |
|
999 if not self._FileEditors.has_key(name): |
|
1000 file_extension = os.path.splitext(name)[1] |
|
1001 |
|
1002 editors = dict([(editor_name, editor) |
|
1003 for extension, editor_name, editor in features.file_editors |
|
1004 if extension == file_extension]) |
|
1005 |
|
1006 editor_name = None |
|
1007 if len(editors) == 1: |
|
1008 editor_name = editors.keys()[0] |
|
1009 elif len(editors) > 0: |
|
1010 names = editors.keys() |
|
1011 dialog = wx.SingleChoiceDialog(self.ParentWindow, |
|
1012 _("Select an editor:"), _("Editor selection"), |
|
1013 names, wx.OK|wx.CANCEL) |
|
1014 if dialog.ShowModal() == wx.ID_OK: |
|
1015 editor_name = names[dialog.GetSelection()] |
|
1016 dialog.Destroy() |
|
1017 |
|
1018 if editor_name is not None: |
|
1019 editor = editors[editor_name]() |
|
1020 self._FileEditors[name] = editor(self.AppFrame.TabsOpened, self, name, self.AppFrame) |
|
1021 self._FileEditors[name].SetIcon(GetBitmap("FILE")) |
|
1022 |
|
1023 if self._FileEditors.has_key(name): |
|
1024 self.AppFrame.EditProjectElement(self._FileEditors[name], name) |
991 |
1025 |
992 return self._ProjectFilesView |
1026 return self._FileEditors[name] |
993 |
|
994 else: |
1027 else: |
995 return ConfigTreeNode._OpenView(self, name, onlyopened) |
1028 return ConfigTreeNode._OpenView(self, name, onlyopened) |
996 |
1029 |
997 def OnCloseEditor(self, view): |
1030 def OnCloseEditor(self, view): |
998 ConfigTreeNode.OnCloseEditor(self, view) |
1031 ConfigTreeNode.OnCloseEditor(self, view) |
1000 self._IECCodeView = None |
1033 self._IECCodeView = None |
1001 if self._IECRawCodeView == view: |
1034 if self._IECRawCodeView == view: |
1002 self._IECRawCodeView = None |
1035 self._IECRawCodeView = None |
1003 if self._ProjectFilesView == view: |
1036 if self._ProjectFilesView == view: |
1004 self._ProjectFilesView = None |
1037 self._ProjectFilesView = None |
|
1038 if view in self._FileEditors.values(): |
|
1039 self._FileEditors.pop(view.GetTagName()) |
1005 |
1040 |
1006 def _Clean(self): |
1041 def _Clean(self): |
1007 self._CloseView(self._IECCodeView) |
1042 self._CloseView(self._IECCodeView) |
1008 if os.path.isdir(os.path.join(self._getBuildPath())): |
1043 if os.path.isdir(os.path.join(self._getBuildPath())): |
1009 self.logger.write(_("Cleaning the build directory\n")) |
1044 self.logger.write(_("Cleaning the build directory\n")) |