eric7/VCS/StatusWidget.py

Wed, 22 Sep 2021 18:20:06 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Wed, 22 Sep 2021 18:20:06 +0200
branch
eric7
changeset 8622
149d51870ce8
parent 8621
8c9f41115c04
child 8624
5192a2592324
permissions
-rw-r--r--

Finished implementing the VCS status widget for the left side.

8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
3 # Copyright (c) 2021 Detlev Offenbach <detlev@die-offenbachs.de>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing a VCS Status widget for the sidebar/toolbar.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
10 import contextlib
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
11 import os
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
12
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 from PyQt6.QtCore import pyqtSlot, Qt
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14 from PyQt6.QtWidgets import (
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15 QWidget, QVBoxLayout, QHBoxLayout, QLabel, QSizePolicy, QListView,
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
16 QListWidget, QListWidgetItem, QToolButton, QAbstractItemView, QMenu
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
17 )
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
18
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
19 from EricWidgets.EricApplication import ericApp
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
20 from EricWidgets import EricMessageBox
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
21
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
22 import Preferences
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
23 import UI.PixmapCache
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
24 import Utilities
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27 class StatusWidget(QWidget):
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
29 Class implementing a VCS Status widget for the sidebar/toolbox.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
30 """
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
31 StatusDataRole = Qt.ItemDataRole.UserRole + 1
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
32
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
33 def __init__(self, project, viewmanager, parent=None):
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
34 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
35 Constructor
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
36
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
37 @param project reference to the project object
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
38 @type Project
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
39 @param viewmanager reference to the viewmanager object
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
40 @type ViewManager
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 @param parent reference to the parent widget (defaults to None)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 @type QWidget (optional)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
44 super().__init__(parent)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 self.setObjectName("VcsStatusWidget")
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.__project = project
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
48 self.__vm = viewmanager
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
50 self.__layout = QVBoxLayout()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 self.__layout.setObjectName("MainLayout")
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 self.__layout.setContentsMargins(0, 3, 0, 0)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 self.__topLayout = QHBoxLayout()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54 self.__topLayout.setObjectName("topLayout")
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
56 # Create the top row
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
57 self.__infoLabel = QLabel(self)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
58 self.__infoLabel.setSizePolicy(
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
59 QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 self.__topLayout.addWidget(self.__infoLabel)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
62 self.__commitToggleButton = QToolButton(self)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
63 self.__commitToggleButton.setIcon(UI.PixmapCache.getIcon("check"))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
64 self.__commitToggleButton.setToolTip(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
65 self.tr("Press to toggle the commit markers"))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
66 self.__commitToggleButton.clicked.connect(self.__toggleCheckMark)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
67 self.__topLayout.addWidget(self.__commitToggleButton)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
68
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
69 self.__commitButton = QToolButton(self)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
70 self.__commitButton.setIcon(UI.PixmapCache.getIcon("vcsCommit"))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
71 self.__commitButton.setToolTip(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
72 self.tr("Press to commit the marked entries"))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
73 self.__commitButton.clicked.connect(self.__commit)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
74 self.__topLayout.addWidget(self.__commitButton)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
75
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
76 self.__addButton = QToolButton(self)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
77 self.__addButton.setIcon(UI.PixmapCache.getIcon("vcsAdd"))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
78 self.__addButton.setToolTip(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
79 self.tr("Press to add the selected, untracked entries"))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
80 self.__addButton.clicked.connect(self.__addUntracked)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
81 self.__topLayout.addWidget(self.__addButton)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
82
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 self.__reloadButton = QToolButton(self)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__reloadButton.setIcon(UI.PixmapCache.getIcon("reload"))
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
85 self.__reloadButton.setToolTip(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
86 self.tr("Press to reload the status list"))
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 self.__reloadButton.clicked.connect(self.__reload)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__topLayout.addWidget(self.__reloadButton)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
89
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
90 self.__actionsButton = QToolButton(self)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
91 self.__actionsButton.setIcon(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
92 UI.PixmapCache.getIcon("actionsToolButton"))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
93 self.__actionsButton.setToolTip(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
94 self.tr("Select action from menu"))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
95 self.__actionsButton.setPopupMode(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
96 QToolButton.ToolButtonPopupMode.InstantPopup)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
97 self.__topLayout.addWidget(self.__actionsButton)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
98
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
99 self.__layout.addLayout(self.__topLayout)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
100
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 self.__statusList = QListWidget(self)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 self.__statusList.setAlternatingRowColors(True)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 self.__statusList.setSortingEnabled(True)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
104 self.__statusList.setViewMode(QListView.ViewMode.ListMode)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105 self.__statusList.setTextElideMode(Qt.TextElideMode.ElideLeft)
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
106 self.__statusList.setSelectionMode(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
107 QAbstractItemView.SelectionMode.ExtendedSelection)
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
108 self.__statusList.itemSelectionChanged.connect(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
109 self.__updateButtonStates)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
110 self.__statusList.itemDoubleClicked.connect(self.__itemDoubleClicked)
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 self.__layout.addWidget(self.__statusList)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 self.setLayout(self.__layout)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
115 self.__statusIcons = {
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
116 "A": "vcs-added", # added
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
117 "M": "vcs-modified", # modified
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
118 "O": "vcs-removed", # removed
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
119 "R": "vcs-renamed", # renamed
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
120 "U": "vcs-update-required", # update needed
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
121 "Z": "vcs-conflicting", # conflict
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
122 "?": "vcs-untracked", # not tracked
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
123 "!": "vcs-missing", # missing
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
124 }
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
125 self.__statusTexts = {
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
126 "A": self.tr("added"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
127 "M": self.tr("modified"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
128 "O": self.tr("removed"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
129 "R": self.tr("renamed"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
130 "U": self.tr("needs update"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
131 "Z": self.tr("conflict"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
132 "?": self.tr("not tracked"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
133 "!": self.tr("missing"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
134 }
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
135
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
136 self.__initActionsMenu()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
137
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
138 self.__reset()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
139
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140 if self.__project.isOpen():
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.__projectOpened()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142 else:
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 self.__projectClosed()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 self.__project.projectOpened.connect(self.__projectOpened)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146 self.__project.projectClosed.connect(self.__projectClosed)
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
147 self.__project.vcsCommitted.connect(self.__committed)
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 self.__project.vcsStatusMonitorInfo.connect(self.__setInfoText)
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
149 self.__project.vcsStatusMonitorAllData.connect(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
150 self.__processStatusData)
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
152 def __initActionsMenu(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
153 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
154 Private method to initialize the actions menu.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
155 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
156 self.__actionsMenu = QMenu()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
157 self.__actionsMenu.setToolTipsVisible(True)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
158 self.__actionsMenu.aboutToShow.connect(self.__showActionsMenu)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
159
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
160 self.__commitAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
161 UI.PixmapCache.getIcon("vcsCommit"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
162 self.tr("Commit"), self.__commit)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
163 self.__commitAct.setToolTip(self.tr(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
164 "Commit the selected changes"))
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
165 self.__commitSelectAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
166 self.tr("Select all for commit"), self.__commitSelectAll)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
167 self.__commitDeselectAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
168 self.tr("Unselect all from commit"), self.__commitDeselectAll)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
169
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
170 self.__actionsMenu.addSeparator()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
171
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
172 self.__addAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
173 UI.PixmapCache.getIcon("vcsAdd"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
174 self.tr("Add"), self.__addUntracked)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
175 self.__addAct.setToolTip(self.tr(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
176 "Add the selected, untracked entries"))
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
177 self.__addAllAct = self.__actionsMenu.addAction(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
178 self.tr("Add All"), self.__addAllUntracked)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
179 self.__addAllAct.setToolTip(self.tr(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
180 "Add all untracked entries"))
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
181
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
182 self.__actionsMenu.addSeparator()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
183
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
184 self.__diffAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
185 UI.PixmapCache.getIcon("vcsDiff"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
186 self.tr("Differences"), self.__diff)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
187 self.__diffAct.setToolTip(self.tr(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
188 "Shows the differences of the selected entry in a"
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
189 " separate dialog"))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
190 self.__sbsDiffAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
191 UI.PixmapCache.getIcon("vcsSbsDiff"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
192 self.tr("Differences Side-By-Side"), self.__sbsDiff)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
193 self.__sbsDiffAct.setToolTip(self.tr(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
194 "Shows the differences of the selected entry side-by-side in"
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
195 " a separate dialog"))
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
196 self.__diffAllAct = self.__actionsMenu.addAction(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
197 self.tr("All Differences"), self.__diffAll)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
198 self.__diffAllAct.setToolTip(self.tr(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
199 "Shows the differences of all entries in a separate dialog"))
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
200
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
201 self.__actionsMenu.addSeparator()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
202
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
203 self.__revertAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
204 UI.PixmapCache.getIcon("vcsRevert"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
205 self.tr("Revert"), self.__revert)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
206 self.__revertAct.setToolTip(self.tr(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
207 "Reverts the changes of the selected files"))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
208
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
209 self.__actionsMenu.addSeparator()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
210
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
211 self.__forgetAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
212 self.tr("Forget Missing"), self.__forgetMissing)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
213 self.__forgetAct.setToolTip(self.tr(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
214 "Forgets about the selected missing files"))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
215 self.__restoreAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
216 self.tr("Restore Missing"), self.__restoreMissing)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
217 self.__restoreAct.setToolTip(self.tr(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
218 "Restores the selected missing files"))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
219 self.__actionsMenu.addSeparator()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
220
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
221 self.__editAct = self.__actionsMenu.addAction(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
222 UI.PixmapCache.getIcon("open"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
223 self.tr("Edit Conflict"), self.__editConflict)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
224 self.__editAct.setToolTip(self.tr(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
225 "Edit the selected conflicting file"))
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
226 self.__resolvedAct = self.__actionsMenu.addAction(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
227 UI.PixmapCache.getIcon("vcsResolved"),
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
228 self.tr("Conflict Resolved"), self.__conflictResolved)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
229 self.__resolvedAct.setToolTip(self.tr(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
230 "Mark the selected conflicting file as resolved"))
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
231
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
232 self.__actionsButton.setMenu(self.__actionsMenu)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
233
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 @pyqtSlot()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 def __projectOpened(self):
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
237 Private slot to handle the opening of a project.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 self.__reloadButton.setEnabled(True)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
241 @pyqtSlot()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
242 def __projectClosed(self):
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
243 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
244 Private slot to handle the closing of a project.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
245 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
246 self.__infoLabel.setText(self.tr("No project open."))
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.__reloadButton.setEnabled(False)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
250 self.__reset()
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 @pyqtSlot(str)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253 def __setInfoText(self, info):
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 Private slot to set the info label text.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 @param info text to be shown
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 @type str
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 self.__infoLabel.setText(info)
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 @pyqtSlot()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
263 def __reload(self):
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
264 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
265 Private slot to reload the status list.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
266 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 self.__project.checkVCSStatus()
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
269 def __reset(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
270 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
271 Private method to reset the widget to default.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
272 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
273 self.__statusList.clear()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
274
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
275 self.__commitToggleButton.setEnabled(False)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
276 self.__commitButton.setEnabled(False)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
277 self.__addButton.setEnabled(False)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
278
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
279 def __updateButtonStates(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
280 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
281 Private method to set the button states depending on the list state.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
282 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
283 modified = len(self.__getModifiedItems())
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
284 unversioned = len(self.__getSelectedUnversionedItems())
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
285 commitable = len(self.__getCommitableItems())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
286
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
287 self.__commitToggleButton.setEnabled(modified)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
288 self.__commitButton.setEnabled(commitable)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
289 self.__addButton.setEnabled(unversioned)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
290
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
291 @pyqtSlot(dict)
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 def __processStatusData(self, data):
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 """
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 Private slot to process the status data emitted by the project.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296 Each entry of the status data consists of a status flag and and the
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 path relative to the project directory starting with the third column.
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 The known status flags are:
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 <ul>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 <li>"A" path was added but not yet committed</li>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 <li>"M" path has local changes</li>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 <li>"O" path was removed</li>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 <li>"R" path was deleted and then re-added</li>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 <li>"U" path needs an update</li>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 <li>"Z" path contains a conflict</li>
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
306 <li>"?" path is not tracked</li>
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
307 <li>"!" path is missing</li>
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 <li>" " path is back at normal</li>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
309 </ul>
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
311 @param data dictionary containing the status data
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
312 @type dict
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 """
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
314 self.__reset()
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
316 for name, status in data.items():
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
317 if status:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
318 itm = QListWidgetItem(name, self.__statusList)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
319 with contextlib.suppress(KeyError):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
320 itm.setToolTip(self.__statusTexts[status])
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
321 itm.setIcon(UI.PixmapCache.getIcon(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
322 self.__statusIcons[status]))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
323 itm.setData(self.StatusDataRole, status)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
324 if status in "AMOR":
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
325 itm.setFlags(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
326 itm.flags() | Qt.ItemFlag.ItemIsUserCheckable)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
327 itm.setCheckState(Qt.CheckState.Checked)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
328 else:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
329 itm.setFlags(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
330 itm.flags() & ~Qt.ItemFlag.ItemIsUserCheckable)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
331
8619
2dc55ddafc68 Added the forgotten VCS status widget source.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332 self.__statusList.sortItems(Qt.SortOrder.AscendingOrder)
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
333
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
334 self.__updateButtonStates()
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
335
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
336 @pyqtSlot()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
337 def __toggleCheckMark(self):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
338 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
339 Private slot to toggle the check marks.
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
340 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
341 for row in range(self.__statusList.count()):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
342 itm = self.__statusList.item(row)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
343 if (
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
344 itm.flags() & Qt.ItemFlag.ItemIsUserCheckable ==
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
345 Qt.ItemFlag.ItemIsUserCheckable
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
346 ):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
347 if itm.checkState() == Qt.CheckState.Unchecked:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
348 itm.setCheckState(Qt.CheckState.Checked)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
349 else:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
350 itm.setCheckState(Qt.CheckState.Unchecked)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
351
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
352 def __setCheckMark(self, checked):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
353 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
354 Private method to set or unset all check marks.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
355
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
356 @param checked check mark state to be set
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
357 @type bool
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
358 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
359 for row in range(self.__statusList.count()):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
360 itm = self.__statusList.item(row)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
361 if (
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
362 itm.flags() & Qt.ItemFlag.ItemIsUserCheckable ==
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
363 Qt.ItemFlag.ItemIsUserCheckable
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
364 ):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
365 if checked:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
366 itm.setCheckState(Qt.CheckState.Checked)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
367 else:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
368 itm.setCheckState(Qt.CheckState.Unchecked)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
369
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
370 @pyqtSlot()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
371 def __commit(self):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
372 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
373 Private slot to handle the commit button.
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
374 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
375 projectPath = self.__project.getProjectPath()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
376 names = []
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
377
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
378 for row in range(self.__statusList.count()):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
379 itm = self.__statusList.item(row)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
380 if itm.checkState() == Qt.CheckState.Checked:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
381 names.append(os.path.join(projectPath, itm.text()))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
382
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
383 if not names:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
384 EricMessageBox.information(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
385 self,
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
386 self.tr("Commit"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
387 self.tr("""There are no entries selected to be"""
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
388 """ committed."""))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
389 return
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
390
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
391 if Preferences.getVCS("AutoSaveFiles"):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
392 vm = ericApp().getObject("ViewManager")
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
393 for name in names:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
394 vm.saveEditor(name)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
395 vcs = self.__project.getVcs()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
396 vcs and vcs.vcsCommit(names, '')
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
397
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
398 @pyqtSlot()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
399 def __committed(self):
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
400 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
401 Private slot called after the commit has been completed.
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
402 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
403 self.__reload()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
404
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
405 @pyqtSlot()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
406 def __commitSelectAll(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
407 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
408 Private slot to select all entries for commit.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
409 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
410 self.__setCheckMark(True)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
411
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
412 @pyqtSlot()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
413 def __commitDeselectAll(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
414 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
415 Private slot to deselect all entries from commit.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
416 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
417 self.__setCheckMark(False)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
418
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
419 @pyqtSlot()
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
420 def __addUntracked(self, allItems=False):
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
421 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
422 Private slot to add the selected untracked entries.
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
423
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
424 @param allItems flag indicating to show the differences of all files
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
425 (defaults to False)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
426 @type bool (optional)
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
427 """
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
428 projectPath = self.__project.getProjectPath()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
429
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
430 names = [
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
431 os.path.join(projectPath, itm.text())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
432 for itm in self.__getUnversionedItems()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
433 ] if allItems else [
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
434 os.path.join(projectPath, itm.text())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
435 for itm in self.__getSelectedUnversionedItems()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
436 ]
8620
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
437
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
438 if not names:
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
439 EricMessageBox.information(
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
440 self,
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
441 self.tr("Add"),
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
442 self.tr("""There are no unversioned entries"""
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
443 """ available/selected."""))
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
444 return
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
445
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
446 vcs = self.__project.getVcs()
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
447 vcs and vcs.vcsAdd(names)
84f7f7867b5f Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8619
diff changeset
448 self.__reload()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
449
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
450 @pyqtSlot(QListWidgetItem)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
451 def __itemDoubleClicked(self, itm):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
452 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
453 Private slot to handle double clicking an item.
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
454
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
455 @param itm reference to the double clicked item
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
456 @type QListWidgetItem
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
457 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
458 projectPath = self.__project.getProjectPath()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
459
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
460 if itm.data(self.StatusDataRole) in "MZ":
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
461 # modified and conflicting items
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
462 name = os.path.join(projectPath, itm.text())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
463 vcs = self.__project.getVcs()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
464 vcs and vcs.vcsDiff(name)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
465
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
466 ###########################################################################
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
467 ## Menu handling methods
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
468 ###########################################################################
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
469
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
470 def __showActionsMenu(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
471 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
472 Private slot to prepare the actions button menu before it is shown.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
473 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
474 modified = len(self.__getSelectedModifiedItems())
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
475 allModified = len(self.__getModifiedItems())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
476 unversioned = len(self.__getSelectedUnversionedItems())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
477 allUnversioned = len(self.__getUnversionedItems())
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
478 missing = len(self.__getMissingItems())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
479 commitable = len(self.__getCommitableItems())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
480 commitableUnselected = len(self.__getCommitableUnselectedItems())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
481 conflicting = len(self.__getSelectedConflictingItems())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
482
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
483 self.__addAct.setEnabled(unversioned)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
484 self.__addAllAct.setEnabled(allUnversioned)
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
485 self.__diffAct.setEnabled(modified)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
486 self.__sbsDiffAct.setEnabled(modified == 1)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
487 self.__diffAllAct.setEnabled(allModified)
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
488 self.__revertAct.setEnabled(modified)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
489 self.__forgetAct.setEnabled(missing)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
490 self.__restoreAct.setEnabled(missing)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
491 self.__commitAct.setEnabled(commitable)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
492 self.__commitSelectAct.setEnabled(commitableUnselected)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
493 self.__commitDeselectAct.setEnabled(commitable)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
494 self.__editAct.setEnabled(conflicting == 1)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
495 self.__resolvedAct.setEnabled(conflicting)
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
496
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
497 def __getCommitableItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
498 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
499 Private method to retrieve all entries the user wants to commit.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
500
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
501 @return list of all items, the user has checked
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
502 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
503 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
504 commitableItems = []
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
505 for row in range(self.__statusList.count()):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
506 itm = self.__statusList.item(row)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
507 if (
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
508 itm.checkState() == Qt.CheckState.Checked
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
509 ):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
510 commitableItems.append(itm)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
511 return commitableItems
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
512
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
513 def __getCommitableUnselectedItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
514 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
515 Private method to retrieve all entries the user may commit but hasn't
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
516 selected.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
517
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
518 @return list of all items, the user has checked
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
519 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
520 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
521 items = []
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
522 for row in range(self.__statusList.count()):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
523 itm = self.__statusList.item(row)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
524 if (
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
525 (itm.flags() & Qt.ItemFlag.ItemIsUserCheckable ==
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
526 Qt.ItemFlag.ItemIsUserCheckable) and
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
527 itm.checkState() == Qt.CheckState.Unchecked
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
528 ):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
529 items.append(itm)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
530 return items
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
531
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
532 def __getModifiedItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
533 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
534 Private method to retrieve all entries, that have a modified status.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
535
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
536 @return list of all items with a modified status
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
537 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
538 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
539 items = []
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
540 for row in range(self.__statusList.count()):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
541 itm = self.__statusList.item(row)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
542 if itm.data(self.StatusDataRole) in "AMOR":
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
543 items.append(itm)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
544 return items
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
545
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
546 def __getSelectedModifiedItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
547 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
548 Private method to retrieve all selected entries, that have a modified
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
549 status.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
550
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
551 @return list of all selected entries with a modified status
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
552 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
553 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
554 return [itm for itm in self.__statusList.selectedItems()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
555 if itm.data(self.StatusDataRole) in "AMOR"]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
556
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
557 def __getUnversionedItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
558 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
559 Private method to retrieve all entries, that have an unversioned
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
560 status.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
561
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
562 @return list of all items with an unversioned status
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
563 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
564 """
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
565 items = []
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
566 for row in range(self.__statusList.count()):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
567 itm = self.__statusList.item(row)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
568 if itm.data(self.StatusDataRole) == "?":
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
569 items.append(itm)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
570 return items
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
571
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
572 def __getSelectedUnversionedItems(self):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
573 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
574 Private method to retrieve all selected entries, that have an
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
575 unversioned status.
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
576
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
577 @return list of all items with an unversioned status
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
578 @rtype list of QListWidgetItem
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
579 """
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
580 return [itm for itm in self.__statusList.selectedItems()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
581 if itm.data(self.StatusDataRole) == "?"]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
582
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
583 def __getMissingItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
584 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
585 Private method to retrieve all entries, that have a missing status.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
586
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
587 @return list of all items with a missing status
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
588 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
589 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
590 return [itm for itm in self.__statusList.selectedItems()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
591 if itm.data(self.StatusDataRole) == "!"]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
592
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
593 def __getSelectedConflictingItems(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
594 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
595 Private method to retrieve all selected entries, that have a conflict
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
596 status.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
597
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
598 @return list of all selected entries with a conflict status
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
599 @rtype list of QListWidgetItem
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
600 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
601 return [itm for itm in self.__statusList.selectedItems()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
602 if itm.data(self.StatusDataRole) == "Z"]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
603
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
604 @pyqtSlot()
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
605 def __addAllUntracked(self):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
606 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
607 Private slot to handle the Add All action menu entry.
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
608 """
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
609 self.__addUntracked(allItems=True)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
610
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
611 @pyqtSlot()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
612 def __diff(self, allItems=False):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
613 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
614 Private slot to handle the Differences action menu entry.
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
615
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
616 @param allItems flag indicating to show the differences of all files
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
617 (defaults to False)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
618 @type bool (optional)
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
619 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
620 projectPath = self.__project.getProjectPath()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
621
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
622 names = [
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
623 os.path.join(projectPath, itm.text())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
624 for itm in self.__getModifiedItems()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
625 ] if allItems else [
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
626 os.path.join(projectPath, itm.text())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
627 for itm in self.__getSelectedModifiedItems()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
628 ]
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
629 if not names:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
630 EricMessageBox.information(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
631 self,
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
632 self.tr("Differences"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
633 self.tr("""There are no uncommitted changes"""
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
634 """ available/selected."""))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
635 return
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
636
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
637 vcs = self.__project.getVcs()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
638 vcs and vcs.vcsDiff(names)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
639
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
640 @pyqtSlot()
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
641 def __diffAll(self):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
642 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
643 Private slot to handle the All Differences action menu entry.
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
644 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
645 self.__diff(allItems=True)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
646
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
647 @pyqtSlot()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
648 def __sbsDiff(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
649 """
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
650 Private slot to handle the Side-By-Side Differences action menu entry.
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
651 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
652 projectPath = self.__project.getProjectPath()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
653
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
654 names = [os.path.join(projectPath, itm.text())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
655 for itm in self.__getSelectedModifiedItems()]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
656 if not names:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
657 EricMessageBox.information(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
658 self,
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
659 self.tr("Differences Side-By-Side"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
660 self.tr("""There are no uncommitted changes"""
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
661 """ available/selected."""))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
662 return
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
663 elif len(names) > 1:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
664 EricMessageBox.information(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
665 self,
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
666 self.tr("Differences Side-By-Side"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
667 self.tr("""Only one file with uncommitted changes"""
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
668 """ must be selected."""))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
669 return
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
670
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
671 vcs = self.__project.getVcs()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
672 vcs and vcs.vcsSbsDiff(names[0])
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
673
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
674 @pyqtSlot()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
675 def __revert(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
676 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
677 Private slot to handle the Revert action menu entry.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
678 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
679 projectPath = self.__project.getProjectPath()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
680
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
681 names = [os.path.join(projectPath, itm.text())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
682 for itm in self.__getSelectedModifiedItems()]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
683 if not names:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
684 EricMessageBox.information(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
685 self,
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
686 self.tr("Revert"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
687 self.tr("""There are no uncommitted changes"""
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
688 """ available/selected."""))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
689 return
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
690
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
691 vcs = self.__project.getVcs()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
692 vcs and vcs.vcsRevert(names)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
693 self.__reload()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
694
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
695 @pyqtSlot()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
696 def __forgetMissing(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
697 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
698 Private slot to handle the Forget action menu entry.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
699 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
700 projectPath = self.__project.getProjectPath()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
701
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
702 names = [os.path.join(projectPath, itm.text())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
703 for itm in self.__getMissingItems()]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
704 if not names:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
705 EricMessageBox.information(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
706 self,
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
707 self.tr("Forget Missing"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
708 self.tr("""There are no missing entries"""
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
709 """ available/selected."""))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
710 return
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
711
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
712 vcs = self.__project.getVcs()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
713 vcs and vcs.vcsForget(names)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
714 self.__reload()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
715
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
716 @pyqtSlot()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
717 def __restoreMissing(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
718 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
719 Private slot to handle the Restore Missing context menu entry.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
720 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
721 projectPath = self.__project.getProjectPath()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
722
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
723 names = [os.path.join(projectPath, itm.text())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
724 for itm in self.__getMissingItems()]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
725 if not names:
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
726 EricMessageBox.information(
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
727 self,
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
728 self.tr("Revert Missing"),
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
729 self.tr("""There are no missing entries"""
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
730 """ available/selected."""))
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
731 return
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
732
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
733 vcs = self.__project.getVcs()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
734 vcs and vcs.vcsRevert(names)
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
735 self.__reload()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
736
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
737 @pyqtSlot()
8621
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
738 def __editConflict(self):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
739 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
740 Private slot to handle the Edit Conflict action menu entry.
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
741 """
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
742 projectPath = self.__project.getProjectPath()
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
743
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
744 itm = self.__getSelectedConflictingItems()[0]
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
745 filename = os.path.join(projectPath, itm.text())
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
746 if Utilities.MimeTypes.isTextFile(filename):
8c9f41115c04 Continued implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8620
diff changeset
747 self.__vm.getEditor(filename)
8622
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
748
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
749 @pyqtSlot()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
750 def __conflictResolved(self):
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
751 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
752 Private slot to handle the Conflict Resolved action menu entry.
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
753 """
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
754 projectPath = self.__project.getProjectPath()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
755
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
756 names = [os.path.join(projectPath, itm.text())
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
757 for itm in self.__getSelectedConflictingItems()]
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
758 if not names:
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
759 EricMessageBox.information(
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
760 self,
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
761 self.tr("Conflict Resolved"),
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
762 self.tr("""There are no conflicting entries"""
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
763 """ available/selected."""))
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
764 return
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
765
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
766 vcs = self.__project.getVcs()
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
767 vcs and vcs.vcsResolved(names)
149d51870ce8 Finished implementing the VCS status widget for the left side.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8621
diff changeset
768 self.__reload()

eric ide

mercurial