25 from eric7.EricGui import EricPixmapCache |
25 from eric7.EricGui import EricPixmapCache |
26 from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog |
26 from eric7.EricWidgets import EricMessageBox, EricPathPickerDialog |
27 from eric7.EricWidgets.EricApplication import ericApp |
27 from eric7.EricWidgets.EricApplication import ericApp |
28 from eric7.EricWidgets.EricFileSaveConfirmDialog import confirmOverwrite |
28 from eric7.EricWidgets.EricFileSaveConfirmDialog import confirmOverwrite |
29 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes |
29 from eric7.EricWidgets.EricPathPicker import EricPathPickerModes |
|
30 from eric7.SystemUtilities import FileSystemUtilities |
30 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
31 from eric7.UI.DeleteFilesConfirmationDialog import DeleteFilesConfirmationDialog |
31 |
32 |
32 from .MicroPythonFileSystemUtilities import ( |
33 from .MicroPythonFileSystemUtilities import ( |
33 decoratedName, |
34 decoratedName, |
34 listdirStat, |
35 listdirStat, |
173 Public method to start the widget. |
174 Public method to start the widget. |
174 """ |
175 """ |
175 dirname = "" |
176 dirname = "" |
176 vm = ericApp().getObject("ViewManager") |
177 vm = ericApp().getObject("ViewManager") |
177 aw = vm.activeWindow() |
178 aw = vm.activeWindow() |
178 if aw and aw.isLocalFile(): |
179 if aw and FileSystemUtilities.isPlainFileName(aw.getFileName()): |
179 dirname = os.path.dirname(aw.getFileName()) |
180 dirname = os.path.dirname(aw.getFileName()) |
180 if not dirname: |
181 if not dirname: |
181 dirname = ( |
182 dirname = ( |
182 Preferences.getMicroPython("MpyWorkspace") |
183 Preferences.getMicroPython("MpyWorkspace") |
183 or Preferences.getMultiProject("Workspace") |
184 or Preferences.getMultiProject("Workspace") |
408 else: |
409 else: |
409 data = self.__fileManager.getData(name) |
410 data = self.__fileManager.getData(name) |
410 try: |
411 try: |
411 text = data.decode(encoding="utf-8") |
412 text = data.decode(encoding="utf-8") |
412 ericApp().getObject("ViewManager").newEditorWithText( |
413 ericApp().getObject("ViewManager").newEditorWithText( |
413 text, fileName="device:{0}".format(name) |
414 text, fileName=FileSystemUtilities.deviceFileName(name) |
414 ) |
415 ) |
415 except UnicodeDecodeError: |
416 except UnicodeDecodeError: |
416 EricMessageBox.warning( |
417 EricMessageBox.warning( |
417 self, |
418 self, |
418 self.tr("Open Device File"), |
419 self.tr("Open Device File"), |
730 name = filename |
731 name = filename |
731 if not name.endswith("/"): |
732 if not name.endswith("/"): |
732 data = self.__fileManager.getData(name) |
733 data = self.__fileManager.getData(name) |
733 text = data.decode(encoding="utf-8") |
734 text = data.decode(encoding="utf-8") |
734 ericApp().getObject("ViewManager").newEditorWithText( |
735 ericApp().getObject("ViewManager").newEditorWithText( |
735 text, "Python3", "device:{0}".format(name) |
736 text, "Python3", FileSystemUtilities.deviceFileName(name) |
736 ) |
737 ) |
737 |
738 |
738 @pyqtSlot() |
739 @pyqtSlot() |
739 def on_saveButton_clicked(self, saveAs=False): |
740 def on_saveButton_clicked(self, saveAs=False): |
740 """ |
741 """ |
767 if not ok or not filename: |
768 if not ok or not filename: |
768 return |
769 return |
769 |
770 |
770 if not saveAs: |
771 if not saveAs: |
771 # check editor and selected file names for an implicit 'save as' |
772 # check editor and selected file names for an implicit 'save as' |
772 editorFileName = os.path.basename(aw.getFileName().replace("device:", "")) |
773 editorFileName = os.path.basename( |
|
774 FileSystemUtilities.plainFileName(aw.getFileName()) |
|
775 ) |
773 if editorFileName != filename: |
776 if editorFileName != filename: |
774 saveAs = True |
777 saveAs = True |
775 |
778 |
776 if saveAs and self.__isFileInList(filename, self.deviceFileTreeWidget): |
779 if saveAs and self.__isFileInList(filename, self.deviceFileTreeWidget): |
777 # ask for overwrite permission |
780 # ask for overwrite permission |
805 else "/" + filename |
808 else "/" + filename |
806 ) |
809 ) |
807 dirname = filename.rsplit("/", 1)[0] |
810 dirname = filename.rsplit("/", 1)[0] |
808 self.__fileManager.makedirs(dirname) |
811 self.__fileManager.makedirs(dirname) |
809 self.__fileManager.putData(filename, text.encode("utf-8")) |
812 self.__fileManager.putData(filename, text.encode("utf-8")) |
810 aw.setFileName("device:" + filename) |
813 aw.setFileName(FileSystemUtilities.deviceFileName(filename)) |
811 |
814 |
812 aw.setModified(False) |
815 aw.setModified(False) |
813 aw.resetOnlineChangeTraceInfo() |
816 aw.resetOnlineChangeTraceInfo() |
814 |
817 |
815 @pyqtSlot() |
818 @pyqtSlot() |