Thu, 01 Nov 2018 11:47:39 +0100
Merged with default branch to prepare the 18.11 release.
--- a/APIs/Python3/eric6.api Sat Oct 06 14:48:45 2018 +0200 +++ b/APIs/Python3/eric6.api Thu Nov 01 11:47:39 2018 +0100 @@ -206,7 +206,6 @@ eric6.DebugClients.Python.DebugBase.gRecursionLimit?7 eric6.DebugClients.Python.DebugBase.printerr?4(s) eric6.DebugClients.Python.DebugBase.setRecursionLimit?4(limit) -eric6.DebugClients.Python.DebugClient.DebugClient.debugClient?7 eric6.DebugClients.Python.DebugClient.DebugClient?1() eric6.DebugClients.Python.DebugClientBase.DebugClientBase.Indicators?7 eric6.DebugClients.Python.DebugClientBase.DebugClientBase.absPath?4(fn) @@ -1107,9 +1106,7 @@ eric6.E5Gui.E5PassivePopup.E5PassivePopup.view?4() eric6.E5Gui.E5PassivePopup.E5PassivePopup?1(parent=None) eric6.E5Gui.E5PassivePopup.POPUP_FLAGS?7 -eric6.E5Gui.E5PasswordMeter.E5PasswordMeter.app?7 eric6.E5Gui.E5PasswordMeter.E5PasswordMeter.checkPasswordStrength?4(password) -eric6.E5Gui.E5PasswordMeter.E5PasswordMeter.meter?7 eric6.E5Gui.E5PasswordMeter.E5PasswordMeter.setMaximum?4(value) eric6.E5Gui.E5PasswordMeter.E5PasswordMeter.setMinimum?4(value) eric6.E5Gui.E5PasswordMeter.E5PasswordMeter.setValue?4(value) @@ -1282,6 +1279,14 @@ eric6.E5Gui.E5TextEditSearchWidget.E5TextEditSearchWidget.on_findtextCombo_editTextChanged?4(txt) eric6.E5Gui.E5TextEditSearchWidget.E5TextEditSearchWidget.setWidthForHeight?4(widthForHeight) eric6.E5Gui.E5TextEditSearchWidget.E5TextEditSearchWidget?1(parent=None, widthForHeight=True) +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog.labelText?4() +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog.setLabelText?4(text) +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog.setTextEchoMode?4(echoMode) +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog.setTextValue?4(text) +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog.textEchoMode?4() +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog.textValue?4() +eric6.E5Gui.E5TextInputDialog.E5TextInputDialog?1(parent=None) +eric6.E5Gui.E5TextInputDialog.getText?4(parent, title, label, mode=QLineEdit.Normal, text="", minimumWidth=300) eric6.E5Gui.E5TextSpinBox.E5TextSpinBox.addItem?4(txt, data=None) eric6.E5Gui.E5TextSpinBox.E5TextSpinBox.currentIndex?4() eric6.E5Gui.E5TextSpinBox.E5TextSpinBox.itemData?4(index) @@ -1431,6 +1436,7 @@ eric6.E5Network.E5GoogleMail._prepareMessage_v2?5(message) eric6.E5Network.E5GoogleMail._prepareMessage_v3?5(message) eric6.E5Network.E5GoogleMail.getCredentials?4() +eric6.E5Network.E5GoogleMail.isCredentialsFileAvailable?4() eric6.E5Network.E5NetworkHeaderDetailsDialog.E5NetworkHeaderDetailsDialog.setData?4(name, value) eric6.E5Network.E5NetworkHeaderDetailsDialog.E5NetworkHeaderDetailsDialog?1(parent=None) eric6.E5Network.E5NetworkIcon.E5NetworkIcon.isOnline?4() @@ -5380,6 +5386,7 @@ eric6.Plugins.VcsPlugins.vcsGit.GitStatusDialog.GitStatusDialog.start?4(fn) eric6.Plugins.VcsPlugins.vcsGit.GitStatusDialog.GitStatusDialog?1(vcs, parent=None) eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.GitStatusMonitorThread.ConflictStates?7 +eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.GitStatusMonitorThread._getInfo?5() eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.GitStatusMonitorThread._performMonitor?5() eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.GitStatusMonitorThread._shutdown?5() eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.GitStatusMonitorThread?1(interval, project, vcs, parent=None) @@ -5909,6 +5916,7 @@ eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.show?4() eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.start?4(fn) eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog?1(vcs, mq=False, parent=None) +eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread._getInfo?5() eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread._performMonitor?5() eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread._shutdown?5() eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread?1(interval, project, vcs, parent=None) @@ -7352,6 +7360,7 @@ eric6.Preferences.ConfigurationPages.EditorTypingPage.EditorTypingPage.save?4() eric6.Preferences.ConfigurationPages.EditorTypingPage.EditorTypingPage?1() eric6.Preferences.ConfigurationPages.EditorTypingPage.create?4(dlg) +eric6.Preferences.ConfigurationPages.EmailPage.EmailPage.on_googleHelpButton_clicked?4() eric6.Preferences.ConfigurationPages.EmailPage.EmailPage.on_mailAuthenticationGroup_toggled?4(checked) eric6.Preferences.ConfigurationPages.EmailPage.EmailPage.on_mailPasswordEdit_textChanged?4(txt) eric6.Preferences.ConfigurationPages.EmailPage.EmailPage.on_mailServerEdit_textChanged?4(txt) @@ -7977,6 +7986,7 @@ eric6.Project.Project.Project.renameMainScript?4(oldfn, newfn) eric6.Project.Project.Project.reopenProject?4() eric6.Project.Project.Project.repopulateItem?4(fullname) +eric6.Project.Project.Project.resetVCS?4() eric6.Project.Project.Project.saveAllScripts?4(reportSyntaxErrors=False) eric6.Project.Project.Project.saveProject?4() eric6.Project.Project.Project.saveProjectAs?4() @@ -7995,6 +8005,7 @@ eric6.Project.Project.Project.updateFileTypes?4() eric6.Project.Project.Project.useSystemEol?4() eric6.Project.Project.Project.vcsSoftwareAvailable?4() +eric6.Project.Project.Project.vcsStatusMonitorInfo?7 eric6.Project.Project.Project.vcsStatusMonitorStatus?7 eric6.Project.Project.Project.writeTasks?4() eric6.Project.Project.Project?1(parent=None, filename=None) @@ -8203,6 +8214,9 @@ eric6.Project.TranslationPropertiesDialog.TranslationPropertiesDialog.on_transPatternPicker_textChanged?4(txt) eric6.Project.TranslationPropertiesDialog.TranslationPropertiesDialog.storeData?4() eric6.Project.TranslationPropertiesDialog.TranslationPropertiesDialog?1(project, new, parent) +eric6.Project.UicLoadUi.className?4(formFile, projectPath) +eric6.Project.UicLoadUi.objectName?4(formFile, projectPath) +eric6.Project.UicLoadUi.signatures?4(formFile, projectPath) eric6.Project.UserPropertiesDialog.UserPropertiesDialog.storeData?4() eric6.Project.UserPropertiesDialog.UserPropertiesDialog?1(project, parent=None, name=None) eric6.PyUnit.UnittestDialog.QtTestResult.addError?4(test, err) @@ -9989,7 +10003,6 @@ eric6.Utilities.AutoSaver.AutoSaver.saveIfNeccessary?4() eric6.Utilities.AutoSaver.AutoSaver.timerEvent?4(evt) eric6.Utilities.AutoSaver.AutoSaver?1(parent, save) -eric6.Utilities.BackgroundClient.BackgroundClient.backgroundClient?7 eric6.Utilities.BackgroundClient.BackgroundClient.run?4() eric6.Utilities.BackgroundClient.BackgroundClient?1(host, port, maxProcs) eric6.Utilities.BackgroundService.BackgroundService.batchJobDone?7 @@ -10308,6 +10321,7 @@ eric6.Utilities.getPythonVersion?4() eric6.Utilities.getQtMacBundle?4(toolname) eric6.Utilities.getRealName?4() +eric6.Utilities.getSysPath?4(interpreter) eric6.Utilities.getTestFileName?4(fn) eric6.Utilities.getUserName?4() eric6.Utilities.getWindowsExecutablePath?4(file) @@ -10402,6 +10416,8 @@ eric6.VCS.RepositoryInfoDialog.VcsRepositoryInfoDialog?1(parent, info) eric6.VCS.StatusMonitorLed.StatusMonitorLed._showContextMenu?5(coord) eric6.VCS.StatusMonitorLed.StatusMonitorLed?1(project, parent) +eric6.VCS.StatusMonitorLed.StatusMonitorLedWidget?1(project, parent) +eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread._getInfo?5() eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread._performMonitor?5() eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread._shutdown?5() eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread.checkStatus?4() @@ -10413,6 +10429,7 @@ eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread.setInterval?4(interval) eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread.stop?4() eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread.vcsStatusMonitorData?7 +eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread.vcsStatusMonitorInfo?7 eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread.vcsStatusMonitorStatus?7 eric6.VCS.StatusMonitorThread.VcsStatusMonitorThread?1(interval, project, vcs, parent=None) eric6.VCS.VcsBasicHelperSingleton?7 @@ -10469,6 +10486,7 @@ eric6.VCS.VersionControl.VersionControl.vcsStatus?4(name) eric6.VCS.VersionControl.VersionControl.vcsStatusChanged?7 eric6.VCS.VersionControl.VersionControl.vcsStatusMonitorData?7 +eric6.VCS.VersionControl.VersionControl.vcsStatusMonitorInfo?7 eric6.VCS.VersionControl.VersionControl.vcsStatusMonitorStatus?7 eric6.VCS.VersionControl.VersionControl.vcsSupportCommandOptions?4() eric6.VCS.VersionControl.VersionControl.vcsSwitch?4(name)
--- a/APIs/Python3/eric6.bas Sat Oct 06 14:48:45 2018 +0200 +++ b/APIs/Python3/eric6.bas Thu Nov 01 11:47:39 2018 +0100 @@ -215,6 +215,7 @@ E5TabWidget QTabWidget E5TableView QTableView E5TextEditSearchWidget QWidget +E5TextInputDialog QDialog E5TextSpinBox QSpinBox E5TldExtractor QObject E5ToolBarDialog QDialog Ui_E5ToolBarDialog @@ -844,6 +845,7 @@ StartPageJsObject QObject StatusBarIcon E5ClickableLabel StatusMonitorLed E5ClickableLed +StatusMonitorLedWidget QWidget Strip HgExtension StripProjectHelper HgExtensionProjectHelper Subversion VersionControl
--- a/Debugger/StartCoverageDialog.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Debugger/StartCoverageDialog.ui Thu Nov 01 11:47:39 2018 +0100 @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>488</width> + <width>550</width> <height>228</height> </rect> </property> @@ -80,7 +80,7 @@ <string>Enter the environment variables to be set.</string> </property> <property name="whatsThis"> - <string><b>Environment</b> + <string><b>Environment Variables</b> <p>Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.</p> <p>Example: var1=1 var2="hello world" var3+=":/tmp"</p></string> </property> @@ -147,7 +147,7 @@ <item row="3" column="0"> <widget class="QLabel" name="textLabel1"> <property name="text"> - <string>&Environment:</string> + <string>&Environment Variables:</string> </property> <property name="buddy"> <cstring>environmentCombo</cstring> @@ -267,8 +267,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>28</x> - <y>176</y> + <x>37</x> + <y>218</y> </hint> <hint type="destinationlabel"> <x>28</x> @@ -283,8 +283,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>113</x> - <y>177</y> + <x>122</x> + <y>218</y> </hint> <hint type="destinationlabel"> <x>113</x>
--- a/Debugger/StartDebugDialog.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Debugger/StartDebugDialog.ui Thu Nov 01 11:47:39 2018 +0100 @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>488</width> + <width>550</width> <height>333</height> </rect> </property> @@ -117,7 +117,7 @@ <item row="3" column="0"> <widget class="QLabel" name="textLabel1"> <property name="text"> - <string>&Environment:</string> + <string>&Environment Variables:</string> </property> <property name="buddy"> <cstring>environmentCombo</cstring> @@ -136,7 +136,7 @@ <string>Enter the environment variables to be set.</string> </property> <property name="whatsThis"> - <string><b>Environment</b> + <string><b>Environment Variables</b> <p>Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.</p> <p>Example: var1=1 var2="hello world" var3+=":/tmp"</p></string> </property> @@ -322,8 +322,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>59</x> - <y>282</y> + <x>68</x> + <y>323</y> </hint> <hint type="destinationlabel"> <x>43</x> @@ -338,8 +338,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>127</x> - <y>282</y> + <x>136</x> + <y>323</y> </hint> <hint type="destinationlabel"> <x>118</x> @@ -354,12 +354,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>164</x> - <y>229</y> + <x>185</x> + <y>279</y> </hint> <hint type="destinationlabel"> - <x>276</x> - <y>228</y> + <x>528</x> + <y>279</y> </hint> </hints> </connection>
--- a/Debugger/StartProfileDialog.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Debugger/StartProfileDialog.ui Thu Nov 01 11:47:39 2018 +0100 @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>488</width> + <width>550</width> <height>228</height> </rect> </property> @@ -117,7 +117,7 @@ <item row="3" column="0"> <widget class="QLabel" name="textLabel1"> <property name="text"> - <string>&Environment:</string> + <string>&Environment Variables:</string> </property> <property name="buddy"> <cstring>environmentCombo</cstring> @@ -136,7 +136,7 @@ <string>Enter the environment variables to be set.</string> </property> <property name="whatsThis"> - <string><b>Environment</b> + <string><b>Environment Variables</b> <p>Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.</p> <p>Example: var1=1 var2="hello world" var3+=":/tmp"</p></string> </property> @@ -267,8 +267,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>20</x> - <y>150</y> + <x>29</x> + <y>218</y> </hint> <hint type="destinationlabel"> <x>23</x> @@ -283,8 +283,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>116</x> - <y>154</y> + <x>125</x> + <y>218</y> </hint> <hint type="destinationlabel"> <x>116</x>
--- a/Debugger/StartRunDialog.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Debugger/StartRunDialog.ui Thu Nov 01 11:47:39 2018 +0100 @@ -6,7 +6,7 @@ <rect> <x>0</x> <y>0</y> - <width>488</width> + <width>550</width> <height>303</height> </rect> </property> @@ -117,7 +117,7 @@ <item row="3" column="0"> <widget class="QLabel" name="textLabel1"> <property name="text"> - <string>&Environment:</string> + <string>&Environment Variables:</string> </property> <property name="buddy"> <cstring>environmentCombo</cstring> @@ -136,7 +136,7 @@ <string>Enter the environment variables to be set.</string> </property> <property name="whatsThis"> - <string><b>Environment</b> + <string><b>Environment Variables</b> <p>Enter the environment variables to be set for the program. The individual settings must be separated by whitespace and be given in the form 'var=value'. In order to add to an environment variable, enter it in the form 'var+=value'.</p> <p>Example: var1=1 var2="hello world" var3+=":/tmp"</p></string> </property> @@ -291,8 +291,8 @@ <slot>accept()</slot> <hints> <hint type="sourcelabel"> - <x>35</x> - <y>237</y> + <x>44</x> + <y>293</y> </hint> <hint type="destinationlabel"> <x>34</x> @@ -307,8 +307,8 @@ <slot>reject()</slot> <hints> <hint type="sourcelabel"> - <x>154</x> - <y>237</y> + <x>163</x> + <y>293</y> </hint> <hint type="destinationlabel"> <x>150</x> @@ -323,12 +323,12 @@ <slot>setEnabled(bool)</slot> <hints> <hint type="sourcelabel"> - <x>121</x> - <y>190</y> + <x>142</x> + <y>249</y> </hint> <hint type="destinationlabel"> - <x>265</x> - <y>191</y> + <x>528</x> + <y>249</y> </hint> </hints> </connection>
--- a/Documentation/Help/source.qhp Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Help/source.qhp Thu Nov 01 11:47:39 2018 +0100 @@ -114,6 +114,7 @@ <section title="eric6.E5Gui.E5TabWidget" ref="eric6.E5Gui.E5TabWidget.html" /> <section title="eric6.E5Gui.E5TableView" ref="eric6.E5Gui.E5TableView.html" /> <section title="eric6.E5Gui.E5TextEditSearchWidget" ref="eric6.E5Gui.E5TextEditSearchWidget.html" /> + <section title="eric6.E5Gui.E5TextInputDialog" ref="eric6.E5Gui.E5TextInputDialog.html" /> <section title="eric6.E5Gui.E5TextSpinBox" ref="eric6.E5Gui.E5TextSpinBox.html" /> <section title="eric6.E5Gui.E5ToolBarDialog" ref="eric6.E5Gui.E5ToolBarDialog.html" /> <section title="eric6.E5Gui.E5ToolBarManager" ref="eric6.E5Gui.E5ToolBarManager.html" /> @@ -996,6 +997,7 @@ <section title="eric6.Project.QuickFindFileDialog" ref="eric6.Project.QuickFindFileDialog.html" /> <section title="eric6.Project.SpellingPropertiesDialog" ref="eric6.Project.SpellingPropertiesDialog.html" /> <section title="eric6.Project.TranslationPropertiesDialog" ref="eric6.Project.TranslationPropertiesDialog.html" /> + <section title="eric6.Project.UicLoadUi" ref="eric6.Project.UicLoadUi.html" /> <section title="eric6.Project.UserPropertiesDialog" ref="eric6.Project.UserPropertiesDialog.html" /> </section> <section title="eric6.PyUnit" ref="index-eric6.PyUnit.html"> @@ -1178,6 +1180,7 @@ <section title="eric6.Utilities.BackgroundClient" ref="eric6.Utilities.BackgroundClient.html" /> <section title="eric6.Utilities.BackgroundService" ref="eric6.Utilities.BackgroundService.html" /> <section title="eric6.Utilities.FtpUtilities" ref="eric6.Utilities.FtpUtilities.html" /> + <section title="eric6.Utilities.GetSysPath" ref="eric6.Utilities.GetSysPath.html" /> <section title="eric6.Utilities.MimeTypes" ref="eric6.Utilities.MimeTypes.html" /> <section title="eric6.Utilities.ModuleParser" ref="eric6.Utilities.ModuleParser.html" /> <section title="eric6.Utilities.MouseUtilities" ref="eric6.Utilities.MouseUtilities.html" /> @@ -3504,12 +3507,15 @@ <keyword name="CreateDialogCodeDialog (Constructor)" id="CreateDialogCodeDialog (Constructor)" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__init__" /> <keyword name="CreateDialogCodeDialog (Module)" id="CreateDialogCodeDialog (Module)" ref="eric6.Project.CreateDialogCodeDialog.html" /> <keyword name="CreateDialogCodeDialog.__className" id="CreateDialogCodeDialog.__className" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__className" /> + <keyword name="CreateDialogCodeDialog.__classNameExternal" id="CreateDialogCodeDialog.__classNameExternal" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__classNameExternal" /> <keyword name="CreateDialogCodeDialog.__generateCode" id="CreateDialogCodeDialog.__generateCode" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__generateCode" /> <keyword name="CreateDialogCodeDialog.__generatePythonCode" id="CreateDialogCodeDialog.__generatePythonCode" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__generatePythonCode" /> <keyword name="CreateDialogCodeDialog.__mapType" id="CreateDialogCodeDialog.__mapType" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__mapType" /> <keyword name="CreateDialogCodeDialog.__objectName" id="CreateDialogCodeDialog.__objectName" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__objectName" /> + <keyword name="CreateDialogCodeDialog.__objectNameExternal" id="CreateDialogCodeDialog.__objectNameExternal" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__objectNameExternal" /> <keyword name="CreateDialogCodeDialog.__signatures" id="CreateDialogCodeDialog.__signatures" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__signatures" /> <keyword name="CreateDialogCodeDialog.__updateSlotsModel" id="CreateDialogCodeDialog.__updateSlotsModel" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__updateSlotsModel" /> + <keyword name="CreateDialogCodeDialog.__updateSlotsModelExternal" id="CreateDialogCodeDialog.__updateSlotsModelExternal" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__updateSlotsModelExternal" /> <keyword name="CreateDialogCodeDialog.initError" id="CreateDialogCodeDialog.initError" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.initError" /> <keyword name="CreateDialogCodeDialog.on_buttonBox_clicked" id="CreateDialogCodeDialog.on_buttonBox_clicked" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.on_buttonBox_clicked" /> <keyword name="CreateDialogCodeDialog.on_classNameCombo_activated" id="CreateDialogCodeDialog.on_classNameCombo_activated" ref="eric6.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.on_classNameCombo_activated" /> @@ -4953,6 +4959,15 @@ <keyword name="E5TextEditSearchWidget.on_findPrevButton_clicked" id="E5TextEditSearchWidget.on_findPrevButton_clicked" ref="eric6.E5Gui.E5TextEditSearchWidget.html#E5TextEditSearchWidget.on_findPrevButton_clicked" /> <keyword name="E5TextEditSearchWidget.on_findtextCombo_editTextChanged" id="E5TextEditSearchWidget.on_findtextCombo_editTextChanged" ref="eric6.E5Gui.E5TextEditSearchWidget.html#E5TextEditSearchWidget.on_findtextCombo_editTextChanged" /> <keyword name="E5TextEditSearchWidget.setWidthForHeight" id="E5TextEditSearchWidget.setWidthForHeight" ref="eric6.E5Gui.E5TextEditSearchWidget.html#E5TextEditSearchWidget.setWidthForHeight" /> + <keyword name="E5TextInputDialog" id="E5TextInputDialog" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog" /> + <keyword name="E5TextInputDialog (Constructor)" id="E5TextInputDialog (Constructor)" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.__init__" /> + <keyword name="E5TextInputDialog (Module)" id="E5TextInputDialog (Module)" ref="eric6.E5Gui.E5TextInputDialog.html" /> + <keyword name="E5TextInputDialog.labelText" id="E5TextInputDialog.labelText" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.labelText" /> + <keyword name="E5TextInputDialog.setLabelText" id="E5TextInputDialog.setLabelText" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.setLabelText" /> + <keyword name="E5TextInputDialog.setTextEchoMode" id="E5TextInputDialog.setTextEchoMode" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.setTextEchoMode" /> + <keyword name="E5TextInputDialog.setTextValue" id="E5TextInputDialog.setTextValue" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.setTextValue" /> + <keyword name="E5TextInputDialog.textEchoMode" id="E5TextInputDialog.textEchoMode" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.textEchoMode" /> + <keyword name="E5TextInputDialog.textValue" id="E5TextInputDialog.textValue" ref="eric6.E5Gui.E5TextInputDialog.html#E5TextInputDialog.textValue" /> <keyword name="E5TextSpinBox" id="E5TextSpinBox" ref="eric6.E5Gui.E5TextSpinBox.html#E5TextSpinBox" /> <keyword name="E5TextSpinBox (Constructor)" id="E5TextSpinBox (Constructor)" ref="eric6.E5Gui.E5TextSpinBox.html#E5TextSpinBox.__init__" /> <keyword name="E5TextSpinBox (Module)" id="E5TextSpinBox (Module)" ref="eric6.E5Gui.E5TextSpinBox.html" /> @@ -5738,6 +5753,7 @@ <keyword name="EmailPage (Module)" id="EmailPage (Module)" ref="eric6.Preferences.ConfigurationPages.EmailPage.html" /> <keyword name="EmailPage.__updatePortSpin" id="EmailPage.__updatePortSpin" ref="eric6.Preferences.ConfigurationPages.EmailPage.html#EmailPage.__updatePortSpin" /> <keyword name="EmailPage.__updateTestButton" id="EmailPage.__updateTestButton" ref="eric6.Preferences.ConfigurationPages.EmailPage.html#EmailPage.__updateTestButton" /> + <keyword name="EmailPage.on_googleHelpButton_clicked" id="EmailPage.on_googleHelpButton_clicked" ref="eric6.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_googleHelpButton_clicked" /> <keyword name="EmailPage.on_mailAuthenticationGroup_toggled" id="EmailPage.on_mailAuthenticationGroup_toggled" ref="eric6.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_mailAuthenticationGroup_toggled" /> <keyword name="EmailPage.on_mailPasswordEdit_textChanged" id="EmailPage.on_mailPasswordEdit_textChanged" ref="eric6.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_mailPasswordEdit_textChanged" /> <keyword name="EmailPage.on_mailServerEdit_textChanged" id="EmailPage.on_mailServerEdit_textChanged" ref="eric6.Preferences.ConfigurationPages.EmailPage.html#EmailPage.on_mailServerEdit_textChanged" /> @@ -6478,6 +6494,7 @@ <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric6.Utilities.ModuleParser.html#Function.__init__" /> <keyword name="Function.addDescription" id="Function.addDescription" ref="eric6.Utilities.ModuleParser.html#Function.addDescription" /> <keyword name="Function.setEndLine" id="Function.setEndLine" ref="eric6.Utilities.ModuleParser.html#Function.setEndLine" /> + <keyword name="GetSysPath (Module)" id="GetSysPath (Module)" ref="eric6.Utilities.GetSysPath.html" /> <keyword name="Git" id="Git" ref="eric6.Plugins.VcsPlugins.vcsGit.git.html#Git" /> <keyword name="Git (Constructor)" id="Git (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsGit.git.html#Git.__init__" /> <keyword name="Git.__gitGetFileForRevision" id="Git.__gitGetFileForRevision" ref="eric6.Plugins.VcsPlugins.vcsGit.git.html#Git.__gitGetFileForRevision" /> @@ -7257,6 +7274,7 @@ <keyword name="GitStatusMonitorThread" id="GitStatusMonitorThread" ref="eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html#GitStatusMonitorThread" /> <keyword name="GitStatusMonitorThread (Constructor)" id="GitStatusMonitorThread (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html#GitStatusMonitorThread.__init__" /> <keyword name="GitStatusMonitorThread (Module)" id="GitStatusMonitorThread (Module)" ref="eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html" /> + <keyword name="GitStatusMonitorThread._getInfo" id="GitStatusMonitorThread._getInfo" ref="eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html#GitStatusMonitorThread._getInfo" /> <keyword name="GitStatusMonitorThread._performMonitor" id="GitStatusMonitorThread._performMonitor" ref="eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html#GitStatusMonitorThread._performMonitor" /> <keyword name="GitStatusMonitorThread._shutdown" id="GitStatusMonitorThread._shutdown" ref="eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html#GitStatusMonitorThread._shutdown" /> <keyword name="GitSubmoduleAddDialog" id="GitSubmoduleAddDialog" ref="eric6.Plugins.VcsPlugins.vcsGit.GitSubmoduleAddDialog.html#GitSubmoduleAddDialog" /> @@ -9317,6 +9335,8 @@ <keyword name="HgStatusMonitorThread" id="HgStatusMonitorThread" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread" /> <keyword name="HgStatusMonitorThread (Constructor)" id="HgStatusMonitorThread (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread.__init__" /> <keyword name="HgStatusMonitorThread (Module)" id="HgStatusMonitorThread (Module)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html" /> + <keyword name="HgStatusMonitorThread.__initClient" id="HgStatusMonitorThread.__initClient" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread.__initClient" /> + <keyword name="HgStatusMonitorThread._getInfo" id="HgStatusMonitorThread._getInfo" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread._getInfo" /> <keyword name="HgStatusMonitorThread._performMonitor" id="HgStatusMonitorThread._performMonitor" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread._performMonitor" /> <keyword name="HgStatusMonitorThread._shutdown" id="HgStatusMonitorThread._shutdown" ref="eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread._shutdown" /> <keyword name="HgStripDialog" id="HgStripDialog" ref="eric6.Plugins.VcsPlugins.vcsMercurial.StripExtension.HgStripDialog.html#HgStripDialog" /> @@ -10109,12 +10129,18 @@ <keyword name="IrcChannelWidget.__handleCtcp" id="IrcChannelWidget.__handleCtcp" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__handleCtcp" /> <keyword name="IrcChannelWidget.__help" id="IrcChannelWidget.__help" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__help" /> <keyword name="IrcChannelWidget.__ignore" id="IrcChannelWidget.__ignore" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__ignore" /> + <keyword name="IrcChannelWidget.__ignoreUser" id="IrcChannelWidget.__ignoreUser" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__ignoreUser" /> <keyword name="IrcChannelWidget.__initMessagesMenu" id="IrcChannelWidget.__initMessagesMenu" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__initMessagesMenu" /> <keyword name="IrcChannelWidget.__initUsersMenu" id="IrcChannelWidget.__initUsersMenu" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__initUsersMenu" /> <keyword name="IrcChannelWidget.__message" id="IrcChannelWidget.__message" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__message" /> <keyword name="IrcChannelWidget.__openPrivateChat" id="IrcChannelWidget.__openPrivateChat" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__openPrivateChat" /> + <keyword name="IrcChannelWidget.__pingUser" id="IrcChannelWidget.__pingUser" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__pingUser" /> + <keyword name="IrcChannelWidget.__processUserMessage" id="IrcChannelWidget.__processUserMessage" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__processUserMessage" /> <keyword name="IrcChannelWidget.__saveMessages" id="IrcChannelWidget.__saveMessages" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__saveMessages" /> <keyword name="IrcChannelWidget.__sendAutoWhoCommand" id="IrcChannelWidget.__sendAutoWhoCommand" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__sendAutoWhoCommand" /> + <keyword name="IrcChannelWidget.__sendUserMessage" id="IrcChannelWidget.__sendUserMessage" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__sendUserMessage" /> + <keyword name="IrcChannelWidget.__sendUserNotice" id="IrcChannelWidget.__sendUserNotice" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__sendUserNotice" /> + <keyword name="IrcChannelWidget.__sendUserQuery" id="IrcChannelWidget.__sendUserQuery" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__sendUserQuery" /> <keyword name="IrcChannelWidget.__setEditTopicButton" id="IrcChannelWidget.__setEditTopicButton" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__setEditTopicButton" /> <keyword name="IrcChannelWidget.__setTopic" id="IrcChannelWidget.__setTopic" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__setTopic" /> <keyword name="IrcChannelWidget.__setUserPrivilege" id="IrcChannelWidget.__setUserPrivilege" ref="eric6.Network.IRC.IrcChannelWidget.html#IrcChannelWidget.__setUserPrivilege" /> @@ -12739,6 +12765,7 @@ <keyword name="Project.renameMainScript" id="Project.renameMainScript" ref="eric6.Project.Project.html#Project.renameMainScript" /> <keyword name="Project.reopenProject" id="Project.reopenProject" ref="eric6.Project.Project.html#Project.reopenProject" /> <keyword name="Project.repopulateItem" id="Project.repopulateItem" ref="eric6.Project.Project.html#Project.repopulateItem" /> + <keyword name="Project.resetVCS" id="Project.resetVCS" ref="eric6.Project.Project.html#Project.resetVCS" /> <keyword name="Project.saveAllScripts" id="Project.saveAllScripts" ref="eric6.Project.Project.html#Project.saveAllScripts" /> <keyword name="Project.saveProject" id="Project.saveProject" ref="eric6.Project.Project.html#Project.saveProject" /> <keyword name="Project.saveProjectAs" id="Project.saveProjectAs" ref="eric6.Project.Project.html#Project.saveProjectAs" /> @@ -14851,6 +14878,9 @@ <keyword name="StatusMonitorLed.__switchOn" id="StatusMonitorLed.__switchOn" ref="eric6.VCS.StatusMonitorLed.html#StatusMonitorLed.__switchOn" /> <keyword name="StatusMonitorLed.__vcsStateChanged" id="StatusMonitorLed.__vcsStateChanged" ref="eric6.VCS.StatusMonitorLed.html#StatusMonitorLed.__vcsStateChanged" /> <keyword name="StatusMonitorLed._showContextMenu" id="StatusMonitorLed._showContextMenu" ref="eric6.VCS.StatusMonitorLed.html#StatusMonitorLed._showContextMenu" /> + <keyword name="StatusMonitorLedWidget" id="StatusMonitorLedWidget" ref="eric6.VCS.StatusMonitorLed.html#StatusMonitorLedWidget" /> + <keyword name="StatusMonitorLedWidget (Constructor)" id="StatusMonitorLedWidget (Constructor)" ref="eric6.VCS.StatusMonitorLed.html#StatusMonitorLedWidget.__init__" /> + <keyword name="StatusMonitorLedWidget.__projectVcsStatusMonitorInfo" id="StatusMonitorLedWidget.__projectVcsStatusMonitorInfo" ref="eric6.VCS.StatusMonitorLed.html#StatusMonitorLedWidget.__projectVcsStatusMonitorInfo" /> <keyword name="StatusMonitorThread (Module)" id="StatusMonitorThread (Module)" ref="eric6.VCS.StatusMonitorThread.html" /> <keyword name="Strip" id="Strip" ref="eric6.Plugins.VcsPlugins.vcsMercurial.StripExtension.strip.html#Strip" /> <keyword name="Strip (Constructor)" id="Strip (Constructor)" ref="eric6.Plugins.VcsPlugins.vcsMercurial.StripExtension.strip.html#Strip.__init__" /> @@ -16568,6 +16598,7 @@ <keyword name="UMLSceneSizeDialog (Module)" id="UMLSceneSizeDialog (Module)" ref="eric6.Graphics.UMLSceneSizeDialog.html" /> <keyword name="UMLSceneSizeDialog.getData" id="UMLSceneSizeDialog.getData" ref="eric6.Graphics.UMLSceneSizeDialog.html#UMLSceneSizeDialog.getData" /> <keyword name="UiExtensionPlugins (Package)" id="UiExtensionPlugins (Package)" ref="index-eric6.Plugins.UiExtensionPlugins.html" /> + <keyword name="UicLoadUi (Module)" id="UicLoadUi (Module)" ref="eric6.Project.UicLoadUi.html" /> <keyword name="Uid" id="Uid" ref="eric6.Utilities.binplistlib.html#Uid" /> <keyword name="Uid.__repr__" id="Uid.__repr__" ref="eric6.Utilities.binplistlib.html#Uid.__repr__" /> <keyword name="UniqueNamespace" id="UniqueNamespace" ref="eric6.E5Network.E5RFC6266.html#UniqueNamespace" /> @@ -17123,6 +17154,7 @@ <keyword name="VcsRepositoryInfoDialog (Constructor)" id="VcsRepositoryInfoDialog (Constructor)" ref="eric6.VCS.RepositoryInfoDialog.html#VcsRepositoryInfoDialog.__init__" /> <keyword name="VcsStatusMonitorThread" id="VcsStatusMonitorThread" ref="eric6.VCS.StatusMonitorThread.html#VcsStatusMonitorThread" /> <keyword name="VcsStatusMonitorThread (Constructor)" id="VcsStatusMonitorThread (Constructor)" ref="eric6.VCS.StatusMonitorThread.html#VcsStatusMonitorThread.__init__" /> + <keyword name="VcsStatusMonitorThread._getInfo" id="VcsStatusMonitorThread._getInfo" ref="eric6.VCS.StatusMonitorThread.html#VcsStatusMonitorThread._getInfo" /> <keyword name="VcsStatusMonitorThread._performMonitor" id="VcsStatusMonitorThread._performMonitor" ref="eric6.VCS.StatusMonitorThread.html#VcsStatusMonitorThread._performMonitor" /> <keyword name="VcsStatusMonitorThread._shutdown" id="VcsStatusMonitorThread._shutdown" ref="eric6.VCS.StatusMonitorThread.html#VcsStatusMonitorThread._shutdown" /> <keyword name="VcsStatusMonitorThread.checkStatus" id="VcsStatusMonitorThread.checkStatus" ref="eric6.VCS.StatusMonitorThread.html#VcsStatusMonitorThread.checkStatus" /> @@ -17149,6 +17181,7 @@ <keyword name="VersionControl (Constructor)" id="VersionControl (Constructor)" ref="eric6.VCS.VersionControl.html#VersionControl.__init__" /> <keyword name="VersionControl (Module)" id="VersionControl (Module)" ref="eric6.VCS.VersionControl.html" /> <keyword name="VersionControl.__statusMonitorData" id="VersionControl.__statusMonitorData" ref="eric6.VCS.VersionControl.html#VersionControl.__statusMonitorData" /> + <keyword name="VersionControl.__statusMonitorInfo" id="VersionControl.__statusMonitorInfo" ref="eric6.VCS.VersionControl.html#VersionControl.__statusMonitorInfo" /> <keyword name="VersionControl.__statusMonitorStatus" id="VersionControl.__statusMonitorStatus" ref="eric6.VCS.VersionControl.html#VersionControl.__statusMonitorStatus" /> <keyword name="VersionControl._createStatusMonitorThread" id="VersionControl._createStatusMonitorThread" ref="eric6.VCS.VersionControl.html#VersionControl._createStatusMonitorThread" /> <keyword name="VersionControl.addArguments" id="VersionControl.addArguments" ref="eric6.VCS.VersionControl.html#VersionControl.addArguments" /> @@ -18496,6 +18529,7 @@ <keyword name="__init___3" id="__init___3" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#__init___3" /> <keyword name="__init___4" id="__init___4" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#__init___4" /> <keyword name="__jsSyntaxCheck" id="__jsSyntaxCheck" ref="eric6.Plugins.CheckerPlugins.SyntaxChecker.jsCheckSyntax.html#__jsSyntaxCheck" /> + <keyword name="__mapType" id="__mapType" ref="eric6.Project.UicLoadUi.html#__mapType" /> <keyword name="__messageBox" id="__messageBox" ref="eric6.E5Gui.E5MessageBox.html#__messageBox" /> <keyword name="__pyName" id="__pyName" ref="eric6.Utilities.uic.html#__pyName" /> <keyword name="__pyName" id="__pyName" ref="eric6.compileUiFiles.html#__pyName" /> @@ -18550,6 +18584,7 @@ <keyword name="check_files" id="check_files" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#check_files" /> <keyword name="check_logical" id="check_logical" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#check_logical" /> <keyword name="check_physical" id="check_physical" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#check_physical" /> + <keyword name="className" id="className" ref="eric6.Project.UicLoadUi.html#className" /> <keyword name="cleanUp" id="cleanUp" ref="eric6.install-debugclients.html#cleanUp" /> <keyword name="cleanUp" id="cleanUp" ref="eric6.install.html#cleanUp" /> <keyword name="cleanUpLinuxSpecifics" id="cleanUpLinuxSpecifics" ref="eric6.install.html#cleanUpLinuxSpecifics" /> @@ -18928,10 +18963,12 @@ <keyword name="getSupportedFormats" id="getSupportedFormats" ref="eric6.QScintilla.Exporters.__init__.html#getSupportedFormats" /> <keyword name="getSupportedLanguages" id="getSupportedLanguages" ref="eric6.QScintilla.Lexers.__init__.html#getSupportedLanguages" /> <keyword name="getSymlinkIcon" id="getSymlinkIcon" ref="eric6.UI.PixmapCache.html#getSymlinkIcon" /> + <keyword name="getSysPath" id="getSysPath" ref="eric6.Utilities.__init__.html#getSysPath" /> <keyword name="getSystem" id="getSystem" ref="eric6.Preferences.__init__.html#getSystem" /> <keyword name="getTasks" id="getTasks" ref="eric6.Preferences.__init__.html#getTasks" /> <keyword name="getTemplates" id="getTemplates" ref="eric6.Preferences.__init__.html#getTemplates" /> <keyword name="getTestFileName" id="getTestFileName" ref="eric6.Utilities.__init__.html#getTestFileName" /> + <keyword name="getText" id="getText" ref="eric6.E5Gui.E5TextInputDialog.html#getText" /> <keyword name="getTranslatedMessage" id="getTranslatedMessage" ref="eric6.Plugins.CheckerPlugins.CodeStyleChecker.translations.html#getTranslatedMessage" /> <keyword name="getTranslationEngine" id="getTranslationEngine" ref="eric6.Plugins.UiExtensionPlugins.Translator.TranslatorEngines.__init__.html#getTranslationEngine" /> <keyword name="getTrayStarter" id="getTrayStarter" ref="eric6.Preferences.__init__.html#getTrayStarter" /> @@ -19024,6 +19061,7 @@ <keyword name="ircFilter" id="ircFilter" ref="eric6.Network.IRC.IrcUtilities.html#ircFilter" /> <keyword name="ircTimestamp" id="ircTimestamp" ref="eric6.Network.IRC.IrcUtilities.html#ircTimestamp" /> <keyword name="isConfigured" id="isConfigured" ref="eric6.Preferences.__init__.html#isConfigured" /> + <keyword name="isCredentialsFileAvailable" id="isCredentialsFileAvailable" ref="eric6.E5Network.E5GoogleMail.html#isCredentialsFileAvailable" /> <keyword name="isCupsAvailable" id="isCupsAvailable" ref="eric6.WebBrowser.Tools.FilePrinter.html#isCupsAvailable" /> <keyword name="isDrive" id="isDrive" ref="eric6.Utilities.__init__.html#isDrive" /> <keyword name="isExecutable" id="isExecutable" ref="eric6.Utilities.__init__.html#isExecutable" /> @@ -19104,6 +19142,7 @@ <keyword name="normcaseabspath" id="normcaseabspath" ref="eric6.Utilities.__init__.html#normcaseabspath" /> <keyword name="normcasepath" id="normcasepath" ref="eric6.Utilities.__init__.html#normcasepath" /> <keyword name="normjoinpath" id="normjoinpath" ref="eric6.Utilities.__init__.html#normjoinpath" /> + <keyword name="objectName" id="objectName" ref="eric6.Project.UicLoadUi.html#objectName" /> <keyword name="okToClearData" id="okToClearData" ref="eric6.E5Gui.E5MessageBox.html#okToClearData" /> <keyword name="open" id="open" ref="eric6.Globals.compatibility_fixes.html#open" /> <keyword name="parseContentDisposition" id="parseContentDisposition" ref="eric6.Helpviewer.HelpUtilities.html#parseContentDisposition" /> @@ -19280,6 +19319,7 @@ <keyword name="shouldResetLayout" id="shouldResetLayout" ref="eric6.Preferences.__init__.html#shouldResetLayout" /> <keyword name="shutilCopy" id="shutilCopy" ref="eric6.install-debugclients.html#shutilCopy" /> <keyword name="shutilCopy" id="shutilCopy" ref="eric6.install.html#shutilCopy" /> + <keyword name="signatures" id="signatures" ref="eric6.Project.UicLoadUi.html#signatures" /> <keyword name="simpleAppStartup" id="simpleAppStartup" ref="eric6.Toolbox.Startup.html#simpleAppStartup" /> <keyword name="sort" id="sort" ref="eric6.Graphics.GraphicsUtilities.html#sort" /> <keyword name="speedString" id="speedString" ref="eric6.WebBrowser.Download.DownloadUtilities.html#speedString" /> @@ -19470,6 +19510,7 @@ <file>eric6.E5Gui.E5TabWidget.html</file> <file>eric6.E5Gui.E5TableView.html</file> <file>eric6.E5Gui.E5TextEditSearchWidget.html</file> + <file>eric6.E5Gui.E5TextInputDialog.html</file> <file>eric6.E5Gui.E5TextSpinBox.html</file> <file>eric6.E5Gui.E5ToolBarDialog.html</file> <file>eric6.E5Gui.E5ToolBarManager.html</file> @@ -20167,6 +20208,7 @@ <file>eric6.Project.QuickFindFileDialog.html</file> <file>eric6.Project.SpellingPropertiesDialog.html</file> <file>eric6.Project.TranslationPropertiesDialog.html</file> + <file>eric6.Project.UicLoadUi.html</file> <file>eric6.Project.UserPropertiesDialog.html</file> <file>eric6.PyUnit.UnittestDialog.html</file> <file>eric6.QScintilla.APIsManager.html</file> @@ -20310,6 +20352,7 @@ <file>eric6.Utilities.ClassBrowsers.pyclbr.html</file> <file>eric6.Utilities.ClassBrowsers.rbclbr.html</file> <file>eric6.Utilities.FtpUtilities.html</file> + <file>eric6.Utilities.GetSysPath.html</file> <file>eric6.Utilities.MimeTypes.html</file> <file>eric6.Utilities.ModuleParser.html</file> <file>eric6.Utilities.MouseUtilities.html</file>
--- a/Documentation/Source/eric6.DebugClients.Python.DebugClient.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.DebugClients.Python.DebugClient.html Thu Nov 01 11:47:39 2018 +0100 @@ -51,7 +51,7 @@ DebugClientBase, DebugBase, ThreadExtension <h3>Class Attributes</h3> <table> -<tr><td>debugClient</td></tr> +<tr><td>None</td></tr> </table> <h3>Class Methods</h3> <table>
--- a/Documentation/Source/eric6.E5Gui.E5PasswordMeter.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.E5Gui.E5PasswordMeter.html Thu Nov 01 11:47:39 2018 +0100 @@ -48,7 +48,7 @@ QProgressBar <h3>Class Attributes</h3> <table> -<tr><td>app</td></tr><tr><td>meter</td></tr> +<tr><td>None</td></tr> </table> <h3>Class Methods</h3> <table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.E5Gui.E5TextInputDialog.html Thu Nov 01 11:47:39 2018 +0100 @@ -0,0 +1,216 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.E5Gui.E5TextInputDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.E5Gui.E5TextInputDialog</h1> +<p> +Module implementing a dialog to enter some text. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#E5TextInputDialog">E5TextInputDialog</a></td> +<td>Class implementing a dialog to enter some text.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr> +<td><a href="#getText">getText</a></td> +<td>Function to get create a dialog to enter some text and return it.</td> +</tr> +</table> +<hr /><hr /> +<a NAME="E5TextInputDialog" ID="E5TextInputDialog"></a> +<h2>E5TextInputDialog</h2> +<p> + Class implementing a dialog to enter some text. +</p> +<h3>Derived from</h3> +QDialog +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#E5TextInputDialog.__init__">E5TextInputDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#E5TextInputDialog.labelText">labelText</a></td> +<td>Public method to get the current label text.</td> +</tr><tr> +<td><a href="#E5TextInputDialog.setLabelText">setLabelText</a></td> +<td>Public method to set the label text.</td> +</tr><tr> +<td><a href="#E5TextInputDialog.setTextEchoMode">setTextEchoMode</a></td> +<td>Public method to set the echo mode of the line edit.</td> +</tr><tr> +<td><a href="#E5TextInputDialog.setTextValue">setTextValue</a></td> +<td>Public method to set the text of the line edit.</td> +</tr><tr> +<td><a href="#E5TextInputDialog.textEchoMode">textEchoMode</a></td> +<td>Public method to get the current echo mode of the line edit.</td> +</tr><tr> +<td><a href="#E5TextInputDialog.textValue">textValue</a></td> +<td>Public method to get the text of the line edit.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="E5TextInputDialog.__init__" ID="E5TextInputDialog.__init__"></a> +<h4>E5TextInputDialog (Constructor)</h4> +<b>E5TextInputDialog</b>(<i>parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl><a NAME="E5TextInputDialog.labelText" ID="E5TextInputDialog.labelText"></a> +<h4>E5TextInputDialog.labelText</h4> +<b>labelText</b>(<i></i>) +<p> + Public method to get the current label text. +</p><dl> +<dt>Returns:</dt> +<dd> +current label text +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl><a NAME="E5TextInputDialog.setLabelText" ID="E5TextInputDialog.setLabelText"></a> +<h4>E5TextInputDialog.setLabelText</h4> +<b>setLabelText</b>(<i>text</i>) +<p> + Public method to set the label text. +</p><dl> +<dt><i>text</i> (str)</dt> +<dd> +label text +</dd> +</dl><a NAME="E5TextInputDialog.setTextEchoMode" ID="E5TextInputDialog.setTextEchoMode"></a> +<h4>E5TextInputDialog.setTextEchoMode</h4> +<b>setTextEchoMode</b>(<i>echoMode</i>) +<p> + Public method to set the echo mode of the line edit. +</p><dl> +<dt><i>echoMode</i> (QLineEdit.EchoMode)</dt> +<dd> +echo mode of the line edit +</dd> +</dl><a NAME="E5TextInputDialog.setTextValue" ID="E5TextInputDialog.setTextValue"></a> +<h4>E5TextInputDialog.setTextValue</h4> +<b>setTextValue</b>(<i>text</i>) +<p> + Public method to set the text of the line edit. +</p><dl> +<dt><i>text</i> (str)</dt> +<dd> +text for the line edit +</dd> +</dl><a NAME="E5TextInputDialog.textEchoMode" ID="E5TextInputDialog.textEchoMode"></a> +<h4>E5TextInputDialog.textEchoMode</h4> +<b>textEchoMode</b>(<i></i>) +<p> + Public method to get the current echo mode of the line edit. +</p><dl> +<dt>Returns:</dt> +<dd> +echo mode of the line edit +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +QLineEdit.EchoMode +</dd> +</dl><a NAME="E5TextInputDialog.textValue" ID="E5TextInputDialog.textValue"></a> +<h4>E5TextInputDialog.textValue</h4> +<b>textValue</b>(<i></i>) +<p> + Public method to get the text of the line edit. +</p><dl> +<dt>Returns:</dt> +<dd> +text of the line edit +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="getText" ID="getText"></a> +<h2>getText</h2> +<b>getText</b>(<i>parent, title, label, mode=QLineEdit.Normal, text="", minimumWidth=300</i>) +<p> + Function to get create a dialog to enter some text and return it. +</p><dl> +<dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd><dt><i>title</i> (str)</dt> +<dd> +title of the dialog +</dd><dt><i>label</i> (str)</dt> +<dd> +label of the dialog +</dd><dt><i>mode</i> (QLineEdit.EchoMode)</dt> +<dd> +echo mode of the line edit +</dd><dt><i>text</i> (str)</dt> +<dd> +initial text of the line edit +</dd><dt><i>minimumWidth</i> (int)</dt> +<dd> +minimum width of the dialog +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +tuple containing a flag indicating the dialog was accepted and the + entered text +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +tuple of (bool, str) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.E5Network.E5GoogleMail.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.E5Network.E5GoogleMail.html Thu Nov 01 11:47:39 2018 +0100 @@ -48,6 +48,9 @@ </tr><tr> <td><a href="#getCredentials">getCredentials</a></td> <td>Module function to get the Google credentials.</td> +</tr><tr> +<td><a href="#isCredentialsFileAvailable">isCredentialsFileAvailable</a></td> +<td>Module function to check, if the credentials file has been installed.</td> </tr> </table> <hr /><hr /> @@ -151,5 +154,23 @@ </dd> </dl> <div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="isCredentialsFileAvailable" ID="isCredentialsFileAvailable"></a> +<h2>isCredentialsFileAvailable</h2> +<b>isCredentialsFileAvailable</b>(<i></i>) +<p> + Module function to check, if the credentials file has been installed. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating, that the credentials file is there +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Network.IRC.IrcChannelWidget.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Network.IRC.IrcChannelWidget.html Thu Nov 01 11:47:39 2018 +0100 @@ -137,6 +137,9 @@ <td><a href="#IrcChannelWidget.__ignore">__ignore</a></td> <td>Private method to handle a channel message we are not interested in.</td> </tr><tr> +<td><a href="#IrcChannelWidget.__ignoreUser">__ignoreUser</a></td> +<td>Private slot to ignore a specific user.</td> +</tr><tr> <td><a href="#IrcChannelWidget.__initMessagesMenu">__initMessagesMenu</a></td> <td>Private slot to initialize the context menu of the messages pane.</td> </tr><tr> @@ -149,12 +152,27 @@ <td><a href="#IrcChannelWidget.__openPrivateChat">__openPrivateChat</a></td> <td>Private slot to open a chat with the selected user.</td> </tr><tr> +<td><a href="#IrcChannelWidget.__pingUser">__pingUser</a></td> +<td>Private slot to send a ping to a specific user.</td> +</tr><tr> +<td><a href="#IrcChannelWidget.__processUserMessage">__processUserMessage</a></td> +<td>Private method to process a message entered by the user or via the user list context menu.</td> +</tr><tr> <td><a href="#IrcChannelWidget.__saveMessages">__saveMessages</a></td> <td>Private slot to save the contents of the messages display.</td> </tr><tr> <td><a href="#IrcChannelWidget.__sendAutoWhoCommand">__sendAutoWhoCommand</a></td> <td>Private slot to send the WHO command to update the users list.</td> </tr><tr> +<td><a href="#IrcChannelWidget.__sendUserMessage">__sendUserMessage</a></td> +<td>Private slot to send a private message to a specific user.</td> +</tr><tr> +<td><a href="#IrcChannelWidget.__sendUserNotice">__sendUserNotice</a></td> +<td>Private slot to send a notice message to a specific user.</td> +</tr><tr> +<td><a href="#IrcChannelWidget.__sendUserQuery">__sendUserQuery</a></td> +<td>Private slot to send a query message to a specific user.</td> +</tr><tr> <td><a href="#IrcChannelWidget.__setEditTopicButton">__setEditTopicButton</a></td> <td>Private method to set the visibility of the Edit Topic button.</td> </tr><tr> @@ -508,7 +526,12 @@ <dd> flag indicating whether the message was handled (boolean) </dd> -</dl><a NAME="IrcChannelWidget.__initMessagesMenu" ID="IrcChannelWidget.__initMessagesMenu"></a> +</dl><a NAME="IrcChannelWidget.__ignoreUser" ID="IrcChannelWidget.__ignoreUser"></a> +<h4>IrcChannelWidget.__ignoreUser</h4> +<b>__ignoreUser</b>(<i></i>) +<p> + Private slot to ignore a specific user. +</p><a NAME="IrcChannelWidget.__initMessagesMenu" ID="IrcChannelWidget.__initMessagesMenu"></a> <h4>IrcChannelWidget.__initMessagesMenu</h4> <b>__initMessagesMenu</b>(<i></i>) <p> @@ -538,7 +561,23 @@ <b>__openPrivateChat</b>(<i></i>) <p> Private slot to open a chat with the selected user. -</p><a NAME="IrcChannelWidget.__saveMessages" ID="IrcChannelWidget.__saveMessages"></a> +</p><a NAME="IrcChannelWidget.__pingUser" ID="IrcChannelWidget.__pingUser"></a> +<h4>IrcChannelWidget.__pingUser</h4> +<b>__pingUser</b>(<i></i>) +<p> + Private slot to send a ping to a specific user. +</p><a NAME="IrcChannelWidget.__processUserMessage" ID="IrcChannelWidget.__processUserMessage"></a> +<h4>IrcChannelWidget.__processUserMessage</h4> +<b>__processUserMessage</b>(<i>msg</i>) +<p> + Private method to process a message entered by the user or via the + user list context menu. +</p><dl> +<dt><i>msg</i> (str)</dt> +<dd> +message to be processed +</dd> +</dl><a NAME="IrcChannelWidget.__saveMessages" ID="IrcChannelWidget.__saveMessages"></a> <h4>IrcChannelWidget.__saveMessages</h4> <b>__saveMessages</b>(<i></i>) <p> @@ -548,6 +587,21 @@ <b>__sendAutoWhoCommand</b>(<i></i>) <p> Private slot to send the WHO command to update the users list. +</p><a NAME="IrcChannelWidget.__sendUserMessage" ID="IrcChannelWidget.__sendUserMessage"></a> +<h4>IrcChannelWidget.__sendUserMessage</h4> +<b>__sendUserMessage</b>(<i></i>) +<p> + Private slot to send a private message to a specific user. +</p><a NAME="IrcChannelWidget.__sendUserNotice" ID="IrcChannelWidget.__sendUserNotice"></a> +<h4>IrcChannelWidget.__sendUserNotice</h4> +<b>__sendUserNotice</b>(<i></i>) +<p> + Private slot to send a notice message to a specific user. +</p><a NAME="IrcChannelWidget.__sendUserQuery" ID="IrcChannelWidget.__sendUserQuery"></a> +<h4>IrcChannelWidget.__sendUserQuery</h4> +<b>__sendUserQuery</b>(<i></i>) +<p> + Private slot to send a query message to a specific user. </p><a NAME="IrcChannelWidget.__setEditTopicButton" ID="IrcChannelWidget.__setEditTopicButton"></a> <h4>IrcChannelWidget.__setEditTopicButton</h4> <b>__setEditTopicButton</b>(<i></i>)
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsGit.GitStatusMonitorThread.html Thu Nov 01 11:47:39 2018 +0100 @@ -60,6 +60,9 @@ <td><a href="#GitStatusMonitorThread.__init__">GitStatusMonitorThread</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#GitStatusMonitorThread._getInfo">_getInfo</a></td> +<td>Protected method implementing the real info action.</td> +</tr><tr> <td><a href="#GitStatusMonitorThread._performMonitor">_performMonitor</a></td> <td>Protected method implementing the monitoring action.</td> </tr><tr> @@ -90,6 +93,24 @@ <dd> reference to the parent object (QObject) </dd> +</dl><a NAME="GitStatusMonitorThread._getInfo" ID="GitStatusMonitorThread._getInfo"></a> +<h4>GitStatusMonitorThread._getInfo</h4> +<b>_getInfo</b>(<i></i>) +<p> + Protected method implementing the real info action. +</p><p> + This method should be overridden and create a short info message to be + shown in the main window status bar right next to the status indicator. +</p><dl> +<dt>Returns:</dt> +<dd> +short info message +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="GitStatusMonitorThread._performMonitor" ID="GitStatusMonitorThread._performMonitor"></a> <h4>GitStatusMonitorThread._performMonitor</h4> <b>_performMonitor</b>(<i></i>)
--- a/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html Thu Nov 01 11:47:39 2018 +0100 @@ -60,6 +60,12 @@ <td><a href="#HgStatusMonitorThread.__init__">HgStatusMonitorThread</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#HgStatusMonitorThread.__initClient">__initClient</a></td> +<td>Private method to initialize the Mercurial client.</td> +</tr><tr> +<td><a href="#HgStatusMonitorThread._getInfo">_getInfo</a></td> +<td>Protected method implementing the real info action.</td> +</tr><tr> <td><a href="#HgStatusMonitorThread._performMonitor">_performMonitor</a></td> <td>Protected method implementing the monitoring action.</td> </tr><tr> @@ -90,6 +96,29 @@ <dd> reference to the parent object (QObject) </dd> +</dl><a NAME="HgStatusMonitorThread.__initClient" ID="HgStatusMonitorThread.__initClient"></a> +<h4>HgStatusMonitorThread.__initClient</h4> +<b>__initClient</b>(<i></i>) +<p> + Private method to initialize the Mercurial client. +</p><a NAME="HgStatusMonitorThread._getInfo" ID="HgStatusMonitorThread._getInfo"></a> +<h4>HgStatusMonitorThread._getInfo</h4> +<b>_getInfo</b>(<i></i>) +<p> + Protected method implementing the real info action. +</p><p> + This method should be overridden and create a short info message to be + shown in the main window status bar right next to the status indicator. +</p><dl> +<dt>Returns:</dt> +<dd> +short info message +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="HgStatusMonitorThread._performMonitor" ID="HgStatusMonitorThread._performMonitor"></a> <h4>HgStatusMonitorThread._performMonitor</h4> <b>_performMonitor</b>(<i></i>)
--- a/Documentation/Source/eric6.Preferences.ConfigurationPages.EmailPage.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Preferences.ConfigurationPages.EmailPage.html Thu Nov 01 11:47:39 2018 +0100 @@ -69,6 +69,9 @@ <td><a href="#EmailPage.__updateTestButton">__updateTestButton</a></td> <td>Private slot to update the enabled state of the test button.</td> </tr><tr> +<td><a href="#EmailPage.on_googleHelpButton_clicked">on_googleHelpButton_clicked</a></td> +<td>Private slot to show some help text "how to turn on the Gmail API".</td> +</tr><tr> <td><a href="#EmailPage.on_mailAuthenticationGroup_toggled">on_mailAuthenticationGroup_toggled</a></td> <td>Private slot to handle a change of the state of the authentication group.</td> </tr><tr> @@ -117,6 +120,11 @@ <b>__updateTestButton</b>(<i></i>) <p> Private slot to update the enabled state of the test button. +</p><a NAME="EmailPage.on_googleHelpButton_clicked" ID="EmailPage.on_googleHelpButton_clicked"></a> +<h4>EmailPage.on_googleHelpButton_clicked</h4> +<b>on_googleHelpButton_clicked</b>(<i></i>) +<p> + Private slot to show some help text "how to turn on the Gmail API". </p><a NAME="EmailPage.on_mailAuthenticationGroup_toggled" ID="EmailPage.on_mailAuthenticationGroup_toggled"></a> <h4>EmailPage.on_mailAuthenticationGroup_toggled</h4> <b>on_mailAuthenticationGroup_toggled</b>(<i>checked</i>)
--- a/Documentation/Source/eric6.Project.CreateDialogCodeDialog.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Project.CreateDialogCodeDialog.html Thu Nov 01 11:47:39 2018 +0100 @@ -61,7 +61,10 @@ <td>Constructor</td> </tr><tr> <td><a href="#CreateDialogCodeDialog.__className">__className</a></td> -<td>Private method to get the class name of the dialog.</td> +<td>Private method to get the class name of a form.</td> +</tr><tr> +<td><a href="#CreateDialogCodeDialog.__classNameExternal">__classNameExternal</a></td> +<td>Private method to get the class name of a form via an external interpreter.</td> </tr><tr> <td><a href="#CreateDialogCodeDialog.__generateCode">__generateCode</a></td> <td>Private slot to generate the code as requested by the user.</td> @@ -73,7 +76,10 @@ <td>Private method to map a type as reported by Qt's meta object to the correct Python type.</td> </tr><tr> <td><a href="#CreateDialogCodeDialog.__objectName">__objectName</a></td> -<td>Private method to get the object name of the dialog.</td> +<td>Private method to get the object name of a form.</td> +</tr><tr> +<td><a href="#CreateDialogCodeDialog.__objectNameExternal">__objectNameExternal</a></td> +<td>Private method to get the object name of a form via an external interpreter.</td> </tr><tr> <td><a href="#CreateDialogCodeDialog.__signatures">__signatures</a></td> <td>Private slot to get the signatures.</td> @@ -81,6 +87,9 @@ <td><a href="#CreateDialogCodeDialog.__updateSlotsModel">__updateSlotsModel</a></td> <td>Private slot to update the slots tree display.</td> </tr><tr> +<td><a href="#CreateDialogCodeDialog.__updateSlotsModelExternal">__updateSlotsModelExternal</a></td> +<td>Private slot to update the slots tree display getting the data via an external interpreter.</td> +</tr><tr> <td><a href="#CreateDialogCodeDialog.initError">initError</a></td> <td>Public method to determine, if there was an initialzation error.</td> </tr><tr> @@ -121,11 +130,32 @@ <h4>CreateDialogCodeDialog.__className</h4> <b>__className</b>(<i></i>) <p> - Private method to get the class name of the dialog. + Private method to get the class name of a form. </p><dl> <dt>Returns:</dt> <dd> -class name (sting) +class name +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl><a NAME="CreateDialogCodeDialog.__classNameExternal" ID="CreateDialogCodeDialog.__classNameExternal"></a> +<h4>CreateDialogCodeDialog.__classNameExternal</h4> +<b>__classNameExternal</b>(<i></i>) +<p> + Private method to get the class name of a form via an external + interpreter. +</p><dl> +<dt>Returns:</dt> +<dd> +class name +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl><a NAME="CreateDialogCodeDialog.__generateCode" ID="CreateDialogCodeDialog.__generateCode"></a> <h4>CreateDialogCodeDialog.__generateCode</h4> @@ -157,11 +187,32 @@ <h4>CreateDialogCodeDialog.__objectName</h4> <b>__objectName</b>(<i></i>) <p> - Private method to get the object name of the dialog. + Private method to get the object name of a form. </p><dl> <dt>Returns:</dt> <dd> -object name (string) +object name +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl><a NAME="CreateDialogCodeDialog.__objectNameExternal" ID="CreateDialogCodeDialog.__objectNameExternal"></a> +<h4>CreateDialogCodeDialog.__objectNameExternal</h4> +<b>__objectNameExternal</b>(<i></i>) +<p> + Private method to get the object name of a form via an external + interpreter. +</p><dl> +<dt>Returns:</dt> +<dd> +object name +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str </dd> </dl><a NAME="CreateDialogCodeDialog.__signatures" ID="CreateDialogCodeDialog.__signatures"></a> <h4>CreateDialogCodeDialog.__signatures</h4> @@ -178,6 +229,12 @@ <b>__updateSlotsModel</b>(<i></i>) <p> Private slot to update the slots tree display. +</p><a NAME="CreateDialogCodeDialog.__updateSlotsModelExternal" ID="CreateDialogCodeDialog.__updateSlotsModelExternal"></a> +<h4>CreateDialogCodeDialog.__updateSlotsModelExternal</h4> +<b>__updateSlotsModelExternal</b>(<i></i>) +<p> + Private slot to update the slots tree display getting the data via an + external interpreter. </p><a NAME="CreateDialogCodeDialog.initError" ID="CreateDialogCodeDialog.initError"></a> <h4>CreateDialogCodeDialog.initError</h4> <b>initError</b>(<i></i>)
--- a/Documentation/Source/eric6.Project.Project.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Project.Project.html Thu Nov 01 11:47:39 2018 +0100 @@ -177,6 +177,10 @@ <dd> emitted after a project file was read to open the main script +</dd><dt>vcsStatusMonitorInfo(str)</dt> +<dd> +emitted to signal some info of the + monitoring thread </dd><dt>vcsStatusMonitorStatus(str, str)</dt> <dd> emitted to signal the status of @@ -721,6 +725,9 @@ <td><a href="#Project.repopulateItem">repopulateItem</a></td> <td>Public slot to repopulate a named item.</td> </tr><tr> +<td><a href="#Project.resetVCS">resetVCS</a></td> +<td>Public method to reset the VCS.</td> +</tr><tr> <td><a href="#Project.saveAllScripts">saveAllScripts</a></td> <td>Public method to save all scripts belonging to the project.</td> </tr><tr> @@ -2665,7 +2672,12 @@ <dd> full name of the item to repopulate (string) </dd> -</dl><a NAME="Project.saveAllScripts" ID="Project.saveAllScripts"></a> +</dl><a NAME="Project.resetVCS" ID="Project.resetVCS"></a> +<h4>Project.resetVCS</h4> +<b>resetVCS</b>(<i></i>) +<p> + Public method to reset the VCS. +</p><a NAME="Project.saveAllScripts" ID="Project.saveAllScripts"></a> <h4>Project.saveAllScripts</h4> <b>saveAllScripts</b>(<i>reportSyntaxErrors=False</i>) <p>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Project.UicLoadUi.html Thu Nov 01 11:47:39 2018 +0100 @@ -0,0 +1,123 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Project.UicLoadUi</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Project.UicLoadUi</h1> +<p> +Module to get sys.path of an external interpreter. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> +<table> +<tr> +<td><a href="#__mapType">__mapType</a></td> +<td>Private function to map a type as reported by Qt's meta object to the correct Python type.</td> +</tr><tr> +<td><a href="#className">className</a></td> +<td>Function to get the class name of a form.</td> +</tr><tr> +<td><a href="#objectName">objectName</a></td> +<td>Function to get the object name of a form.</td> +</tr><tr> +<td><a href="#signatures">signatures</a></td> +<td>Function to get the signatures of form elements.</td> +</tr> +</table> +<hr /><hr /> +<a NAME="__mapType" ID="__mapType"></a> +<h2>__mapType</h2> +<b>__mapType</b>(<i>type_</i>) +<p> + Private function to map a type as reported by Qt's meta object to the + correct Python type. +</p><dl> +<dt><i>type_</i> (QByteArray or bytes)</dt> +<dd> +type as reported by Qt +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +mapped Python type +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="className" ID="className"></a> +<h2>className</h2> +<b>className</b>(<i>formFile, projectPath</i>) +<p> + Function to get the class name of a form. +</p><dl> +<dt><i>formFile</i> (str)</dt> +<dd> +file name of the form +</dd><dt><i>projectPath</i> (str)</dt> +<dd> +directory name of the project +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="objectName" ID="objectName"></a> +<h2>objectName</h2> +<b>objectName</b>(<i>formFile, projectPath</i>) +<p> + Function to get the object name of a form. +</p><dl> +<dt><i>formFile</i> (str)</dt> +<dd> +file name of the form +</dd><dt><i>projectPath</i> (str)</dt> +<dd> +directory name of the project +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="signatures" ID="signatures"></a> +<h2>signatures</h2> +<b>signatures</b>(<i>formFile, projectPath</i>) +<p> + Function to get the signatures of form elements. +</p><dl> +<dt><i>formFile</i> (str)</dt> +<dd> +file name of the form +</dd><dt><i>projectPath</i> (str)</dt> +<dd> +directory name of the project +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Utilities.BackgroundClient.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Utilities.BackgroundClient.html Thu Nov 01 11:47:39 2018 +0100 @@ -49,7 +49,7 @@ object <h3>Class Attributes</h3> <table> -<tr><td>backgroundClient</td></tr> +<tr><td>None</td></tr> </table> <h3>Class Methods</h3> <table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Utilities.GetSysPath.html Thu Nov 01 11:47:39 2018 +0100 @@ -0,0 +1,39 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Utilities.GetSysPath</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Utilities.GetSysPath</h1> +<p> +Module to get sys.path of an external interpreter. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Utilities.__init__.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.Utilities.__init__.html Thu Nov 01 11:47:39 2018 +0100 @@ -148,6 +148,9 @@ <td><a href="#getRealName">getRealName</a></td> <td>Function to get the real name of the user.</td> </tr><tr> +<td><a href="#getSysPath">getSysPath</a></td> +<td>Module function to get the Python path (sys.path) of a specific interpreter.</td> +</tr><tr> <td><a href="#getTestFileName">getTestFileName</a></td> <td>Function to build the filename of a unittest file.</td> </tr><tr> @@ -1115,6 +1118,31 @@ </dl> <div align="right"><a href="#top">Up</a></div> <hr /><hr /> +<a NAME="getSysPath" ID="getSysPath"></a> +<h2>getSysPath</h2> +<b>getSysPath</b>(<i>interpreter</i>) +<p> + Module function to get the Python path (sys.path) of a specific + interpreter. +</p><dl> +<dt><i>interpreter</i> (str)</dt> +<dd> +Python interpreter executable to get sys.path for +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +list containing sys.path of the interpreter; an empty list + is returned, if the interpreter is the one used to run eric itself +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> <a NAME="getTestFileName" ID="getTestFileName"></a> <h2>getTestFileName</h2> <b>getTestFileName</b>(<i>fn</i>)
--- a/Documentation/Source/eric6.VCS.StatusMonitorLed.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.VCS.StatusMonitorLed.html Thu Nov 01 11:47:39 2018 +0100 @@ -33,6 +33,9 @@ <tr> <td><a href="#StatusMonitorLed">StatusMonitorLed</a></td> <td>Class implementing a LED to indicate the status of the VCS status monitor thread.</td> +</tr><tr> +<td><a href="#StatusMonitorLedWidget">StatusMonitorLedWidget</a></td> +<td>Class implementing a widget containing a LED to indicate the status of the VCS status monitor thread and a short info message.</td> </tr> </table> <h3>Functions</h3> @@ -177,5 +180,61 @@ </dd> </dl> <div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="StatusMonitorLedWidget" ID="StatusMonitorLedWidget"></a> +<h2>StatusMonitorLedWidget</h2> +<p> + Class implementing a widget containing a LED to indicate the status of the + VCS status monitor thread and a short info message. +</p> +<h3>Derived from</h3> +QWidget +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#StatusMonitorLedWidget.__init__">StatusMonitorLedWidget</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#StatusMonitorLedWidget.__projectVcsStatusMonitorInfo">__projectVcsStatusMonitorInfo</a></td> +<td>Private slot handling the receipt of an info message.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="StatusMonitorLedWidget.__init__" ID="StatusMonitorLedWidget.__init__"></a> +<h4>StatusMonitorLedWidget (Constructor)</h4> +<b>StatusMonitorLedWidget</b>(<i>project, parent</i>) +<p> + Constructor +</p><dl> +<dt><i>project</i> (Project.Project)</dt> +<dd> +reference to the project object +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent object +</dd> +</dl><a NAME="StatusMonitorLedWidget.__projectVcsStatusMonitorInfo" ID="StatusMonitorLedWidget.__projectVcsStatusMonitorInfo"></a> +<h4>StatusMonitorLedWidget.__projectVcsStatusMonitorInfo</h4> +<b>__projectVcsStatusMonitorInfo</b>(<i>info</i>) +<p> + Private slot handling the receipt of an info message. +</p><dl> +<dt><i>info</i> (str)</dt> +<dd> +received info message +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.VCS.StatusMonitorThread.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.VCS.StatusMonitorThread.html Thu Nov 01 11:47:39 2018 +0100 @@ -48,6 +48,10 @@ <dt>vcsStatusMonitorData(list of str)</dt> <dd> emitted to update the VCS status +</dd><dt>vcsStatusMonitorInfo(str)</dt> +<dd> +emitted to signal some info of the + monitoring thread </dd><dt>vcsStatusMonitorStatus(str, str)</dt> <dd> emitted to signal the status of @@ -70,6 +74,9 @@ <td><a href="#VcsStatusMonitorThread.__init__">VcsStatusMonitorThread</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#VcsStatusMonitorThread._getInfo">_getInfo</a></td> +<td>Protected method implementing the real info action.</td> +</tr><tr> <td><a href="#VcsStatusMonitorThread._performMonitor">_performMonitor</a></td> <td>Protected method implementing the real monitoring action.</td> </tr><tr> @@ -124,6 +131,24 @@ <dd> reference to the parent object (QObject) </dd> +</dl><a NAME="VcsStatusMonitorThread._getInfo" ID="VcsStatusMonitorThread._getInfo"></a> +<h4>VcsStatusMonitorThread._getInfo</h4> +<b>_getInfo</b>(<i></i>) +<p> + Protected method implementing the real info action. +</p><p> + This method should be overridden and create a short info message to be + shown in the main window status bar right next to the status indicator. +</p><dl> +<dt>Returns:</dt> +<dd> +short info message +</dd> +</dl><dl> +<dt>Return Type:</dt> +<dd> +str +</dd> </dl><a NAME="VcsStatusMonitorThread._performMonitor" ID="VcsStatusMonitorThread._performMonitor"></a> <h4>VcsStatusMonitorThread._performMonitor</h4> <b>_performMonitor</b>(<i></i>)
--- a/Documentation/Source/eric6.VCS.VersionControl.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/eric6.VCS.VersionControl.html Thu Nov 01 11:47:39 2018 +0100 @@ -57,6 +57,10 @@ </dd><dt>vcsStatusMonitorData(list of str)</dt> <dd> emitted to update the VCS status +</dd><dt>vcsStatusMonitorInfo(str)</dt> +<dd> +emitted to signal some info of the + monitoring thread </dd><dt>vcsStatusMonitorStatus(str, str)</dt> <dd> emitted to signal the status of @@ -82,8 +86,11 @@ <td><a href="#VersionControl.__statusMonitorData">__statusMonitorData</a></td> <td>Private method to receive the status monitor status.</td> </tr><tr> +<td><a href="#VersionControl.__statusMonitorInfo">__statusMonitorInfo</a></td> +<td>Private slot to receive the status monitor info message.</td> +</tr><tr> <td><a href="#VersionControl.__statusMonitorStatus">__statusMonitorStatus</a></td> -<td>Private method to receive the status monitor status.</td> +<td>Private slot to receive the status monitor status.</td> </tr><tr> <td><a href="#VersionControl._createStatusMonitorThread">_createStatusMonitorThread</a></td> <td>Protected method to create an instance of the VCS status monitor thread.</td> @@ -268,26 +275,38 @@ <p> Private method to receive the status monitor status. </p><p> - It simply reemits the received status list. + It simply re-emits the received status list. </p><dl> -<dt><i>statusList</i></dt> +<dt><i>statusList</i> (list of str)</dt> <dd> -list of status records (list of strings) +list of status records +</dd> +</dl><a NAME="VersionControl.__statusMonitorInfo" ID="VersionControl.__statusMonitorInfo"></a> +<h4>VersionControl.__statusMonitorInfo</h4> +<b>__statusMonitorInfo</b>(<i>info</i>) +<p> + Private slot to receive the status monitor info message. +</p><p> + It simply re-emits the received info message. +</p><dl> +<dt><i>info</i> (str)</dt> +<dd> +received info message </dd> </dl><a NAME="VersionControl.__statusMonitorStatus" ID="VersionControl.__statusMonitorStatus"></a> <h4>VersionControl.__statusMonitorStatus</h4> <b>__statusMonitorStatus</b>(<i>status, statusMsg</i>) <p> - Private method to receive the status monitor status. + Private slot to receive the status monitor status. </p><p> - It simply reemits the received status. + It simply re-emits the received status. </p><dl> -<dt><i>status</i></dt> +<dt><i>status</i> (str (one of ok, nok or off))</dt> <dd> -status of the monitoring thread (string, ok, nok or off) -</dd><dt><i>statusMsg</i></dt> +status of the monitoring thread +</dd><dt><i>statusMsg</i> (str)</dt> <dd> -explanotory text for the signaled status (string) +explanotory text for the signaled status </dd> </dl><a NAME="VersionControl._createStatusMonitorThread" ID="VersionControl._createStatusMonitorThread"></a> <h4>VersionControl._createStatusMonitorThread</h4>
--- a/Documentation/Source/index-eric6.E5Gui.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/index-eric6.E5Gui.html Thu Nov 01 11:47:39 2018 +0100 @@ -129,6 +129,9 @@ <td><a href="eric6.E5Gui.E5TextEditSearchWidget.html">E5TextEditSearchWidget</a></td> <td>Module implementing a horizontal search widget for QTextEdit.</td> </tr><tr> +<td><a href="eric6.E5Gui.E5TextInputDialog.html">E5TextInputDialog</a></td> +<td>Module implementing a dialog to enter some text.</td> +</tr><tr> <td><a href="eric6.E5Gui.E5TextSpinBox.html">E5TextSpinBox</a></td> <td>Module implementing a spinbox with textual entries.</td> </tr><tr>
--- a/Documentation/Source/index-eric6.Project.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/index-eric6.Project.html Thu Nov 01 11:47:39 2018 +0100 @@ -125,6 +125,9 @@ <td><a href="eric6.Project.TranslationPropertiesDialog.html">TranslationPropertiesDialog</a></td> <td>Module implementing the Translations Properties dialog.</td> </tr><tr> +<td><a href="eric6.Project.UicLoadUi.html">UicLoadUi</a></td> +<td>Module to get sys.path of an external interpreter.</td> +</tr><tr> <td><a href="eric6.Project.UserPropertiesDialog.html">UserPropertiesDialog</a></td> <td>Module implementing the user specific project properties dialog.</td> </tr>
--- a/Documentation/Source/index-eric6.Utilities.html Sat Oct 06 14:48:45 2018 +0200 +++ b/Documentation/Source/index-eric6.Utilities.html Thu Nov 01 11:47:39 2018 +0100 @@ -50,6 +50,9 @@ <td><a href="eric6.Utilities.FtpUtilities.html">FtpUtilities</a></td> <td>Module implementing some FTP related utilities.</td> </tr><tr> +<td><a href="eric6.Utilities.GetSysPath.html">GetSysPath</a></td> +<td>Module to get sys.path of an external interpreter.</td> +</tr><tr> <td><a href="eric6.Utilities.MimeTypes.html">MimeTypes</a></td> <td>Module implementing mimetype dependent functions.</td> </tr><tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/E5Gui/E5TextInputDialog.py Thu Nov 01 11:47:39 2018 +0100 @@ -0,0 +1,142 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2018 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to enter some text. +""" + +from __future__ import unicode_literals + +from PyQt5.QtWidgets import QDialog, QDialogButtonBox, QVBoxLayout, QLabel, \ + QLineEdit + +from E5Gui.E5LineEdit import E5ClearableLineEdit + + +class E5TextInputDialog(QDialog): + """ + Class implementing a dialog to enter some text. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget + @type QWidget + """ + super(E5TextInputDialog, self).__init__(parent) + + self.setMaximumWidth(600) + + self.__layout = QVBoxLayout(self) + + self.__label = QLabel(self) + self.__layout.addWidget(self.__label) + + self.__lineEdit = E5ClearableLineEdit(self) + self.__layout.addWidget(self.__lineEdit) + + self.__buttonBox = QDialogButtonBox( + QDialogButtonBox.Ok | QDialogButtonBox.Cancel, self) + self.__layout.addWidget(self.__buttonBox) + + self.__buttonBox.accepted.connect(self.accept) + self.__buttonBox.rejected.connect(self.reject) + + msh = self.minimumSizeHint() + self.resize(max(self.width(), msh.width()), msh.height()) + + def setTextEchoMode(self, echoMode): + """ + Public method to set the echo mode of the line edit. + + @param echoMode echo mode of the line edit + @type QLineEdit.EchoMode + """ + self.__lineEdit.setEchoMode(echoMode) + + def textEchoMode(self): + """ + Public method to get the current echo mode of the line edit. + + @return echo mode of the line edit + @rtype QLineEdit.EchoMode + """ + return self.__lineEdit.echoMode() + + def setTextValue(self, text): + """ + Public method to set the text of the line edit. + + @param text text for the line edit + @type str + """ + self.__lineEdit.setText(text) + + def textValue(self): + """ + Public method to get the text of the line edit. + + @return text of the line edit + @rtype str + """ + return self.__lineEdit.text() + + def setLabelText(self, text): + """ + Public method to set the label text. + + @param text label text + @type str + """ + self.__label.setText(text) + + msh = self.minimumSizeHint() + labelSizeHint = self.__label.sizeHint() + self.resize(max(self.width(), msh.width(), labelSizeHint.width()), + msh.height()) + + def labelText(self): + """ + Public method to get the current label text. + + @return current label text + @rtype str + """ + return self.label.text() + + +def getText(parent, title, label, mode=QLineEdit.Normal, text="", + minimumWidth=300): + """ + Function to get create a dialog to enter some text and return it. + + @param parent reference to the parent widget + @type QWidget + @param title title of the dialog + @type str + @param label label of the dialog + @type str + @param mode echo mode of the line edit + @type QLineEdit.EchoMode + @param text initial text of the line edit + @type str + @param minimumWidth minimum width of the dialog + @type int + @return tuple containing a flag indicating the dialog was accepted and the + entered text + @rtype tuple of (bool, str) + """ + dlg = E5TextInputDialog(parent) + dlg.setWindowTitle(title) + dlg.setLabelText(label) + dlg.setTextEchoMode(mode) + dlg.setTextValue(text) + dlg.setMinimumWidth(minimumWidth) + + if dlg.exec_() == QDialog.Accepted: + return True, dlg.textValue() + else: + return False, ""
--- a/E5Network/E5GoogleMail.py Sat Oct 06 14:48:45 2018 +0200 +++ b/E5Network/E5GoogleMail.py Thu Nov 01 11:47:39 2018 +0100 @@ -24,6 +24,8 @@ from googleapiclient import discovery +from PyQt5.QtCore import QCoreApplication + import Globals @@ -32,6 +34,17 @@ APPLICATION_NAME = 'Eric Python Send Email' +def isCredentialsFileAvailable(): + """ + Module function to check, if the credentials file has been installed. + + @return flag indicating, that the credentials file is there + @rtype bool + """ + return os.path.exists( + os.path.join(Globals.getConfigDir(), CLIENT_SECRET_FILE)) + + def getCredentials(): """ Module function to get the Google credentials. @@ -64,6 +77,14 @@ @return tuple containing a success flag and a result or error message @rtype tuple of (bool, str) """ + # check for secrets file first + if not os.path.exists(os.path.join(Globals.getConfigDir(), + CLIENT_SECRET_FILE)): + return False, QCoreApplication.translate( + "GoogleMailSendMessage", + "The credentials file is not present. Has the Gmail API" + " been enabled?") + try: credentials = getCredentials() http = credentials.authorize(httplib2.Http())
--- a/E5Network/E5NetworkProxyFactory.py Sat Oct 06 14:48:45 2018 +0200 +++ b/E5Network/E5NetworkProxyFactory.py Thu Nov 01 11:47:39 2018 +0100 @@ -186,10 +186,8 @@ if value and name[-6:] == '_proxy' and \ name[:-6] == query.protocolTag().lower(): url = QUrl(value) - if url.scheme() == "http": + if url.scheme() in ["http", "https"]: proxyType = QNetworkProxy.HttpProxy - elif url.scheme() == "https": - proxyType = QNetworkProxy.HttpCachingProxy elif url.scheme() == "ftp": proxyType = QNetworkProxy.FtpCachingProxy else: @@ -234,8 +232,6 @@ if protocolKey in ["Http", "Https", "Ftp"]: if query.protocolTag() == "ftp": proxyType = QNetworkProxy.FtpCachingProxy - elif query.protocolTag() == "https": - proxyType = QNetworkProxy.HttpCachingProxy else: proxyType = QNetworkProxy.HttpProxy proxy = QNetworkProxy(
--- a/Globals/__init__.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Globals/__init__.py Thu Nov 01 11:47:39 2018 +0100 @@ -177,7 +177,7 @@ hpNew = os.path.join(os.path.expanduser("~"), cdn) if os.path.exists(hpNew): # simply delete the old config directory - shutil.rmtree(hpOld, True) + shutil.rmtree(hpOld, True) else: os.rename(hpOld, hpNew)
--- a/Network/IRC/IrcChannelWidget.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Network/IRC/IrcChannelWidget.py Thu Nov 01 11:47:39 2018 +0100 @@ -397,123 +397,133 @@ """ msg = self.messageEdit.text() if msg: - self.messages.append( - '<font color="{0}">{2} <b><</b><font color="{1}">{3}</font>' - '<b>></b> {4}</font>'.format( - Preferences.getIrc("ChannelMessageColour"), - Preferences.getIrc("OwnNickColour"), - ircTimestamp(), self.__userName, - Utilities.html_encode(msg))) - - if msg.startswith("/"): - if self.__private: - E5MessageBox.information( - self, - self.tr("Send Message"), - self.tr( - """Messages starting with a '/' are not allowed""" - """ in private chats.""")) - else: - sendData = True - # flag set to False, if command was handled - - msgList = msg.split() - cmd = msgList[0][1:].upper() - if cmd in ["MSG", "QUERY"]: - cmd = "PRIVMSG" - if len(msgList) > 1: - if msgList[1].strip().lower() in \ - self.__serviceNamesLower: - msg = "PRIVMSG " + \ - msgList[1].strip().lower() + \ - " :" + " ".join(msgList[2:]) - else: - msg = "PRIVMSG {0} :{1}".format( - msgList[1], " ".join(msgList[2:])) + self.__processUserMessage(msg) + + def __processUserMessage(self, msg): + """ + Private method to process a message entered by the user or via the + user list context menu. + + @param msg message to be processed + @type str + """ + self.messages.append( + '<font color="{0}">{2} <b><</b><font color="{1}">{3}</font>' + '<b>></b> {4}</font>'.format( + Preferences.getIrc("ChannelMessageColour"), + Preferences.getIrc("OwnNickColour"), + ircTimestamp(), self.__userName, + Utilities.html_encode(msg))) + + if msg.startswith("/"): + if self.__private: + E5MessageBox.information( + self, + self.tr("Send Message"), + self.tr( + """Messages starting with a '/' are not allowed""" + """ in private chats.""")) + else: + sendData = True + # flag set to False, if command was handled + + msgList = msg.split() + cmd = msgList[0][1:].upper() + if cmd in ["MSG", "QUERY"]: + cmd = "PRIVMSG" + if len(msgList) > 1: + if msgList[1].strip().lower() in \ + self.__serviceNamesLower: + msg = "PRIVMSG " + \ + msgList[1].strip().lower() + \ + " :" + " ".join(msgList[2:]) else: - msgList[0] = cmd - msg = " ".join(msgList) - elif cmd == "NOTICE": - if len(msgList) > 2: - msg = "NOTICE {0} :{1}".format( + msg = "PRIVMSG {0} :{1}".format( msgList[1], " ".join(msgList[2:])) - else: - msg = "NOTICE {0}".format(" ".join(msgList[1:])) - elif cmd == "PING": - receiver = msgList[1] - msg = "PING {0} " - self.sendCtcpRequest.emit(receiver, "PING", "") - sendData = False - elif cmd == "IGNORE": - sendData = False - if len(msgList) > 1: - if msgList[1] == "-r": - ignored = False - userNamesList = msgList[2:] - else: - ignored = True - userNamesList = msgList[1:] + else: + msgList[0] = cmd + msg = " ".join(msgList) + elif cmd == "NOTICE": + if len(msgList) > 2: + msg = "NOTICE {0} :{1}".format( + msgList[1], " ".join(msgList[2:])) + else: + msg = "NOTICE {0}".format(" ".join(msgList[1:])) + elif cmd == "PING": + receiver = msgList[1] + msg = "PING {0} " + self.sendCtcpRequest.emit(receiver, "PING", "") + sendData = False + elif cmd == "IGNORE": + sendData = False + if len(msgList) > 1: + if msgList[1] == "-r": + ignored = False + userNamesList = msgList[2:] else: - userNamesList = [] - userNames = ",".join( - u.rstrip(",") for u in userNamesList).split(",") - for userName in userNames: - itm = self.__findUser(userName) - if itm: - itm.setIgnored(ignored) - elif cmd == "UNIGNORE": - sendData = False - if len(msgList) > 1: + ignored = True userNamesList = msgList[1:] - else: - userNamesList = [] - userNames = ",".join( - u.rstrip(",") for u in userNamesList).split(",") - for userName in userNames: - itm = self.__findUser(userName) - if itm: - itm.setIgnored(False) - elif cmd == "AWAY": - sendData = False - if len(msgList) > 1: - msg = " ".join(msgList[1:]) + else: + userNamesList = [] + userNames = ",".join( + u.rstrip(",") for u in userNamesList).split(",") + for userName in userNames: + itm = self.__findUser(userName) + if itm: + itm.setIgnored(ignored) + elif cmd == "UNIGNORE": + sendData = False + if len(msgList) > 1: + userNamesList = msgList[1:] + else: + userNamesList = [] + userNames = ",".join( + u.rstrip(",") for u in userNamesList).split(",") + for userName in userNames: + itm = self.__findUser(userName) + if itm: + itm.setIgnored(False) + elif cmd == "AWAY": + sendData = False + if len(msgList) > 1: + msg = " ".join(msgList[1:]) + else: + msg = "" + self.awayCommand.emit(msg) + elif cmd == "JOIN": + sendData = False + if len(msgList) > 1: + channels = msgList[1].split(",") + if len(msgList) > 2: + keys = msgList[2].split(",") else: - msg = "" - self.awayCommand.emit(msg) - elif cmd == "JOIN": - sendData = False - if len(msgList) > 1: - channels = msgList[1].split(",") - if len(msgList) > 2: - keys = msgList[2].split(",") - else: - keys = [] - for channel, key in zip_longest( - channels, keys, fillvalue=""): - self.__ircWidget.joinChannel(channel, key) - elif cmd == "PART": - sendData = False - if len(msgList) == 1: - self.leaveChannel() - else: - self.leaveChannels.emit(msgList[1:]) - elif cmd == "PARTALL": - sendData = False - self.leaveAllChannels.emit() + keys = [] + for channel, key in zip_longest( + channels, keys, fillvalue=""): + self.__ircWidget.joinChannel(channel, key) + elif cmd == "PART": + sendData = False + if len(msgList) == 1: + self.leaveChannel() else: - msg = msg[1:] - if sendData: - self.sendData.emit(msg) + self.leaveChannels.emit(msgList[1:]) + elif cmd == "PARTALL": + sendData = False + self.leaveAllChannels.emit() + else: + msg = msg[1:] + if sendData: + self.sendData.emit(msg) + else: + if self.__private: + self.sendData.emit( + "PRIVMSG " + self.__privatePartner + " :" + msg) else: - if self.__private: - self.sendData.emit( - "PRIVMSG " + self.__privatePartner + " :" + msg) - else: - self.sendData.emit( - "PRIVMSG " + self.__name + " :" + msg) - - self.messageEdit.clear() - self.unsetMarkerLine() + self.sendData.emit( + "PRIVMSG " + self.__name + " :" + msg) + + self.messageEdit.clear() + self.unsetMarkerLine() def requestLeave(self): """ @@ -1463,6 +1473,62 @@ user = self.usersList.selectedItems()[0].text() self.openPrivateChat.emit(user) + def __sendUserMessage(self): + """ + Private slot to send a private message to a specific user. + """ + from E5Gui import E5TextInputDialog + + user = self.usersList.selectedItems()[0].text() + ok, message = E5TextInputDialog.getText( + self, self.tr("Send Message"), + self.tr("Enter the message to be sent:"), + minimumWidth=400) + if ok and message: + self.__processUserMessage("/MSG {0} {1}".format(user, message)) + + def __sendUserQuery(self): + """ + Private slot to send a query message to a specific user. + """ + from E5Gui import E5TextInputDialog + + user = self.usersList.selectedItems()[0].text() + ok, message = E5TextInputDialog.getText( + self, self.tr("Send Query"), + self.tr("Enter the message to be sent:"), + minimumWidth=400) + if ok and message: + self.__processUserMessage("/QUERY {0} {1}".format(user, message)) + + def __sendUserNotice(self): + """ + Private slot to send a notice message to a specific user. + """ + from E5Gui import E5TextInputDialog + + user = self.usersList.selectedItems()[0].text() + ok, message = E5TextInputDialog.getText( + self, self.tr("Send Notice"), + self.tr("Enter the message to be sent:"), + minimumWidth=400) + if ok and message: + self.__processUserMessage("/NOTICE {0} {1}".format(user, message)) + + def __pingUser(self): + """ + Private slot to send a ping to a specific user. + """ + user = self.usersList.selectedItems()[0].text() + self.__processUserMessage("/PING {0}".format(user)) + + def __ignoreUser(self): + """ + Private slot to ignore a specific user. + """ + user = self.usersList.selectedItems()[0].text() + self.__processUserMessage("/IGNORE {0}".format(user)) + def __initUsersMenu(self): """ Private slot to initialize the users list context menu. @@ -1474,6 +1540,18 @@ self.__privateChatAct = self.__usersMenu.addAction( self.tr("Private Chat"), self.__openPrivateChat) self.__usersMenu.addSeparator() + self.__sendUserMessageAct = self.__usersMenu.addAction( + self.tr("Send Message"), self.__sendUserMessage) + self.__sendUserQueryAct = self.__usersMenu.addAction( + self.tr("Send Query"), self.__sendUserQuery) + self.__sendUserNoticeAct = self.__usersMenu.addAction( + self.tr("Send Notice"), self.__sendUserNotice) + self.__usersMenu.addSeparator() + self.__pingUserAct = self.__usersMenu.addAction( + self.tr("Send Ping"), self.__pingUser) + self.__ignoreUserAct = self.__usersMenu.addAction( + self.tr("Ignore User"), self.__ignoreUser) + self.__usersMenu.addSeparator() self.__usersListRefreshAct = self.__usersMenu.addAction( self.tr("Refresh"), self.__sendAutoWhoCommand)
--- a/Plugins/PluginTranslator.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/PluginTranslator.py Thu Nov 01 11:47:39 2018 +0100 @@ -106,6 +106,8 @@ "EnabledLanguages": ["en", "de", "fr", "cs", "es", "pt", "ru", "tr", "zh-CN", "zh-TW"], # service specific settings below + # DeepL + "DeeplKey": "", # Google "GoogleEnableDictionary": False, "GoogleV2Key": "",
--- a/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.py Thu Nov 01 11:47:39 2018 +0100 @@ -39,6 +39,10 @@ self.__plugin = plugin self.__enableLanguageWarning = True + self.deeplLabel.setText(self.tr( + """<p>A key is <b>required</b> to use this service.""" + """ <a href="{0}">Get a commercial API key.</a></p>""").format( + TranslatorEngines.getKeyUrl("deepl"))) self.googlev2Label.setText(self.tr( """<p>A key is <b>required</b> to use this service.""" """ <a href="{0}">Get a commercial API key.</a></p>""").format( @@ -76,6 +80,9 @@ self.languagesList.addItem(itm) self.languagesList.sortItems() + # DeepL settings + self.deeplKeyEdit.setText( + self.__plugin.getPreferences("DeeplKey")) # Google settings self.dictionaryCheckBox.setChecked( self.__plugin.getPreferences("GoogleEnableDictionary")) @@ -109,6 +116,9 @@ self.__plugin.setPreferences( "EnabledLanguages", enabledLanguages) + # DeepL settings + self.__plugin.setPreferences( + "DeeplKey", self.deeplKeyEdit.text()) # Google settings self.__plugin.setPreferences( "GoogleEnableDictionary", self.dictionaryCheckBox.isChecked())
--- a/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/UiExtensionPlugins/Translator/ConfigurationPage/TranslatorPage.ui Thu Nov 01 11:47:39 2018 +0100 @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>494</width> - <height>1068</height> + <width>500</width> + <height>1125</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> @@ -123,6 +123,42 @@ </widget> </item> <item> + <widget class="QGroupBox" name="groupBox_8"> + <property name="title"> + <string>DeepL Pro</string> + </property> + <layout class="QGridLayout" name="gridLayout_6"> + <item row="0" column="0"> + <widget class="QLabel" name="label_8"> + <property name="text"> + <string>Key:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="deeplKeyEdit"> + <property name="toolTip"> + <string>Enter your DeepL Pro key</string> + </property> + </widget> + </item> + <item row="1" column="0" colspan="2"> + <widget class="QLabel" name="deeplLabel"> + <property name="text"> + <string/> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <widget class="QGroupBox" name="groupBox_2"> <property name="title"> <string>Google V.1</string> @@ -352,6 +388,7 @@ <tabstop>languagesList</tabstop> <tabstop>setButton</tabstop> <tabstop>defaultButton</tabstop> + <tabstop>deeplKeyEdit</tabstop> <tabstop>dictionaryCheckBox</tabstop> <tabstop>googlev2KeyEdit</tabstop> <tabstop>ibmUrlEdit</tabstop>
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py Thu Nov 01 11:47:39 2018 +0100 @@ -14,10 +14,11 @@ pass import json -import re from PyQt5.QtCore import QUrl, QByteArray, QTimer +import Utilities + from .TranslationEngine import TranslationEngine @@ -26,8 +27,8 @@ Class implementing the translation engine for the DeepL translation service. """ - TranslatorUrl = "https://www.deepl.com/jsonrpc" - MaxTranslationTextLen = 5000 + TranslatorUrl = "https://api.deepl.com/v1/translate" + MaxTranslationTextLen = 30 * 1024 def __init__(self, plugin, parent=None): """ @@ -40,8 +41,6 @@ """ super(DeepLEngine, self).__init__(plugin, parent) - self.__splitPattern = re.compile(r"([^\.!\?;]+[\.!\?;]*)") - QTimer.singleShot(0, self.availableTranslationsLoaded.emit) def engineName(self): @@ -80,71 +79,37 @@ "Text to be translated exceeds the translation limit of {0}" " characters.").format(self.MaxTranslationTextLen), False - sentences = [s for s in self.__splitPattern.split(text) if len(s) > 0] - if originalLanguage in self.supportedLanguages(): - originalLanguageU = originalLanguage.upper() - else: - originalLanguageU = "auto" - payload = { - "jsonrpc": "2.0", - "method": "LMT_handle_jobs", - "id": 1, - "params": { - "jobs": [ - {"kind": "default", "raw_en_sentence": s} - for s in sentences - ], - "lang": { - "user_preferred_langs": [ - originalLanguage.upper(), - translationLanguage.upper(), - ], - "source_lang_user_selected": originalLanguageU, - "target_lang": translationLanguage.upper() - }, - "priority": 1, - } - } - request = QByteArray(json.dumps(payload).encode("utf-8")) - response, ok = requestObject.post(QUrl(self.TranslatorUrl), request, - "json") + apiKey = self.plugin.getPreferences("DeeplKey") + if not apiKey: + return self.tr("A valid DeepL Pro key is required."), False + + params = QByteArray( + "auth_key={0}&source_lang={1}&target_lang={2}&text=".format( + apiKey, originalLanguage.upper(), translationLanguage.upper()) + .encode("utf-8")) + encodedText = QByteArray(Utilities.html_encode(text).encode("utf-8"))\ + .toPercentEncoding() + request = params + encodedText + response, ok = requestObject.post(QUrl(self.TranslatorUrl), request) if ok: try: responseDict = json.loads(response) except ValueError: return self.tr("Invalid response received from DeepL"), False - if "error" in responseDict: - return self.tr("DeepL reported an error.\nMessage: {0}")\ - .format(responseDict["error"]["message"]), False - - if "result" not in responseDict: + if "translations" not in responseDict: return self.tr("DeepL call returned an unknown result"), False - if not responseDict["result"]["source_lang"] or \ - not responseDict["result"]["target_lang"]: - return self.tr( - "Unsupported language code given (source: {0}," - " target: {1}).").format( - originalLanguage, translationLanguage), False - - translations = responseDict["result"]["translations"] + translations = responseDict["translations"] if len(translations) == 0: return self.tr("<p>No translation found</p>"), True # show sentence by sentence separated by a line - translationStrings = [] - for translation in translations: - translationStrings.append( - "<br/>".join( - [ - s["postprocessed_sentence"] for s in sorted( - translation["beams"], - key=lambda b: -1 * b["score"]) - ] - ) - ) - result = "<p>" + "<hr/>".join(translationStrings) + "</p>" + result = ( + "<p>" + + "<hr/>".join([t["text"] for t in translations]) + + "</p>" + ) else: result = response
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/UiExtensionPlugins/Translator/TranslatorEngines/__init__.py Thu Nov 01 11:47:39 2018 +0100 @@ -23,11 +23,8 @@ @return names of supported engines (list of string) """ - # TODO: port deepl to use the commercial API -## return ["googlev1", "mymemory", "glosbe", "promt", "yandex", "googlev2", -## "microsoft", "deepl", "ibm_watson"] return ["googlev1", "mymemory", "glosbe", "promt", "yandex", "googlev2", - "microsoft", "ibm_watson"] + "microsoft", "deepl", "ibm_watson"] def engineDisplayName(name): @@ -51,8 +48,8 @@ return QCoreApplication.translate("TranslatorEngines", "Google V.2") elif name == "microsoft": return QCoreApplication.translate("TranslatorEngines", "Microsoft") -## elif name == "deepl": -## return QCoreApplication.translate("TranslatorEngines", "DeepL") + elif name == "deepl": + return QCoreApplication.translate("TranslatorEngines", "DeepL Pro") elif name == "ibm_watson": return QCoreApplication.translate("TranslatorEngines", "IBM Watson") else: @@ -91,9 +88,9 @@ elif name == "microsoft": from .MicrosoftEngine import MicrosoftEngine engine = MicrosoftEngine(plugin, parent) -## elif name == "deepl": -## from .DeepLEngine import DeepLEngine -## engine = DeepLEngine(plugin, parent) + elif name == "deepl": + from .DeepLEngine import DeepLEngine + engine = DeepLEngine(plugin, parent) elif name == "ibm_watson": from .IbmWatsonEngine import IbmWatsonEngine engine = IbmWatsonEngine(plugin, parent) @@ -126,7 +123,6 @@ @param name name of the online translation service (string) @return key request URL (string) """ - # TODO: get URL for deepl if name == "mymemory": return "http://mymemory.translated.net/doc/keygen.php" elif name == "yandex": @@ -137,5 +133,7 @@ return "https://portal.azure.com" elif name == "ibm_watson": return "https://www.ibm.com/watson/services/language-translator/" + elif name == "deepl": + return "https://www.deepl.com/pro-registration.html" else: return ""
--- a/Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/UiExtensionPlugins/Translator/TranslatorWidget.py Thu Nov 01 11:47:39 2018 +0100 @@ -88,6 +88,8 @@ """ Private slot to update the language combo boxes. """ + self.__ensureTranslationEngineReady() + supportedCodes = self.__translationEngine.supportedLanguages() enabledCodes = self.__plugin.getPreferences("EnabledLanguages")
--- a/Plugins/VcsPlugins/vcsGit/GitStatusMonitorThread.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/VcsPlugins/vcsGit/GitStatusMonitorThread.py Thu Nov 01 11:47:39 2018 +0100 @@ -130,6 +130,46 @@ return True, \ self.tr("Git status checked successfully") + def _getInfo(self): + """ + Protected method implementing the real info action. + + This method should be overridden and create a short info message to be + shown in the main window status bar right next to the status indicator. + + @return short info message + @rtype str + """ + args = self.vcs.initCommand("show") + args.append("--abbrev-commit") + args.append("--format=%h %D") + args.append("--no-patch") + + output = "" + process = QProcess() + process.setWorkingDirectory(self.projectDir) + process.start('git', args) + procStarted = process.waitForStarted(5000) + if procStarted: + finished = process.waitForFinished(30000) + if finished and process.exitCode() == 0: + output = str(process.readAllStandardOutput(), + Preferences.getSystem("IOEncoding"), + 'replace') + + if output: + commitId, refs = output.splitlines()[0].strip().split(None, 1) + ref = refs.split(",", 1)[0] + if "->" in ref: + branch = ref.split("->", 1)[1].strip() + else: + branch = self.tr("<detached>") + + return self.tr("{0} / {1}", "branch, commit").format( + branch, commitId) + else: + return "" + def _shutdown(self): """ Protected method performing shutdown actions.
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py Thu Nov 01 11:47:39 2018 +0100 @@ -59,14 +59,7 @@ """ self.shouldUpdate = False - if self.__client is None and not self.__useCommandLine: - from .HgClient import HgClient - client = HgClient(self.projectDir, "utf-8", self.vcs) - ok, err = client.startServer() - if ok: - self.__client = client - else: - self.__useCommandLine = True + self.__initClient() # step 1: get overall status args = self.vcs.initCommand("status") @@ -150,9 +143,76 @@ return True, \ self.tr("Mercurial status checked successfully") + def _getInfo(self): + """ + Protected method implementing the real info action. + + This method should be overridden and create a short info message to be + shown in the main window status bar right next to the status indicator. + + @return short info message + @rtype str + """ + self.__initClient() + + args = self.vcs.initCommand("identify") + args.append('--num') + args.append('--id') + args.append('--branch') + + output = "" + error = "" + if self.__client: + output, error = self.__client.runcommand(args) + else: + process = QProcess() + process.setWorkingDirectory(self.projectDir) + process.start('hg', args) + procStarted = process.waitForStarted(5000) + if procStarted: + finished = process.waitForFinished(300000) + if finished and process.exitCode() == 0: + output = str(process.readAllStandardOutput(), + self.vcs.getEncoding(), 'replace') + else: + process.kill() + process.waitForFinished() + error = str(process.readAllStandardError(), + self.vcs.getEncoding(), 'replace') + else: + process.kill() + process.waitForFinished() + error = self.tr("Could not start the Mercurial process.") + + if error: + # ignore errors + return "" + + globalRev, localRev, branch = output.splitlines()[0].split() + if globalRev.endswith("+"): + globalRev = globalRev[:-1] + if localRev.endswith("+"): + localRev = localRev[:-1] + + return self.tr("{0} / {1}:{2}", "branch, local id, global id").format( + branch, localRev, globalRev) + def _shutdown(self): """ Protected method performing shutdown actions. """ if self.__client: self.__client.stopServer() + + def __initClient(self): + """ + Private method to initialize the Mercurial client. + """ + if self.__client is None and not self.__useCommandLine: + from .HgClient import HgClient + client = HgClient(self.projectDir, "utf-8", self.vcs) + ok, err = client.startServer() + if ok: + self.__client = client + else: + self.__useCommandLine = True
--- a/Preferences/ConfigurationPages/DebuggerGeneralPage.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ConfigurationPages/DebuggerGeneralPage.py Thu Nov 01 11:47:39 2018 +0100 @@ -97,7 +97,7 @@ self.allowedHostsList.addItems( Preferences.getDebugger("AllowedHosts")) - self.remoteCheckBox.setChecked( + self.remoteDebuggerGroup.setChecked( Preferences.getDebugger("RemoteDbgEnabled")) self.hostLineEdit.setText( Preferences.getDebugger("RemoteHost")) @@ -123,11 +123,11 @@ Preferences.getDebugger("AutomaticReset")) self.debugAutoSaveScriptsCheckBox.setChecked( Preferences.getDebugger("Autosave")) - self.consoleDbgCheckBox.setChecked( + self.consoleDebuggerGroup.setChecked( Preferences.getDebugger("ConsoleDbgEnabled")) self.consoleDbgEdit.setText( Preferences.getDebugger("ConsoleDbgCommand")) - self.dbgPathTranslationCheckBox.setChecked( + self.dbgPathTranslationGroup.setChecked( Preferences.getDebugger("PathTranslation")) self.dbgTranslationRemoteEdit.setText( Preferences.getDebugger("PathTranslationRemote")) @@ -154,7 +154,7 @@ """ Preferences.setDebugger( "RemoteDbgEnabled", - self.remoteCheckBox.isChecked()) + self.remoteDebuggerGroup.isChecked()) Preferences.setDebugger( "RemoteHost", self.hostLineEdit.text()) @@ -203,13 +203,13 @@ self.debugAutoSaveScriptsCheckBox.isChecked()) Preferences.setDebugger( "ConsoleDbgEnabled", - self.consoleDbgCheckBox.isChecked()) + self.consoleDebuggerGroup.isChecked()) Preferences.setDebugger( "ConsoleDbgCommand", self.consoleDbgEdit.text()) Preferences.setDebugger( "PathTranslation", - self.dbgPathTranslationCheckBox.isChecked()) + self.dbgPathTranslationGroup.isChecked()) Preferences.setDebugger( "PathTranslationRemote", self.dbgTranslationRemoteEdit.text())
--- a/Preferences/ConfigurationPages/DebuggerGeneralPage.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ConfigurationPages/DebuggerGeneralPage.ui Thu Nov 01 11:47:39 2018 +0100 @@ -256,43 +256,19 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_2"> + <widget class="QGroupBox" name="remoteDebuggerGroup"> + <property name="toolTip"> + <string>Select, if the debugger should be run remotely</string> + </property> <property name="title"> <string>Remote Debugger</string> </property> + <property name="checkable"> + <bool>true</bool> + </property> <layout class="QGridLayout"> - <item row="2" column="0"> - <widget class="QLabel" name="execLabel"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Remote Execution:</string> - </property> - <property name="buddy"> - <cstring>execLineEdit</cstring> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="execLineEdit"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Enter the remote execution command.</string> - </property> - <property name="whatsThis"> - <string><b>Remote Execution</b> -<p>Enter the remote execution command (e.g. ssh). This command is used to log into the remote host and execute the remote debugger.</p></string> - </property> - </widget> - </item> - <item row="1" column="1"> + <item row="0" column="1"> <widget class="QLineEdit" name="hostLineEdit"> - <property name="enabled"> - <bool>false</bool> - </property> <property name="toolTip"> <string>Enter the hostname of the remote machine.</string> </property> @@ -302,11 +278,8 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="0" column="0"> <widget class="QLabel" name="hostLabel"> - <property name="enabled"> - <bool>false</bool> - </property> <property name="text"> <string>Remote Host:</string> </property> @@ -315,88 +288,86 @@ </property> </widget> </item> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="remoteCheckBox"> + <item row="1" column="0"> + <widget class="QLabel" name="execLabel"> + <property name="text"> + <string>Remote Execution:</string> + </property> + <property name="buddy"> + <cstring>execLineEdit</cstring> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="execLineEdit"> <property name="toolTip"> - <string>Enable remote debugging</string> + <string>Enter the remote execution command.</string> </property> <property name="whatsThis"> - <string>This enables the remote debugger. Please enter the hostname of the remote machine and the command for the remote execution (e.g. ssh) below.</string> + <string><b>Remote Execution</b> +<p>Enter the remote execution command (e.g. ssh). This command is used to log into the remote host and execute the remote debugger.</p></string> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QGroupBox" name="dbgPathTranslationGroup"> + <property name="toolTip"> + <string>Select, if path translation for remote debugging should be done</string> + </property> + <property name="title"> + <string>Perform Path Translation</string> + </property> + <property name="checkable"> + <bool>true</bool> </property> - <property name="text"> - <string>Remote Debugging Enabled</string> - </property> + <layout class="QGridLayout" name="_2"> + <item row="1" column="0"> + <widget class="QLabel" name="textLabel2_9"> + <property name="text"> + <string>Local Path:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="dbgTranslationLocalEdit"> + <property name="toolTip"> + <string>Enter the local path</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="dbgTranslationRemoteEdit"> + <property name="toolTip"> + <string>Enter the remote path</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="textLabel1_18"> + <property name="text"> + <string>Remote Path:</string> + </property> + </widget> + </item> + </layout> </widget> </item> </layout> </widget> </item> <item> - <widget class="QGroupBox" name="dbgPathTranslationGroup"> - <property name="title"> - <string>Path Translation</string> + <widget class="QGroupBox" name="consoleDebuggerGroup"> + <property name="toolTip"> + <string>Select, if the debugger should be executed in a console window</string> </property> - <layout class="QGridLayout" name="_2"> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="dbgPathTranslationCheckBox"> - <property name="toolTip"> - <string>Select to perform path translation</string> - </property> - <property name="text"> - <string>Perform Path Translation</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="textLabel2_9"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Local Path:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="dbgTranslationLocalEdit"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Enter the local path</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="dbgTranslationRemoteEdit"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="toolTip"> - <string>Enter the remote path</string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="textLabel1_18"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Remote Path:</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_6"> <property name="title"> <string>Console Debugger</string> </property> + <property name="checkable"> + <bool>true</bool> + </property> <layout class="QGridLayout" name="_4"> - <item row="1" column="1"> + <item row="0" column="1"> <widget class="QLineEdit" name="consoleDbgEdit"> <property name="toolTip"> <string>Enter the console command (e.g. xterm -e)</string> @@ -407,30 +378,20 @@ </property> </widget> </item> - <item row="1" column="0"> + <item row="0" column="0"> <widget class="QLabel" name="textLabel1_17"> <property name="text"> <string>Console Command:</string> </property> </widget> </item> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="consoleDbgCheckBox"> - <property name="toolTip"> - <string>Select to start the debugger in a console window (e.g. xterm)</string> - </property> - <property name="text"> - <string>Start debugger in console window</string> - </property> - </widget> - </item> </layout> </widget> </item> <item> <widget class="QGroupBox" name="groupBox_5"> <property name="title"> - <string>Environment for Debug Client</string> + <string>Environment Variables for Debug Client</string> </property> <layout class="QGridLayout" name="_3"> <item row="0" column="0" colspan="2"> @@ -443,14 +404,14 @@ <p>If this entry is checked, the environment of the debugger will be replaced by the entries of the environment variables field. If it is unchecked, the environment will be ammended by these settings.</p></string> </property> <property name="text"> - <string>Replace Environment</string> + <string>Replace Environment Variables</string> </property> </widget> </item> <item row="1" column="0"> <widget class="QLabel" name="textLabel1_16"> <property name="text"> - <string>Environment:</string> + <string>Environment Variables:</string> </property> </widget> </item> @@ -460,8 +421,8 @@ <string>Enter the environment variables to be set.</string> </property> <property name="whatsThis"> - <string><b>Environment</b> -<p>Enter the environment variables to be set for the debugger. The individual settings must be separate by whitespace and be given in the form 'var=value'.</p> + <string><b>Environment Variables</b> +<p>Enter the environment variables to be set for the debugger. The individual settings must be separated by whitespace and be given in the form 'var=value'.</p> <p>Example: var1=1 var2="hello world"</p></string> </property> </widget> @@ -709,13 +670,13 @@ <tabstop>passiveDbgCheckBox</tabstop> <tabstop>passiveDbgPortSpinBox</tabstop> <tabstop>passiveDbgBackendCombo</tabstop> - <tabstop>remoteCheckBox</tabstop> + <tabstop>remoteDebuggerGroup</tabstop> <tabstop>hostLineEdit</tabstop> <tabstop>execLineEdit</tabstop> - <tabstop>dbgPathTranslationCheckBox</tabstop> + <tabstop>dbgPathTranslationGroup</tabstop> <tabstop>dbgTranslationRemoteEdit</tabstop> <tabstop>dbgTranslationLocalEdit</tabstop> - <tabstop>consoleDbgCheckBox</tabstop> + <tabstop>consoleDebuggerGroup</tabstop> <tabstop>consoleDbgEdit</tabstop> <tabstop>debugEnvironReplaceCheckBox</tabstop> <tabstop>debugEnvironEdit</tabstop> @@ -764,70 +725,6 @@ </hints> </connection> <connection> - <sender>remoteCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>execLineEdit</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>294</x> - <y>568</y> - </hint> - <hint type="destinationlabel"> - <x>587</x> - <y>630</y> - </hint> - </hints> - </connection> - <connection> - <sender>remoteCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>execLabel</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>160</x> - <y>568</y> - </hint> - <hint type="destinationlabel"> - <x>128</x> - <y>630</y> - </hint> - </hints> - </connection> - <connection> - <sender>remoteCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>hostLabel</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>147</x> - <y>568</y> - </hint> - <hint type="destinationlabel"> - <x>86</x> - <y>599</y> - </hint> - </hints> - </connection> - <connection> - <sender>remoteCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>hostLineEdit</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>263</x> - <y>568</y> - </hint> - <hint type="destinationlabel"> - <x>587</x> - <y>599</y> - </hint> - </hints> - </connection> - <connection> <sender>selectedInterfaceButton</sender> <signal>toggled(bool)</signal> <receiver>interfacesCombo</receiver> @@ -875,69 +772,5 @@ </hint> </hints> </connection> - <connection> - <sender>dbgPathTranslationCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>dbgTranslationRemoteEdit</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>74</x> - <y>700</y> - </hint> - <hint type="destinationlabel"> - <x>241</x> - <y>731</y> - </hint> - </hints> - </connection> - <connection> - <sender>dbgPathTranslationCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>textLabel1_18</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>54</x> - <y>700</y> - </hint> - <hint type="destinationlabel"> - <x>56</x> - <y>731</y> - </hint> - </hints> - </connection> - <connection> - <sender>dbgPathTranslationCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>textLabel2_9</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>104</x> - <y>700</y> - </hint> - <hint type="destinationlabel"> - <x>89</x> - <y>762</y> - </hint> - </hints> - </connection> - <connection> - <sender>dbgPathTranslationCheckBox</sender> - <signal>toggled(bool)</signal> - <receiver>dbgTranslationLocalEdit</receiver> - <slot>setEnabled(bool)</slot> - <hints> - <hint type="sourcelabel"> - <x>273</x> - <y>700</y> - </hint> - <hint type="destinationlabel"> - <x>353</x> - <y>762</y> - </hint> - </hints> - </connection> </connections> </ui>
--- a/Preferences/ConfigurationPages/EditorDocViewerPage.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ConfigurationPages/EditorDocViewerPage.py Thu Nov 01 11:47:39 2018 +0100 @@ -29,20 +29,31 @@ self.setupUi(self) self.setObjectName("EditorExportersPage") - providers = e5App().getObject("DocuViewer").getProviders() - for provider, text in providers: - self.providerComboBox.addItem(text, provider) - - # set initial values - self.parenthesisCheckBox.setChecked( - Preferences.getDocuViewer("ShowInfoOnOpenParenthesis")) - - provider = Preferences.getDocuViewer("Provider") - self.viewerGroupBox.setChecked(provider != "disabled") + try: + providers = e5App().getObject("DocuViewer").getProviders() + for provider, text in providers: + self.providerComboBox.addItem(text, provider) + + self.infoLabel.clear() + + # set initial values + self.parenthesisCheckBox.setChecked( + Preferences.getDocuViewer("ShowInfoOnOpenParenthesis")) - index = self.providerComboBox.findData(provider) - if index >= 0: - self.providerComboBox.setCurrentIndex(index) + provider = Preferences.getDocuViewer("Provider") + self.viewerGroupBox.setChecked(provider != "disabled") + + index = self.providerComboBox.findData(provider) + if index >= 0: + self.providerComboBox.setCurrentIndex(index) + except KeyError: + # documentation viewer is globally disabled + self.viewerGroupBox.setChecked(False) + self.viewerGroupBox.setEnabled(False) + self.infoLabel.setText(self.tr( + "The Documentation Viewer is disabled globally. Re-enable it" + " on the Interface/Interface configuration page and restart" + " the eric.")) def save(self): """
--- a/Preferences/ConfigurationPages/EditorDocViewerPage.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ConfigurationPages/EditorDocViewerPage.ui Thu Nov 01 11:47:39 2018 +0100 @@ -84,6 +84,16 @@ </widget> </item> <item> + <widget class="QLabel" name="infoLabel"> + <property name="text"> + <string/> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum>
--- a/Preferences/ConfigurationPages/EmailPage.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ConfigurationPages/EmailPage.py Thu Nov 01 11:47:39 2018 +0100 @@ -36,11 +36,23 @@ self.setupUi(self) self.setObjectName("EmailPage") + self.__helpDialog = None + # set initial values try: import googleapiclient # __IGNORE_WARNING__ self.googleMailCheckBox.setChecked( Preferences.getUser("UseGoogleMailOAuth2")) + + from E5Network.E5GoogleMail import isCredentialsFileAvailable + if not isCredentialsFileAvailable(): + # credentials file is not installed + self.googleMailCheckBox.setChecked(False) + self.googleMailCheckBox.setEnabled(False) + self.googleMailInfoLabel.setText(self.tr( + "<p>The credentials file is not present. Has the Gmail API" + " been enabled?</p>")) + Preferences.setUser("UseGoogleMailOAuth2", False) except ImportError: # missing libraries, disable Google Mail self.googleMailCheckBox.setChecked(False) @@ -49,6 +61,7 @@ "<p>The Google Mail Client API is not installed." " Use <code>pip install --upgrade google-api-python-client" "</code> to install it.</p>")) + self.googleHelpButton.setEnabled(False) Preferences.setUser("UseGoogleMailOAuth2", False) self.mailServerEdit.setText(Preferences.getUser("MailServer")) @@ -259,6 +272,28 @@ self.tr("Login Test"), self.tr("""<p>The login test failed.<br>Reason: {0}</p>""") .format(errorStr)) + + @pyqtSlot() + def on_googleHelpButton_clicked(self): + """ + Private slot to show some help text "how to turn on the Gmail API". + """ + if self.__helpDialog is None: + try: + from E5Network.E5GoogleMail import GoogleMailHelp + helpStr = GoogleMailHelp() + except ImportError: + helpStr = self.tr( + "<p>The Google Mail Client API is not installed." + " Use <code>pip install --upgrade google-api-python-client" + "</code> to install it.</p>") + + from E5Gui.E5SimpleHelpDialog import E5SimpleHelpDialog + self.__helpDialog = E5SimpleHelpDialog( + title=self.tr("Gmail API Help"), + helpStr=helpStr, parent=self) + + self.__helpDialog.show() def create(dlg):
--- a/Preferences/ConfigurationPages/EmailPage.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ConfigurationPages/EmailPage.ui Thu Nov 01 11:47:39 2018 +0100 @@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>451</width> - <height>593</height> + <width>450</width> + <height>500</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> @@ -40,20 +40,47 @@ <item> <widget class="QCheckBox" name="googleMailCheckBox"> <property name="text"> - <string>Use Google Mail with OAuth2 authentication</string> + <string>Use Google Mail with OAuth2 authentication via Gmail API</string> </property> </widget> </item> <item> <widget class="QLabel" name="googleMailInfoLabel"> <property name="text"> - <string><b>Note:</b> Google Mail using SMTP should be configured below.</string> + <string><b>Note:</b> Google Mail using plain SMTP should be configured below.</string> </property> <property name="wordWrap"> <bool>true</bool> </property> </widget> </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QPushButton" name="googleHelpButton"> + <property name="toolTip"> + <string>Press to get some help for enabling the Google Mail API</string> + </property> + <property name="text"> + <string>Google Mail API Help</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> </layout> </widget> </item>
--- a/Preferences/ProgramsDialog.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ProgramsDialog.py Thu Nov 01 11:47:39 2018 +0100 @@ -220,16 +220,16 @@ exe = Preferences.getCorba("omniidl") if not exe: exe = "omniidl" - if Utilities.isWindowsPlatform(): - exe += ".exe" + if Utilities.isWindowsPlatform(): + exe += ".exe" self.__createProgramEntry( self.tr("CORBA IDL Compiler"), exe, '-V', 'omniidl', -1) # 5b. protobuf exe = Preferences.getProtobuf("protoc") if not exe: exe = "protoc" - if Utilities.isWindowsPlatform(): - exe += ".exe" + if Utilities.isWindowsPlatform(): + exe += ".exe" self.__createProgramEntry( self.tr("Protobuf Compiler"), exe, '--version', 'libprotoc', -1) # 5c. grpc
--- a/Preferences/ProgramsDialog.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/ProgramsDialog.ui Thu Nov 01 11:47:39 2018 +0100 @@ -11,7 +11,7 @@ </rect> </property> <property name="windowTitle"> - <string>External Programs</string> + <string>External Tools</string> </property> <layout class="QVBoxLayout"> <item>
--- a/Preferences/__init__.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Preferences/__init__.py Thu Nov 01 11:47:39 2018 +0100 @@ -2970,7 +2970,7 @@ download["Downloaded"] = prefClass.settings.value("Downloaded") if download["Downloaded"] is None: download["Downloaded"] = QDateTime() - elif isinstance(download["Downloaded"], str): + elif isinstance(download["Downloaded"], basestring): download["Downloaded"] = QDateTime.fromString( download["Downloaded"], "yyyy-MM-dd hh:mm:ss") downloads.append(download)
--- a/Project/CreateDialogCodeDialog.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Project/CreateDialogCodeDialog.py Thu Nov 01 11:47:39 2018 +0100 @@ -8,12 +8,17 @@ """ from __future__ import unicode_literals +try: + str = unicode # __IGNORE_EXCEPTION__ +except NameError: + pass import os +import json import xml.etree.ElementTree from PyQt5.QtCore import QMetaObject, QByteArray, QRegExp, Qt, pyqtSlot, \ - QMetaMethod, QSortFilterProxyModel + QMetaMethod, QSortFilterProxyModel, QProcess from PyQt5.QtGui import QStandardItemModel, QBrush, QStandardItem from PyQt5.QtWidgets import QWidget, QDialog, QDialogButtonBox, QAction from PyQt5 import uic @@ -142,46 +147,130 @@ """ return self.__initError + def __objectNameExternal(self): + """ + Private method to get the object name of a form via an external + interpreter. + + @return object name + @rtype str + """ + interpreter = self.project.getDebugProperty("INTERPRETER") + objectName = "" + + loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi.py") + args = [ + loadUi, + "object_name", + self.formFile, + self.project.getProjectPath(), + ] + + proc = QProcess() + proc.start(interpreter, args) + finished = proc.waitForFinished(30000) + if finished: + text = proc.readAllStandardOutput() + if proc.exitCode() == 0: + objectName = str(text, "utf-8", "replace").strip() + else: + errorText = str(text, "utf-8", "replace") + E5MessageBox.critical( + self, + self.tr("uic error"), + self.tr( + """<p>There was an error loading the form <b>{0}</b>""" + """.</p><p>{1}</p>""").format( + self.formFile, errorText)) + + return objectName + def __objectName(self): """ - Private method to get the object name of the dialog. + Private method to get the object name of a form. - @return object name (string) + @return object name + @rtype str + """ + if self.project.getDebugProperty("INTERPRETER"): + return self.__objectNameExternal() + else: + try: + dlg = uic.loadUi( + self.formFile, package=self.project.getProjectPath()) + return dlg.objectName() + except (AttributeError, ImportError, + xml.etree.ElementTree.ParseError) as err: + E5MessageBox.critical( + self, + self.tr("uic error"), + self.tr( + """<p>There was an error loading the form <b>{0}</b>""" + """.</p><p>{1}</p>""").format(self.formFile, str(err))) + return "" + + def __classNameExternal(self): + """ + Private method to get the class name of a form via an external + interpreter. + + @return class name + @rtype str """ - try: - dlg = uic.loadUi( - self.formFile, package=self.project.getProjectPath()) - return dlg.objectName() - except (AttributeError, ImportError, - xml.etree.ElementTree.ParseError) as err: - E5MessageBox.critical( - self, - self.tr("uic error"), - self.tr( - """<p>There was an error loading the form <b>{0}</b>""" - """.</p><p>{1}</p>""").format(self.formFile, str(err))) - return "" + interpreter = self.project.getDebugProperty("INTERPRETER") + className = "" + + loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi.py") + args = [ + loadUi, + "class_name", + self.formFile, + self.project.getProjectPath(), + ] + proc = QProcess() + proc.start(interpreter, args) + finished = proc.waitForFinished(30000) + if finished: + text = proc.readAllStandardOutput() + if proc.exitCode() == 0: + className = str(text, "utf-8", "replace").strip() + else: + errorText = str(text, "utf-8", "replace") + E5MessageBox.critical( + self, + self.tr("uic error"), + self.tr( + """<p>There was an error loading the form <b>{0}</b>""" + """.</p><p>{1}</p>""").format( + self.formFile, errorText)) + + return className + def __className(self): """ - Private method to get the class name of the dialog. + Private method to get the class name of a form. - @return class name (sting) + @return class name + @rtype str """ - try: - dlg = uic.loadUi( - self.formFile, package=self.project.getProjectPath()) - return dlg.metaObject().className() - except (AttributeError, ImportError, - xml.etree.ElementTree.ParseError) as err: - E5MessageBox.critical( - self, - self.tr("uic error"), - self.tr( - """<p>There was an error loading the form <b>{0}</b>""" - """.</p><p>{1}</p>""").format(self.formFile, str(err))) - return "" - + if self.project.getDebugProperty("INTERPRETER"): + return self.__objectNameExternal() + else: + try: + dlg = uic.loadUi( + self.formFile, package=self.project.getProjectPath()) + return dlg.metaObject().className() + except (AttributeError, ImportError, + xml.etree.ElementTree.ParseError) as err: + E5MessageBox.critical( + self, + self.tr("uic error"), + self.tr( + """<p>There was an error loading the form <b>{0}</b>""" + """.</p><p>{1}</p>""").format(self.formFile, str(err))) + return "" + def __signatures(self): """ Private slot to get the signatures. @@ -216,148 +305,241 @@ """ mapped = bytes(type_).decode() + # I. always check for * + mapped = mapped.replace("*", "") + if self.project.getProjectLanguage() != "Python2" or \ self.project.getProjectType in ("PySide", "PySide2"): # 1. check for const mapped = mapped.replace("const ", "") - # 2. check for * - mapped = mapped.replace("*", "") - - # 3. replace QString and QStringList + # 2. replace QString and QStringList mapped = mapped.replace("QStringList", "list")\ .replace("QString", "str") - # 4. replace double by float + # 3. replace double by float mapped = mapped.replace("double", "float") return mapped + + def __updateSlotsModelExternal(self): + """ + Private slot to update the slots tree display getting the data via an + external interpreter. + """ + interpreter = self.project.getDebugProperty("INTERPRETER") + objectsList = [] + loadUi = os.path.join(os.path.dirname(__file__), "UicLoadUi.py") + args = [ + loadUi, + "signatures", + self.formFile, + self.project.getProjectPath(), + ] + + proc = QProcess() + proc.start(interpreter, args) + finished = proc.waitForFinished(30000) + if not finished: + return + + text = proc.readAllStandardOutput() + if proc.exitCode() != 0: + errorText = str(text, "utf-8", "replace") + E5MessageBox.critical( + self, + self.tr("uic error"), + self.tr( + """<p>There was an error loading the form <b>{0}</b>""" + """.</p><p>{1}</p>""").format( + self.formFile, errorText)) + else: + objectsListStr = str(text, "utf-8", "replace").strip() + objectsList = json.loads(objectsListStr) + + signatureList = self.__signatures() + + self.slotsModel.clear() + self.slotsModel.setHorizontalHeaderLabels([""]) + for objectDict in objectsList: + itm = QStandardItem("{0} ({1})".format( + objectDict["name"], + objectDict["class_name"])) + self.slotsModel.appendRow(itm) + for methodDict in objectDict["methods"]: + itm2 = QStandardItem(methodDict["signature"]) + itm.appendRow(itm2) + + if self.__module is not None: + if methodDict["methods"][0] in signatureList or \ + methodDict["methods"][1] in signatureList: + itm2.setFlags( + Qt.ItemFlags(Qt.ItemIsEnabled)) + itm2.setCheckState(Qt.Checked) + itm2.setForeground(QBrush(Qt.blue)) + continue + + itm2.setData(methodDict["pyqt_signature"], + pyqtSignatureRole) + itm2.setData(methodDict["python_signature"], + pythonSignatureRole) + itm2.setData(methodDict["return_type"], + returnTypeRole) + itm2.setData(methodDict["parameter_types"], + parameterTypesListRole) + itm2.setData(methodDict["parameter_names"], + parameterNamesListRole) + + itm2.setFlags(Qt.ItemFlags( + Qt.ItemIsUserCheckable | + Qt.ItemIsEnabled | + Qt.ItemIsSelectable) + ) + itm2.setCheckState(Qt.Unchecked) + + self.slotsView.sortByColumn(0, Qt.AscendingOrder) + def __updateSlotsModel(self): """ Private slot to update the slots tree display. """ self.filterEdit.clear() - try: - dlg = uic.loadUi( - self.formFile, package=self.project.getProjectPath()) - objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction) - - signatureList = self.__signatures() - - self.slotsModel.clear() - self.slotsModel.setHorizontalHeaderLabels([""]) - for obj in objects: - name = obj.objectName() - if not name or name.startswith("qt_"): - # ignore un-named or internal objects - continue + if self.project.getDebugProperty("INTERPRETER"): + self.__updateSlotsModelExternal() + else: + try: + dlg = uic.loadUi( + self.formFile, package=self.project.getProjectPath()) + objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction) + + signatureList = self.__signatures() - metaObject = obj.metaObject() - className = metaObject.className() - itm = QStandardItem("{0} ({1})".format(name, className)) - self.slotsModel.appendRow(itm) - for index in range(metaObject.methodCount()): - metaMethod = metaObject.method(index) - if metaMethod.methodType() == QMetaMethod.Signal: - if qVersionTuple() >= (5, 0, 0): - itm2 = QStandardItem("on_{0}_{1}".format( - name, - bytes(metaMethod.methodSignature()).decode())) - else: - itm2 = QStandardItem("on_{0}_{1}".format( - name, metaMethod.signature())) - itm.appendRow(itm2) - if self.__module is not None: + self.slotsModel.clear() + self.slotsModel.setHorizontalHeaderLabels([""]) + for obj in objects: + name = obj.objectName() + if not name or name.startswith("qt_"): + # ignore un-named or internal objects + continue + + metaObject = obj.metaObject() + className = metaObject.className() + itm = QStandardItem("{0} ({1})".format(name, className)) + self.slotsModel.appendRow(itm) + for index in range(metaObject.methodCount()): + metaMethod = metaObject.method(index) + if metaMethod.methodType() == QMetaMethod.Signal: if qVersionTuple() >= (5, 0, 0): - method = "on_{0}_{1}".format( + itm2 = QStandardItem("on_{0}_{1}".format( name, bytes(metaMethod.methodSignature()) - .decode().split("(")[0]) + .decode() + )) else: - method = "on_{0}_{1}".format( - name, metaMethod.signature().split("(")[0]) - method2 = "{0}({1})".format( - method, ", ".join( - [self.__mapType(t) - for t in metaMethod.parameterTypes()])) - - if method2 in signatureList or \ - method in signatureList: - itm2.setFlags(Qt.ItemFlags(Qt.ItemIsEnabled)) - itm2.setCheckState(Qt.Checked) - itm2.setForeground(QBrush(Qt.blue)) - continue - - returnType = self.__mapType( - metaMethod.typeName().encode()) - if returnType == 'void': - returnType = "" - parameterTypesList = [ - self.__mapType(t) - for t in metaMethod.parameterTypes()] - pyqtSignature = ", ".join(parameterTypesList) - - parameterNames = metaMethod.parameterNames() - if parameterNames: - for index in range(len(parameterNames)): - if not parameterNames[index]: - parameterNames[index] = \ - QByteArray("p{0:d}".format(index) - .encode("utf-8")) - parameterNamesList = [bytes(n).decode() - for n in parameterNames] - methNamesSig = ", ".join(parameterNamesList) - - if methNamesSig: - if qVersionTuple() >= (5, 0, 0): - pythonSignature = \ - "on_{0}_{1}(self, {2})".format( + itm2 = QStandardItem("on_{0}_{1}".format( + name, metaMethod.signature() + )) + itm.appendRow(itm2) + if self.__module is not None: + if qVersionTuple() >= (5, 0, 0): + method = "on_{0}_{1}".format( name, bytes(metaMethod.methodSignature()) - .decode().split("(")[0], - methNamesSig) - else: - pythonSignature = \ - "on_{0}_{1}(self, {2})".format( + .decode().split("(")[0]) + else: + method = "on_{0}_{1}".format( name, - metaMethod.signature().split("(")[0], - methNamesSig) - else: - if qVersionTuple() >= (5, 0, 0): - pythonSignature = "on_{0}_{1}(self)".format( - name, - bytes(metaMethod.methodSignature()) - .decode().split("(")[0]) + metaMethod.signature().split("(")[0]) + method2 = "{0}({1})".format( + method, + ", ".join([ + self.__mapType(t) + for t in metaMethod.parameterTypes() + ]) + ) + + if method2 in signatureList or \ + method in signatureList: + itm2.setFlags( + Qt.ItemFlags(Qt.ItemIsEnabled)) + itm2.setCheckState(Qt.Checked) + itm2.setForeground(QBrush(Qt.blue)) + continue + + returnType = self.__mapType( + metaMethod.typeName().encode()) + if returnType == 'void': + returnType = "" + parameterTypesList = [ + self.__mapType(t) + for t in metaMethod.parameterTypes()] + pyqtSignature = ", ".join(parameterTypesList) + + parameterNames = metaMethod.parameterNames() + if parameterNames: + for index in range(len(parameterNames)): + if not parameterNames[index]: + parameterNames[index] = \ + QByteArray("p{0:d}".format(index) + .encode("utf-8")) + parameterNamesList = [bytes(n).decode() + for n in parameterNames] + methNamesSig = ", ".join(parameterNamesList) + + if methNamesSig: + if qVersionTuple() >= (5, 0, 0): + pythonSignature = \ + "on_{0}_{1}(self, {2})".format( + name, + bytes(metaMethod.methodSignature()) + .decode().split("(")[0], + methNamesSig) + else: + pythonSignature = \ + "on_{0}_{1}(self, {2})".format( + name, + metaMethod.signature() + .split("(")[0], + methNamesSig) else: - pythonSignature = "on_{0}_{1}(self)".format( - name, - metaMethod.signature().split("(")[0]) - itm2.setData(pyqtSignature, pyqtSignatureRole) - itm2.setData(pythonSignature, pythonSignatureRole) - itm2.setData(returnType, returnTypeRole) - itm2.setData(parameterTypesList, - parameterTypesListRole) - itm2.setData(parameterNamesList, - parameterNamesListRole) - - itm2.setFlags(Qt.ItemFlags( - Qt.ItemIsUserCheckable | - Qt.ItemIsEnabled | - Qt.ItemIsSelectable) - ) - itm2.setCheckState(Qt.Unchecked) - - self.slotsView.sortByColumn(0, Qt.AscendingOrder) - except (AttributeError, ImportError, - xml.etree.ElementTree.ParseError) as err: - E5MessageBox.critical( - self, - self.tr("uic error"), - self.tr( - """<p>There was an error loading the form <b>{0}</b>""" - """.</p><p>{1}</p>""").format(self.formFile, str(err))) + if qVersionTuple() >= (5, 0, 0): + pythonSignature = "on_{0}_{1}(self)"\ + .format( + name, + bytes(metaMethod.methodSignature()) + .decode().split("(")[0]) + else: + pythonSignature = "on_{0}_{1}(self)"\ + .format( + name, + metaMethod.signature().split( + "(")[0]) + itm2.setData(pyqtSignature, pyqtSignatureRole) + itm2.setData(pythonSignature, pythonSignatureRole) + itm2.setData(returnType, returnTypeRole) + itm2.setData(parameterTypesList, + parameterTypesListRole) + itm2.setData(parameterNamesList, + parameterNamesListRole) + + itm2.setFlags(Qt.ItemFlags( + Qt.ItemIsUserCheckable | + Qt.ItemIsEnabled | + Qt.ItemIsSelectable) + ) + itm2.setCheckState(Qt.Unchecked) + + self.slotsView.sortByColumn(0, Qt.AscendingOrder) + except (AttributeError, ImportError, + xml.etree.ElementTree.ParseError) as err: + E5MessageBox.critical( + self, + self.tr("uic error"), + self.tr( + """<p>There was an error loading the form <b>{0}</b>""" + """.</p><p>{1}</p>""").format(self.formFile, str(err))) def __generateCode(self): """
--- a/Project/DebuggerPropertiesDialog.ui Sat Oct 06 14:48:45 2018 +0200 +++ b/Project/DebuggerPropertiesDialog.ui Thu Nov 01 11:47:39 2018 +0100 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>592</width> - <height>654</height> + <height>657</height> </rect> </property> <property name="windowTitle"> @@ -66,44 +66,6 @@ </widget> </item> <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="title"> - <string>Environment for Debug Client</string> - </property> - <layout class="QGridLayout" name="_6"> - <item row="0" column="0" colspan="2"> - <widget class="QCheckBox" name="debugEnvironmentOverrideCheckBox"> - <property name="toolTip"> - <string>Select, if the environment of the debug client should be replaced</string> - </property> - <property name="text"> - <string>Replace Environment</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="debugEnvironmentEdit"> - <property name="toolTip"> - <string>Enter the environment variables to be set.</string> - </property> - <property name="whatsThis"> - <string><b>Environment</b> -<p>Enter the environment variables to be set for the debugger. The individual settings must be separate by whitespace and be given in the form 'var=value'.</p> -<p>Example: var1=1 var2="hello world"</p></string> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="textLabel1_16"> - <property name="text"> - <string>Environment:</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> <widget class="QGroupBox" name="remoteDebuggerGroup"> <property name="toolTip"> <string>Select, if the debugger should be run remotely</string> @@ -231,6 +193,44 @@ </widget> </item> <item> + <widget class="QGroupBox" name="groupBox_3"> + <property name="title"> + <string>Environment Variables for Debug Client</string> + </property> + <layout class="QGridLayout" name="_6"> + <item row="0" column="0" colspan="2"> + <widget class="QCheckBox" name="debugEnvironmentOverrideCheckBox"> + <property name="toolTip"> + <string>Select, if the environment of the debug client should be replaced</string> + </property> + <property name="text"> + <string>Replace Environment Variables</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="debugEnvironmentEdit"> + <property name="toolTip"> + <string>Enter the environment variables to be set.</string> + </property> + <property name="whatsThis"> + <string><b>Environment Variables</b> +<p>Enter the environment variables to be set for the debugger. The individual settings must be separated by whitespace and be given in the form 'var=value'.</p> +<p>Example: var1=1 var2="hello world"</p></string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="textLabel1_16"> + <property name="text"> + <string>Environment Variables:</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> <widget class="QCheckBox" name="redirectCheckBox"> <property name="toolTip"> <string>Select to redirect stdin, stdout and stderr of the program being debugged to the eric6 IDE</string> @@ -275,8 +275,6 @@ <tabstop>debugClientPicker</tabstop> <tabstop>debugClientClearHistoryButton</tabstop> <tabstop>venvComboBox</tabstop> - <tabstop>debugEnvironmentOverrideCheckBox</tabstop> - <tabstop>debugEnvironmentEdit</tabstop> <tabstop>remoteDebuggerGroup</tabstop> <tabstop>remoteHostEdit</tabstop> <tabstop>remoteCommandEdit</tabstop> @@ -285,6 +283,8 @@ <tabstop>translationLocalEdit</tabstop> <tabstop>consoleDebuggerGroup</tabstop> <tabstop>consoleCommandEdit</tabstop> + <tabstop>debugEnvironmentOverrideCheckBox</tabstop> + <tabstop>debugEnvironmentEdit</tabstop> <tabstop>redirectCheckBox</tabstop> <tabstop>noEncodingCheckBox</tabstop> </tabstops>
--- a/Project/Project.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Project/Project.py Thu Nov 01 11:47:39 2018 +0100 @@ -95,6 +95,8 @@ repopulated @signal vcsStatusMonitorStatus(str, str) emitted to signal the status of the monitoring thread (ok, nok, op, off) and a status message + @signal vcsStatusMonitorInfo(str) emitted to signal some info of the + monitoring thread @signal reinitVCS() emitted after the VCS has been reinitialized @signal showMenu(str, QMenu) emitted when a menu is about to be shown. The name of the menu and a reference to the menu are given. @@ -139,6 +141,7 @@ prepareRepopulateItem = pyqtSignal(str) completeRepopulateItem = pyqtSignal(str) vcsStatusMonitorStatus = pyqtSignal(str, str) + vcsStatusMonitorInfo = pyqtSignal(str) reinitVCS = pyqtSignal() showMenu = pyqtSignal(str, QMenu) lexerAssociationsChanged = pyqtSignal() @@ -1171,6 +1174,7 @@ reader = DebuggerPropertiesReader(f, self) reader.readXML(quiet=quiet) f.close() + self.debugPropertiesLoaded = True else: if not quiet: E5MessageBox.critical( @@ -2764,6 +2768,8 @@ self.__model.changeVCSStates) self.vcs.vcsStatusMonitorStatus.connect( self.__statusMonitorStatus) + self.vcs.vcsStatusMonitorInfo.connect( + self.vcsStatusMonitorInfo) self.vcs.vcsStatusChanged.connect(self.__vcsStatusChanged) self.reinitVCS.emit() @@ -2992,6 +2998,8 @@ self.__model.changeVCSStates) self.vcs.vcsStatusMonitorStatus.connect( self.__statusMonitorStatus) + self.vcs.vcsStatusMonitorInfo.connect( + self.vcsStatusMonitorInfo) self.vcs.vcsStatusChanged.connect( self.__vcsStatusChanged) else: @@ -4316,9 +4324,6 @@ menu.addAction(self.saveAct) menu.addAction(self.saveasAct) menu.addSeparator() - self.menuDebuggerAct = menu.addMenu(self.debuggerMenu) - self.menuSessionAct = menu.addMenu(self.sessionMenu) - menu.addSeparator() menu.addActions(self.actGrp2.actions()) menu.addSeparator() self.menuMakeAct = menu.addMenu(self.makeMenu) @@ -4339,6 +4344,9 @@ menu.addAction(self.userPropsAct) menu.addAction(self.filetypesAct) menu.addAction(self.lexersAct) + menu.addSeparator() + self.menuDebuggerAct = menu.addMenu(self.debuggerMenu) + self.menuSessionAct = menu.addMenu(self.sessionMenu) self.menuCheckAct.setEnabled(False) self.menuShowAct.setEnabled(False) @@ -4776,8 +4784,17 @@ if self.vcsMenu is not None: self.vcsProjectHelper.initMenu(self.vcsMenu) self.vcsMenu.setEnabled(self.vcsSoftwareAvailable()) + return vcs - + + def resetVCS(self): + """ + Public method to reset the VCS. + """ + self.pdata["VCS"] = 'None' + self.vcs = self.initVCS() + e5App().getObject("PluginManager").deactivateVcsPlugins() + def __showContextMenuVCS(self): """ Private slot called before the vcs menu is shown.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Project/UicLoadUi.py Thu Nov 01 11:47:39 2018 +0100 @@ -0,0 +1,251 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module to get sys.path of an external interpreter. +""" + +from __future__ import print_function +try: + bytes = unicode # __IGNORE_EXCEPTION__ +except NameError: + pass + +import sys +import json +import xml.etree.ElementTree + +try: + from PyQt5.QtCore import qVersion, QMetaMethod, QByteArray + from PyQt5.QtWidgets import QAction, QWidget, QApplication + from PyQt5 import uic + + pyqtType = 5 +except ImportError: + try: + # try a potential PyQt4 installation + from PyQt4.QtCore import qVersion, QMetaMethod, QByteArray + from PyQt4.QtGui import QAction, QWidget, QApplication + from PyQt4 import uic + + pyqtType = 4 + except ImportError: + print("Neither PyQt5 nor PyQt4 found.") + sys.exit(1) + + +def objectName(formFile, projectPath): + """ + Function to get the object name of a form. + + @param formFile file name of the form + @type str + @param projectPath directory name of the project + @type str + """ + app = QApplication([]) # __IGNORE_WARNING__ + try: + dlg = uic.loadUi(formFile, package=projectPath) + print(dlg.objectName()) + sys.exit(0) + except (AttributeError, ImportError, + xml.etree.ElementTree.ParseError) as err: + print(str(err)) + sys.exit(1) + + +def className(formFile, projectPath): + """ + Function to get the class name of a form. + + @param formFile file name of the form + @type str + @param projectPath directory name of the project + @type str + """ + app = QApplication([]) # __IGNORE_WARNING__ + try: + dlg = uic.loadUi(formFile, package=projectPath) + print(dlg.metaObject().className()) + sys.exit(0) + except (AttributeError, ImportError, + xml.etree.ElementTree.ParseError) as err: + print(str(err)) + sys.exit(1) + + +def __mapType(type_): + """ + Private function to map a type as reported by Qt's meta object to the + correct Python type. + + @param type_ type as reported by Qt + @type QByteArray or bytes + @return mapped Python type + @rtype str + """ + mapped = bytes(type_).decode() + + # I. always check for * + mapped = mapped.replace("*", "") + + if pyqtType != 4: + # 1. check for const + mapped = mapped.replace("const ", "") + + # 2. replace QString and QStringList + mapped = mapped.replace("QStringList", "list")\ + .replace("QString", "str") + + # 3. replace double by float + mapped = mapped.replace("double", "float") + + return mapped + + +def signatures(formFile, projectPath): + """ + Function to get the signatures of form elements. + + @param formFile file name of the form + @type str + @param projectPath directory name of the project + @type str + """ + objectsList = [] + + app = QApplication([]) # __IGNORE_WARNING__ + try: + dlg = uic.loadUi(formFile, package=projectPath) + objects = dlg.findChildren(QWidget) + dlg.findChildren(QAction) + for obj in objects: + name = obj.objectName() + if not name or name.startswith("qt_"): + # ignore un-named or internal objects + continue + + metaObject = obj.metaObject() + objectDict = { + "name": name, + "class_name": metaObject.className(), + "methods": [], + } + + for index in range(metaObject.methodCount()): + metaMethod = metaObject.method(index) + if metaMethod.methodType() == QMetaMethod.Signal: + signatureDict = { + "methods": [] + } + if qVersion().startswith("5."): + signatureDict["signature"] = "on_{0}_{1}".format( + name, + bytes(metaMethod.methodSignature()).decode() + ) + else: + signatureDict["signature"] = "on_{0}_{1}".format( + name, + metaMethod.signature() + ) + + if qVersion().startswith("5."): + signatureDict["methods"].append("on_{0}_{1}".format( + name, + bytes(metaMethod.methodSignature()) + .decode().split("(")[0] + )) + else: + signatureDict["methods"].append("on_{0}_{1}".format( + name, + metaMethod.signature().split("(")[0] + )) + signatureDict["methods"].append("{0}({1})".format( + signatureDict["methods"][-1], + ", ".join([ + __mapType(t) + for t in metaMethod.parameterTypes() + ]) + )) + + returnType = __mapType( + metaMethod.typeName().encode()) + if returnType == 'void': + returnType = "" + signatureDict["return_type"] = returnType + parameterTypesList = [ + __mapType(t) + for t in metaMethod.parameterTypes() + ] + signatureDict["parameter_types"] = parameterTypesList + pyqtSignature = ", ".join(parameterTypesList) + signatureDict["pyqt_signature"] = pyqtSignature + + parameterNames = metaMethod.parameterNames() + if parameterNames: + for index in range(len(parameterNames)): + if not parameterNames[index]: + parameterNames[index] = \ + QByteArray("p{0:d}".format(index) + .encode("utf-8")) + parameterNamesList = [bytes(n).decode() + for n in parameterNames] + signatureDict["parameter_names"] = parameterNamesList + methNamesSig = ", ".join(parameterNamesList) + + if methNamesSig: + if qVersion().startswith("5."): + pythonSignature = \ + "on_{0}_{1}(self, {2})".format( + name, + bytes(metaMethod.methodSignature()) + .decode().split("(")[0], + methNamesSig) + else: + pythonSignature = \ + "on_{0}_{1}(self, {2})".format( + name, + metaMethod.signature().split("(")[0], + methNamesSig) + else: + if qVersion().startswith("5."): + pythonSignature = "on_{0}_{1}(self)".format( + name, + bytes(metaMethod.methodSignature()) + .decode().split("(")[0]) + else: + pythonSignature = "on_{0}_{1}(self)".format( + name, + metaMethod.signature().split("(")[0]) + signatureDict["python_signature"] = pythonSignature + + objectDict["methods"].append(signatureDict) + + objectsList.append(objectDict) + + print(json.dumps(objectsList)) + sys.exit(0) + except (AttributeError, ImportError, + xml.etree.ElementTree.ParseError) as err: + print(str(err)) + sys.exit(1) + + +if __name__ == "__main__": + if len(sys.argv) != 4: + print("Wrong number of arguments.") + sys.exit(1) + + if sys.argv[1] == "object_name": + objectName(sys.argv[2], sys.argv[3]) + elif sys.argv[1] == "class_name": + className(sys.argv[2], sys.argv[3]) + elif sys.argv[1] == "signatures": + signatures(sys.argv[2], sys.argv[3]) + else: + print("Unknow operation given.") + sys.exit(1) + +# +# eflag: noqa = M701, M801
--- a/UI/EmailDialog.py Sat Oct 06 14:48:45 2018 +0200 +++ b/UI/EmailDialog.py Thu Nov 01 11:47:39 2018 +0100 @@ -15,7 +15,7 @@ import socket from PyQt5.QtCore import Qt, pyqtSlot -from PyQt5.QtGui import QCursor +from PyQt5.QtGui import QCursor, QTextOption from PyQt5.QtWidgets import QHeaderView, QLineEdit, QDialog, QInputDialog, \ QApplication, QDialogButtonBox, QTreeWidgetItem @@ -77,6 +77,8 @@ self.setupUi(self) self.setWindowFlags(Qt.Window) + self.message.setWordWrapMode(QTextOption.WrapAtWordBoundaryOrAnywhere) + self.__mode = mode if self.__mode == "feature": self.setWindowTitle(self.tr("Send feature request"))
--- a/UI/UserInterface.py Sat Oct 06 14:48:45 2018 +0200 +++ b/UI/UserInterface.py Thu Nov 01 11:47:39 2018 +0100 @@ -222,9 +222,12 @@ self.__startup = True self.__proxyFactory = E5NetworkProxyFactory() - QNetworkProxyFactory.setApplicationProxyFactory(self.__proxyFactory) - QNetworkProxyFactory.setUseSystemConfiguration( - Preferences.getUI("UseSystemProxy")) + if Preferences.getUI("UseSystemProxy"): + QNetworkProxyFactory.setUseSystemConfiguration(True) + else: + QNetworkProxyFactory.setApplicationProxyFactory( + self.__proxyFactory) + QNetworkProxyFactory.setUseSystemConfiguration(False) self.capProject = "" self.capEditor = "" @@ -3178,8 +3181,9 @@ self.sbLine, self.sbPos, self.sbWritable, self.sbEncoding, self.sbLanguage, self.sbEol, self.sbZoom) - from VCS.StatusMonitorLed import StatusMonitorLed - self.sbVcsMonitorLed = StatusMonitorLed(self.project, self.__statusBar) + from VCS.StatusMonitorLed import StatusMonitorLedWidget + self.sbVcsMonitorLed = StatusMonitorLedWidget( + self.project, self.__statusBar) self.__statusBar.addPermanentWidget(self.sbVcsMonitorLed) self.networkIcon = E5NetworkIcon(self.__statusBar) @@ -5819,8 +5823,12 @@ self.bottomSidebar.setDelay(delay) self.rightSidebar.setDelay(delay) - QNetworkProxyFactory.setUseSystemConfiguration( - Preferences.getUI("UseSystemProxy")) + if Preferences.getUI("UseSystemProxy"): + QNetworkProxyFactory.setUseSystemConfiguration(True) + else: + QNetworkProxyFactory.setApplicationProxyFactory( + self.__proxyFactory) + QNetworkProxyFactory.setUseSystemConfiguration(False) from HexEdit.HexEditMainWindow import HexEditMainWindow for hexEditor in HexEditMainWindow.windows:
--- a/Utilities/ClassBrowsers/pyclbr.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Utilities/ClassBrowsers/pyclbr.py Thu Nov 01 11:47:39 2018 +0100 @@ -99,6 +99,11 @@ [ \t]* = ) +| (?P<Main> + ^ + if \s+ __name__ \s* == \s* [^:]+ : $ + ) + | (?P<ConditionalDefine> ^ (?P<ConditionalDefineIndent> [ \t]* ) @@ -562,13 +567,21 @@ else: index -= 1 + elif m.start("Main") >= 0: + # 'main' part of the script, reset class stack + lineno = lineno + src.count('\n', last_lineno_pos, start) + last_lineno_pos = start + classstack = [] + elif m.start("Variable") >= 0: thisindent = _indent(m.group("VariableIndent")) variable_name = m.group("VariableName") lineno = lineno + src.count('\n', last_lineno_pos, start) last_lineno_pos = start - if thisindent == 0: - # global variable + if thisindent == 0 or not classstack: + # global variable, reset class stack first + classstack = [] + if "@@Globals@@" not in dictionary: dictionary["@@Globals@@"] = ClbrBaseClasses.ClbrBase( module, "Globals", file, lineno)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Utilities/GetSysPath.py Thu Nov 01 11:47:39 2018 +0100 @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2011 - 2018 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module to get sys.path of an external interpreter. +""" + +from __future__ import print_function + +import sys +import json + +if __name__ == "__main__": + # print sys.path to stdout + print(json.dumps(sys.path)) + + sys.exit(0) + +# +# eflag: noqa = M701, M801
--- a/Utilities/ModuleParser.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Utilities/ModuleParser.py Thu Nov 01 11:47:39 2018 +0100 @@ -168,6 +168,11 @@ [ \t]* = [ \t]* (?P<VariableSignal> (?:pyqtSignal)? ) ) +| (?P<Main> + ^ + if \s+ __name__ \s* == \s* [^:]+ : $ + ) + | (?P<Import> ^ [ \t]* (?: import | from [ \t]+ \. [ \t]+ import ) [ \t]+ (?P<ImportList> (?: [^#;\\\n]* (?: \\\n )* )* ) @@ -732,6 +737,12 @@ else: index -= 1 + elif m.start("Main") >= 0: + # 'main' part of the script, reset class stack + lineno = lineno + src.count('\n', last_lineno_pos, start) + last_lineno_pos = start + classstack = [] + elif m.start("Variable") >= 0: thisindent = _indent(m.group("VariableIndent")) variable_name = m.group("VariableName")
--- a/Utilities/__init__.py Sat Oct 06 14:48:45 2018 +0200 +++ b/Utilities/__init__.py Thu Nov 01 11:47:39 2018 +0100 @@ -1957,6 +1957,43 @@ else: return bool(dataStr) + +def getSysPath(interpreter): + """ + Module function to get the Python path (sys.path) of a specific + interpreter. + + @param interpreter Python interpreter executable to get sys.path for + @type str + @return list containing sys.path of the interpreter; an empty list + is returned, if the interpreter is the one used to run eric itself + @rtype list of str + """ + import json + + sysPath = [] + + getSysPath = os.path.join( + getConfig('ericDir'), "Utilities", "GetSysPath.py") + args = [getSysPath] + proc = QProcess() + proc.setProcessChannelMode(QProcess.MergedChannels) + proc.start(interpreter, args) + finished = proc.waitForFinished(30000) + if finished: + if proc.exitCode() == 0: + text = proc.readAllStandardOutput() + sysPathResult = str(text, "utf-8", "replace").strip() + try: + sysPath = json.loads(sysPathResult) + if "" in sysPath: + sysPath.remove("") + except (TypeError, ValueError): + # ignore faulty results and return empty list + pass + + return sysPath + ############################################################################### # posix compatibility functions below ###############################################################################
--- a/VCS/ProjectHelper.py Sat Oct 06 14:48:45 2018 +0200 +++ b/VCS/ProjectHelper.py Thu Nov 01 11:47:39 2018 +0100 @@ -178,7 +178,7 @@ Public slot called before the vcs menu is shown. """ if self.vcsAddAct: - self.vcsAddAct.setEnabled(self.project.isOpen()) + self.vcsAddAct.setEnabled(self.project and self.project.isOpen()) @pyqtSlot() def _vcsCheckout(self, export=False): @@ -188,7 +188,7 @@ @param export flag indicating whether an export or a checkout should be performed """ - if not self.project.checkDirty(): + if not self.project or not self.project.checkDirty(): return vcsSystemsDict = e5App().getObject("PluginManager")\ @@ -258,6 +258,7 @@ "VcsProjectHelper", "<p>The project directory <b>{0}</b> could not" " be created.</p>").format(projectdir)) + self.project.resetVCS() return # create the project from the VCS @@ -353,6 +354,7 @@ "VcsProjectHelper", """The project could not be retrieved from""" """ the repository.""")) + self.project.resetVCS() def _vcsExport(self): """
--- a/VCS/StatusMonitorLed.py Sat Oct 06 14:48:45 2018 +0200 +++ b/VCS/StatusMonitorLed.py Thu Nov 01 11:47:39 2018 +0100 @@ -12,7 +12,7 @@ from PyQt5.QtCore import Qt from PyQt5.QtGui import QColor -from PyQt5.QtWidgets import QInputDialog, QMenu +from PyQt5.QtWidgets import QWidget, QInputDialog, QMenu, QHBoxLayout, QLabel from E5Gui.E5Led import E5ClickableLed, E5LedRectangular @@ -175,3 +175,44 @@ else: # call status dialog vcs.vcsStatus(self.project.getProjectPath()) + + +class StatusMonitorLedWidget(QWidget): + """ + Class implementing a widget containing a LED to indicate the status of the + VCS status monitor thread and a short info message. + """ + def __init__(self, project, parent): + """ + Constructor + + @param project reference to the project object + @type Project.Project + @param parent reference to the parent object + @type QWidget + """ + super(StatusMonitorLedWidget, self).__init__(parent) + + self.__layout = QHBoxLayout(self) + self.__layout.setContentsMargins(0, 0, 0, 0) + + self.__led = StatusMonitorLed(project, self) + self.__infoLabel = QLabel(self) + + self.__layout.addWidget(self.__led) + self.__layout.addWidget(self.__infoLabel) + + self.__projectVcsStatusMonitorInfo("") + + project.vcsStatusMonitorInfo.connect( + self.__projectVcsStatusMonitorInfo) + + def __projectVcsStatusMonitorInfo(self, info): + """ + Private slot handling the receipt of an info message. + + @param info received info message + @type str + """ + self.__infoLabel.setVisible(bool(info)) + self.__infoLabel.setText(info)
--- a/VCS/StatusMonitorThread.py Sat Oct 06 14:48:45 2018 +0200 +++ b/VCS/StatusMonitorThread.py Thu Nov 01 11:47:39 2018 +0100 @@ -20,9 +20,12 @@ @signal vcsStatusMonitorData(list of str) emitted to update the VCS status @signal vcsStatusMonitorStatus(str, str) emitted to signal the status of the monitoring thread (ok, nok, op) and a status message + @signal vcsStatusMonitorInfo(str) emitted to signal some info of the + monitoring thread """ vcsStatusMonitorData = pyqtSignal(list) vcsStatusMonitorStatus = pyqtSignal(str, str) + vcsStatusMonitorInfo = pyqtSignal(str) def __init__(self, interval, project, vcs, parent=None): """ @@ -74,6 +77,7 @@ "VcsStatusMonitorThread", "Checking repository status")) res, statusMsg = self._performMonitor() + infoMsg = self._getInfo() finally: self.vcs.vcsExecutionMutex.unlock() if res: @@ -85,11 +89,13 @@ "VcsStatusMonitorThread", "Sending data")) self.vcsStatusMonitorData.emit(self.statusList) self.vcsStatusMonitorStatus.emit(status, statusMsg) + self.vcsStatusMonitorInfo.emit(infoMsg) else: self.vcsStatusMonitorStatus.emit( "timeout", QCoreApplication.translate( "VcsStatusMonitorThread", "Timed out waiting for lock")) + self.vcsStatusMonitorInfo.emit("") if self.autoUpdate and self.shouldUpdate: self.vcs.vcsUpdate(self.projectDir, True) @@ -198,6 +204,18 @@ """ raise RuntimeError('Not implemented') + def _getInfo(self): + """ + Protected method implementing the real info action. + + This method should be overridden and create a short info message to be + shown in the main window status bar right next to the status indicator. + + @return short info message + @rtype str + """ + return "" + def _shutdown(self): """ Protected method performing shutdown actions.
--- a/VCS/VersionControl.py Sat Oct 06 14:48:45 2018 +0200 +++ b/VCS/VersionControl.py Thu Nov 01 11:47:39 2018 +0100 @@ -32,11 +32,14 @@ @signal vcsStatusMonitorData(list of str) emitted to update the VCS status @signal vcsStatusMonitorStatus(str, str) emitted to signal the status of the monitoring thread (ok, nok, op, off) and a status message + @signal vcsStatusMonitorInfo(str) emitted to signal some info of the + monitoring thread @signal vcsStatusChanged() emitted to indicate a change of the overall VCS status """ vcsStatusMonitorData = pyqtSignal(list) vcsStatusMonitorStatus = pyqtSignal(str, str) + vcsStatusMonitorInfo = pyqtSignal(str) vcsStatusChanged = pyqtSignal() canBeCommitted = 1 # Indicates that a file/directory is in the vcs. @@ -628,12 +631,14 @@ def __statusMonitorStatus(self, status, statusMsg): """ - Private method to receive the status monitor status. + Private slot to receive the status monitor status. + + It simply re-emits the received status. - It simply reemits the received status. - - @param status status of the monitoring thread (string, ok, nok or off) - @param statusMsg explanotory text for the signaled status (string) + @param status status of the monitoring thread + @type str (one of ok, nok or off) + @param statusMsg explanotory text for the signaled status + @type str """ self.vcsStatusMonitorStatus.emit(status, statusMsg) QApplication.flush() @@ -642,13 +647,26 @@ """ Private method to receive the status monitor status. - It simply reemits the received status list. + It simply re-emits the received status list. - @param statusList list of status records (list of strings) + @param statusList list of status records + @type list of str """ self.vcsStatusMonitorData.emit(statusList) QApplication.flush() - + + def __statusMonitorInfo(self, info): + """ + Private slot to receive the status monitor info message. + + It simply re-emits the received info message. + + @param info received info message + @type str + """ + self.vcsStatusMonitorInfo.emit(info) + QApplication.flush() + def startStatusMonitor(self, project): """ Public method to start the VCS status monitor thread. @@ -670,6 +688,8 @@ self.__statusMonitorData, Qt.QueuedConnection) self.statusMonitorThread.vcsStatusMonitorStatus.connect( self.__statusMonitorStatus, Qt.QueuedConnection) + self.statusMonitorThread.vcsStatusMonitorInfo.connect( + self.__statusMonitorInfo, Qt.QueuedConnection) self.statusMonitorThread.setAutoUpdate( Preferences.getVCS("AutoUpdate")) self.statusMonitorThread.start() @@ -687,6 +707,8 @@ self.__statusMonitorData) self.statusMonitorThread.vcsStatusMonitorStatus.disconnect( self.__statusMonitorStatus) + self.statusMonitorThread.vcsStatusMonitorInfo.disconnect( + self.__statusMonitorInfo) self.statusMonitorThread.stop() self.statusMonitorThread.wait(10000) if not self.statusMonitorThread.isFinished(): @@ -698,6 +720,7 @@ QCoreApplication.translate( "VersionControl", "Repository status checking is switched off")) + self.__statusMonitorInfo("") def setStatusMonitorInterval(self, interval, project): """
--- a/WebBrowser/Network/EricSchemeHandler.py Sat Oct 06 14:48:45 2018 +0200 +++ b/WebBrowser/Network/EricSchemeHandler.py Thu Nov 01 11:47:39 2018 +0100 @@ -115,9 +115,9 @@ lock = QMutexLocker(self.__mutex) self.__buffer.setData(contents.encode("utf-8")) self.__buffer.open(QIODevice.ReadOnly) + self.open(QIODevice.ReadOnly) lock.unlock() - self.open(QIODevice.ReadOnly) self.readyRead.emit() self.__loaded = True
--- a/WebBrowser/Network/NetworkManager.py Sat Oct 06 14:48:45 2018 +0200 +++ b/WebBrowser/Network/NetworkManager.py Thu Nov 01 11:47:39 2018 +0100 @@ -54,11 +54,12 @@ from E5Network.E5NetworkProxyFactory import E5NetworkProxyFactory self.__proxyFactory = E5NetworkProxyFactory() - QNetworkProxyFactory.setApplicationProxyFactory( - self.__proxyFactory) - - QNetworkProxyFactory.setUseSystemConfiguration( - Preferences.getUI("UseSystemProxy")) + if Preferences.getUI("UseSystemProxy"): + QNetworkProxyFactory.setUseSystemConfiguration(True) + else: + QNetworkProxyFactory.setApplicationProxyFactory( + self.__proxyFactory) + QNetworkProxyFactory.setUseSystemConfiguration(False) self.languagesChanged() @@ -340,8 +341,12 @@ self.__interceptor.preferencesChanged() if not WebBrowserWindow._fromEric: - QNetworkProxyFactory.setUseSystemConfiguration( - Preferences.getUI("UseSystemProxy")) + if Preferences.getUI("UseSystemProxy"): + QNetworkProxyFactory.setUseSystemConfiguration(True) + else: + QNetworkProxyFactory.setApplicationProxyFactory( + self.__proxyFactory) + QNetworkProxyFactory.setUseSystemConfiguration(False) def createRequest(self, op, request, data): """
--- a/WebBrowser/Network/QtHelpSchemeHandler.py Sat Oct 06 14:48:45 2018 +0200 +++ b/WebBrowser/Network/QtHelpSchemeHandler.py Thu Nov 01 11:47:39 2018 +0100 @@ -156,7 +156,6 @@ @param url URL of the requested page @type QUrl """ - if self.__engine.findFile(url).isValid(): data = self.__engine.fileData(url) else: @@ -172,9 +171,9 @@ lock = QMutexLocker(self.__mutex) self.__buffer.setData(data) self.__buffer.open(QIODevice.ReadOnly) + self.open(QIODevice.ReadOnly) lock.unlock() - self.open(QIODevice.ReadOnly) self.readyRead.emit() def bytesAvailable(self):
--- a/changelog Sat Oct 06 14:48:45 2018 +0200 +++ b/changelog Thu Nov 01 11:47:39 2018 +0100 @@ -1,5 +1,15 @@ Change Log ---------- +Version 18.11: +- bug fixes +- IRC + -- added support for some of the "/" commands to the user list context menu +- Translator + -- changed DeepL support to DeepL Pro +- VCS + -- added capability to show some VCS info in the status bar of the main + window (next to the VCS status LED) + Version 18.10: - bug fixes - General
--- a/eric6.e4p Sat Oct 06 14:48:45 2018 +0200 +++ b/eric6.e4p Thu Nov 01 11:47:39 2018 +0100 @@ -141,6 +141,7 @@ <Source>E5Gui/E5TabWidget.py</Source> <Source>E5Gui/E5TableView.py</Source> <Source>E5Gui/E5TextEditSearchWidget.py</Source> + <Source>E5Gui/E5TextInputDialog.py</Source> <Source>E5Gui/E5TextSpinBox.py</Source> <Source>E5Gui/E5ToolBarDialog.py</Source> <Source>E5Gui/E5ToolBarManager.py</Source> @@ -940,6 +941,7 @@ <Source>Project/QuickFindFileDialog.py</Source> <Source>Project/SpellingPropertiesDialog.py</Source> <Source>Project/TranslationPropertiesDialog.py</Source> + <Source>Project/UicLoadUi.py</Source> <Source>Project/UserPropertiesDialog.py</Source> <Source>Project/__init__.py</Source> <Source>PyUnit/UnittestDialog.py</Source> @@ -1378,6 +1380,7 @@ <Source>Utilities/ClassBrowsers/pyclbr.py</Source> <Source>Utilities/ClassBrowsers/rbclbr.py</Source> <Source>Utilities/FtpUtilities.py</Source> + <Source>Utilities/GetSysPath.py</Source> <Source>Utilities/MimeTypes.py</Source> <Source>Utilities/ModuleParser.py</Source> <Source>Utilities/MouseUtilities.py</Source> @@ -2221,14 +2224,14 @@ </Resources> <Others> <Other>.hgignore</Other> - <Other>APIs/Python/zope-2.10.7.api</Other> - <Other>APIs/Python/zope-2.11.2.api</Other> - <Other>APIs/Python/zope-3.3.1.api</Other> <Other>APIs/Python3/PyQt4.bas</Other> <Other>APIs/Python3/PyQt5.bas</Other> <Other>APIs/Python3/QScintilla2.bas</Other> <Other>APIs/Python3/eric6.api</Other> <Other>APIs/Python3/eric6.bas</Other> + <Other>APIs/Python/zope-2.10.7.api</Other> + <Other>APIs/Python/zope-2.11.2.api</Other> + <Other>APIs/Python/zope-3.3.1.api</Other> <Other>APIs/QSS/qss.api</Other> <Other>APIs/Ruby/Ruby-1.8.7.api</Other> <Other>APIs/Ruby/Ruby-1.8.7.bas</Other>
--- a/i18n/eric6_cs.ts Sat Oct 06 14:48:45 2018 +0200 +++ b/i18n/eric6_cs.ts Thu Nov 01 11:47:39 2018 +0100 @@ -5528,42 +5528,42 @@ <translation>&Filtr pro:</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="570"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="754"/> <source>Code Generation</source> <translation>Generování kódu</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="358"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="542"/> <source>uic error</source> <translation>uic chyba</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="126"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="131"/> <source>Create Dialog Code</source> <translation>Vytvořit Dialog Code</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="126"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="131"/> <source>The file <b>{0}</b> exists but does not contain any classes.</source> <translation>Soubor <b>{0}</b> existuje ale neobsahuje žádné třídy.</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="358"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="542"/> <source><p>There was an error loading the form <b>{0}</b>.</p><p>{1}</p></source> <translation><p>Byla nalezena chyba načtená z <b>{0}</b>.</p><p>{1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="436"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="620"/> <source><p>Could not open the code template file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Template soubor <b>{0}</b> nelze otevřít.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="472"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="656"/> <source><p>Could not open the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Nelze ovevřít source soubor "{0}".</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="570"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="754"/> <source><p>Could not write the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Nelze zapsat do source souboru "{0}".</p><p>Důvod: {1}</p></translation> </message> @@ -6520,135 +6520,135 @@ <translation>Vybrat typ debuggeru pro backend</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="261"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="264"/> <source>Remote Debugger</source> <translation>Vzdálený debuger</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="270"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="294"/> <source>Remote Execution:</source> <translation>Vykonat vzdálený příkaz:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="283"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="304"/> <source>Enter the remote execution command.</source> <translation>Zadání příkazu pro vzdálené vykonání.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="286"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="307"/> <source><b>Remote Execution</b> <p>Enter the remote execution command (e.g. ssh). This command is used to log into the remote host and execute the remote debugger.</p></source> <translation><b>Vzdálené vykonání</b><p>Zadání příkazu pro vzdálené vykonání (např. ssh). Tento příkaz je použit pro zalogování se na vzáleného hosta a spuštění vzdáleného debuggeru.</p></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="297"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="273"/> <source>Enter the hostname of the remote machine.</source> <translation>Zadání jméno hosta vzdáleného stroje.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="300"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="276"/> <source><b>Remote Host</b> <p>Enter the hostname of the remote machine.</p></source> <translation><b>Vzdálený host</b><p>Zadání jména hosta vzdáleného stroje.</p></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="311"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="284"/> <source>Remote Host:</source> <translation>Vzdálený host:</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="321"/> <source>Enable remote debugging</source> - <translation>Zapnout vzdálené debuggování</translation> + <translation type="obsolete">Zapnout vzdálené debuggování</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="324"/> <source>This enables the remote debugger. Please enter the hostname of the remote machine and the command for the remote execution (e.g. ssh) below.</source> - <translation>Zapne se vzdálený debugger. Prosím, zadejte jméno hosta vzáleného stroje a příkaz pro vzdálené provedení (např. ssh).</translation> + <translation type="obsolete">Zapne se vzdálený debugger. Prosím, zadejte jméno hosta vzáleného stroje a příkaz pro vzdálené provedení (např. ssh).</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="327"/> <source>Remote Debugging Enabled</source> - <translation>Vzdálené debuggování zapnuto</translation> + <translation type="obsolete">Vzdálené debuggování zapnuto</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="337"/> <source>Path Translation</source> - <translation>Cesta překladu</translation> + <translation type="obsolete">Cesta překladu</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="343"/> <source>Select to perform path translation</source> - <translation>Výběr pro vykonání překladu cesty</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="346"/> + <translation type="obsolete">Výběr pro vykonání překladu cesty</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="318"/> <source>Perform Path Translation</source> <translation>Vykonat překlad cesty</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="356"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="327"/> <source>Local Path:</source> <translation>Lokální cesta:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="366"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="334"/> <source>Enter the local path</source> <translation>Zadání lokální cesty</translation> </message> <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="341"/> + <source>Enter the remote path</source> + <translation>Zadání vzdálené cesty</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="348"/> + <source>Remote Path:</source> + <translation>Vzdálená cesta:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="364"/> + <source>Console Debugger</source> + <translation>Konzole debuggeru</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="373"/> + <source>Enter the console command (e.g. xterm -e)</source> + <translation>Zadání příkazu konzole (např. xterm -e)</translation> + </message> + <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="376"/> - <source>Enter the remote path</source> - <translation>Zadání vzdálené cesty</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="386"/> - <source>Remote Path:</source> - <translation>Vzdálená cesta:</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="396"/> - <source>Console Debugger</source> - <translation>Konzole debuggeru</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="402"/> - <source>Enter the console command (e.g. xterm -e)</source> - <translation>Zadání příkazu konzole (např. xterm -e)</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="405"/> <source><b>Console Command</b> <p>Enter the console command (e.g. xterm -e). This command is used to open a command window for the debugger.</p></source> <translation><b>Příkaz konzole</b><p>Zadání příkazu konzole (např. xterm -e). Tento příkaz je použit pro otevření příkazového okna debuggeru.</p></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="413"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="384"/> <source>Console Command:</source> <translation>Příkaz konzole:</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="420"/> <source>Select to start the debugger in a console window (e.g. xterm)</source> - <translation>Vyberte pro spuštění debuggeru v okně konzole (např. xterm)</translation> + <translation type="obsolete">Vyberte pro spuštění debuggeru v okně konzole (např. xterm)</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="423"/> <source>Start debugger in console window</source> - <translation>Spustit debugger v okně konzole</translation> + <translation type="obsolete">Spustit debugger v okně konzole</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="433"/> <source>Environment for Debug Client</source> - <translation>Prostředí debug klienta</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="439"/> + <translation type="obsolete">Prostředí debug klienta</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="400"/> <source>Select, if the environment should be replaced.</source> <translation>Vyberte, jestliže prostředí bude nahrazeno.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="442"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="403"/> <source><b>Replace Environment</b> <p>If this entry is checked, the environment of the debugger will be replaced by the entries of the environment variables field. If it is unchecked, the environment will be ammended by these settings.</p></source> <translation><b>Nahrazení prostředí</b> @@ -6657,15 +6657,15 @@ <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="446"/> <source>Replace Environment</source> - <translation>Nahradit prostředí</translation> + <translation type="obsolete">Nahradit prostředí</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="453"/> <source>Environment:</source> - <translation>Prostředí:</translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="460"/> + <translation type="obsolete">Prostředí:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="421"/> <source>Enter the environment variables to be set.</source> <translation>Zadání proměnných prostředí.</translation> </message> @@ -6674,25 +6674,25 @@ <source><b>Environment</b> <p>Enter the environment variables to be set for the debugger. The individual settings must be separate by whitespace and be given in the form 'var=value'.</p> <p>Example: var1=1 var2="hello world"</p></source> - <translation><b>Prostředí</b><p>Zadání proměnných prostředí, které debuger použije. Jednotlivá nastavení musí být oddělena prázdnými znaky a být ve formátu 'var=value'.</p><p>Příklad: var1=1 var2="hello world"</p></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="500"/> + <translation type="obsolete"><b>Prostředí</b><p>Zadání proměnných prostředí, které debuger použije. Jednotlivá nastavení musí být oddělena prázdnými znaky a být ve formátu 'var=value'.</p><p>Příklad: var1=1 var2="hello world"</p></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="461"/> <source>Select, whether a reset of the debug client should be performed after a client exit</source> <translation>Zatrhnout, jestli po ukončení klienta bude vykonán reset debugovaného klienta</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="503"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="464"/> <source>Automatic Reset after Client Exit</source> <translation>Automatický reset po ukončení klienta</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="481"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="442"/> <source>Select, whether changed scripts should be saved upon a debug, run, ... action.</source> <translation>Zatrhnout, jestli po debugování, běhu, ..., akci mají být změny ve skriptu uloženy.</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="484"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="445"/> <source>Autosave changed scripts</source> <translation>Automatické ukládání změn ve skriptech</translation> </message> @@ -6732,52 +6732,52 @@ <translation>Všechna síťová připojení (IPv6)</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="529"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="490"/> <source>Select to change the breakpoint toggle order from Off->On->Off to Off->On (permanent)->On (temporary)->Off</source> <translation>Vybrat pro změnu přepínání breakpointu od Off->On->Off na Off->On (trvale)->On (dočasně)->Off</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="532"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="493"/> <source>Three state breakpoint</source> <translation>Třístavový breakpoint</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="475"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="436"/> <source>Start Debugging</source> <translation>Start debugování</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="494"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="455"/> <source>Debug Client Exit</source> <translation>Ukončení debug klienta</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="510"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="471"/> <source>Select to suppress the client exit dialog for a clean exit</source> <translation>Potlačit dialog ukončení klienta při čistém ukončení</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="513"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="474"/> <source>Don't show client exit dialog for a clean exit</source> <translation>Nezobrazovat dialog ukončení klienta při čistém ukončení</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="523"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="484"/> <source>Breakpoints</source> <translation>Breakpointy</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="582"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="543"/> <source>Exceptions</source> <translation>Výjimky</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="588"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="549"/> <source>Select to always break at exceptions</source> <translation>Vybrat vždy zastavit na výjimkách</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="591"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="552"/> <source>Always break at exceptions</source> <translation>Vždy zastavit na výjimkách</translation> </message> @@ -6787,65 +6787,102 @@ <translation><p>Zadaná adresa <b>{0}</b> není validní IP v4 nebo IP v6. Zrušeno...</p></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="666"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="627"/> <source>Local Variables Viewer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="672"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="633"/> <source>Automatically view source code when user changes the callstack frame in the callstack viewer.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="675"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="636"/> <source>Automatically view source code</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="598"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="559"/> <source>Select to show exception information in the shell window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="601"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="562"/> <source>Show exceptions in Shell</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="619"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="580"/> <source>Max. Variable Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="626"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="587"/> <source>Enter the maximum size of a variable to be shown (0 = no limit)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="632"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="593"/> <source>no limit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="638"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="599"/> <source> Bytes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="611"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="572"/> <source>Variables Viewer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="541"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="502"/> <source>Number of recent files and conditions:</source> <translation type="unfinished">Počet nedávných souborů:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="548"/> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="509"/> <source>Enter the number of recent files and breakpoint conditions to remember</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="315"/> + <source>Select, if path translation for remote debugging should be done</source> + <translation type="unfinished">Vyberte, je-li cesta překladu pro vzdálený debuger dána</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="361"/> + <source>Select, if the debugger should be executed in a console window</source> + <translation type="unfinished">Vyberte má-li debuger běžet v okně konzole</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="394"/> + <source>Environment Variables for Debug Client</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="407"/> + <source>Replace Environment Variables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="414"/> + <source>Environment Variables:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="424"/> + <source><b>Environment Variables</b> +<p>Enter the environment variables to be set for the debugger. The individual settings must be separated by whitespace and be given in the form 'var=value'.</p> +<p>Example: var1=1 var2="hello world"</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/DebuggerGeneralPage.ui" line="261"/> + <source>Select, if the debugger should be run remotely</source> + <translation type="unfinished">Vyberte, má-li debuger běžet vzdáleně</translation> + </message> </context> <context> <name>DebuggerInterfacePython</name> @@ -7029,20 +7066,20 @@ <message> <location filename="../Project/DebuggerPropertiesDialog.ui" line="71"/> <source>Environment for Debug Client</source> - <translation>Prostředí klienta debugeru</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="77"/> + <translation type="obsolete">Prostředí klienta debugeru</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="204"/> <source>Select, if the environment of the debug client should be replaced</source> <translation>Zatrhněte, jestliže prostředí klienta debugeru má být nahrazeno</translation> </message> <message> <location filename="../Project/DebuggerPropertiesDialog.ui" line="80"/> <source>Replace Environment</source> - <translation>Nahradit prostředí</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="87"/> + <translation type="obsolete">Nahradit prostředí</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="214"/> <source>Enter the environment variables to be set.</source> <translation>Zadání proměnných prostředí, které mají být nastaveny.</translation> </message> @@ -7051,107 +7088,107 @@ <source><b>Environment</b> <p>Enter the environment variables to be set for the debugger. The individual settings must be separate by whitespace and be given in the form 'var=value'.</p> <p>Example: var1=1 var2="hello world"</p></source> - <translation><b>Prostředí</b><p>Zadání proměnných prostředím které debuger použije. Jednotlivá nastavení musí být oddělena bílými znaky a být ve formátu 'var=value'.</p><p>Příklad: var1=1 var2="hello world"</p></translation> + <translation type="obsolete"><b>Prostředí</b><p>Zadání proměnných prostředím které debuger použije. Jednotlivá nastavení musí být oddělena bílými znaky a být ve formátu 'var=value'.</p><p>Příklad: var1=1 var2="hello world"</p></translation> </message> <message> <location filename="../Project/DebuggerPropertiesDialog.ui" line="99"/> <source>Environment:</source> - <translation>Prostředí:</translation> + <translation type="obsolete">Prostředí:</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="71"/> + <source>Select, if the debugger should be run remotely</source> + <translation>Vyberte, má-li debuger běžet vzdáleně</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="74"/> + <source>Remote Debugger</source> + <translation>Vzdálený debuger</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="83"/> + <source>Select, if path translation for remote debugging should be done</source> + <translation>Vyberte, je-li cesta překladu pro vzdálený debuger dána</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="86"/> + <source>Perform Path Translation</source> + <translation>Vykonat cestu překladu</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="95"/> + <source>Local Path:</source> + <translation>Lokální cesta:</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="102"/> + <source>Enter the local path</source> + <translation>Zadání lokální cesty</translation> </message> <message> <location filename="../Project/DebuggerPropertiesDialog.ui" line="109"/> - <source>Select, if the debugger should be run remotely</source> - <translation>Vyberte, má-li debuger běžet vzdáleně</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="112"/> - <source>Remote Debugger</source> - <translation>Vzdálený debuger</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="121"/> - <source>Select, if path translation for remote debugging should be done</source> - <translation>Vyberte, je-li cesta překladu pro vzdálený debuger dána</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="124"/> - <source>Perform Path Translation</source> - <translation>Vykonat cestu překladu</translation> + <source>Enter the remote path</source> + <translation>Zadání vzdálené cesty</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="116"/> + <source>Remote Path:</source> + <translation>Vzdálená cesta:</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="126"/> + <source>Remote Host:</source> + <translation>Vzdálený host:</translation> </message> <message> <location filename="../Project/DebuggerPropertiesDialog.ui" line="133"/> - <source>Local Path:</source> - <translation>Lokální cesta:</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="140"/> - <source>Enter the local path</source> - <translation>Zadání lokální cesty</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="147"/> - <source>Enter the remote path</source> - <translation>Zadání vzdálené cesty</translation> + <source>Enter the remote execution command.</source> + <translation>Zadání příkazu pro vzdálené vykonání.</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="136"/> + <source><b>Remote Execution</b> +<p>Enter the remote execution command (e.g. ssh). This command is used to log into the remote host and execute the remote debugger.</p></source> + <translation><b>Vzdálené vykonání</b><p>Zadání příkazu pro vzdálené vykonání (např. ssh). Tento příkaz je použit pro zalogování se na vzdáleného hosta a spuštění vzdáleného debugeru.</p></translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="144"/> + <source>Remote Execution:</source> + <translation>Vykonat vzdálený příkaz:</translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="151"/> + <source>Enter the hostname of the remote machine.</source> + <translation>Zadání jméno hosta vzdáleného stroje.</translation> </message> <message> <location filename="../Project/DebuggerPropertiesDialog.ui" line="154"/> - <source>Remote Path:</source> - <translation>Vzdálená cesta:</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="164"/> - <source>Remote Host:</source> - <translation>Vzdálený host:</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="171"/> - <source>Enter the remote execution command.</source> - <translation>Zadání příkazu pro vzdálené vykonání.</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="174"/> - <source><b>Remote Execution</b> -<p>Enter the remote execution command (e.g. ssh). This command is used to log into the remote host and execute the remote debugger.</p></source> - <translation><b>Vzdálené vykonání</b><p>Zadání příkazu pro vzdálené vykonání (např. ssh). Tento příkaz je použit pro zalogování se na vzdáleného hosta a spuštění vzdáleného debugeru.</p></translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="182"/> - <source>Remote Execution:</source> - <translation>Vykonat vzdálený příkaz:</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="189"/> - <source>Enter the hostname of the remote machine.</source> - <translation>Zadání jméno hosta vzdáleného stroje.</translation> - </message> - <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="192"/> <source><b>Remote Host</b> <p>Enter the hostname of the remote machine.</p></source> <translation><b>Vzdálený host</b><p>Zadání jména hosta vzdáleného stroje.</p></translation> </message> <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="203"/> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="165"/> <source>Select, if the debugger should be executed in a console window</source> <translation>Vyberte má-li debuger běžet v okně konzole</translation> </message> <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="206"/> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="168"/> <source>Console Debugger</source> <translation>Debuger na konzoli</translation> </message> <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="215"/> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="177"/> <source>Console Command:</source> <translation>Příkaz konzole:</translation> </message> <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="222"/> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="184"/> <source>Enter the console command (e.g. xterm -e)</source> <translation>Zadání příkazu konzole (např. xterm -e)</translation> </message> <message> - <location filename="../Project/DebuggerPropertiesDialog.ui" line="225"/> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="187"/> <source><b>Console Command</b> <p>Enter the console command (e.g. xterm -e). This command is used to open a command window for the debugger.</p></source> <translation><b>Příkaz konzole</b><p>Zadání příkazu konzole (např. xterm -e). Tento příkaz je použit pro otevření příkazového okna debugeru.</p></translation> @@ -7206,6 +7243,28 @@ <source>Select the virtual environment to be used</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="198"/> + <source>Environment Variables for Debug Client</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="207"/> + <source>Replace Environment Variables</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="217"/> + <source><b>Environment Variables</b> +<p>Enter the environment variables to be set for the debugger. The individual settings must be separated by whitespace and be given in the form 'var=value'.</p> +<p>Example: var1=1 var2="hello world"</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/DebuggerPropertiesDialog.ui" line="226"/> + <source>Environment Variables:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DebuggerPython2Page</name> @@ -7582,36 +7641,30 @@ <context> <name>DeepLEngine</name> <message> - <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="79"/> + <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="78"/> <source>Text to be translated exceeds the translation limit of {0} characters.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="115"/> + <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="98"/> <source>Invalid response received from DeepL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="118"/> - <source>DeepL reported an error. -Message: {0}</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="122"/> + <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="101"/> <source>DeepL call returned an unknown result</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="126"/> - <source>Unsupported language code given (source: {0}, target: {1}).</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="133"/> + <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="105"/> <source><p>No translation found</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/DeepLEngine.py" line="84"/> + <source>A valid DeepL Pro key is required.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>DeleteFilesConfirmationDialog</name> @@ -9539,7 +9592,7 @@ <context> <name>E5NetworkProxyFactory</name> <message> - <location filename="../E5Network/E5NetworkProxyFactory.py" line="224"/> + <location filename="../E5Network/E5NetworkProxyFactory.py" line="222"/> <source>Proxy Configuration Error</source> <translation>Chyba proxy konfigurace</translation> </message> @@ -9549,7 +9602,7 @@ <translation type="unfinished"><b>Připojit k proxy '{0}' za použití:</b></translation> </message> <message> - <location filename="../E5Network/E5NetworkProxyFactory.py" line="224"/> + <location filename="../E5Network/E5NetworkProxyFactory.py" line="222"/> <source>Proxy usage was activated but no proxy host for protocol '{0}' configured.</source> <translation type="unfinished"></translation> </message> @@ -12024,6 +12077,11 @@ <source>Select the documentation provider to be used</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/EditorDocViewerPage.py" line="53"/> + <source>The Documentation Viewer is disabled globally. Re-enable it on the Interface/Interface configuration page and restart the eric.</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EditorExportersPage</name> @@ -15173,32 +15231,32 @@ <translation>Typ</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="94"/> + <location filename="../UI/EmailDialog.py" line="96"/> <source>Send</source> <translation>Odeslat</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="154"/> + <location filename="../UI/EmailDialog.py" line="156"/> <source>Close dialog</source> <translation>Zavřít dialog</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="154"/> + <location filename="../UI/EmailDialog.py" line="156"/> <source>Do you really want to close the dialog?</source> <translation>Opravdu chcete zavřít dialog?</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="336"/> + <location filename="../UI/EmailDialog.py" line="338"/> <source>Mail Server Password</source> <translation>Heslo mail serveru</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="336"/> + <location filename="../UI/EmailDialog.py" line="338"/> <source>Enter your mail server password</source> <translation>Zadejte heslo vašeho mail serveru</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="428"/> + <location filename="../UI/EmailDialog.py" line="430"/> <source>Attach file</source> <translation>Připojit soubor</translation> </message> @@ -15213,47 +15271,47 @@ <translation>Přílohy</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="83"/> + <location filename="../UI/EmailDialog.py" line="85"/> <source>Enter your &feature request below. Version information is added automatically.</source> <translation>Zadejte níže váš &požadavek na vlastnost. Informace o verzi bude přidána automaticky.</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="89"/> + <location filename="../UI/EmailDialog.py" line="91"/> <source>Enter your &bug description below. Version information is added automatically.</source> <translation>Zadejte níže popis &problému. Informace o verzi bude přidána automaticky.</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="82"/> + <location filename="../UI/EmailDialog.py" line="84"/> <source>Send feature request</source> <translation>Poslat požadavek na vlastnost</translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="356"/> + <location filename="../UI/EmailDialog.py" line="358"/> <source><p>Authentication failed.<br>Reason: {0}</p></source> <translation><p>Autentizace selhala.<br>Důvod: {0}</p></translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="413"/> + <location filename="../UI/EmailDialog.py" line="415"/> <source><p>Message could not be sent.<br>Reason: {0}</p></source> <translation><p>Zprávu nelze odeslat.<br>Důvod: {0}</p></translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="99"/> + <location filename="../UI/EmailDialog.py" line="101"/> <source>Google Mail API Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="171"/> + <location filename="../UI/EmailDialog.py" line="173"/> <source><p>The Google Mail Client API is not installed. Use <code>pip install --upgrade google-api-python-client</code> to install it.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="177"/> + <location filename="../UI/EmailDialog.py" line="179"/> <source>Gmail API Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../UI/EmailDialog.py" line="413"/> + <location filename="../UI/EmailDialog.py" line="415"/> <source>Send Message</source> <translation type="unfinished"></translation> </message> @@ -15266,62 +15324,62 @@ <translation><b>Konfigurovat email</b></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="257"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="284"/> <source>Enter your password for accessing the mail server</source> <translation>Zadejte vaše heslo pro přístup na mail server</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="243"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="270"/> <source>Enter your mail server username</source> <translation>Zadejte vaše přihlašovací jméno na mail server</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="202"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="229"/> <source>Signature:</source> <translation>Podpis:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="78"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="105"/> <source>Enter the address of your mail server</source> <translation>Zadejte adresu vašeho mail serveru</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="188"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="215"/> <source>Email address:</source> <translation>Email adresa:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="212"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="239"/> <source>Enter your email signature</source> <translation>Zadejte váš email podpis</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="195"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="222"/> <source>Enter your email address</source> <translation>Zadejte vaši emailovou adresu</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="224"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="251"/> <source>Select to authenticatate against the mail server</source> <translation>Výběr autentizace proti mail serveru</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="227"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="254"/> <source>Mail server needs authentication</source> <translation>Mail server požaduje autentizaci</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="236"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="263"/> <source>Username:</source> <translation>Přihlašovací jméno:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="250"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="277"/> <source>Password:</source> <translation>Heslo:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="136"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="163"/> <source>Select to use TLS</source> <translation>Vybrat pro použití TLS</translation> </message> @@ -15331,12 +15389,12 @@ <translation type="obsolete">Použít TLS</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="156"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="183"/> <source>Enter the port of the mail server</source> <translation>Zadejte port mail serveru</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="71"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="98"/> <source>Outgoing mail server (SMTP):</source> <translation>Odchozí mail server (SMTP):</translation> </message> @@ -15346,62 +15404,62 @@ <translation type="obsolete">Odchozí mail server port:</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="267"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="294"/> <source>Press to test the login data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="270"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="297"/> <source>Test Login</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="258"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="271"/> <source>Login Test</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="221"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="234"/> <source>The login test succeeded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="258"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="271"/> <source><p>The login test failed.<br>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="85"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="112"/> <source>Encryption Method:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="113"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="140"/> <source>Select to use no encryption</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="116"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="143"/> <source>None</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="126"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="153"/> <source>Select to use SSL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="129"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="156"/> <source>SSL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="139"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="166"/> <source>TLS</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="149"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="176"/> <source>Port:</source> <translation type="unfinished">Port:</translation> </message> @@ -15412,24 +15470,44 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="43"/> - <source>Use Google Mail with OAuth2 authentication</source> + <source>Use Google Mail with OAuth2 authentication via Gmail API</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="50"/> - <source><b>Note:</b> Google Mail using SMTP should be configured below.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="63"/> + <source><b>Note:</b> Google Mail using plain SMTP should be configured below.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="90"/> <source>Standard Email</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="48"/> + <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="287"/> <source><p>The Google Mail Client API is not installed. Use <code>pip install --upgrade google-api-python-client</code> to install it.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="62"/> + <source>Press to get some help for enabling the Google Mail API</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EmailPage.ui" line="65"/> + <source>Google Mail API Help</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="52"/> + <source><p>The credentials file is not present. Has the Gmail API been enabled?</p></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/EmailPage.py" line="293"/> + <source>Gmail API Help</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>EricAccessHandler</name> @@ -24244,6 +24322,17 @@ <source>Git status checked successfully</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsGit/GitStatusMonitorThread.py" line="169"/> + <source><detached></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsGit/GitStatusMonitorThread.py" line="171"/> + <source>{0} / {1}</source> + <comment>branch, commit</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>GitSubmoduleAddDialog</name> @@ -24966,6 +25055,14 @@ </message> </context> <context> + <name>GoogleMailSendMessage</name> + <message> + <location filename="../E5Network/E5GoogleMail.py" line="83"/> + <source>The credentials file is not present. Has the Gmail API been enabled?</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> <name>GoogleV1Engine</name> <message> <location filename="../Plugins/UiExtensionPlugins/Translator/TranslatorEngines/GoogleV1Engine.py" line="97"/> @@ -37669,15 +37766,21 @@ <context> <name>HgStatusMonitorThread</name> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py" line="155"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py" line="148"/> <source>Mercurial status checked successfully</source> <translation>Mercurial status úspěšně zkontrolován</translation> </message> <message> - <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py" line="100"/> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py" line="191"/> <source>Could not start the Mercurial process.</source> <translation>Nelze spustit Mercurial proces.</translation> </message> + <message> + <location filename="../Plugins/VcsPlugins/vcsMercurial/HgStatusMonitorThread.py" line="204"/> + <source>{0} / {1}:{2}</source> + <comment>branch, local id, global id</comment> + <translation type="unfinished"></translation> + </message> </context> <context> <name>HgStripDialog</name> @@ -41688,122 +41791,122 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="416"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1553"/> <source>Send Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="416"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="426"/> <source>Messages starting with a '/' are not allowed in private chats.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="528"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="539"/> <source>Leave IRC channel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="528"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="539"/> <source>Do you really want to leave the IRC channel <b>{0}</b>?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="681"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="692"/> <source>Channel Message</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="686"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="697"/> <source>Nick mentioned</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="711"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="722"/> <source>{0} has joined the channel {1} ({2}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="717"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="728"/> <source>You have joined the channel {0} ({1}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="724"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="735"/> <source>Join Channel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="743"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="754"/> <source>{0} has left {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="751"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="762"/> <source>{0} has left {1}: {2}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="757"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="768"/> <source>Leave Channel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="776"/> - <source>{0} has quit {1}.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="781"/> - <source>{0} has quit {1}: {2}.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Network/IRC/IrcChannelWidget.py" line="787"/> + <source>{0} has quit {1}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="792"/> + <source>{0} has quit {1}: {2}.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="798"/> <source>Quit</source> <translation type="unfinished">Konec</translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="805"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="816"/> <source>You are now known as {0}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="811"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="822"/> <source>User {0} is now known as {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="849"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="860"/> <source>Away</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="849"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="860"/> <source>{0} is away: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="866"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="877"/> <source>The channel topic is: "{0}".</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="882"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="893"/> <source>The topic was set by {0} on {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="899"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="910"/> <source>Channel URL: {0}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="924"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="935"/> <source>password protected ({0})</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="928"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="939"/> <source>limited to %n user(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -41812,77 +41915,77 @@ </translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="935"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="946"/> <source>Channel modes: {0}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="951"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="962"/> <source>This channel was created on {0}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="986"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="997"/> <source>{0} sets the channel mode to 'anonymous'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="990"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1001"/> <source>{0} removes the 'anonymous' mode from the channel.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="995"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1006"/> <source>{0} sets a ban on {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="999"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1010"/> <source>{0} removes the ban on {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1004"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1015"/> <source>{0} sets the channel mode to 'no colors allowed'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1008"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1019"/> <source>{0} sets the channel mode to 'allow color codes'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1013"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1024"/> <source>{0} sets a ban exception on {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1017"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1028"/> <source>{0} removes the ban exception on {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1022"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1033"/> <source>{0} sets the channel mode to 'invite only'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1026"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1037"/> <source>{0} removes the 'invite only' mode from the channel.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1031"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1042"/> <source>{0} sets the channel key to '{1}'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1035"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1046"/> <source>{0} removes the channel key.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1039"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1050"/> <source>{0} sets the channel limit to %n nick(s).</source> <translation type="unfinished"> <numerusform></numerusform> @@ -41891,242 +41994,242 @@ </translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1043"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1054"/> <source>{0} removes the channel limit.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1047"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1058"/> <source>{0} sets the channel mode to 'moderated'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1051"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1062"/> <source>{0} sets the channel mode to 'unmoderated'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1056"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1067"/> <source>{0} sets the channel mode to 'no messages from outside'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1060"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1071"/> <source>{0} sets the channel mode to 'allow messages from outside'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1065"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1076"/> <source>{0} sets the channel mode to 'private'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1069"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1080"/> <source>{0} sets the channel mode to 'public'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1074"/> - <source>{0} sets the channel mode to 'quiet'.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1078"/> - <source>{0} removes the 'quiet' mode from the channel.</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Network/IRC/IrcChannelWidget.py" line="1085"/> - <source>{0} sets the channel mode to 'secret'.</source> + <source>{0} sets the channel mode to 'quiet'.</source> <translation type="unfinished"></translation> </message> <message> <location filename="../Network/IRC/IrcChannelWidget.py" line="1089"/> + <source>{0} removes the 'quiet' mode from the channel.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1096"/> + <source>{0} sets the channel mode to 'secret'.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1100"/> <source>{0} sets the channel mode to 'visible'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1094"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1105"/> <source>{0} switches on 'topic protection'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1097"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1108"/> <source>{0} switches off 'topic protection'.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1102"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1113"/> <source>{0} sets invitation mask {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1106"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1117"/> <source>{0} removes the invitation mask {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1110"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1121"/> <source>Mode</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1128"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1139"/> <source>{0} sets mode for {1}: {2}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1155"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1166"/> <source>Help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1289"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1300"/> <source>--- New From Here ---</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1372"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1383"/> <source>Save Messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1355"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1366"/> <source>HTML Files (*.{0});;Text Files (*.txt);;All Files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1372"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1383"/> <source><p>The file <b>{0}</b> already exists. Overwrite it?</p></source> <translation type="unfinished"><p>Soubor <b>{0}</b> již existuje.</p><p>Má se přepsat?</p></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1391"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1402"/> <source>Error saving Messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1391"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1402"/> <source><p>The messages contents could not be written to <b>{0}</b></p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1405"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1416"/> <source>Copy</source> <translation type="unfinished">Kopírovat</translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1410"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1421"/> <source>Cut all</source> <translation type="unfinished">Vyjmout vše</translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1414"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1425"/> <source>Copy all</source> <translation type="unfinished">Kopírovat vše</translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1419"/> - <source>Clear</source> - <translation type="unfinished">Vyčistit</translation> - </message> - <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1424"/> - <source>Save</source> - <translation type="unfinished">Uložit</translation> - </message> - <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1428"/> - <source>Mark Current Position</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Network/IRC/IrcChannelWidget.py" line="1430"/> + <source>Clear</source> + <translation type="unfinished">Vyčistit</translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1435"/> + <source>Save</source> + <translation type="unfinished">Uložit</translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1439"/> + <source>Mark Current Position</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1441"/> <source>Remove Position Marker</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1480"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1547"/> <source>Who Is</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1483"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1550"/> <source>Private Chat</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1598"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1677"/> <source>Who</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1572"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1651"/> <source>End of WHO list for {0}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1595"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1674"/> <source> (Away)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1598"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1677"/> <source>{0} is {1}@{2} ({3}){4}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1936"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="2015"/> <source>Whois</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1620"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1699"/> <source>{0} is {1}@{2} ({3}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1666"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1745"/> <source>{0} is a user on channels: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1671"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1750"/> <source>{0} has voice on channels: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1676"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1755"/> <source>{0} is a halfop on channels: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1681"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1760"/> <source>{0} is an operator on channels: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1686"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1765"/> <source>{0} is owner of channels: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1691"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1770"/> <source>{0} is admin on channels: {1}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1710"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1789"/> <source>{0} is online via {1} ({2}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1729"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1808"/> <source>{0} is an IRC Operator.</source> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1762"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1841"/> <source>%n day(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -42135,7 +42238,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1776"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1855"/> <source>%n hour(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -42144,7 +42247,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1788"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1867"/> <source>%n minute(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -42153,7 +42256,7 @@ </translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1789"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1868"/> <source>%n second(s)</source> <translation type="unfinished"> <numerusform></numerusform> @@ -42162,25 +42265,25 @@ </translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1766"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1845"/> <source>{0} has been idle for {1}, {2}, {3}, and {4}.</source> <comment>{0} = name of person, {1} = (x days), {2} = (x hours), {3} = (x minutes), {4} = (x seconds)</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1779"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1858"/> <source>{0} has been idle for {1}, {2}, and {3}.</source> <comment>{0} = name of person, {1} = (x hours), {2} = (x minutes), {3} = (x seconds)</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1790"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1869"/> <source>{0} has been idle for {1} and {2}.</source> <comment>{0} = name of person, {1} = (x minutes), {3} = (x seconds)</comment> <translation type="unfinished"></translation> </message> <message numerus="yes"> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1798"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1877"/> <source>{0} has been idle for %n second(s).</source> <translation type="unfinished"> <numerusform></numerusform> @@ -42189,67 +42292,67 @@ </translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1805"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1884"/> <source>{0} has been online since {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1826"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1905"/> <source>End of WHOIS list for {0}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1844"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1923"/> <source>{0} is an identified user.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1862"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1941"/> <source>{0} is available for help.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1880"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1959"/> <source>{0} is logged in as {1}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1899"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1978"/> <source>{0} is actually using the host {1} (IP: {2}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1917"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1996"/> <source>{0} is using a secure connection.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1936"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="2015"/> <source>{0} is connecting from {1} (IP: {2}).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1203"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1214"/> <source>CTCP</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1181"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1192"/> <source>Received Version request from {0}.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1187"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1198"/> <source>Received CTCP-PING request from {0}, sending answer.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1195"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1206"/> <source>Received CTCP-CLIENTINFO request from {0}, sending answer.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1203"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1214"/> <source>Received unknown CTCP-{0} request from {1}.</source> <translation type="unfinished"></translation> </message> @@ -42259,20 +42362,45 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1486"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1565"/> <source>Refresh</source> <translation type="unfinished">Obnovit</translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1957"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="2036"/> <source>Edit Channel Topic</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Network/IRC/IrcChannelWidget.py" line="1957"/> + <location filename="../Network/IRC/IrcChannelWidget.py" line="2036"/> <source>Enter the topic for this channel:</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1521"/> + <source>Enter the message to be sent:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1555"/> + <source>Send Query</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1557"/> + <source>Send Notice</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1560"/> + <source>Send Ping</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Network/IRC/IrcChannelWidget.py" line="1562"/> + <source>Ignore User</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>IrcIdentitiesEditDialog</name> @@ -47329,47 +47457,47 @@ <context> <name>NetworkManager</name> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="181"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="182"/> <source>SSL Certificate Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="182"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="183"/> <source><b>{0}</b><p>The page you are trying to access has errors in the SSL certificate.</p><ul><li>{1}</li></ul><p>Would you like to make an exception?</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="192"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="193"/> <source>&Permanent accept</source> <translation type="unfinished">Akce&ptovat natrvalo</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="194"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="195"/> <source>&Temporary accept</source> <translation type="unfinished">Akcep&tovat dočasně</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="196"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="197"/> <source>&Reject</source> <translation type="unfinished">&Odmítnout</translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="229"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="230"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation type="unfinished"><b>Zadejte uživatelské jméno a heslo pro {0}', realm '{1}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="232"/> + <location filename="../WebBrowser/Network/NetworkManager.py" line="233"/> <source><b>Enter username and password for '{0}'</b></source> <translation type="unfinished"><b>Zadejte uživatelské jméno a heslo pro '{0}'</b></translation> </message> <message> - <location filename="../WebBrowser/Network/NetworkManager.py" line="275"/> - <source>Authentication required</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../WebBrowser/Network/NetworkManager.py" line="276"/> + <source>Authentication required</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../WebBrowser/Network/NetworkManager.py" line="277"/> <source>Authentication is required to access:</source> <translation type="unfinished"></translation> </message> @@ -51736,8 +51864,8 @@ <name>ProgramsDialog</name> <message> <location filename="../Preferences/ProgramsDialog.ui" line="14"/> - <source>External Programs</source> - <translation>Externí programy</translation> + <source>External Tools</source> + <translation type="unfinished">Externí programy</translation> </message> <message> <location filename="../Preferences/ProgramsDialog.ui" line="27"/> @@ -51908,202 +52036,202 @@ <translation type="obsolete">Ruby soubory (*.rb);;</translation> </message> <message> - <location filename="../Project/Project.py" line="275"/> + <location filename="../Project/Project.py" line="278"/> <source>Console</source> <translation>Konzole</translation> </message> <message> - <location filename="../Project/Project.py" line="276"/> + <location filename="../Project/Project.py" line="279"/> <source>Other</source> <translation>Ostatní</translation> </message> <message> - <location filename="../Project/Project.py" line="786"/> + <location filename="../Project/Project.py" line="789"/> <source>Read project file</source> <translation>Načíst soubor projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="888"/> + <location filename="../Project/Project.py" line="891"/> <source>Save project file</source> <translation>Uložit soubor projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="924"/> + <location filename="../Project/Project.py" line="927"/> <source>Read user project properties</source> <translation>Načíst uživatelská nastavení projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="948"/> + <location filename="../Project/Project.py" line="951"/> <source>Save user project properties</source> <translation>Uložit uživatelská nastavení projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="1006"/> + <location filename="../Project/Project.py" line="1009"/> <source>Read project session</source> <translation>Načíst relaci projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="1228"/> + <location filename="../Project/Project.py" line="1231"/> <source>Please save the project first.</source> <translation>Prosím, nejdříve uložte projekt.</translation> </message> <message> - <location filename="../Project/Project.py" line="1042"/> + <location filename="../Project/Project.py" line="1045"/> <source>Save project session</source> <translation>Uložit relaci projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="1071"/> + <location filename="../Project/Project.py" line="1074"/> <source>Delete project session</source> <translation>Smazat relaci projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="1105"/> + <location filename="../Project/Project.py" line="1108"/> <source>Read tasks</source> <translation>Načíst úlohy</translation> </message> <message> - <location filename="../Project/Project.py" line="1125"/> + <location filename="../Project/Project.py" line="1128"/> <source>Save tasks</source> <translation>Uložit úlohy</translation> </message> <message> - <location filename="../Project/Project.py" line="1182"/> + <location filename="../Project/Project.py" line="1185"/> <source>Read debugger properties</source> <translation>Načíst nastavení debuggeru</translation> </message> <message> - <location filename="../Project/Project.py" line="1216"/> + <location filename="../Project/Project.py" line="1219"/> <source>Save debugger properties</source> <translation>Uložit nastavení debuggeru</translation> </message> <message> - <location filename="../Project/Project.py" line="1242"/> + <location filename="../Project/Project.py" line="1245"/> <source>Delete debugger properties</source> <translation>Smazat nastavení debuggeru</translation> </message> <message> - <location filename="../Project/Project.py" line="1367"/> + <location filename="../Project/Project.py" line="1370"/> <source>Add Language</source> <translation>Přidat jazyk</translation> </message> <message> - <location filename="../Project/Project.py" line="1490"/> + <location filename="../Project/Project.py" line="1493"/> <source>Delete translation</source> <translation>Smazat překlad</translation> </message> <message> - <location filename="../Project/Project.py" line="1655"/> + <location filename="../Project/Project.py" line="1658"/> <source>Add file</source> <translation>Přidat soubor</translation> </message> <message> - <location filename="../Project/Project.py" line="1785"/> + <location filename="../Project/Project.py" line="1788"/> <source>The target directory must not be empty.</source> <translation>Cílový adresář nesmí být prázdný.</translation> </message> <message> - <location filename="../Project/Project.py" line="1796"/> + <location filename="../Project/Project.py" line="1799"/> <source>Add directory</source> <translation>Přidat adresář</translation> </message> <message> - <location filename="../Project/Project.py" line="1796"/> + <location filename="../Project/Project.py" line="1799"/> <source>The source directory must not be empty.</source> <translation>Cílový adresář nesmí být prázdný.</translation> </message> <message> - <location filename="../Project/Project.py" line="1933"/> + <location filename="../Project/Project.py" line="1936"/> <source>Rename file</source> <translation>Přejmenovat soubor</translation> </message> <message> - <location filename="../Project/Project.py" line="1957"/> + <location filename="../Project/Project.py" line="1960"/> <source>Rename File</source> <translation>Přejmenovat soubor</translation> </message> <message> - <location filename="../Project/Project.py" line="2200"/> + <location filename="../Project/Project.py" line="2203"/> <source>Delete file</source> <translation>Smazat soubor</translation> </message> <message> - <location filename="../Project/Project.py" line="2230"/> + <location filename="../Project/Project.py" line="2233"/> <source>Delete directory</source> <translation>Smazat adresář</translation> </message> <message> - <location filename="../Project/Project.py" line="2317"/> + <location filename="../Project/Project.py" line="2320"/> <source>Create project directory</source> <translation>Vytvořit adresář projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="2906"/> + <location filename="../Project/Project.py" line="2911"/> <source>New Project</source> <translation>Nový projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="2432"/> + <location filename="../Project/Project.py" line="2435"/> <source>Add existing files to the project?</source> <translation>Přidat existující soubory do projektu?</translation> </message> <message> - <location filename="../Project/Project.py" line="2551"/> + <location filename="../Project/Project.py" line="2554"/> <source>Would you like to edit the VCS command options?</source> <translation>Chcete editovat parametry VCS příkazu?</translation> </message> <message> - <location filename="../Project/Project.py" line="3756"/> + <location filename="../Project/Project.py" line="3763"/> <source>New project</source> <translation>Nový projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="2499"/> + <location filename="../Project/Project.py" line="2502"/> <source>Shall the project file be added to the repository?</source> <translation>Má být projekt přidán do repozitáře?</translation> </message> <message> - <location filename="../Project/Project.py" line="2523"/> + <location filename="../Project/Project.py" line="2526"/> <source>Select version control system for the project</source> <translation>Výběr verzovacího systému projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="3770"/> + <location filename="../Project/Project.py" line="3777"/> <source>Open project</source> <translation>Otevřít projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3049"/> + <location filename="../Project/Project.py" line="3056"/> <source>Project Files (*.e4p)</source> <translation>Soubory projektu (*.e4p)</translation> </message> <message> - <location filename="../Project/Project.py" line="3807"/> + <location filename="../Project/Project.py" line="3814"/> <source>Save project as</source> <translation>Uložit projekt jako</translation> </message> <message> - <location filename="../Project/Project.py" line="3064"/> + <location filename="../Project/Project.py" line="3071"/> <source>Save File</source> <translation>Uložit soubor</translation> </message> <message> - <location filename="../Project/Project.py" line="3100"/> + <location filename="../Project/Project.py" line="3107"/> <source>Close Project</source> <translation>Zavřít projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3100"/> + <location filename="../Project/Project.py" line="3107"/> <source>The current project has unsaved changes.</source> <translation>Aktuální projekt obsahuje neuložené změny.</translation> </message> <message> - <location filename="../Project/Project.py" line="3275"/> + <location filename="../Project/Project.py" line="3282"/> <source>Syntax errors detected</source> <translation>Zjištěny syntaktické chyby</translation> </message> <message numerus="yes"> - <location filename="../Project/Project.py" line="3275"/> + <location filename="../Project/Project.py" line="3282"/> <source>The project contains %n file(s) with syntax errors.</source> <translation> <numerusform>Projekt obsahuje %n soubor se syntaktickými chybami.</numerusform> @@ -52112,162 +52240,162 @@ </translation> </message> <message> - <location filename="../Project/Project.py" line="3756"/> + <location filename="../Project/Project.py" line="3763"/> <source>&New...</source> <translation>&Nový...</translation> </message> <message> - <location filename="../Project/Project.py" line="3761"/> + <location filename="../Project/Project.py" line="3768"/> <source>Generate a new project</source> <translation>Vygenerovat nový projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3762"/> + <location filename="../Project/Project.py" line="3769"/> <source><b>New...</b><p>This opens a dialog for entering the info for a new project.</p></source> <translation><b>Nový...</b><p>Otevře se dialogové okno pro zadání informací o novém projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3770"/> + <location filename="../Project/Project.py" line="3777"/> <source>&Open...</source> <translation>&Otevřít...</translation> </message> <message> - <location filename="../Project/Project.py" line="3775"/> + <location filename="../Project/Project.py" line="3782"/> <source>Open an existing project</source> <translation>Otevřít existující projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3776"/> - <source><b>Open...</b><p>This opens an existing project.</p></source> - <translation><b>Otevřít....</b><p>Otevře existující projekt.</p></translation> - </message> - <message> <location filename="../Project/Project.py" line="3783"/> + <source><b>Open...</b><p>This opens an existing project.</p></source> + <translation><b>Otevřít....</b><p>Otevře existující projekt.</p></translation> + </message> + <message> + <location filename="../Project/Project.py" line="3790"/> <source>Close project</source> <translation>Zavřít projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3783"/> + <location filename="../Project/Project.py" line="3790"/> <source>&Close</source> <translation>&Zavřít</translation> </message> <message> - <location filename="../Project/Project.py" line="3787"/> + <location filename="../Project/Project.py" line="3794"/> <source>Close the current project</source> <translation>Uzavře aktuální projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3788"/> - <source><b>Close</b><p>This closes the current project.</p></source> - <translation><b>Zavřít</b><p>Aktuální projekt se uzavře.</p></translation> - </message> - <message> <location filename="../Project/Project.py" line="3795"/> + <source><b>Close</b><p>This closes the current project.</p></source> + <translation><b>Zavřít</b><p>Aktuální projekt se uzavře.</p></translation> + </message> + <message> + <location filename="../Project/Project.py" line="3802"/> <source>Save project</source> <translation>Uložit projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3987"/> + <location filename="../Project/Project.py" line="3994"/> <source>&Save</source> <translation>&Uložit</translation> </message> <message> - <location filename="../Project/Project.py" line="3799"/> + <location filename="../Project/Project.py" line="3806"/> <source>Save the current project</source> <translation>Uložit aktuální projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="3800"/> - <source><b>Save</b><p>This saves the current project.</p></source> - <translation><b>Uložit</b><p>Aktuální projekt se uloží.</p></translation> - </message> - <message> <location filename="../Project/Project.py" line="3807"/> + <source><b>Save</b><p>This saves the current project.</p></source> + <translation><b>Uložit</b><p>Aktuální projekt se uloží.</p></translation> + </message> + <message> + <location filename="../Project/Project.py" line="3814"/> <source>Save &as...</source> <translation>Uložit j&ako...</translation> </message> <message> - <location filename="../Project/Project.py" line="3811"/> + <location filename="../Project/Project.py" line="3818"/> <source>Save the current project to a new file</source> <translation>Uloží aktuální projekt do nového souboru</translation> </message> <message> - <location filename="../Project/Project.py" line="3813"/> + <location filename="../Project/Project.py" line="3820"/> <source><b>Save as</b><p>This saves the current project to a new file.</p></source> <translation><b>Uložit jako</b><p>Uloží aktuální projekt do nového souboru.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3822"/> + <location filename="../Project/Project.py" line="3829"/> <source>Add files to project</source> <translation>Přidat soubory do projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="3822"/> - <source>Add &files...</source> - <translation>&Přidat soubory...</translation> - </message> - <message> - <location filename="../Project/Project.py" line="3827"/> - <source>Add files to the current project</source> - <translation>Přidat soubory do aktuálního projektu</translation> - </message> - <message> <location filename="../Project/Project.py" line="3829"/> + <source>Add &files...</source> + <translation>&Přidat soubory...</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3834"/> + <source>Add files to the current project</source> + <translation>Přidat soubory do aktuálního projektu</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3836"/> <source><b>Add files...</b><p>This opens a dialog for adding files to the current project. The place to add is determined by the file extension.</p></source> <translation><b>Přidat soubory...</b><p>Otevře dialog pri přidání souborů do aktuálního projektu. Místo pro přidání je definováno extenzí souborů.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3838"/> + <location filename="../Project/Project.py" line="3845"/> <source>Add directory to project</source> <translation>Přidat adresář do projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="3838"/> - <source>Add directory...</source> - <translation>Přidat adresář...</translation> - </message> - <message> - <location filename="../Project/Project.py" line="3843"/> - <source>Add a directory to the current project</source> - <translation>Přidat adresář do aktuálního projektu</translation> - </message> - <message> <location filename="../Project/Project.py" line="3845"/> + <source>Add directory...</source> + <translation>Přidat adresář...</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3850"/> + <source>Add a directory to the current project</source> + <translation>Přidat adresář do aktuálního projektu</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3852"/> <source><b>Add directory...</b><p>This opens a dialog for adding a directory to the current project.</p></source> <translation><b>Přidat adresář...</b><p>Otevře dialog pro přičtení adresáře do aktuálního projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3853"/> + <location filename="../Project/Project.py" line="3860"/> <source>Add translation to project</source> <translation>Přidat překlad do projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="3853"/> - <source>Add &translation...</source> - <translation>Přida&t překlad...</translation> - </message> - <message> - <location filename="../Project/Project.py" line="3858"/> - <source>Add a translation to the current project</source> - <translation>Přidat překlad do aktuálního projektu</translation> - </message> - <message> <location filename="../Project/Project.py" line="3860"/> + <source>Add &translation...</source> + <translation>Přida&t překlad...</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3865"/> + <source>Add a translation to the current project</source> + <translation>Přidat překlad do aktuálního projektu</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3867"/> <source><b>Add translation...</b><p>This opens a dialog for add a translation to the current project.</p></source> <translation><b>Přidat překlad</b><p>Otevře dialog pro přidání překladu do aktuálního projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3868"/> + <location filename="../Project/Project.py" line="3875"/> <source>Search new files</source> <translation>Hledat nové soubory</translation> </message> <message> - <location filename="../Project/Project.py" line="3868"/> + <location filename="../Project/Project.py" line="3875"/> <source>Searc&h new files...</source> <translation>&Hledat nové soubory...</translation> </message> <message> - <location filename="../Project/Project.py" line="3872"/> + <location filename="../Project/Project.py" line="3879"/> <source>Search new files in the project directory.</source> <translation>Hledat nové soubory v adresáři projektu.</translation> </message> @@ -52277,57 +52405,57 @@ <translation type="obsolete"><b>Hledat nové soubory...</b><p>Hledají se nové soubory (zdrojové, *.ui, *.idl) v adresáři projektu a v registrovaných podadresářích.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3898"/> + <location filename="../Project/Project.py" line="3905"/> <source>Project properties</source> <translation>Nastavení projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="3898"/> + <location filename="../Project/Project.py" line="3905"/> <source>&Properties...</source> <translation>&Natavení...</translation> </message> <message> - <location filename="../Project/Project.py" line="3903"/> + <location filename="../Project/Project.py" line="3910"/> <source>Show the project properties</source> <translation>Zobrazit nastavení projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="3904"/> - <source><b>Properties...</b><p>This shows a dialog to edit the project properties.</p></source> - <translation><b>Nastavení...</b><p>Zobrazí dialog s editací nastavení projektu.</p></translation> - </message> - <message> - <location filename="../Project/Project.py" line="3911"/> - <source>User project properties</source> - <translation>Uživatelská nastavení projektu</translation> - </message> - <message> <location filename="../Project/Project.py" line="3911"/> - <source>&User Properties...</source> - <translation>Uživat&elská nastavení...</translation> - </message> - <message> - <location filename="../Project/Project.py" line="3916"/> - <source>Show the user specific project properties</source> - <translation>Zobrazit uživatelem definovaná nastavení projektu</translation> + <source><b>Properties...</b><p>This shows a dialog to edit the project properties.</p></source> + <translation><b>Nastavení...</b><p>Zobrazí dialog s editací nastavení projektu.</p></translation> + </message> + <message> + <location filename="../Project/Project.py" line="3918"/> + <source>User project properties</source> + <translation>Uživatelská nastavení projektu</translation> </message> <message> <location filename="../Project/Project.py" line="3918"/> + <source>&User Properties...</source> + <translation>Uživat&elská nastavení...</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3923"/> + <source>Show the user specific project properties</source> + <translation>Zobrazit uživatelem definovaná nastavení projektu</translation> + </message> + <message> + <location filename="../Project/Project.py" line="3925"/> <source><b>User Properties...</b><p>This shows a dialog to edit the user specific project properties.</p></source> <translation><b>Uživatelská nastavení...</b><p>Zobrazí dialog s editací uživatelských nastavení projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3926"/> + <location filename="../Project/Project.py" line="3933"/> <source>Filetype Associations</source> <translation>Asociace typů souborů</translation> </message> <message> - <location filename="../Project/Project.py" line="3926"/> + <location filename="../Project/Project.py" line="3933"/> <source>Filetype Associations...</source> <translation>Asociace typů souborů...</translation> </message> <message> - <location filename="../Project/Project.py" line="3930"/> + <location filename="../Project/Project.py" line="3937"/> <source>Show the project filetype associations</source> <translation>Zobrazit asociace typů souborů</translation> </message> @@ -52337,347 +52465,347 @@ <translation type="obsolete"><b>Asociace typů souborů...</b><p>Zobrazí se dialog s editací asociace typů souborů v projektu. Na základě vzorku souborového jména tyto asociace určují typ souboru (zdrojový kód, formulář, interface nebo jiné). Tyto asociace jsou použity při přidávání souborů do projektu a při vyhledávání.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3962"/> + <location filename="../Project/Project.py" line="3969"/> <source>Debugger Properties</source> <translation>Nastavení debugeru</translation> </message> <message> - <location filename="../Project/Project.py" line="3962"/> + <location filename="../Project/Project.py" line="3969"/> <source>Debugger &Properties...</source> <translation>Nastavení &debuggeru...</translation> </message> <message> - <location filename="../Project/Project.py" line="3966"/> + <location filename="../Project/Project.py" line="3973"/> <source>Show the debugger properties</source> <translation>Zobrazit nastavení debugeru</translation> </message> <message> - <location filename="../Project/Project.py" line="3967"/> + <location filename="../Project/Project.py" line="3974"/> <source><b>Debugger Properties...</b><p>This shows a dialog to edit project specific debugger settings.</p></source> <translation><b>Nastavení debugeru...</b><p>Zobrazí dialog s editací nastavení debugeru.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3975"/> + <location filename="../Project/Project.py" line="3982"/> <source>Load</source> <translation>Načíst</translation> </message> <message> - <location filename="../Project/Project.py" line="3975"/> + <location filename="../Project/Project.py" line="3982"/> <source>&Load</source> <translation>&Načíst</translation> </message> <message> - <location filename="../Project/Project.py" line="3979"/> + <location filename="../Project/Project.py" line="3986"/> <source>Load the debugger properties</source> <translation>Načíst nastavení debugeru</translation> </message> <message> - <location filename="../Project/Project.py" line="3980"/> - <source><b>Load Debugger Properties</b><p>This loads the project specific debugger settings.</p></source> - <translation><b>Načíst nastavení debugeru</b><p>Načtou se nastavení debugeru do projektu.</p></translation> - </message> - <message> <location filename="../Project/Project.py" line="3987"/> + <source><b>Load Debugger Properties</b><p>This loads the project specific debugger settings.</p></source> + <translation><b>Načíst nastavení debugeru</b><p>Načtou se nastavení debugeru do projektu.</p></translation> + </message> + <message> + <location filename="../Project/Project.py" line="3994"/> <source>Save</source> <translation>Uložit</translation> </message> <message> - <location filename="../Project/Project.py" line="3991"/> + <location filename="../Project/Project.py" line="3998"/> <source>Save the debugger properties</source> <translation>Uložit nastavení debugeru</translation> </message> <message> - <location filename="../Project/Project.py" line="3992"/> - <source><b>Save Debugger Properties</b><p>This saves the project specific debugger settings.</p></source> - <translation><b>Uložit nastavení debugeru</b><p>Uloží nastavení debugeru definovaná v projektu..</p></translation> - </message> - <message> - <location filename="../Project/Project.py" line="3999"/> - <source>Delete</source> - <translation>Smazat</translation> - </message> - <message> <location filename="../Project/Project.py" line="3999"/> + <source><b>Save Debugger Properties</b><p>This saves the project specific debugger settings.</p></source> + <translation><b>Uložit nastavení debugeru</b><p>Uloží nastavení debugeru definovaná v projektu..</p></translation> + </message> + <message> + <location filename="../Project/Project.py" line="4006"/> + <source>Delete</source> + <translation>Smazat</translation> + </message> + <message> + <location filename="../Project/Project.py" line="4006"/> <source>&Delete</source> <translation>Sma&zat</translation> </message> <message> - <location filename="../Project/Project.py" line="4003"/> + <location filename="../Project/Project.py" line="4010"/> <source>Delete the debugger properties</source> <translation>Smazat nastavení debugeru</translation> </message> <message> - <location filename="../Project/Project.py" line="4004"/> + <location filename="../Project/Project.py" line="4011"/> <source><b>Delete Debugger Properties</b><p>This deletes the file containing the project specific debugger settings.</p></source> <translation><b>Smazat nastavení debugeru</b><p>Smaže se soubor obsahující nastavení debugeru v daném projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4012"/> + <location filename="../Project/Project.py" line="4019"/> <source>Reset</source> <translation></translation> </message> <message> - <location filename="../Project/Project.py" line="4012"/> + <location filename="../Project/Project.py" line="4019"/> <source>&Reset</source> <translation>&Reset</translation> </message> <message> - <location filename="../Project/Project.py" line="4016"/> + <location filename="../Project/Project.py" line="4023"/> <source>Reset the debugger properties</source> <translation>Reset nastavení debugeru</translation> </message> <message> - <location filename="../Project/Project.py" line="4017"/> + <location filename="../Project/Project.py" line="4024"/> <source><b>Reset Debugger Properties</b><p>This resets the project specific debugger settings.</p></source> <translation><b>Reset nastavení debugeru</b><p>Zresetuje nastavení debugeru v projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4026"/> + <location filename="../Project/Project.py" line="4033"/> <source>Load session</source> <translation>Načíst relaci</translation> </message> <message> - <location filename="../Project/Project.py" line="4030"/> + <location filename="../Project/Project.py" line="4037"/> <source>Load the projects session file.</source> <translation>Načíst soubor s relací projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4031"/> + <location filename="../Project/Project.py" line="4038"/> <source><b>Load session</b><p>This loads the projects session file. The session consists of the following data.<br>- all open source files<br>- all breakpoint<br>- the commandline arguments<br>- the working directory<br>- the exception reporting flag</p></source> <translation><b>Načíst relaci</b><p>Načte soubor s relací projektu. Relace obsahuje následující údaje:<br>- všechny otevřené zdrojové soubory<br>- všechny breakpointy<br>- argumenty příkazové řádky <br>- pracovní adresář<br>- příznak výjimky</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4044"/> + <location filename="../Project/Project.py" line="4051"/> <source>Save session</source> <translation>Uložit relaci</translation> </message> <message> - <location filename="../Project/Project.py" line="4048"/> + <location filename="../Project/Project.py" line="4055"/> <source>Save the projects session file.</source> <translation>Uložit soubor s relací projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4049"/> + <location filename="../Project/Project.py" line="4056"/> <source><b>Save session</b><p>This saves the projects session file. The session consists of the following data.<br>- all open source files<br>- all breakpoint<br>- the commandline arguments<br>- the working directory<br>- the exception reporting flag</p></source> <translation><b>Uložit relaci</b><p>Uloží soubor s relací projektu. Relace obsahuje následující údaje:<br>- všechny otevřené zdrojové soubory<br>- všechny breakpointy<br>- argumenty příkazové řádky <br>- pracovní adresář<br>- příznak výjimky</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4062"/> + <location filename="../Project/Project.py" line="4069"/> <source>Delete session</source> <translation>Smazat relaci</translation> </message> <message> - <location filename="../Project/Project.py" line="4066"/> + <location filename="../Project/Project.py" line="4073"/> <source>Delete the projects session file.</source> <translation>Smaže soubor s relací projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4067"/> + <location filename="../Project/Project.py" line="4074"/> <source><b>Delete session</b><p>This deletes the projects session file</p></source> <translation><b>Smazat relaci</b><p>Smaže soubor s relací projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4076"/> + <location filename="../Project/Project.py" line="4083"/> <source>Code Metrics</source> <translation>Metriky kódu</translation> </message> <message> - <location filename="../Project/Project.py" line="4076"/> + <location filename="../Project/Project.py" line="4083"/> <source>&Code Metrics...</source> <translation>Metriky &kódu...</translation> </message> <message> - <location filename="../Project/Project.py" line="4080"/> + <location filename="../Project/Project.py" line="4087"/> <source>Show some code metrics for the project.</source> <translation>Zobrazit metriky kódu projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4082"/> + <location filename="../Project/Project.py" line="4089"/> <source><b>Code Metrics...</b><p>This shows some code metrics for all Python files in the project.</p></source> <translation><b>Metriky kódu...</b><p>Zobrazí se metriky kódu všech python souborů v projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4090"/> + <location filename="../Project/Project.py" line="4097"/> <source>Python Code Coverage</source> <translation>Pokrytí python kódu</translation> </message> <message> - <location filename="../Project/Project.py" line="4090"/> + <location filename="../Project/Project.py" line="4097"/> <source>Code Co&verage...</source> <translation>Pokr&ytí kódu...</translation> </message> <message> - <location filename="../Project/Project.py" line="4094"/> + <location filename="../Project/Project.py" line="4101"/> <source>Show code coverage information for the project.</source> <translation>Zobrazit informace pokrytí kódu projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4096"/> + <location filename="../Project/Project.py" line="4103"/> <source><b>Code Coverage...</b><p>This shows the code coverage information for all Python files in the project.</p></source> <translation><b>Pokrytí kódu...</b><p>Zobrazí informace o pokrytí kódu ve všech python souborech projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4949"/> + <location filename="../Project/Project.py" line="4965"/> <source>Profile Data</source> <translation>Profilovat data</translation> </message> <message> - <location filename="../Project/Project.py" line="4104"/> + <location filename="../Project/Project.py" line="4111"/> <source>&Profile Data...</source> <translation>&Profilovat data...</translation> </message> <message> - <location filename="../Project/Project.py" line="4108"/> + <location filename="../Project/Project.py" line="4115"/> <source>Show profiling data for the project.</source> <translation>Zobrazit profilování dat projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4110"/> + <location filename="../Project/Project.py" line="4117"/> <source><b>Profile Data...</b><p>This shows the profiling data for the project.</p></source> <translation><b>Profilovat data</b><p>Zobrazí se profilování dat projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="5003"/> + <location filename="../Project/Project.py" line="5019"/> <source>Application Diagram</source> <translation>Diagram aplikace</translation> </message> <message> - <location filename="../Project/Project.py" line="4119"/> + <location filename="../Project/Project.py" line="4126"/> <source>&Application Diagram...</source> <translation>Diagram &aplikace...</translation> </message> <message> - <location filename="../Project/Project.py" line="4123"/> + <location filename="../Project/Project.py" line="4130"/> <source>Show a diagram of the project.</source> <translation>Zobrazit diagram projektu.</translation> </message> <message> - <location filename="../Project/Project.py" line="4125"/> + <location filename="../Project/Project.py" line="4132"/> <source><b>Application Diagram...</b><p>This shows a diagram of the project.</p></source> <translation><b>Diagram aplikace...</b><p>Zobrazí diagram projektu.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4249"/> + <location filename="../Project/Project.py" line="4256"/> <source>&Project</source> <translation>&Projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="4250"/> - <source>Open &Recent Projects</source> - <translation>Otevřít poslední p&rojekty</translation> - </message> - <message> - <location filename="../Project/Project.py" line="4251"/> - <source>&Version Control</source> - <translation>Kontrola &verzí</translation> - </message> - <message> - <location filename="../Project/Project.py" line="4255"/> - <source>Chec&k</source> - <translation>Zkontro&lovat</translation> - </message> - <message> <location filename="../Project/Project.py" line="4257"/> - <source>Sho&w</source> - <translation>Zo&brazit</translation> + <source>Open &Recent Projects</source> + <translation>Otevřít poslední p&rojekty</translation> </message> <message> <location filename="../Project/Project.py" line="4258"/> - <source>&Diagrams</source> - <translation>&Diagramy</translation> - </message> - <message> - <location filename="../Project/Project.py" line="4259"/> - <source>Session</source> - <translation>Relace</translation> - </message> - <message> - <location filename="../Project/Project.py" line="4260"/> - <source>Source &Documentation</source> - <translation>Zd&rojová dokumentace</translation> + <source>&Version Control</source> + <translation>Kontrola &verzí</translation> </message> <message> <location filename="../Project/Project.py" line="4262"/> + <source>Chec&k</source> + <translation>Zkontro&lovat</translation> + </message> + <message> + <location filename="../Project/Project.py" line="4264"/> + <source>Sho&w</source> + <translation>Zo&brazit</translation> + </message> + <message> + <location filename="../Project/Project.py" line="4265"/> + <source>&Diagrams</source> + <translation>&Diagramy</translation> + </message> + <message> + <location filename="../Project/Project.py" line="4266"/> + <source>Session</source> + <translation>Relace</translation> + </message> + <message> + <location filename="../Project/Project.py" line="4267"/> + <source>Source &Documentation</source> + <translation>Zd&rojová dokumentace</translation> + </message> + <message> + <location filename="../Project/Project.py" line="4269"/> <source>Debugger</source> <translation></translation> </message> <message> - <location filename="../Project/Project.py" line="4263"/> + <location filename="../Project/Project.py" line="4270"/> <source>Pac&kagers</source> <translation>Balíč&ky</translation> </message> <message> - <location filename="../Project/Project.py" line="4382"/> + <location filename="../Project/Project.py" line="4389"/> <source>Project</source> <translation>Projekt</translation> </message> <message> - <location filename="../Project/Project.py" line="4448"/> + <location filename="../Project/Project.py" line="4455"/> <source>&Clear</source> <translation>&Vyčistit</translation> </message> <message> - <location filename="../Project/Project.py" line="4611"/> + <location filename="../Project/Project.py" line="4618"/> <source>Search New Files</source> <translation>Hledat nové soubory</translation> </message> <message> - <location filename="../Project/Project.py" line="4611"/> + <location filename="../Project/Project.py" line="4618"/> <source>There were no new files found to be added.</source> <translation>Nebyly nalezeny žádné soubory, které je možné přidat.</translation> </message> <message> - <location filename="../Project/Project.py" line="4757"/> + <location filename="../Project/Project.py" line="4764"/> <source>Version Control System</source> <translation>Version Control System</translation> </message> <message> - <location filename="../Project/Project.py" line="4876"/> + <location filename="../Project/Project.py" line="4892"/> <source>Coverage Data</source> <translation>Datové pokrytí</translation> </message> <message> - <location filename="../Project/Project.py" line="4926"/> + <location filename="../Project/Project.py" line="4942"/> <source>There is no main script defined for the current project. Aborting</source> <translation>V aktuálním projektu nebyl určen hlavní skript. Zrušeno</translation> </message> <message> - <location filename="../Project/Project.py" line="4899"/> + <location filename="../Project/Project.py" line="4915"/> <source>Code Coverage</source> <translation>Pokrytí kódu</translation> </message> <message> - <location filename="../Project/Project.py" line="4899"/> + <location filename="../Project/Project.py" line="4915"/> <source>Please select a coverage file</source> <translation>Prosím, vyberte soubor pokrytí</translation> </message> <message> - <location filename="../Project/Project.py" line="4949"/> + <location filename="../Project/Project.py" line="4965"/> <source>Please select a profile file</source> <translation>Prosím, vyberte soubor s profilem</translation> </message> <message> - <location filename="../Project/Project.py" line="5003"/> + <location filename="../Project/Project.py" line="5019"/> <source>Include module names?</source> <translation>Včetně jmen modulů?</translation> </message> <message> - <location filename="../Project/Project.py" line="5197"/> + <location filename="../Project/Project.py" line="5213"/> <source>Create Package List</source> <translation>Vytvořit seznam balíčků</translation> </message> <message> - <location filename="../Project/Project.py" line="4148"/> + <location filename="../Project/Project.py" line="4155"/> <source>Create &Package List</source> <translation type="unfinished">Vytvořit Plugin &archiv</translation> </message> <message> - <location filename="../Project/Project.py" line="5474"/> + <location filename="../Project/Project.py" line="5490"/> <source>Create Plugin Archive</source> <translation>Vytvořit Plugin archiv</translation> </message> <message> - <location filename="../Project/Project.py" line="5148"/> + <location filename="../Project/Project.py" line="5164"/> <source><p>The file <b>PKGLIST</b> already exists.</p><p>Overwrite it?</p></source> <translation><p>Soubor <b>PKGLIST</b> již existuje.</p><p>Přepsat jej?</p></translation> </message> @@ -52687,142 +52815,142 @@ <translation type="obsolete"><p>Soubor <b>PKGLIST</b> neexistuje. Zrušeno...</p></translation> </message> <message> - <location filename="../Project/Project.py" line="5216"/> + <location filename="../Project/Project.py" line="5232"/> <source>The project does not have a main script defined. Aborting...</source> <translation>Projekt nemá definován hlavní skript. Zrušeno...</translation> </message> <message> - <location filename="../Project/Project.py" line="1686"/> + <location filename="../Project/Project.py" line="1689"/> <source><p>The source directory doesn't contain any files belonging to the selected category.</p></source> <translation><p>Zdrojový adresář neobsahuje žádné soubory související s danou kategorií.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="2906"/> + <location filename="../Project/Project.py" line="2911"/> <source>Select Version Control System</source> <translation>Vybrat Version Control System</translation> </message> <message> - <location filename="../Project/Project.py" line="2530"/> + <location filename="../Project/Project.py" line="2533"/> <source>None</source> <translation>None</translation> </message> <message> - <location filename="../Project/Project.py" line="385"/> + <location filename="../Project/Project.py" line="388"/> <source>Registering Project Type</source> <translation>Zaregistrovat typ projektu</translation> </message> <message> - <location filename="../Project/Project.py" line="4164"/> + <location filename="../Project/Project.py" line="4171"/> <source>Create Plugin &Archives</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="1367"/> + <location filename="../Project/Project.py" line="1370"/> <source>You have to specify a translation pattern first.</source> <translation>Nejdříve musíte specifikovat vzor překladu.</translation> </message> <message> - <location filename="../Project/Project.py" line="2631"/> + <location filename="../Project/Project.py" line="2634"/> <source>Translation Pattern</source> <translation>Vzor překladu</translation> </message> <message> - <location filename="../Project/Project.py" line="2631"/> + <location filename="../Project/Project.py" line="2634"/> <source>Enter the path pattern for translation files (use '%language%' in place of the language code):</source> <translation>Zadejte vzor cesty pro soubory s překlady (použijte '%language%' na místě s kódem jazyka):</translation> </message> <message> - <location filename="../Project/Project.py" line="3944"/> + <location filename="../Project/Project.py" line="3951"/> <source>Lexer Associations</source> <translation>Spojení lexeru</translation> </message> <message> - <location filename="../Project/Project.py" line="3944"/> + <location filename="../Project/Project.py" line="3951"/> <source>Lexer Associations...</source> <translation>Spojení lexeru...</translation> </message> <message> - <location filename="../Project/Project.py" line="3948"/> + <location filename="../Project/Project.py" line="3955"/> <source>Show the project lexer associations (overriding defaults)</source> <translation>Zobrazit spojení lexeru projektu (přepíše výchozí)</translation> </message> <message> - <location filename="../Project/Project.py" line="3950"/> + <location filename="../Project/Project.py" line="3957"/> <source><b>Lexer Associations...</b><p>This shows a dialog to edit the lexer associations of the project. These associations override the global lexer associations. Lexers are used to highlight the editor text.</p></source> <translation><b>Spojení lexeru...</b><p>Zobrazuje dialog s editací spojení lexeru projektu. Tato spojení přepisují globální lexer spojení. Lexer je použit pro zvýraznění textu v editoru.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="290"/> + <location filename="../Project/Project.py" line="293"/> <source>PySide GUI</source> <translation></translation> </message> <message> - <location filename="../Project/Project.py" line="291"/> + <location filename="../Project/Project.py" line="294"/> <source>PySide Console</source> <translation>PySide konzole</translation> </message> <message> - <location filename="../Project/Project.py" line="176"/> + <location filename="../Project/Project.py" line="179"/> <source>Python3 Files (*.py *.py3);;Python3 GUI Files (*.pyw *.pyw3);;</source> <translation>Python3 soubory (*.py *.py3);;Python3 GUI soubory (*.pyw *.pyw3);;</translation> </message> <message> - <location filename="../Project/Project.py" line="786"/> + <location filename="../Project/Project.py" line="789"/> <source><p>The project file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor projektu <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="888"/> + <location filename="../Project/Project.py" line="891"/> <source><p>The project file <b>{0}</b> could not be written.</p></source> <translation><p>Do souboru projektu <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="924"/> + <location filename="../Project/Project.py" line="927"/> <source><p>The user specific project properties file <b>{0}</b> could not be read.</p></source> <translation><p>Uživatelská nastavení projektu <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="948"/> + <location filename="../Project/Project.py" line="951"/> <source><p>The user specific project properties file <b>{0}</b> could not be written.</p></source> <translation><p>Do souboru s uživatelskými nastaveními <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1006"/> + <location filename="../Project/Project.py" line="1009"/> <source><p>The project session file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor s relací projektu <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1042"/> + <location filename="../Project/Project.py" line="1045"/> <source><p>The project session file <b>{0}</b> could not be written.</p></source> <translation><p>Do souboru s relací projektu <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1071"/> + <location filename="../Project/Project.py" line="1074"/> <source><p>The project session file <b>{0}</b> could not be deleted.</p></source> <translation><p>Soubor s relací projektu <b>{0}</b> nelze smazat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1105"/> + <location filename="../Project/Project.py" line="1108"/> <source><p>The tasks file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor s úlohami <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1125"/> + <location filename="../Project/Project.py" line="1128"/> <source><p>The tasks file <b>{0}</b> could not be written.</p></source> <translation><p>Do souboru s úlohami <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1182"/> + <location filename="../Project/Project.py" line="1185"/> <source><p>The project debugger properties file <b>{0}</b> could not be read.</p></source> <translation><p>Soubor s nastaveními debuggeru <b>{0}</b> nelze načíst.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1216"/> + <location filename="../Project/Project.py" line="1219"/> <source><p>The project debugger properties file <b>{0}</b> could not be written.</p></source> <translation><p>Do souboru s nastaveními debuggeru <b>{0}</b> nelze zapisovat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1242"/> + <location filename="../Project/Project.py" line="1245"/> <source><p>The project debugger properties file <b>{0}</b> could not be deleted.</p></source> <translation><p>Soubor s nastaveními debuggeru <b>{0}</b> nelze smazat.</p></translation> </message> @@ -52832,17 +52960,17 @@ <translation type="obsolete"><p>Vybraný soubor s překladem <b>{0}</b> nelze smazat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1717"/> + <location filename="../Project/Project.py" line="1720"/> <source><p>The file <b>{0}</b> already exists.</p><p>Overwrite it?</p></source> <translation><p>Soubor <b>{0}</b> již existuje.</p><p>Má se přepsat?</p></translation> </message> <message> - <location filename="../Project/Project.py" line="3064"/> + <location filename="../Project/Project.py" line="3071"/> <source><p>The file <b>{0}</b> already exists. Overwrite it?</p></source> <translation><p>Soubor <b>{0}</b> již existuje.</p><p>Má se přepsat?</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1957"/> + <location filename="../Project/Project.py" line="1960"/> <source><p>The file <b>{0}</b> could not be renamed.<br />Reason: {1}</p></source> <translation><p>Soubor <b>{0}</b> nemůže být přejmenován.<br />Důvod: {1}</p></translation> </message> @@ -52857,17 +52985,17 @@ <translation type="obsolete"><p>Vybraný adresář <b>{0}</b> nelze smazat.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="2317"/> + <location filename="../Project/Project.py" line="2320"/> <source><p>The project directory <b>{0}</b> could not be created.</p></source> <translation><p>Adresář projektu <b>{0}</b> nelze vytvořit.</p></translation> </message> <message> - <location filename="../Project/Project.py" line="4757"/> + <location filename="../Project/Project.py" line="4764"/> <source><p>The selected VCS <b>{0}</b> could not be found.<br/>Disabling version control.</p><p>{1}</p></source> <translation><p>Vybrané VCS <b>{0}</b> nebylo nalezeno.<br/>Kontrola verzí vypnuta.</p><p>{1}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="5197"/> + <location filename="../Project/Project.py" line="5213"/> <source><p>The file <b>PKGLIST</b> could not be created.</p><p>Reason: {0}</p></source> <translation><p>Soubor <b>PKGLIST</b> nelze vytvořit.</p><p>Důvod: {0}</p></translation> </message> @@ -52877,117 +53005,117 @@ <translation type="obsolete"><p>Soubor <b>PKGLIST</b> nelze načíst.</p><p>Důvod: {0}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="5358"/> + <location filename="../Project/Project.py" line="5374"/> <source><p>The file <b>{0}</b> could not be stored in the archive. Ignoring it.</p><p>Reason: {1}</p></source> <translation><p>Soubor <b>{0}</b> nelze uložit do archivu. Ingorováno.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="5432"/> + <location filename="../Project/Project.py" line="5448"/> <source><p>The plugin file <b>{0}</b> could not be read.</p><p>Reason: {1}</p></source> <translation><p>Plugin soubor <b>{0}</b> nelze přečíst.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1642"/> + <location filename="../Project/Project.py" line="1645"/> <source><p>The selected file <b>{0}</b> could not be added to <b>{1}</b>.</p><p>Reason: {2}</p></source> <translation><p>Vybraný soubor <b>{0}</b> nelze přidat do <b>{1}</b>.</p><p>Důvod: {2}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="1699"/> + <location filename="../Project/Project.py" line="1702"/> <source><p>The target directory <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation><p>Cílový adresář <b>{0}</b> nelze vytvořit.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/Project.py" line="173"/> + <location filename="../Project/Project.py" line="176"/> <source>Python2 Files (*.py2);;Python2 GUI Files (*.pyw2);;</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2398"/> + <location filename="../Project/Project.py" line="2401"/> <source>Create main script</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2398"/> + <location filename="../Project/Project.py" line="2401"/> <source><p>The mainscript <b>{0}</b> could not be created.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4133"/> + <location filename="../Project/Project.py" line="4140"/> <source>Load Diagram</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4133"/> + <location filename="../Project/Project.py" line="4140"/> <source>&Load Diagram...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4137"/> + <location filename="../Project/Project.py" line="4144"/> <source>Load a diagram from file.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4139"/> + <location filename="../Project/Project.py" line="4146"/> <source><b>Load Diagram...</b><p>This loads a diagram from file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="362"/> + <location filename="../Project/Project.py" line="365"/> <source><p>The Programming Language <b>{0}</b> is not supported.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="385"/> + <location filename="../Project/Project.py" line="388"/> <source><p>The Project type <b>{0}</b> is already registered.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="373"/> + <location filename="../Project/Project.py" line="376"/> <source><p>The Project type <b>{0}</b> is already registered with Programming Language <b>{1}</b>.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="272"/> + <location filename="../Project/Project.py" line="275"/> <source>PyQt5 GUI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="273"/> + <location filename="../Project/Project.py" line="276"/> <source>PyQt5 Console</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4745"/> + <location filename="../Project/Project.py" line="4752"/> <source><p>The selected VCS <b>{0}</b> could not be found. <br/>Reverting override.</p><p>{1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5474"/> + <location filename="../Project/Project.py" line="5490"/> <source><p>The plugin file <b>{0}</b> could not be read.</p> <p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4153"/> + <location filename="../Project/Project.py" line="4160"/> <source>Create an initial PKGLIST file for an eric6 plugin.</source> <translation type="unfinished">Vytvořit soubor eric5 plugin archivu. {6 ?}</translation> </message> <message> - <location filename="../Project/Project.py" line="4155"/> + <location filename="../Project/Project.py" line="4162"/> <source><b>Create Package List</b><p>This creates an initial list of files to include in an eric6 plugin archive. The list is created from the project file.</p></source> <translation type="unfinished"><b>Vytvořit Plugin archiv</b><p>Vytvoří soubor s eric5 plugin archivem za použití seznamu souborů daných v PKGLIST souboru. Jméno archivu je odvozeno ze jména hlavního skriptu.</p> {6 ?}</translation> </message> <message> - <location filename="../Project/Project.py" line="4169"/> + <location filename="../Project/Project.py" line="4176"/> <source>Create eric6 plugin archive files.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4171"/> + <location filename="../Project/Project.py" line="4178"/> <source><b>Create Plugin Archives</b><p>This creates eric6 plugin archive files using the list of files given in a PKGLIST* file. The archive name is built from the main script name if not designated in the package list file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5323"/> + <location filename="../Project/Project.py" line="5339"/> <source><p>The eric6 plugin archive file <b>{0}</b> could not be created.</p><p>Reason: {1}</p></source> <translation type="unfinished"><p>Soubor s eric5 plugin archivem <b>{0}</b> nelze vytvořit. Zrušeno...</p><p>Důvod: {1}</p> {6 ?} {0}?} {1}?}</translation> </message> @@ -52997,98 +53125,98 @@ <translation type="obsolete"><p>Soubor s eric5 plugin archivem <b>{0}</b> byl úspěšně vytvořen.</p> {6 ?} {0}?}</translation> </message> <message> - <location filename="../Project/Project.py" line="270"/> + <location filename="../Project/Project.py" line="273"/> <source>PyQt4 GUI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="271"/> - <source>PyQt4 Console</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Project/Project.py" line="274"/> + <source>PyQt4 Console</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/Project.py" line="277"/> <source>Eric6 Plugin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2876"/> + <location filename="../Project/Project.py" line="2881"/> <source>Create project management directory</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2876"/> + <location filename="../Project/Project.py" line="2881"/> <source><p>The project directory <b>{0}</b> is not writable.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3883"/> + <location filename="../Project/Project.py" line="3890"/> <source>Alt+Ctrl+P</source> <comment>Project|Search Project File</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3889"/> + <location filename="../Project/Project.py" line="3896"/> <source>Search for a file in the project list of files.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3891"/> + <location filename="../Project/Project.py" line="3898"/> <source><b>Search Project File</b><p>This searches for a file in the project list of files.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3883"/> + <location filename="../Project/Project.py" line="3890"/> <source>Search Project File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3883"/> + <location filename="../Project/Project.py" line="3890"/> <source>Search Project File...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5252"/> + <location filename="../Project/Project.py" line="5268"/> <source>Create Plugin Archives</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4181"/> - <source>Create Plugin Archives (Snapshot)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Project/Project.py" line="4181"/> - <source>Create Plugin Archives (&Snapshot)</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Project/Project.py" line="4186"/> - <source>Create eric6 plugin archive files (snapshot releases).</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Project/Project.py" line="4188"/> + <source>Create Plugin Archives (Snapshot)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/Project.py" line="4188"/> + <source>Create Plugin Archives (&Snapshot)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/Project.py" line="4193"/> + <source>Create eric6 plugin archive files (snapshot releases).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Project/Project.py" line="4195"/> <source><b>Create Plugin Archives (Snapshot)</b><p>This creates eric6 plugin archive files using the list of files given in the PKGLIST* file. The archive name is built from the main script name if not designated in the package list file. The version entry of the main script is modified to reflect a snapshot release.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5230"/> + <location filename="../Project/Project.py" line="5246"/> <source>Select package lists:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5248"/> + <location filename="../Project/Project.py" line="5264"/> <source>Creating plugin archives...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5248"/> + <location filename="../Project/Project.py" line="5264"/> <source>Abort</source> <translation type="unfinished">Přerušit</translation> </message> <message> - <location filename="../Project/Project.py" line="5248"/> + <location filename="../Project/Project.py" line="5264"/> <source>%v/%m Archives</source> <translation type="unfinished"></translation> </message> @@ -53098,142 +53226,142 @@ <translation type="obsolete">Pokrytí</translation> </message> <message> - <location filename="../Project/Project.py" line="5265"/> + <location filename="../Project/Project.py" line="5281"/> <source><p>The file <b>{0}</b> could not be read.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5377"/> + <location filename="../Project/Project.py" line="5393"/> <source><p>The eric6 plugin archive files were created with some errors.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5380"/> + <location filename="../Project/Project.py" line="5396"/> <source><p>The eric6 plugin archive files were created successfully.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5241"/> + <location filename="../Project/Project.py" line="5257"/> <source><p>No package list files (PKGLIST*) available or selected. Aborting...</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5295"/> + <location filename="../Project/Project.py" line="5311"/> <source><p>The file <b>{0}</b> is not ready yet.</p><p>Please rework it and delete the'; initial_list' line of the header.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3874"/> + <location filename="../Project/Project.py" line="3881"/> <source><b>Search new files...</b><p>This searches for new files (sources, *.ui, *.idl, *.proto) in the project directory and registered subdirectories.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="3932"/> + <location filename="../Project/Project.py" line="3939"/> <source><b>Filetype Associations...</b><p>This shows a dialog to edit the file type associations of the project. These associations determine the type (source, form, interface, protocol or others) with a filename pattern. They are used when adding a file to the project and when performing a search for new files.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="1490"/> + <location filename="../Project/Project.py" line="1493"/> <source><p>The selected translation file <b>{0}</b> could not be deleted.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2200"/> + <location filename="../Project/Project.py" line="2203"/> <source><p>The selected file <b>{0}</b> could not be deleted.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2230"/> + <location filename="../Project/Project.py" line="2233"/> <source><p>The selected directory <b>{0}</b> could not be deleted.</p><p>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2702"/> + <location filename="../Project/Project.py" line="2705"/> <source>Create Makefile</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="2702"/> + <location filename="../Project/Project.py" line="2705"/> <source><p>The makefile <b>{0}</b> could not be created.<br/>Reason: {1}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5657"/> + <location filename="../Project/Project.py" line="5673"/> <source>Execute Make</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4202"/> + <location filename="../Project/Project.py" line="4209"/> <source>&Execute Make</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4206"/> + <location filename="../Project/Project.py" line="4213"/> <source>Perform a 'make' run.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4208"/> + <location filename="../Project/Project.py" line="4215"/> <source><b>Execute Make</b><p>This performs a 'make' run to rebuild the configured target.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5637"/> + <location filename="../Project/Project.py" line="5653"/> <source>Test for Changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4216"/> + <location filename="../Project/Project.py" line="4223"/> <source>&Test for Changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4220"/> + <location filename="../Project/Project.py" line="4227"/> <source>Question 'make', if a rebuild is needed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4222"/> + <location filename="../Project/Project.py" line="4229"/> <source><b>Test for Changes</b><p>This questions 'make', if a rebuild of the configured target is necessary.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="4264"/> + <location filename="../Project/Project.py" line="4271"/> <source>Make</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5585"/> + <location filename="../Project/Project.py" line="5601"/> <source>The make process did not start.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5630"/> + <location filename="../Project/Project.py" line="5646"/> <source>The make process crashed.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5640"/> + <location filename="../Project/Project.py" line="5656"/> <source><p>There are changes that require the configured make target <b>{0}</b> to be rebuilt.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5645"/> + <location filename="../Project/Project.py" line="5661"/> <source><p>There are changes that require the default make target to be rebuilt.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="5657"/> + <location filename="../Project/Project.py" line="5673"/> <source>The makefile contains errors.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="301"/> + <location filename="../Project/Project.py" line="304"/> <source>PySide2 GUI</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Project/Project.py" line="302"/> + <location filename="../Project/Project.py" line="305"/>