Add functools.lru_cache(None) decorator at groupBoxSequence call

Signed-off-by: Loren Eteval <loren.eteval@proton.me>
This commit is contained in:
Loren Eteval
2025-11-27 22:35:51 +08:00
parent bc3cda0c59
commit a9ddfcebf7
7 changed files with 35 additions and 25 deletions
+27 -25
View File
@@ -27,6 +27,8 @@ from PySide6.QtWidgets import *
from typing import Callable, Sequence
import functools
__all__ = [
'GuiEditorItemTextInput',
'GuiEditorItemTextSpinBox',
@@ -237,7 +239,7 @@ class GuiEditorWidget(GuiEditorItemFactory):
def containerSequence(self) -> Sequence[GuiEditorItemWidgetContainer]:
raise NotImplementedError
def inputToFactory(self, config: ConfigFactory) -> bool:
def inputToFactory(self, config: dict) -> bool:
modified = False
for container in self._containers:
@@ -250,7 +252,7 @@ class GuiEditorWidget(GuiEditorItemFactory):
return modified
def factoryToInput(self, config: ConfigFactory):
def factoryToInput(self, config: dict):
for container in self._containers:
try:
container.factoryToInput(config)
@@ -278,17 +280,15 @@ class GuiEditorWidgetQGroupBox(GuiEditorWidget, AppQGroupBox):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
formLayout = QFormLayout()
formLayout.setFormAlignment(QtCore.Qt.AlignmentFlag.AlignLeft)
formLayout.setFieldGrowthPolicy(
QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow
)
layout = QFormLayout()
layout.setFormAlignment(QtCore.Qt.AlignmentFlag.AlignLeft)
layout.setFieldGrowthPolicy(QFormLayout.FieldGrowthPolicy.ExpandingFieldsGrow)
for container in self._containers:
formLayout.addRow(*container.widgets())
layout.addRow(*container.widgets())
page = QWidget()
page.setLayout(formLayout)
page.setLayout(layout)
# Align
self._widget = QStackedWidget()
@@ -299,18 +299,12 @@ class GuiEditorWidgetQGroupBox(GuiEditorWidget, AppQGroupBox):
self.setLayout(vboxLayout)
# layout = QFormLayout()
#
# for container in self._containers:
# layout.addRow(*container.widgets())
#
# self.setLayout(layout)
class GuiEditorWidgetQDialog(GuiEditorItemFactory, AppQDialog):
def __init__(self, *args, **kwargs):
tabText = kwargs.pop('tabText', '')
tabTranslatable = kwargs.pop('tabTranslatable', False)
style = kwargs.pop('style', 'grid')
super().__init__(*args, **kwargs)
@@ -322,11 +316,7 @@ class GuiEditorWidgetQDialog(GuiEditorItemFactory, AppQDialog):
self.tabCentralWidget = QWidget()
self.tabCentralWidgetLayout = QGridLayout(self.tabCentralWidget)
self.groupBoxes = self.groupBoxSequence()
for index, groupBox in enumerate(self.groupBoxes):
# TODO: Layout
self.tabCentralWidgetLayout.addWidget(groupBox, index // 2, index % 2)
self.setGroupBoxStyle(style)
self.tabCentralWidget.setLayout(self.tabCentralWidgetLayout)
@@ -348,9 +338,21 @@ class GuiEditorWidgetQDialog(GuiEditorItemFactory, AppQDialog):
self.setLayout(layout)
@functools.lru_cache(None)
def groupBoxSequence(self) -> Sequence[GuiEditorWidgetQGroupBox]:
raise NotImplementedError
def setGroupBoxStyle(self, style: str):
if style == 'grid':
for index, groupBox in enumerate(self.groupBoxSequence()):
self.tabCentralWidgetLayout.addWidget(groupBox, index // 2, index % 2)
elif style == 'landscape':
for index, groupBox in enumerate(self.groupBoxSequence()):
self.tabCentralWidgetLayout.addWidget(groupBox, 0, index)
elif style == 'portrait':
for index, groupBox in enumerate(self.groupBoxSequence()):
self.tabCentralWidgetLayout.addWidget(groupBox, index, 0)
def setTabText(self, text: str):
self.tabWidget.setTabText(0, text)
@@ -358,14 +360,14 @@ class GuiEditorWidgetQDialog(GuiEditorItemFactory, AppQDialog):
self.accepted.disconnect()
self.rejected.disconnect()
def inputToFactory(self, config: ConfigFactory) -> bool:
def inputToFactory(self, config: dict) -> bool:
modified = False
for groupBox in self.groupBoxes:
for groupBox in self.groupBoxSequence():
modified |= groupBox.inputToFactory(config)
return modified
def factoryToInput(self, config: ConfigFactory):
for groupBox in self.groupBoxes:
def factoryToInput(self, config: dict):
for groupBox in self.groupBoxSequence():
groupBox.factoryToInput(config)
+2
View File
@@ -27,6 +27,7 @@ from PySide6.QtGui import *
from PySide6.QtWidgets import *
import logging
import functools
__all__ = ['GuiHysteria1']
@@ -316,6 +317,7 @@ class GuiHysteria1(GuiEditorWidgetQDialog):
self.setTabText(Protocol.Hysteria1.value)
@functools.lru_cache(None)
def groupBoxSequence(self):
return [
GuiHy1GroupBoxBasic(),
+2
View File
@@ -27,6 +27,7 @@ from PySide6.QtGui import *
from PySide6.QtWidgets import *
import logging
import functools
__all__ = ['GuiHysteria2']
@@ -456,6 +457,7 @@ class GuiHysteria2(GuiEditorWidgetQDialog):
self.setTabText(Protocol.Hysteria2.value)
@functools.lru_cache(None)
def groupBoxSequence(self):
return [
GuiHy2GroupBoxBasic(),
+1
View File
@@ -194,6 +194,7 @@ class GuiShadowsocks(GuiEditorWidgetQDialog):
self.setTabText(Protocol.Shadowsocks.value)
@functools.lru_cache(None)
def groupBoxSequence(self):
return [
GuiSSGroupBoxBasic(),
+1
View File
@@ -143,6 +143,7 @@ class GuiTrojan(GuiEditorWidgetQDialog):
self.setTabText(Protocol.Trojan.value)
@functools.lru_cache(None)
def groupBoxSequence(self):
return [
GuiTrojanGroupBoxBasic(),
+1
View File
@@ -263,6 +263,7 @@ class GuiVLESS(GuiEditorWidgetQDialog):
self.setTabText(Protocol.VLESS.value)
@functools.lru_cache(None)
def groupBoxSequence(self):
return [
GuiVLESSGroupBoxBasic(),
+1
View File
@@ -264,6 +264,7 @@ class GuiVMess(GuiEditorWidgetQDialog):
self.setTabText(Protocol.VMess.value)
@functools.lru_cache(None)
def groupBoxSequence(self):
return [
GuiVMessGroupBoxBasic(),