mirror of
https://github.com/LorenEteval/Furious.git
synced 2026-10-02 11:57:55 +03:00
Update EditConfiguration.py
Signed-off-by: Loren Eteval <loren.eteval@proton.me>
This commit is contained in:
@@ -323,7 +323,7 @@ class SaveAsServerAction(Action):
|
||||
# Unchecked?
|
||||
myServerList[myFocusIndex]['config'] = server
|
||||
# Flush row
|
||||
self.parent().normalServerWidget.flushRow(
|
||||
self.parent().serverWidget.flushRow(
|
||||
myFocusIndex, myServerList[myFocusIndex]
|
||||
)
|
||||
|
||||
@@ -881,7 +881,7 @@ class SaveChangeFirst(MessageBox):
|
||||
self.moveToCenter()
|
||||
|
||||
|
||||
class NormalServerHorizontalHeader(HeaderView):
|
||||
class ServerWidgetHorizontalHeader(HeaderView):
|
||||
class SortOrder:
|
||||
Ascending_ = False
|
||||
Descending = True
|
||||
@@ -893,7 +893,7 @@ class NormalServerHorizontalHeader(HeaderView):
|
||||
self.sectionResized.connect(self.handleSectionResized)
|
||||
|
||||
self.sortOrderTable = list(
|
||||
NormalServerHorizontalHeader.SortOrder.Ascending_
|
||||
ServerWidgetHorizontalHeader.SortOrder.Ascending_
|
||||
for i in range(self.parent().columnCount())
|
||||
)
|
||||
|
||||
@@ -936,7 +936,7 @@ class NormalServerHorizontalHeader(HeaderView):
|
||||
|
||||
# Sort it
|
||||
self.parent().ServerList.sort(
|
||||
key=lambda x: NormalServerWidget.HEADER_LABEL_GET_FUNC[clickedIndex](x),
|
||||
key=lambda x: ServerWidget.HEADER_LABEL_GET_FUNC[clickedIndex](x),
|
||||
reverse=self.sortOrderTable[clickedIndex],
|
||||
)
|
||||
|
||||
@@ -987,7 +987,7 @@ class NormalServerHorizontalHeader(HeaderView):
|
||||
self.parent().sectionSizeTable[str(index)] = newSize
|
||||
|
||||
|
||||
class NormalServerVerticalHeader(HeaderView):
|
||||
class ServerWidgetVerticalHeader(HeaderView):
|
||||
def __init__(self, *args, **kwargs):
|
||||
super().__init__(QtCore.Qt.Orientation.Vertical, *args, **kwargs)
|
||||
|
||||
@@ -1001,7 +1001,7 @@ def toJSONMayBeNull(text):
|
||||
return {}
|
||||
|
||||
|
||||
class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
class ServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
# Might be extended in the future
|
||||
HEADER_LABEL = [
|
||||
'Remark',
|
||||
@@ -1059,13 +1059,13 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
self.ScrollList = list([0, 0] for i in range(len(self.ServerList)))
|
||||
|
||||
# Must set before flush all
|
||||
self.setColumnCount(len(NormalServerWidget.HEADER_LABEL))
|
||||
self.setColumnCount(len(ServerWidget.HEADER_LABEL))
|
||||
|
||||
# Flush all data to table
|
||||
self.flushAll()
|
||||
|
||||
# Install custom header
|
||||
self.setHorizontalHeader(NormalServerHorizontalHeader(self))
|
||||
self.setHorizontalHeader(ServerWidgetHorizontalHeader(self))
|
||||
|
||||
# Horizontal header resize mode
|
||||
for index in range(self.columnCount()):
|
||||
@@ -1082,6 +1082,13 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
# Restore horizontal section size
|
||||
self.sectionSizeTable = ujson.loads(APP().ServerWidgetSectionSizeTable)
|
||||
|
||||
# Fill missing value
|
||||
for column in range(self.columnCount()):
|
||||
if self.sectionSizeTable.get(str(column)) is None:
|
||||
self.sectionSizeTable[
|
||||
str(column)
|
||||
] = self.horizontalHeader().defaultSectionSize()
|
||||
|
||||
# Block resize callback
|
||||
self.horizontalHeader().blockSignals(True)
|
||||
|
||||
@@ -1096,19 +1103,19 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
# Leave keys as strings since they will be
|
||||
# loaded as string from json
|
||||
self.sectionSizeTable = {
|
||||
str(row): self.horizontalHeader().defaultSectionSize()
|
||||
for row in range(self.columnCount())
|
||||
str(column): self.horizontalHeader().defaultSectionSize()
|
||||
for column in range(self.columnCount())
|
||||
}
|
||||
|
||||
self.setHorizontalHeaderLabels(
|
||||
list(_(label) for label in NormalServerWidget.HEADER_LABEL)
|
||||
list(_(label) for label in ServerWidget.HEADER_LABEL)
|
||||
)
|
||||
|
||||
for column in range(self.horizontalHeader().count()):
|
||||
self.horizontalHeaderItem(column).setFont(QFont(APP().customFontName))
|
||||
|
||||
# Install custom header
|
||||
self.setVerticalHeader(NormalServerVerticalHeader(self))
|
||||
self.setVerticalHeader(ServerWidgetVerticalHeader(self))
|
||||
|
||||
# Selection
|
||||
self.setSelectionColor(Color.LIGHT_BLUE)
|
||||
@@ -1204,7 +1211,7 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
for column in range(self.columnCount()):
|
||||
oldItem = self.item(row, column)
|
||||
newItem = QTableWidgetItem(
|
||||
NormalServerWidget.HEADER_LABEL_GET_FUNC[column](server)
|
||||
ServerWidget.HEADER_LABEL_GET_FUNC[column](server)
|
||||
)
|
||||
|
||||
if oldItem is None:
|
||||
@@ -1215,7 +1222,10 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
newItem.setFont(oldItem.font())
|
||||
newItem.setForeground(oldItem.foreground())
|
||||
|
||||
if column == 0:
|
||||
if oldItem.textAlignment() != 0:
|
||||
newItem.setTextAlignment(oldItem.textAlignment())
|
||||
|
||||
if ServerWidget.HEADER_LABEL[column] == 'Remark':
|
||||
# Remark is editable
|
||||
newItem.setFlags(
|
||||
QtCore.Qt.ItemFlag.ItemIsEnabled
|
||||
@@ -1232,15 +1242,13 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
|
||||
def flushAll(self):
|
||||
if self.rowCount() == 0:
|
||||
shouldInsertRow = True
|
||||
else:
|
||||
shouldInsertRow = False
|
||||
|
||||
for row, server in enumerate(self.ServerList):
|
||||
if shouldInsertRow:
|
||||
# Should insert row
|
||||
for row, server in enumerate(self.ServerList):
|
||||
self.insertRow(row)
|
||||
|
||||
self.flushRow(row, server)
|
||||
self.flushRow(row, server)
|
||||
else:
|
||||
for row, server in enumerate(self.ServerList):
|
||||
self.flushRow(row, server)
|
||||
|
||||
def saveScrollBarValue(self, index):
|
||||
assert len(self.ScrollList) == len(self.ServerList)
|
||||
@@ -1625,7 +1633,7 @@ class NormalServerWidget(Translatable, SupportConnectedCallback, TableWidget):
|
||||
|
||||
def retranslate(self):
|
||||
self.setHorizontalHeaderLabels(
|
||||
list(_(label) for label in NormalServerWidget.HEADER_LABEL)
|
||||
list(_(label) for label in ServerWidget.HEADER_LABEL)
|
||||
)
|
||||
|
||||
|
||||
@@ -1713,29 +1721,29 @@ class EditConfigurationWidget(MainWindow):
|
||||
self.serverEditorTabWidgetLayout = QVBoxLayout(self.serverEditorTabWidget)
|
||||
self.serverEditorTabWidgetLayout.addWidget(self.plainTextEdit)
|
||||
|
||||
# Advance for Normal Server Widget
|
||||
# Advance for self.serverWidget
|
||||
self.editorTab = QTabWidget(self)
|
||||
# Note: Set tab text later
|
||||
self.editorTab.addTab(self.serverEditorTabWidget, '')
|
||||
|
||||
self.normalServerWidget = NormalServerWidget(parent=self)
|
||||
self.serverWidget = ServerWidget(parent=self)
|
||||
|
||||
# Buttons
|
||||
self.moveUpButton = PushButton(_('Move Up'))
|
||||
self.moveUpButton.clicked.connect(
|
||||
lambda: self.normalServerWidget.moveUpSelectedItem()
|
||||
lambda: self.serverWidget.moveUpSelectedItem()
|
||||
)
|
||||
self.moveDownButton = PushButton(_('Move Down'))
|
||||
self.moveDownButton.clicked.connect(
|
||||
lambda: self.normalServerWidget.moveDownSelectedItem()
|
||||
lambda: self.serverWidget.moveDownSelectedItem()
|
||||
)
|
||||
self.duplicateButton = PushButton(_('Duplicate'))
|
||||
self.duplicateButton.clicked.connect(
|
||||
lambda: self.normalServerWidget.duplicateSelectedItem()
|
||||
lambda: self.serverWidget.duplicateSelectedItem()
|
||||
)
|
||||
self.deleteButton = PushButton(_('Delete'))
|
||||
self.deleteButton.clicked.connect(
|
||||
lambda: self.normalServerWidget.deleteSelectedItem()
|
||||
lambda: self.serverWidget.deleteSelectedItem()
|
||||
)
|
||||
|
||||
# Button Layout
|
||||
@@ -1746,22 +1754,13 @@ class EditConfigurationWidget(MainWindow):
|
||||
self.buttonWidgetLayout.addWidget(self.duplicateButton, 1, 0)
|
||||
self.buttonWidgetLayout.addWidget(self.deleteButton, 1, 1)
|
||||
|
||||
self.normalServerTabWidget = QWidget()
|
||||
self.normalServerTabWidgetLayout = QVBoxLayout(self.normalServerTabWidget)
|
||||
self.normalServerTabWidgetLayout.addWidget(self.normalServerWidget)
|
||||
self.normalServerTabWidgetLayout.addWidget(self.buttonWidget)
|
||||
|
||||
# Note: Reserved for future extension
|
||||
# self.subscriptionWidget = QWidget(parent=self)
|
||||
#
|
||||
# self.subscriptionTabWidget = QWidget()
|
||||
# self.subscriptionTabWidgetLayout = QVBoxLayout(self.subscriptionTabWidget)
|
||||
# self.subscriptionTabWidgetLayout.addWidget(self.subscriptionWidget)
|
||||
self.serverTabWidget = QWidget()
|
||||
self.serverTabWidgetLayout = QVBoxLayout(self.serverTabWidget)
|
||||
self.serverTabWidgetLayout.addWidget(self.serverWidget)
|
||||
self.serverTabWidgetLayout.addWidget(self.buttonWidget)
|
||||
|
||||
self.serverTab = TabWidget(self)
|
||||
self.serverTab.addTab(self.normalServerTabWidget, _('Server'))
|
||||
# Note: Reserved for future extension
|
||||
# self.serverTab.addTab(self.subscriptionTabWidget, '')
|
||||
self.serverTab.addTab(self.serverTabWidget, _('Server'))
|
||||
|
||||
self.splitter = QSplitter(QtCore.Qt.Orientation.Horizontal)
|
||||
self.splitter.addWidget(self.serverTab)
|
||||
@@ -1783,11 +1782,11 @@ class EditConfigurationWidget(MainWindow):
|
||||
NewBlankServerAction(parent=self),
|
||||
Seperator(),
|
||||
SelectAllServerAction(
|
||||
callback=lambda: self.normalServerWidget.selectAll(),
|
||||
callback=lambda: self.serverWidget.selectAll(),
|
||||
parent=self,
|
||||
),
|
||||
Seperator(),
|
||||
ScrollToActivatedServerAction(parent=self.normalServerWidget),
|
||||
ScrollToActivatedServerAction(parent=self.serverWidget),
|
||||
Seperator(),
|
||||
ImportFileAction(parent=self),
|
||||
ImportLinkActionWithHotKey(parent=self),
|
||||
@@ -1889,23 +1888,23 @@ class EditConfigurationWidget(MainWindow):
|
||||
# Sync it
|
||||
ServerStorage.sync()
|
||||
|
||||
row = self.normalServerWidget.rowCount()
|
||||
row = self.serverWidget.rowCount()
|
||||
|
||||
self.normalServerWidget.insertRow(row)
|
||||
self.normalServerWidget.appendScrollBarEntry()
|
||||
self.normalServerWidget.flushRow(row, server)
|
||||
self.serverWidget.insertRow(row)
|
||||
self.serverWidget.appendScrollBarEntry()
|
||||
self.serverWidget.flushRow(row, server)
|
||||
|
||||
item = QTableWidgetItem(str(row + 1))
|
||||
item.setFont(QFont(APP().customFontName))
|
||||
|
||||
if len(self.ServerList) == 1:
|
||||
# The first one. Click it
|
||||
self.normalServerWidget.setCurrentItemByIndex(0)
|
||||
self.serverWidget.setCurrentItemByIndex(0)
|
||||
|
||||
# Try to be user-friendly in some extreme cases
|
||||
if not APP().tray.ConnectAction.isConnected():
|
||||
# Activate automatically
|
||||
self.normalServerWidget.activateItemByIndex(0)
|
||||
self.serverWidget.activateItemByIndex(0)
|
||||
|
||||
def showTabAndSpacesIfNecessary(self):
|
||||
textOption = QTextOption()
|
||||
@@ -1920,25 +1919,25 @@ class EditConfigurationWidget(MainWindow):
|
||||
|
||||
@property
|
||||
def activatedItemIndex(self):
|
||||
return self.normalServerWidget.activatedItemIndex
|
||||
return self.serverWidget.activatedItemIndex
|
||||
|
||||
@property
|
||||
def selectedIndex(self):
|
||||
return self.normalServerWidget.selectedIndex
|
||||
return self.serverWidget.selectedIndex
|
||||
|
||||
@property
|
||||
def rowCount(self):
|
||||
return self.normalServerWidget.rowCount()
|
||||
return self.serverWidget.rowCount()
|
||||
|
||||
@property
|
||||
def currentFocus(self):
|
||||
return self.normalServerWidget.currentFocus
|
||||
return self.serverWidget.currentFocus
|
||||
|
||||
def saveScrollBarValue(self, index):
|
||||
self.normalServerWidget.saveScrollBarValue(index)
|
||||
self.serverWidget.saveScrollBarValue(index)
|
||||
|
||||
def restoreScrollBarValue(self, index):
|
||||
self.normalServerWidget.restoreScrollBarValue(index)
|
||||
self.serverWidget.restoreScrollBarValue(index)
|
||||
|
||||
def questionSave(self):
|
||||
# Save current scroll bar value
|
||||
@@ -1961,7 +1960,7 @@ class EditConfigurationWidget(MainWindow):
|
||||
if choice == MessageBox.ButtonRole.DestructiveRole.value:
|
||||
# Discard
|
||||
self.hide()
|
||||
self.normalServerWidget.setEmptyItem()
|
||||
self.serverWidget.setEmptyItem()
|
||||
self.markAsSaved() # Fake saved
|
||||
|
||||
return True
|
||||
@@ -1995,7 +1994,7 @@ class EditConfigurationWidget(MainWindow):
|
||||
f'{self.geometry().width()},{self.geometry().height()}'
|
||||
)
|
||||
APP().ServerWidgetSectionSizeTable = ujson.dumps(
|
||||
self.normalServerWidget.sectionSizeTable,
|
||||
self.serverWidget.sectionSizeTable,
|
||||
ensure_ascii=False,
|
||||
escape_forward_slashes=False,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user