10 import os |
10 import os |
11 import shutil |
11 import shutil |
12 import sys |
12 import sys |
13 |
13 |
14 from PyQt5.QtCore import ( |
14 from PyQt5.QtCore import ( |
15 pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QTextCodec, |
15 pyqtSlot, pyqtSignal, Qt, QByteArray, QSize, QTimer, QUrl, QProcess, |
16 QProcess, QEvent, QFileInfo |
16 QEvent, QFileInfo |
17 ) |
17 ) |
18 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics |
18 from PyQt5.QtGui import QDesktopServices, QKeySequence, QFont, QFontMetrics |
19 from PyQt5.QtWidgets import ( |
19 from PyQt5.QtWidgets import ( |
20 QWidget, QVBoxLayout, QSizePolicy, QDockWidget, QComboBox, QLabel, QMenu, |
20 QWidget, QVBoxLayout, QSizePolicy, QDockWidget, QComboBox, QLabel, QMenu, |
21 QLineEdit, QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, |
21 QLineEdit, QApplication, QWhatsThis, QDialog, QHBoxLayout, QProgressBar, |
4145 |
4145 |
4146 @return reference to the opensearch manager object (OpenSearchManager) |
4146 @return reference to the opensearch manager object (OpenSearchManager) |
4147 """ |
4147 """ |
4148 return self.__navigationBar.searchEdit().openSearchManager() |
4148 return self.__navigationBar.searchEdit().openSearchManager() |
4149 |
4149 |
4150 def __createTextEncodingAction(self, codec, defaultCodec, parentMenu): |
4150 def __createTextEncodingAction(self, codec, defaultCodec, parentMenu, |
|
4151 name=None): |
4151 """ |
4152 """ |
4152 Private method to create an action for the text encoding menu. |
4153 Private method to create an action for the text encoding menu. |
4153 |
4154 |
4154 @param codec name of the codec to create an action for |
4155 @param codec name of the codec to create an action for |
4155 @type str |
4156 @type str |
4156 @param defaultCodec name of the default codec |
4157 @param defaultCodec name of the default codec |
4157 @type str |
4158 @type str |
4158 @param parentMenu reference to the parent menu |
4159 @param parentMenu reference to the parent menu |
4159 @type QMenu |
4160 @type QMenu |
4160 """ |
4161 @param name name for the action |
4161 act = QAction(codec, parentMenu) |
4162 @type str |
|
4163 """ |
|
4164 if name: |
|
4165 act = QAction(name, parentMenu) |
|
4166 else: |
|
4167 act = QAction(codec, parentMenu) |
4162 act.setData(codec) |
4168 act.setData(codec) |
4163 act.setCheckable(True) |
4169 act.setCheckable(True) |
4164 if defaultCodec == codec: |
4170 if defaultCodec == codec: |
4165 act.setChecked(True) |
4171 act.setChecked(True) |
4166 |
4172 |
4190 """ |
4196 """ |
4191 Private slot to populate the text encoding menu. |
4197 Private slot to populate the text encoding menu. |
4192 """ |
4198 """ |
4193 self.__textEncodingMenu.clear() |
4199 self.__textEncodingMenu.clear() |
4194 |
4200 |
4195 codecs = [] |
|
4196 for mib in QTextCodec.availableMibs(): |
|
4197 codec = str(QTextCodec.codecForMib(mib).name(), |
|
4198 encoding="utf-8").lower() |
|
4199 if codec not in codecs: |
|
4200 codecs.append(codec) |
|
4201 codecs.sort() |
|
4202 |
|
4203 defaultTextEncoding = self.webSettings().defaultTextEncoding().lower() |
4201 defaultTextEncoding = self.webSettings().defaultTextEncoding().lower() |
4204 if defaultTextEncoding in codecs: |
4202 if defaultTextEncoding in Utilities.supportedCodecs: |
4205 currentCodec = defaultTextEncoding |
4203 currentCodec = defaultTextEncoding |
4206 else: |
4204 else: |
4207 currentCodec = "system" |
4205 currentCodec = "" |
4208 |
4206 |
4209 isoCodecs = [] |
4207 isoCodecs = [] |
4210 winCodecs = [] |
4208 winCodecs = [] |
4211 isciiCodecs = [] |
|
4212 uniCodecs = [] |
4209 uniCodecs = [] |
4213 ibmCodecs = [] |
4210 cpCodecs = [] |
|
4211 macCodecs = [] |
4214 otherCodecs = [] |
4212 otherCodecs = [] |
4215 |
4213 |
4216 for codec in codecs: |
4214 for codec in sorted(Utilities.supportedCodecs): |
4217 if codec.startswith(("iso", "latin")): |
4215 if codec.startswith(("iso-", "latin")): |
4218 isoCodecs.append(codec) |
4216 isoCodecs.append(codec) |
4219 elif codec.startswith(("windows")): |
4217 elif codec.startswith(("windows-")): |
4220 winCodecs.append(codec) |
4218 winCodecs.append(codec) |
4221 elif codec.startswith("iscii"): |
4219 elif codec.startswith("utf-"): |
4222 isciiCodecs.append(codec) |
|
4223 elif codec.startswith("utf"): |
|
4224 uniCodecs.append(codec) |
4220 uniCodecs.append(codec) |
4225 elif codec.startswith(("ibm")): |
4221 elif codec.startswith("cp"): |
4226 ibmCodecs.append(codec) |
4222 cpCodecs.append(codec) |
4227 elif codec == "system": |
4223 elif codec.startswith("mac-"): |
4228 self.__createTextEncodingAction(codec, currentCodec, |
4224 macCodecs.append(codec) |
4229 self.__textEncodingMenu) |
|
4230 else: |
4225 else: |
4231 otherCodecs.append(codec) |
4226 otherCodecs.append(codec) |
4232 |
4227 |
4233 if not self.__textEncodingMenu.isEmpty(): |
4228 self.__createTextEncodingAction( |
4234 self.__textEncodingMenu.addSeparator() |
4229 "", currentCodec, self.__textEncodingMenu, name=self.tr("System")) |
|
4230 self.__textEncodingMenu.addSeparator() |
4235 self.__createTextEncodingSubmenu(self.tr("ISO"), isoCodecs, |
4231 self.__createTextEncodingSubmenu(self.tr("ISO"), isoCodecs, |
4236 self.__textEncodingMenu) |
4232 self.__textEncodingMenu) |
4237 self.__createTextEncodingSubmenu(self.tr("Unicode"), uniCodecs, |
4233 self.__createTextEncodingSubmenu(self.tr("Unicode"), uniCodecs, |
4238 self.__textEncodingMenu) |
4234 self.__textEncodingMenu) |
4239 self.__createTextEncodingSubmenu(self.tr("Windows"), winCodecs, |
4235 self.__createTextEncodingSubmenu(self.tr("Windows"), winCodecs, |
4240 self.__textEncodingMenu) |
4236 self.__textEncodingMenu) |
4241 self.__createTextEncodingSubmenu(self.tr("ISCII"), isciiCodecs, |
4237 self.__createTextEncodingSubmenu(self.tr("IBM"), cpCodecs, |
4242 self.__textEncodingMenu) |
4238 self.__textEncodingMenu) |
4243 self.__createTextEncodingSubmenu(self.tr("IBM"), ibmCodecs, |
4239 self.__createTextEncodingSubmenu(self.tr("Apple"), macCodecs, |
4244 self.__textEncodingMenu) |
4240 self.__textEncodingMenu) |
4245 self.__createTextEncodingSubmenu(self.tr("Other"), otherCodecs, |
4241 self.__createTextEncodingSubmenu(self.tr("Other"), otherCodecs, |
4246 self.__textEncodingMenu) |
4242 self.__textEncodingMenu) |
4247 |
4243 |
4248 def __setTextEncoding(self, act): |
4244 def __setTextEncoding(self, act): |