eric6/Plugins/VcsPlugins/vcsMercurial/ShelveExtension/HgShelveBrowserDialog.py

Wed, 13 Jan 2021 17:46:13 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 13 Jan 2021 17:46:13 +0100
changeset 7971
ff2971513d6d
parent 7923
91e843545d9a
child 8143
2c730d5fd177
permissions
-rw-r--r--

Mercurial: completed more code cleanup.

3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
7923
91e843545d9a Updated copyright for 2021.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7771
diff changeset
3 # Copyright (c) 2014 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
4543
2e6a880670e9 Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3909
diff changeset
4 #
2e6a880670e9 Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3909
diff changeset
5
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing Mercurial shelve browser dialog.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
7370
5fb53279f2df Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
10 from PyQt5.QtCore import pyqtSlot, Qt, QPoint
7257
c4d0cac9b5c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
11 from PyQt5.QtWidgets import (
c4d0cac9b5c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
12 QWidget, QDialogButtonBox, QTreeWidgetItem, QAbstractButton, QMenu,
7370
5fb53279f2df Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
13 QHeaderView, QApplication
7257
c4d0cac9b5c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
14 )
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
16 from E5Gui.E5OverrideCursor import E5OverrideCursor
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
17
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18 from .Ui_HgShelveBrowserDialog import Ui_HgShelveBrowserDialog
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
20
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21 class HgShelveBrowserDialog(QWidget, Ui_HgShelveBrowserDialog):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
22 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 Class implementing Mercurial shelve browser dialog.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 NameColumn = 0
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 AgeColumn = 1
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 MessageColumn = 2
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 def __init__(self, vcs, parent=None):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
31 Constructor
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 @param vcs reference to the vcs object
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 @param parent parent widget (QWidget)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 """
3484
645c12de6b0c Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3306
diff changeset
36 super(HgShelveBrowserDialog, self).__init__(parent)
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 self.setupUi(self)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
39 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
40 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 self.__position = QPoint()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 self.__fileStatisticsRole = Qt.UserRole
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.__totalStatisticsRole = Qt.UserRole + 1
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.shelveList.header().setSortIndicator(0, Qt.AscendingOrder)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49 self.refreshButton = self.buttonBox.addButton(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.tr("&Refresh"), QDialogButtonBox.ActionRole)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.refreshButton.setToolTip(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.tr("Press to refresh the list of shelves"))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.refreshButton.setEnabled(False)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 self.vcs = vcs
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 self.__hgClient = vcs.getClient()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__resetUI()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 self.__contextMenu = QMenu()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__unshelveAct = self.__contextMenu.addAction(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 self.tr("Restore selected shelve"), self.__unshelve)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
62 self.__deleteAct = self.__contextMenu.addAction(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
63 self.tr("Delete selected shelves"), self.__deleteShelves)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
64 self.__contextMenu.addAction(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.tr("Delete all shelves"), self.__cleanupShelves)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
66
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
67 def closeEvent(self, e):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
69 Protected slot implementing a close event handler.
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
70
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 @param e close event (QCloseEvent)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
72 """
7370
5fb53279f2df Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
73 if self.__hgClient.isExecuting():
5fb53279f2df Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
74 self.__hgClient.cancel()
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
75
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 self.__position = self.pos()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 e.accept()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 def show(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 Public slot to show the dialog.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 if not self.__position.isNull():
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 self.move(self.__position)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 self.__resetUI()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87
3484
645c12de6b0c Merge with default branch.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents: 3306
diff changeset
88 super(HgShelveBrowserDialog, self).show()
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
90 def __resetUI(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
91 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
92 Private method to reset the user interface.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
93 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 self.shelveList.clear()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 def __resizeColumnsShelves(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 Private method to resize the shelve list columns.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100 self.shelveList.header().resizeSections(QHeaderView.ResizeToContents)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.shelveList.header().setStretchLastSection(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 def __generateShelveEntry(self, name, age, message, fileStatistics,
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 totals):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 Private method to generate the shelve items.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 @param name name of the shelve (string)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
109 @param age age of the shelve (string)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
110 @param message shelve message (string)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 @param fileStatistics per file change statistics (tuple of
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 four strings with file name, number of changes, number of
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 added lines and number of deleted lines)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 @param totals overall statistics (tuple of three strings with
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115 number of changed files, number of added lines and number
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 of deleted lines)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
118 itm = QTreeWidgetItem(self.shelveList, [name, age, message])
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
119 itm.setData(0, self.__fileStatisticsRole, fileStatistics)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
120 itm.setData(0, self.__totalStatisticsRole, totals)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 def __getShelveEntries(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
124 Private method to retrieve the list of shelves.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
125 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 QApplication.processEvents()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self.buf = []
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.errors.clear()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.intercept = False
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134
3302
e92f0dd51979 Removed the Mercurial support for a command options dialog and added useable global options to the Mercurial config page.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3297
diff changeset
135 args = self.vcs.initCommand("shelve")
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136 args.append("--list")
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 args.append("--stat")
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138
7771
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
139 with E5OverrideCursor():
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
140 out, err = self.__hgClient.runcommand(args)
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
141 self.buf = out.splitlines(True)
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
142 if err:
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
143 self.__showError(err)
787a6b3f8c9f Optimized the use of Waiting Cursors by using a specialized context manager class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7370
diff changeset
144 self.__processBuffer()
7370
5fb53279f2df Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
145 self.__finish()
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
7971
ff2971513d6d Mercurial: completed more code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
147 def start(self):
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 Public slot to start the hg shelve command.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.errorGroup.hide()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152 QApplication.processEvents()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154 self.activateWindow()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.raise_()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
156
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
157 self.shelveList.clear()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
158 self.__started = True
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
159 self.__getShelveEntries()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
160
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 def __finish(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
163 Private slot called when the process finished or the user pressed
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
164 the button.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
165 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
166 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
167 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(False)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
168 self.buttonBox.button(QDialogButtonBox.Close).setDefault(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 self.refreshButton.setEnabled(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 def __processBuffer(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
173 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 Private method to process the buffered output of the hg shelve command.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 lastWasFileStats = False
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 firstLine = True
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 itemData = {}
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 for line in self.buf:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 if firstLine:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 name, line = line.split("(", 1)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 age, message = line.split(")", 1)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 itemData["name"] = name.strip()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 itemData["age"] = age.strip()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 itemData["message"] = message.strip()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 itemData["files"] = []
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 firstLine = False
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 elif '|' in line:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 # file stats: foo.py | 3 ++-
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 file, changes = line.strip().split("|", 1)
3306
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
191 if changes.strip().endswith(("+", "-")):
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
192 total, addDelete = changes.strip().split(None, 1)
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
193 additions = str(addDelete.count("+"))
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
194 deletions = str(addDelete.count("-"))
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
195 else:
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
196 total = changes.strip()
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
197 additions = '0'
0a4e5082cbc6 Last changes to the Mercurial shelve extension interface.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3302
diff changeset
198 deletions = '0'
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 itemData["files"].append((file, total, additions, deletions))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 lastWasFileStats = True
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 elif lastWasFileStats:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 # summary line
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 # 2 files changed, 15 insertions(+), 1 deletions(-)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 total, added, deleted = line.strip().split(",", 2)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 total = total.split()[0]
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 added = added.split()[0]
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 deleted = deleted.split()[0]
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 itemData["summary"] = (total, added, deleted)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
209
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 self.__generateShelveEntry(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 itemData["name"], itemData["age"], itemData["message"],
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 itemData["files"], itemData["summary"])
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
213
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
214 lastWasFileStats = False
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 firstLine = True
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 itemData = {}
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
217
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
218 self.__resizeColumnsShelves()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
219
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
220 if self.__started:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
221 self.shelveList.setCurrentItem(self.shelveList.topLevelItem(0))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 self.__started = False
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 def __showError(self, out):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
225 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 Private slot to show some error.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228 @param out error to be shown (string)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 self.errorGroup.show()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
231 self.errors.insertPlainText(out)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 self.errors.ensureCursorVisible()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @pyqtSlot(QAbstractButton)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 def on_buttonBox_clicked(self, button):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 Private slot called by a button of the button box clicked.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 @param button button that was clicked (QAbstractButton)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 if button == self.buttonBox.button(QDialogButtonBox.Close):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 self.close()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 elif button == self.buttonBox.button(QDialogButtonBox.Cancel):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 self.cancelled = True
7370
5fb53279f2df Mercurial: removed some old code dealing with using the hg commandline executable instead of the command server.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
245 self.__hgClient.cancel()
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 elif button == self.refreshButton:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 self.on_refreshButton_clicked()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249 @pyqtSlot(QTreeWidgetItem, QTreeWidgetItem)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 def on_shelveList_currentItemChanged(self, current, previous):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 Private slot called, when the current item of the shelve list changes.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @param current reference to the new current item (QTreeWidgetItem)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 @param previous reference to the old current item (QTreeWidgetItem)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 self.statisticsList.clear()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 if current:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 for dataSet in current.data(0, self.__fileStatisticsRole):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 QTreeWidgetItem(self.statisticsList, list(dataSet))
3908
3c5699886961 Little improvement to the Shelve Browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
261 self.statisticsList.header().resizeSections(
3c5699886961 Little improvement to the Shelve Browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
262 QHeaderView.ResizeToContents)
3c5699886961 Little improvement to the Shelve Browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
263 self.statisticsList.header().setStretchLastSection(True)
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 totals = current.data(0, self.__totalStatisticsRole)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 self.filesLabel.setText(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 self.tr("%n file(s) changed", None, int(totals[0])))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 self.insertionsLabel.setText(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
269 self.tr("%n line(s) inserted", None, int(totals[1])))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 self.deletionsLabel.setText(
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 self.tr("%n line(s) deleted", None, int(totals[2])))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 else:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.filesLabel.setText("")
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 self.insertionsLabel.setText("")
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 self.deletionsLabel.setText("")
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 @pyqtSlot(QPoint)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 def on_shelveList_customContextMenuRequested(self, pos):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 """
3591
2f2a4a76dd22 Corrected a bunch of source docu issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
280 Private slot to show the context menu of the shelve list.
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 @param pos position of the mouse pointer (QPoint)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 selectedItemsCount = len(self.shelveList.selectedItems())
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 self.__unshelveAct.setEnabled(selectedItemsCount == 1)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 self.__deleteAct.setEnabled(selectedItemsCount > 0)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
288 self.__contextMenu.popup(self.mapToGlobal(pos))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 @pyqtSlot()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 def on_refreshButton_clicked(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 Private slot to refresh the list of shelves.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 self.buttonBox.button(QDialogButtonBox.Close).setEnabled(False)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 self.buttonBox.button(QDialogButtonBox.Cancel).setEnabled(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 self.buttonBox.button(QDialogButtonBox.Cancel).setDefault(True)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 self.refreshButton.setEnabled(False)
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300
7971
ff2971513d6d Mercurial: completed more code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
301 self.start()
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 def __unshelve(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 Private slot to restore the selected shelve of changes.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 itm = self.shelveList.selectedItems()[0]
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 if itm is not None:
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 name = itm.text(self.NameColumn)
7971
ff2971513d6d Mercurial: completed more code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
310 self.vcs.getExtensionObject("shelve").hgUnshelve(shelveName=name)
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 self.on_refreshButton_clicked()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 def __deleteShelves(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 Private slot to delete the selected shelves.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 shelveNames = []
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 for itm in self.shelveList.selectedItems():
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
319 shelveNames.append(itm.text(self.NameColumn))
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
320 if shelveNames:
7257
c4d0cac9b5c9 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
321 self.vcs.getExtensionObject("shelve").hgDeleteShelves(
7971
ff2971513d6d Mercurial: completed more code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
322 shelveNames=shelveNames)
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323 self.on_refreshButton_clicked()
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
325 def __cleanupShelves(self):
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
326 """
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
327 Private slot to delete all shelves.
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
328 """
7971
ff2971513d6d Mercurial: completed more code cleanup.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
329 self.vcs.getExtensionObject("shelve").hgCleanupShelves()
3297
7b7e8124fb51 Continued implementing support for the Mercurial Shelve extension.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
330 self.on_refreshButton_clicked()

eric ide

mercurial