9 |
9 |
10 import contextlib |
10 import contextlib |
11 import os |
11 import os |
12 import pathlib |
12 import pathlib |
13 |
13 |
14 from PyQt6.QtCore import QEvent, QSignalMapper, QSize, Qt, pyqtSignal |
14 from PyQt6.QtCore import QBuffer, QByteArray, QEvent, QSignalMapper, QSize, Qt, pyqtSignal |
15 from PyQt6.QtGui import QImage, QImageReader, QImageWriter, QKeySequence, QPalette |
15 from PyQt6.QtGui import QImage, QImageReader, QImageWriter, QKeySequence, QPalette |
16 from PyQt6.QtWidgets import QDockWidget, QLabel, QScrollArea, QWhatsThis |
16 from PyQt6.QtWidgets import QDockWidget, QLabel, QScrollArea, QWhatsThis |
17 |
17 |
18 from eric7 import Preferences |
18 from eric7 import Preferences |
19 from eric7.EricGui import EricPixmapCache |
19 from eric7.EricGui import EricPixmapCache |
20 from eric7.EricGui.EricAction import EricAction, createActionGroup |
20 from eric7.EricGui.EricAction import EricAction, createActionGroup |
21 from eric7.EricWidgets import EricFileDialog, EricMessageBox |
21 from eric7.EricWidgets import EricFileDialog, EricMessageBox |
|
22 from eric7.EricWidgets.EricApplication import ericApp |
22 from eric7.EricWidgets.EricMainWindow import EricMainWindow |
23 from eric7.EricWidgets.EricMainWindow import EricMainWindow |
23 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget |
24 from eric7.EricWidgets.EricZoomWidget import EricZoomWidget |
|
25 from eric7.SystemUtilities import FileSystemUtilities |
24 |
26 |
25 from .IconEditorGrid import IconEditorGrid, IconEditorTool |
27 from .IconEditorGrid import IconEditorGrid, IconEditorTool |
26 |
28 |
27 |
29 |
28 class IconEditorWindow(EricMainWindow): |
30 class IconEditorWindow(EricMainWindow): |
1280 Private method to load an icon file. |
1282 Private method to load an icon file. |
1281 |
1283 |
1282 @param fileName name of the icon file to load |
1284 @param fileName name of the icon file to load |
1283 @type str |
1285 @type str |
1284 """ |
1286 """ |
1285 img = QImage(fileName) |
1287 img = QImage() |
|
1288 if self.fromEric and FileSystemUtilities.isRemoteFileName(fileName): |
|
1289 try: |
|
1290 data = ( |
|
1291 ericApp() |
|
1292 .getObject("EricServer") |
|
1293 .getServiceInterface("FileSystem") |
|
1294 .readFile(fileName) |
|
1295 ) |
|
1296 img.loadFromData(data) |
|
1297 except OSError as err: |
|
1298 EricMessageBox.warning( |
|
1299 self, |
|
1300 self.tr("eric Icon Editor"), |
|
1301 self.tr( |
|
1302 """<p>The file <b>{0}</b> cannot be loaded.</p>""" |
|
1303 """<p>Reason: {1}</p>""" |
|
1304 ).format(fileName, str(err)), |
|
1305 ) |
|
1306 return |
|
1307 else: |
|
1308 img.load(fileName) |
1286 if img.isNull(): |
1309 if img.isNull(): |
1287 EricMessageBox.warning( |
1310 EricMessageBox.warning( |
1288 self, |
1311 self, |
1289 self.tr("eric Icon Editor"), |
1312 self.tr("eric Icon Editor"), |
1290 self.tr("Cannot read file '{0}'.").format(fileName), |
1313 self.tr("Cannot read file '{0}'.").format(fileName), |
1301 @type str |
1324 @type str |
1302 @return flag indicating success |
1325 @return flag indicating success |
1303 @rtype bool |
1326 @rtype bool |
1304 """ |
1327 """ |
1305 img = self.__editor.iconImage() |
1328 img = self.__editor.iconImage() |
1306 res = img.save(fileName) |
1329 if self.fromEric and FileSystemUtilities.isRemoteFileName(fileName): |
|
1330 fsInterface = ( |
|
1331 ericApp().getObject("EricServer").getServiceInterface("FileSystem") |
|
1332 ) |
|
1333 imageFormat = fsInterface.splitext(fileName)[1][1:].upper() |
|
1334 data = QByteArray() |
|
1335 buffer = QBuffer(data) |
|
1336 res = img.save(buffer, imageFormat) |
|
1337 if res: |
|
1338 try: |
|
1339 fsInterface.writeFile(fileName, data) |
|
1340 except OSError as err: |
|
1341 EricMessageBox.warning( |
|
1342 self, |
|
1343 self.tr("eric Icon Editor"), |
|
1344 self.tr( |
|
1345 """<p>The file <b>{0}</b> cannot be written.</p>""" |
|
1346 """<p>Reason: {1}</p>""" |
|
1347 ).format(fileName, str(err)), |
|
1348 ) |
|
1349 self.__checkActions() |
|
1350 return False |
|
1351 else: |
|
1352 res = img.save(fileName) |
1307 |
1353 |
1308 if not res: |
1354 if not res: |
1309 EricMessageBox.warning( |
1355 EricMessageBox.warning( |
1310 self, |
1356 self, |
1311 self.tr("eric Icon Editor"), |
1357 self.tr("eric Icon Editor"), |
1312 self.tr("Cannot write file '{0}'.").format(fileName), |
1358 self.tr("Cannot write file '{0}'.").format(fileName), |
1313 ) |
1359 ) |
1314 |
|
1315 self.__checkActions() |
1360 self.__checkActions() |
1316 |
|
1317 return False |
1361 return False |
1318 |
1362 |
1319 self.__editor.setDirty(False, setCleanState=True) |
1363 self.__editor.setDirty(False, setCleanState=True) |
1320 |
1364 |
1321 self.__setCurrentFile(fileName) |
1365 self.__setCurrentFile(fileName) |