Mon, 12 Aug 2013 22:21:53 +0200
Merge with default branch.
--- a/.hgignore Mon Aug 12 19:41:53 2013 +0200 +++ b/.hgignore Mon Aug 12 22:21:53 2013 +0200 @@ -13,3 +13,4 @@ glob:tmp glob:__pycache__ glob:**.DS_Store +glob:**.coverage
--- a/.issues/.properties Mon Aug 12 19:41:53 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ -[Category] - -[State] -new = -assigned = -investigating = -scheduled = -testing = -closed = - -[Resolution] -fixed = -rejected = -duplicate = -cannot reproduce = - -[Assigned-To] -
--- a/APIs/Python3/eric5.api Mon Aug 12 19:41:53 2013 +0200 +++ b/APIs/Python3/eric5.api Mon Aug 12 22:21:53 2013 +0200 @@ -2951,7 +2951,7 @@ eric5.Helpviewer.OpenSearch.OpenSearchWriter.OpenSearchWriter.write?4(device, engine) eric5.Helpviewer.OpenSearch.OpenSearchWriter.OpenSearchWriter?1() eric5.Helpviewer.PageScreenDialog.PageScreenDialog.on_buttonBox_clicked?4(button) -eric5.Helpviewer.PageScreenDialog.PageScreenDialog?1(view, parent=None) +eric5.Helpviewer.PageScreenDialog.PageScreenDialog?1(view, visibleOnly=False, parent=None) eric5.Helpviewer.Passwords.LoginForm.LoginForm.isValid?4() eric5.Helpviewer.Passwords.LoginForm.LoginForm?1() eric5.Helpviewer.Passwords.PasswordManager.PasswordManager.FORMS?7 @@ -3353,9 +3353,10 @@ eric5.IconEditor.IconEditorWindow.IconEditorWindow.editorClosed?7 eric5.IconEditor.IconEditorWindow.IconEditorWindow.event?4(evt) eric5.IconEditor.IconEditorWindow.IconEditorWindow.gestureEvent?4(evt) +eric5.IconEditor.IconEditorWindow.IconEditorWindow.setRecentPaths?4(openPath, savePath) eric5.IconEditor.IconEditorWindow.IconEditorWindow.wheelEvent?4(evt) eric5.IconEditor.IconEditorWindow.IconEditorWindow.windows?7 -eric5.IconEditor.IconEditorWindow.IconEditorWindow?1(fileName="", parent=None, fromEric=False, initShortcutsOnly=False) +eric5.IconEditor.IconEditorWindow.IconEditorWindow?1(fileName="", parent=None, fromEric=False, initShortcutsOnly=False, project=None) eric5.IconEditor.IconSizeDialog.IconSizeDialog.getData?4() eric5.IconEditor.IconSizeDialog.IconSizeDialog?1(width, height, parent=None) eric5.IconEditor.cursors.cursors_rc.qCleanupResources?4() @@ -4275,6 +4276,8 @@ eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.MercurialPage.on_configButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.MercurialPage.save?4() eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.MercurialPage?1(plugin) +eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.MercurialUserDataDialog.getData?4() +eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.MercurialUserDataDialog?1(parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog.HgFetchDialog.getData?4() eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog.HgFetchDialog.on_recentComboBox_activated?4(txt) eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog.HgFetchDialog?1(parent=None) @@ -4328,6 +4331,11 @@ eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.HgAnnotateDialog.on_sendButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.HgAnnotateDialog.start?4(fn) eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.HgAnnotateDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.HgArchiveDialog.getData?4() +eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.HgArchiveDialog.on_archiveButton_clicked?4() +eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.HgArchiveDialog.on_archiveEdit_textChanged?4(archive) +eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.HgArchiveDialog.on_typeComboBox_activated?4(index) +eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.HgArchiveDialog?1(vcs, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.HgBackoutDialog.getParameters?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.HgBackoutDialog.on_bookmarkButton_toggled?4(checked) eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.HgBackoutDialog.on_bookmarkCombo_editTextChanged?4(txt) @@ -4380,7 +4388,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.HgCommitDialog.on_recentComboBox_activated?4(txt) eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.HgCommitDialog.rejected?7 eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.HgCommitDialog.showEvent?4(evt) -eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.HgCommitDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.HgCommitDialog?1(vcs, mq, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgCopyDialog.HgCopyDialog.getData?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgCopyDialog.HgCopyDialog.on_dirButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgCopyDialog.HgCopyDialog.on_targetEdit_textChanged?4(txt) @@ -4462,14 +4470,14 @@ eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_stopCheckBox_clicked?4(checked) eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.on_toDate_dateChanged?4(date) eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog.start?4(fn) -eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog?1(vcs, mode="log", bundle=None, parent=None) +eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.HgLogBrowserDialog?1(vcs, mode="log", bundle=None, isFile=False, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog.closeEvent?4(e) eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog.keyPressEvent?4(evt) eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog.on_input_returnPressed?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog.on_passwordCheckBox_toggled?4(isOn) eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog.on_sendButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog.start?4(fn, noEntries=0, revisions=None) -eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog?1(vcs, mode="log", bundle=None, parent=None) +eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.HgLogDialog?1(vcs, mode="log", bundle=None, isFile=False, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgMergeDialog.HgMergeDialog.getParameters?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgMergeDialog.HgMergeDialog.on_bookmarkButton_toggled?4(checked) eric5.Plugins.VcsPlugins.vcsMercurial.HgMergeDialog.HgMergeDialog.on_bookmarkCombo_editTextChanged?4(txt) @@ -4549,15 +4557,21 @@ eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_refreshButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_restoreButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_revertButton_clicked?4() +eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_sbsDiffButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_sendButton_clicked?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_statusFilterCombo_activated?4(txt) eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_statusList_itemChanged?4(item, column) eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.on_statusList_itemSelectionChanged?4() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog.start?4(fn) -eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.HgStatusDialog?1(vcs, mq=False, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread._performMonitor?5() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread._shutdown?5() eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.HgStatusMonitorThread?1(interval, project, vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.HgSummaryDialog.closeEvent?4(e) +eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.HgSummaryDialog.on_buttonBox_clicked?4(button) +eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.HgSummaryDialog.on_refreshButton_clicked?4() +eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.HgSummaryDialog.start?4(path, mq=False) +eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.HgSummaryDialog?1(vcs, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.HgTagBranchListDialog.closeEvent?4(e) eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.HgTagBranchListDialog.keyPressEvent?4(evt) eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.HgTagBranchListDialog.on_buttonBox_clicked?4(button) @@ -4574,6 +4588,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.HgTagDialog.on_tagCombo_editTextChanged?4(text) eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.HgTagDialog?1(taglist, parent=None) eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.getConfigPath?4() +eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.prepareProcess?4(proc, encoding="", language="") eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.HgProjectBrowserHelper._addVCSMenu?5(mainMenu) eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.HgProjectBrowserHelper._addVCSMenuBack?5(mainMenu) eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.HgProjectBrowserHelper._addVCSMenuDir?5(mainMenu) @@ -4686,6 +4701,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueGuardsList?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueGuardsListAll?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueGuardsSetActive?4(name) +eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueInit?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueListPatches?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueListQueues?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueNewPatch?4(name) @@ -4694,6 +4710,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueRenamePatch?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueShowHeader?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueShowPatch?4(name) +eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.hgQueueStatus?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues.shutdown?4() eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.Queues?1(vcs) eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.HgRebaseDialog.HgRebaseDialog.getData?4() @@ -4749,6 +4766,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hasSubrepositories?4() eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgAddSubrepository?4() eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgAnnotate?4(name) +eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgArchive?4() eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBackout?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBisect?4(name, subcommand) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgBranch?4(name) @@ -4770,7 +4788,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgIncoming?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgInfo?4(ppath, mode="heads") eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgListTagBranch?4(path, tags=True) -eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgLogBrowser?4(path) +eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgLogBrowser?4(path, isFile=False) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgNormalizeURL?4(url) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgOutgoing?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgPhase?4(name, data=None) @@ -4782,10 +4800,12 @@ eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgResolve?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgRevert?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgRollback?4(name) +eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgSbsDiff?4(name, extended=False, revisions=None) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgServe?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgShowBranch?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgShowConfig?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgShowPaths?4(name) +eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgSummary?4(mq=False) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgUnbundle?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.hgVerify?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.isExtensionActive?4(extensionName) @@ -4796,7 +4816,7 @@ eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsCheckout?4(vcsDataDict, projectDir, noDialog=False) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsCleanup?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsCommandLine?4(name) -eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsCommit?4(name, message, noDialog=False, closeBranch=False) +eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsCommit?4(name, message, noDialog=False, closeBranch=False, mq=False) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsConvertProject?4(vcsDataDict, project) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsDiff?4(name) eric5.Plugins.VcsPlugins.vcsMercurial.hg.Hg.vcsExists?4() @@ -4904,10 +4924,10 @@ eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.SvnLogBrowserDialog.on_stopCheckBox_clicked?4(checked) eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.SvnLogBrowserDialog.on_toDate_dateChanged?4(date) eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.SvnLogBrowserDialog.start?4(fn) -eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.SvnLogBrowserDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.SvnLogBrowserDialog?1(vcs, isFile=False, parent=None) eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.SvnLogDialog.on_buttonBox_clicked?4(button) eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.SvnLogDialog.start?4(fn, noEntries=0) -eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.SvnLogDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.SvnLogDialog?1(vcs, isFile=False, parent=None) eric5.Plugins.VcsPlugins.vcsPySvn.SvnLoginDialog.SvnLoginDialog.getData?4() eric5.Plugins.VcsPlugins.vcsPySvn.SvnLoginDialog.SvnLoginDialog?1(realm, username, may_save, parent=None) eric5.Plugins.VcsPlugins.vcsPySvn.SvnMergeDialog.SvnMergeDialog.getParameters?4() @@ -4953,6 +4973,7 @@ eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_refreshButton_clicked?4() eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_restoreButton_clicked?4() eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_revertButton_clicked?4() +eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_sbsDiffButton_clicked?4() eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_statusFilterCombo_activated?4(txt) eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_statusList_itemChanged?4(item, column) eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.SvnStatusDialog.on_statusList_itemSelectionChanged?4() @@ -4995,12 +5016,13 @@ eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnListProps?4(name, recursive=False) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnListTagBranch?4(path, tags=True) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnLock?4(name, stealIt=False, parent=None) -eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnLogBrowser?4(path) +eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnLogBrowser?4(path, isFile=False) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnNormalizeURL?4(url) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnRelocate?4(projectPath) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnRemoveFromChangelist?4(names) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnRepoBrowser?4(projectPath=None) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnResolve?4(name) +eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnSbsDiff?4(name, extended=False, revisions=None) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnSetProp?4(name, recursive=False) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnShowChangelists?4(path) eric5.Plugins.VcsPlugins.vcsPySvn.subversion.Subversion.svnUnlock?4(name, breakIt=False, parent=None) @@ -5130,14 +5152,14 @@ eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog.on_stopCheckBox_clicked?4(checked) eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog.on_toDate_dateChanged?4(date) eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog.start?4(fn) -eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.SvnLogBrowserDialog?1(vcs, isFile=False, parent=None) eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog.closeEvent?4(e) eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog.keyPressEvent?4(evt) eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog.on_input_returnPressed?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog.on_passwordCheckBox_toggled?4(isOn) eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog.on_sendButton_clicked?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog.start?4(fn, noEntries=0) -eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog?1(vcs, parent=None) +eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.SvnLogDialog?1(vcs, isFile=False, parent=None) eric5.Plugins.VcsPlugins.vcsSubversion.SvnMergeDialog.SvnMergeDialog.getParameters?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnMergeDialog.SvnMergeDialog.on_tag1Combo_editTextChanged?4(text) eric5.Plugins.VcsPlugins.vcsSubversion.SvnMergeDialog.SvnMergeDialog.on_tag2Combo_editTextChanged?4(text) @@ -5189,6 +5211,7 @@ eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_refreshButton_clicked?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_restoreButton_clicked?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_revertButton_clicked?4() +eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_sbsDiffButton_clicked?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_sendButton_clicked?4() eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_statusFilterCombo_activated?4(txt) eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.SvnStatusDialog.on_statusList_itemChanged?4(item, column) @@ -5232,12 +5255,13 @@ eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnListProps?4(name, recursive=False) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnListTagBranch?4(path, tags=True) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnLock?4(name, stealIt=False, parent=None) -eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnLogBrowser?4(path) +eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnLogBrowser?4(path, isFile=False) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnNormalizeURL?4(url) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnRelocate?4(projectPath) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnRemoveFromChangelist?4(names) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnRepoBrowser?4(projectPath=None) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnResolve?4(name) +eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnSbsDiff?4(name, extended=False, revisions=None) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnSetProp?4(name, recursive=False) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnShowChangelists?4(path) eric5.Plugins.VcsPlugins.vcsSubversion.subversion.Subversion.svnUnlock?4(name, breakIt=False, parent=None) @@ -7534,6 +7558,7 @@ eric5.UI.BrowserModel.BrowserFileItem.isDFile?4() eric5.UI.BrowserModel.BrowserFileItem.isDesignerFile?4() eric5.UI.BrowserModel.BrowserFileItem.isIdlFile?4() +eric5.UI.BrowserModel.BrowserFileItem.isJavaScriptFile?4() eric5.UI.BrowserModel.BrowserFileItem.isLinguistFile?4() eric5.UI.BrowserModel.BrowserFileItem.isMultiProjectFile?4() eric5.UI.BrowserModel.BrowserFileItem.isPixmapFile?4() @@ -7617,6 +7642,7 @@ eric5.UI.BrowserSortFilterProxyModel.BrowserSortFilterProxyModel.preferencesChanged?4() eric5.UI.BrowserSortFilterProxyModel.BrowserSortFilterProxyModel.sort?4(column, order) eric5.UI.BrowserSortFilterProxyModel.BrowserSortFilterProxyModel?1(parent=None) +eric5.UI.CompareDialog.CompareDialog.compare?4(lines1, lines2, name1="", name2="") eric5.UI.CompareDialog.CompareDialog.on_buttonBox_clicked?4(button) eric5.UI.CompareDialog.CompareDialog.on_diffButton_clicked?4() eric5.UI.CompareDialog.CompareDialog.on_downButton_clicked?4() @@ -7898,6 +7924,7 @@ eric5.Utilities.ClassBrowsers.ClbrBaseClasses._ClbrBase.setEndLine?4(endLineNo) eric5.Utilities.ClassBrowsers.ClbrBaseClasses._ClbrBase?2(module, name, file, lineno) eric5.Utilities.ClassBrowsers.IDL_SOURCE?7 +eric5.Utilities.ClassBrowsers.JS_SOURCE?7 eric5.Utilities.ClassBrowsers.PTL_SOURCE?7 eric5.Utilities.ClassBrowsers.PY_SOURCE?7 eric5.Utilities.ClassBrowsers.RB_SOURCE?7 @@ -7914,6 +7941,19 @@ eric5.Utilities.ClassBrowsers.idlclbr._modules?8 eric5.Utilities.ClassBrowsers.idlclbr._normalize?8 eric5.Utilities.ClassBrowsers.idlclbr.readmodule_ex?4(module, path=[]) +eric5.Utilities.ClassBrowsers.jsclbr.Attribute?1(module, name, file, lineno) +eric5.Utilities.ClassBrowsers.jsclbr.Function?1(module, name, file, lineno, signature='', separator=', ') +eric5.Utilities.ClassBrowsers.jsclbr.SUPPORTED_TYPES?7 +eric5.Utilities.ClassBrowsers.jsclbr.VisibilityMixin?1() +eric5.Utilities.ClassBrowsers.jsclbr.Visitor.parse?4() +eric5.Utilities.ClassBrowsers.jsclbr.Visitor.visit_const?4(node) +eric5.Utilities.ClassBrowsers.jsclbr.Visitor.visit_function?4(node) +eric5.Utilities.ClassBrowsers.jsclbr.Visitor.visit_noop?4(node) +eric5.Utilities.ClassBrowsers.jsclbr.Visitor.visit_property_init?4(node) +eric5.Utilities.ClassBrowsers.jsclbr.Visitor.visit_var?4(node) +eric5.Utilities.ClassBrowsers.jsclbr.Visitor?1(src, module, filename) +eric5.Utilities.ClassBrowsers.jsclbr._modules?8 +eric5.Utilities.ClassBrowsers.jsclbr.readmodule_ex?4(module, path=[]) eric5.Utilities.ClassBrowsers.pyclbr.Attribute?1(module, name, file, lineno) eric5.Utilities.ClassBrowsers.pyclbr.Class?1(module, name, super, file, lineno) eric5.Utilities.ClassBrowsers.pyclbr.Function?1(module, name, file, lineno, signature='', separator=', ', modifierType=ClbrBaseClasses.Function.General)
--- a/APIs/Python3/eric5.bas Mon Aug 12 19:41:53 2013 +0200 +++ b/APIs/Python3/eric5.bas Mon Aug 12 22:21:53 2013 +0200 @@ -286,6 +286,7 @@ Hg VersionControl HgAddSubrepositoryDialog QDialog Ui_HgAddSubrepositoryDialog HgAnnotateDialog QDialog Ui_HgAnnotateDialog +HgArchiveDialog QDialog Ui_HgArchiveDialog HgBackoutDialog QDialog Ui_HgBackoutDialog HgBookmarkDialog QDialog Ui_HgBookmarkDialog HgBookmarkRenameDialog QDialog Ui_HgBookmarkRenameDialog @@ -334,6 +335,7 @@ HgServeDialog E5MainWindow HgStatusDialog QWidget Ui_HgStatusDialog HgStatusMonitorThread VcsStatusMonitorThread +HgSummaryDialog QDialog Ui_HgSummaryDialog HgTagBranchListDialog QDialog Ui_HgTagBranchListDialog HgTagDialog QDialog Ui_HgTagDialog HighlightingStylesReader XMLStreamReaderBase @@ -423,6 +425,7 @@ LogViewerEdit QTextEdit MasterPasswordEntryDialog QDialog Ui_MasterPasswordEntryDialog MercurialPage ConfigurationPageBase Ui_MercurialPage +MercurialUserDataDialog QDialog Ui_MercurialUserDataDialog MessageBoxWizard QObject MessageBoxWizardDialog QDialog Ui_MessageBoxWizardDialog MiniEditor E5MainWindow
--- a/DataViews/PyCoverageDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/DataViews/PyCoverageDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -15,12 +15,14 @@ from PyQt4.QtGui import QDialog, QDialogButtonBox, QMenu, QHeaderView, QTreeWidgetItem, \ QApplication, QProgressDialog +from E5Gui import E5MessageBox from E5Gui.E5Application import e5App from .Ui_PyCoverageDialog import Ui_PyCoverageDialog import Utilities from DebugClients.Python3.coverage import coverage +from DebugClients.Python3.coverage.misc import CoverageException class PyCoverageDialog(QDialog, Ui_PyCoverageDialog): @@ -172,6 +174,7 @@ total_statements = 0 total_executed = 0 + total_exceptions = 0 cover.exclude(self.excludeList[0]) progress = 0 @@ -186,18 +189,22 @@ if self.cancelled: return - statements, excluded, missing, readable = cover.analysis2(file)[1:] - readableEx = excluded and self.__format_lines(excluded) or '' - n = len(statements) - m = n - len(missing) - if n > 0: - pc = 100.0 * m / n - else: - pc = 100.0 - self.__createResultItem(file, str(n), str(m), pc, readableEx, readable) - - total_statements = total_statements + n - total_executed = total_executed + m + try: + statements, excluded, missing, readable = cover.analysis2(file)[1:] + readableEx = excluded and self.__format_lines(excluded) or '' + n = len(statements) + m = n - len(missing) + if n > 0: + pc = 100.0 * m / n + else: + pc = 100.0 + self.__createResultItem( + file, str(n), str(m), pc, readableEx, readable) + + total_statements = total_statements + n + total_executed = total_executed + m + except CoverageException: + total_exceptions += 1 progress += 1 self.checkProgress.setValue(progress) @@ -224,6 +231,12 @@ else: self.summaryGroup.hide() + if total_exceptions: + E5MessageBox.warning(self, + self.trUtf8("Parse Error"), + self.trUtf8("""%n file(s) could not be parsed. Coverage info for""" + """ these is not available.""", "", total_exceptions)) + self.__finish() def __finish(self):
--- a/Debugger/DebugViewer.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Debugger/DebugViewer.py Mon Aug 12 22:21:53 2013 +0200 @@ -72,7 +72,7 @@ self.setWindowIcon(UI.PixmapCache.getIcon("eric.png")) self.__mainLayout = QVBoxLayout() - self.__mainLayout.setMargin(0) + self.__mainLayout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__mainLayout) self.__tabWidget = E5TabWidget() @@ -101,7 +101,7 @@ # add the global variables viewer self.glvWidget = QWidget() self.glvWidgetVLayout = QVBoxLayout(self.glvWidget) - self.glvWidgetVLayout.setMargin(0) + self.glvWidgetVLayout.setContentsMargins(0, 0, 0, 0) self.glvWidgetVLayout.setSpacing(3) self.glvWidget.setLayout(self.glvWidgetVLayout) @@ -109,7 +109,7 @@ self.glvWidgetVLayout.addWidget(self.globalsViewer) self.glvWidgetHLayout = QHBoxLayout() - self.glvWidgetHLayout.setMargin(3) + self.glvWidgetHLayout.setContentsMargins(3, 3, 3, 3) self.globalsFilterEdit = QLineEdit(self.glvWidget) self.globalsFilterEdit.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) @@ -136,12 +136,12 @@ # add the local variables viewer self.lvWidget = QWidget() self.lvWidgetVLayout = QVBoxLayout(self.lvWidget) - self.lvWidgetVLayout.setMargin(0) + self.lvWidgetVLayout.setContentsMargins(0, 0, 0, 0) self.lvWidgetVLayout.setSpacing(3) self.lvWidget.setLayout(self.lvWidgetVLayout) self.lvWidgetHLayout1 = QHBoxLayout() - self.lvWidgetHLayout1.setMargin(3) + self.lvWidgetHLayout1.setContentsMargins(3, 3, 3, 3) self.stackComboBox = QComboBox(self.lvWidget) self.stackComboBox.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed) @@ -156,7 +156,7 @@ self.lvWidgetVLayout.addWidget(self.localsViewer) self.lvWidgetHLayout2 = QHBoxLayout() - self.lvWidgetHLayout2.setMargin(3) + self.lvWidgetHLayout2.setContentsMargins(3, 3, 3, 3) self.localsFilterEdit = QLineEdit(self.lvWidget) self.localsFilterEdit.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
--- a/Documentation/Help/source.qhp Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Help/source.qhp Mon Aug 12 22:21:53 2013 +0200 @@ -491,6 +491,7 @@ </section> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage" ref="index-eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.html"> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html" /> + <section title="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html" /> </section> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension" ref="index-eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.html"> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog.html" /> @@ -535,6 +536,7 @@ <section title="eric5.Plugins.VcsPlugins.vcsMercurial.Config" ref="eric5.Plugins.VcsPlugins.vcsMercurial.Config.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgAddSubrepositoryDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgAddSubrepositoryDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.html" /> + <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgBundleDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgBundleDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgClient" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgClient.html" /> @@ -562,6 +564,7 @@ <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgServeDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgServeDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html" /> + <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.html" /> <section title="eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html" /> @@ -940,6 +943,7 @@ <section title="eric5.Utilities.ClassBrowsers.ClbrBaseClasses" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html" /> <section title="eric5.Utilities.ClassBrowsers.__init__" ref="eric5.Utilities.ClassBrowsers.__init__.html" /> <section title="eric5.Utilities.ClassBrowsers.idlclbr" ref="eric5.Utilities.ClassBrowsers.idlclbr.html" /> + <section title="eric5.Utilities.ClassBrowsers.jsclbr" ref="eric5.Utilities.ClassBrowsers.jsclbr.html" /> <section title="eric5.Utilities.ClassBrowsers.pyclbr" ref="eric5.Utilities.ClassBrowsers.pyclbr.html" /> <section title="eric5.Utilities.ClassBrowsers.rbclbr" ref="eric5.Utilities.ClassBrowsers.rbclbr.html" /> </section> @@ -1434,11 +1438,13 @@ <keyword name="AsyncPendingWrite" id="AsyncPendingWrite" ref="eric5.DebugClients.Ruby.AsyncFile.html#AsyncPendingWrite" /> <keyword name="Attribute" id="Attribute" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#Attribute" /> <keyword name="Attribute" id="Attribute" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#Attribute" /> + <keyword name="Attribute" id="Attribute" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Attribute" /> <keyword name="Attribute" id="Attribute" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#Attribute" /> <keyword name="Attribute" id="Attribute" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#Attribute" /> <keyword name="Attribute" id="Attribute" ref="eric5.Utilities.ModuleParser.html#Attribute" /> <keyword name="Attribute (Constructor)" id="Attribute (Constructor)" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#Attribute.__init__" /> <keyword name="Attribute (Constructor)" id="Attribute (Constructor)" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#Attribute.__init__" /> + <keyword name="Attribute (Constructor)" id="Attribute (Constructor)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Attribute.__init__" /> <keyword name="Attribute (Constructor)" id="Attribute (Constructor)" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#Attribute.__init__" /> <keyword name="Attribute (Constructor)" id="Attribute (Constructor)" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#Attribute.__init__" /> <keyword name="Attribute (Constructor)" id="Attribute (Constructor)" ref="eric5.Utilities.ModuleParser.html#Attribute.__init__" /> @@ -1788,6 +1794,7 @@ <keyword name="BrowserFileItem.isDFile" id="BrowserFileItem.isDFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isDFile" /> <keyword name="BrowserFileItem.isDesignerFile" id="BrowserFileItem.isDesignerFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isDesignerFile" /> <keyword name="BrowserFileItem.isIdlFile" id="BrowserFileItem.isIdlFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isIdlFile" /> + <keyword name="BrowserFileItem.isJavaScriptFile" id="BrowserFileItem.isJavaScriptFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isJavaScriptFile" /> <keyword name="BrowserFileItem.isLinguistFile" id="BrowserFileItem.isLinguistFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isLinguistFile" /> <keyword name="BrowserFileItem.isMultiProjectFile" id="BrowserFileItem.isMultiProjectFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isMultiProjectFile" /> <keyword name="BrowserFileItem.isPixmapFile" id="BrowserFileItem.isPixmapFile" ref="eric5.UI.BrowserModel.html#BrowserFileItem.isPixmapFile" /> @@ -2192,10 +2199,12 @@ <keyword name="CompareDialog (Constructor)" id="CompareDialog (Constructor)" ref="eric5.UI.CompareDialog.html#CompareDialog.__init__" /> <keyword name="CompareDialog (Module)" id="CompareDialog (Module)" ref="eric5.UI.CompareDialog.html" /> <keyword name="CompareDialog.__appendText" id="CompareDialog.__appendText" ref="eric5.UI.CompareDialog.html#CompareDialog.__appendText" /> + <keyword name="CompareDialog.__compare" id="CompareDialog.__compare" ref="eric5.UI.CompareDialog.html#CompareDialog.__compare" /> <keyword name="CompareDialog.__fileChanged" id="CompareDialog.__fileChanged" ref="eric5.UI.CompareDialog.html#CompareDialog.__fileChanged" /> <keyword name="CompareDialog.__moveTextToCurrentDiffPos" id="CompareDialog.__moveTextToCurrentDiffPos" ref="eric5.UI.CompareDialog.html#CompareDialog.__moveTextToCurrentDiffPos" /> <keyword name="CompareDialog.__scrollBarMoved" id="CompareDialog.__scrollBarMoved" ref="eric5.UI.CompareDialog.html#CompareDialog.__scrollBarMoved" /> <keyword name="CompareDialog.__selectFile" id="CompareDialog.__selectFile" ref="eric5.UI.CompareDialog.html#CompareDialog.__selectFile" /> + <keyword name="CompareDialog.compare" id="CompareDialog.compare" ref="eric5.UI.CompareDialog.html#CompareDialog.compare" /> <keyword name="CompareDialog.on_buttonBox_clicked" id="CompareDialog.on_buttonBox_clicked" ref="eric5.UI.CompareDialog.html#CompareDialog.on_buttonBox_clicked" /> <keyword name="CompareDialog.on_diffButton_clicked" id="CompareDialog.on_diffButton_clicked" ref="eric5.UI.CompareDialog.html#CompareDialog.on_diffButton_clicked" /> <keyword name="CompareDialog.on_downButton_clicked" id="CompareDialog.on_downButton_clicked" ref="eric5.UI.CompareDialog.html#CompareDialog.on_downButton_clicked" /> @@ -4797,11 +4806,13 @@ <keyword name="FtpUtilities (Module)" id="FtpUtilities (Module)" ref="eric5.Utilities.FtpUtilities.html" /> <keyword name="Function" id="Function" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#Function" /> <keyword name="Function" id="Function" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#Function" /> + <keyword name="Function" id="Function" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Function" /> <keyword name="Function" id="Function" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#Function" /> <keyword name="Function" id="Function" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#Function" /> <keyword name="Function" id="Function" ref="eric5.Utilities.ModuleParser.html#Function" /> <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html#Function.__init__" /> <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#Function.__init__" /> + <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Function.__init__" /> <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#Function.__init__" /> <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#Function.__init__" /> <keyword name="Function (Constructor)" id="Function (Constructor)" ref="eric5.Utilities.ModuleParser.html#Function.__init__" /> @@ -5284,8 +5295,10 @@ <keyword name="HelpWindow.__prevTab" id="HelpWindow.__prevTab" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__prevTab" /> <keyword name="HelpWindow.__privateBrowsing" id="HelpWindow.__privateBrowsing" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__privateBrowsing" /> <keyword name="HelpWindow.__reload" id="HelpWindow.__reload" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__reload" /> + <keyword name="HelpWindow.__removeOldDocumentation" id="HelpWindow.__removeOldDocumentation" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__removeOldDocumentation" /> <keyword name="HelpWindow.__savePageAs" id="HelpWindow.__savePageAs" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__savePageAs" /> <keyword name="HelpWindow.__savePageScreen" id="HelpWindow.__savePageScreen" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__savePageScreen" /> + <keyword name="HelpWindow.__saveVisiblePageScreen" id="HelpWindow.__saveVisiblePageScreen" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__saveVisiblePageScreen" /> <keyword name="HelpWindow.__searchForWord" id="HelpWindow.__searchForWord" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__searchForWord" /> <keyword name="HelpWindow.__setIconDatabasePath" id="HelpWindow.__setIconDatabasePath" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__setIconDatabasePath" /> <keyword name="HelpWindow.__setTextEncoding" id="HelpWindow.__setTextEncoding" ref="eric5.Helpviewer.HelpWindow.html#HelpWindow.__setTextEncoding" /> @@ -5389,6 +5402,7 @@ <keyword name="Hg" id="Hg" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg" /> <keyword name="Hg (Constructor)" id="Hg (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.__init__" /> <keyword name="Hg.__getExtensionsInfo" id="Hg.__getExtensionsInfo" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.__getExtensionsInfo" /> + <keyword name="Hg.__hgGetFileForRevision" id="Hg.__hgGetFileForRevision" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.__hgGetFileForRevision" /> <keyword name="Hg.__hgURL" id="Hg.__hgURL" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.__hgURL" /> <keyword name="Hg.__iniFileChanged" id="Hg.__iniFileChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.__iniFileChanged" /> <keyword name="Hg.__monitorRepoIniFile" id="Hg.__monitorRepoIniFile" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.__monitorRepoIniFile" /> @@ -5402,6 +5416,7 @@ <keyword name="Hg.hasSubrepositories" id="Hg.hasSubrepositories" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hasSubrepositories" /> <keyword name="Hg.hgAddSubrepository" id="Hg.hgAddSubrepository" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgAddSubrepository" /> <keyword name="Hg.hgAnnotate" id="Hg.hgAnnotate" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgAnnotate" /> + <keyword name="Hg.hgArchive" id="Hg.hgArchive" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgArchive" /> <keyword name="Hg.hgBackout" id="Hg.hgBackout" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgBackout" /> <keyword name="Hg.hgBisect" id="Hg.hgBisect" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgBisect" /> <keyword name="Hg.hgBranch" id="Hg.hgBranch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgBranch" /> @@ -5435,10 +5450,12 @@ <keyword name="Hg.hgResolve" id="Hg.hgResolve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgResolve" /> <keyword name="Hg.hgRevert" id="Hg.hgRevert" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgRevert" /> <keyword name="Hg.hgRollback" id="Hg.hgRollback" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgRollback" /> + <keyword name="Hg.hgSbsDiff" id="Hg.hgSbsDiff" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgSbsDiff" /> <keyword name="Hg.hgServe" id="Hg.hgServe" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgServe" /> <keyword name="Hg.hgShowBranch" id="Hg.hgShowBranch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgShowBranch" /> <keyword name="Hg.hgShowConfig" id="Hg.hgShowConfig" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgShowConfig" /> <keyword name="Hg.hgShowPaths" id="Hg.hgShowPaths" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgShowPaths" /> + <keyword name="Hg.hgSummary" id="Hg.hgSummary" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgSummary" /> <keyword name="Hg.hgUnbundle" id="Hg.hgUnbundle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgUnbundle" /> <keyword name="Hg.hgVerify" id="Hg.hgVerify" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.hgVerify" /> <keyword name="Hg.isExtensionActive" id="Hg.isExtensionActive" ref="eric5.Plugins.VcsPlugins.vcsMercurial.hg.html#Hg.isExtensionActive" /> @@ -5499,6 +5516,13 @@ <keyword name="HgAnnotateDialog.on_passwordCheckBox_toggled" id="HgAnnotateDialog.on_passwordCheckBox_toggled" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.html#HgAnnotateDialog.on_passwordCheckBox_toggled" /> <keyword name="HgAnnotateDialog.on_sendButton_clicked" id="HgAnnotateDialog.on_sendButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.html#HgAnnotateDialog.on_sendButton_clicked" /> <keyword name="HgAnnotateDialog.start" id="HgAnnotateDialog.start" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.html#HgAnnotateDialog.start" /> + <keyword name="HgArchiveDialog" id="HgArchiveDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html#HgArchiveDialog" /> + <keyword name="HgArchiveDialog (Constructor)" id="HgArchiveDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html#HgArchiveDialog.__init__" /> + <keyword name="HgArchiveDialog (Module)" id="HgArchiveDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html" /> + <keyword name="HgArchiveDialog.getData" id="HgArchiveDialog.getData" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html#HgArchiveDialog.getData" /> + <keyword name="HgArchiveDialog.on_archiveButton_clicked" id="HgArchiveDialog.on_archiveButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html#HgArchiveDialog.on_archiveButton_clicked" /> + <keyword name="HgArchiveDialog.on_archiveEdit_textChanged" id="HgArchiveDialog.on_archiveEdit_textChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html#HgArchiveDialog.on_archiveEdit_textChanged" /> + <keyword name="HgArchiveDialog.on_typeComboBox_activated" id="HgArchiveDialog.on_typeComboBox_activated" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html#HgArchiveDialog.on_typeComboBox_activated" /> <keyword name="HgBackoutDialog" id="HgBackoutDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.html#HgBackoutDialog" /> <keyword name="HgBackoutDialog (Constructor)" id="HgBackoutDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.html#HgBackoutDialog.__init__" /> <keyword name="HgBackoutDialog (Module)" id="HgBackoutDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.html" /> @@ -5876,6 +5900,8 @@ <keyword name="HgProjectBrowserHelper.__HgMove" id="HgProjectBrowserHelper.__HgMove" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper.__HgMove" /> <keyword name="HgProjectBrowserHelper.__HgResolve" id="HgProjectBrowserHelper.__HgResolve" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper.__HgResolve" /> <keyword name="HgProjectBrowserHelper.__HgRevert" id="HgProjectBrowserHelper.__HgRevert" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper.__HgRevert" /> + <keyword name="HgProjectBrowserHelper.__HgSbsDiff" id="HgProjectBrowserHelper.__HgSbsDiff" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper.__HgSbsDiff" /> + <keyword name="HgProjectBrowserHelper.__HgSbsExtendedDiff" id="HgProjectBrowserHelper.__HgSbsExtendedDiff" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper.__HgSbsExtendedDiff" /> <keyword name="HgProjectBrowserHelper._addVCSMenu" id="HgProjectBrowserHelper._addVCSMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper._addVCSMenu" /> <keyword name="HgProjectBrowserHelper._addVCSMenuBack" id="HgProjectBrowserHelper._addVCSMenuBack" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper._addVCSMenuBack" /> <keyword name="HgProjectBrowserHelper._addVCSMenuDir" id="HgProjectBrowserHelper._addVCSMenuDir" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html#HgProjectBrowserHelper._addVCSMenuDir" /> @@ -5888,6 +5914,7 @@ <keyword name="HgProjectHelper" id="HgProjectHelper" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper" /> <keyword name="HgProjectHelper (Constructor)" id="HgProjectHelper (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__init__" /> <keyword name="HgProjectHelper.__hgAddSubrepository" id="HgProjectHelper.__hgAddSubrepository" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgAddSubrepository" /> + <keyword name="HgProjectHelper.__hgArchive" id="HgProjectHelper.__hgArchive" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgArchive" /> <keyword name="HgProjectHelper.__hgBackout" id="HgProjectHelper.__hgBackout" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgBackout" /> <keyword name="HgProjectHelper.__hgBisectBad" id="HgProjectHelper.__hgBisectBad" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgBisectBad" /> <keyword name="HgProjectHelper.__hgBisectGood" id="HgProjectHelper.__hgBisectGood" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgBisectGood" /> @@ -5928,6 +5955,7 @@ <keyword name="HgProjectHelper.__hgShowBranch" id="HgProjectHelper.__hgShowBranch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgShowBranch" /> <keyword name="HgProjectHelper.__hgShowConfig" id="HgProjectHelper.__hgShowConfig" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgShowConfig" /> <keyword name="HgProjectHelper.__hgShowPaths" id="HgProjectHelper.__hgShowPaths" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgShowPaths" /> + <keyword name="HgProjectHelper.__hgSummary" id="HgProjectHelper.__hgSummary" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgSummary" /> <keyword name="HgProjectHelper.__hgTagList" id="HgProjectHelper.__hgTagList" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgTagList" /> <keyword name="HgProjectHelper.__hgTip" id="HgProjectHelper.__hgTip" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgTip" /> <keyword name="HgProjectHelper.__hgUnbundle" id="HgProjectHelper.__hgUnbundle" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html#HgProjectHelper.__hgUnbundle" /> @@ -6140,6 +6168,7 @@ <keyword name="HgStatusDialog.__resort" id="HgStatusDialog.__resort" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__resort" /> <keyword name="HgStatusDialog.__restoreMissing" id="HgStatusDialog.__restoreMissing" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__restoreMissing" /> <keyword name="HgStatusDialog.__revert" id="HgStatusDialog.__revert" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__revert" /> + <keyword name="HgStatusDialog.__sbsDiff" id="HgStatusDialog.__sbsDiff" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__sbsDiff" /> <keyword name="HgStatusDialog.__showContextMenu" id="HgStatusDialog.__showContextMenu" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__showContextMenu" /> <keyword name="HgStatusDialog.__showError" id="HgStatusDialog.__showError" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__showError" /> <keyword name="HgStatusDialog.__updateButtons" id="HgStatusDialog.__updateButtons" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.__updateButtons" /> @@ -6156,6 +6185,7 @@ <keyword name="HgStatusDialog.on_refreshButton_clicked" id="HgStatusDialog.on_refreshButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_refreshButton_clicked" /> <keyword name="HgStatusDialog.on_restoreButton_clicked" id="HgStatusDialog.on_restoreButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_restoreButton_clicked" /> <keyword name="HgStatusDialog.on_revertButton_clicked" id="HgStatusDialog.on_revertButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_revertButton_clicked" /> + <keyword name="HgStatusDialog.on_sbsDiffButton_clicked" id="HgStatusDialog.on_sbsDiffButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_sbsDiffButton_clicked" /> <keyword name="HgStatusDialog.on_sendButton_clicked" id="HgStatusDialog.on_sendButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_sendButton_clicked" /> <keyword name="HgStatusDialog.on_statusFilterCombo_activated" id="HgStatusDialog.on_statusFilterCombo_activated" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_statusFilterCombo_activated" /> <keyword name="HgStatusDialog.on_statusList_itemChanged" id="HgStatusDialog.on_statusList_itemChanged" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html#HgStatusDialog.on_statusList_itemChanged" /> @@ -6166,6 +6196,20 @@ <keyword name="HgStatusMonitorThread (Module)" id="HgStatusMonitorThread (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html" /> <keyword name="HgStatusMonitorThread._performMonitor" id="HgStatusMonitorThread._performMonitor" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread._performMonitor" /> <keyword name="HgStatusMonitorThread._shutdown" id="HgStatusMonitorThread._shutdown" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html#HgStatusMonitorThread._shutdown" /> + <keyword name="HgSummaryDialog" id="HgSummaryDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog" /> + <keyword name="HgSummaryDialog (Constructor)" id="HgSummaryDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__init__" /> + <keyword name="HgSummaryDialog (Module)" id="HgSummaryDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html" /> + <keyword name="HgSummaryDialog.__committed" id="HgSummaryDialog.__committed" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__committed" /> + <keyword name="HgSummaryDialog.__finish" id="HgSummaryDialog.__finish" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__finish" /> + <keyword name="HgSummaryDialog.__procFinished" id="HgSummaryDialog.__procFinished" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__procFinished" /> + <keyword name="HgSummaryDialog.__processOutput" id="HgSummaryDialog.__processOutput" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__processOutput" /> + <keyword name="HgSummaryDialog.__readStderr" id="HgSummaryDialog.__readStderr" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__readStderr" /> + <keyword name="HgSummaryDialog.__readStdout" id="HgSummaryDialog.__readStdout" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__readStdout" /> + <keyword name="HgSummaryDialog.__showError" id="HgSummaryDialog.__showError" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.__showError" /> + <keyword name="HgSummaryDialog.closeEvent" id="HgSummaryDialog.closeEvent" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.closeEvent" /> + <keyword name="HgSummaryDialog.on_buttonBox_clicked" id="HgSummaryDialog.on_buttonBox_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.on_buttonBox_clicked" /> + <keyword name="HgSummaryDialog.on_refreshButton_clicked" id="HgSummaryDialog.on_refreshButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.on_refreshButton_clicked" /> + <keyword name="HgSummaryDialog.start" id="HgSummaryDialog.start" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html#HgSummaryDialog.start" /> <keyword name="HgTagBranchListDialog" id="HgTagBranchListDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog" /> <keyword name="HgTagBranchListDialog (Constructor)" id="HgTagBranchListDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html#HgTagBranchListDialog.__init__" /> <keyword name="HgTagBranchListDialog (Module)" id="HgTagBranchListDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html" /> @@ -6470,6 +6514,7 @@ <keyword name="IconEditorWindow.closeEvent" id="IconEditorWindow.closeEvent" ref="eric5.IconEditor.IconEditorWindow.html#IconEditorWindow.closeEvent" /> <keyword name="IconEditorWindow.event" id="IconEditorWindow.event" ref="eric5.IconEditor.IconEditorWindow.html#IconEditorWindow.event" /> <keyword name="IconEditorWindow.gestureEvent" id="IconEditorWindow.gestureEvent" ref="eric5.IconEditor.IconEditorWindow.html#IconEditorWindow.gestureEvent" /> + <keyword name="IconEditorWindow.setRecentPaths" id="IconEditorWindow.setRecentPaths" ref="eric5.IconEditor.IconEditorWindow.html#IconEditorWindow.setRecentPaths" /> <keyword name="IconEditorWindow.wheelEvent" id="IconEditorWindow.wheelEvent" ref="eric5.IconEditor.IconEditorWindow.html#IconEditorWindow.wheelEvent" /> <keyword name="IconSizeDialog" id="IconSizeDialog" ref="eric5.IconEditor.IconSizeDialog.html#IconSizeDialog" /> <keyword name="IconSizeDialog (Constructor)" id="IconSizeDialog (Constructor)" ref="eric5.IconEditor.IconSizeDialog.html#IconSizeDialog.__init__" /> @@ -7241,6 +7286,10 @@ <keyword name="MercurialPage (Module)" id="MercurialPage (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html" /> <keyword name="MercurialPage.on_configButton_clicked" id="MercurialPage.on_configButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html#MercurialPage.on_configButton_clicked" /> <keyword name="MercurialPage.save" id="MercurialPage.save" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html#MercurialPage.save" /> + <keyword name="MercurialUserDataDialog" id="MercurialUserDataDialog" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html#MercurialUserDataDialog" /> + <keyword name="MercurialUserDataDialog (Constructor)" id="MercurialUserDataDialog (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html#MercurialUserDataDialog.__init__" /> + <keyword name="MercurialUserDataDialog (Module)" id="MercurialUserDataDialog (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html" /> + <keyword name="MercurialUserDataDialog.getData" id="MercurialUserDataDialog.getData" ref="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html#MercurialUserDataDialog.getData" /> <keyword name="Message" id="Message" ref="eric5.Utilities.py3flakes.messages.html#Message" /> <keyword name="Message" id="Message" ref="eric5.UtilitiesPython2.py2flakes.messages.html#Message" /> <keyword name="Message (Constructor)" id="Message (Constructor)" ref="eric5.Utilities.py3flakes.messages.html#Message.__init__" /> @@ -9203,6 +9252,7 @@ <keyword name="Queues.hgQueueGuardsList" id="Queues.hgQueueGuardsList" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueGuardsList" /> <keyword name="Queues.hgQueueGuardsListAll" id="Queues.hgQueueGuardsListAll" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueGuardsListAll" /> <keyword name="Queues.hgQueueGuardsSetActive" id="Queues.hgQueueGuardsSetActive" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueGuardsSetActive" /> + <keyword name="Queues.hgQueueInit" id="Queues.hgQueueInit" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueInit" /> <keyword name="Queues.hgQueueListPatches" id="Queues.hgQueueListPatches" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueListPatches" /> <keyword name="Queues.hgQueueListQueues" id="Queues.hgQueueListQueues" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueListQueues" /> <keyword name="Queues.hgQueueNewPatch" id="Queues.hgQueueNewPatch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueNewPatch" /> @@ -9211,11 +9261,13 @@ <keyword name="Queues.hgQueueRenamePatch" id="Queues.hgQueueRenamePatch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueRenamePatch" /> <keyword name="Queues.hgQueueShowHeader" id="Queues.hgQueueShowHeader" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueShowHeader" /> <keyword name="Queues.hgQueueShowPatch" id="Queues.hgQueueShowPatch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueShowPatch" /> + <keyword name="Queues.hgQueueStatus" id="Queues.hgQueueStatus" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.hgQueueStatus" /> <keyword name="Queues.shutdown" id="Queues.shutdown" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html#Queues.shutdown" /> <keyword name="QueuesExtension (Package)" id="QueuesExtension (Package)" ref="index-eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.html" /> <keyword name="QueuesProjectHelper" id="QueuesProjectHelper" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper" /> <keyword name="QueuesProjectHelper (Constructor)" id="QueuesProjectHelper (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__init__" /> <keyword name="QueuesProjectHelper.__hgQueueActivateQueue" id="QueuesProjectHelper.__hgQueueActivateQueue" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueActivateQueue" /> + <keyword name="QueuesProjectHelper.__hgQueueCommit" id="QueuesProjectHelper.__hgQueueCommit" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueCommit" /> <keyword name="QueuesProjectHelper.__hgQueueCreateQueue" id="QueuesProjectHelper.__hgQueueCreateQueue" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueCreateQueue" /> <keyword name="QueuesProjectHelper.__hgQueueDeletePatch" id="QueuesProjectHelper.__hgQueueDeletePatch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueDeletePatch" /> <keyword name="QueuesProjectHelper.__hgQueueDeleteQueue" id="QueuesProjectHelper.__hgQueueDeleteQueue" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueDeleteQueue" /> @@ -9230,6 +9282,7 @@ <keyword name="QueuesProjectHelper.__hgQueueGuardsList" id="QueuesProjectHelper.__hgQueueGuardsList" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueGuardsList" /> <keyword name="QueuesProjectHelper.__hgQueueGuardsListAll" id="QueuesProjectHelper.__hgQueueGuardsListAll" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueGuardsListAll" /> <keyword name="QueuesProjectHelper.__hgQueueGuardsSetActive" id="QueuesProjectHelper.__hgQueueGuardsSetActive" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueGuardsSetActive" /> + <keyword name="QueuesProjectHelper.__hgQueueInit" id="QueuesProjectHelper.__hgQueueInit" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueInit" /> <keyword name="QueuesProjectHelper.__hgQueueListPatches" id="QueuesProjectHelper.__hgQueueListPatches" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueListPatches" /> <keyword name="QueuesProjectHelper.__hgQueueListQueues" id="QueuesProjectHelper.__hgQueueListQueues" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueListQueues" /> <keyword name="QueuesProjectHelper.__hgQueueNewPatch" id="QueuesProjectHelper.__hgQueueNewPatch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueNewPatch" /> @@ -9253,6 +9306,7 @@ <keyword name="QueuesProjectHelper.__hgQueueRenameQueue" id="QueuesProjectHelper.__hgQueueRenameQueue" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueRenameQueue" /> <keyword name="QueuesProjectHelper.__hgQueueShowHeader" id="QueuesProjectHelper.__hgQueueShowHeader" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueShowHeader" /> <keyword name="QueuesProjectHelper.__hgQueueShowPatch" id="QueuesProjectHelper.__hgQueueShowPatch" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueShowPatch" /> + <keyword name="QueuesProjectHelper.__hgQueueStatus" id="QueuesProjectHelper.__hgQueueStatus" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__hgQueueStatus" /> <keyword name="QueuesProjectHelper.__initGuardsActions" id="QueuesProjectHelper.__initGuardsActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__initGuardsActions" /> <keyword name="QueuesProjectHelper.__initPushPopActions" id="QueuesProjectHelper.__initPushPopActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__initPushPopActions" /> <keyword name="QueuesProjectHelper.__initPushPopForceActions" id="QueuesProjectHelper.__initPushPopForceActions" ref="eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html#QueuesProjectHelper.__initPushPopForceActions" /> @@ -9883,6 +9937,8 @@ <keyword name="Subversion" id="Subversion" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion" /> <keyword name="Subversion (Constructor)" id="Subversion (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__init__" /> <keyword name="Subversion (Constructor)" id="Subversion (Constructor)" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.__init__" /> + <keyword name="Subversion.__svnGetFileForRevision" id="Subversion.__svnGetFileForRevision" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__svnGetFileForRevision" /> + <keyword name="Subversion.__svnGetFileForRevision" id="Subversion.__svnGetFileForRevision" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.__svnGetFileForRevision" /> <keyword name="Subversion.__svnURL" id="Subversion.__svnURL" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__svnURL" /> <keyword name="Subversion.__svnURL" id="Subversion.__svnURL" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.__svnURL" /> <keyword name="Subversion.__vcsAllRegisteredStates_wc" id="Subversion.__vcsAllRegisteredStates_wc" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.__vcsAllRegisteredStates_wc" /> @@ -9935,6 +9991,8 @@ <keyword name="Subversion.svnRepoBrowser" id="Subversion.svnRepoBrowser" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.svnRepoBrowser" /> <keyword name="Subversion.svnResolve" id="Subversion.svnResolve" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.svnResolve" /> <keyword name="Subversion.svnResolve" id="Subversion.svnResolve" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.svnResolve" /> + <keyword name="Subversion.svnSbsDiff" id="Subversion.svnSbsDiff" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.svnSbsDiff" /> + <keyword name="Subversion.svnSbsDiff" id="Subversion.svnSbsDiff" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.svnSbsDiff" /> <keyword name="Subversion.svnSetProp" id="Subversion.svnSetProp" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.svnSetProp" /> <keyword name="Subversion.svnSetProp" id="Subversion.svnSetProp" ref="eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html#Subversion.svnSetProp" /> <keyword name="Subversion.svnShowChangelists" id="Subversion.svnShowChangelists" ref="eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html#Subversion.svnShowChangelists" /> @@ -10367,6 +10425,10 @@ <keyword name="SvnProjectBrowserHelper.__SVNRemoveFromChangelist" id="SvnProjectBrowserHelper.__SVNRemoveFromChangelist" ref="eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNRemoveFromChangelist" /> <keyword name="SvnProjectBrowserHelper.__SVNResolve" id="SvnProjectBrowserHelper.__SVNResolve" ref="eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNResolve" /> <keyword name="SvnProjectBrowserHelper.__SVNResolve" id="SvnProjectBrowserHelper.__SVNResolve" ref="eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNResolve" /> + <keyword name="SvnProjectBrowserHelper.__SVNSbsDiff" id="SvnProjectBrowserHelper.__SVNSbsDiff" ref="eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNSbsDiff" /> + <keyword name="SvnProjectBrowserHelper.__SVNSbsDiff" id="SvnProjectBrowserHelper.__SVNSbsDiff" ref="eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNSbsDiff" /> + <keyword name="SvnProjectBrowserHelper.__SVNSbsExtendedDiff" id="SvnProjectBrowserHelper.__SVNSbsExtendedDiff" ref="eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNSbsExtendedDiff" /> + <keyword name="SvnProjectBrowserHelper.__SVNSbsExtendedDiff" id="SvnProjectBrowserHelper.__SVNSbsExtendedDiff" ref="eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNSbsExtendedDiff" /> <keyword name="SvnProjectBrowserHelper.__SVNSetProp" id="SvnProjectBrowserHelper.__SVNSetProp" ref="eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNSetProp" /> <keyword name="SvnProjectBrowserHelper.__SVNSetProp" id="SvnProjectBrowserHelper.__SVNSetProp" ref="eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNSetProp" /> <keyword name="SvnProjectBrowserHelper.__SVNStealLock" id="SvnProjectBrowserHelper.__SVNStealLock" ref="eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html#SvnProjectBrowserHelper.__SVNStealLock" /> @@ -10585,6 +10647,8 @@ <keyword name="SvnStatusDialog.__restoreMissing" id="SvnStatusDialog.__restoreMissing" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.__restoreMissing" /> <keyword name="SvnStatusDialog.__revert" id="SvnStatusDialog.__revert" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.__revert" /> <keyword name="SvnStatusDialog.__revert" id="SvnStatusDialog.__revert" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.__revert" /> + <keyword name="SvnStatusDialog.__sbsDiff" id="SvnStatusDialog.__sbsDiff" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.__sbsDiff" /> + <keyword name="SvnStatusDialog.__sbsDiff" id="SvnStatusDialog.__sbsDiff" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.__sbsDiff" /> <keyword name="SvnStatusDialog.__showContextMenu" id="SvnStatusDialog.__showContextMenu" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.__showContextMenu" /> <keyword name="SvnStatusDialog.__showContextMenu" id="SvnStatusDialog.__showContextMenu" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.__showContextMenu" /> <keyword name="SvnStatusDialog.__showError" id="SvnStatusDialog.__showError" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.__showError" /> @@ -10614,6 +10678,8 @@ <keyword name="SvnStatusDialog.on_restoreButton_clicked" id="SvnStatusDialog.on_restoreButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.on_restoreButton_clicked" /> <keyword name="SvnStatusDialog.on_revertButton_clicked" id="SvnStatusDialog.on_revertButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.on_revertButton_clicked" /> <keyword name="SvnStatusDialog.on_revertButton_clicked" id="SvnStatusDialog.on_revertButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.on_revertButton_clicked" /> + <keyword name="SvnStatusDialog.on_sbsDiffButton_clicked" id="SvnStatusDialog.on_sbsDiffButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.on_sbsDiffButton_clicked" /> + <keyword name="SvnStatusDialog.on_sbsDiffButton_clicked" id="SvnStatusDialog.on_sbsDiffButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.on_sbsDiffButton_clicked" /> <keyword name="SvnStatusDialog.on_sendButton_clicked" id="SvnStatusDialog.on_sendButton_clicked" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.on_sendButton_clicked" /> <keyword name="SvnStatusDialog.on_statusFilterCombo_activated" id="SvnStatusDialog.on_statusFilterCombo_activated" ref="eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html#SvnStatusDialog.on_statusFilterCombo_activated" /> <keyword name="SvnStatusDialog.on_statusFilterCombo_activated" id="SvnStatusDialog.on_statusFilterCombo_activated" ref="eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html#SvnStatusDialog.on_statusFilterCombo_activated" /> @@ -12151,11 +12217,22 @@ <keyword name="VisibilityBase.setProtected" id="VisibilityBase.setProtected" ref="eric5.Utilities.ModuleParser.html#VisibilityBase.setProtected" /> <keyword name="VisibilityBase.setPublic" id="VisibilityBase.setPublic" ref="eric5.Utilities.ModuleParser.html#VisibilityBase.setPublic" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#VisibilityMixin" /> + <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin" id="VisibilityMixin" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#VisibilityMixin" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#VisibilityMixin.__init__" /> + <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#VisibilityMixin.__init__" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#VisibilityMixin.__init__" /> <keyword name="VisibilityMixin (Constructor)" id="VisibilityMixin (Constructor)" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#VisibilityMixin.__init__" /> + <keyword name="Visitor" id="Visitor" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor" /> + <keyword name="Visitor (Constructor)" id="Visitor (Constructor)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.__init__" /> + <keyword name="Visitor.__visit" id="Visitor.__visit" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.__visit" /> + <keyword name="Visitor.parse" id="Visitor.parse" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.parse" /> + <keyword name="Visitor.visit_const" id="Visitor.visit_const" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_const" /> + <keyword name="Visitor.visit_function" id="Visitor.visit_function" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_function" /> + <keyword name="Visitor.visit_noop" id="Visitor.visit_noop" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_noop" /> + <keyword name="Visitor.visit_property_init" id="Visitor.visit_property_init" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_property_init" /> + <keyword name="Visitor.visit_var" id="Visitor.visit_var" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#Visitor.visit_var" /> <keyword name="VmListspacePlugin" id="VmListspacePlugin" ref="eric5.Plugins.PluginVmListspace.html#VmListspacePlugin" /> <keyword name="VmListspacePlugin (Constructor)" id="VmListspacePlugin (Constructor)" ref="eric5.Plugins.PluginVmListspace.html#VmListspacePlugin.__init__" /> <keyword name="VmListspacePlugin.activate" id="VmListspacePlugin.activate" ref="eric5.Plugins.PluginVmListspace.html#VmListspacePlugin.activate" /> @@ -12768,6 +12845,7 @@ <keyword name="isinpath" id="isinpath" ref="eric5.Utilities.__init__.html#isinpath" /> <keyword name="iter_child_nodes" id="iter_child_nodes" ref="eric5.UtilitiesPython2.py2flakes.checker.html#iter_child_nodes" /> <keyword name="joinext" id="joinext" ref="eric5.Utilities.__init__.html#joinext" /> + <keyword name="jsclbr (Module)" id="jsclbr (Module)" ref="eric5.Utilities.ClassBrowsers.jsclbr.html" /> <keyword name="linesep" id="linesep" ref="eric5.Utilities.__init__.html#linesep" /> <keyword name="loadTranslatorForLocale" id="loadTranslatorForLocale" ref="eric5.Toolbox.Startup.html#loadTranslatorForLocale" /> <keyword name="loadTranslators" id="loadTranslators" ref="eric5.Toolbox.Startup.html#loadTranslators" /> @@ -12832,6 +12910,7 @@ <keyword name="pendingWrite" id="pendingWrite" ref="eric5.DebugClients.Ruby.AsyncFile.html#pendingWrite" /> <keyword name="pep8 (Module)" id="pep8 (Module)" ref="eric5.Plugins.CheckerPlugins.Pep8.pep8.html" /> <keyword name="pep8 (Module)" id="pep8 (Module)" ref="eric5.UtilitiesPython2.pep8.html" /> + <keyword name="prepareProcess" id="prepareProcess" ref="eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html#prepareProcess" /> <keyword name="prepareQtMacBundle" id="prepareQtMacBundle" ref="eric5.Utilities.__init__.html#prepareQtMacBundle" /> <keyword name="prepareUninstall" id="prepareUninstall" ref="eric5.Plugins.PluginVcsMercurial.html#prepareUninstall" /> <keyword name="prepareUninstall" id="prepareUninstall" ref="eric5.Plugins.PluginVcsPySvn.html#prepareUninstall" /> @@ -12896,6 +12975,7 @@ <keyword name="readlines_1" id="readlines_1" ref="eric5.UtilitiesPython2.pep8.html#readlines_1" /> <keyword name="readmodule" id="readmodule" ref="eric5.Utilities.ClassBrowsers.__init__.html#readmodule" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.idlclbr.html#readmodule_ex" /> + <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.jsclbr.html#readmodule_ex" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.pyclbr.html#readmodule_ex" /> <keyword name="readmodule_ex" id="readmodule_ex" ref="eric5.Utilities.ClassBrowsers.rbclbr.html#readmodule_ex" /> <keyword name="rebase (Module)" id="rebase (Module)" ref="eric5.Plugins.VcsPlugins.vcsMercurial.RebaseExtension.rebase.html" /> @@ -13446,6 +13526,7 @@ <file>eric5.Plugins.VcsPlugins.vcsMercurial.BookmarksExtension.bookmarks.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.Config.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html</file> + <file>eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.HgFetchDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.ProjectHelper.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.FetchExtension.fetch.html</file> @@ -13455,6 +13536,7 @@ <file>eric5.Plugins.VcsPlugins.vcsMercurial.GpgExtension.gpg.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgAddSubrepositoryDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.html</file> + <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgBundleDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgClient.html</file> @@ -13482,6 +13564,7 @@ <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgServeDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html</file> + <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgTagDialog.html</file> <file>eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html</file> @@ -13793,6 +13876,7 @@ <file>eric5.Utilities.ClassBrowsers.ClbrBaseClasses.html</file> <file>eric5.Utilities.ClassBrowsers.__init__.html</file> <file>eric5.Utilities.ClassBrowsers.idlclbr.html</file> + <file>eric5.Utilities.ClassBrowsers.jsclbr.html</file> <file>eric5.Utilities.ClassBrowsers.pyclbr.html</file> <file>eric5.Utilities.ClassBrowsers.rbclbr.html</file> <file>eric5.Utilities.FtpUtilities.html</file>
--- a/Documentation/Source/eric5.Helpviewer.HelpWindow.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Helpviewer.HelpWindow.html Mon Aug 12 22:21:53 2013 +0200 @@ -265,12 +265,18 @@ <td><a href="#HelpWindow.__reload">__reload</a></td> <td>Private slot called to handle the reload action.</td> </tr><tr> +<td><a href="#HelpWindow.__removeOldDocumentation">__removeOldDocumentation</a></td> +<td>Private slot to remove non-existing documentation from the help engine.</td> +</tr><tr> <td><a href="#HelpWindow.__savePageAs">__savePageAs</a></td> <td>Private slot to save the current page.</td> </tr><tr> <td><a href="#HelpWindow.__savePageScreen">__savePageScreen</a></td> <td>Private slot to save the current page as a screen shot.</td> </tr><tr> +<td><a href="#HelpWindow.__saveVisiblePageScreen">__saveVisiblePageScreen</a></td> +<td>Private slot to save the visible part of the current page as a screen shot.</td> +</tr><tr> <td><a href="#HelpWindow.__searchForWord">__searchForWord</a></td> <td>Private slot to search for a word.</td> </tr><tr> @@ -1034,6 +1040,11 @@ <b>__reload</b>(<i></i>) <p> Private slot called to handle the reload action. +</p><a NAME="HelpWindow.__removeOldDocumentation" ID="HelpWindow.__removeOldDocumentation"></a> +<h4>HelpWindow.__removeOldDocumentation</h4> +<b>__removeOldDocumentation</b>(<i></i>) +<p> + Private slot to remove non-existing documentation from the help engine. </p><a NAME="HelpWindow.__savePageAs" ID="HelpWindow.__savePageAs"></a> <h4>HelpWindow.__savePageAs</h4> <b>__savePageAs</b>(<i></i>) @@ -1041,9 +1052,20 @@ Private slot to save the current page. </p><a NAME="HelpWindow.__savePageScreen" ID="HelpWindow.__savePageScreen"></a> <h4>HelpWindow.__savePageScreen</h4> -<b>__savePageScreen</b>(<i></i>) +<b>__savePageScreen</b>(<i>visibleOnly=False</i>) <p> Private slot to save the current page as a screen shot. +</p><dl> +<dt><i>visibleOnly</i></dt> +<dd> +flag indicating to just save the visible part + of the page (boolean) +</dd> +</dl><a NAME="HelpWindow.__saveVisiblePageScreen" ID="HelpWindow.__saveVisiblePageScreen"></a> +<h4>HelpWindow.__saveVisiblePageScreen</h4> +<b>__saveVisiblePageScreen</b>(<i></i>) +<p> + Private slot to save the visible part of the current page as a screen shot. </p><a NAME="HelpWindow.__searchForWord" ID="HelpWindow.__searchForWord"></a> <h4>HelpWindow.__searchForWord</h4> <b>__searchForWord</b>(<i></i>)
--- a/Documentation/Source/eric5.Helpviewer.PageScreenDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Helpviewer.PageScreenDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -76,7 +76,7 @@ </table> <a NAME="PageScreenDialog.__init__" ID="PageScreenDialog.__init__"></a> <h4>PageScreenDialog (Constructor)</h4> -<b>PageScreenDialog</b>(<i>view, parent=None</i>) +<b>PageScreenDialog</b>(<i>view, visibleOnly=False, parent=None</i>) <p> Constructor </p><dl> @@ -84,16 +84,26 @@ <dd> reference to the web view containing the page to be saved (HelpBrowser) +</dd><dt><i>visibleOnly</i></dt> +<dd> +flag indicating to just save the visible part + of the page (boolean) </dd><dt><i>parent</i></dt> <dd> reference to the parent widget (QWidget) </dd> </dl><a NAME="PageScreenDialog.__createPixmap" ID="PageScreenDialog.__createPixmap"></a> <h4>PageScreenDialog.__createPixmap</h4> -<b>__createPixmap</b>(<i></i>) +<b>__createPixmap</b>(<i>visibleOnly</i>) <p> Private slot to create a pixmap of the associated view's page. -</p><a NAME="PageScreenDialog.__savePageScreen" ID="PageScreenDialog.__savePageScreen"></a> +</p><dl> +<dt><i>visibleOnly</i></dt> +<dd> +flag indicating to just save the visible part + of the page (boolean) +</dd> +</dl><a NAME="PageScreenDialog.__savePageScreen" ID="PageScreenDialog.__savePageScreen"></a> <h4>PageScreenDialog.__savePageScreen</h4> <b>__savePageScreen</b>(<i></i>) <p>
--- a/Documentation/Source/eric5.IconEditor.IconEditorWindow.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.IconEditor.IconEditorWindow.html Mon Aug 12 22:21:53 2013 +0200 @@ -174,6 +174,9 @@ <td><a href="#IconEditorWindow.gestureEvent">gestureEvent</a></td> <td>Protected method handling gesture events.</td> </tr><tr> +<td><a href="#IconEditorWindow.setRecentPaths">setRecentPaths</a></td> +<td>Public method to set the last open and save paths.</td> +</tr><tr> <td><a href="#IconEditorWindow.wheelEvent">wheelEvent</a></td> <td>Protected method to handle wheel events.</td> </tr> @@ -184,7 +187,7 @@ </table> <a NAME="IconEditorWindow.__init__" ID="IconEditorWindow.__init__"></a> <h4>IconEditorWindow (Constructor)</h4> -<b>IconEditorWindow</b>(<i>fileName="", parent=None, fromEric=False, initShortcutsOnly=False</i>) +<b>IconEditorWindow</b>(<i>fileName="", parent=None, fromEric=False, initShortcutsOnly=False, project=None</i>) <p> Constructor </p><dl> @@ -202,6 +205,9 @@ <dd> flag indicating to just initialize the keyboard shortcuts (boolean) +</dd><dt><i>project=</i></dt> +<dd> +reference to the project object (Project) </dd> </dl><a NAME="IconEditorWindow.__about" ID="IconEditorWindow.__about"></a> <h4>IconEditorWindow.__about</h4> @@ -461,6 +467,19 @@ <dd> reference to the gesture event (QGestureEvent </dd> +</dl><a NAME="IconEditorWindow.setRecentPaths" ID="IconEditorWindow.setRecentPaths"></a> +<h4>IconEditorWindow.setRecentPaths</h4> +<b>setRecentPaths</b>(<i>openPath, savePath</i>) +<p> + Public method to set the last open and save paths. +</p><dl> +<dt><i>openPath</i></dt> +<dd> +least recently used open path (string) +</dd><dt><i>savePath</i></dt> +<dd> +least recently used save path (string) +</dd> </dl><a NAME="IconEditorWindow.wheelEvent" ID="IconEditorWindow.wheelEvent"></a> <h4>IconEditorWindow.wheelEvent</h4> <b>wheelEvent</b>(<i>evt</i>)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,94 @@ +<!DOCTYPE html> +<html><head> +<title>eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog</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>eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog</h1> +<p> +Module implementing a dialog to enter the user data for a minimal hgrc file. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#MercurialUserDataDialog">MercurialUserDataDialog</a></td> +<td>Class implementing a dialog to enter the user data for a minimal hgrc file.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="MercurialUserDataDialog" ID="MercurialUserDataDialog"></a> +<h2>MercurialUserDataDialog</h2> +<p> + Class implementing a dialog to enter the user data for a minimal hgrc file. +</p> +<h3>Derived from</h3> +QDialog, Ui_MercurialUserDataDialog +<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="#MercurialUserDataDialog.__init__">MercurialUserDataDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#MercurialUserDataDialog.getData">getData</a></td> +<td>Public method to retrieve the data.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="MercurialUserDataDialog.__init__" ID="MercurialUserDataDialog.__init__"></a> +<h4>MercurialUserDataDialog (Constructor)</h4> +<b>MercurialUserDataDialog</b>(<i>parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>parent</i></dt> +<dd> +reference to the parent widget (QWidget) +</dd> +</dl><a NAME="MercurialUserDataDialog.getData" ID="MercurialUserDataDialog.getData"></a> +<h4>MercurialUserDataDialog.getData</h4> +<b>getData</b>(<i></i>) +<p> + Public method to retrieve the data. +</p><dl> +<dt>Returns:</dt> +<dd> +tuple containing the user name and the user email address (string, string) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,128 @@ +<!DOCTYPE html> +<html><head> +<title>eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog</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>eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog</h1> +<p> +Module implementing a dialog to enter the archive data. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#HgArchiveDialog">HgArchiveDialog</a></td> +<td>Class implementing a dialog to enter the archive data.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="HgArchiveDialog" ID="HgArchiveDialog"></a> +<h2>HgArchiveDialog</h2> +<p> + Class implementing a dialog to enter the archive data. +</p> +<h3>Derived from</h3> +QDialog, Ui_HgArchiveDialog +<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="#HgArchiveDialog.__init__">HgArchiveDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#HgArchiveDialog.getData">getData</a></td> +<td>Public method to retrieve the data.</td> +</tr><tr> +<td><a href="#HgArchiveDialog.on_archiveButton_clicked">on_archiveButton_clicked</a></td> +<td>Private slot to select the archive name via a file selection dialog.</td> +</tr><tr> +<td><a href="#HgArchiveDialog.on_archiveEdit_textChanged">on_archiveEdit_textChanged</a></td> +<td>Private slot to handle changes of the archive name.</td> +</tr><tr> +<td><a href="#HgArchiveDialog.on_typeComboBox_activated">on_typeComboBox_activated</a></td> +<td>Private slot to react on changes of the selected archive type.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="HgArchiveDialog.__init__" ID="HgArchiveDialog.__init__"></a> +<h4>HgArchiveDialog (Constructor)</h4> +<b>HgArchiveDialog</b>(<i>vcs, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>vcs</i></dt> +<dd> +reference to the Mercurial object (Hg) +</dd><dt><i>parent</i></dt> +<dd> +reference to the parent widget (QWidget) +</dd> +</dl><a NAME="HgArchiveDialog.getData" ID="HgArchiveDialog.getData"></a> +<h4>HgArchiveDialog.getData</h4> +<b>getData</b>(<i></i>) +<p> + Public method to retrieve the data. +</p><dl> +<dt>Returns:</dt> +<dd> +tuple giving the archive name (string), the archive type (string), + the directory prefix 8string) and a flag indicating to recurse into + subrepositories (boolean) +</dd> +</dl><a NAME="HgArchiveDialog.on_archiveButton_clicked" ID="HgArchiveDialog.on_archiveButton_clicked"></a> +<h4>HgArchiveDialog.on_archiveButton_clicked</h4> +<b>on_archiveButton_clicked</b>(<i></i>) +<p> + Private slot to select the archive name via a file selection dialog. +</p><a NAME="HgArchiveDialog.on_archiveEdit_textChanged" ID="HgArchiveDialog.on_archiveEdit_textChanged"></a> +<h4>HgArchiveDialog.on_archiveEdit_textChanged</h4> +<b>on_archiveEdit_textChanged</b>(<i>archive</i>) +<p> + Private slot to handle changes of the archive name. +</p><a NAME="HgArchiveDialog.on_typeComboBox_activated" ID="HgArchiveDialog.on_typeComboBox_activated"></a> +<h4>HgArchiveDialog.on_typeComboBox_activated</h4> +<b>on_typeComboBox_activated</b>(<i>index</i>) +<p> + Private slot to react on changes of the selected archive type. +</p><dl> +<dt><i>index</i></dt> +<dd> +index of the selected type (integer) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgCommitDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -100,13 +100,16 @@ </table> <a NAME="HgCommitDialog.__init__" ID="HgCommitDialog.__init__"></a> <h4>HgCommitDialog (Constructor)</h4> -<b>HgCommitDialog</b>(<i>vcs, parent=None</i>) +<b>HgCommitDialog</b>(<i>vcs, mq, parent=None</i>) <p> Constructor </p><dl> <dt><i>vcs</i></dt> <dd> reference to the vcs object +</dd><dt><i>mq</i></dt> +<dd> +flag indicating a queue commit (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgLogBrowserDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -214,7 +214,7 @@ </table> <a NAME="HgLogBrowserDialog.__init__" ID="HgLogBrowserDialog.__init__"></a> <h4>HgLogBrowserDialog (Constructor)</h4> -<b>HgLogBrowserDialog</b>(<i>vcs, mode="log", bundle=None, parent=None</i>) +<b>HgLogBrowserDialog</b>(<i>vcs, mode="log", bundle=None, isFile=False, parent=None</i>) <p> Constructor </p><dl> @@ -227,6 +227,9 @@ </dd><dt><i>bundle</i></dt> <dd> name of a bundle file (string) +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgLogDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -112,7 +112,7 @@ </table> <a NAME="HgLogDialog.__init__" ID="HgLogDialog.__init__"></a> <h4>HgLogDialog (Constructor)</h4> -<b>HgLogDialog</b>(<i>vcs, mode="log", bundle=None, parent=None</i>) +<b>HgLogDialog</b>(<i>vcs, mode="log", bundle=None, isFile=False, parent=None</i>) <p> Constructor </p><dl> @@ -125,6 +125,9 @@ </dd><dt><i>bundle</i></dt> <dd> name of a bundle file (string) +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -126,6 +126,9 @@ <td><a href="#HgStatusDialog.__revert">__revert</a></td> <td>Private slot to handle the Revert context menu entry.</td> </tr><tr> +<td><a href="#HgStatusDialog.__sbsDiff">__sbsDiff</a></td> +<td>Private slot to handle the Diff context menu entry.</td> +</tr><tr> <td><a href="#HgStatusDialog.__showContextMenu">__showContextMenu</a></td> <td>Protected slot to show the context menu of the status list.</td> </tr><tr> @@ -174,6 +177,9 @@ <td><a href="#HgStatusDialog.on_revertButton_clicked">on_revertButton_clicked</a></td> <td>Private slot to handle the press of the Revert button.</td> </tr><tr> +<td><a href="#HgStatusDialog.on_sbsDiffButton_clicked">on_sbsDiffButton_clicked</a></td> +<td>Private slot to handle the press of the Side-by-Side Diff button.</td> +</tr><tr> <td><a href="#HgStatusDialog.on_sendButton_clicked">on_sendButton_clicked</a></td> <td>Private slot to send the input to the subversion process.</td> </tr><tr> @@ -196,13 +202,16 @@ </table> <a NAME="HgStatusDialog.__init__" ID="HgStatusDialog.__init__"></a> <h4>HgStatusDialog (Constructor)</h4> -<b>HgStatusDialog</b>(<i>vcs, parent=None</i>) +<b>HgStatusDialog</b>(<i>vcs, mq=False, parent=None</i>) <p> Constructor </p><dl> <dt><i>vcs</i></dt> <dd> reference to the vcs object +</dd><dt><i>mq</i></dt> +<dd> +flag indicating to show a queue repo status (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget) @@ -369,6 +378,11 @@ <b>__revert</b>(<i></i>) <p> Private slot to handle the Revert context menu entry. +</p><a NAME="HgStatusDialog.__sbsDiff" ID="HgStatusDialog.__sbsDiff"></a> +<h4>HgStatusDialog.__sbsDiff</h4> +<b>__sbsDiff</b>(<i></i>) +<p> + Private slot to handle the Diff context menu entry. </p><a NAME="HgStatusDialog.__showContextMenu" ID="HgStatusDialog.__showContextMenu"></a> <h4>HgStatusDialog.__showContextMenu</h4> <b>__showContextMenu</b>(<i>coord</i>) @@ -479,6 +493,11 @@ <b>on_revertButton_clicked</b>(<i></i>) <p> Private slot to handle the press of the Revert button. +</p><a NAME="HgStatusDialog.on_sbsDiffButton_clicked" ID="HgStatusDialog.on_sbsDiffButton_clicked"></a> +<h4>HgStatusDialog.on_sbsDiffButton_clicked</h4> +<b>on_sbsDiffButton_clicked</b>(<i></i>) +<p> + Private slot to handle the press of the Side-by-Side Diff button. </p><a NAME="HgStatusDialog.on_sendButton_clicked" ID="HgStatusDialog.on_sendButton_clicked"></a> <h4>HgStatusDialog.on_sendButton_clicked</h4> <b>on_sendButton_clicked</b>(<i></i>)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,216 @@ +<!DOCTYPE html> +<html><head> +<title>eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog</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>eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog</h1> +<p> +Module implementing a dialog to show some summary information of the working +directory state. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#HgSummaryDialog">HgSummaryDialog</a></td> +<td>Class implementing a dialog to show some summary information of the working directory state.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="HgSummaryDialog" ID="HgSummaryDialog"></a> +<h2>HgSummaryDialog</h2> +<p> + Class implementing a dialog to show some summary information of the working + directory state. +</p> +<h3>Derived from</h3> +QDialog, Ui_HgSummaryDialog +<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="#HgSummaryDialog.__init__">HgSummaryDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__committed">__committed</a></td> +<td>Private slot called after the commit has finished.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__finish">__finish</a></td> +<td>Private slot called when the process finished or the user pressed the button.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__procFinished">__procFinished</a></td> +<td>Private slot connected to the finished signal.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__processOutput">__processOutput</a></td> +<td>Private method to process the output into nice readable text.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__readStderr">__readStderr</a></td> +<td>Private slot to handle the readyReadStandardError signal.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__readStdout">__readStdout</a></td> +<td>Private slot to handle the readyReadStandardOutput signal.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.__showError">__showError</a></td> +<td>Private slot to show some error.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.closeEvent">closeEvent</a></td> +<td>Private slot implementing a close event handler.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td> +<td>Private slot called by a button of the button box clicked.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.on_refreshButton_clicked">on_refreshButton_clicked</a></td> +<td>Private slot to refresh the status display.</td> +</tr><tr> +<td><a href="#HgSummaryDialog.start">start</a></td> +<td>Public slot to start the hg summary command.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="HgSummaryDialog.__init__" ID="HgSummaryDialog.__init__"></a> +<h4>HgSummaryDialog (Constructor)</h4> +<b>HgSummaryDialog</b>(<i>vcs, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>vcs</i></dt> +<dd> +reference to the vcs object +</dd><dt><i>parent</i></dt> +<dd> +parent widget (QWidget) +</dd> +</dl><a NAME="HgSummaryDialog.__committed" ID="HgSummaryDialog.__committed"></a> +<h4>HgSummaryDialog.__committed</h4> +<b>__committed</b>(<i></i>) +<p> + Private slot called after the commit has finished. +</p><a NAME="HgSummaryDialog.__finish" ID="HgSummaryDialog.__finish"></a> +<h4>HgSummaryDialog.__finish</h4> +<b>__finish</b>(<i></i>) +<p> + Private slot called when the process finished or the user pressed the button. +</p><a NAME="HgSummaryDialog.__procFinished" ID="HgSummaryDialog.__procFinished"></a> +<h4>HgSummaryDialog.__procFinished</h4> +<b>__procFinished</b>(<i>exitCode, exitStatus</i>) +<p> + Private slot connected to the finished signal. +</p><dl> +<dt><i>exitCode</i></dt> +<dd> +exit code of the process (integer) +</dd><dt><i>exitStatus</i></dt> +<dd> +exit status of the process (QProcess.ExitStatus) +</dd> +</dl><a NAME="HgSummaryDialog.__processOutput" ID="HgSummaryDialog.__processOutput"></a> +<h4>HgSummaryDialog.__processOutput</h4> +<b>__processOutput</b>(<i>output</i>) +<p> + Private method to process the output into nice readable text. +</p><dl> +<dt><i>output</i></dt> +<dd> +output from the summary command (string) +</dd> +</dl><a NAME="HgSummaryDialog.__readStderr" ID="HgSummaryDialog.__readStderr"></a> +<h4>HgSummaryDialog.__readStderr</h4> +<b>__readStderr</b>(<i></i>) +<p> + Private slot to handle the readyReadStandardError signal. +</p><p> + It reads the error output of the process and inserts it into the + error pane. +</p><a NAME="HgSummaryDialog.__readStdout" ID="HgSummaryDialog.__readStdout"></a> +<h4>HgSummaryDialog.__readStdout</h4> +<b>__readStdout</b>(<i></i>) +<p> + Private slot to handle the readyReadStandardOutput signal. +</p><p> + It reads the output of the process, formats it and inserts it into + the contents pane. +</p><a NAME="HgSummaryDialog.__showError" ID="HgSummaryDialog.__showError"></a> +<h4>HgSummaryDialog.__showError</h4> +<b>__showError</b>(<i>out</i>) +<p> + Private slot to show some error. +</p><dl> +<dt><i>out</i></dt> +<dd> +error to be shown (string) +</dd> +</dl><a NAME="HgSummaryDialog.closeEvent" ID="HgSummaryDialog.closeEvent"></a> +<h4>HgSummaryDialog.closeEvent</h4> +<b>closeEvent</b>(<i>e</i>) +<p> + Private slot implementing a close event handler. +</p><dl> +<dt><i>e</i></dt> +<dd> +close event (QCloseEvent) +</dd> +</dl><a NAME="HgSummaryDialog.on_buttonBox_clicked" ID="HgSummaryDialog.on_buttonBox_clicked"></a> +<h4>HgSummaryDialog.on_buttonBox_clicked</h4> +<b>on_buttonBox_clicked</b>(<i>button</i>) +<p> + Private slot called by a button of the button box clicked. +</p><dl> +<dt><i>button</i></dt> +<dd> +button that was clicked (QAbstractButton) +</dd> +</dl><a NAME="HgSummaryDialog.on_refreshButton_clicked" ID="HgSummaryDialog.on_refreshButton_clicked"></a> +<h4>HgSummaryDialog.on_refreshButton_clicked</h4> +<b>on_refreshButton_clicked</b>(<i></i>) +<p> + Private slot to refresh the status display. +</p><a NAME="HgSummaryDialog.start" ID="HgSummaryDialog.start"></a> +<h4>HgSummaryDialog.start</h4> +<b>start</b>(<i>path, mq=False</i>) +<p> + Public slot to start the hg summary command. +</p><dl> +<dt><i>path</i></dt> +<dd> +path name of the working directory (string) +</dd><dt><i>mq</i></dt> +<dd> +flag indicating to show the queue status as well (boolean) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.HgUtilities.html Mon Aug 12 22:21:53 2013 +0200 @@ -36,6 +36,9 @@ <tr> <td><a href="#getConfigPath">getConfigPath</a></td> <td>Public method to get the filename of the config file.</td> +</tr><tr> +<td><a href="#prepareProcess">prepareProcess</a></td> +<td>Public method to prepare the given process.</td> </tr> </table> <hr /><hr /> @@ -51,5 +54,24 @@ </dd> </dl> <div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="prepareProcess" ID="prepareProcess"></a> +<h2>prepareProcess</h2> +<b>prepareProcess</b>(<i>proc, encoding="", language=""</i>) +<p> + Public method to prepare the given process. +</p><dl> +<dt><i>proc</i></dt> +<dd> +reference to the proces to be prepared (QProcess) +</dd><dt><i>encoding</i></dt> +<dd> +encoding to be used by the process (string) +</dd><dt><i>language</i></dt> +<dd> +language to be set (string) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ProjectBrowserHelper.html Mon Aug 12 22:21:53 2013 +0200 @@ -84,6 +84,12 @@ <td><a href="#HgProjectBrowserHelper.__HgRevert">__HgRevert</a></td> <td>Protected slot called by the context menu to revert changes made.</td> </tr><tr> +<td><a href="#HgProjectBrowserHelper.__HgSbsDiff">__HgSbsDiff</a></td> +<td>Private slot called by the context menu to show the difference of a file to the repository side-by-side.</td> +</tr><tr> +<td><a href="#HgProjectBrowserHelper.__HgSbsExtendedDiff">__HgSbsExtendedDiff</a></td> +<td>Private slot called by the context menu to show the difference of a file to the repository side-by-side allowing the selection of revisions to compare.</td> +</tr><tr> <td><a href="#HgProjectBrowserHelper._addVCSMenu">_addVCSMenu</a></td> <td>Protected method used to add the VCS menu to all project browsers.</td> </tr><tr> @@ -186,6 +192,18 @@ <b>__HgRevert</b>(<i></i>) <p> Protected slot called by the context menu to revert changes made. +</p><a NAME="HgProjectBrowserHelper.__HgSbsDiff" ID="HgProjectBrowserHelper.__HgSbsDiff"></a> +<h4>HgProjectBrowserHelper.__HgSbsDiff</h4> +<b>__HgSbsDiff</b>(<i></i>) +<p> + Private slot called by the context menu to show the difference of a file to + the repository side-by-side. +</p><a NAME="HgProjectBrowserHelper.__HgSbsExtendedDiff" ID="HgProjectBrowserHelper.__HgSbsExtendedDiff"></a> +<h4>HgProjectBrowserHelper.__HgSbsExtendedDiff</h4> +<b>__HgSbsExtendedDiff</b>(<i></i>) +<p> + Private slot called by the context menu to show the difference of a file to + the repository side-by-side allowing the selection of revisions to compare. </p><a NAME="HgProjectBrowserHelper._addVCSMenu" ID="HgProjectBrowserHelper._addVCSMenu"></a> <h4>HgProjectBrowserHelper._addVCSMenu</h4> <b>_addVCSMenu</b>(<i>mainMenu</i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.ProjectHelper.html Mon Aug 12 22:21:53 2013 +0200 @@ -63,6 +63,9 @@ <td><a href="#HgProjectHelper.__hgAddSubrepository">__hgAddSubrepository</a></td> <td>Private slot used to add a sub-repository.</td> </tr><tr> +<td><a href="#HgProjectHelper.__hgArchive">__hgArchive</a></td> +<td>Private slot to create an unversioned archive from the repository.</td> +</tr><tr> <td><a href="#HgProjectHelper.__hgBackout">__hgBackout</a></td> <td>Private slot used to back out changes of a changeset.</td> </tr><tr> @@ -183,6 +186,9 @@ <td><a href="#HgProjectHelper.__hgShowPaths">__hgShowPaths</a></td> <td>Private slot used to show the aliases for remote repositories.</td> </tr><tr> +<td><a href="#HgProjectHelper.__hgSummary">__hgSummary</a></td> +<td>Private slot to show a working directory summary.</td> +</tr><tr> <td><a href="#HgProjectHelper.__hgTagList">__hgTagList</a></td> <td>Private slot used to list the tags of the project.</td> </tr><tr> @@ -245,6 +251,11 @@ <b>__hgAddSubrepository</b>(<i></i>) <p> Private slot used to add a sub-repository. +</p><a NAME="HgProjectHelper.__hgArchive" ID="HgProjectHelper.__hgArchive"></a> +<h4>HgProjectHelper.__hgArchive</h4> +<b>__hgArchive</b>(<i></i>) +<p> + Private slot to create an unversioned archive from the repository. </p><a NAME="HgProjectHelper.__hgBackout" ID="HgProjectHelper.__hgBackout"></a> <h4>HgProjectHelper.__hgBackout</h4> <b>__hgBackout</b>(<i></i>) @@ -447,6 +458,11 @@ <b>__hgShowPaths</b>(<i></i>) <p> Private slot used to show the aliases for remote repositories. +</p><a NAME="HgProjectHelper.__hgSummary" ID="HgProjectHelper.__hgSummary"></a> +<h4>HgProjectHelper.__hgSummary</h4> +<b>__hgSummary</b>(<i></i>) +<p> + Private slot to show a working directory summary. </p><a NAME="HgProjectHelper.__hgTagList" ID="HgProjectHelper.__hgTagList"></a> <h4>HgProjectHelper.__hgTagList</h4> <b>__hgTagList</b>(<i></i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.ProjectHelper.html Mon Aug 12 22:21:53 2013 +0200 @@ -63,6 +63,9 @@ <td><a href="#QueuesProjectHelper.__hgQueueActivateQueue">__hgQueueActivateQueue</a></td> <td>Private slot used to set the active queue.</td> </tr><tr> +<td><a href="#QueuesProjectHelper.__hgQueueCommit">__hgQueueCommit</a></td> +<td>Private slot to commit changes in the queue repository.</td> +</tr><tr> <td><a href="#QueuesProjectHelper.__hgQueueCreateQueue">__hgQueueCreateQueue</a></td> <td>Private slot used to create a new queue.</td> </tr><tr> @@ -105,6 +108,9 @@ <td><a href="#QueuesProjectHelper.__hgQueueGuardsSetActive">__hgQueueGuardsSetActive</a></td> <td>Private slot used to set the active guards.</td> </tr><tr> +<td><a href="#QueuesProjectHelper.__hgQueueInit">__hgQueueInit</a></td> +<td>Private slot to initialize a new queue repository.</td> +</tr><tr> <td><a href="#QueuesProjectHelper.__hgQueueListPatches">__hgQueueListPatches</a></td> <td>Private slot used to show a list of applied and unapplied patches.</td> </tr><tr> @@ -174,6 +180,9 @@ <td><a href="#QueuesProjectHelper.__hgQueueShowPatch">__hgQueueShowPatch</a></td> <td>Private slot used to show the contents of the current patch.</td> </tr><tr> +<td><a href="#QueuesProjectHelper.__hgQueueStatus">__hgQueueStatus</a></td> +<td>Private slot to show the status of the queue repository.</td> +</tr><tr> <td><a href="#QueuesProjectHelper.__initGuardsActions">__initGuardsActions</a></td> <td>Public method to generate the guards action objects.</td> </tr><tr> @@ -210,6 +219,11 @@ <b>__hgQueueActivateQueue</b>(<i></i>) <p> Private slot used to set the active queue. +</p><a NAME="QueuesProjectHelper.__hgQueueCommit" ID="QueuesProjectHelper.__hgQueueCommit"></a> +<h4>QueuesProjectHelper.__hgQueueCommit</h4> +<b>__hgQueueCommit</b>(<i></i>) +<p> + Private slot to commit changes in the queue repository. </p><a NAME="QueuesProjectHelper.__hgQueueCreateQueue" ID="QueuesProjectHelper.__hgQueueCreateQueue"></a> <h4>QueuesProjectHelper.__hgQueueCreateQueue</h4> <b>__hgQueueCreateQueue</b>(<i></i>) @@ -282,6 +296,11 @@ <b>__hgQueueGuardsSetActive</b>(<i></i>) <p> Private slot used to set the active guards. +</p><a NAME="QueuesProjectHelper.__hgQueueInit" ID="QueuesProjectHelper.__hgQueueInit"></a> +<h4>QueuesProjectHelper.__hgQueueInit</h4> +<b>__hgQueueInit</b>(<i></i>) +<p> + Private slot to initialize a new queue repository. </p><a NAME="QueuesProjectHelper.__hgQueueListPatches" ID="QueuesProjectHelper.__hgQueueListPatches"></a> <h4>QueuesProjectHelper.__hgQueueListPatches</h4> <b>__hgQueueListPatches</b>(<i></i>) @@ -430,6 +449,11 @@ <b>__hgQueueShowPatch</b>(<i></i>) <p> Private slot used to show the contents of the current patch. +</p><a NAME="QueuesProjectHelper.__hgQueueStatus" ID="QueuesProjectHelper.__hgQueueStatus"></a> +<h4>QueuesProjectHelper.__hgQueueStatus</h4> +<b>__hgQueueStatus</b>(<i></i>) +<p> + Private slot to show the status of the queue repository. </p><a NAME="QueuesProjectHelper.__initGuardsActions" ID="QueuesProjectHelper.__initGuardsActions"></a> <h4>QueuesProjectHelper.__initGuardsActions</h4> <b>__initGuardsActions</b>(<i></i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.QueuesExtension.queues.html Mon Aug 12 22:21:53 2013 +0200 @@ -108,6 +108,9 @@ <td><a href="#Queues.hgQueueGuardsSetActive">hgQueueGuardsSetActive</a></td> <td>Public method to set the active guards.</td> </tr><tr> +<td><a href="#Queues.hgQueueInit">hgQueueInit</a></td> +<td>Public method to initialize a new queue repository.</td> +</tr><tr> <td><a href="#Queues.hgQueueListPatches">hgQueueListPatches</a></td> <td>Public method to show a list of all patches.</td> </tr><tr> @@ -132,6 +135,9 @@ <td><a href="#Queues.hgQueueShowPatch">hgQueueShowPatch</a></td> <td>Public method to show the contents of the current patch.</td> </tr><tr> +<td><a href="#Queues.hgQueueStatus">hgQueueStatus</a></td> +<td>Public method used to view the status of a queue repository.</td> +</tr><tr> <td><a href="#Queues.shutdown">shutdown</a></td> <td>Public method used to shutdown the queues interface.</td> </tr> @@ -348,6 +354,16 @@ <dd> file/directory name (string) </dd> +</dl><a NAME="Queues.hgQueueInit" ID="Queues.hgQueueInit"></a> +<h4>Queues.hgQueueInit</h4> +<b>hgQueueInit</b>(<i>name</i>) +<p> + Public method to initialize a new queue repository. +</p><dl> +<dt><i>name</i></dt> +<dd> +directory name (string) +</dd> </dl><a NAME="Queues.hgQueueListPatches" ID="Queues.hgQueueListPatches"></a> <h4>Queues.hgQueueListPatches</h4> <b>hgQueueListPatches</b>(<i>name</i>) @@ -451,6 +467,16 @@ <dd> file/directory name (string) </dd> +</dl><a NAME="Queues.hgQueueStatus" ID="Queues.hgQueueStatus"></a> +<h4>Queues.hgQueueStatus</h4> +<b>hgQueueStatus</b>(<i>name</i>) +<p> + Public method used to view the status of a queue repository. +</p><dl> +<dt><i>name</i></dt> +<dd> +directory name (string) +</dd> </dl><a NAME="Queues.shutdown" ID="Queues.shutdown"></a> <h4>Queues.shutdown</h4> <b>shutdown</b>(<i></i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.hg.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsMercurial.hg.html Mon Aug 12 22:21:53 2013 +0200 @@ -73,6 +73,9 @@ <td><a href="#Hg.__getExtensionsInfo">__getExtensionsInfo</a></td> <td>Private method to get the active extensions from Mercurial.</td> </tr><tr> +<td><a href="#Hg.__hgGetFileForRevision">__hgGetFileForRevision</a></td> +<td>Private method to get a file for a specific revision from the repository.</td> +</tr><tr> <td><a href="#Hg.__hgURL">__hgURL</a></td> <td>Private method to format a url for Mercurial.</td> </tr><tr> @@ -112,6 +115,9 @@ <td><a href="#Hg.hgAnnotate">hgAnnotate</a></td> <td>Public method to show the output of the hg annotate command.</td> </tr><tr> +<td><a href="#Hg.hgArchive">hgArchive</a></td> +<td>Public method to create an unversioned archive from the repository.</td> +</tr><tr> <td><a href="#Hg.hgBackout">hgBackout</a></td> <td>Public method used to backout an earlier changeset from the Mercurial repository.</td> </tr><tr> @@ -211,6 +217,9 @@ <td><a href="#Hg.hgRollback">hgRollback</a></td> <td>Public method used to rollback the last transaction.</td> </tr><tr> +<td><a href="#Hg.hgSbsDiff">hgSbsDiff</a></td> +<td>Public method used to view the difference of a file to the Mercurial repository side-by-side.</td> +</tr><tr> <td><a href="#Hg.hgServe">hgServe</a></td> <td>Public method used to serve the project.</td> </tr><tr> @@ -223,6 +232,9 @@ <td><a href="#Hg.hgShowPaths">hgShowPaths</a></td> <td>Public method to show the path aliases for remote repositories.</td> </tr><tr> +<td><a href="#Hg.hgSummary">hgSummary</a></td> +<td>Public method used to show some summary information of the working directory state.</td> +</tr><tr> <td><a href="#Hg.hgUnbundle">hgUnbundle</a></td> <td>Public method to apply changegroup files.</td> </tr><tr> @@ -351,7 +363,25 @@ <b>__getExtensionsInfo</b>(<i></i>) <p> Private method to get the active extensions from Mercurial. -</p><a NAME="Hg.__hgURL" ID="Hg.__hgURL"></a> +</p><a NAME="Hg.__hgGetFileForRevision" ID="Hg.__hgGetFileForRevision"></a> +<h4>Hg.__hgGetFileForRevision</h4> +<b>__hgGetFileForRevision</b>(<i>name, rev=""</i>) +<p> + Private method to get a file for a specific revision from the repository. +</p><dl> +<dt><i>name</i></dt> +<dd> +file name to get from the repository (string) +</dd><dt><i>rev=</i></dt> +<dd> +revision to retrieve (string) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +contents of the file (string) and an error message (string) +</dd> +</dl><a NAME="Hg.__hgURL" ID="Hg.__hgURL"></a> <h4>Hg.__hgURL</h4> <b>__hgURL</b>(<i>url</i>) <p> @@ -486,7 +516,12 @@ <dd> file name to show the annotations for (string) </dd> -</dl><a NAME="Hg.hgBackout" ID="Hg.hgBackout"></a> +</dl><a NAME="Hg.hgArchive" ID="Hg.hgArchive"></a> +<h4>Hg.hgArchive</h4> +<b>hgArchive</b>(<i></i>) +<p> + Public method to create an unversioned archive from the repository. +</p><a NAME="Hg.hgBackout" ID="Hg.hgBackout"></a> <h4>Hg.hgBackout</h4> <b>hgBackout</b>(<i>name</i>) <p> @@ -759,7 +794,7 @@ </dd> </dl><a NAME="Hg.hgLogBrowser" ID="Hg.hgLogBrowser"></a> <h4>Hg.hgLogBrowser</h4> -<b>hgLogBrowser</b>(<i>path</i>) +<b>hgLogBrowser</b>(<i>path, isFile=False</i>) <p> Public method used to browse the log of a file/directory from the Mercurial repository. @@ -767,6 +802,9 @@ <dt><i>path</i></dt> <dd> file/directory name to show the log of (string) +</dd><dt><i>isFile=</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd> </dl><a NAME="Hg.hgNormalizeURL" ID="Hg.hgNormalizeURL"></a> <h4>Hg.hgNormalizeURL</h4> @@ -907,6 +945,23 @@ <dd> directory name (string or list of strings) </dd> +</dl><a NAME="Hg.hgSbsDiff" ID="Hg.hgSbsDiff"></a> +<h4>Hg.hgSbsDiff</h4> +<b>hgSbsDiff</b>(<i>name, extended=False, revisions=None</i>) +<p> + Public method used to view the difference of a file to the Mercurial repository + side-by-side. +</p><dl> +<dt><i>name</i></dt> +<dd> +file name to be diffed (string) +</dd><dt><i>extended=</i></dt> +<dd> +flag indicating the extended variant (boolean) +</dd><dt><i>revisions=</i></dt> +<dd> +tuple of two revisions (tuple of strings) +</dd> </dl><a NAME="Hg.hgServe" ID="Hg.hgServe"></a> <h4>Hg.hgServe</h4> <b>hgServe</b>(<i>name</i>) @@ -947,6 +1002,17 @@ <dd> file/directory name (string) </dd> +</dl><a NAME="Hg.hgSummary" ID="Hg.hgSummary"></a> +<h4>Hg.hgSummary</h4> +<b>hgSummary</b>(<i>mq=False</i>) +<p> + Public method used to show some summary information of the + working directory state. +</p><dl> +<dt><i>mq</i></dt> +<dd> +flag indicating to show the queue status as well (boolean) +</dd> </dl><a NAME="Hg.hgUnbundle" ID="Hg.hgUnbundle"></a> <h4>Hg.hgUnbundle</h4> <b>hgUnbundle</b>(<i>name</i>) @@ -1097,7 +1163,7 @@ </dd> </dl><a NAME="Hg.vcsCommit" ID="Hg.vcsCommit"></a> <h4>Hg.vcsCommit</h4> -<b>vcsCommit</b>(<i>name, message, noDialog=False, closeBranch=False</i>) +<b>vcsCommit</b>(<i>name, message, noDialog=False, closeBranch=False, mq=False</i>) <p> Public method used to make the change of a file/directory permanent in the Mercurial repository. @@ -1114,6 +1180,9 @@ </dd><dt><i>closeBranch=</i></dt> <dd> flag indicating a close branch commit (boolean) +</dd><dt><i>mq=</i></dt> +<dd> +flag indicating a queue commit (boolean) </dd> </dl><a NAME="Hg.vcsConvertProject" ID="Hg.vcsConvertProject"></a> <h4>Hg.vcsConvertProject</h4>
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.ProjectBrowserHelper.html Mon Aug 12 22:21:53 2013 +0200 @@ -102,6 +102,12 @@ <td><a href="#SvnProjectBrowserHelper.__SVNResolve">__SVNResolve</a></td> <td>Private slot called by the context menu to resolve conflicts of a file.</td> </tr><tr> +<td><a href="#SvnProjectBrowserHelper.__SVNSbsDiff">__SVNSbsDiff</a></td> +<td>Private slot called by the context menu to show the difference of a file to the repository side-by-side.</td> +</tr><tr> +<td><a href="#SvnProjectBrowserHelper.__SVNSbsExtendedDiff">__SVNSbsExtendedDiff</a></td> +<td>Private slot called by the context menu to show the difference of a file to the repository side-by-side allowing the selection of revisions to compare.</td> +</tr><tr> <td><a href="#SvnProjectBrowserHelper.__SVNSetProp">__SVNSetProp</a></td> <td>Private slot called by the context menu to set a subversion property of a file.</td> </tr><tr> @@ -250,6 +256,18 @@ <b>__SVNResolve</b>(<i></i>) <p> Private slot called by the context menu to resolve conflicts of a file. +</p><a NAME="SvnProjectBrowserHelper.__SVNSbsDiff" ID="SvnProjectBrowserHelper.__SVNSbsDiff"></a> +<h4>SvnProjectBrowserHelper.__SVNSbsDiff</h4> +<b>__SVNSbsDiff</b>(<i></i>) +<p> + Private slot called by the context menu to show the difference of a file to + the repository side-by-side. +</p><a NAME="SvnProjectBrowserHelper.__SVNSbsExtendedDiff" ID="SvnProjectBrowserHelper.__SVNSbsExtendedDiff"></a> +<h4>SvnProjectBrowserHelper.__SVNSbsExtendedDiff</h4> +<b>__SVNSbsExtendedDiff</b>(<i></i>) +<p> + Private slot called by the context menu to show the difference of a file to + the repository side-by-side allowing the selection of revisions to compare. </p><a NAME="SvnProjectBrowserHelper.__SVNSetProp" ID="SvnProjectBrowserHelper.__SVNSetProp"></a> <h4>SvnProjectBrowserHelper.__SVNSetProp</h4> <b>__SVNSetProp</b>(<i></i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogBrowserDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -139,13 +139,16 @@ </table> <a NAME="SvnLogBrowserDialog.__init__" ID="SvnLogBrowserDialog.__init__"></a> <h4>SvnLogBrowserDialog (Constructor)</h4> -<b>SvnLogBrowserDialog</b>(<i>vcs, parent=None</i>) +<b>SvnLogBrowserDialog</b>(<i>vcs, isFile=False, parent=None</i>) <p> Constructor </p><dl> <dt><i>vcs</i></dt> <dd> reference to the vcs object +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.SvnLogDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -85,13 +85,16 @@ </table> <a NAME="SvnLogDialog.__init__" ID="SvnLogDialog.__init__"></a> <h4>SvnLogDialog (Constructor)</h4> -<b>SvnLogDialog</b>(<i>vcs, parent=None</i>) +<b>SvnLogDialog</b>(<i>vcs, isFile=False, parent=None</i>) <p> Constructor </p><dl> <dt><i>vcs</i></dt> <dd> reference to the vcs object +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.SvnStatusDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -134,6 +134,9 @@ <td><a href="#SvnStatusDialog.__revert">__revert</a></td> <td>Private slot to handle the Revert context menu entry.</td> </tr><tr> +<td><a href="#SvnStatusDialog.__sbsDiff">__sbsDiff</a></td> +<td>Private slot to handle the Side-by-Side Diff context menu entry.</td> +</tr><tr> <td><a href="#SvnStatusDialog.__showContextMenu">__showContextMenu</a></td> <td>Protected slot to show the context menu of the status list.</td> </tr><tr> @@ -173,6 +176,9 @@ <td><a href="#SvnStatusDialog.on_revertButton_clicked">on_revertButton_clicked</a></td> <td>Private slot to handle the press of the Revert button.</td> </tr><tr> +<td><a href="#SvnStatusDialog.on_sbsDiffButton_clicked">on_sbsDiffButton_clicked</a></td> +<td>Private slot to handle the press of the Side-by-Side Diff button.</td> +</tr><tr> <td><a href="#SvnStatusDialog.on_statusFilterCombo_activated">on_statusFilterCombo_activated</a></td> <td>Private slot to react to the selection of a status filter.</td> </tr><tr> @@ -405,6 +411,11 @@ <b>__revert</b>(<i></i>) <p> Private slot to handle the Revert context menu entry. +</p><a NAME="SvnStatusDialog.__sbsDiff" ID="SvnStatusDialog.__sbsDiff"></a> +<h4>SvnStatusDialog.__sbsDiff</h4> +<b>__sbsDiff</b>(<i></i>) +<p> + Private slot to handle the Side-by-Side Diff context menu entry. </p><a NAME="SvnStatusDialog.__showContextMenu" ID="SvnStatusDialog.__showContextMenu"></a> <h4>SvnStatusDialog.__showContextMenu</h4> <b>__showContextMenu</b>(<i>coord</i>) @@ -485,6 +496,11 @@ <b>on_revertButton_clicked</b>(<i></i>) <p> Private slot to handle the press of the Revert button. +</p><a NAME="SvnStatusDialog.on_sbsDiffButton_clicked" ID="SvnStatusDialog.on_sbsDiffButton_clicked"></a> +<h4>SvnStatusDialog.on_sbsDiffButton_clicked</h4> +<b>on_sbsDiffButton_clicked</b>(<i></i>) +<p> + Private slot to handle the press of the Side-by-Side Diff button. </p><a NAME="SvnStatusDialog.on_statusFilterCombo_activated" ID="SvnStatusDialog.on_statusFilterCombo_activated"></a> <h4>SvnStatusDialog.on_statusFilterCombo_activated</h4> <b>on_statusFilterCombo_activated</b>(<i>txt</i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsPySvn.subversion.html Mon Aug 12 22:21:53 2013 +0200 @@ -66,6 +66,9 @@ <td><a href="#Subversion.__init__">Subversion</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#Subversion.__svnGetFileForRevision">__svnGetFileForRevision</a></td> +<td>Private method to get a file for a specific revision from the repository.</td> +</tr><tr> <td><a href="#Subversion.__svnURL">__svnURL</a></td> <td>Private method to format a url for subversion.</td> </tr><tr> @@ -147,6 +150,9 @@ <td><a href="#Subversion.svnResolve">svnResolve</a></td> <td>Public method used to resolve conflicts of a file/directory.</td> </tr><tr> +<td><a href="#Subversion.svnSbsDiff">svnSbsDiff</a></td> +<td>Public method used to view the difference of a file to the Mercurial repository side-by-side.</td> +</tr><tr> <td><a href="#Subversion.svnSetProp">svnSetProp</a></td> <td>Public method used to add a property to a file/directory.</td> </tr><tr> @@ -276,6 +282,24 @@ <dd> name of this object (string) </dd> +</dl><a NAME="Subversion.__svnGetFileForRevision" ID="Subversion.__svnGetFileForRevision"></a> +<h4>Subversion.__svnGetFileForRevision</h4> +<b>__svnGetFileForRevision</b>(<i>name, rev=""</i>) +<p> + Private method to get a file for a specific revision from the repository. +</p><dl> +<dt><i>name</i></dt> +<dd> +file name to get from the repository (string) +</dd><dt><i>rev=</i></dt> +<dd> +revision to retrieve (integer or string) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +contents of the file (string) and an error message (string) +</dd> </dl><a NAME="Subversion.__svnURL" ID="Subversion.__svnURL"></a> <h4>Subversion.__svnURL</h4> <b>__svnURL</b>(<i>url</i>) @@ -587,7 +611,7 @@ </dd> </dl><a NAME="Subversion.svnLogBrowser" ID="Subversion.svnLogBrowser"></a> <h4>Subversion.svnLogBrowser</h4> -<b>svnLogBrowser</b>(<i>path</i>) +<b>svnLogBrowser</b>(<i>path, isFile=False</i>) <p> Public method used to browse the log of a file/directory from the Subversion repository. @@ -595,6 +619,9 @@ <dt><i>path</i></dt> <dd> file/directory name to show the log of (string) +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd> </dl><a NAME="Subversion.svnNormalizeURL" ID="Subversion.svnNormalizeURL"></a> <h4>Subversion.svnNormalizeURL</h4> @@ -654,6 +681,23 @@ <dd> file/directory name to be resolved (string) </dd> +</dl><a NAME="Subversion.svnSbsDiff" ID="Subversion.svnSbsDiff"></a> +<h4>Subversion.svnSbsDiff</h4> +<b>svnSbsDiff</b>(<i>name, extended=False, revisions=None</i>) +<p> + Public method used to view the difference of a file to the Mercurial repository + side-by-side. +</p><dl> +<dt><i>name</i></dt> +<dd> +file name to be diffed (string) +</dd><dt><i>extended=</i></dt> +<dd> +flag indicating the extended variant (boolean) +</dd><dt><i>revisions=</i></dt> +<dd> +tuple of two revisions (tuple of strings) +</dd> </dl><a NAME="Subversion.svnSetProp" ID="Subversion.svnSetProp"></a> <h4>Subversion.svnSetProp</h4> <b>svnSetProp</b>(<i>name, recursive=False</i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.ProjectBrowserHelper.html Mon Aug 12 22:21:53 2013 +0200 @@ -99,6 +99,12 @@ <td><a href="#SvnProjectBrowserHelper.__SVNResolve">__SVNResolve</a></td> <td>Private slot called by the context menu to resolve conflicts of a file.</td> </tr><tr> +<td><a href="#SvnProjectBrowserHelper.__SVNSbsDiff">__SVNSbsDiff</a></td> +<td>Private slot called by the context menu to show the difference of a file to the repository side-by-side.</td> +</tr><tr> +<td><a href="#SvnProjectBrowserHelper.__SVNSbsExtendedDiff">__SVNSbsExtendedDiff</a></td> +<td>Private slot called by the context menu to show the difference of a file to the repository side-by-side allowing the selection of revisions to compare.</td> +</tr><tr> <td><a href="#SvnProjectBrowserHelper.__SVNSetProp">__SVNSetProp</a></td> <td>Private slot called by the context menu to set a subversion property of a file.</td> </tr><tr> @@ -241,6 +247,18 @@ <b>__SVNResolve</b>(<i></i>) <p> Private slot called by the context menu to resolve conflicts of a file. +</p><a NAME="SvnProjectBrowserHelper.__SVNSbsDiff" ID="SvnProjectBrowserHelper.__SVNSbsDiff"></a> +<h4>SvnProjectBrowserHelper.__SVNSbsDiff</h4> +<b>__SVNSbsDiff</b>(<i></i>) +<p> + Private slot called by the context menu to show the difference of a file to + the repository side-by-side. +</p><a NAME="SvnProjectBrowserHelper.__SVNSbsExtendedDiff" ID="SvnProjectBrowserHelper.__SVNSbsExtendedDiff"></a> +<h4>SvnProjectBrowserHelper.__SVNSbsExtendedDiff</h4> +<b>__SVNSbsExtendedDiff</b>(<i></i>) +<p> + Private slot called by the context menu to show the difference of a file to + the repository side-by-side allowing the selection of revisions to compare. </p><a NAME="SvnProjectBrowserHelper.__SVNSetProp" ID="SvnProjectBrowserHelper.__SVNSetProp"></a> <h4>SvnProjectBrowserHelper.__SVNSetProp</h4> <b>__SVNSetProp</b>(<i></i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogBrowserDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -160,13 +160,16 @@ </table> <a NAME="SvnLogBrowserDialog.__init__" ID="SvnLogBrowserDialog.__init__"></a> <h4>SvnLogBrowserDialog (Constructor)</h4> -<b>SvnLogBrowserDialog</b>(<i>vcs, parent=None</i>) +<b>SvnLogBrowserDialog</b>(<i>vcs, isFile=False, parent=None</i>) <p> Constructor </p><dl> <dt><i>vcs</i></dt> <dd> reference to the vcs object +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.SvnLogDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -100,13 +100,16 @@ </table> <a NAME="SvnLogDialog.__init__" ID="SvnLogDialog.__init__"></a> <h4>SvnLogDialog (Constructor)</h4> -<b>SvnLogDialog</b>(<i>vcs, parent=None</i>) +<b>SvnLogDialog</b>(<i>vcs, isFile=False, parent=None</i>) <p> Constructor </p><dl> <dt><i>vcs</i></dt> <dd> reference to the vcs object +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd><dt><i>parent</i></dt> <dd> parent widget (QWidget)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.SvnStatusDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -143,6 +143,9 @@ <td><a href="#SvnStatusDialog.__revert">__revert</a></td> <td>Private slot to handle the Revert context menu entry.</td> </tr><tr> +<td><a href="#SvnStatusDialog.__sbsDiff">__sbsDiff</a></td> +<td>Private slot to handle the Side-by-Side Diff context menu entry.</td> +</tr><tr> <td><a href="#SvnStatusDialog.__showContextMenu">__showContextMenu</a></td> <td>Protected slot to show the context menu of the status list.</td> </tr><tr> @@ -191,6 +194,9 @@ <td><a href="#SvnStatusDialog.on_revertButton_clicked">on_revertButton_clicked</a></td> <td>Private slot to handle the press of the Revert button.</td> </tr><tr> +<td><a href="#SvnStatusDialog.on_sbsDiffButton_clicked">on_sbsDiffButton_clicked</a></td> +<td>Private slot to handle the press of the Side-by-Side Diff button.</td> +</tr><tr> <td><a href="#SvnStatusDialog.on_sendButton_clicked">on_sendButton_clicked</a></td> <td>Private slot to send the input to the subversion process.</td> </tr><tr> @@ -452,6 +458,11 @@ <b>__revert</b>(<i></i>) <p> Private slot to handle the Revert context menu entry. +</p><a NAME="SvnStatusDialog.__sbsDiff" ID="SvnStatusDialog.__sbsDiff"></a> +<h4>SvnStatusDialog.__sbsDiff</h4> +<b>__sbsDiff</b>(<i></i>) +<p> + Private slot to handle the Side-by-Side Diff context menu entry. </p><a NAME="SvnStatusDialog.__showContextMenu" ID="SvnStatusDialog.__showContextMenu"></a> <h4>SvnStatusDialog.__showContextMenu</h4> <b>__showContextMenu</b>(<i>coord</i>) @@ -557,6 +568,11 @@ <b>on_revertButton_clicked</b>(<i></i>) <p> Private slot to handle the press of the Revert button. +</p><a NAME="SvnStatusDialog.on_sbsDiffButton_clicked" ID="SvnStatusDialog.on_sbsDiffButton_clicked"></a> +<h4>SvnStatusDialog.on_sbsDiffButton_clicked</h4> +<b>on_sbsDiffButton_clicked</b>(<i></i>) +<p> + Private slot to handle the press of the Side-by-Side Diff button. </p><a NAME="SvnStatusDialog.on_sendButton_clicked" ID="SvnStatusDialog.on_sendButton_clicked"></a> <h4>SvnStatusDialog.on_sendButton_clicked</h4> <b>on_sendButton_clicked</b>(<i></i>)
--- a/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Plugins.VcsPlugins.vcsSubversion.subversion.html Mon Aug 12 22:21:53 2013 +0200 @@ -66,6 +66,9 @@ <td><a href="#Subversion.__init__">Subversion</a></td> <td>Constructor</td> </tr><tr> +<td><a href="#Subversion.__svnGetFileForRevision">__svnGetFileForRevision</a></td> +<td>Private method to get a file for a specific revision from the repository.</td> +</tr><tr> <td><a href="#Subversion.__svnURL">__svnURL</a></td> <td>Private method to format a url for subversion.</td> </tr><tr> @@ -141,6 +144,9 @@ <td><a href="#Subversion.svnResolve">svnResolve</a></td> <td>Public method used to resolve conflicts of a file/directory.</td> </tr><tr> +<td><a href="#Subversion.svnSbsDiff">svnSbsDiff</a></td> +<td>Public method used to view the difference of a file to the Mercurial repository side-by-side.</td> +</tr><tr> <td><a href="#Subversion.svnSetProp">svnSetProp</a></td> <td>Public method used to add a property to a file/directory.</td> </tr><tr> @@ -270,6 +276,24 @@ <dd> name of this object (string) </dd> +</dl><a NAME="Subversion.__svnGetFileForRevision" ID="Subversion.__svnGetFileForRevision"></a> +<h4>Subversion.__svnGetFileForRevision</h4> +<b>__svnGetFileForRevision</b>(<i>name, rev=""</i>) +<p> + Private method to get a file for a specific revision from the repository. +</p><dl> +<dt><i>name</i></dt> +<dd> +file name to get from the repository (string) +</dd><dt><i>rev=</i></dt> +<dd> +revision to retrieve (integer or string) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +contents of the file (string) and an error message (string) +</dd> </dl><a NAME="Subversion.__svnURL" ID="Subversion.__svnURL"></a> <h4>Subversion.__svnURL</h4> <b>__svnURL</b>(<i>url</i>) @@ -558,7 +582,7 @@ </dd> </dl><a NAME="Subversion.svnLogBrowser" ID="Subversion.svnLogBrowser"></a> <h4>Subversion.svnLogBrowser</h4> -<b>svnLogBrowser</b>(<i>path</i>) +<b>svnLogBrowser</b>(<i>path, isFile=False</i>) <p> Public method used to browse the log of a file/directory from the Subversion repository. @@ -566,6 +590,9 @@ <dt><i>path</i></dt> <dd> file/directory name to show the log of (string) +</dd><dt><i>isFile</i></dt> +<dd> +flag indicating log for a file is to be shown (boolean) </dd> </dl><a NAME="Subversion.svnNormalizeURL" ID="Subversion.svnNormalizeURL"></a> <h4>Subversion.svnNormalizeURL</h4> @@ -625,6 +652,23 @@ <dd> file/directory name to be resolved (string) </dd> +</dl><a NAME="Subversion.svnSbsDiff" ID="Subversion.svnSbsDiff"></a> +<h4>Subversion.svnSbsDiff</h4> +<b>svnSbsDiff</b>(<i>name, extended=False, revisions=None</i>) +<p> + Public method used to view the difference of a file to the Mercurial repository + side-by-side. +</p><dl> +<dt><i>name</i></dt> +<dd> +file name to be diffed (string) +</dd><dt><i>extended=</i></dt> +<dd> +flag indicating the extended variant (boolean) +</dd><dt><i>revisions=</i></dt> +<dd> +tuple of two revisions (tuple of strings) +</dd> </dl><a NAME="Subversion.svnSetProp" ID="Subversion.svnSetProp"></a> <h4>Subversion.svnSetProp</h4> <b>svnSetProp</b>(<i>name, recursive=False</i>)
--- a/Documentation/Source/eric5.UI.BrowserModel.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.UI.BrowserModel.html Mon Aug 12 22:21:53 2013 +0200 @@ -639,6 +639,9 @@ <td><a href="#BrowserFileItem.isIdlFile">isIdlFile</a></td> <td>Public method to check, if this file is a CORBA IDL file.</td> </tr><tr> +<td><a href="#BrowserFileItem.isJavaScriptFile">isJavaScriptFile</a></td> +<td>Public method to check, if this file is a JavaScript file.</td> +</tr><tr> <td><a href="#BrowserFileItem.isLinguistFile">isLinguistFile</a></td> <td>Public method to check, if this file is a Qt-Linguist file.</td> </tr><tr> @@ -762,6 +765,16 @@ <dd> flag indicating a CORBA IDL file (boolean) </dd> +</dl><a NAME="BrowserFileItem.isJavaScriptFile" ID="BrowserFileItem.isJavaScriptFile"></a> +<h4>BrowserFileItem.isJavaScriptFile</h4> +<b>isJavaScriptFile</b>(<i></i>) +<p> + Public method to check, if this file is a JavaScript file. +</p><dl> +<dt>Returns:</dt> +<dd> +flag indicating a JavaScript file (boolean) +</dd> </dl><a NAME="BrowserFileItem.isLinguistFile" ID="BrowserFileItem.isLinguistFile"></a> <h4>BrowserFileItem.isLinguistFile</h4> <b>isLinguistFile</b>(<i></i>)
--- a/Documentation/Source/eric5.UI.CompareDialog.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.UI.CompareDialog.html Mon Aug 12 22:21:53 2013 +0200 @@ -72,6 +72,9 @@ <td><a href="#CompareDialog.__appendText">__appendText</a></td> <td>Private method to append text to the end of the contents pane.</td> </tr><tr> +<td><a href="#CompareDialog.__compare">__compare</a></td> +<td>Private method to compare two lists of text.</td> +</tr><tr> <td><a href="#CompareDialog.__fileChanged">__fileChanged</a></td> <td>Private slot to enable/disable the Compare button.</td> </tr><tr> @@ -84,6 +87,9 @@ <td><a href="#CompareDialog.__selectFile">__selectFile</a></td> <td>Private slot to display a file selection dialog.</td> </tr><tr> +<td><a href="#CompareDialog.compare">compare</a></td> +<td>Public method to compare two lists of text.</td> +</tr><tr> <td><a href="#CompareDialog.on_buttonBox_clicked">on_buttonBox_clicked</a></td> <td>Private slot called by a button of the button box clicked.</td> </tr><tr> @@ -155,6 +161,19 @@ <dd> flag indicating interline changes (boolean) </dd> +</dl><a NAME="CompareDialog.__compare" ID="CompareDialog.__compare"></a> +<h4>CompareDialog.__compare</h4> +<b>__compare</b>(<i>lines1, lines2</i>) +<p> + Private method to compare two lists of text. +</p><dl> +<dt><i>lines1</i></dt> +<dd> +text to compare against (list of strings) +</dd><dt><i>lines2</i></dt> +<dd> +text to compare (list of strings) +</dd> </dl><a NAME="CompareDialog.__fileChanged" ID="CompareDialog.__fileChanged"></a> <h4>CompareDialog.__fileChanged</h4> <b>__fileChanged</b>(<i></i>) @@ -187,6 +206,25 @@ field for the display of the selected filename (QLineEdit) </dd> +</dl><a NAME="CompareDialog.compare" ID="CompareDialog.compare"></a> +<h4>CompareDialog.compare</h4> +<b>compare</b>(<i>lines1, lines2, name1="", name2=""</i>) +<p> + Public method to compare two lists of text. +</p><dl> +<dt><i>lines1</i></dt> +<dd> +text to compare against (string or list of strings) +</dd><dt><i>lines2</i></dt> +<dd> +text to compare (string or list of strings) +</dd><dt><i>name1=</i></dt> +<dd> +name to be shown for the first text (string) +</dd><dt><i>name2=</i></dt> +<dd> +name to be shown for the second text (string) +</dd> </dl><a NAME="CompareDialog.on_buttonBox_clicked" ID="CompareDialog.on_buttonBox_clicked"></a> <h4>CompareDialog.on_buttonBox_clicked</h4> <b>on_buttonBox_clicked</b>(<i>button</i>)
--- a/Documentation/Source/eric5.Utilities.ClassBrowsers.__init__.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/eric5.Utilities.ClassBrowsers.__init__.html Mon Aug 12 22:21:53 2013 +0200 @@ -34,7 +34,7 @@ </p> <h3>Global Attributes</h3> <table> -<tr><td>IDL_SOURCE</td></tr><tr><td>PTL_SOURCE</td></tr><tr><td>PY_SOURCE</td></tr><tr><td>RB_SOURCE</td></tr><tr><td>SUPPORTED_TYPES</td></tr><tr><td>__extensions</td></tr> +<tr><td>IDL_SOURCE</td></tr><tr><td>JS_SOURCE</td></tr><tr><td>PTL_SOURCE</td></tr><tr><td>PY_SOURCE</td></tr><tr><td>RB_SOURCE</td></tr><tr><td>SUPPORTED_TYPES</td></tr><tr><td>__extensions</td></tr> </table> <h3>Classes</h3> <table>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric5.Utilities.ClassBrowsers.jsclbr.html Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,344 @@ +<!DOCTYPE html> +<html><head> +<title>eric5.Utilities.ClassBrowsers.jsclbr</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>eric5.Utilities.ClassBrowsers.jsclbr</h1> +<p> +Parse a JavaScript file and retrieve variables and functions. +</p><p> +It uses the JavaScript parser contained in the jasy web framework. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>SUPPORTED_TYPES</td></tr><tr><td>_modules</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#Attribute">Attribute</a></td> +<td>Class to represent a class attribute.</td> +</tr><tr> +<td><a href="#Function">Function</a></td> +<td>Class to represent a Python function.</td> +</tr><tr> +<td><a href="#VisibilityMixin">VisibilityMixin</a></td> +<td>Mixin class implementing the notion of visibility.</td> +</tr><tr> +<td><a href="#Visitor">Visitor</a></td> +<td>Class implementing a visitor going through the parsed tree.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr> +<td><a href="#readmodule_ex">readmodule_ex</a></td> +<td>Read a JavaScript file and return a dictionary of functions and variables.</td> +</tr> +</table> +<hr /><hr /> +<a NAME="Attribute" ID="Attribute"></a> +<h2>Attribute</h2> +<p> + Class to represent a class attribute. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.Attribute, VisibilityMixin +<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="#Attribute.__init__">Attribute</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Attribute.__init__" ID="Attribute.__init__"></a> +<h4>Attribute (Constructor)</h4> +<b>Attribute</b>(<i>module, name, file, lineno</i>) +<p> + Constructor +</p><dl> +<dt><i>module</i></dt> +<dd> +name of the module containing this class +</dd><dt><i>name</i></dt> +<dd> +name of this class +</dd><dt><i>file</i></dt> +<dd> +filename containing this attribute +</dd><dt><i>lineno</i></dt> +<dd> +linenumber of the class definition +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="Function" ID="Function"></a> +<h2>Function</h2> +<p> + Class to represent a Python function. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.Function, VisibilityMixin +<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="#Function.__init__">Function</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Function.__init__" ID="Function.__init__"></a> +<h4>Function (Constructor)</h4> +<b>Function</b>(<i>module, name, file, lineno, signature='', separator=', '</i>) +<p> + Constructor +</p><dl> +<dt><i>module</i></dt> +<dd> +name of the module containing this function +</dd><dt><i>name</i></dt> +<dd> +name of this function +</dd><dt><i>file</i></dt> +<dd> +filename containing this class +</dd><dt><i>lineno</i></dt> +<dd> +linenumber of the class definition +</dd><dt><i>signature</i></dt> +<dd> +parameterlist of the method +</dd><dt><i>separator</i></dt> +<dd> +string separating the parameters +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="VisibilityMixin" ID="VisibilityMixin"></a> +<h2>VisibilityMixin</h2> +<p> + Mixin class implementing the notion of visibility. +</p> +<h3>Derived from</h3> +ClbrBaseClasses.ClbrVisibilityMixinBase +<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="#VisibilityMixin.__init__">VisibilityMixin</a></td> +<td>Method to initialize the visibility.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VisibilityMixin.__init__" ID="VisibilityMixin.__init__"></a> +<h4>VisibilityMixin (Constructor)</h4> +<b>VisibilityMixin</b>(<i></i>) +<p> + Method to initialize the visibility. +</p> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="Visitor" ID="Visitor"></a> +<h2>Visitor</h2> +<p> + Class implementing a visitor going through the parsed tree. +</p> +<h3>Derived from</h3> +object +<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="#Visitor.__init__">Visitor</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#Visitor.__visit">__visit</a></td> +<td>Private method implementing the visit logic delegating to interesting methods.</td> +</tr><tr> +<td><a href="#Visitor.parse">parse</a></td> +<td>Public method to parse the source.</td> +</tr><tr> +<td><a href="#Visitor.visit_const">visit_const</a></td> +<td>Public method to treat a constant node.</td> +</tr><tr> +<td><a href="#Visitor.visit_function">visit_function</a></td> +<td>Public method to treat a function node.</td> +</tr><tr> +<td><a href="#Visitor.visit_noop">visit_noop</a></td> +<td>Public method to ignore the given node.</td> +</tr><tr> +<td><a href="#Visitor.visit_property_init">visit_property_init</a></td> +<td>Public method to treat a property_init node.</td> +</tr><tr> +<td><a href="#Visitor.visit_var">visit_var</a></td> +<td>Public method to treat a variable node.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="Visitor.__init__" ID="Visitor.__init__"></a> +<h4>Visitor (Constructor)</h4> +<b>Visitor</b>(<i>src, module, filename</i>) +<p> + Constructor +</p><dl> +<dt><i>src</i></dt> +<dd> +source to be parsed (string) +</dd><dt><i>module</i></dt> +<dd> +name of the module (string) +</dd><dt><i>filename</i></dt> +<dd> +file name (string) +</dd> +</dl><a NAME="Visitor.__visit" ID="Visitor.__visit"></a> +<h4>Visitor.__visit</h4> +<b>__visit</b>(<i>root</i>) +<p> + Private method implementing the visit logic delegating to interesting methods. +</p><a NAME="Visitor.parse" ID="Visitor.parse"></a> +<h4>Visitor.parse</h4> +<b>parse</b>(<i></i>) +<p> + Public method to parse the source. +</p><dl> +<dt>Returns:</dt> +<dd> +dictionary containing the parsed information +</dd> +</dl><a NAME="Visitor.visit_const" ID="Visitor.visit_const"></a> +<h4>Visitor.visit_const</h4> +<b>visit_const</b>(<i>node</i>) +<p> + Public method to treat a constant node. +</p><dl> +<dt><i>node</i></dt> +<dd> +reference to the node (jasy.js.parse.Node.Node) +</dd> +</dl><a NAME="Visitor.visit_function" ID="Visitor.visit_function"></a> +<h4>Visitor.visit_function</h4> +<b>visit_function</b>(<i>node</i>) +<p> + Public method to treat a function node. +</p><dl> +<dt><i>node</i></dt> +<dd> +reference to the node (jasy.js.parse.Node.Node) +</dd> +</dl><a NAME="Visitor.visit_noop" ID="Visitor.visit_noop"></a> +<h4>Visitor.visit_noop</h4> +<b>visit_noop</b>(<i>node</i>) +<p> + Public method to ignore the given node. +</p><dl> +<dt><i>node</i></dt> +<dd> +reference to the node (jasy.js.parse.Node.Node) +</dd> +</dl><a NAME="Visitor.visit_property_init" ID="Visitor.visit_property_init"></a> +<h4>Visitor.visit_property_init</h4> +<b>visit_property_init</b>(<i>node</i>) +<p> + Public method to treat a property_init node. +</p><dl> +<dt><i>node</i></dt> +<dd> +reference to the node (jasy.js.parse.Node.Node) +</dd> +</dl><a NAME="Visitor.visit_var" ID="Visitor.visit_var"></a> +<h4>Visitor.visit_var</h4> +<b>visit_var</b>(<i>node</i>) +<p> + Public method to treat a variable node. +</p><dl> +<dt><i>node</i></dt> +<dd> +reference to the node (jasy.js.parse.Node.Node) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /><hr /> +<a NAME="readmodule_ex" ID="readmodule_ex"></a> +<h2>readmodule_ex</h2> +<b>readmodule_ex</b>(<i>module, path=[]</i>) +<p> + Read a JavaScript file and return a dictionary of functions and variables. +</p><dl> +<dt><i>module</i></dt> +<dd> +name of the JavaScript file (string) +</dd><dt><i>path</i></dt> +<dd> +path the file should be searched in (list of strings) +</dd> +</dl><dl> +<dt>Returns:</dt> +<dd> +the resulting dictionary +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/index-eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.html Mon Aug 12 22:21:53 2013 +0200 @@ -30,6 +30,9 @@ <tr> <td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialPage.html">MercurialPage</a></td> <td>Module implementing the Mercurial configuration page.</td> +</tr><tr> +<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.ConfigurationPage.MercurialUserDataDialog.html">MercurialUserDataDialog</a></td> +<td>Module implementing a dialog to enter the user data for a minimal hgrc file.</td> </tr> </table> </body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric5.Plugins.VcsPlugins.vcsMercurial.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/index-eric5.Plugins.VcsPlugins.vcsMercurial.html Mon Aug 12 22:21:53 2013 +0200 @@ -68,6 +68,9 @@ <td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.HgAnnotateDialog.html">HgAnnotateDialog</a></td> <td>Module implementing a dialog to show the output of the hg annotate command.</td> </tr><tr> +<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.HgArchiveDialog.html">HgArchiveDialog</a></td> +<td>Module implementing a dialog to enter the archive data.</td> +</tr><tr> <td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.HgBackoutDialog.html">HgBackoutDialog</a></td> <td>Module implementing a dialog to enter the data for a backout operation.</td> </tr><tr> @@ -149,6 +152,9 @@ <td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.HgStatusMonitorThread.html">HgStatusMonitorThread</a></td> <td>Module implementing the VCS status monitor thread class for Mercurial.</td> </tr><tr> +<td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.HgSummaryDialog.html">HgSummaryDialog</a></td> +<td>Module implementing a dialog to show some summary information of the working directory state.</td> +</tr><tr> <td><a href="eric5.Plugins.VcsPlugins.vcsMercurial.HgTagBranchListDialog.html">HgTagBranchListDialog</a></td> <td>Module implementing a dialog to show a list of tags or branches.</td> </tr><tr>
--- a/Documentation/Source/index-eric5.Utilities.ClassBrowsers.html Mon Aug 12 19:41:53 2013 +0200 +++ b/Documentation/Source/index-eric5.Utilities.ClassBrowsers.html Mon Aug 12 22:21:53 2013 +0200 @@ -46,6 +46,9 @@ <td><a href="eric5.Utilities.ClassBrowsers.idlclbr.html">idlclbr</a></td> <td>Parse a CORBA IDL file and retrieve modules, interfaces, methods and attributes.</td> </tr><tr> +<td><a href="eric5.Utilities.ClassBrowsers.jsclbr.html">jsclbr</a></td> +<td>Parse a JavaScript file and retrieve variables and functions.</td> +</tr><tr> <td><a href="eric5.Utilities.ClassBrowsers.pyclbr.html">pyclbr</a></td> <td>Parse a Python file and retrieve classes, functions/methods and attributes.</td> </tr><tr>
--- a/E5Gui/E5Completers.py Mon Aug 12 19:41:53 2013 +0200 +++ b/E5Gui/E5Completers.py Mon Aug 12 22:21:53 2013 +0200 @@ -10,7 +10,7 @@ from __future__ import unicode_literals # __IGNORE_WARNING__ from PyQt4.QtCore import QDir, Qt -from PyQt4.QtGui import QCompleter, QDirModel, QStringListModel +from PyQt4.QtGui import QCompleter, QFileSystemModel, QStringListModel from Globals import isWindowsPlatform @@ -31,7 +31,7 @@ @keyparam showHidden flag indicating to show hidden entries as well (boolean) """ super(E5FileCompleter, self).__init__(parent) - self.__model = QDirModel(self) + self.__model = QFileSystemModel(self) if showHidden: self.__model.setFilter( QDir.Filters(QDir.Dirs | QDir.Files | QDir.Drives | \ @@ -63,7 +63,7 @@ @keyparam showHidden flag indicating to show hidden entries as well (boolean) """ super(E5DirCompleter, self).__init__(parent) - self.__model = QDirModel(self) + self.__model = QFileSystemModel(self) if showHidden: self.__model.setFilter( QDir.Filters(QDir.Drives | QDir.AllDirs | QDir.Hidden))
--- a/E5Gui/E5SideBar.py Mon Aug 12 19:41:53 2013 +0200 +++ b/E5Gui/E5SideBar.py Mon Aug 12 22:21:53 2013 +0200 @@ -54,9 +54,9 @@ self.__autoHideButton.setToolTip( self.trUtf8("Deselect to activate automatic collapsing")) self.barLayout = QBoxLayout(QBoxLayout.LeftToRight) - self.barLayout.setMargin(0) + self.barLayout.setContentsMargins(0, 0, 0, 0) self.layout = QBoxLayout(QBoxLayout.TopToBottom) - self.layout.setMargin(0) + self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.barLayout.addWidget(self.__autoHideButton) self.barLayout.addWidget(self.__tabBar)
--- a/Helpviewer/Download/DownloadAskActionDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Helpviewer/Download/DownloadAskActionDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>500</width> - <height>202</height> + <height>273</height> </rect> </property> <property name="windowTitle"> @@ -150,6 +150,19 @@ </layout> </item> <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>19</height> + </size> + </property> + </spacer> + </item> + <item> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum>
--- a/Helpviewer/HelpTabBar.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Helpviewer/HelpTabBar.py Mon Aug 12 22:21:53 2013 +0200 @@ -65,7 +65,7 @@ self.__previewPopup.setView(l) self.__previewPopup.layout().setAlignment(Qt.AlignTop) - self.__previewPopup.layout().setMargin(0) + self.__previewPopup.layout().setContentsMargins(0, 0, 0, 0) tr = self.tabRect(self.__currentTabPreviewIndex) pos = QPoint(tr.x(), tr.y() + tr.height())
--- a/Helpviewer/HelpTabWidget.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Helpviewer/HelpTabWidget.py Mon Aug 12 22:21:53 2013 +0200 @@ -82,7 +82,7 @@ self.__rightCornerWidget = QWidget(self) self.__rightCornerWidgetLayout = QHBoxLayout(self.__rightCornerWidget) - self.__rightCornerWidgetLayout.setMargin(0) + self.__rightCornerWidgetLayout.setContentsMargins(0, 0, 0, 0) self.__rightCornerWidgetLayout.setSpacing(0) self.__navigationMenu = QMenu(self)
--- a/Helpviewer/HelpWindow.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Helpviewer/HelpWindow.py Mon Aug 12 22:21:53 2013 +0200 @@ -136,6 +136,7 @@ self.__helpEngine = \ QHelpEngine(os.path.join(Utilities.getConfigDir(), "browser", "eric5help.qhc"), self) + self.__removeOldDocumentation() self.__helpEngine.warning.connect(self.__warning) else: self.__helpEngine = None @@ -459,7 +460,7 @@ self.__actions.append(self.saveAsAct) self.savePageScreenAct = E5Action(self.trUtf8('Save Page Screen'), - UI.PixmapCache.getIcon("filePixmap.png"), + UI.PixmapCache.getIcon("fileSavePixmap.png"), self.trUtf8('Save Page Screen...'), 0, 0, self, 'help_file_save_page_screen') self.savePageScreenAct.setStatusTip( @@ -472,6 +473,21 @@ self.savePageScreenAct.triggered[()].connect(self.__savePageScreen) self.__actions.append(self.savePageScreenAct) + self.saveVisiblePageScreenAct = E5Action(self.trUtf8('Save Visible Page Screen'), + UI.PixmapCache.getIcon("fileSaveVisiblePixmap.png"), + self.trUtf8('Save Visible Page Screen...'), + 0, 0, self, 'help_file_save_visible_page_screen') + self.saveVisiblePageScreenAct.setStatusTip( + self.trUtf8('Save the visible part of the current page as a screen shot')) + self.saveVisiblePageScreenAct.setWhatsThis(self.trUtf8( + """<b>Save Visible Page Screen...</b>""" + """<p>Saves the visible part of the current page as a screen shot.</p>""" + )) + if not self.initShortcutsOnly: + self.saveVisiblePageScreenAct.triggered[()].connect( + self.__saveVisiblePageScreen) + self.__actions.append(self.saveVisiblePageScreenAct) + bookmarksManager = self.bookmarksManager() self.importBookmarksAct = E5Action(self.trUtf8('Import Bookmarks'), self.trUtf8('&Import Bookmarks...'), @@ -1362,6 +1378,7 @@ menu.addSeparator() menu.addAction(self.saveAsAct) menu.addAction(self.savePageScreenAct) + menu.addAction(self.saveVisiblePageScreenAct) menu.addSeparator() menu.addAction(self.printPreviewAct) menu.addAction(self.printAct) @@ -1523,6 +1540,13 @@ filetb.addAction(self.closeAct) filetb.addAction(self.exitAct) + self.savePageScreenMenu = QMenu(self) + self.savePageScreenMenu.addAction(self.savePageScreenAct) + self.savePageScreenMenu.addAction(self.saveVisiblePageScreenAct) + savePageScreenButton = filetb.widgetForAction(self.savePageScreenAct) + savePageScreenButton.setMenu(self.savePageScreenMenu) + savePageScreenButton.setPopupMode(QToolButton.MenuButtonPopup) + edittb = self.addToolBar(self.trUtf8("Edit")) edittb.setObjectName("EditToolBar") edittb.setIconSize(UI.Config.ToolBarIconSize) @@ -1841,14 +1865,24 @@ if browser is not None: browser.saveAs() - def __savePageScreen(self): + def __savePageScreen(self, visibleOnly=False): """ Private slot to save the current page as a screen shot. + + @param visibleOnly flag indicating to just save the visible part + of the page (boolean) """ from .PageScreenDialog import PageScreenDialog - self.__pageScreen = PageScreenDialog(self.currentBrowser()) + self.__pageScreen = PageScreenDialog( + self.currentBrowser(), visibleOnly=visibleOnly) self.__pageScreen.show() + def __saveVisiblePageScreen(self): + """ + Private slot to save the visible part of the current page as a screen shot. + """ + self.__savePageScreen(visibleOnly=True) + def __about(self): """ Private slot to show the about information. @@ -2051,7 +2085,8 @@ Preferences.setGeometry("HelpViewerGeometry", QByteArray()) try: - del self.__class__.helpwindows[self.__class__.helpwindows.index(self)] + if self.fromEric or len(self.__class__.helpwindows) > 1: + del self.__class__.helpwindows[self.__class__.helpwindows.index(self)] except ValueError: pass @@ -2554,7 +2589,7 @@ if self.__indexingProgress is None: self.__indexingProgress = QWidget() layout = QHBoxLayout(self.__indexingProgress) - layout.setMargin(0) + layout.setContentsMargins(0, 0, 0, 0) sizePolicy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Maximum) label = QLabel(self.trUtf8("Updating search index")) @@ -2602,6 +2637,15 @@ self.__searchWord = word self.__searchForWord() + def __removeOldDocumentation(self): + """ + Private slot to remove non-existing documentation from the help engine. + """ + for namespace in self.__helpEngine.registeredDocumentations(): + docFile = self.__helpEngine.documentationFileName(namespace) + if not os.path.exists(docFile): + self.__helpEngine.unregisterDocumentation(namespace) + def __lookForNewDocumentation(self): """ Private slot to look for new documentation to be loaded into the
--- a/Helpviewer/PageScreenDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Helpviewer/PageScreenDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -22,28 +22,34 @@ """ Class documentation goes here. """ - def __init__(self, view, parent=None): + def __init__(self, view, visibleOnly=False, parent=None): """ Constructor @param view reference to the web view containing the page to be saved (HelpBrowser) + @param visibleOnly flag indicating to just save the visible part + of the page (boolean) @param parent reference to the parent widget (QWidget) """ super(PageScreenDialog, self).__init__(parent) self.setupUi(self) self.__view = view - self.__createPixmap() + self.__createPixmap(visibleOnly) self.pageScreenLabel.setPixmap(self.__pagePixmap) - def __createPixmap(self): + def __createPixmap(self, visibleOnly): """ Private slot to create a pixmap of the associated view's page. + + @param visibleOnly flag indicating to just save the visible part + of the page (boolean) """ page = self.__view.page() origSize = page.viewportSize() - page.setViewportSize(page.mainFrame().contentsSize()) + if not visibleOnly: + page.setViewportSize(page.mainFrame().contentsSize()) image = QImage(page.viewportSize(), QImage.Format_ARGB32) painter = QPainter(image)
--- a/Helpviewer/Sync/DirectorySyncHandler.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Helpviewer/Sync/DirectorySyncHandler.py Mon Aug 12 22:21:53 2013 +0200 @@ -92,7 +92,7 @@ except IOError as err: self.syncStatus.emit(type_, self.trUtf8("Cannot read remote file.\n{0}").format(str(err))) - self.syncFinished(type_, False, True) + self.syncFinished.emit(type_, False, True) return QCoreApplication.processEvents() @@ -113,7 +113,7 @@ data = self.readFile(fileName, type_) if data.isEmpty(): self.syncStatus.emit(type_, self._messages[type_]["LocalMissing"]) - self.syncFinished(type_, False, False) + self.syncFinished.emit(type_, False, False) return else: try: @@ -124,7 +124,7 @@ except IOError as err: self.syncStatus.emit(type_, self.trUtf8("Cannot write remote file.\n{0}").format(str(err))) - self.syncFinished(type_, False, False) + self.syncFinished.emit(type_, False, False) return self.syncFinished.emit(type_, True, False)
--- a/IconEditor/IconEditorWindow.py Mon Aug 12 19:41:53 2013 +0200 +++ b/IconEditor/IconEditorWindow.py Mon Aug 12 22:21:53 2013 +0200 @@ -9,10 +9,12 @@ from __future__ import unicode_literals # __IGNORE_WARNING__ +import os + from PyQt4.QtCore import pyqtSignal, Qt, QSize, QSignalMapper, QFileInfo, QFile, \ QEvent from PyQt4.QtGui import QScrollArea, QPalette, QImage, QImageReader, QImageWriter, \ - QKeySequence, qApp, QLabel, QDockWidget, QWhatsThis + QKeySequence, QLabel, QDockWidget, QWhatsThis from E5Gui.E5Action import E5Action, createActionGroup from E5Gui import E5FileDialog, E5MessageBox @@ -38,7 +40,7 @@ windows = [] def __init__(self, fileName="", parent=None, fromEric=False, - initShortcutsOnly=False): + initShortcutsOnly=False, project=None): """ Constructor @@ -48,6 +50,7 @@ eric5 (boolean) @keyparam initShortcutsOnly flag indicating to just initialize the keyboard shortcuts (boolean) + @keyparam project reference to the project object (Project) """ super(IconEditorWindow, self).__init__(parent) self.setObjectName("eric5_icon_editor") @@ -106,6 +109,10 @@ self.__checkActions() + self.__project = project + self.__lastOpenPath = "" + self.__lastSavePath = "" + self.grabGesture(Qt.PinchGesture) def __initFileFilters(self): @@ -275,10 +282,8 @@ """<b>Quit</b>""" """<p>Quit the icon editor.</p>""" )) - if self.fromEric: - self.exitAct.triggered[()].connect(self.close) - else: - self.exitAct.triggered[()].connect(qApp.closeAllWindows) + if not self.fromEric: + self.exitAct.triggered[()].connect(self.__closeAll) self.__actions.append(self.exitAct) def __initEditActions(self): @@ -754,8 +759,9 @@ menu.addSeparator() menu.addAction(self.closeAct) menu.addAction(self.closeAllAct) - menu.addSeparator() - menu.addAction(self.exitAct) + if not self.fromEric: + menu.addSeparator() + menu.addAction(self.exitAct) menu = mb.addMenu(self.trUtf8("&Edit")) menu.setTearOffEnabled(True) @@ -821,7 +827,8 @@ filetb.addAction(self.saveAsAct) filetb.addSeparator() filetb.addAction(self.closeAct) - filetb.addAction(self.exitAct) + if not self.fromEric: + filetb.addAction(self.exitAct) edittb = self.addToolBar(self.trUtf8("Edit")) edittb.setObjectName("EditToolBar") @@ -932,7 +939,8 @@ Preferences.setGeometry("IconEditorGeometry", self.saveGeometry()) try: - del self.__class__.windows[self.__class__.windows.index(self)] + if self.fromEric or len(self.__class__.windows) > 1: + del self.__class__.windows[self.__class__.windows.index(self)] except ValueError: pass @@ -958,7 +966,9 @@ """ Public slot called to open a new icon editor window. """ - ie = IconEditorWindow(parent=self.parent(), fromEric=self.fromEric) + ie = IconEditorWindow(parent=self.parent(), fromEric=self.fromEric, + project=self.__project) + ie.setRecentPaths(self.__lastOpenPath, self.__lastSavePath) ie.show() def __openIcon(self): @@ -966,14 +976,19 @@ Private slot to open an icon file. """ if self.__maybeSave(): + if not self.__lastOpenPath: + if self.__project and self.__project.isOpen(): + self.__lastOpenPath = self.__project.getProjectPath() + fileName = E5FileDialog.getOpenFileNameAndFilter( self, self.trUtf8("Open icon file"), - "", + self.__lastOpenPath, self.__inputFilter, self.__defaultFilter)[0] if fileName: self.__loadIconFile(fileName) + self.__lastOpenPath = os.path.dirname(fileName) self.__checkActions() def __saveIcon(self): @@ -989,10 +1004,16 @@ """ Private slot to save the icon with a new name. """ + if not self.__lastSavePath: + if self.__project and self.__project.isOpen(): + self.__lastSavePath = self.__project.getProjectPath() + if not self.__lastSavePath and self.__lastOpenPath: + self.__lastSavePath = self.__lastOpenPath + fileName, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( self, self.trUtf8("Save icon file"), - "", + self.__lastSavePath, self.__outputFilter, self.__defaultFilter, E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) @@ -1013,6 +1034,8 @@ if not res: return False + self.__lastSavePath = os.path.dirname(fileName) + return self.__saveIconFile(fileName) def __closeAll(self): @@ -1022,6 +1045,7 @@ for win in self.__class__.windows[:]: if win != self: win.close() + self.close() def __loadIconFile(self, fileName): """ @@ -1128,6 +1152,18 @@ return False return True + def setRecentPaths(self, openPath, savePath): + """ + Public method to set the last open and save paths. + + @param openPath least recently used open path (string) + @param savePath least recently used save path (string) + """ + if openPath: + self.__lastOpenPath = openPath + if savePath: + self.__lastSavePath = savePath + def __checkActions(self): """ Private slot to check some actions for their enable/disable status.
--- a/PluginManager/PluginInstallDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/PluginManager/PluginInstallDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -530,7 +530,7 @@ self.setSizeGripEnabled(True) self.__layout = QVBoxLayout(self) - self.__layout.setMargin(0) + self.__layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__layout) self.cw = PluginInstallWidget(pluginManager, pluginFileNames, self)
--- a/PluginManager/PluginRepositoryDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/PluginManager/PluginRepositoryDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -542,7 +542,7 @@ self.setSizeGripEnabled(True) self.__layout = QVBoxLayout(self) - self.__layout.setMargin(0) + self.__layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__layout) self.cw = PluginRepositoryWidget(self)
--- a/PluginManager/PluginUninstallDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/PluginManager/PluginUninstallDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -187,7 +187,7 @@ self.setSizeGripEnabled(True) self.__layout = QVBoxLayout(self) - self.__layout.setMargin(0) + self.__layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__layout) self.cw = PluginUninstallWidget(pluginManager, self)
--- a/Plugins/CheckerPlugins/Pep8/Pep8Dialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/CheckerPlugins/Pep8/Pep8Dialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -341,6 +341,8 @@ checker.messages.sort(key=lambda a: a[1]) for message in checker.messages: fname, lineno, position, text = message + if lineno > len(source): + lineno = len(source) if "__IGNORE_WARNING__" not in Utilities.extractLineFlags( source[lineno - 1].strip()): self.noResults = False
--- a/Plugins/CheckerPlugins/Pep8/pep8.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/CheckerPlugins/Pep8/pep8.py Mon Aug 12 22:21:53 2013 +0200 @@ -44,6 +44,7 @@ 500 line length 600 deprecation 700 statements +900 processing errors You can add checks to this program by writing plugins. Each plugin is a simple function that is called for each line of source code, either @@ -233,6 +234,8 @@ "multiple statements on one line (colon)"), "E702": QT_TRANSLATE_NOOP("pep8", "multiple statements on one line (semicolon)"), + "E901": QT_TRANSLATE_NOOP("pep8", + "Token Error: {0}"), } pep8_messages_sample_args = { @@ -1070,42 +1073,46 @@ self.blank_lines_before_comment = 0 self.tokens = [] parens = 0 - for token in tokenize.generate_tokens(self.readline_check_physical): - if options.verbose >= 3: - if token[2][0] == token[3][0]: - pos = '[%s:%s]' % (token[2][1] or '', token[3][1]) - else: - pos = 'l.%s' % token[3][0] - print('l.%s\t%s\t%s\t%r' % - (token[2][0], pos, tokenize.tok_name[token[0]], token[1])) - self.tokens.append(token) - token_type, text = token[0:2] - if token_type == tokenize.OP and text in '([{': - parens += 1 - if token_type == tokenize.OP and text in '}])': - parens -= 1 - if token_type == tokenize.NEWLINE and not parens: - self.check_logical() - self.blank_lines = 0 - self.blank_lines_before_comment = 0 - self.tokens = [] - if token_type == tokenize.NL and not parens: - if len(self.tokens) <= 1: - # The physical line contains only this token. - self.blank_lines += 1 - self.tokens = [] - if token_type == tokenize.COMMENT: - source_line = token[4] - token_start = token[2][1] - if source_line[:token_start].strip() == '': - self.blank_lines_before_comment = max(self.blank_lines, - self.blank_lines_before_comment) + try: + for token in tokenize.generate_tokens(self.readline_check_physical): + if options.verbose >= 3: + if token[2][0] == token[3][0]: + pos = '[%s:%s]' % (token[2][1] or '', token[3][1]) + else: + pos = 'l.%s' % token[3][0] + print('l.%s\t%s\t%s\t%r' % + (token[2][0], pos, tokenize.tok_name[token[0]], token[1])) + self.tokens.append(token) + token_type, text = token[0:2] + if token_type == tokenize.OP and text in '([{': + parens += 1 + if token_type == tokenize.OP and text in '}])': + parens -= 1 + if token_type == tokenize.NEWLINE and not parens: + self.check_logical() self.blank_lines = 0 - if text.endswith('\n') and not parens: - # The comment also ends a physical line. This works around - # Python < 2.6 behaviour, which does not generate NL after - # a comment which is on a line by itself. + self.blank_lines_before_comment = 0 + self.tokens = [] + if token_type == tokenize.NL and not parens: + if len(self.tokens) <= 1: + # The physical line contains only this token. + self.blank_lines += 1 self.tokens = [] + if token_type == tokenize.COMMENT: + source_line = token[4] + token_start = token[2][1] + if source_line[:token_start].strip() == '': + self.blank_lines_before_comment = max(self.blank_lines, + self.blank_lines_before_comment) + self.blank_lines = 0 + if text.endswith('\n') and not parens: + # The comment also ends a physical line. This works around + # Python < 2.6 behaviour, which does not generate NL after + # a comment which is on a line by itself. + self.tokens = [] + except tokenize.TokenError as err: + msg, (lnum, pos) = err.args + self.report_error_args(lnum, pos, "E901", "TokenError", msg) return self.file_errors def report_error(self, line_number, offset, text, check):
--- a/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialPage.py Mon Aug 12 22:21:53 2013 +0200 @@ -12,6 +12,7 @@ import os from PyQt4.QtCore import pyqtSlot +from PyQt4.QtGui import QDialog from Preferences.ConfigurationPages.ConfigurationPageBase import ConfigurationPageBase from .Ui_MercurialPage import Ui_MercurialPage @@ -64,8 +65,20 @@ from QScintilla.MiniEditor import MiniEditor cfgFile = self.__plugin.getConfigPath() if not os.path.exists(cfgFile): + username = "" + from .MercurialUserDataDialog import MercurialUserDataDialog + dlg = MercurialUserDataDialog() + if dlg.exec_() == QDialog.Accepted: + name, email = dlg.getData() + if name and email: + username = "{0} <{1}>".format(name, email) + elif name: + username = name + elif email: + username = email try: f = open(cfgFile, "w") + f.write(os.linesep.join(["[ui]", "username = {0}".format(username), ""])) f.close() except (IOError, OSError): # ignore these
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialUserDataDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to enter the user data for a minimal hgrc file. +""" + +from __future__ import unicode_literals # __IGNORE_WARNING__ + +from PyQt4.QtGui import QDialog + +from .Ui_MercurialUserDataDialog import Ui_MercurialUserDataDialog + + +class MercurialUserDataDialog(QDialog, Ui_MercurialUserDataDialog): + """ + Class implementing a dialog to enter the user data for a minimal hgrc file. + """ + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (QWidget) + """ + super(MercurialUserDataDialog, self).__init__(parent) + self.setupUi(self) + + def getData(self): + """ + Public method to retrieve the data. + + @return tuple containing the user name and the user email address (string, string) + """ + return self.usernameEdit.text(), self.emailEdit.text()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/ConfigurationPage/MercurialUserDataDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,101 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MercurialUserDataDialog</class> + <widget class="QDialog" name="MercurialUserDataDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>106</height> + </rect> + </property> + <property name="windowTitle"> + <string>Mercurial User Data</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>&Username:</string> + </property> + <property name="buddy"> + <cstring>usernameEdit</cstring> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="usernameEdit"> + <property name="toolTip"> + <string>Enter the name of the user (first name and last name)</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>&Email:</string> + </property> + <property name="buddy"> + <cstring>emailEdit</cstring> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="emailEdit"> + <property name="toolTip"> + <string>Enter the email address</string> + </property> + </widget> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>MercurialUserDataDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>MercurialUserDataDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgArchiveDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to enter the archive data. +""" + +from __future__ import unicode_literals # __IGNORE_WARNING__ + +from PyQt4.QtCore import pyqtSlot, QFileInfo +from PyQt4.QtGui import QDialog, QDialogButtonBox + +from E5Gui.E5Completers import E5FileCompleter, E5DirCompleter +from E5Gui import E5FileDialog + +from .Ui_HgArchiveDialog import Ui_HgArchiveDialog + +import Utilities + + +class HgArchiveDialog(QDialog, Ui_HgArchiveDialog): + """ + Class implementing a dialog to enter the archive data. + """ + def __init__(self, vcs, parent=None): + """ + Constructor + + @param vcs reference to the Mercurial object (Hg) + @param parent reference to the parent widget (QWidget) + """ + super(HgArchiveDialog, self).__init__(parent) + self.setupUi(self) + + self.__archiveFileCompleter = E5FileCompleter() + self.__archiveDirCompleter = E5DirCompleter() + self.__activeCompleter = self.__archiveFileCompleter + self.archiveEdit.setCompleter(self.__activeCompleter) + self.__activeCompleter.model().setNameFilters([]) + + self.typeComboBox.addItem(self.trUtf8("Detect Automatically"), "") + self.typeComboBox.addItem(self.trUtf8("Directory of Files"), "files") + self.typeComboBox.addItem(self.trUtf8("Uncompressed TAR-Archive"), "tar") + self.typeComboBox.addItem(self.trUtf8("Bzip2 compressed TAR-Archive"), "tbz2") + self.typeComboBox.addItem(self.trUtf8("Gzip compressed TAR-Archive"), "tgz") + self.typeComboBox.addItem(self.trUtf8("Uncompressed ZIP-Archive"), "uzip") + self.typeComboBox.addItem(self.trUtf8("Compressed ZIP-Archive"), "zip") + + self.__unixFileFilters = [ + self.trUtf8("Bzip2 compressed TAR-Archive (*.tar.bz2)"), + self.trUtf8("Gzip compressed TAR-Archive (*.tar.gz)"), + self.trUtf8("Uncompressed TAR-Archive (*.tar)"), + ] + self.__windowsFileFilters = [ + self.trUtf8("Compressed ZIP-Archive (*.zip)"), + self.trUtf8("Uncompressed ZIP-Archive (*.uzip)") + ] + if Utilities.isWindowsPlatform(): + self.__fileFilters = ";;".join( + self.__windowsFileFilters + self.__unixFileFilters) + else: + self.__fileFilters = ";;".join( + self.__unixFileFilters + self.__windowsFileFilters) + self.__fileFilters += ";;" + self.trUtf8("All Files (*)") + + self.__typeFilters = { + "tar": ["*.tar"], + "tbz2": ["*.tar.bz2", "*.tbz2"], + "tgz": ["*.tar.gz", "*.tgz"], + "uzip": ["*.uzip", "*.zip"], + "zip": ["*.zip"], + } + + self.subReposCheckBox.setEnabled(vcs.hasSubrepositories()) + + self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(False) + + self.__projectPath = \ + vcs.getPlugin().getProjectHelper().getProject().getProjectPath() + + @pyqtSlot(str) + def on_archiveEdit_textChanged(self, archive): + """ + Private slot to handle changes of the archive name. + """ + self.buttonBox.button(QDialogButtonBox.Ok).setEnabled(archive != "") + + @pyqtSlot() + def on_archiveButton_clicked(self): + """ + Private slot to select the archive name via a file selection dialog. + """ + type_ = self.typeComboBox.itemData(self.typeComboBox.currentIndex()) + + archive = Utilities.fromNativeSeparators(self.archiveEdit.text()) + if not archive: + archive = self.__projectPath + + if type_ == "files": + archive = E5FileDialog.getExistingDirectory( + self, + self.trUtf8("Select Archive Directory"), + archive, + E5FileDialog.Options(E5FileDialog.ShowDirsOnly)) + else: + archive, selectedFilter = E5FileDialog.getSaveFileNameAndFilter( + self, + self.trUtf8("Select Archive File"), + archive, + self.__fileFilters, + None, + E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite)) + if archive: + ext = QFileInfo(archive).suffix() + if not ext: + ex = selectedFilter.split("(*")[1].split(")")[0] + if ex: + archive += ex + + if archive: + self.archiveEdit.setText(Utilities.toNativeSeparators(archive)) + + @pyqtSlot(int) + def on_typeComboBox_activated(self, index): + """ + Private slot to react on changes of the selected archive type. + + @param index index of the selected type (integer) + """ + type_ = self.typeComboBox.itemData(index) + if type_ == "files": + if self.__activeCompleter != self.__archiveDirCompleter: + self.__activeCompleter = self.__archiveDirCompleter + self.archiveEdit.setCompleter(self.__activeCompleter) + else: + if self.__activeCompleter != self.__archiveFileCompleter: + self.__activeCompleter = self.__archiveFileCompleter + self.archiveEdit.setCompleter(self.__activeCompleter) + if type_ in self.__typeFilters: + self.__activeCompleter.model().setNameFilters(self.__typeFilters[type_]) + else: + self.__activeCompleter.model().setNameFilters([]) + + def getData(self): + """ + Public method to retrieve the data. + + @return tuple giving the archive name (string), the archive type (string), + the directory prefix 8string) and a flag indicating to recurse into + subrepositories (boolean) + """ + return ( + self.archiveEdit.text(), + self.typeComboBox.itemData(self.typeComboBox.currentIndex()), + self.prefixEdit.text(), + self.subReposCheckBox.isChecked(), + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgArchiveDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,137 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>HgArchiveDialog</class> + <widget class="QDialog" name="HgArchiveDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>145</height> + </rect> + </property> + <property name="windowTitle"> + <string>Mercurial Archive</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Archive:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="archiveEdit"> + <property name="toolTip"> + <string>Enter the file name of the archive</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QPushButton" name="archiveButton"> + <property name="toolTip"> + <string>Press to select the archive file name via a file selection dialog</string> + </property> + <property name="text"> + <string>...</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Type:</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2"> + <widget class="QComboBox" name="typeComboBox"> + <property name="toolTip"> + <string>Select the archive type</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Prefix:</string> + </property> + </widget> + </item> + <item row="2" column="1" colspan="2"> + <widget class="QLineEdit" name="prefixEdit"> + <property name="toolTip"> + <string>Enter the directory prefix for the files in the archive</string> + </property> + </widget> + </item> + <item row="3" column="0" colspan="3"> + <widget class="QCheckBox" name="subReposCheckBox"> + <property name="toolTip"> + <string>Select to recurse into subrepositories</string> + </property> + <property name="text"> + <string>Include Subrepositories</string> + </property> + </widget> + </item> + <item row="4" column="0" colspan="3"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>archiveEdit</tabstop> + <tabstop>archiveButton</tabstop> + <tabstop>typeComboBox</tabstop> + <tabstop>prefixEdit</tabstop> + <tabstop>subReposCheckBox</tabstop> + <tabstop>buttonBox</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>HgArchiveDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>HgArchiveDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/Plugins/VcsPlugins/vcsMercurial/HgClient.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgClient.py Mon Aug 12 22:21:53 2013 +0200 @@ -15,10 +15,11 @@ import struct import io -from PyQt4.QtCore import QProcess, QProcessEnvironment, QObject, QByteArray, \ - QCoreApplication, QThread +from PyQt4.QtCore import QProcess, QObject, QByteArray, QCoreApplication, QThread from PyQt4.QtGui import QDialog +from .HgUtilities import prepareProcess + import Preferences @@ -78,11 +79,7 @@ # connect signals self.__server.finished.connect(self.__serverFinished) - # set the encoding for the server - if self.__encoding: - env = QProcessEnvironment.systemEnvironment() - env.insert("HGENCODING", self.__encoding) - self.__server.setProcessEnvironment(env) + prepareProcess(self.__server, self.__encoding) self.__server.start('hg', self.__serverArgs) serverStarted = self.__server.waitForStarted(5000)
--- a/Plugins/VcsPlugins/vcsMercurial/HgCommitDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgCommitDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -27,20 +27,25 @@ accepted = pyqtSignal() rejected = pyqtSignal() - def __init__(self, vcs, parent=None): + def __init__(self, vcs, mq, parent=None): """ Constructor @param vcs reference to the vcs object + @param mq flag indicating a queue commit (boolean) @param parent parent widget (QWidget) """ super(HgCommitDialog, self).__init__(parent, Qt.WindowFlags(Qt.Window)) self.setupUi(self) - if vcs.version < (2, 2): - self.amendCheckBox.setEnabled(False) - - self.subrepoCheckBox.setVisible(vcs.hasSubrepositories()) + if mq: + self.amendCheckBox.setVisible(False) + self.subrepoCheckBox.setVisible(False) + else: + if vcs.version < (2, 2): + self.amendCheckBox.setEnabled(False) + + self.subrepoCheckBox.setVisible(vcs.hasSubrepositories()) def showEvent(self, evt): """
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -47,13 +47,14 @@ MessageColumn = 6 TagsColumn = 7 - def __init__(self, vcs, mode="log", bundle=None, parent=None): + def __init__(self, vcs, mode="log", bundle=None, isFile=False, parent=None): """ Constructor @param vcs reference to the vcs object @param mode mode of the dialog (string; one of log, incoming, outgoing) @param bundle name of a bundle file (string) + @param isFile flag indicating log for a file is to be shown (boolean) @param parent parent widget (QWidget) """ super(HgLogBrowserDialog, self).__init__(parent) @@ -78,6 +79,8 @@ self.trUtf8("Press to refresh the list of changesets")) self.refreshButton.setEnabled(False) + self.sbsCheckBox.setEnabled(isFile) + self.vcs = vcs if mode in ("log", "incoming", "outgoing"): self.commandMode = mode @@ -959,12 +962,15 @@ @param rev1 first revision number (integer) @param rev2 second revision number (integer) """ - if self.diff is None: - from .HgDiffDialog import HgDiffDialog - self.diff = HgDiffDialog(self.vcs) - self.diff.show() - self.diff.raise_() - self.diff.start(self.filename, [rev1, rev2], self.bundle) + if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): + self.vcs.hgSbsDiff(self.filename, revisions=(str(rev1), str(rev2))) + else: + if self.diff is None: + from .HgDiffDialog import HgDiffDialog + self.diff = HgDiffDialog(self.vcs) + self.diff.show() + self.diff.raise_() + self.diff.start(self.filename, [rev1, rev2], self.bundle) def on_buttonBox_clicked(self, button): """
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgLogBrowserDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -246,8 +246,8 @@ </widget> </item> <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> <widget class="QPushButton" name="nextButton"> <property name="toolTip"> <string>Press to get the next bunch of log entries</string> @@ -257,7 +257,7 @@ </property> </widget> </item> - <item> + <item row="0" column="1"> <widget class="QSpinBox" name="limitSpinBox"> <property name="toolTip"> <string>Enter the limit of entries to fetch</string> @@ -276,7 +276,7 @@ </property> </widget> </item> - <item> + <item row="0" column="2"> <widget class="QCheckBox" name="stopCheckBox"> <property name="toolTip"> <string>Select to stop listing log messages at a copy or move</string> @@ -286,7 +286,7 @@ </property> </widget> </item> - <item> + <item row="0" column="3" rowspan="2"> <widget class="Line" name="line"> <property name="frameShadow"> <enum>QFrame::Raised</enum> @@ -299,7 +299,7 @@ </property> </widget> </item> - <item> + <item row="0" column="4"> <widget class="QPushButton" name="diffP1Button"> <property name="toolTip"> <string>Press to generate a diff to the first parent revision</string> @@ -309,7 +309,7 @@ </property> </widget> </item> - <item> + <item row="0" column="5"> <widget class="QPushButton" name="diffP2Button"> <property name="toolTip"> <string>Press to generate a diff to the second parent revision</string> @@ -319,7 +319,7 @@ </property> </widget> </item> - <item> + <item row="0" column="6"> <widget class="QPushButton" name="diffRevisionsButton"> <property name="toolTip"> <string>Press to compare two revisions</string> @@ -329,7 +329,7 @@ </property> </widget> </item> - <item> + <item row="0" column="7" rowspan="2"> <widget class="Line" name="phaseLine"> <property name="frameShadow"> <enum>QFrame::Raised</enum> @@ -342,7 +342,7 @@ </property> </widget> </item> - <item> + <item row="0" column="8"> <widget class="QPushButton" name="graftButton"> <property name="toolTip"> <string>Press to copy the selected changesets to the current branch</string> @@ -352,7 +352,7 @@ </property> </widget> </item> - <item> + <item row="0" column="9"> <widget class="QPushButton" name="phaseButton"> <property name="toolTip"> <string>Change the phase of the selected revisions</string> @@ -366,7 +366,7 @@ </property> </widget> </item> - <item> + <item row="0" column="10"> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -379,6 +379,16 @@ </property> </spacer> </item> + <item row="1" column="4" colspan="3"> + <widget class="QCheckBox" name="sbsCheckBox"> + <property name="toolTip"> + <string>Select to show differences side-by-side</string> + </property> + <property name="text"> + <string>Show differences side-by-side</string> + </property> + </widget> + </item> </layout> </item> <item> @@ -501,13 +511,14 @@ <tabstop>diffP1Button</tabstop> <tabstop>diffP2Button</tabstop> <tabstop>diffRevisionsButton</tabstop> + <tabstop>sbsCheckBox</tabstop> <tabstop>graftButton</tabstop> <tabstop>phaseButton</tabstop> <tabstop>errors</tabstop> <tabstop>input</tabstop> <tabstop>passwordCheckBox</tabstop> + <tabstop>sendButton</tabstop> <tabstop>buttonBox</tabstop> - <tabstop>sendButton</tabstop> </tabstops> <resources/> <connections/>
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgLogDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -35,13 +35,14 @@ The dialog is nonmodal. Clicking a link in the upper text pane shows a diff of the revisions. """ - def __init__(self, vcs, mode="log", bundle=None, parent=None): + def __init__(self, vcs, mode="log", bundle=None, isFile=False, parent=None): """ Constructor @param vcs reference to the vcs object @param mode mode of the dialog (string; one of log, incoming, outgoing) @param bundle name of a bundle file (string) + @param isFile flag indicating log for a file is to be shown (boolean) @param parent parent widget (QWidget) """ super(HgLogDialog, self).__init__(parent) @@ -78,6 +79,8 @@ self.initialText = [] self.diff = None + + self.sbsCheckBox.setEnabled(isFile) def closeEvent(self, e): """ @@ -449,11 +452,14 @@ return self.contents.scrollToAnchor(ver) - if self.diff is None: - from .HgDiffDialog import HgDiffDialog - self.diff = HgDiffDialog(self.vcs) - self.diff.show() - self.diff.start(filename, [v1, v2], self.bundle) + if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): + self.vcs.hgSbsDiff(filename, revisions=(v1, v2)) + else: + if self.diff is None: + from .HgDiffDialog import HgDiffDialog + self.diff = HgDiffDialog(self.vcs) + self.diff.show() + self.diff.start(filename, [v1, v2], self.bundle) def on_passwordCheckBox_toggled(self, isOn): """
--- a/Plugins/VcsPlugins/vcsMercurial/HgLogDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgLogDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -13,7 +13,7 @@ <property name="windowTitle"> <string>Mercurial Log</string> </property> - <layout class="QVBoxLayout"> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="contentsGroup"> <property name="sizePolicy"> @@ -40,6 +40,16 @@ </widget> </item> <item> + <widget class="QCheckBox" name="sbsCheckBox"> + <property name="toolTip"> + <string>Select to show differences side-by-side</string> + </property> + <property name="text"> + <string>Show differences side-by-side</string> + </property> + </widget> + </item> + <item> <widget class="QGroupBox" name="errorGroup"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> @@ -139,6 +149,7 @@ </widget> <tabstops> <tabstop>contents</tabstop> + <tabstop>sbsCheckBox</tabstop> <tabstop>errors</tabstop> <tabstop>input</tabstop> <tabstop>passwordCheckBox</tabstop>
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -31,11 +31,12 @@ """ Class implementing a dialog to show the output of the hg status command process. """ - def __init__(self, vcs, parent=None): + def __init__(self, vcs, mq=False, parent=None): """ Constructor @param vcs reference to the vcs object + @param mq flag indicating to show a queue repo status (boolean) @param parent parent widget (QWidget) """ super(HgStatusDialog, self).__init__(parent) @@ -58,37 +59,50 @@ self.vcs = vcs self.vcs.committed.connect(self.__committed) self.__hgClient = self.vcs.getClient() + self.__mq = mq self.statusList.headerItem().setText(self.__lastColumn, "") self.statusList.header().setSortIndicator(self.__pathColumn, Qt.AscendingOrder) + if mq: + self.buttonsLine.setVisible(False) + self.addButton.setVisible(False) + self.diffButton.setVisible(False) + self.sbsDiffButton.setVisible(False) + self.revertButton.setVisible(False) + self.forgetButton.setVisible(False) + self.restoreButton.setVisible(False) + self.menuactions = [] self.menu = QMenu() - self.menuactions.append(self.menu.addAction( - self.trUtf8("Commit changes to repository..."), self.__commit)) - self.menuactions.append(self.menu.addAction( - self.trUtf8("Select all for commit"), self.__commitSelectAll)) - self.menuactions.append(self.menu.addAction( - self.trUtf8("Deselect all from commit"), self.__commitDeselectAll)) - self.menu.addSeparator() - self.menuactions.append(self.menu.addAction( - self.trUtf8("Add to repository"), self.__add)) - self.menuactions.append(self.menu.addAction( - self.trUtf8("Show differences"), self.__diff)) - self.menuactions.append(self.menu.addAction( - self.trUtf8("Remove from repository"), self.__forget)) - self.menuactions.append(self.menu.addAction( - self.trUtf8("Revert changes"), self.__revert)) - self.menuactions.append(self.menu.addAction( - self.trUtf8("Restore missing"), self.__restoreMissing)) - self.menu.addSeparator() - self.menuactions.append(self.menu.addAction(self.trUtf8("Adjust column sizes"), - self.__resizeColumns)) - for act in self.menuactions: - act.setEnabled(False) - - self.statusList.setContextMenuPolicy(Qt.CustomContextMenu) - self.statusList.customContextMenuRequested.connect(self.__showContextMenu) + if not mq: + self.menuactions.append(self.menu.addAction( + self.trUtf8("Commit changes to repository..."), self.__commit)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Select all for commit"), self.__commitSelectAll)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Deselect all from commit"), self.__commitDeselectAll)) + self.menu.addSeparator() + self.menuactions.append(self.menu.addAction( + self.trUtf8("Add to repository"), self.__add)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Show differences"), self.__diff)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Show differences side-by-side"), self.__sbsDiff)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Remove from repository"), self.__forget)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Revert changes"), self.__revert)) + self.menuactions.append(self.menu.addAction( + self.trUtf8("Restore missing"), self.__restoreMissing)) + self.menu.addSeparator() + self.menuactions.append(self.menu.addAction( + self.trUtf8("Adjust column sizes"), self.__resizeColumns)) + for act in self.menuactions: + act.setEnabled(False) + + self.statusList.setContextMenuPolicy(Qt.CustomContextMenu) + self.statusList.customContextMenuRequested.connect(self.__showContextMenu) self.modifiedIndicators = [ self.trUtf8('added'), @@ -189,6 +203,7 @@ self.addButton.setEnabled(False) self.commitButton.setEnabled(False) self.diffButton.setEnabled(False) + self.sbsDiffButton.setEnabled(False) self.revertButton.setEnabled(False) self.forgetButton.setEnabled(False) self.restoreButton.setEnabled(False) @@ -196,22 +211,32 @@ self.statusFilterCombo.clear() self.__statusFilters = [] - self.setWindowTitle(self.trUtf8('Mercurial Status')) + if self.__mq: + self.setWindowTitle(self.trUtf8("Mercurial Queue Repository Status")) + else: + self.setWindowTitle(self.trUtf8('Mercurial Status')) args = [] args.append('status') self.vcs.addArguments(args, self.vcs.options['global']) - self.vcs.addArguments(args, self.vcs.options['status']) - - if self.vcs.hasSubrepositories(): - args.append("--subrepos") - - if isinstance(fn, list): - self.dname, fnames = self.vcs.splitPathList(fn) - self.vcs.addArguments(args, fn) + if self.__mq: + args.append('--mq') + if isinstance(fn, list): + self.dname, fnames = self.vcs.splitPathList(fn) + else: + self.dname, fname = self.vcs.splitPath(fn) else: - self.dname, fname = self.vcs.splitPath(fn) - args.append(fn) + self.vcs.addArguments(args, self.vcs.options['status']) + + if self.vcs.hasSubrepositories(): + args.append("--subrepos") + + if isinstance(fn, list): + self.dname, fnames = self.vcs.splitPathList(fn) + self.vcs.addArguments(args, fn) + else: + self.dname, fname = self.vcs.splitPath(fn) + args.append(fn) # find the root of the repo repodir = self.dname @@ -444,6 +469,7 @@ self.addButton.setEnabled(unversioned) self.diffButton.setEnabled(modified) + self.sbsDiffButton.setEnabled(modified == 1) self.revertButton.setEnabled(modified) self.forgetButton.setEnabled(missing) self.restoreButton.setEnabled(missing) @@ -511,6 +537,13 @@ self.__diff() @pyqtSlot() + def on_sbsDiffButton_clicked(self): + """ + Private slot to handle the press of the Side-by-Side Diff button. + """ + self.__sbsDiff() + + @pyqtSlot() def on_revertButton_clicked(self): """ Private slot to handle the press of the Revert button. @@ -547,20 +580,23 @@ """ Private slot to handle the Commit context menu entry. """ - names = [os.path.join(self.dname, itm.text(self.__pathColumn)) \ - for itm in self.__getCommitableItems()] - if not names: - E5MessageBox.information(self, - self.trUtf8("Commit"), - self.trUtf8("""There are no entries selected to be""" - """ committed.""")) - return - - if Preferences.getVCS("AutoSaveFiles"): - vm = e5App().getObject("ViewManager") - for name in names: - vm.saveEditor(name) - self.vcs.vcsCommit(names, '') + if self.__mq: + self.vcs.vcsCommit(self.dname, "", mq=True) + else: + names = [os.path.join(self.dname, itm.text(self.__pathColumn)) \ + for itm in self.__getCommitableItems()] + if not names: + E5MessageBox.information(self, + self.trUtf8("Commit"), + self.trUtf8("""There are no entries selected to be""" + """ committed.""")) + return + + if Preferences.getVCS("AutoSaveFiles"): + vm = e5App().getObject("ViewManager") + for name in names: + vm.saveEditor(name) + self.vcs.vcsCommit(names, '') def __committed(self): """ @@ -677,7 +713,28 @@ self.diff = HgDiffDialog(self.vcs) self.diff.show() self.diff.start(names) + + def __sbsDiff(self): + """ + Private slot to handle the Diff context menu entry. + """ + names = [os.path.join(self.dname, itm.text(self.__pathColumn)) + for itm in self.__getModifiedItems()] + if not names: + E5MessageBox.information(self, + self.trUtf8("Side-by-Side Diff"), + self.trUtf8("""There are no uncommitted changes""" + """ available/selected.""")) + return + elif len(names) > 1: + E5MessageBox.information(self, + self.trUtf8("Side-by-Side Diff"), + self.trUtf8("""Only one file with uncommitted changes""" + """ must be selected.""")) + return + self.vcs.hgSbsDiff(names[0]) + def __getCommitableItems(self): """ Private method to retrieve all entries the user wants to commit.
--- a/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgStatusDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -105,7 +105,7 @@ </widget> </item> <item> - <widget class="Line" name="line"> + <widget class="Line" name="buttonsLine"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> @@ -132,6 +132,16 @@ </widget> </item> <item> + <widget class="QPushButton" name="sbsDiffButton"> + <property name="toolTip"> + <string>Show differences of the selected entry to the repository in a side-by-side manner</string> + </property> + <property name="text"> + <string>Side-b&y-Side Diff</string> + </property> + </widget> + </item> + <item> <widget class="QPushButton" name="revertButton"> <property name="toolTip"> <string>Revert the selected entries to the last revision in the repository</string> @@ -279,6 +289,7 @@ <tabstop>commitButton</tabstop> <tabstop>addButton</tabstop> <tabstop>diffButton</tabstop> + <tabstop>sbsDiffButton</tabstop> <tabstop>revertButton</tabstop> <tabstop>forgetButton</tabstop> <tabstop>restoreButton</tabstop>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgSummaryDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,446 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2013 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to show some summary information of the working +directory state. +""" + +from __future__ import unicode_literals # __IGNORE_WARNING__ +try: + str = unicode +except (NameError): + pass + +import os + +from PyQt4.QtCore import pyqtSlot, QProcess, QTimer +from PyQt4.QtGui import QDialog, QDialogButtonBox + +from E5Gui import E5MessageBox + +from .HgUtilities import prepareProcess + +from .Ui_HgSummaryDialog import Ui_HgSummaryDialog + +import Preferences + + +class HgSummaryDialog(QDialog, Ui_HgSummaryDialog): + """ + Class implementing a dialog to show some summary information of the working + directory state. + """ + def __init__(self, vcs, parent=None): + """ + Constructor + + @param vcs reference to the vcs object + @param parent parent widget (QWidget) + """ + super(HgSummaryDialog, self).__init__(parent) + self.setupUi(self) + + self.refreshButton = \ + self.buttonBox.addButton(self.trUtf8("Refresh"), QDialogButtonBox.ActionRole) + self.refreshButton.setToolTip(self.trUtf8("Press to refresh the summary display")) + self.refreshButton.setEnabled(False) + + self.process = None + self.vcs = vcs + self.vcs.committed.connect(self.__committed) + + def closeEvent(self, e): + """ + Private slot implementing a close event handler. + + @param e close event (QCloseEvent) + """ + if self.process is not None and \ + self.process.state() != QProcess.NotRunning: + self.process.terminate() + QTimer.singleShot(2000, self.process.kill) + self.process.waitForFinished(3000) + + e.accept() + + def start(self, path, mq=False): + """ + Public slot to start the hg summary command. + + @param path path name of the working directory (string) + @param mq flag indicating to show the queue status as well (boolean) + """ + self.errorGroup.hide() + self.__path = path + self.__mq = mq + + args = [] + args.append('summary') + self.vcs.addArguments(args, self.vcs.options['global']) + args.append("--remote") + if self.__mq: + args.append("--mq") + + # find the root of the repo + repodir = self.__path + while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return + + if self.process: + self.process.kill() + else: + self.process = QProcess() + prepareProcess(self.process, Preferences.getSystem("IOEncoding"), "C") + self.process.finished.connect(self.__procFinished) + self.process.readyReadStandardOutput.connect(self.__readStdout) + self.process.readyReadStandardError.connect(self.__readStderr) + + self.process.setWorkingDirectory(repodir) + + self.__buffer = [] + + self.process.start('hg', args) + procStarted = self.process.waitForStarted(5000) + if not procStarted: + E5MessageBox.critical(self, + self.trUtf8('Process Generation Error'), + self.trUtf8( + 'The process {0} could not be started. ' + 'Ensure, that it is in the search path.' + ).format('hg')) + + def __finish(self): + """ + Private slot called when the process finished or the user pressed the button. + """ + if self.process is not None and \ + self.process.state() != QProcess.NotRunning: + self.process.terminate() + QTimer.singleShot(2000, self.process.kill) + self.process.waitForFinished(3000) + + self.refreshButton.setEnabled(True) + self.process = None + + def on_buttonBox_clicked(self, button): + """ + Private slot called by a button of the button box clicked. + + @param button button that was clicked (QAbstractButton) + """ + if button == self.buttonBox.button(QDialogButtonBox.Close): + self.close() + elif button == self.refreshButton: + self.on_refreshButton_clicked() + + def __procFinished(self, exitCode, exitStatus): + """ + Private slot connected to the finished signal. + + @param exitCode exit code of the process (integer) + @param exitStatus exit status of the process (QProcess.ExitStatus) + """ + self.__processOutput(self.__buffer) + self.__finish() + + def __readStdout(self): + """ + Private slot to handle the readyReadStandardOutput signal. + + It reads the output of the process, formats it and inserts it into + the contents pane. + """ + if self.process is not None: + self.process.setReadChannel(QProcess.StandardOutput) + + while self.process.canReadLine(): + line = str(self.process.readLine(), + Preferences.getSystem("IOEncoding"), + 'replace') + self.__buffer.append(line) + + def __readStderr(self): + """ + Private slot to handle the readyReadStandardError signal. + + It reads the error output of the process and inserts it into the + error pane. + """ + if self.process is not None: + s = str(self.process.readAllStandardError(), + Preferences.getSystem("IOEncoding"), + 'replace') + self.__showError(s) + + def __showError(self, out): + """ + Private slot to show some error. + + @param out error to be shown (string) + """ + self.errorGroup.show() + self.errors.insertPlainText(out) + self.errors.ensureCursorVisible() + + @pyqtSlot() + def on_refreshButton_clicked(self): + """ + Private slot to refresh the status display. + """ + self.refreshButton.setEnabled(False) + self.summary.clear() + + self.start(self.__path, mq=self.__mq) + + def __committed(self): + """ + Private slot called after the commit has finished. + """ + if self.isVisible(): + self.on_refreshButton_clicked() + + def __processOutput(self, output): + """ + Private method to process the output into nice readable text. + + @param output output from the summary command (string) + """ + infoDict = {} + + # step 1: parse the output + while output: + line = output.pop(0) + name, value = line.split(": ", 1) + value = value.strip() + + if name == "parent": + if " " in value: + parent, tags = value.split(" ", 1) + else: + parent = value + tags = "" + rev, node = parent.split(":") + + remarks = [] + if tags: + if " (empty repository)" in tags: + remarks.append("@EMPTY@") + tags = tags.replace(" (empty repository)", "") + if " (no revision checked out)" in tags: + remarks.append("@NO_REVISION@") + tags = tags.replace(" (no revision checked out)", "") + else: + tags = None + + value = infoDict.get(name, []) + + if rev == "-1": + value.append((int(rev), node, tags, None, remarks)) + else: + message = output.pop(0).strip() + value.append((int(rev), node, tags, message, remarks)) + elif name == "branch": + pass + elif name == "bookmarks": + pass + elif name == "commit": + stateDict = {} + if "(" in value: + if value.startswith("("): + states = "" + remark = value[1:-1] + else: + states, remark = value.rsplit(" (", 1) + remark = remark[:-1] + else: + states = value + remark = "" + states = states.split(", ") + for state in states: + if state: + count, category = state.split(" ") + stateDict[category] = count + value = (stateDict, remark) + elif name == "update": + if value.endswith("(current)"): + value = ("@CURRENT@", 0, 0) + elif value.endswith("(update)"): + value = ("@UPDATE@", value.split(" ", 1)[0], 0) + elif value.endswith("(merge)"): + parts = value.split(", ") + value = ("@MERGE@", parts[0].split(" ", 1)[0], + parts[1].split(" ", 1)[0]) + else: + value = ("@UNKNOWN@", 0, 0) + elif name == "remote": + if value == "(synced)": + value = (0, 0, 0, 0) + else: + inc = incb = outg = outgb = 0 + for val in value.split(", "): + count, category = val.split(" ", 1) + if category == "outgoing": + outg = int(count) + elif category.endswith("incoming"): + inc = int(count) + elif category == "incoming bookmarks": + incb = int(count) + elif category == "outgoing bookmarks": + outgb = int(count) + value = (inc, outg, incb, outgb) + elif name == "mq": + if value == "(empty queue)": + value = (0, 0) + else: + applied = unapplied = 0 + for val in value.split(", "): + count, category = val.split(" ", 1) + if category == "applied": + applied = int(count) + elif category == "unapplied": + unapplied = int(count) + value = (applied, unapplied) + else: + # ignore unknown entries + continue + + infoDict[name] = value + + # step 2: build the output + if infoDict: + info = ["<table>"] + pindex = 0 + for rev, node, tags, message, remarks in infoDict["parent"]: + pindex += 1 + changeset = "{0}:{1}".format(rev, node) + if len(infoDict["parent"]) > 1: + info.append( + self.trUtf8("<tr><td><b>Parent #{0}</b></td><td>{1}</td></tr>") + .format(pindex, changeset)) + else: + info.append( + self.trUtf8("<tr><td><b>Parent</b></td><td>{0}</td></tr>") + .format(changeset)) + if tags: + info.append(self.trUtf8("<tr><td><b>Tags</b></td><td>{0}</td></tr>") + .format('<br/>'.join(tags.split()))) + if message: + info.append( + self.trUtf8("<tr><td><b>Commit Message</b></td><td>{0}</td></tr>") + .format(message)) + if remarks: + rem = [] + if "@EMPTY@" in remarks: + rem.append(self.trUtf8("empty repository")) + if "@NO_REVISION@" in remarks: + rem.append(self.trUtf8("no revision checked out")) + info.append( + self.trUtf8("<tr><td><b>Remarks</b></td><td>{0}</td></tr>") + .format(", ".join(rem))) + if "branch" in infoDict: + info.append(self.trUtf8("<tr><td><b>Branch</b></td><td>{0}</td></tr>") + .format(infoDict["branch"])) + if "bookmarks" in infoDict: + bookmarks = infoDict["bookmarks"].split() + for i in range(len(bookmarks)): + if bookmarks[i].startswith("*"): + bookmarks[i] = "<b>{0}</b>".format(bookmarks[i]) + info.append(self.trUtf8("<tr><td><b>Bookmarks</b></td><td>{0}</td></tr>") + .format('<br/>'.join(bookmarks))) + if "commit" in infoDict: + cinfo = [] + for category, count in infoDict["commit"][0].items(): + if category == "modified": + cinfo.append(self.trUtf8("{0} modified").format(count)) + elif category == "added": + cinfo.append(self.trUtf8("{0} added").format(count)) + elif category == "removed": + cinfo.append(self.trUtf8("{0} removed").format(count)) + elif category == "renamed": + cinfo.append(self.trUtf8("{0} renamed").format(count)) + elif category == "copied": + cinfo.append(self.trUtf8("{0} copied").format(count)) + elif category == "deleted": + cinfo.append(self.trUtf8("{0} deleted").format(count)) + elif category == "unknown": + cinfo.append(self.trUtf8("{0} unknown").format(count)) + elif category == "ignored": + cinfo.append(self.trUtf8("{0} ignored").format(count)) + elif category == "unresolved": + cinfo.append(self.trUtf8("{0} unresolved").format(count)) + elif category == "subrepos": + cinfo.append(self.trUtf8("{0} subrepos").format(count)) + remark = infoDict["commit"][1] + if remark == "merge": + cinfo.append(self.trUtf8("Merge needed")) + elif remark == "new branch": + cinfo.append(self.trUtf8("New Branch")) + elif remark == "head closed": + cinfo.append(self.trUtf8("Head is closed")) + elif remark == "clean": + cinfo.append(self.trUtf8("No commit required")) + elif remark == "new branch head": + cinfo.append(self.trUtf8("New Branch Head")) + info.append( + self.trUtf8("<tr><td><b>Commit Status</b></td><td>{0}</td></tr>") + .format("<br/>".join(cinfo))) + if "update" in infoDict: + if infoDict["update"][0] == "@CURRENT@": + uinfo = self.trUtf8("current") + elif infoDict["update"][0] == "@UPDATE@": + uinfo = self.trUtf8("%n new changeset(s)<br/>Update required", "", + infoDict["update"][1]) + elif infoDict["update"][0] == "@MERGE@": + uinfo1 = self.trUtf8("%n new changeset(s)", "", infoDict["update"][1]) + uinfo2 = self.trUtf8("%n branch head(s)", "", infoDict["update"][2]) + uinfo = self.trUtf8("{0}<br/>{1}<br/>Merge required", + "0 is changesets, 1 is branch heads")\ + .format(uinfo1, uinfo2) + else: + uinfo = self.trUtf8("unknown status") + info.append( + self.trUtf8("<tr><td><b>Update Status</b></td><td>{0}</td></tr>") + .format(uinfo)) + if "remote" in infoDict: + if infoDict["remote"] == (0, 0, 0, 0): + rinfo = self.trUtf8("synched") + else: + l = [] + if infoDict["remote"][0]: + l.append(self.trUtf8("1 or more incoming")) + if infoDict["remote"][1]: + l.append(self.trUtf8("{0} outgoing")\ + .format(infoDict["remote"][1])) + if infoDict["remote"][2]: + l.append(self.trUtf8("%n incoming bookmark(s)", "", + infoDict["remote"][2])) + if infoDict["remote"][3]: + l.append(self.trUtf8("%n outgoing bookmark(s)", "", + infoDict["remote"][3])) + rinfo = "<br/>".join(l) + info.append( + self.trUtf8("<tr><td><b>Remote Status</b></td><td>{0}</td></tr>") + .format(rinfo)) + if "mq" in infoDict: + if infoDict["mq"] == (0, 0): + qinfo = self.trUtf8("empty queue") + else: + l = [] + if infoDict["mq"][0]: + l.append(self.trUtf8("{0} applied").format(infoDict["mq"][0])) + if infoDict["mq"][1]: + l.append(self.trUtf8("{0} unapplied").format(infoDict["mq"][1])) + qinfo = "<br/>".join(l) + info.append( + self.trUtf8("<tr><td><b>Queues Status</b></td><td>{0}</td></tr>") + .format(qinfo)) + info.append("</table>") + else: + info = [self.trUtf8("<p>No status information available.</p>")] + + self.summary.insertHtml("\n".join(info))
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugins/VcsPlugins/vcsMercurial/HgSummaryDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -0,0 +1,116 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>HgSummaryDialog</class> + <widget class="QDialog" name="HgSummaryDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>500</height> + </rect> + </property> + <property name="windowTitle"> + <string>Summary Information</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTextEdit" name="summary"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>2</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QGroupBox" name="errorGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>1</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Errors</string> + </property> + <layout class="QVBoxLayout"> + <item> + <widget class="QTextEdit" name="errors"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + <property name="acceptRichText"> + <bool>false</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>summary</tabstop> + <tabstop>errors</tabstop> + <tabstop>buttonBox</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>HgSummaryDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>HgSummaryDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/Plugins/VcsPlugins/vcsMercurial/HgUtilities.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/HgUtilities.py Mon Aug 12 22:21:53 2013 +0200 @@ -11,6 +11,8 @@ import os +from PyQt4.QtCore import QProcessEnvironment + import Utilities @@ -26,3 +28,25 @@ else: homedir = Utilities.getHomeDir() return os.path.join(homedir, ".hgrc") + + +def prepareProcess(proc, encoding="", language=""): + """ + Public method to prepare the given process. + + @param proc reference to the proces to be prepared (QProcess) + @param encoding encoding to be used by the process (string) + @param language language to be set (string) + """ + env = QProcessEnvironment.systemEnvironment() + env.insert("HGPLAIN", '1') + + # set the encoding for the process + if encoding: + env.insert("HGENCODING", encoding) + + # set the language for the process + if language: + env.insert("LANGUAGE", language) + + proc.setProcessEnvironment(env)
--- a/Plugins/VcsPlugins/vcsMercurial/ProjectBrowserHelper.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/ProjectBrowserHelper.py Mon Aug 12 22:21:53 2013 +0200 @@ -231,10 +231,17 @@ act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference'), self._VCSDiff) self.vcsMenuActions.append(act) + act = menu.addAction(UI.PixmapCache.getIcon("vcsSbsDiff.png"), + self.trUtf8('Show difference side-by-side'), self.__HgSbsDiff) + self.vcsMenuActions.append(act) act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference (extended)'), self.__HgExtendedDiff) self.vcsMenuActions.append(act) + act = menu.addAction(UI.PixmapCache.getIcon("vcsSbsDiff.png"), + self.trUtf8('Show difference side-by-side (extended)'), + self.__HgSbsExtendedDiff) + self.vcsMenuActions.append(act) self.annotateAct = menu.addAction(self.trUtf8('Show annotated file'), self.__HgAnnotate) self.vcsMenuActions.append(self.annotateAct) @@ -569,6 +576,24 @@ names.append(itm.dirName()) self.vcs.hgExtendedDiff(names) + def __HgSbsDiff(self): + """ + Private slot called by the context menu to show the difference of a file to + the repository side-by-side. + """ + itm = self.browser.currentItem() + fn = itm.fileName() + self.vcs.hgSbsDiff(fn) + + def __HgSbsExtendedDiff(self): + """ + Private slot called by the context menu to show the difference of a file to + the repository side-by-side allowing the selection of revisions to compare. + """ + itm = self.browser.currentItem() + fn = itm.fileName() + self.vcs.hgSbsDiff(fn, extended=True) + def __HgAnnotate(self): """ Private slot called by the context menu to show the annotations of a file. @@ -584,9 +609,11 @@ itm = self.browser.currentItem() try: fn = itm.fileName() + isFile = True except AttributeError: fn = itm.dirName() - self.vcs.hgLogBrowser(fn) + isFile = False + self.vcs.hgLogBrowser(fn, isFile=isFile) def __HgResolve(self): """
--- a/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/ProjectHelper.py Mon Aug 12 22:21:53 2013 +0200 @@ -217,7 +217,7 @@ self.vcsExportAct = E5Action(self.trUtf8('Export from repository'), UI.PixmapCache.getIcon("vcsExport.png"), self.trUtf8('&Export from repository...'), - 0, 0, self, 'subversion_export') + 0, 0, self, 'mercurial_export_repo') self.vcsExportAct.setStatusTip(self.trUtf8( 'Export a project from the repository' )) @@ -288,7 +288,7 @@ self.vcsStatusAct = E5Action(self.trUtf8('Show status'), UI.PixmapCache.getIcon("vcsStatus.png"), - self.trUtf8('Show &status'), + self.trUtf8('Show &status...'), 0, 0, self, 'mercurial_status') self.vcsStatusAct.setStatusTip(self.trUtf8( 'Show the status of the local project' @@ -300,6 +300,22 @@ self.vcsStatusAct.triggered[()].connect(self._vcsStatus) self.actions.append(self.vcsStatusAct) + self.hgSummaryAct = E5Action( + self.trUtf8('Show Summary'), + UI.PixmapCache.getIcon("vcsSummary.png"), + self.trUtf8('Show summary...'), + 0, 0, self, 'mercurial_summary') + self.hgSummaryAct.setStatusTip(self.trUtf8( + 'Show summary information of the working directory status' + )) + self.hgSummaryAct.setWhatsThis(self.trUtf8( + """<b>Show summary</b>""" + """<p>This shows some summary information of the working""" + """ directory status.</p>""" + )) + self.hgSummaryAct.triggered[()].connect(self.__hgSummary) + self.actions.append(self.hgSummaryAct) + self.hgHeadsAct = E5Action(self.trUtf8('Show heads'), self.trUtf8('Show heads'), 0, 0, self, 'mercurial_heads') @@ -903,6 +919,20 @@ )) self.hgRemoveSubreposAct.triggered[()].connect(self.__hgRemoveSubrepositories) self.actions.append(self.hgRemoveSubreposAct) + + self.hgArchiveAct = E5Action(self.trUtf8('Create unversioned archive'), + UI.PixmapCache.getIcon("vcsExport.png"), + self.trUtf8('Create unversioned archive...'), + 0, 0, self, 'mercurial_archive') + self.hgArchiveAct.setStatusTip(self.trUtf8( + 'Create an unversioned archive from the repository' + )) + self.hgArchiveAct.setWhatsThis(self.trUtf8( + """<b>Create unversioned archive...</b>""" + """<p>This creates an unversioned archive from the repository.</p>""" + )) + self.hgArchiveAct.triggered[()].connect(self.__hgArchive) + self.actions.append(self.hgArchiveAct) def initMenu(self, menu): """ @@ -939,6 +969,8 @@ specialsMenu = QMenu(self.trUtf8("Specials"), menu) specialsMenu.setTearOffEnabled(True) + specialsMenu.addAction(self.hgArchiveAct) + specialsMenu.addSeparator() specialsMenu.addAction(self.hgPushForcedAct) specialsMenu.addSeparator() specialsMenu.addAction(self.hgServeAct) @@ -1033,6 +1065,7 @@ menu.addAction(self.hgLogBrowserAct) menu.addSeparator() menu.addAction(self.vcsStatusAct) + menu.addAction(self.hgSummaryAct) menu.addSeparator() menu.addAction(self.vcsDiffAct) menu.addAction(self.hgExtDiffAct) @@ -1411,3 +1444,15 @@ Private slot used to remove sub-repositories. """ self.vcs.hgRemoveSubrepositories() + + def __hgSummary(self): + """ + Private slot to show a working directory summary. + """ + self.vcs.hgSummary() + + def __hgArchive(self): + """ + Private slot to create an unversioned archive from the repository. + """ + self.vcs.hgArchive()
--- a/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/ProjectHelper.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/ProjectHelper.py Mon Aug 12 22:21:53 2013 +0200 @@ -33,6 +33,34 @@ """ Public method to generate the action objects. """ + self.hgQueueInitAct = E5Action(self.trUtf8('Init Queue Repository'), + self.trUtf8('Init Queue Repository'), + 0, 0, self, 'mercurial_queues_init') + self.hgQueueInitAct.setStatusTip(self.trUtf8( + 'Initialize a new versioned queue repository' + )) + self.hgQueueInitAct.setWhatsThis(self.trUtf8( + """<b>Init Queue Repository</b>""" + """<p>This initializes a new versioned queue repository inside the""" + """ current repository.</p>""" + )) + self.hgQueueInitAct.triggered[()].connect(self.__hgQueueInit) + self.actions.append(self.hgQueueInitAct) + + self.hgQueueCommitAct = E5Action( + self.trUtf8('Commit changes'), + self.trUtf8('Commit changes...'), + 0, 0, self, 'mercurial_queues_commit') + self.hgQueueCommitAct.setStatusTip(self.trUtf8( + 'Commit changes in the queue repository' + )) + self.hgQueueCommitAct.setWhatsThis(self.trUtf8( + """<b>Commit changes...</b>""" + """<p>This commits changes in the queue repository.</p>""" + )) + self.hgQueueCommitAct.triggered[()].connect(self.__hgQueueCommit) + self.actions.append(self.hgQueueCommitAct) + self.hgQueueNewAct = E5Action(self.trUtf8('New Patch'), self.trUtf8('New Patch...'), 0, 0, self, 'mercurial_queues_new') @@ -169,6 +197,19 @@ self.hgQueueFoldAct.triggered[()].connect(self.__hgQueueFoldUnappliedPatches) self.actions.append(self.hgQueueFoldAct) + self.hgQueueStatusAct = E5Action(self.trUtf8('Show Status'), + self.trUtf8('Show &Status...'), + 0, 0, self, 'mercurial_queues_status') + self.hgQueueStatusAct.setStatusTip(self.trUtf8( + 'Show the status of the queue repository' + )) + self.hgQueueStatusAct.setWhatsThis(self.trUtf8( + """<b>Show Status</b>""" + """<p>This shows the status of the queue repository.</p>""" + )) + self.hgQueueStatusAct.triggered[()].connect(self.__hgQueueStatus) + self.actions.append(self.hgQueueStatusAct) + self.__initPushPopActions() self.__initPushPopForceActions() self.__initGuardsActions() @@ -624,11 +665,16 @@ queuesMenu.addSeparator() queuesMenu.addAction(self.hgQueueListQueuesAct) + menu.addAction(self.hgQueueInitAct) + menu.addAction(self.hgQueueCommitAct) + menu.addSeparator() menu.addAction(self.hgQueueNewAct) menu.addAction(self.hgQueueRefreshAct) menu.addAction(self.hgQueueRefreshMessageAct) menu.addAction(self.hgQueueFinishAct) menu.addSeparator() + menu.addAction(self.hgQueueStatusAct) + menu.addSeparator() menu.addAction(self.hgQueueDiffAct) menu.addAction(self.hgQueueHeaderAct) menu.addSeparator() @@ -953,3 +999,23 @@ """ self.vcs.getExtensionObject("mq")\ .hgQueueListQueues(self.project.getProjectPath()) + + def __hgQueueInit(self): + """ + Private slot to initialize a new queue repository. + """ + self.vcs.getExtensionObject("mq")\ + .hgQueueInit(self.project.getProjectPath()) + + def __hgQueueCommit(self): + """ + Private slot to commit changes in the queue repository. + """ + self.vcs.vcsCommit(self.project.getProjectPath(), "", mq=True) + + def __hgQueueStatus(self): + """ + Private slot to show the status of the queue repository. + """ + self.vcs.getExtensionObject("mq")\ + .hgQueueStatus(self.project.getProjectPath())
--- a/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/queues.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/QueuesExtension/queues.py Mon Aug 12 22:21:53 2013 +0200 @@ -57,6 +57,7 @@ self.queuesListAllGuardsDialog = None self.queuesDefineGuardsDialog = None self.queuesListQueuesDialog = None + self.queueStatusDialog = None def shutdown(self): """ @@ -76,6 +77,8 @@ self.queuesDefineGuardsDialog.close() if self.queuesListQueuesDialog is not None: self.queuesListQueuesDialog.close() + if self.queueStatusDialog is not None: + self.queueStatusDialog.close() def __getPatchesList(self, repodir, listType, withSummary=False): """ @@ -898,3 +901,37 @@ self.trUtf8("Available Queues"), False, repodir, self.vcs) self.queuesListQueuesDialog.show() + + def hgQueueInit(self, name): + """ + Public method to initialize a new queue repository. + + @param name directory name (string) + """ + # find the root of the repo + repodir = self.vcs.splitPath(name)[0] + while not os.path.isdir(os.path.join(repodir, self.vcs.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return + + args = [] + args.append('init') + args.append('--mq') + args.append(repodir) + # init is not possible with the command server + dia = HgDialog(self.trUtf8('Initializing new queue repository'), self.vcs) + res = dia.startProcess(args) + if res: + dia.exec_() + + def hgQueueStatus(self, name): + """ + Public method used to view the status of a queue repository. + + @param name directory name (string) + """ + from ..HgStatusDialog import HgStatusDialog + self.queueStatusDialog = HgStatusDialog(self.vcs, mq=True) + self.queueStatusDialog.show() + self.queueStatusDialog.start(name)
--- a/Plugins/VcsPlugins/vcsMercurial/hg.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsMercurial/hg.py Mon Aug 12 22:21:53 2013 +0200 @@ -97,7 +97,9 @@ self.log = None self.logBrowser = None self.diff = None + self.sbsDiff = None self.status = None + self.summary = None self.tagbranchList = None self.annotate = None self.repoEditor = None @@ -161,8 +163,12 @@ self.logBrowser.close() if self.diff is not None: self.diff.close() + if self.sbsDiff is not None: + self.sbsDiff.close() if self.status is not None: self.status.close() + if self.summary is not None: + self.summary.close() if self.tagbranchList is not None: self.tagbranchList.close() if self.annotate is not None: @@ -368,7 +374,7 @@ os.remove(os.path.join(projectDir, '.hgignore')) return status - def vcsCommit(self, name, message, noDialog=False, closeBranch=False): + def vcsCommit(self, name, message, noDialog=False, closeBranch=False, mq=False): """ Public method used to make the change of a file/directory permanent in the Mercurial repository. @@ -377,14 +383,19 @@ @param message message for this operation (string) @param noDialog flag indicating quiet operations @keyparam closeBranch flag indicating a close branch commit (boolean) + @keyparam mq flag indicating a queue commit (boolean) """ msg = message + if mq: + # ensure dialog is shown for a queue commit + noDialog = False + if not noDialog and not msg: # call CommitDialog and get message from there if self.__commitDialog is None: from .HgCommitDialog import HgCommitDialog - self.__commitDialog = HgCommitDialog(self, self.__ui) + self.__commitDialog = HgCommitDialog(self, mq, self.__ui) self.__commitDialog.accepted.connect(self.__vcsCommit_Step2) self.__commitDialog.show() self.__commitDialog.raise_() @@ -394,6 +405,7 @@ self.__commitData["msg"] = msg self.__commitData["noDialog"] = noDialog self.__commitData["closeBranch"] = closeBranch + self.__commitData["mq"] = mq if noDialog: self.__vcsCommit_Step2() @@ -406,6 +418,7 @@ msg = self.__commitData["msg"] noDialog = self.__commitData["noDialog"] closeBranch = self.__commitData["closeBranch"] + mq = self.__commitData["mq"] if not noDialog: # check, if there are unsaved changes, that should be committed @@ -442,7 +455,6 @@ msg = self.__commitDialog.logMessage() amend = self.__commitDialog.amend() commitSubrepositories = self.__commitDialog.commitSubrepositories() -## self.__commitDialog.accepted.disconnect(self.__vcsCommit_Step2) self.__commitDialog.deleteLater() self.__commitDialog = None else: @@ -457,12 +469,15 @@ self.addArguments(args, self.options['global']) self.addArguments(args, self.options['commit']) args.append("-v") - if closeBranch: - args.append("--close-branch") - if amend: - args.append("--amend") - if commitSubrepositories: - args.append("--subrepos") + if mq: + args.append("--mq") + else: + if closeBranch: + args.append("--close-branch") + if amend: + args.append("--amend") + if commitSubrepositories: + args.append("--subrepos") if msg: args.append("--message") args.append(msg) @@ -753,6 +768,7 @@ @param name file/directory name to show the log of (string) """ dname, fname = self.splitPath(name) + isFile = os.path.isfile(name) # find the root of the repo repodir = dname @@ -778,7 +794,7 @@ if dlg.exec_() == QDialog.Accepted: revs, noEntries = dlg.getRevisions() from .HgLogDialog import HgLogDialog - self.log = HgLogDialog(self) + self.log = HgLogDialog(self, isFile=isFile) self.log.show() self.log.start(name, noEntries=noEntries, revisions=revs) @@ -825,6 +841,18 @@ self.status.show() self.status.start(name) + def hgSummary(self, mq=False): + """ + Public method used to show some summary information of the + working directory state. + + @param mq flag indicating to show the queue status as well (boolean) + """ + from .HgSummaryDialog import HgSummaryDialog + self.summary = HgSummaryDialog(self) + self.summary.show() + self.summary.start(self.__projectHelper.getProject().getProjectPath(), mq=mq) + def vcsTag(self, name): """ Public method used to set the tag in the Mercurial repository. @@ -1254,8 +1282,6 @@ @param ppath local path to get the repository infos (string) @return string with ready formated info for display (string) """ - info = [] - args = [] args.append('parents') args.append('--template') @@ -1276,13 +1302,14 @@ else: output, error = self.__client.runcommand(args) + infoBlock = [] if output: index = 0 for line in output.splitlines(): index += 1 changeset, tags, author, date, branches, bookmarks = line.split("@@@") cdate, ctime = date.split()[:2] - info.append("""<p><table>""") + info = [] info.append(QApplication.translate("mercurial", """<tr><td><b>Parent #{0}</b></td><td></td></tr>\n""" """<tr><td><b>Changeset</b></td><td>{1}</td></tr>""")\ @@ -1304,7 +1331,11 @@ """<tr><td><b>Committed date</b></td><td>{1}</td></tr>\n""" """<tr><td><b>Committed time</b></td><td>{2}</td></tr>""")\ .format(author, cdate, ctime)) - info.append("""</table></p>""") + infoBlock.append("\n".join(info)) + if infoBlock: + infoStr = """<tr></tr>{0}""".format("<tr></tr>".join(infoBlock)) + else: + infoStr = "" url = "" args = [] @@ -1335,9 +1366,9 @@ """<tr><td><b>Mercurial V.</b></td><td>{0}</td></tr>\n""" """<tr></tr>\n""" """<tr><td><b>URL</b></td><td>{1}</td></tr>\n""" + """{2}""" """</table></p>\n""" - """{2}""" - ).format(self.versionStr, url, "\n".join(info)) + ).format(self.versionStr, url, infoStr) ############################################################################ ## Private Mercurial specific methods are below. @@ -1605,15 +1636,137 @@ self.diff.show() self.diff.start(name, revisions) - def hgLogBrowser(self, path): + def __hgGetFileForRevision(self, name, rev=""): + """ + Private method to get a file for a specific revision from the repository. + + @param name file name to get from the repository (string) + @keyparam rev revision to retrieve (string) + @return contents of the file (string) and an error message (string) + """ + args = [] + args.append("cat") + if rev: + args.append("--rev") + args.append(rev) + args.append(name) + + if self.__client is None: + output = "" + error = "" + + # find the root of the repo + repodir = self.splitPath(name)[0] + while not os.path.isdir(os.path.join(repodir, self.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return + + process = QProcess() + process.setWorkingDirectory(repodir) + process.start('hg', args) + procStarted = process.waitForStarted(5000) + if procStarted: + finished = process.waitForFinished(30000) + if finished: + if process.exitCode() == 0: + output = str(process.readAllStandardOutput(), + Preferences.getSystem("IOEncoding"), 'replace') + else: + error = str(process.readAllStandardError(), + Preferences.getSystem("IOEncoding"), 'replace') + else: + error = self.trUtf8("The hg process did not finish within 30s.") + else: + error = self.trUtf8('The process {0} could not be started. ' + 'Ensure, that it is in the search path.').format('hg') + else: + output, error = self.__client.runcommand(args) + + return output, error + + def hgSbsDiff(self, name, extended=False, revisions=None): + """ + Public method used to view the difference of a file to the Mercurial repository + side-by-side. + + @param name file name to be diffed (string) + @keyparam extended flag indicating the extended variant (boolean) + @keyparam revisions tuple of two revisions (tuple of strings) + """ + if isinstance(name, list): + raise ValueError("Wrong parameter type") + + if extended: + # find the root of the repo + repodir = self.splitPath(name)[0] + while not os.path.isdir(os.path.join(repodir, self.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return + + if self.isExtensionActive("bookmarks"): + bookmarksList = \ + self.getExtensionObject("bookmarks").hgGetBookmarksList(repodir) + else: + bookmarksList = None + + from .HgRevisionsSelectionDialog import HgRevisionsSelectionDialog + dlg = HgRevisionsSelectionDialog(self.hgGetTagsList(repodir), + self.hgGetBranchesList(repodir), + bookmarksList) + if dlg.exec_() == QDialog.Accepted: + rev1, rev2 = dlg.getRevisions() + elif revisions: + rev1, rev2 = revisions[0], revisions[1] + else: + rev1, rev2 = "", "" + + output1, error = self.__hgGetFileForRevision(name, rev=rev1) + if error: + E5MessageBox.critical(self.__ui, + self.trUtf8("Mercurial Side-by-Side Difference"), + error) + return + name1 = "{0} (rev. {1})".format(name, rev1 and rev1 or ".") + + if rev2: + output2, error = self.__hgGetFileForRevision(name, rev=rev2) + if error: + E5MessageBox.critical(self.__ui, + self.trUtf8("Mercurial Side-by-Side Difference"), + error) + return + name2 = "{0} (rev. {1})".format(name, rev2) + else: + try: + f1 = open(name, "r", encoding="utf-8") + output2 = f1.read() + f1.close() + name2 = name + except IOError: + E5MessageBox.critical(self.__ui, + self.trUtf8("Mercurial Side-by-Side Difference"), + self.trUtf8("""<p>The file <b>{0}</b> could not be read.</p>""") + .format(name)) + return + + if self.sbsDiff is None: + from UI.CompareDialog import CompareDialog + self.sbsDiff = CompareDialog() + self.sbsDiff.show() + self.sbsDiff.compare(output1, output2, name1, name2) + + def hgLogBrowser(self, path, isFile=False): """ Public method used to browse the log of a file/directory from the Mercurial repository. @param path file/directory name to show the log of (string) + @keyparam isFile flag indicating log for a file is to be shown (boolean) """ from .HgLogBrowserDialog import HgLogBrowserDialog - self.logBrowser = HgLogBrowserDialog(self) + self.logBrowser = HgLogBrowserDialog(self, isFile=isFile) self.logBrowser.show() self.logBrowser.start(path) @@ -2716,6 +2869,39 @@ self.checkVCSStatus() return res + def hgArchive(self): + """ + Public method to create an unversioned archive from the repository. + """ + # find the root of the repo + repodir = self.__projectHelper.getProject().getProjectPath() + while not os.path.isdir(os.path.join(repodir, self.adminDir)): + repodir = os.path.dirname(repodir) + if os.path.splitdrive(repodir)[1] == os.sep: + return + + from .HgArchiveDialog import HgArchiveDialog + dlg = HgArchiveDialog(self) + if dlg.exec_() == QDialog.Accepted: + archive, type_, prefix, subrepos = dlg.getData() + + args = [] + args.append("archive") + if type_: + args.append("--type") + args.append(type_) + if prefix: + args.append("--prefix") + args.append(prefix) + if subrepos: + args.append("--subrepos") + args.append(archive) + + dia = HgDialog(self.trUtf8("Create Unversioned Archive"), self) + res = dia.startProcess(args, repodir) + if res: + dia.exec_() + ############################################################################ ## Methods to deal with subrepositories are below. ############################################################################
--- a/Plugins/VcsPlugins/vcsPySvn/ProjectBrowserHelper.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/ProjectBrowserHelper.py Mon Aug 12 22:21:53 2013 +0200 @@ -259,10 +259,17 @@ act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference'), self._VCSDiff) self.vcsMenuActions.append(act) + act = menu.addAction(UI.PixmapCache.getIcon("vcsSbsDiff.png"), + self.trUtf8('Show difference side-by-side'), self.__SVNSbsDiff) + self.vcsMenuActions.append(act) act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference (extended)'), self.__SVNExtendedDiff) self.vcsMenuActions.append(act) + act = menu.addAction(UI.PixmapCache.getIcon("vcsSbsDiff.png"), + self.trUtf8('Show difference side-by-side (extended)'), + self.__SVNSbsExtendedDiff) + self.vcsMenuActions.append(act) act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference (URLs)'), self.__SVNUrlDiff) @@ -769,6 +776,24 @@ names.append(itm.dirName()) self.vcs.svnUrlDiff(names) + def __SVNSbsDiff(self): + """ + Private slot called by the context menu to show the difference of a file to + the repository side-by-side. + """ + itm = self.browser.currentItem() + fn = itm.fileName() + self.vcs.svnSbsDiff(fn) + + def __SVNSbsExtendedDiff(self): + """ + Private slot called by the context menu to show the difference of a file to + the repository side-by-side allowing the selection of revisions to compare. + """ + itm = self.browser.currentItem() + fn = itm.fileName() + self.vcs.svnSbsDiff(fn, extended=True) + def __SVNLogBrowser(self): """ Private slot called by the context menu to show the log browser for a file. @@ -776,9 +801,11 @@ itm = self.browser.currentItem() try: fn = itm.fileName() + isFile = True except AttributeError: fn = itm.dirName() - self.vcs.svnLogBrowser(fn) + isFile = False + self.vcs.svnLogBrowser(fn, isFile=isFile) def __SVNBlame(self): """
--- a/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -29,11 +29,12 @@ """ Class implementing a dialog to browse the log history. """ - def __init__(self, vcs, parent=None): + def __init__(self, vcs, isFile=False, parent=None): """ Constructor @param vcs reference to the vcs object + @param isFile flag indicating log for a file is to be shown (boolean) @param parent parent widget (QWidget) """ super(SvnLogBrowserDialog, self).__init__(parent) @@ -46,6 +47,8 @@ self.filesTree.headerItem().setText(self.filesTree.columnCount(), "") self.filesTree.header().setSortIndicator(0, Qt.AscendingOrder) + self.sbsCheckBox.setEnabled(isFile) + self.vcs = vcs self.__maxDate = QDate() @@ -318,13 +321,16 @@ @param rev2 second revision number (integer) @param peg_rev revision number to use as a reference (integer) """ - if self.diff is None: - from .SvnDiffDialog import SvnDiffDialog - self.diff = SvnDiffDialog(self.vcs) - self.diff.show() - self.diff.raise_() - QApplication.processEvents() - self.diff.start(self.filename, [rev1, rev2], pegRev=peg_rev) + if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): + self.vcs.svnSbsDiff(self.filename, revisions=(str(rev1), str(rev2))) + else: + if self.diff is None: + from .SvnDiffDialog import SvnDiffDialog + self.diff = SvnDiffDialog(self.vcs) + self.diff.show() + self.diff.raise_() + QApplication.processEvents() + self.diff.start(self.filename, [rev1, rev2], pegRev=peg_rev) def on_buttonBox_clicked(self, button): """
--- a/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnLogBrowserDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -16,7 +16,7 @@ <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QVBoxLayout"> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout"> <item> @@ -191,8 +191,8 @@ </widget> </item> <item> - <layout class="QHBoxLayout"> - <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> <widget class="QPushButton" name="nextButton"> <property name="toolTip"> <string>Press to get the next bunch of log entries</string> @@ -202,7 +202,7 @@ </property> </widget> </item> - <item> + <item row="0" column="1"> <widget class="QSpinBox" name="limitSpinBox"> <property name="toolTip"> <string>Enter the limit of entries to fetch</string> @@ -217,11 +217,11 @@ <number>10000</number> </property> <property name="value"> - <number>100</number> + <number>20</number> </property> </widget> </item> - <item> + <item row="0" column="2"> <widget class="QCheckBox" name="stopCheckBox"> <property name="toolTip"> <string>Select to stop listing log messages at a copy or move</string> @@ -231,14 +231,14 @@ </property> </widget> </item> - <item> + <item row="0" column="3" rowspan="2"> <widget class="Line" name="line"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> </item> - <item> + <item row="0" column="4"> <widget class="QPushButton" name="diffPreviousButton"> <property name="toolTip"> <string>Press to generate a diff to the previous revision</string> @@ -248,7 +248,7 @@ </property> </widget> </item> - <item> + <item row="0" column="5"> <widget class="QPushButton" name="diffRevisionsButton"> <property name="toolTip"> <string>Press to compare two revisions</string> @@ -258,19 +258,29 @@ </property> </widget> </item> - <item> + <item row="0" column="6"> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>91</width> + <width>38</width> <height>29</height> </size> </property> </spacer> </item> + <item row="1" column="4" colspan="3"> + <widget class="QCheckBox" name="sbsCheckBox"> + <property name="toolTip"> + <string>Select to show differences side-by-side</string> + </property> + <property name="text"> + <string>Show differences side-by-side</string> + </property> + </widget> + </item> </layout> </item> <item> @@ -305,6 +315,7 @@ <tabstop>stopCheckBox</tabstop> <tabstop>diffPreviousButton</tabstop> <tabstop>diffRevisionsButton</tabstop> + <tabstop>sbsCheckBox</tabstop> <tabstop>buttonBox</tabstop> </tabstops> <resources/>
--- a/Plugins/VcsPlugins/vcsPySvn/SvnLogDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnLogDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -31,11 +31,12 @@ The dialog is nonmodal. Clicking a link in the upper text pane shows a diff of the versions. """ - def __init__(self, vcs, parent=None): + def __init__(self, vcs, isFile=False, parent=None): """ Constructor @param vcs reference to the vcs object + @param isFile flag indicating log for a file is to be shown (boolean) @param parent parent widget (QWidget) """ super(SvnLogDialog, self).__init__(parent) @@ -61,6 +62,8 @@ self.revString = self.trUtf8('revision') self.diff = None + self.sbsCheckBox.setEnabled(isFile) + self.client = self.vcs.getClient() self.client.callback_cancel = \ self._clientCancelCallback @@ -228,11 +231,14 @@ return self.contents.scrollToAnchor(ver) - if self.diff is None: - from .SvnDiffDialog import SvnDiffDialog - self.diff = SvnDiffDialog(self.vcs) - self.diff.show() - self.diff.start(filename, [v1, v2], pegRev=self.__pegRev) + if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): + self.vcs.svnSbsDiff(filename, revisions=(v1, v2)) + else: + if self.diff is None: + from .SvnDiffDialog import SvnDiffDialog + self.diff = SvnDiffDialog(self.vcs) + self.diff.show() + self.diff.start(filename, [v1, v2], pegRev=self.__pegRev) def __showError(self, msg): """
--- a/Plugins/VcsPlugins/vcsPySvn/SvnLogDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnLogDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -13,7 +13,7 @@ <property name="windowTitle"> <string>Subversion Log</string> </property> - <layout class="QVBoxLayout"> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="contentsGroup"> <property name="sizePolicy"> @@ -37,6 +37,16 @@ </widget> </item> <item> + <widget class="QCheckBox" name="sbsCheckBox"> + <property name="toolTip"> + <string>Select to show differences side-by-side</string> + </property> + <property name="text"> + <string>Show differences side-by-side</string> + </property> + </widget> + </item> + <item> <widget class="QGroupBox" name="errorGroup"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> @@ -78,6 +88,7 @@ </widget> <tabstops> <tabstop>contents</tabstop> + <tabstop>sbsCheckBox</tabstop> <tabstop>errors</tabstop> <tabstop>buttonBox</tabstop> </tabstops>
--- a/Plugins/VcsPlugins/vcsPySvn/SvnRevisionSelectionDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnRevisionSelectionDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -1,137 +1,141 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>SvnRevisionSelectionDialog</class> - <widget class="QDialog" name="SvnRevisionSelectionDialog" > - <property name="geometry" > + <widget class="QDialog" name="SvnRevisionSelectionDialog"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>339</width> + <width>399</width> <height>519</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>Subversion Diff</string> </property> - <property name="sizeGripEnabled" > + <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QVBoxLayout" > + <layout class="QVBoxLayout"> <item> - <widget class="QGroupBox" name="rev1GroupBox" > - <property name="title" > + <widget class="QGroupBox" name="rev1GroupBox"> + <property name="title"> <string>Revision &1</string> </property> - <layout class="QGridLayout" > - <item row="6" column="0" > - <widget class="QRadioButton" name="prev1Button" > - <property name="toolTip" > + <layout class="QGridLayout"> + <item row="6" column="0"> + <widget class="QRadioButton" name="prev1Button"> + <property name="toolTip"> <string>Select revision before last commit</string> </property> - <property name="text" > + <property name="text"> <string>PREV</string> </property> </widget> </item> - <item row="5" column="0" > - <widget class="QRadioButton" name="committed1Button" > - <property name="toolTip" > + <item row="5" column="0"> + <widget class="QRadioButton" name="committed1Button"> + <property name="toolTip"> <string>Select last committed revision</string> </property> - <property name="text" > + <property name="text"> <string>COMMITTED</string> </property> </widget> </item> - <item row="4" column="0" > - <widget class="QRadioButton" name="base1Button" > - <property name="toolTip" > + <item row="4" column="0"> + <widget class="QRadioButton" name="base1Button"> + <property name="toolTip"> <string>Select base revision</string> </property> - <property name="text" > + <property name="text"> <string>BASE</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QRadioButton" name="head1Button" > - <property name="toolTip" > + <item row="2" column="0"> + <widget class="QRadioButton" name="head1Button"> + <property name="toolTip"> <string>Select head revision of repository</string> </property> - <property name="text" > + <property name="text"> <string>HEAD</string> </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QRadioButton" name="working1Button" > - <property name="toolTip" > - <string>Select working revision</string> - </property> - <property name="text" > - <string>WORKING</string> - </property> - <property name="checked" > + <property name="checked"> <bool>true</bool> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QSpinBox" name="number1SpinBox" > - <property name="enabled" > + <item row="3" column="0"> + <widget class="QRadioButton" name="working1Button"> + <property name="toolTip"> + <string>Select working revision</string> + </property> + <property name="text"> + <string>WORKING</string> + </property> + <property name="checked"> <bool>false</bool> </property> - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="number1SpinBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter a revision number</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight</set> </property> - <property name="minimum" > + <property name="minimum"> <number>1</number> </property> - <property name="maximum" > + <property name="maximum"> <number>999999999</number> </property> </widget> </item> - <item row="1" column="2" > - <widget class="QTimeEdit" name="time1Edit" > - <property name="enabled" > + <item row="1" column="2"> + <widget class="QTimeEdit" name="time1Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter time of revision</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QDateEdit" name="date1Edit" > - <property name="enabled" > + <item row="1" column="1"> + <widget class="QDateEdit" name="date1Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter date of revision</string> </property> - <property name="displayFormat" > + <property name="displayFormat"> <string>yyyy-MM-dd</string> </property> - <property name="calendarPopup" > + <property name="calendarPopup"> <bool>true</bool> </property> </widget> </item> - <item row="0" column="2" > + <item row="0" column="2"> <spacer> - <property name="orientation" > + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> @@ -139,22 +143,22 @@ </property> </spacer> </item> - <item row="0" column="0" > - <widget class="QRadioButton" name="number1Button" > - <property name="toolTip" > + <item row="0" column="0"> + <widget class="QRadioButton" name="number1Button"> + <property name="toolTip"> <string>Select to specify a revision by number</string> </property> - <property name="text" > + <property name="text"> <string>Number</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QRadioButton" name="date1Button" > - <property name="toolTip" > + <item row="1" column="0"> + <widget class="QRadioButton" name="date1Button"> + <property name="toolTip"> <string>Select to specify a revision by date and time</string> </property> - <property name="text" > + <property name="text"> <string>Date</string> </property> </widget> @@ -163,121 +167,124 @@ </widget> </item> <item> - <widget class="QGroupBox" name="rev2GroupBox" > - <property name="title" > + <widget class="QGroupBox" name="rev2GroupBox"> + <property name="title"> <string>Revision &2</string> </property> - <layout class="QGridLayout" > - <item row="6" column="0" > - <widget class="QRadioButton" name="prev2Button" > - <property name="toolTip" > + <layout class="QGridLayout"> + <item row="6" column="0"> + <widget class="QRadioButton" name="prev2Button"> + <property name="toolTip"> <string>Select revision before last commit</string> </property> - <property name="text" > + <property name="text"> <string>PREV</string> </property> </widget> </item> - <item row="5" column="0" > - <widget class="QRadioButton" name="committed2Button" > - <property name="toolTip" > + <item row="5" column="0"> + <widget class="QRadioButton" name="committed2Button"> + <property name="toolTip"> <string>Select last committed revision</string> </property> - <property name="text" > + <property name="text"> <string>COMMITTED</string> </property> </widget> </item> - <item row="4" column="0" > - <widget class="QRadioButton" name="base2Button" > - <property name="toolTip" > + <item row="4" column="0"> + <widget class="QRadioButton" name="base2Button"> + <property name="toolTip"> <string>Select base revision</string> </property> - <property name="text" > + <property name="text"> <string>BASE</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QRadioButton" name="head2Button" > - <property name="toolTip" > + <item row="2" column="0"> + <widget class="QRadioButton" name="head2Button"> + <property name="toolTip"> <string>Select head revision of repository</string> </property> - <property name="text" > + <property name="text"> <string>HEAD</string> </property> - <property name="checked" > + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QRadioButton" name="working2Button"> + <property name="toolTip"> + <string>Select working revision</string> + </property> + <property name="text"> + <string>WORKING</string> + </property> + <property name="checked"> <bool>true</bool> </property> </widget> </item> - <item row="3" column="0" > - <widget class="QRadioButton" name="working2Button" > - <property name="toolTip" > - <string>Select working revision</string> - </property> - <property name="text" > - <string>WORKING</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QSpinBox" name="number2SpinBox" > - <property name="enabled" > + <item row="0" column="1"> + <widget class="QSpinBox" name="number2SpinBox"> + <property name="enabled"> <bool>false</bool> </property> - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter a revision number</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight</set> </property> - <property name="minimum" > + <property name="minimum"> <number>1</number> </property> - <property name="maximum" > + <property name="maximum"> <number>999999999</number> </property> </widget> </item> - <item row="1" column="2" > - <widget class="QTimeEdit" name="time2Edit" > - <property name="enabled" > + <item row="1" column="2"> + <widget class="QTimeEdit" name="time2Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter time of revision</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QDateEdit" name="date2Edit" > - <property name="enabled" > + <item row="1" column="1"> + <widget class="QDateEdit" name="date2Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter date of revision</string> </property> - <property name="displayFormat" > + <property name="displayFormat"> <string>yyyy-MM-dd</string> </property> - <property name="calendarPopup" > + <property name="calendarPopup"> <bool>true</bool> </property> </widget> </item> - <item row="0" column="2" > + <item row="0" column="2"> <spacer> - <property name="orientation" > + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> @@ -285,22 +292,22 @@ </property> </spacer> </item> - <item row="0" column="0" > - <widget class="QRadioButton" name="number2Button" > - <property name="toolTip" > + <item row="0" column="0"> + <widget class="QRadioButton" name="number2Button"> + <property name="toolTip"> <string>Select to specify a revision by number</string> </property> - <property name="text" > + <property name="text"> <string>Number</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QRadioButton" name="date2Button" > - <property name="toolTip" > + <item row="1" column="0"> + <widget class="QRadioButton" name="date2Button"> + <property name="toolTip"> <string>Select to specify a revision by date and time</string> </property> - <property name="text" > + <property name="text"> <string>Date</string> </property> </widget> @@ -309,18 +316,18 @@ </widget> </item> <item> - <widget class="QDialogButtonBox" name="buttonBox" > - <property name="orientation" > + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="standardButtons" > + <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> - <layoutdefault spacing="6" margin="6" /> + <layoutdefault spacing="6" margin="6"/> <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> <tabstops> <tabstop>number1Button</tabstop> @@ -353,11 +360,11 @@ <receiver>SvnRevisionSelectionDialog</receiver> <slot>accept()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>27</x> <y>512</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>21</x> <y>143</y> </hint> @@ -369,11 +376,11 @@ <receiver>SvnRevisionSelectionDialog</receiver> <slot>reject()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>79</x> <y>512</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>73</x> <y>140</y> </hint> @@ -385,11 +392,11 @@ <receiver>number1SpinBox</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>62</x> <y>45</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>148</x> <y>43</y> </hint> @@ -401,11 +408,11 @@ <receiver>date1Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>70</x> <y>77</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>136</x> <y>74</y> </hint> @@ -417,11 +424,11 @@ <receiver>time1Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>16</x> <y>74</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>257</x> <y>74</y> </hint> @@ -433,11 +440,11 @@ <receiver>number2SpinBox</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>32</x> <y>281</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>128</x> <y>283</y> </hint> @@ -449,11 +456,11 @@ <receiver>date2Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>49</x> <y>310</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>134</x> <y>310</y> </hint> @@ -465,11 +472,11 @@ <receiver>time2Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>55</x> <y>322</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>264</x> <y>320</y> </hint>
--- a/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -91,6 +91,8 @@ self.menuactions.append(self.menu.addAction( self.trUtf8("Show differences"), self.__diff)) self.menuactions.append(self.menu.addAction( + self.trUtf8("Show differences side-by-side"), self.__sbsDiff)) + self.menuactions.append(self.menu.addAction( self.trUtf8("Revert changes"), self.__revert)) self.menuactions.append(self.menu.addAction( self.trUtf8("Restore missing"), self.__restoreMissing)) @@ -266,6 +268,7 @@ self.addButton.setEnabled(False) self.commitButton.setEnabled(False) self.diffButton.setEnabled(False) + self.sbsDiffButton.setEnabled(False) self.revertButton.setEnabled(False) self.restoreButton.setEnabled(False) @@ -486,6 +489,7 @@ self.addButton.setEnabled(unversioned) self.diffButton.setEnabled(modified) + self.sbsDiffButton.setEnabled(modified == 1) self.revertButton.setEnabled(modified) self.restoreButton.setEnabled(missing) @@ -552,6 +556,13 @@ self.__diff() @pyqtSlot() + def on_sbsDiffButton_clicked(self): + """ + Private slot to handle the press of the Side-by-Side Diff button. + """ + self.__sbsDiff() + + @pyqtSlot() def on_revertButton_clicked(self): """ Private slot to handle the press of the Revert button. @@ -696,7 +707,28 @@ self.diff.show() QApplication.processEvents() self.diff.start(names) + + def __sbsDiff(self): + """ + Private slot to handle the Side-by-Side Diff context menu entry. + """ + names = [os.path.join(self.dname, itm.text(self.__pathColumn)) + for itm in self.__getModifiedItems()] + if not names: + E5MessageBox.information(self, + self.trUtf8("Side-by-Side Diff"), + self.trUtf8("""There are no uncommitted changes""" + """ available/selected.""")) + return + elif len(names) > 1: + E5MessageBox.information(self, + self.trUtf8("Side-by-Side Diff"), + self.trUtf8("""Only one file with uncommitted changes""" + """ must be selected.""")) + return + self.vcs.svnSbsDiff(names[0]) + def __lock(self): """ Private slot to handle the Lock context menu entry.
--- a/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/SvnStatusDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -185,6 +185,16 @@ </widget> </item> <item> + <widget class="QPushButton" name="sbsDiffButton"> + <property name="toolTip"> + <string>Show differences of the selected entry to the repository in a side-by-side manner</string> + </property> + <property name="text"> + <string>Side-b&y-Side Diff</string> + </property> + </widget> + </item> + <item> <widget class="QPushButton" name="revertButton"> <property name="toolTip"> <string>Revert the selected entries to the last revision in the repository</string> @@ -264,6 +274,7 @@ <tabstop>commitButton</tabstop> <tabstop>addButton</tabstop> <tabstop>diffButton</tabstop> + <tabstop>sbsDiffButton</tabstop> <tabstop>revertButton</tabstop> <tabstop>restoreButton</tabstop> <tabstop>errors</tabstop>
--- a/Plugins/VcsPlugins/vcsPySvn/subversion.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsPySvn/subversion.py Mon Aug 12 22:21:53 2013 +0200 @@ -11,12 +11,10 @@ import os import shutil -import urllib.request import urllib.parse -import urllib.error import time -from PyQt4.QtCore import QMutexLocker, pyqtSignal, QRegExp +from PyQt4.QtCore import Qt, QMutexLocker, pyqtSignal, QRegExp, QDateTime from PyQt4.QtGui import QLineEdit, QDialog, QInputDialog, QApplication from E5Gui.E5Application import e5App @@ -94,6 +92,7 @@ self.log = None self.diff = None + self.sbsDiff = None self.status = None self.propList = None self.tagbranchList = None @@ -148,6 +147,8 @@ self.log.close() if self.diff is not None: self.diff.close() + if self.sbsDiff is not None: + self.sbsDiff.close() if self.status is not None: self.status.close() if self.propList is not None: @@ -929,6 +930,7 @@ @param name file/directory name to show the log of (string) """ + isFile = os.path.isfile(name) noEntries, ok = QInputDialog.getInt( None, self.trUtf8("Subversion Log"), @@ -936,7 +938,7 @@ self.getPlugin().getPreferences("LogLimit"), 1, 999999, 1) if ok: from .SvnLogDialog import SvnLogDialog - self.log = SvnLogDialog(self) + self.log = SvnLogDialog(self, isFile=isFile) self.log.show() QApplication.processEvents() self.log.start(name, noEntries) @@ -1997,15 +1999,118 @@ QApplication.processEvents() self.diff.start(name, urls=urls, summary=summary) - def svnLogBrowser(self, path): + def __svnGetFileForRevision(self, name, rev=""): + """ + Private method to get a file for a specific revision from the repository. + + @param name file name to get from the repository (string) + @keyparam rev revision to retrieve (integer or string) + @return contents of the file (string) and an error message (string) + """ + output = "" + error = "" + + client = self.getClient() + try: + if rev: + if isinstance(rev, int) or rev.isdecimal(): + rev = pysvn.Revision(pysvn.opt_revision_kind.number, int(rev)) + elif rev.startswith("{"): + dateStr = rev[1:-1] + secs = QDateTime.fromString(dateStr, Qt.ISODate).toTime_t() + rev = pysvn.Revision(pysvn.opt_revision_kind.date, secs) + elif rev == "HEAD": + rev = pysvn.Revision(pysvn.opt_revision_kind.head) + elif rev == "COMMITTED": + rev = pysvn.Revision(pysvn.opt_revision_kind.committed) + elif rev == "BASE": + rev = pysvn.Revision(pysvn.opt_revision_kind.base) + elif rev == "WORKING": + rev = pysvn.Revision(pysvn.opt_revision_kind.working) + elif rev == "PREV": + rev = pysvn.Revision(pysvn.opt_revision_kind.previous) + else: + rev = pysvn.Revision(pysvn.opt_revision_kind.unspecified) + output = client.cat(name, revision=rev) + else: + output = client.cat(name) + output = output.decode() + except pysvn.ClientError as e: + error = str(e) + + return output, error + + def svnSbsDiff(self, name, extended=False, revisions=None): + """ + Public method used to view the difference of a file to the Mercurial repository + side-by-side. + + @param name file name to be diffed (string) + @keyparam extended flag indicating the extended variant (boolean) + @keyparam revisions tuple of two revisions (tuple of strings) + """ + if isinstance(name, list): + raise ValueError("Wrong parameter type") + + if extended: + from .SvnRevisionSelectionDialog import SvnRevisionSelectionDialog + dlg = SvnRevisionSelectionDialog() + if dlg.exec_() == QDialog.Accepted: + rev1, rev2 = dlg.getRevisions() + if rev1 == "WORKING": + rev1 = "" + if rev2 == "WORKING": + rev2 = "" + elif revisions: + rev1, rev2 = revisions[0], revisions[1] + else: + rev1, rev2 = "", "" + + output1, error = self.__svnGetFileForRevision(name, rev=rev1) + if error: + E5MessageBox.critical(self.__ui, + self.trUtf8("Subversion Side-by-Side Difference"), + error) + return + name1 = "{0} (rev. {1})".format(name, rev1 and rev1 or ".") + + if rev2: + output2, error = self.__svnGetFileForRevision(name, rev=rev2) + if error: + E5MessageBox.critical(self.__ui, + self.trUtf8("Subversion Side-by-Side Difference"), + error) + return + name2 = "{0} (rev. {1})".format(name, rev2) + else: + try: + f1 = open(name, "r", encoding="utf-8") + output2 = f1.read() + f1.close() + name2 = name + except IOError: + E5MessageBox.critical(self.__ui, + self.trUtf8("Subversion Side-by-Side Difference"), + self.trUtf8("""<p>The file <b>{0}</b> could not be read.</p>""") + .format(name)) + return + + if self.sbsDiff is None: + from UI.CompareDialog import CompareDialog + self.sbsDiff = CompareDialog() + self.sbsDiff.show() + self.sbsDiff.compare(output1, output2, name1, name2) + + def svnLogBrowser(self, path, isFile=False): """ Public method used to browse the log of a file/directory from the Subversion repository. @param path file/directory name to show the log of (string) + @param isFile flag indicating log for a file is to be shown (boolean) """ from .SvnLogBrowserDialog import SvnLogBrowserDialog - self.logBrowser = SvnLogBrowserDialog(self) + self.logBrowser = SvnLogBrowserDialog(self, isFile=isFile) self.logBrowser.show() QApplication.processEvents() self.logBrowser.start(path)
--- a/Plugins/VcsPlugins/vcsSubversion/ProjectBrowserHelper.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/ProjectBrowserHelper.py Mon Aug 12 22:21:53 2013 +0200 @@ -254,10 +254,17 @@ act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference'), self._VCSDiff) self.vcsMenuActions.append(act) + act = menu.addAction(UI.PixmapCache.getIcon("vcsSbsDiff.png"), + self.trUtf8('Show difference side-by-side'), self.__SVNSbsDiff) + self.vcsMenuActions.append(act) act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference (extended)'), self.__SVNExtendedDiff) self.vcsMenuActions.append(act) + act = menu.addAction(UI.PixmapCache.getIcon("vcsSbsDiff.png"), + self.trUtf8('Show difference side-by-side (extended)'), + self.__SVNSbsExtendedDiff) + self.vcsMenuActions.append(act) act = menu.addAction(UI.PixmapCache.getIcon("vcsDiff.png"), self.trUtf8('Show difference (URLs)'), self.__SVNUrlDiff) @@ -763,6 +770,24 @@ names.append(itm.dirName()) self.vcs.svnUrlDiff(names) + def __SVNSbsDiff(self): + """ + Private slot called by the context menu to show the difference of a file to + the repository side-by-side. + """ + itm = self.browser.currentItem() + fn = itm.fileName() + self.vcs.svnSbsDiff(fn) + + def __SVNSbsExtendedDiff(self): + """ + Private slot called by the context menu to show the difference of a file to + the repository side-by-side allowing the selection of revisions to compare. + """ + itm = self.browser.currentItem() + fn = itm.fileName() + self.vcs.svnSbsDiff(fn, extended=True) + def __SVNLogBrowser(self): """ Private slot called by the context menu to show the log browser for a file. @@ -770,9 +795,11 @@ itm = self.browser.currentItem() try: fn = itm.fileName() + isFile = True except AttributeError: fn = itm.dirName() - self.vcs.svnLogBrowser(fn) + isFile = False + self.vcs.svnLogBrowser(fn, isFile=isFile) def __SVNBlame(self): """
--- a/Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -30,11 +30,12 @@ """ Class implementing a dialog to browse the log history. """ - def __init__(self, vcs, parent=None): + def __init__(self, vcs, isFile=False, parent=None): """ Constructor @param vcs reference to the vcs object + @param isFile flag indicating log for a file is to be shown (boolean) @param parent parent widget (QWidget) """ super(SvnLogBrowserDialog, self).__init__(parent) @@ -46,6 +47,8 @@ self.filesTree.headerItem().setText(self.filesTree.columnCount(), "") self.filesTree.header().setSortIndicator(0, Qt.AscendingOrder) + self.sbsCheckBox.setEnabled(isFile) + self.vcs = vcs self.__maxDate = QDate() @@ -417,12 +420,15 @@ @param rev1 first revision number (integer) @param rev2 second revision number (integer) """ - if self.diff is None: - from .SvnDiffDialog import SvnDiffDialog - self.diff = SvnDiffDialog(self.vcs) - self.diff.show() - self.diff.raise_() - self.diff.start(self.filename, [rev1, rev2]) + if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): + self.vcs.svnSbsDiff(self.filename, revisions=(str(rev1), str(rev2))) + else: + if self.diff is None: + from .SvnDiffDialog import SvnDiffDialog + self.diff = SvnDiffDialog(self.vcs) + self.diff.show() + self.diff.raise_() + self.diff.start(self.filename, [rev1, rev2]) def on_buttonBox_clicked(self, button): """
--- a/Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnLogBrowserDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -16,7 +16,7 @@ <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QVBoxLayout"> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout"> <item> @@ -191,8 +191,8 @@ </widget> </item> <item> - <layout class="QHBoxLayout"> - <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> <widget class="QPushButton" name="nextButton"> <property name="toolTip"> <string>Press to get the next bunch of log entries</string> @@ -202,7 +202,7 @@ </property> </widget> </item> - <item> + <item row="0" column="1"> <widget class="QSpinBox" name="limitSpinBox"> <property name="toolTip"> <string>Enter the limit of entries to fetch</string> @@ -217,11 +217,11 @@ <number>10000</number> </property> <property name="value"> - <number>100</number> + <number>20</number> </property> </widget> </item> - <item> + <item row="0" column="2"> <widget class="QCheckBox" name="stopCheckBox"> <property name="toolTip"> <string>Select to stop listing log messages at a copy or move</string> @@ -231,14 +231,14 @@ </property> </widget> </item> - <item> + <item row="0" column="3" rowspan="2"> <widget class="Line" name="line"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> </widget> </item> - <item> + <item row="0" column="4"> <widget class="QPushButton" name="diffPreviousButton"> <property name="toolTip"> <string>Press to generate a diff to the previous revision</string> @@ -248,7 +248,7 @@ </property> </widget> </item> - <item> + <item row="0" column="5"> <widget class="QPushButton" name="diffRevisionsButton"> <property name="toolTip"> <string>Press to compare two revisions</string> @@ -258,19 +258,29 @@ </property> </widget> </item> - <item> + <item row="0" column="6"> <spacer> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> - <width>81</width> - <height>29</height> + <width>39</width> + <height>26</height> </size> </property> </spacer> </item> + <item row="1" column="4" colspan="3"> + <widget class="QCheckBox" name="sbsCheckBox"> + <property name="toolTip"> + <string>Select to show differences side-by-side</string> + </property> + <property name="text"> + <string>Show differences side-by-side</string> + </property> + </widget> + </item> </layout> </item> <item> @@ -391,6 +401,7 @@ <tabstop>stopCheckBox</tabstop> <tabstop>diffPreviousButton</tabstop> <tabstop>diffRevisionsButton</tabstop> + <tabstop>sbsCheckBox</tabstop> <tabstop>errors</tabstop> <tabstop>input</tabstop> <tabstop>passwordCheckBox</tabstop>
--- a/Plugins/VcsPlugins/vcsSubversion/SvnLogDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnLogDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -33,11 +33,12 @@ The dialog is nonmodal. Clicking a link in the upper text pane shows a diff of the versions. """ - def __init__(self, vcs, parent=None): + def __init__(self, vcs, isFile=False, parent=None): """ Constructor @param vcs reference to the vcs object + @param isFile flag indicating log for a file is to be shown (boolean) @param parent parent widget (QWidget) """ super(SvnLogDialog, self).__init__(parent) @@ -83,6 +84,8 @@ self.buf = [] # buffer for stdout self.diff = None + self.sbsCheckBox.setEnabled(isFile) + def closeEvent(self, e): """ Private slot implementing a close event handler. @@ -272,11 +275,14 @@ return self.contents.scrollToAnchor(ver) - if self.diff is None: - from .SvnDiffDialog import SvnDiffDialog - self.diff = SvnDiffDialog(self.vcs) - self.diff.show() - self.diff.start(filename, [v1, v2]) + if self.sbsCheckBox.isEnabled() and self.sbsCheckBox.isChecked(): + self.vcs.svnSbsDiff(filename, revisions=(v1, v2)) + else: + if self.diff is None: + from .SvnDiffDialog import SvnDiffDialog + self.diff = SvnDiffDialog(self.vcs) + self.diff.show() + self.diff.start(filename, [v1, v2]) def on_passwordCheckBox_toggled(self, isOn): """
--- a/Plugins/VcsPlugins/vcsSubversion/SvnLogDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnLogDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -13,7 +13,7 @@ <property name="windowTitle"> <string>Subversion Log</string> </property> - <layout class="QVBoxLayout"> + <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QGroupBox" name="contentsGroup"> <property name="sizePolicy"> @@ -37,6 +37,16 @@ </widget> </item> <item> + <widget class="QCheckBox" name="sbsCheckBox"> + <property name="toolTip"> + <string>Select to show differences side-by-side</string> + </property> + <property name="text"> + <string>Show differences side-by-side</string> + </property> + </widget> + </item> + <item> <widget class="QGroupBox" name="errorGroup"> <property name="sizePolicy"> <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> @@ -136,6 +146,7 @@ </widget> <tabstops> <tabstop>contents</tabstop> + <tabstop>sbsCheckBox</tabstop> <tabstop>errors</tabstop> <tabstop>input</tabstop> <tabstop>passwordCheckBox</tabstop>
--- a/Plugins/VcsPlugins/vcsSubversion/SvnRevisionSelectionDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnRevisionSelectionDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -1,137 +1,141 @@ -<ui version="4.0" > +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> <class>SvnRevisionSelectionDialog</class> - <widget class="QDialog" name="SvnRevisionSelectionDialog" > - <property name="geometry" > + <widget class="QDialog" name="SvnRevisionSelectionDialog"> + <property name="geometry"> <rect> <x>0</x> <y>0</y> - <width>339</width> + <width>399</width> <height>519</height> </rect> </property> - <property name="windowTitle" > + <property name="windowTitle"> <string>Subversion Diff</string> </property> - <property name="sizeGripEnabled" > + <property name="sizeGripEnabled"> <bool>true</bool> </property> - <layout class="QVBoxLayout" > + <layout class="QVBoxLayout"> <item> - <widget class="QGroupBox" name="rev1GroupBox" > - <property name="title" > + <widget class="QGroupBox" name="rev1GroupBox"> + <property name="title"> <string>Revision &1</string> </property> - <layout class="QGridLayout" > - <item row="6" column="0" > - <widget class="QRadioButton" name="prev1Button" > - <property name="toolTip" > + <layout class="QGridLayout"> + <item row="6" column="0"> + <widget class="QRadioButton" name="prev1Button"> + <property name="toolTip"> <string>Select revision before last commit</string> </property> - <property name="text" > + <property name="text"> <string>PREV</string> </property> </widget> </item> - <item row="5" column="0" > - <widget class="QRadioButton" name="committed1Button" > - <property name="toolTip" > + <item row="5" column="0"> + <widget class="QRadioButton" name="committed1Button"> + <property name="toolTip"> <string>Select last committed revision</string> </property> - <property name="text" > + <property name="text"> <string>COMMITTED</string> </property> </widget> </item> - <item row="4" column="0" > - <widget class="QRadioButton" name="base1Button" > - <property name="toolTip" > + <item row="4" column="0"> + <widget class="QRadioButton" name="base1Button"> + <property name="toolTip"> <string>Select base revision</string> </property> - <property name="text" > + <property name="text"> <string>BASE</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QRadioButton" name="head1Button" > - <property name="toolTip" > + <item row="2" column="0"> + <widget class="QRadioButton" name="head1Button"> + <property name="toolTip"> <string>Select head revision of repository</string> </property> - <property name="text" > + <property name="text"> <string>HEAD</string> </property> - </widget> - </item> - <item row="3" column="0" > - <widget class="QRadioButton" name="working1Button" > - <property name="toolTip" > - <string>Select working revision</string> - </property> - <property name="text" > - <string>WORKING</string> - </property> - <property name="checked" > + <property name="checked"> <bool>true</bool> </property> </widget> </item> - <item row="0" column="1" > - <widget class="QSpinBox" name="number1SpinBox" > - <property name="enabled" > + <item row="3" column="0"> + <widget class="QRadioButton" name="working1Button"> + <property name="toolTip"> + <string>Select working revision</string> + </property> + <property name="text"> + <string>WORKING</string> + </property> + <property name="checked"> <bool>false</bool> </property> - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="number1SpinBox"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter a revision number</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight</set> </property> - <property name="minimum" > + <property name="minimum"> <number>1</number> </property> - <property name="maximum" > + <property name="maximum"> <number>999999999</number> </property> </widget> </item> - <item row="1" column="2" > - <widget class="QTimeEdit" name="time1Edit" > - <property name="enabled" > + <item row="1" column="2"> + <widget class="QTimeEdit" name="time1Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter time of revision</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QDateEdit" name="date1Edit" > - <property name="enabled" > + <item row="1" column="1"> + <widget class="QDateEdit" name="date1Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter date of revision</string> </property> - <property name="displayFormat" > + <property name="displayFormat"> <string>yyyy-MM-dd</string> </property> - <property name="calendarPopup" > + <property name="calendarPopup"> <bool>true</bool> </property> </widget> </item> - <item row="0" column="2" > + <item row="0" column="2"> <spacer> - <property name="orientation" > + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> @@ -139,22 +143,22 @@ </property> </spacer> </item> - <item row="0" column="0" > - <widget class="QRadioButton" name="number1Button" > - <property name="toolTip" > + <item row="0" column="0"> + <widget class="QRadioButton" name="number1Button"> + <property name="toolTip"> <string>Select to specify a revision by number</string> </property> - <property name="text" > + <property name="text"> <string>Number</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QRadioButton" name="date1Button" > - <property name="toolTip" > + <item row="1" column="0"> + <widget class="QRadioButton" name="date1Button"> + <property name="toolTip"> <string>Select to specify a revision by date and time</string> </property> - <property name="text" > + <property name="text"> <string>Date</string> </property> </widget> @@ -163,121 +167,124 @@ </widget> </item> <item> - <widget class="QGroupBox" name="rev2GroupBox" > - <property name="title" > + <widget class="QGroupBox" name="rev2GroupBox"> + <property name="title"> <string>Revision &2</string> </property> - <layout class="QGridLayout" > - <item row="6" column="0" > - <widget class="QRadioButton" name="prev2Button" > - <property name="toolTip" > + <layout class="QGridLayout"> + <item row="6" column="0"> + <widget class="QRadioButton" name="prev2Button"> + <property name="toolTip"> <string>Select revision before last commit</string> </property> - <property name="text" > + <property name="text"> <string>PREV</string> </property> </widget> </item> - <item row="5" column="0" > - <widget class="QRadioButton" name="committed2Button" > - <property name="toolTip" > + <item row="5" column="0"> + <widget class="QRadioButton" name="committed2Button"> + <property name="toolTip"> <string>Select last committed revision</string> </property> - <property name="text" > + <property name="text"> <string>COMMITTED</string> </property> </widget> </item> - <item row="4" column="0" > - <widget class="QRadioButton" name="base2Button" > - <property name="toolTip" > + <item row="4" column="0"> + <widget class="QRadioButton" name="base2Button"> + <property name="toolTip"> <string>Select base revision</string> </property> - <property name="text" > + <property name="text"> <string>BASE</string> </property> </widget> </item> - <item row="2" column="0" > - <widget class="QRadioButton" name="head2Button" > - <property name="toolTip" > + <item row="2" column="0"> + <widget class="QRadioButton" name="head2Button"> + <property name="toolTip"> <string>Select head revision of repository</string> </property> - <property name="text" > + <property name="text"> <string>HEAD</string> </property> - <property name="checked" > + <property name="checked"> + <bool>false</bool> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QRadioButton" name="working2Button"> + <property name="toolTip"> + <string>Select working revision</string> + </property> + <property name="text"> + <string>WORKING</string> + </property> + <property name="checked"> <bool>true</bool> </property> </widget> </item> - <item row="3" column="0" > - <widget class="QRadioButton" name="working2Button" > - <property name="toolTip" > - <string>Select working revision</string> - </property> - <property name="text" > - <string>WORKING</string> - </property> - </widget> - </item> - <item row="0" column="1" > - <widget class="QSpinBox" name="number2SpinBox" > - <property name="enabled" > + <item row="0" column="1"> + <widget class="QSpinBox" name="number2SpinBox"> + <property name="enabled"> <bool>false</bool> </property> - <property name="sizePolicy" > - <sizepolicy vsizetype="Fixed" hsizetype="Expanding" > + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <horstretch>0</horstretch> <verstretch>0</verstretch> </sizepolicy> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter a revision number</string> </property> - <property name="alignment" > + <property name="alignment"> <set>Qt::AlignRight</set> </property> - <property name="minimum" > + <property name="minimum"> <number>1</number> </property> - <property name="maximum" > + <property name="maximum"> <number>999999999</number> </property> </widget> </item> - <item row="1" column="2" > - <widget class="QTimeEdit" name="time2Edit" > - <property name="enabled" > + <item row="1" column="2"> + <widget class="QTimeEdit" name="time2Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter time of revision</string> </property> </widget> </item> - <item row="1" column="1" > - <widget class="QDateEdit" name="date2Edit" > - <property name="enabled" > + <item row="1" column="1"> + <widget class="QDateEdit" name="date2Edit"> + <property name="enabled"> <bool>false</bool> </property> - <property name="toolTip" > + <property name="toolTip"> <string>Enter date of revision</string> </property> - <property name="displayFormat" > + <property name="displayFormat"> <string>yyyy-MM-dd</string> </property> - <property name="calendarPopup" > + <property name="calendarPopup"> <bool>true</bool> </property> </widget> </item> - <item row="0" column="2" > + <item row="0" column="2"> <spacer> - <property name="orientation" > + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0" > + <property name="sizeHint" stdset="0"> <size> <width>40</width> <height>20</height> @@ -285,22 +292,22 @@ </property> </spacer> </item> - <item row="0" column="0" > - <widget class="QRadioButton" name="number2Button" > - <property name="toolTip" > + <item row="0" column="0"> + <widget class="QRadioButton" name="number2Button"> + <property name="toolTip"> <string>Select to specify a revision by number</string> </property> - <property name="text" > + <property name="text"> <string>Number</string> </property> </widget> </item> - <item row="1" column="0" > - <widget class="QRadioButton" name="date2Button" > - <property name="toolTip" > + <item row="1" column="0"> + <widget class="QRadioButton" name="date2Button"> + <property name="toolTip"> <string>Select to specify a revision by date and time</string> </property> - <property name="text" > + <property name="text"> <string>Date</string> </property> </widget> @@ -309,18 +316,18 @@ </widget> </item> <item> - <widget class="QDialogButtonBox" name="buttonBox" > - <property name="orientation" > + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="standardButtons" > + <property name="standardButtons"> <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> </property> </widget> </item> </layout> </widget> - <layoutdefault spacing="6" margin="6" /> + <layoutdefault spacing="6" margin="6"/> <pixmapfunction>qPixmapFromMimeSource</pixmapfunction> <tabstops> <tabstop>number1Button</tabstop> @@ -353,11 +360,11 @@ <receiver>SvnRevisionSelectionDialog</receiver> <slot>accept()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>27</x> <y>512</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>21</x> <y>143</y> </hint> @@ -369,11 +376,11 @@ <receiver>SvnRevisionSelectionDialog</receiver> <slot>reject()</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>79</x> <y>512</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>73</x> <y>140</y> </hint> @@ -385,11 +392,11 @@ <receiver>number1SpinBox</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>62</x> <y>45</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>148</x> <y>43</y> </hint> @@ -401,11 +408,11 @@ <receiver>date1Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>70</x> <y>77</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>136</x> <y>74</y> </hint> @@ -417,11 +424,11 @@ <receiver>time1Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>16</x> <y>74</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>257</x> <y>74</y> </hint> @@ -433,11 +440,11 @@ <receiver>number2SpinBox</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>32</x> <y>281</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>128</x> <y>283</y> </hint> @@ -449,11 +456,11 @@ <receiver>date2Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>49</x> <y>310</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>134</x> <y>310</y> </hint> @@ -465,11 +472,11 @@ <receiver>time2Edit</receiver> <slot>setEnabled(bool)</slot> <hints> - <hint type="sourcelabel" > + <hint type="sourcelabel"> <x>55</x> <y>322</y> </hint> - <hint type="destinationlabel" > + <hint type="destinationlabel"> <x>264</x> <y>320</y> </hint>
--- a/Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -89,6 +89,8 @@ self.menuactions.append(self.menu.addAction( self.trUtf8("Show differences"), self.__diff)) self.menuactions.append(self.menu.addAction( + self.trUtf8("Show differences side-by-side"), self.__sbsDiff)) + self.menuactions.append(self.menu.addAction( self.trUtf8("Revert changes"), self.__revert)) self.menuactions.append(self.menu.addAction( self.trUtf8("Restore missing"), self.__restoreMissing)) @@ -339,6 +341,7 @@ self.addButton.setEnabled(False) self.commitButton.setEnabled(False) self.diffButton.setEnabled(False) + self.sbsDiffButton.setEnabled(False) self.revertButton.setEnabled(False) self.restoreButton.setEnabled(False) @@ -601,6 +604,7 @@ self.addButton.setEnabled(unversioned) self.diffButton.setEnabled(modified) + self.sbsDiffButton.setEnabled(modified == 1) self.revertButton.setEnabled(modified) self.restoreButton.setEnabled(missing) @@ -667,6 +671,13 @@ self.__diff() @pyqtSlot() + def on_sbsDiffButton_clicked(self): + """ + Private slot to handle the press of the Side-by-Side Diff button. + """ + self.__sbsDiff() + + @pyqtSlot() def on_revertButton_clicked(self): """ Private slot to handle the press of the Revert button. @@ -811,7 +822,28 @@ self.diff.show() QApplication.processEvents() self.diff.start(names) + + def __sbsDiff(self): + """ + Private slot to handle the Side-by-Side Diff context menu entry. + """ + names = [os.path.join(self.dname, itm.text(self.__pathColumn)) + for itm in self.__getModifiedItems()] + if not names: + E5MessageBox.information(self, + self.trUtf8("Side-by-Side Diff"), + self.trUtf8("""There are no uncommitted changes""" + """ available/selected.""")) + return + elif len(names) > 1: + E5MessageBox.information(self, + self.trUtf8("Side-by-Side Diff"), + self.trUtf8("""Only one file with uncommitted changes""" + """ must be selected.""")) + return + self.vcs.svnSbsDiff(names[0]) + def __lock(self): """ Private slot to handle the Lock context menu entry.
--- a/Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.ui Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/SvnStatusDialog.ui Mon Aug 12 22:21:53 2013 +0200 @@ -182,6 +182,16 @@ </widget> </item> <item> + <widget class="QPushButton" name="sbsDiffButton"> + <property name="toolTip"> + <string>Show differences of the selected entry to the repository in a side-by-side manner</string> + </property> + <property name="text"> + <string>Side-b&y-Side Diff</string> + </property> + </widget> + </item> + <item> <widget class="QPushButton" name="revertButton"> <property name="toolTip"> <string>Revert the selected entries to the last revision in the repository</string> @@ -319,6 +329,7 @@ <tabstop>commitButton</tabstop> <tabstop>addButton</tabstop> <tabstop>diffButton</tabstop> + <tabstop>sbsDiffButton</tabstop> <tabstop>revertButton</tabstop> <tabstop>restoreButton</tabstop> <tabstop>errors</tabstop>
--- a/Plugins/VcsPlugins/vcsSubversion/subversion.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/VcsPlugins/vcsSubversion/subversion.py Mon Aug 12 22:21:53 2013 +0200 @@ -16,9 +16,7 @@ import os import re import shutil -import urllib.request import urllib.parse -import urllib.error from PyQt4.QtCore import pyqtSignal, QProcess, QRegExp from PyQt4.QtGui import QLineEdit, QDialog, QInputDialog, QApplication @@ -97,6 +95,7 @@ self.log = None self.diff = None + self.sbsDiff = None self.status = None self.propList = None self.tagbranchList = None @@ -129,6 +128,8 @@ self.log.close() if self.diff is not None: self.diff.close() + if self.sbsDiff is not None: + self.sbsDiff.close() if self.status is not None: self.status.close() if self.propList is not None: @@ -839,6 +840,7 @@ @param name file/directory name to show the log of (string) """ + isFile = os.path.isfile(name) noEntries, ok = QInputDialog.getInt( None, self.trUtf8("Subversion Log"), @@ -846,7 +848,7 @@ self.getPlugin().getPreferences("LogLimit"), 1, 999999, 1) if ok: from .SvnLogDialog import SvnLogDialog - self.log = SvnLogDialog(self) + self.log = SvnLogDialog(self, isFile=isFile) self.log.show() self.log.start(name, noEntries) @@ -1839,15 +1841,115 @@ QApplication.processEvents() self.diff.start(name, urls=urls, summary=summary) - def svnLogBrowser(self, path): + def __svnGetFileForRevision(self, name, rev=""): + """ + Private method to get a file for a specific revision from the repository. + + @param name file name to get from the repository (string) + @keyparam rev revision to retrieve (integer or string) + @return contents of the file (string) and an error message (string) + """ + args = [] + args.append("cat") + if rev: + args.append("--revision") + args.append(str(rev)) + args.append(name) + + output = "" + error = "" + + process = QProcess() + process.start('svn', args) + procStarted = process.waitForStarted(5000) + if procStarted: + finished = process.waitForFinished(30000) + if finished: + if process.exitCode() == 0: + output = str(process.readAllStandardOutput(), + Preferences.getSystem("IOEncoding"), 'replace') + else: + error = str(process.readAllStandardError(), + Preferences.getSystem("IOEncoding"), 'replace') + else: + error = self.trUtf8("The svn process did not finish within 30s.") + else: + error = self.trUtf8('The process {0} could not be started. ' + 'Ensure, that it is in the search path.').format('svn') + + return output, error + + def svnSbsDiff(self, name, extended=False, revisions=None): + """ + Public method used to view the difference of a file to the Mercurial repository + side-by-side. + + @param name file name to be diffed (string) + @keyparam extended flag indicating the extended variant (boolean) + @keyparam revisions tuple of two revisions (tuple of strings) + """ + if isinstance(name, list): + raise ValueError("Wrong parameter type") + + if extended: + from .SvnRevisionSelectionDialog import SvnRevisionSelectionDialog + dlg = SvnRevisionSelectionDialog() + if dlg.exec_() == QDialog.Accepted: + rev1, rev2 = dlg.getRevisions() + if rev1 == "WORKING": + rev1 = "" + if rev2 == "WORKING": + rev2 = "" + elif revisions: + rev1, rev2 = revisions[0], revisions[1] + else: + rev1, rev2 = "", "" + + output1, error = self.__svnGetFileForRevision(name, rev=rev1) + if error: + E5MessageBox.critical(self.__ui, + self.trUtf8("Subversion Side-by-Side Difference"), + error) + return + name1 = "{0} (rev. {1})".format(name, rev1 and rev1 or ".") + + if rev2: + output2, error = self.__svnGetFileForRevision(name, rev=rev2) + if error: + E5MessageBox.critical(self.__ui, + self.trUtf8("Subversion Side-by-Side Difference"), + error) + return + name2 = "{0} (rev. {1})".format(name, rev2) + else: + try: + f1 = open(name, "r", encoding="utf-8") + output2 = f1.read() + f1.close() + name2 = name + except IOError: + E5MessageBox.critical(self.__ui, + self.trUtf8("Subversion Side-by-Side Difference"), + self.trUtf8("""<p>The file <b>{0}</b> could not be read.</p>""") + .format(name)) + return + + if self.sbsDiff is None: + from UI.CompareDialog import CompareDialog + self.sbsDiff = CompareDialog() + self.sbsDiff.show() + self.sbsDiff.compare(output1, output2, name1, name2) + + def svnLogBrowser(self, path, isFile=False): """ Public method used to browse the log of a file/directory from the Subversion repository. @param path file/directory name to show the log of (string) + @param isFile flag indicating log for a file is to be shown (boolean) """ from .SvnLogBrowserDialog import SvnLogBrowserDialog - self.logBrowser = SvnLogBrowserDialog(self) + self.logBrowser = SvnLogBrowserDialog(self, isFile=isFile) self.logBrowser.show() self.logBrowser.start(path)
--- a/Plugins/ViewManagerPlugins/Tabview/Tabview.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/ViewManagerPlugins/Tabview/Tabview.py Mon Aug 12 22:21:53 2013 +0200 @@ -178,7 +178,7 @@ self.rightCornerWidget = QWidget(self) self.rightCornerWidgetLayout = QHBoxLayout(self.rightCornerWidget) - self.rightCornerWidgetLayout.setMargin(0) + self.rightCornerWidgetLayout.setContentsMargins(0, 0, 0, 0) self.rightCornerWidgetLayout.setSpacing(0) self.__navigationMenu = QMenu(self)
--- a/Plugins/WizardPlugins/PyRegExpWizard/PyRegExpWizardCharactersDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/WizardPlugins/PyRegExpWizard/PyRegExpWizardCharactersDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -61,7 +61,7 @@ self.singlesBoxLayout = QVBoxLayout(self.singlesBox) self.singlesBoxLayout.setObjectName("singlesBoxLayout") self.singlesBoxLayout.setSpacing(6) - self.singlesBoxLayout.setMargin(6) + self.singlesBoxLayout.setContentsMargins(6, 6, 6, 6) self.singlesBox.setLayout(self.singlesBoxLayout) self.singlesView = QScrollArea(self.singlesBox) self.singlesView.setObjectName("singlesView") @@ -71,14 +71,14 @@ self.singlesView.setWidget(self.singlesItemsBox) self.singlesItemsBox.setObjectName("singlesItemsBox") self.singlesItemsBoxLayout = QVBoxLayout(self.singlesItemsBox) - self.singlesItemsBoxLayout.setMargin(6) + self.singlesItemsBoxLayout.setContentsMargins(6, 6, 6, 6) self.singlesItemsBoxLayout.setSpacing(6) self.singlesItemsBox.setLayout(self.singlesItemsBoxLayout) self.singlesEntries = [] self.__addSinglesLine() hlayout0 = QHBoxLayout() - hlayout0.setMargin(0) + hlayout0.setContentsMargins(0, 0, 0, 0) hlayout0.setSpacing(6) hlayout0.setObjectName("hlayout0") self.moreSinglesButton = QPushButton(self.trUtf8("Additional Entries"), @@ -94,7 +94,7 @@ self.rangesBoxLayout = QVBoxLayout(self.rangesBox) self.rangesBoxLayout.setObjectName("rangesBoxLayout") self.rangesBoxLayout.setSpacing(6) - self.rangesBoxLayout.setMargin(6) + self.rangesBoxLayout.setContentsMargins(6, 6, 6, 6) self.rangesBox.setLayout(self.rangesBoxLayout) self.rangesView = QScrollArea(self.rangesBox) self.rangesView.setObjectName("rangesView") @@ -104,14 +104,14 @@ self.rangesView.setWidget(self.rangesItemsBox) self.rangesItemsBox.setObjectName("rangesItemsBox") self.rangesItemsBoxLayout = QVBoxLayout(self.rangesItemsBox) - self.rangesItemsBoxLayout.setMargin(6) + self.rangesItemsBoxLayout.setContentsMargins(6, 6, 6, 6) self.rangesItemsBoxLayout.setSpacing(6) self.rangesItemsBox.setLayout(self.rangesItemsBoxLayout) self.rangesEntries = [] self.__addRangesLine() hlayout1 = QHBoxLayout() - hlayout1.setMargin(0) + hlayout1.setContentsMargins(0, 0, 0, 0) hlayout1.setSpacing(6) hlayout1.setObjectName("hlayout1") self.moreRangesButton = QPushButton(self.trUtf8("Additional Entries"), @@ -129,7 +129,7 @@ """ hbox = QWidget(self.singlesItemsBox) hboxLayout = QHBoxLayout(hbox) - hboxLayout.setMargin(0) + hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(6) hbox.setLayout(hboxLayout) cb1 = QComboBox(hbox) @@ -165,7 +165,7 @@ """ hbox = QWidget(self.rangesItemsBox) hboxLayout = QHBoxLayout(hbox) - hboxLayout.setMargin(0) + hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(6) hbox.setLayout(hboxLayout) cb1 = QComboBox(hbox)
--- a/Plugins/WizardPlugins/PyRegExpWizard/PyRegExpWizardDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/WizardPlugins/PyRegExpWizard/PyRegExpWizardDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -651,7 +651,7 @@ self.setSizeGripEnabled(True) self.__layout = QVBoxLayout(self) - self.__layout.setMargin(0) + self.__layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__layout) self.cw = PyRegExpWizardWidget(self, fromEric)
--- a/Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardCharactersDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardCharactersDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -87,7 +87,7 @@ self.singlesBoxLayout = QVBoxLayout(self.singlesBox) self.singlesBoxLayout.setObjectName("singlesBoxLayout") self.singlesBoxLayout.setSpacing(6) - self.singlesBoxLayout.setMargin(6) + self.singlesBoxLayout.setContentsMargins(6, 6, 6, 6) self.singlesBox.setLayout(self.singlesBoxLayout) self.singlesView = QScrollArea(self.singlesBox) self.singlesView.setObjectName("singlesView") @@ -98,14 +98,14 @@ self.singlesItemsBox.setObjectName("singlesItemsBox") self.singlesItemsBox.setMinimumWidth(1000) self.singlesItemsBoxLayout = QVBoxLayout(self.singlesItemsBox) - self.singlesItemsBoxLayout.setMargin(6) + self.singlesItemsBoxLayout.setContentsMargins(6, 6, 6, 6) self.singlesItemsBoxLayout.setSpacing(6) self.singlesItemsBox.setLayout(self.singlesItemsBoxLayout) self.singlesEntries = [] self.__addSinglesLine() hlayout0 = QHBoxLayout() - hlayout0.setMargin(0) + hlayout0.setContentsMargins(0, 0, 0, 0) hlayout0.setSpacing(6) hlayout0.setObjectName("hlayout0") self.moreSinglesButton = QPushButton(self.trUtf8("Additional Entries"), @@ -121,7 +121,7 @@ self.rangesBoxLayout = QVBoxLayout(self.rangesBox) self.rangesBoxLayout.setObjectName("rangesBoxLayout") self.rangesBoxLayout.setSpacing(6) - self.rangesBoxLayout.setMargin(6) + self.rangesBoxLayout.setContentsMargins(6, 6, 6, 6) self.rangesBox.setLayout(self.rangesBoxLayout) self.rangesView = QScrollArea(self.rangesBox) self.rangesView.setObjectName("rangesView") @@ -132,14 +132,14 @@ self.rangesItemsBox.setObjectName("rangesItemsBox") self.rangesItemsBox.setMinimumWidth(1000) self.rangesItemsBoxLayout = QVBoxLayout(self.rangesItemsBox) - self.rangesItemsBoxLayout.setMargin(6) + self.rangesItemsBoxLayout.setContentsMargins(6, 6, 6, 6) self.rangesItemsBoxLayout.setSpacing(6) self.rangesItemsBox.setLayout(self.rangesItemsBoxLayout) self.rangesEntries = [] self.__addRangesLine() hlayout1 = QHBoxLayout() - hlayout1.setMargin(0) + hlayout1.setContentsMargins(0, 0, 0, 0) hlayout1.setSpacing(6) hlayout1.setObjectName("hlayout1") self.moreRangesButton = QPushButton(self.trUtf8("Additional Entries"), @@ -403,7 +403,7 @@ """ hbox = QWidget(self.singlesItemsBox) hboxLayout = QHBoxLayout(hbox) - hboxLayout.setMargin(0) + hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(6) hbox.setLayout(hboxLayout) cb1 = QComboBox(hbox) @@ -447,7 +447,7 @@ """ hbox = QWidget(self.rangesItemsBox) hboxLayout = QHBoxLayout(hbox) - hboxLayout.setMargin(0) + hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(6) hbox.setLayout(hboxLayout) cb1 = QComboBox(hbox)
--- a/Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/WizardPlugins/QRegExpWizard/QRegExpWizardDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -632,7 +632,7 @@ self.setSizeGripEnabled(True) self.__layout = QVBoxLayout(self) - self.__layout.setMargin(0) + self.__layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__layout) self.cw = QRegExpWizardWidget(self, fromEric)
--- a/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardCharactersDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardCharactersDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -67,7 +67,7 @@ self.singlesBoxLayout = QVBoxLayout(self.singlesBox) self.singlesBoxLayout.setObjectName("singlesBoxLayout") self.singlesBoxLayout.setSpacing(6) - self.singlesBoxLayout.setMargin(6) + self.singlesBoxLayout.setContentsMargins(6, 6, 6, 6) self.singlesBox.setLayout(self.singlesBoxLayout) self.singlesView = QScrollArea(self.singlesBox) self.singlesView.setObjectName("singlesView") @@ -78,14 +78,14 @@ self.singlesItemsBox.setObjectName("singlesItemsBox") self.singlesItemsBox.setMinimumWidth(1000) self.singlesItemsBoxLayout = QVBoxLayout(self.singlesItemsBox) - self.singlesItemsBoxLayout.setMargin(6) + self.singlesItemsBoxLayout.setContentsMargins(6, 6, 6, 6) self.singlesItemsBoxLayout.setSpacing(6) self.singlesItemsBox.setLayout(self.singlesItemsBoxLayout) self.singlesEntries = [] self.__addSinglesLine() hlayout0 = QHBoxLayout() - hlayout0.setMargin(0) + hlayout0.setContentsMargins(0, 0, 0, 0) hlayout0.setSpacing(6) hlayout0.setObjectName("hlayout0") self.moreSinglesButton = QPushButton(self.trUtf8("Additional Entries"), @@ -101,7 +101,7 @@ self.rangesBoxLayout = QVBoxLayout(self.rangesBox) self.rangesBoxLayout.setObjectName("rangesBoxLayout") self.rangesBoxLayout.setSpacing(6) - self.rangesBoxLayout.setMargin(6) + self.rangesBoxLayout.setContentsMargins(6, 6, 6, 6) self.rangesBox.setLayout(self.rangesBoxLayout) self.rangesView = QScrollArea(self.rangesBox) self.rangesView.setObjectName("rangesView") @@ -112,14 +112,14 @@ self.rangesItemsBox.setObjectName("rangesItemsBox") self.rangesItemsBox.setMinimumWidth(1000) self.rangesItemsBoxLayout = QVBoxLayout(self.rangesItemsBox) - self.rangesItemsBoxLayout.setMargin(6) + self.rangesItemsBoxLayout.setContentsMargins(6, 6, 6, 6) self.rangesItemsBoxLayout.setSpacing(6) self.rangesItemsBox.setLayout(self.rangesItemsBoxLayout) self.rangesEntries = [] self.__addRangesLine() hlayout1 = QHBoxLayout() - hlayout1.setMargin(0) + hlayout1.setContentsMargins(0, 0, 0, 0) hlayout1.setSpacing(6) hlayout1.setObjectName("hlayout1") self.moreRangesButton = QPushButton(self.trUtf8("Additional Entries"), @@ -329,7 +329,7 @@ """ hbox = QWidget(self.singlesItemsBox) hboxLayout = QHBoxLayout(hbox) - hboxLayout.setMargin(0) + hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(6) hbox.setLayout(hboxLayout) cb1 = QComboBox(hbox) @@ -373,7 +373,7 @@ """ hbox = QWidget(self.rangesItemsBox) hboxLayout = QHBoxLayout(hbox) - hboxLayout.setMargin(0) + hboxLayout.setContentsMargins(0, 0, 0, 0) hboxLayout.setSpacing(6) hbox.setLayout(hboxLayout) cb1 = QComboBox(hbox)
--- a/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Plugins/WizardPlugins/QRegularExpressionWizard/QRegularExpressionWizardDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -718,7 +718,7 @@ self.setSizeGripEnabled(True) self.__layout = QVBoxLayout(self) - self.__layout.setMargin(0) + self.__layout.setContentsMargins(0, 0, 0, 0) self.setLayout(self.__layout) self.cw = QRegularExpressionWizardWidget(self, fromEric)
--- a/Preferences/ConfigurationDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Preferences/ConfigurationDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -396,7 +396,7 @@ self.resize(900, 650) self.verticalLayout_2 = QVBoxLayout(self) self.verticalLayout_2.setSpacing(6) - self.verticalLayout_2.setMargin(6) + self.verticalLayout_2.setContentsMargins(6, 6, 6, 6) self.verticalLayout_2.setObjectName("verticalLayout_2") self.configSplitter = QSplitter(self) @@ -405,7 +405,7 @@ self.configListWidget = QWidget(self.configSplitter) self.leftVBoxLayout = QVBoxLayout(self.configListWidget) - self.leftVBoxLayout.setMargin(0) + self.leftVBoxLayout.setContentsMargins(0, 0, 0, 0) self.leftVBoxLayout.setSpacing(0) self.leftVBoxLayout.setObjectName("leftVBoxLayout") self.configListFilter = E5ClearableLineEdit(self, @@ -435,7 +435,7 @@ self.emptyPage.setObjectName("emptyPage") self.vboxlayout = QVBoxLayout(self.emptyPage) self.vboxlayout.setSpacing(6) - self.vboxlayout.setMargin(6) + self.vboxlayout.setContentsMargins(6, 6, 6, 6) self.vboxlayout.setObjectName("vboxlayout") spacerItem = QSpacerItem(20, 20, QSizePolicy.Minimum, QSizePolicy.Expanding) self.vboxlayout.addItem(spacerItem) @@ -752,7 +752,7 @@ self.setObjectName(name) self.setModal(modal) self.layout = QVBoxLayout(self) - self.layout.setMargin(0) + self.layout.setContentsMargins(0, 0, 0, 0) self.layout.setSpacing(0) self.cw = ConfigurationWidget(self, fromEric=fromEric,
--- a/Project/Project.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Project/Project.py Mon Aug 12 22:21:53 2013 +0200 @@ -4257,10 +4257,18 @@ return # don't overwrite # build the list of entries - lst = [] + lst_ = [] for key in \ ["SOURCES", "FORMS", "RESOURCES", "TRANSLATIONS", "INTERFACES", "OTHERS"]: - lst.extend(self.pdata[key]) + lst_.extend(self.pdata[key]) + lst = [] + for entry in lst_: + if os.path.isdir(self.getAbsolutePath(entry)): + lst.extend([self.getRelativePath(p) for p in + Utilities.direntries(self.getAbsolutePath(entry), True)]) + continue + else: + lst.append(entry) lst.sort() if "PKGLIST" in lst: lst.remove("PKGLIST") @@ -4272,7 +4280,7 @@ else: newline = self.getEolString() pkglistFile = open(pkglist, "w", encoding="utf-8", newline=newline) - pkglistFile.write("\n".join(lst)) + pkglistFile.write("\n".join([Utilities.fromNativeSeparators(f) for f in lst])) pkglistFile.write("\n") # ensure the file ends with an empty line pkglistFile.close() except IOError as why:
--- a/Project/ProjectTranslationsBrowser.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Project/ProjectTranslationsBrowser.py Mon Aug 12 22:21:53 2013 +0200 @@ -77,11 +77,11 @@ """ project. Several actions can be executed via the context menu.</p>""" )) - self.lreleaseProc = None + self.__lreleaseProcesses = [] + self.__pylupdateProcesses = [] self.lreleaseProcRunning = False - self.pylupdateProc = None self.pylupdateProcRunning = False - self.tmpProject = [] + self.__tmpProjects = [] def _createPopupMenus(self): """ @@ -773,24 +773,26 @@ list[0].replace(os.sep, '/'), "\n", "\n")) pf.close() - self.tmpProject.append(outFile) + self.__tmpProjects.append(outFile) except IOError: E5MessageBox.critical(self, self.trUtf8("Write temporary project file"), self.trUtf8("<p>The temporary project file <b>{0}</b> could not" " be written.</p>").format(outFile)) - self.tmpProject = [] - return False + + if len(self.__tmpProjects) == 0: + return False return True - + def __readStdoutLupdate(self): """ Private slot to handle the readyReadStandardOutput signal of the pylupdate process. """ - if self.pylupdateProc is not None: - self.__readStdout(self.pylupdateProc, '{0}: '.format(self.pylupdate)) + proc = self.sender() + if proc is not None: + self.__readStdout(proc, '{0}: '.format(self.pylupdate)) else: return @@ -799,8 +801,9 @@ Private slot to handle the readyReadStandardOutput signal of the lrelease process. """ - if self.lreleaseProc is not None: - self.__readStdout(self.lreleaseProc, 'lrelease: ') + proc = self.sender() + if proc is not None: + self.__readStdout(proc, 'lrelease: ') else: return @@ -825,8 +828,9 @@ Private slot to handle the readyReadStandardError signal of the pylupdate process. """ - if self.pylupdateProc is not None: - self.__readStderr(self.pylupdateProc, '{0}: '.format(self.pylupdate)) + proc = self.sender() + if proc is not None: + self.__readStderr(proc, '{0}: '.format(self.pylupdate)) else: return @@ -835,8 +839,9 @@ Private slot to handle the readyReadStandardError signal of the lrelease process. """ - if self.lreleaseProc is not None: - self.__readStderr(self.lreleaseProc, 'lrelease: ') + proc = self.sender() + if proc is not None: + self.__readStderr(proc, 'lrelease: ') else: return @@ -874,7 +879,6 @@ @param exitCode exit code of the process (integer) @param exitStatus exit status of the process (QProcess.ExitStatus) """ - self.pylupdateProcRunning = False if exitStatus == QProcess.NormalExit and exitCode == 0: ui = e5App().getObject("UserInterface") if ui.notificationsEnabled(): @@ -891,7 +895,20 @@ E5MessageBox.critical(self, self.trUtf8("Translation file generation"), self.trUtf8("The generation of the translation files (*.ts) has failed.")) - self.pylupdateProc = None + + proc = self.sender() + for index in range(len(self.__pylupdateProcesses)): + if proc == self.__pylupdateProcesses[index][0]: + try: + self.__tmpProjects.remove(self.__pylupdateProcesses[index][1]) + os.remove(self.__pylupdateProcesses[index][1]) + except EnvironmentError: + pass + del self.__pylupdateProcesses[index] + break + if not self.__pylupdateProcesses: + # all done + self.pylupdateProcRunning = False def __generateTSFile(self, noobsolete=False, generateAll=True): """ @@ -933,6 +950,7 @@ return # generate a minimal temporary projectfile suitable for pylupdate + self.__tmpProjects = [] if self.project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2", "Python3"]: ok = self.__writeTempProjectFile(langs, [".py"]) else: @@ -953,8 +971,9 @@ else: return - for tempProjectFile in self.tmpProject: - self.pylupdateProc = QProcess() + self.__pylupdateProcesses = [] + for tempProjectFile in self.__tmpProjects[:]: + proc = QProcess() args = [] if noobsolete: @@ -963,16 +982,16 @@ args.append('-verbose') path, filename = os.path.split(tempProjectFile) args.append(filename) - self.pylupdateProc.setWorkingDirectory(os.path.join(self.project.ppath, path)) - self.pylupdateProc.finished.connect(self.__generateTSFileDone) - self.pylupdateProc.readyReadStandardOutput.connect(self.__readStdoutLupdate) - self.pylupdateProc.readyReadStandardError.connect(self.__readStderrLupdate) + proc.setWorkingDirectory(os.path.join(self.project.ppath, path)) + proc.finished.connect(self.__generateTSFileDone) + proc.readyReadStandardOutput.connect(self.__readStdoutLupdate) + proc.readyReadStandardError.connect(self.__readStderrLupdate) - self.pylupdateProc.start(self.pylupdate, args) - procStarted = self.pylupdateProc.waitForStarted(5000) + proc.start(self.pylupdate, args) + procStarted = proc.waitForStarted() if procStarted: self.pylupdateProcRunning = True - self.pylupdateProc.waitForFinished(10000) + self.__pylupdateProcesses.append((proc, tempProjectFile)) else: E5MessageBox.critical(self, self.trUtf8('Process Generation Error'), @@ -980,13 +999,12 @@ 'Could not start {0}.<br>' 'Ensure that it is in the search path.' ).format(self.pylupdate)) - # cleanup - try: - for fn in self.tmpProject: - os.remove(fn) - except EnvironmentError: - pass - self.tmpProject = [] + # cleanup + try: + self.__tmpProjects.remove(tempProjectFile) + os.remove(tempProjectFile) + except EnvironmentError: + pass def __generateAll(self): """ @@ -1054,13 +1072,21 @@ E5MessageBox.critical(self, self.trUtf8("Translation file release"), self.trUtf8("The release of the translation files (*.qm) has failed.")) - self.lreleaseProc = None - try: - os.remove(self.tmpProject) - except EnvironmentError: - pass - self.tmpProject = None - self.project.checkLanguageFiles() + + proc = self.sender() + for index in range(len(self.__lreleaseProcesses)): + if proc == self.__lreleaseProcesses[index][0]: + try: + self.__tmpProjects.remove(self.__lreleaseProcesses[index][1]) + os.remove(self.__lreleaseProcesses[index][1]) + except EnvironmentError: + pass + del self.__lreleaseProcesses[index] + break + if not self.__lreleaseProcesses: + # all done + self.lreleaseProcRunning = False + self.project.checkLanguageFiles() def __releaseTSFile(self, generateAll=False): """ @@ -1087,6 +1113,7 @@ return # generate a minimal temporary projectfile suitable for lrelease + self.__tmpProjects = [] if self.project.pdata["PROGLANGUAGE"][0] in ["Python", "Python2", "Python3"]: ok = self.__writeTempProjectFile(langs, [".py"]) else: @@ -1094,9 +1121,6 @@ if not ok: return - self.lreleaseProc = QProcess() - args = [] - if self.project.getProjectType() in \ ["Qt4", "Qt4C", "PyQt5", "PyQt5C", "E4Plugin", "PySide", "PySideC"]: lrelease = os.path.join( @@ -1107,24 +1131,38 @@ if Utilities.isWindowsPlatform(): lrelease = lrelease + '.exe' - args.append('-verbose') - args.append(self.tmpProject) - self.lreleaseProc.setWorkingDirectory(self.project.ppath) - self.lreleaseProc.finished.connect(self.__releaseTSFileDone) - self.lreleaseProc.readyReadStandardOutput.connect(self.__readStdoutLrelease) - self.lreleaseProc.readyReadStandardError.connect(self.__readStderrLrelease) - - self.lreleaseProc.start(lrelease, args) - procStarted = self.lreleaseProc.waitForStarted(5000) - if procStarted: - self.lreleaseProcRunning = True - else: - E5MessageBox.critical(self, - self.trUtf8('Process Generation Error'), - self.trUtf8( - '<p>Could not start lrelease.<br>' - 'Ensure that it is available as <b>{0}</b>.</p>' - ).format(lrelease)) + self.__lreleaseProcesses = [] + for tempProjectFile in self.__tmpProjects[:]: + proc = QProcess() + args = [] + + args.append('-verbose') + path, filename = os.path.split(tempProjectFile) + args.append(filename) + proc.setWorkingDirectory(os.path.join(self.project.ppath, path)) + proc.finished.connect(self.__releaseTSFileDone) + proc.readyReadStandardOutput.connect(self.__readStdoutLrelease) + proc.readyReadStandardError.connect(self.__readStderrLrelease) + + proc.start(lrelease, args) + procStarted = proc.waitForStarted() + if procStarted: + self.lreleaseProcRunning = True + self.__lreleaseProcesses.append((proc, tempProjectFile)) + else: + E5MessageBox.critical(self, + self.trUtf8('Process Generation Error'), + self.trUtf8( + '<p>Could not start lrelease.<br>' + 'Ensure that it is available as <b>{0}</b>.</p>' + ).format(lrelease)) + + # cleanup + try: + self.__tmpProjects.remove(tempProjectFile) + os.remove(tempProjectFile) + except EnvironmentError: + pass def __releaseSelected(self): """
--- a/SqlBrowser/SqlConnectionWidget.py Mon Aug 12 19:41:53 2013 +0200 +++ b/SqlBrowser/SqlConnectionWidget.py Mon Aug 12 22:21:53 2013 +0200 @@ -36,7 +36,7 @@ super(SqlConnectionWidget, self).__init__(parent) layout = QVBoxLayout(self) - layout.setMargin(0) + layout.setContentsMargins(0, 0, 0, 0) self.__connectionTree = QTreeWidget(self) self.__connectionTree.setObjectName("connectionTree")
--- a/Templates/TemplateMultipleVariablesDialog.py Mon Aug 12 19:41:53 2013 +0200 +++ b/Templates/TemplateMultipleVariablesDialog.py Mon Aug 12 22:21:53 2013 +0200 @@ -28,7 +28,7 @@ super(TemplateMultipleVariablesDialog, self).__init__(parent) self.TemplateMultipleVariablesDialogLayout = QVBoxLayout(self) - self.TemplateMultipleVariablesDialogLayout.setMargin(6) + self.TemplateMultipleVariablesDialogLayout.setContentsMargins(6, 6, 6, 6) self.TemplateMultipleVariablesDialogLayout.setSpacing(6) self.TemplateMultipleVariablesDialogLayout.setObjectName( "TemplateMultipleVariablesDialogLayout") @@ -45,7 +45,7 @@ self.top = QWidget(self) self.variablesView.setWidget(self.top) self.grid = QGridLayout(self.top) - self.grid.setMargin(0) + self.grid.setContentsMargins(0, 0, 0, 0) self.grid.setSpacing(6) self.top.setLayout