1# -*- coding: utf-8 -*- 2 3# Copyright (c) 2007 - 2021 Detlev Offenbach <detlev@die-offenbachs.de> 4# 5 6""" 7Module implementing the About plugin. 8""" 9 10from PyQt5.QtCore import QObject 11from PyQt5.QtWidgets import QAction 12 13import UI.Info 14import UI.PixmapCache 15 16from E5Gui.E5Action import E5Action 17from E5Gui import E5MessageBox 18 19# Start-Of-Header 20name = "About Plugin" 21author = "Detlev Offenbach <detlev@die-offenbachs.de>" 22autoactivate = True 23deactivateable = True 24version = UI.Info.VersionOnly 25className = "AboutPlugin" 26packageName = "__core__" 27shortDescription = "Show the About dialogs." 28longDescription = """This plugin shows the About dialogs.""" 29pyqtApi = 2 30# End-Of-Header 31 32error = "" 33 34 35class AboutPlugin(QObject): 36 """ 37 Class implementing the About plugin. 38 """ 39 def __init__(self, ui): 40 """ 41 Constructor 42 43 @param ui reference to the user interface object (UI.UserInterface) 44 """ 45 super().__init__(ui) 46 self.__ui = ui 47 48 self.__aboutDialog = None 49 50 def activate(self): 51 """ 52 Public method to activate this plugin. 53 54 @return tuple of None and activation status (boolean) 55 """ 56 self.__initActions() 57 self.__initMenu() 58 59 return None, True 60 61 def deactivate(self): 62 """ 63 Public method to deactivate this plugin. 64 """ 65 menu = self.__ui.getMenu("help") 66 if menu: 67 menu.removeAction(self.aboutAct) 68 menu.removeAction(self.aboutQtAct) 69 acts = [self.aboutAct, self.aboutQtAct] 70 self.__ui.removeE5Actions(acts, 'ui') 71 72 def __initActions(self): 73 """ 74 Private method to initialize the actions. 75 """ 76 acts = [] 77 78 self.aboutAct = E5Action( 79 self.tr('About {0}').format(UI.Info.Program), 80 UI.PixmapCache.getIcon("helpAbout"), 81 self.tr('&About {0}').format(UI.Info.Program), 82 0, 0, self, 'about_eric') 83 self.aboutAct.setStatusTip(self.tr( 84 'Display information about this software')) 85 self.aboutAct.setWhatsThis(self.tr( 86 """<b>About {0}</b>""" 87 """<p>Display some information about this software.</p>""" 88 ).format(UI.Info.Program)) 89 self.aboutAct.triggered.connect(self.__about) 90 self.aboutAct.setMenuRole(QAction.MenuRole.AboutRole) 91 acts.append(self.aboutAct) 92 93 self.aboutQtAct = E5Action( 94 self.tr('About Qt'), 95 UI.PixmapCache.getIcon("helpAboutQt"), 96 self.tr('About &Qt'), 0, 0, self, 'about_qt') 97 self.aboutQtAct.setStatusTip( 98 self.tr('Display information about the Qt toolkit')) 99 self.aboutQtAct.setWhatsThis(self.tr( 100 """<b>About Qt</b>""" 101 """<p>Display some information about the Qt toolkit.</p>""" 102 )) 103 self.aboutQtAct.triggered.connect(self.__aboutQt) 104 self.aboutQtAct.setMenuRole(QAction.MenuRole.AboutQtRole) 105 acts.append(self.aboutQtAct) 106 107 self.__ui.addE5Actions(acts, 'ui') 108 109 def __initMenu(self): 110 """ 111 Private method to add the actions to the right menu. 112 """ 113 menu = self.__ui.getMenu("help") 114 if menu: 115 act = self.__ui.getMenuAction("help", "show_versions") 116 if act: 117 menu.insertAction(act, self.aboutAct) 118 menu.insertAction(act, self.aboutQtAct) 119 else: 120 menu.addAction(self.aboutAct) 121 menu.addAction(self.aboutQtAct) 122 123 def __about(self): 124 """ 125 Private slot to handle the About dialog. 126 """ 127 from AboutPlugin.AboutDialog import AboutDialog 128 if self.__aboutDialog is None: 129 self.__aboutDialog = AboutDialog(self.__ui) 130 self.__aboutDialog.show() 131 132 def __aboutQt(self): 133 """ 134 Private slot to handle the About Qt dialog. 135 """ 136 E5MessageBox.aboutQt(self.__ui, UI.Info.Program) 137