Helpviewer/HelpWindow.py

changeset 5744
d53474dcb9e6
parent 5726
e1dbd217214a
child 6048
82ad8ec9548c
equal deleted inserted replaced
5743:630a68372016 5744:d53474dcb9e6
3443 3443
3444 @return reference to the opensearch manager object (OpenSearchManager) 3444 @return reference to the opensearch manager object (OpenSearchManager)
3445 """ 3445 """
3446 return self.searchEdit.openSearchManager() 3446 return self.searchEdit.openSearchManager()
3447 3447
3448 def __createTextEncodingAction(self, codec, defaultCodec, parentMenu):
3449 """
3450 Private method to create an action for the text encoding menu.
3451
3452 @param codec name of the codec to create an action for
3453 @type str
3454 @param defaultCodec name of the default codec
3455 @type str
3456 @param parentMenu reference to the parent menu
3457 @type QMenu
3458 """
3459 act = QAction(codec, parentMenu)
3460 act.setData(codec)
3461 act.setCheckable(True)
3462 if defaultCodec == codec:
3463 act.setChecked(True)
3464
3465 parentMenu.addAction(act)
3466
3467 def __createTextEncodingSubmenu(self, title, codecNames, parentMenu):
3468 """
3469 Private method to create a text encoding sub menu.
3470
3471 @param title title of the menu
3472 @type str
3473 @param codecNames list of codec names for the menu
3474 @type list of str
3475 @param parentMenu reference to the parent menu
3476 @type QMenu
3477 """
3478 if codecNames:
3479 defaultCodec = \
3480 QWebSettings.globalSettings().defaultTextEncoding().lower()
3481
3482 menu = QMenu(title, parentMenu)
3483 for codec in codecNames:
3484 self.__createTextEncodingAction(codec, defaultCodec, menu)
3485
3486 parentMenu.addMenu(menu)
3487
3448 def __aboutToShowTextEncodingMenu(self): 3488 def __aboutToShowTextEncodingMenu(self):
3449 """ 3489 """
3450 Private slot to populate the text encoding menu. 3490 Private slot to populate the text encoding menu.
3451 """ 3491 """
3452 self.__textEncodingMenu.clear() 3492 self.__textEncodingMenu.clear()
3453 3493
3454 codecs = [] 3494 codecs = []
3455 for codec in QTextCodec.availableCodecs(): 3495 for mib in QTextCodec.availableMibs():
3456 codecs.append(str(codec, encoding="utf-8").lower()) 3496 codec = str(QTextCodec.codecForMib(mib).name(),
3497 encoding="utf-8").lower()
3498 if codec not in codecs:
3499 codecs.append(codec)
3457 codecs.sort() 3500 codecs.sort()
3458 3501
3459 defaultTextEncoding = \ 3502 defaultTextEncoding = \
3460 QWebSettings.globalSettings().defaultTextEncoding().lower() 3503 QWebSettings.globalSettings().defaultTextEncoding().lower()
3461 if defaultTextEncoding in codecs: 3504 if defaultTextEncoding in codecs:
3462 currentCodec = defaultTextEncoding 3505 currentCodec = defaultTextEncoding
3463 else: 3506 else:
3464 currentCodec = "" 3507 currentCodec = "system"
3465 3508
3466 isDefaultEncodingUsed = True 3509 isoCodecs = []
3467 isoMenu = QMenu(self.tr("ISO"), self.__textEncodingMenu) 3510 winCodecs = []
3468 winMenu = QMenu(self.tr("Windows"), self.__textEncodingMenu) 3511 isciiCodecs = []
3469 isciiMenu = QMenu(self.tr("ISCII"), self.__textEncodingMenu) 3512 uniCodecs = []
3470 uniMenu = QMenu(self.tr("Unicode"), self.__textEncodingMenu) 3513 ibmCodecs = []
3471 otherMenu = QMenu(self.tr("Other"), self.__textEncodingMenu) 3514 otherCodecs = []
3472 ibmMenu = QMenu(self.tr("IBM"), self.__textEncodingMenu)
3473 3515
3474 for codec in codecs: 3516 for codec in codecs:
3475 if codec.startswith(("iso", "latin", "csisolatin")): 3517 if codec.startswith(("iso", "latin")):
3476 act = isoMenu.addAction(codec) 3518 isoCodecs.append(codec)
3477 elif codec.startswith(("windows", "cp1")): 3519 elif codec.startswith(("windows")):
3478 act = winMenu.addAction(codec) 3520 winCodecs.append(codec)
3479 elif codec.startswith("iscii"): 3521 elif codec.startswith("iscii"):
3480 act = isciiMenu.addAction(codec) 3522 isciiCodecs.append(codec)
3481 elif codec.startswith("utf"): 3523 elif codec.startswith("utf"):
3482 act = uniMenu.addAction(codec) 3524 uniCodecs.append(codec)
3483 elif codec.startswith(("ibm", "csibm", "cp")): 3525 elif codec.startswith(("ibm")):
3484 act = ibmMenu.addAction(codec) 3526 ibmCodecs.append(codec)
3527 elif codec == "system":
3528 self.__createTextEncodingAction(codec, currentCodec,
3529 self.__textEncodingMenu)
3485 else: 3530 else:
3486 act = otherMenu.addAction(codec) 3531 otherCodecs.append(codec)
3487 3532
3488 act.setData(codec) 3533 self.__createTextEncodingSubmenu(self.tr("ISO"), isoCodecs,
3489 act.setCheckable(True) 3534 self.__textEncodingMenu)
3490 if currentCodec == codec: 3535 self.__createTextEncodingSubmenu(self.tr("Unicode"), uniCodecs,
3491 act.setChecked(True) 3536 self.__textEncodingMenu)
3492 isDefaultEncodingUsed = False 3537 self.__createTextEncodingSubmenu(self.tr("Windows"), winCodecs,
3493 3538 self.__textEncodingMenu)
3494 act = self.__textEncodingMenu.addAction( 3539 self.__createTextEncodingSubmenu(self.tr("ISCII"), isciiCodecs,
3495 self.tr("Default Encoding")) 3540 self.__textEncodingMenu)
3496 act.setData("") 3541 self.__createTextEncodingSubmenu(self.tr("IBM"), ibmCodecs,
3497 act.setCheckable(True) 3542 self.__textEncodingMenu)
3498 act.setChecked(isDefaultEncodingUsed) 3543 self.__createTextEncodingSubmenu(self.tr("Other"), otherCodecs,
3499 self.__textEncodingMenu.addMenu(uniMenu) 3544 self.__textEncodingMenu)
3500 self.__textEncodingMenu.addMenu(isoMenu)
3501 self.__textEncodingMenu.addMenu(winMenu)
3502 self.__textEncodingMenu.addMenu(ibmMenu)
3503 self.__textEncodingMenu.addMenu(isciiMenu)
3504 self.__textEncodingMenu.addMenu(otherMenu)
3505 3545
3506 def __setTextEncoding(self, act): 3546 def __setTextEncoding(self, act):
3507 """ 3547 """
3508 Private slot to set the selected text encoding as the default for 3548 Private slot to set the selected text encoding as the default for
3509 this session. 3549 this session.

eric ide

mercurial