Project/ProjectOthersBrowser.py

changeset 4101
68c26f72c0d1
parent 4021
195a471c327b
child 4563
881340f4bd0c
child 4632
ca310db386ed
equal deleted inserted replaced
4098:59a1b3356009 4101:68c26f72c0d1
12 12
13 from PyQt5.QtCore import QModelIndex, pyqtSignal, QUrl 13 from PyQt5.QtCore import QModelIndex, pyqtSignal, QUrl
14 from PyQt5.QtGui import QDesktopServices 14 from PyQt5.QtGui import QDesktopServices
15 from PyQt5.QtWidgets import QDialog, QMenu 15 from PyQt5.QtWidgets import QDialog, QMenu
16 16
17 from E5Gui import E5MessageBox
18
17 from .ProjectBrowserModel import ProjectBrowserFileItem, \ 19 from .ProjectBrowserModel import ProjectBrowserFileItem, \
18 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \ 20 ProjectBrowserSimpleDirectoryItem, ProjectBrowserDirectoryItem, \
19 ProjectBrowserOthersType 21 ProjectBrowserOthersType
20 from .ProjectBaseBrowser import ProjectBaseBrowser 22 from .ProjectBaseBrowser import ProjectBaseBrowser
21 23
22 import Utilities.MimeTypes 24 import Utilities.MimeTypes
25 import Preferences
23 26
24 27
25 class ProjectOthersBrowser(ProjectBaseBrowser): 28 class ProjectOthersBrowser(ProjectBaseBrowser):
26 """ 29 """
27 A class used to display the parts of the project, that don't fit the 30 A class used to display the parts of the project, that don't fit the
72 ProjectBaseBrowser._createPopupMenus(self) 75 ProjectBaseBrowser._createPopupMenus(self)
73 76
74 self.editPixmapAct = self.menu.addAction( 77 self.editPixmapAct = self.menu.addAction(
75 self.tr('Open in Icon Editor'), self._editPixmap) 78 self.tr('Open in Icon Editor'), self._editPixmap)
76 self.menu.addSeparator() 79 self.menu.addSeparator()
80 self.mimeTypeAct = self.menu.addAction(
81 self.tr('Show Mime-Type'), self.__showMimeType)
82 self.menu.addSeparator()
77 self.renameFileAct = self.menu.addAction( 83 self.renameFileAct = self.menu.addAction(
78 self.tr('Rename file'), self._renameFile) 84 self.tr('Rename file'), self._renameFile)
79 self.menuActions.append(self.renameFileAct) 85 self.menuActions.append(self.renameFileAct)
80 act = self.menu.addAction( 86 act = self.menu.addAction(
81 self.tr('Remove from project'), self.__removeItem) 87 self.tr('Remove from project'), self.__removeItem)
157 index = self.indexAt(coord) 163 index = self.indexAt(coord)
158 if cnt == 1 and index.isValid(): 164 if cnt == 1 and index.isValid():
159 itm = self.model().item(index) 165 itm = self.model().item(index)
160 if isinstance(itm, ProjectBrowserFileItem): 166 if isinstance(itm, ProjectBrowserFileItem):
161 self.editPixmapAct.setVisible(itm.isPixmapFile()) 167 self.editPixmapAct.setVisible(itm.isPixmapFile())
168 self.mimeTypeAct.setVisible(True)
162 self.menu.popup(self.mapToGlobal(coord)) 169 self.menu.popup(self.mapToGlobal(coord))
163 elif isinstance(itm, ProjectBrowserDirectoryItem): 170 elif isinstance(itm, ProjectBrowserDirectoryItem):
164 self.editPixmapAct.setVisible(False) 171 self.editPixmapAct.setVisible(False)
172 self.mimeTypeAct.setVisible(False)
165 self.menu.popup(self.mapToGlobal(coord)) 173 self.menu.popup(self.mapToGlobal(coord))
166 else: 174 else:
167 self.backMenu.popup(self.mapToGlobal(coord)) 175 self.backMenu.popup(self.mapToGlobal(coord))
168 else: 176 else:
169 self.backMenu.popup(self.mapToGlobal(coord)) 177 self.backMenu.popup(self.mapToGlobal(coord))
239 else: 247 else:
240 if Utilities.MimeTypes.isTextFile(itm.fileName()): 248 if Utilities.MimeTypes.isTextFile(itm.fileName()):
241 self.sourceFile.emit(itm.fileName()) 249 self.sourceFile.emit(itm.fileName())
242 else: 250 else:
243 QDesktopServices.openUrl(QUrl(itm.fileName())) 251 QDesktopServices.openUrl(QUrl(itm.fileName()))
252
253 def __showMimeType(self):
254 """
255 Private slot to show the mime type of the selected entry.
256 """
257 itmList = self.getSelectedItems()
258 if itmList:
259 mimetype = Utilities.MimeTypes.mimeType(itmList[0].fileName())
260 if mimetype is None:
261 E5MessageBox.warning(
262 self,
263 self.tr("Show Mime-Type"),
264 self.tr("""The mime type of the file could not be"""
265 """ determined."""))
266 elif mimetype.split("/")[0] == "text":
267 E5MessageBox.information(
268 self,
269 self.tr("Show Mime-Type"),
270 self.tr("""The file has the mime type <b>{0}</b>.""")
271 .format(mimetype))
272 else:
273 textMimeTypesList = Preferences.getUI("TextMimeTypes")
274 if mimetype in textMimeTypesList:
275 E5MessageBox.information(
276 self,
277 self.tr("Show Mime-Type"),
278 self.tr("""The file has the mime type <b>{0}</b>.""")
279 .format(mimetype))
280 else:
281 ok = E5MessageBox.yesNo(
282 self,
283 self.tr("Show Mime-Type"),
284 self.tr("""The file has the mime type <b>{0}</b>."""
285 """<br/> Shall it be added to the list of"""
286 """ text mime types?""").format(mimetype))
287 if ok:
288 textMimeTypesList.append(mimetype)
289 Preferences.setUI("TextMimeTypes", textMimeTypesList)
244 290
245 def __removeItem(self): 291 def __removeItem(self):
246 """ 292 """
247 Private slot to remove the selected entry from the OTHERS project 293 Private slot to remove the selected entry from the OTHERS project
248 data area. 294 data area.

eric ide

mercurial