845 """ |
845 """ |
846 port = self.getCurrentPort() |
846 port = self.getCurrentPort() |
847 if self.__interface.connectToDevice(port): |
847 if self.__interface.connectToDevice(port): |
848 self.__setConnected(True) |
848 self.__setConnected(True) |
849 |
849 |
850 if Preferences.getMicroPython("SyncTimeAfterConnect"): |
850 if (Preferences.getMicroPython("SyncTimeAfterConnect") and |
|
851 self.__device.hasTimeCommands()): |
851 self.__synchronizeTime(quiet=True) |
852 self.__synchronizeTime(quiet=True) |
852 else: |
853 else: |
853 E5MessageBox.warning( |
854 E5MessageBox.warning( |
854 self, |
855 self, |
855 self.tr("Serial Device Connect"), |
856 self.tr("Serial Device Connect"), |
1105 self.tr("Synchronize Time"), self.__synchronizeTime) |
1106 self.tr("Synchronize Time"), self.__synchronizeTime) |
1106 act.setEnabled(self.__connected) |
1107 act.setEnabled(self.__connected) |
1107 act = self.__superMenu.addAction( |
1108 act = self.__superMenu.addAction( |
1108 self.tr("Show Device Time"), self.__showDeviceTime) |
1109 self.tr("Show Device Time"), self.__showDeviceTime) |
1109 act.setEnabled(self.__connected) |
1110 act.setEnabled(self.__connected) |
1110 self.__superMenu.addAction( |
1111 self.__superMenu.addAction( |
1111 self.tr("Show Local Time"), self.__showLocalTime) |
1112 self.tr("Show Local Time"), self.__showLocalTime) |
1112 self.__superMenu.addSeparator() |
1113 self.__superMenu.addSeparator() |
1113 if not Globals.isWindowsPlatform(): |
1114 if not Globals.isWindowsPlatform(): |
1114 self.__superMenu.addAction( |
1115 available = self.__mpyCrossAvailable() |
|
1116 act = self.__superMenu.addAction( |
1115 self.tr("Compile Python File"), self.__compileFile2Mpy) |
1117 self.tr("Compile Python File"), self.__compileFile2Mpy) |
|
1118 act.setEnabled(available) |
1116 act = self.__superMenu.addAction( |
1119 act = self.__superMenu.addAction( |
1117 self.tr("Compile Current Editor"), self.__compileEditor2Mpy) |
1120 self.tr("Compile Current Editor"), self.__compileEditor2Mpy) |
1118 aw = e5App().getObject("ViewManager").activeWindow() |
1121 aw = e5App().getObject("ViewManager").activeWindow() |
1119 act.setEnabled(bool(aw)) |
1122 act.setEnabled(available and bool(aw)) |
1120 self.__superMenu.addSeparator() |
1123 self.__superMenu.addSeparator() |
1121 if self.__device: |
1124 if self.__device: |
1122 self.__device.addDeviceMenuEntries(self.__superMenu) |
1125 self.__device.addDeviceMenuEntries(self.__superMenu) |
1123 |
1126 |
1124 @pyqtSlot() |
1127 @pyqtSlot() |
1273 self.tr("Error handling device"), |
1276 self.tr("Error handling device"), |
1274 self.tr("<p>There was an error communicating with the connected" |
1277 self.tr("<p>There was an error communicating with the connected" |
1275 " device.</p><p>Method: {0}</p><p>Message: {1}</p>") |
1278 " device.</p><p>Method: {0}</p><p>Message: {1}</p>") |
1276 .format(method, error)) |
1279 .format(method, error)) |
1277 |
1280 |
|
1281 def __mpyCrossAvailable(self): |
|
1282 """ |
|
1283 Private method to check the availability of mpy-cross. |
|
1284 |
|
1285 @return flag indicating the availability of mpy-cross |
|
1286 @rtype bool |
|
1287 """ |
|
1288 available = False |
|
1289 program = Preferences.getMicroPython("MpyCrossCompiler") |
|
1290 if not program: |
|
1291 program = "mpy-cross" |
|
1292 if Utilities.isinpath(program): |
|
1293 available = True |
|
1294 else: |
|
1295 if Utilities.isExecutable(program): |
|
1296 available = True |
|
1297 |
|
1298 return available |
|
1299 |
1278 def __crossCompile(self, pythonFile="", title=""): |
1300 def __crossCompile(self, pythonFile="", title=""): |
1279 """ |
1301 """ |
1280 Private method to cross compile a Python file to a .mpy file. |
1302 Private method to cross compile a Python file to a .mpy file. |
1281 |
1303 |
1282 @param pythonFile name of the Python file to be compiled |
1304 @param pythonFile name of the Python file to be compiled |