ProjectController.py
changeset 784 a1d970365e41
parent 782 6f0e10085df9
child 786 aaacf208beb9
equal deleted inserted replaced
783:f5cea1a6851e 784:a1d970365e41
   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"))