-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate_gui.py
102 lines (87 loc) · 4.32 KB
/
update_gui.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
from PySide6.QtWidgets import QApplication, QWidget, QPushButton, QProgressBar, QComboBox, QHBoxLayout, QListWidget, QHeaderView, QTableWidget, QVBoxLayout, QTableWidgetItem, QDialog, QScrollArea, QDialogButtonBox
import subprocess
import sys
class Updater(QWidget):
def __init__(self):
super().__init__()
# self.name = plugin_name
self.setWindowTitle("Update")
self.setGeometry(0, 0, 500, 200)
# self.button = QPushButton("Uninstall")
# self.buttonBox.addButton("Uninstall", QDialogButtonBox.ButtonRole.AcceptRole)
# self.buttonBox.addButton("Update to Latest", QDialogButtonBox.ButtonRole.RejectRole)
# self.buttonBox.accepted.connect(self.accept)
# self.buttonBox.centerButtons()
# uninstall_button = QPushButton()
# uninstall_button.addButton("Uninstall", QDialogButtonBox.ButtonRole.AcceptRole)
self.layout = QVBoxLayout()
self.createTable()
self.update_button = QPushButton("Update to Latest")
self.update_button.clicked.connect(self.update_plugin)
# self.test_button = QPushButton("Test")
# self.tableWidget.setCellWidget(1,0, self.buttonBox)
# self.tableWidget.setCellWidget(1, 2, self.update_button)
# self.tableWidget.setCellWidget(1, 1,self.test_button)
# self.test_button.clicked.connect(self.test_plugin)
# message = QLabel("Do you want to uninstall?")
# self.layout.addWidget(message)
self.layout.addWidget(self.tableWidget)
self.layout.addWidget(self.update_button)
# self.layout.addWidget(self.buttonBox)
self.setLayout(self.layout)
def test_plugin(self):
self.tableWidget.setItem(0, 1, QTableWidgetItem("Testing..."))
def update_plugin(self):
if len(self.tag_list) == 0:
print("No versioning")
return
version = self.update_button.text().split()[-1]
if version == "Latest":
version = self.tag_list[0]
print("Updating to version", version)
p = subprocess.Popen(f"git checkout {version} ".split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE)
p.wait()
# print(p.communicate())
# current_tag = self.getVersion()
self.tableWidget.setItem(0, 0, QTableWidgetItem(f"Current Version: {version}"))
print("Updated to version", version)
def version_management(self):
tag_list = []
tags = subprocess.check_output("git tag".split()).decode("utf-8")
for label in tags.split("\n")[:-1]:
tag_list.append(label)
print(tag_list)
return tag_list
def createTable(self):
self.tableWidget = QTableWidget()
row_count = 2
column_count = 3
self.tableWidget.setRowCount(row_count)
self.tableWidget.setColumnCount(column_count)
self.button_dict = {}
current_tag = self.getVersion()
self.tableWidget.setItem(0, 0, QTableWidgetItem(f"Current Version: {current_tag}"))
self.tableWidget.setItem(0, 1, QTableWidgetItem("Available Versions"))
dropdown = QComboBox()
self.tag_list = self.version_management()
self.tag_list.reverse()
dropdown.addItems(self.tag_list)
dropdown.currentTextChanged.connect(self.changeVersion)
self.tableWidget.setCellWidget(0, 2, dropdown)
self.tableWidget.setShowGrid(False)
self.tableWidget.horizontalHeader().setVisible(False)
self.tableWidget.verticalHeader().setVisible(False)
# self.tableWidget.setHorizontalHeaderLabels(['Name', 'Description', 'Version', 'Install'])
self.tableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.ResizeMode.ResizeToContents)
self.tableWidget.horizontalHeader().setSectionResizeMode(1, QHeaderView.ResizeMode.ResizeToContents)
self.tableWidget.horizontalHeader().setSectionResizeMode(2, QHeaderView.ResizeMode.Stretch)
def changeVersion(self, text):
self.update_button.setText(f"Update to {text}")
def getVersion(self):
try:
tag = subprocess.check_output("git describe --tags".split()).decode("utf-8").split("\n")[0]
except:
tag = "0.0.0"
print(tag)
# print(tag)
return tag