eric6/UI/InstallInfoDialog.py

changeset 7809
f5a61d073100
parent 7808
da107cd00f63
child 7810
f8afd2238723
equal deleted inserted replaced
7808:da107cd00f63 7809:f5a61d073100
1 # -*- coding: utf-8 -*- 1 # -*- coding: utf-8 -*-
2
3 # Copyright (c) 2020 Detlev Offenbach <detlev@die-offenbachs.de>
4 #
2 5
3 """ 6 """
4 Module implementing a dialog to show information about the installation. 7 Module implementing a dialog to show information about the installation.
5 """ 8 """
6 9
15 18
16 import Globals 19 import Globals
17 import UI.PixmapCache 20 import UI.PixmapCache
18 21
19 22
23 # TODO: add button to delete the info file
20 class InstallInfoDialog(QDialog, Ui_InstallInfoDialog): 24 class InstallInfoDialog(QDialog, Ui_InstallInfoDialog):
21 """ 25 """
22 Class documentation goes here. 26 Class implementing a dialog to show information about the installation.
23 """ 27 """
24 def __init__(self, parent=None): 28 def __init__(self, parent=None):
25 """ 29 """
26 Constructor 30 Constructor
27 31
47 else: 51 else:
48 self.sudoLabel1.setText(self.tr("Installed with sudo:")) 52 self.sudoLabel1.setText(self.tr("Installed with sudo:"))
49 self.sudoLabel2.setText( 53 self.sudoLabel2.setText(
50 self.tr("Yes") if self.__info["sudo"] else self.tr("No")) 54 self.tr("Yes") if self.__info["sudo"] else self.tr("No"))
51 self.userLabel.setText(self.__info["user"]) 55 self.userLabel.setText(self.__info["user"])
56 self.installedFromEdit.setText(self.__info["install_cwd"])
52 self.interpreteEdit.setText(self.__info["exe"]) 57 self.interpreteEdit.setText(self.__info["exe"])
53 self.commandEdit.setText(self.__info["argv"]) 58 self.commandEdit.setText(self.__info["argv"])
54 self.installPathEdit.setText(self.__info["eric"]) 59 self.installPathEdit.setText(self.__info["eric"])
55 self.virtenvLabel.setText( 60 self.virtenvLabel.setText(
56 self.tr("Yes") if self.__info["virtualenv"] else self.tr("No")) 61 self.tr("Yes") if self.__info["virtualenv"] else self.tr("No"))
62 self.remarksEdit.setPlainText(self.__info["remarks"])
57 if self.__info["pip"]: 63 if self.__info["pip"]:
58 self.pipLabel.setText(self.tr( 64 self.pipLabel.setText(self.tr(
59 "'eric-ide' was installed from PyPI using the pip" 65 "'eric-ide' was installed from PyPI using the pip"
60 " command.")) 66 " command."))
61 else: 67 else:
64 self.guessLabel.setText(self.tr( 70 self.guessLabel.setText(self.tr(
65 "The information shown in this dialog was guessed at" 71 "The information shown in this dialog was guessed at"
66 " the first start of eric.")) 72 " the first start of eric."))
67 else: 73 else:
68 self.guessLabel.hide() 74 self.guessLabel.hide()
69 self.remarksEdit.setPlainText(self.__info["remarks"]) 75 if self.__info["edited"]:
70 if "installed_on" in self.__info: 76 self.userProvidedLabel.setText(self.tr(
71 self.installDateTimeLabel.setText(self.__info["installed_on"]) 77 "The installation information was provided by the user."
78 ))
72 else: 79 else:
73 self.installDateTimeLabel.setText(self.tr("unknown")) 80 self.userProvidedLabel.hide()
81 if self.__info["installed_on"]:
82 self.installDateTimeLabel.setText(
83 self.__info["installed_on"] if self.__info["installed_on"]
84 else self.tr("unknown"))
74 except EnvironmentError as err: 85 except EnvironmentError as err:
75 E5MessageBox.critical( 86 E5MessageBox.critical(
76 self, 87 self,
77 self.tr("Load Install Information"), 88 self.tr("Load Install Information"),
78 self.tr("<p>The file containing the install information could" 89 self.tr("<p>The file containing the install information could"
97 Private slot to switch the dialog into edit mode. 108 Private slot to switch the dialog into edit mode.
98 109
99 @param checked flag giving the button check state 110 @param checked flag giving the button check state
100 @type bool 111 @type bool
101 """ 112 """
113 self.installedFromEdit.setReadOnly(not checked)
102 self.interpreteEdit.setReadOnly(not checked) 114 self.interpreteEdit.setReadOnly(not checked)
103 self.commandEdit.setReadOnly(not checked) 115 self.commandEdit.setReadOnly(not checked)
104 self.installPathEdit.setReadOnly(not checked) 116 self.installPathEdit.setReadOnly(not checked)
105 self.remarksEdit.setReadOnly(not checked) 117 self.remarksEdit.setReadOnly(not checked)
106 118
116 self.__saveData() 128 self.__saveData()
117 129
118 @pyqtSlot() 130 @pyqtSlot()
119 def reject(self): 131 def reject(self):
120 """ 132 """
121 Private slot handling the closing of the dialog. 133 Public slot handling the closing of the dialog.
122 """ 134 """
123 if self.__edited: 135 if self.__edited:
124 yes = E5MessageBox.yesNo( 136 yes = E5MessageBox.yesNo(
125 self, 137 self,
126 self.tr("Install Information"), 138 self.tr("Install Information"),
134 146
135 def __saveData(self): 147 def __saveData(self):
136 """ 148 """
137 Private method to save the data. 149 Private method to save the data.
138 """ 150 """
139 self.__info["exe"] = self.interpreteEdit.text() 151 if self.installedFromEdit.text() != self.__info["install_cwd"]:
140 self.__info["argv"] = self.commandEdit.text() 152 self.__info["install_cwd"] = self.installedFromEdit.text()
141 self.__info["eric"] = self.installPathEdit.text() 153 self.__info["install_cwd_edited"] = True
154 if self.interpreteEdit.text() != self.__info["exe"]:
155 self.__info["exe"] = self.interpreteEdit.text()
156 self.__info["exe_edited"] = True
157 if self.commandEdit.text() != self.__info["argv"]:
158 self.__info["argv"] = self.commandEdit.text()
159 self.__info["argv_edited"] = True
160 if self.installPathEdit.text() != self.__info["eric"]:
161 self.__info["eric"] = self.installPathEdit.text()
162 self.__info["eric_edited"] = True
142 self.__info["remarks"] = self.remarksEdit.toPlainText() 163 self.__info["remarks"] = self.remarksEdit.toPlainText()
143 self.__info["edited"] = True 164 self.__info["edited"] = True
144 165
145 infoFileName = Globals.getInstallInfoFilePath() 166 infoFileName = Globals.getInstallInfoFilePath()
146 try: 167 try:
147 with open(infoFileName, "w") as infoFile: 168 with open(infoFileName, "w") as infoFile:
148 json.dump(self.__info, infoFile, indent=2) 169 json.dump(self.__info, infoFile, indent=2)
149 self.__edited = False 170 self.__edited = False
150 self.editButton.setChecked(False) 171 self.editButton.setChecked(False)
151 except EnvironmentError as err: 172 except EnvironmentError as err:
152 E5MessageBox.critical( 173 E5MessageBox.critical(
153 self, 174 self,

eric ide

mercurial