src/eric7/MultiProject/MultiProjectBrowser.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11090
f5f5f5803935
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11006
diff changeset
3 # Copyright (c) 2008 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the multi project browser.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
10 import glob
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
11 import os
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
12
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
13 from PyQt6.QtCore import Qt
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
14 from PyQt6.QtWidgets import QDialog, QMenu, QTreeWidget, QTreeWidgetItem
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
15
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
16 from eric7.EricGui import EricPixmapCache
9473
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
17 from eric7.EricWidgets import EricMessageBox
3f23dbf37dbe Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9413
diff changeset
18 from eric7.EricWidgets.EricApplication import ericApp
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
19
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
20 from .MultiProjectProjectMeta import MultiProjectProjectMeta
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
21
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
22
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
23 class MultiProjectBrowser(QTreeWidget):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
25 Class implementing the multi project browser.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
26 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
27
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
28 ProjectFileNameRole = Qt.ItemDataRole.UserRole
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
29 ProjectUidRole = Qt.ItemDataRole.UserRole + 1
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
30
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
31 def __init__(self, multiProject, project, parent=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
32 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
33 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
34
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2404
diff changeset
35 @param multiProject reference to the multi project object
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
36 @type MultiProject
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
37 @param project reference to the project object
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
38 @type Project
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
39 @param parent parent widget
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
40 @type QWidget
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
42 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43 self.multiProject = multiProject
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
44 self.project = project
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
45
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
46 self.setWindowIcon(EricPixmapCache.getIcon("eric"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47 self.setAlternatingRowColors(True)
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
48 self.setHeaderHidden(True)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
49 self.setItemsExpandable(False)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
50 self.setRootIsDecorated(False)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
51 self.setSortingEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
52
2099
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
53 self.__openingProject = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
55 self.multiProject.newMultiProject.connect(self.__newMultiProject)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
56 self.multiProject.multiProjectOpened.connect(self.__multiProjectOpened)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
57 self.multiProject.multiProjectClosed.connect(self.__multiProjectClosed)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
58 self.multiProject.projectDataChanged.connect(self.__projectDataChanged)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
59 self.multiProject.projectAdded.connect(self.__projectAdded)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
60 self.multiProject.projectRemoved.connect(self.__projectRemoved)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
61
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
62 self.project.projectOpened.connect(self.__projectOpened)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
63 self.project.projectClosed.connect(self.__projectClosed)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
64
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
65 self.__createPopupMenu()
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
66 self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
458
1695e7a2db54 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 55
diff changeset
67 self.customContextMenuRequested.connect(self.__contextMenuRequested)
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 486
diff changeset
68 self.itemActivated.connect(self.__openItem)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
69
3830
70831a7beb3f Fixed an issue with the enabled state of the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
70 self.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
71
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
72 ###########################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
73 ## Slot handling methods below
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
74 ###########################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
75
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
76 def __newMultiProject(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
77 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
78 Private slot to handle the creation of a new multi project.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 self.clear()
3830
70831a7beb3f Fixed an issue with the enabled state of the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
81 self.setEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
82
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
83 def __multiProjectOpened(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 Private slot to handle the opening of a multi project.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
86 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 for project in self.multiProject.getProjects():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88 self.__addProject(project)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
89
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
90 self.sortItems(0, Qt.SortOrder.AscendingOrder)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
91
3830
70831a7beb3f Fixed an issue with the enabled state of the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
92 self.setEnabled(True)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
93
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 def __multiProjectClosed(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
95 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
96 Private slot to handle the closing of a multi project.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
97 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
98 self.clear()
3830
70831a7beb3f Fixed an issue with the enabled state of the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3656
diff changeset
99 self.setEnabled(False)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
100
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
101 def __projectAdded(self, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
102 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 Private slot to handle the addition of a project to the multi project.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
104
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
105 @param project reference to the project metadata
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
106 @type MultiProjectProjectMeta
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.__addProject(project)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
109 self.sortItems(0, Qt.SortOrder.AscendingOrder)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
110
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
111 def __projectRemoved(self, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
112 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113 Private slot to handle the removal of a project from the multi project.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
114
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
115 @param project reference to the project metadata
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
116 @type MultiProjectProjectMeta
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
117 """
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
118 itm = self.__findProjectItem(project)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
119 if itm:
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
120 parent = itm.parent()
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
121 parent.removeChild(itm)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
122 del itm
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
123 if parent.childCount() == 0:
5616
adcffadf4962 Reworked some __IGNORE_WARNING__ comments to be more specific.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
124 top = self.takeTopLevelItem(self.indexOfTopLevelItem(parent))
adcffadf4962 Reworked some __IGNORE_WARNING__ comments to be more specific.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5389
diff changeset
125 # __IGNORE_WARNING__
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
126 del top
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 def __projectDataChanged(self, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 Private slot to handle the change of a project of the multi project.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
131
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
132 @param project reference to the project metadata
10428
a071d4065202 Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10414
diff changeset
133 @type MultiProjectProjectMeta
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 """
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
135 itm = self.__findProjectItem(project)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
136 if itm:
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
137 parent = itm.parent()
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
138 if parent.text(0) != project.category:
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
139 self.__projectRemoved(project)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
140 self.__addProject(project)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
141 else:
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
142 self.__setItemData(itm, project)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
143
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
144 self.sortItems(0, Qt.SortOrder.AscendingOrder)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
145
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
146 def __projectOpened(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 Private slot to handle the opening of a project.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 """
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
150 projectfile = self.project.getProjectFile()
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
151 project = MultiProjectProjectMeta(
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
152 name="",
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
153 file=projectfile,
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
154 uid="",
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
155 )
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
156 itm = self.__findProjectItem(project)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
157 if itm:
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
158 font = itm.font(0)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
159 font.setBold(True)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
160 itm.setFont(0, font)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
161
5314
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
162 def __projectClosed(self):
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
163 """
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
164 Private slot to handle the closing of a project.
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
165 """
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
166 for topIndex in range(self.topLevelItemCount()):
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
167 topItem = self.topLevelItem(topIndex)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
168 for childIndex in range(topItem.childCount()):
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
169 childItem = topItem.child(childIndex)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
170 font = childItem.font(0)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
171 font.setBold(False)
76013775e623 Changed the way the currently opened project is highlighted in the multi project browser.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4631
diff changeset
172 childItem.setFont(0, font)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
173
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
174 def __contextMenuRequested(self, coord):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 Private slot to show the context menu.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
177
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
178 @param coord the position of the mouse pointer
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
179 @type QPoint
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 itm = self.itemAt(coord)
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
182 if itm is None or itm.parent() is None:
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
183 self.__clearRemovedBackAct.setEnabled(
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
184 self.multiProject.hasRemovedProjects()
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
185 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self.__backMenu.popup(self.mapToGlobal(coord))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 else:
10412
883e4bc9bd07 Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10410
diff changeset
188 self.__clearRemovedAct.setEnabled(self.multiProject.hasRemovedProjects())
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 self.__menu.popup(self.mapToGlobal(coord))
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
190
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
191 def __openItem(self, itm=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 Private slot to open a project.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
194
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
195 @param itm reference to the project item to be opened
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
196 @type QTreeWidgetItem
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 if itm is None:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 itm = self.currentItem()
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
200 if itm is None or itm.parent() is None:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
202
2099
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
203 if not self.__openingProject:
5889
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
204 filename = itm.data(0, MultiProjectBrowser.ProjectFileNameRole)
2099
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
205 if filename:
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
206 self.__openingProject = True
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
207 self.multiProject.openProject(filename)
afde0e9110f7 Implemented guards against double activation of list entries.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 1509
diff changeset
208 self.__openingProject = False
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
210 ###########################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
211 ## Private methods below
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
212 ###########################################################################
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
213
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
214 def __findCategoryItem(self, category):
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
215 """
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
216 Private method to find the item for a category.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
218 @param category category to search for
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
219 @type str
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
220 @return reference to the category item or None, if there is
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
221 no such item
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
222 @rtype QTreeWidgetItem or None
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
223 """
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
224 if category == "":
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
225 category = self.tr("Not categorized")
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
226 for index in range(self.topLevelItemCount()):
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
227 itm = self.topLevelItem(index)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
228 if itm.text(0) == category:
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
229 return itm
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
230
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
231 return None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
232
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
233 def __addProject(self, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
234 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 Private method to add a project to the list.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
236
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
237 @param project reference to the project metadata
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
238 @type MultiProjectProjectMeta
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 """
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
240 parent = self.__findCategoryItem(project.category)
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
241 if parent is None:
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
242 if project.category:
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
243 parent = QTreeWidgetItem(self, [project.category])
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
244 else:
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
245 parent = QTreeWidgetItem(self, [self.tr("Not categorized")])
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
246 parent.setExpanded(True)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
247 itm = QTreeWidgetItem(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 self.__setItemData(itm, project)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
249
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 def __setItemData(self, itm, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 Private method to set the data of a project item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
253
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
254 @param itm reference to the item to be set
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
255 @type QTreeWidgetItem
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
256 @param project reference to the project metadata
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
257 @type MultiProjectProjectMeta
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 """
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
259 itm.setText(0, project.name)
10503
6a37b6ac3928 Renamed some modules/variables/settings to get rid (mostly) of inappropriate words.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
260 if project.main:
9971
773ad1f1ed22 Performed some 'ethical' changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9653
diff changeset
261 itm.setIcon(0, EricPixmapCache.getIcon("mainProject"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 else:
9413
80c06d472826 Changed the eric7 import statements to include the package name (i.e. eric7) in order to not fiddle with sys.path.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
263 itm.setIcon(0, EricPixmapCache.getIcon("empty"))
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
264 itm.setToolTip(0, project.file)
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
265 itm.setData(0, MultiProjectBrowser.ProjectFileNameRole, project.file)
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
266 itm.setData(0, MultiProjectBrowser.ProjectUidRole, project.uid)
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
267
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
268 if project.removed:
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
269 itm.setText(0, self.tr("{0} (removed)").format(itm.text(0)))
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
270 font = itm.font(0)
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
271 font.setItalic(True)
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
272 itm.setFont(0, font)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 def __findProjectItem(self, project):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 Private method to search a specific project item.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
277
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
278 @param project reference to the project metadata
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
279 @type MultiProjectProjectMeta
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
280 @return reference to the item or None
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
281 @rtype QTreeWidgetItem
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
282 """
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
283 if project.uid:
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
284 compareData = project.uid
5889
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
285 compareRole = MultiProjectBrowser.ProjectUidRole
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
286 else:
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
287 compareData = project.file
5889
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
288 compareRole = MultiProjectBrowser.ProjectFileNameRole
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
289
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
290 for topIndex in range(self.topLevelItemCount()):
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
291 topItm = self.topLevelItem(topIndex)
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
292 for childIndex in range(topItm.childCount()):
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
293 itm = topItm.child(childIndex)
5889
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
294 data = itm.data(0, compareRole)
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
295 if data == compareData:
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
296 return itm
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
297
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
298 return None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
299
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 def __removeProject(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 Private method to handle the Remove context menu entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
303 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 itm = self.currentItem()
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
305 if itm is not None and itm.parent() is not None:
5889
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
306 uid = itm.data(0, MultiProjectBrowser.ProjectUidRole)
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
307 if uid:
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
308 self.multiProject.removeProject(uid)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
309
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
310 def __deleteProject(self):
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
311 """
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
312 Private method to handle the Delete context menu entry.
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
313 """
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
314 itm = self.currentItem()
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
315 if itm is not None and itm.parent() is not None:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
316 projectFile = itm.data(0, MultiProjectBrowser.ProjectFileNameRole)
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
317 projectPath = os.path.dirname(projectFile)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
318
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
319 if self.project.getProjectPath() == projectPath:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
320 EricMessageBox.warning(
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
321 self,
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
322 self.tr("Delete Project"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
323 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
324 """The current project cannot be deleted."""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
325 """ Please close it first."""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
326 ),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
327 )
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
328 else:
8047
b5594178c7fa Made some more JSON file related changes and exported some dark styles in the new file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7923
diff changeset
329 projectFiles = glob.glob(os.path.join(projectPath, "*.epj"))
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
330 if not projectFiles:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
331 # Oops, that should not happen; play it save
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
332 res = False
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
333 elif len(projectFiles) == 1:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
334 res = EricMessageBox.yesNo(
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
335 self,
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
336 self.tr("Delete Project"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
337 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
338 """<p>Shall the project <b>{0}</b> (Path:"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
339 """ {1}) really be deleted?</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
340 ).format(itm.text(0), projectPath),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
341 )
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
342 else:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8318
diff changeset
343 res = EricMessageBox.yesNo(
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
344 self,
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
345 self.tr("Delete Project"),
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
346 self.tr(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
347 """<p>Shall the project <b>{0}</b> (Path:"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
348 """ {1}) really be deleted?</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349 """<p><b>Warning:</b> It contains <b>{2}</b>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
350 """ sub-projects.</p>"""
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
351 ).format(itm.text(0), projectPath, len(projectFiles)),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
352 )
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
353 if res:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
354 for subprojectFile in projectFiles:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
355 # remove all sub-projects before deleting the directory
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
356 if subprojectFile != projectFile:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
357 projectData = {
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
358 "name": "",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
359 "file": subprojectFile,
10503
6a37b6ac3928 Renamed some modules/variables/settings to get rid (mostly) of inappropriate words.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
360 "main": False,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
361 "description": "",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
362 "category": "",
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
363 "uid": "",
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
364 }
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
365 pitm = self.__findProjectItem(projectData)
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
366 if pitm:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
367 uid = pitm.data(0, MultiProjectBrowser.ProjectUidRole)
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
368 if uid:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
369 self.multiProject.removeProject(uid)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
370
6652
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
371 uid = itm.data(0, MultiProjectBrowser.ProjectUidRole)
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
372 if uid:
dfc89403b426 MultiProject, MultiProjectBrowser: added capability to delete a project from disk.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6645
diff changeset
373 self.multiProject.deleteProject(uid)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
374
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
375 def __showProjectProperties(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
376 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 Private method to show the data of a project entry.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 """
9482
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
379 from .AddProjectDialog import AddProjectDialog
a2bc06a54d9d Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9473
diff changeset
380
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
381 itm = self.currentItem()
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
382 if itm is not None and itm.parent() is not None:
5889
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
383 uid = itm.data(0, MultiProjectBrowser.ProjectUidRole)
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
384 if uid:
092d06e0193f Fixed some weaknesses in the multi project code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5616
diff changeset
385 project = self.multiProject.getProject(uid)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 if project is not None:
3197
4103c8013c36 Added support for the categorisation of projects to multi projects and changed the multi project file format.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
387 dlg = AddProjectDialog(
11006
a671918232f3 Modified modal dialog usage to always include a valid parent (needed for Wayland).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10595
diff changeset
388 parent=self,
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
389 project=project,
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
390 categories=self.multiProject.getCategories(),
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
391 )
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8047
diff changeset
392 if dlg.exec() == QDialog.DialogCode.Accepted:
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
393 project = dlg.getProjectMetadata()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
394 self.multiProject.changeProjectProperties(project)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
395
2317
ac7ffbf5b36b Extended the context menus of the multi project browser to be able to add projects this way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
396 def __addNewProject(self):
ac7ffbf5b36b Extended the context menus of the multi project browser to be able to add projects this way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
397 """
ac7ffbf5b36b Extended the context menus of the multi project browser to be able to add projects this way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
398 Private method to add a new project entry.
ac7ffbf5b36b Extended the context menus of the multi project browser to be able to add projects this way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
399 """
6653
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
400 itm = self.currentItem()
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
401 if itm is not None:
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
402 if itm.parent() is None:
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
403 # current item is a category item
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
404 category = itm.text(0)
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
405 else:
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
406 category = itm.parent().text(0)
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
407 else:
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
408 category = ""
ac800d2700d2 MultiProjectBrowser: use category of current entry to preset the category of a project to be added.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6652
diff changeset
409 self.multiProject.addNewProject(category=category)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
410
6836
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
411 def __copyProject(self):
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
412 """
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
413 Private method to copy the selected project on disk.
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
414 """
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
415 itm = self.currentItem()
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
416 if itm and itm.parent():
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
417 # it is a project item and not a category
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
418 uid = itm.data(0, MultiProjectBrowser.ProjectUidRole)
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
419 if uid:
93b8c77502e0 Multi Project: added capability to the multi project browser to copy a project.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6674
diff changeset
420 self.multiProject.copyProject(uid)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
421
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
422 def __createPopupMenu(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
423 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
424 Private method to create the popup menu.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
425 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
426 self.__menu = QMenu(self)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
427 self.__menu.addAction(self.tr("Open"), self.__openItem)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
428 self.__menu.addAction(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
429 self.tr("Remove from Multi Project"), self.__removeProject
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
430 )
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
431 self.__menu.addAction(self.tr("Delete from Disk"), self.__deleteProject)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
432 self.__menu.addAction(self.tr("Properties"), self.__showProjectProperties)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 self.__menu.addSeparator()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434 self.__menu.addAction(self.tr("Add Project..."), self.__addNewProject)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
435 self.__menu.addAction(self.tr("Copy Project..."), self.__copyProject)
2317
ac7ffbf5b36b Extended the context menus of the multi project browser to be able to add projects this way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
436 self.__menu.addSeparator()
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
437 self.__clearRemovedAct = self.__menu.addAction(
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
438 self.tr("Clear Out"), self.multiProject.clearRemovedProjects
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
439 )
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
440 self.__menu.addSeparator()
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3160
diff changeset
441 self.__menu.addAction(self.tr("Configure..."), self.__configure)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
442
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
443 self.__backMenu = QMenu(self)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
444 self.__backMenu.addAction(self.tr("Add Project..."), self.__addNewProject)
2317
ac7ffbf5b36b Extended the context menus of the multi project browser to be able to add projects this way.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
445 self.__backMenu.addSeparator()
10410
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
446 self.__clearRemovedBackAct = self.__backMenu.addAction(
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
447 self.tr("Clear Out"), self.multiProject.clearRemovedProjects
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
448 )
da82156f44e9 Multiproject
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9971
diff changeset
449 self.__backMenu.addSeparator()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
450 self.__backMenu.addAction(self.tr("Configure..."), self.__configure)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
451
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
452 def __configure(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
453 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 Private method to open the configuration dialog.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
455 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
456 ericApp().getObject("UserInterface").showPreferences("multiProjectPage")

eric ide

mercurial