diff --git a/LunaTranslator/LunaTranslator/gui/inputdialog.py b/LunaTranslator/LunaTranslator/gui/inputdialog.py index 291f8a2d..95cf2e71 100644 --- a/LunaTranslator/LunaTranslator/gui/inputdialog.py +++ b/LunaTranslator/LunaTranslator/gui/inputdialog.py @@ -1,7 +1,7 @@ import functools from PyQt5.QtWidgets import QDialogButtonBox,QDialog,QHeaderView,QComboBox,QFormLayout,QDoubleSpinBox,QSpinBox,QHBoxLayout,QLineEdit,QFileDialog,QPushButton,QLabel,QTableView,QVBoxLayout from PyQt5.QtCore import Qt,QSize -from PyQt5.QtGui import QStandardItem, QStandardItemModel +from PyQt5.QtGui import QCloseEvent, QStandardItem, QStandardItemModel from PyQt5.QtGui import QColor import qtawesome,importlib @@ -11,18 +11,18 @@ from myutils.utils import makehtml from myutils.wrapper import Singleton @Singleton class autoinitdialog(QDialog): - def __init__(dialog, parent,title,width,lines,_=None ) -> None: + def __init__(self, parent,title,width,lines,_=None ) -> None: super().__init__(parent, Qt.WindowCloseButtonHint) - dialog.setWindowTitle(_TR(title)) - dialog.resize(QSize(width,10)) + self.setWindowTitle(_TR(title)) + self.resize(QSize(width,10)) formLayout = QFormLayout() - dialog.setLayout(formLayout) + self.setLayout(formLayout) regist=[] def save(callback=None): for l in regist: l[0][l[1]]=l[2]() - dialog.close() + self.close() if callback: callback() def openfiledirectory(multi,edit,isdir,filter1='*.*'): @@ -68,7 +68,7 @@ class autoinitdialog(QDialog): lineW.currentIndexChanged.connect(functools.partial(dd.__setitem__,key)) elif line['t']=='okcancel': lineW = QDialogButtonBox(QDialogButtonBox.Ok|QDialogButtonBox.Cancel) - lineW.rejected.connect(dialog.close) + lineW.rejected.connect(self.close) lineW.accepted.connect(functools.partial(save,None if 'callback' not in line else line['callback'])) lineW.button(QDialogButtonBox.Ok).setText(_TR('确定')) @@ -106,7 +106,7 @@ class autoinitdialog(QDialog): formLayout.addRow(_TR(line['l']),lineW) else: formLayout.addRow( lineW) - dialog.show() + self.show() def getsomepath1(parent,title,d,k,label,callback=None,isdir=False,filter1="*.db"): autoinitdialog(parent,title,800,[ @@ -161,34 +161,44 @@ class multicolorset(QDialog): self.show() @Singleton -class postconfigdialog(QDialog): - def __init__(dialog, parent,configdict,title,_=None) -> None: +class postconfigdialog_(QDialog): + def closeEvent(self, a0: QCloseEvent) -> None: + if self.closeevent: + self.button.setFocus() + rows=self.model.rowCount() + newdict={} + for row in range(rows): + if self.model.item(row,0).text()=="": + continue + newdict[(self.model.item(row,0).text())]=(self.model.item(row,1).text()) + self.configdict[self.key]=newdict + def __init__(self, parent,configdict,title) -> None: super().__init__(parent,Qt.WindowCloseButtonHint) - - dialog.setWindowTitle(_TR(title)) - #dialog.setWindowModality(Qt.ApplicationModal) - - formLayout = QVBoxLayout(dialog) # 配置layout + print(title) + self.setWindowTitle(_TR(title)) + #self.setWindowModality(Qt.ApplicationModal) + self.closeevent=False + formLayout = QVBoxLayout(self) # 配置layout key=list(configdict.keys())[0] - lb=QLabel(dialog) + lb=QLabel(self) lb.setText(_TR(key) ) formLayout.addWidget(lb) if type(configdict[key]) in (float,int): - spin=QSpinBox(dialog) + spin=QSpinBox(self) spin.setMinimum(1) spin.setMaximum(100) spin.setValue(configdict[key]) spin.valueChanged.connect(lambda x:configdict.__setitem__(key,x)) formLayout.addWidget(spin) - dialog.resize(QSize(600,1)) + self.resize(QSize(600,1)) elif type(configdict[key])==type({}): - # lines=QTextEdit(dialog) + # lines=QTextEdit(self) # lines.setPlainText('\n'.join(configdict[key])) # lines.textChanged.connect(lambda :configdict.__setitem__(key,lines.toPlainText().split('\n'))) # formLayout.addWidget(lines) - model=QStandardItemModel(len(configdict[key]),1 , dialog) + model=QStandardItemModel(len(configdict[key]),1 , self) row=0 for key1 in ( (configdict[key])): # 2 @@ -200,37 +210,33 @@ class postconfigdialog(QDialog): model.setItem(row, 1, item) row+=1 model.setHorizontalHeaderLabels(_TRL([ '原文内容','替换为'])) - table = QTableView(dialog) + table = QTableView(self) table.setModel(model) table.setWordWrap(False) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) #table.setEditTriggers(QAbstractItemView.NoEditTriggers) #table.clicked.connect(self.show_info) - button=QPushButton(dialog) + button=QPushButton(self) button.setText(_TR('添加行')) def clicked1(): model.insertRow(0,[QStandardItem(''),QStandardItem('')]) button.clicked.connect(clicked1) - button2=QPushButton(dialog) + button2=QPushButton(self) button2.setText(_TR('删除选中行')) def clicked2(): model.removeRow(table.currentIndex().row()) button2.clicked.connect(clicked2) - - def clicked3(_): - button.setFocus() - rows=model.rowCount() - newdict={} - for row in range(rows): - if model.item(row,0).text()=="": - continue - newdict[(model.item(row,0).text())]=(model.item(row,1).text()) - configdict[key]=newdict - dialog.closeEvent=(clicked3) + self.button=button + self.model=model + self.key=key + self.configdict=configdict + self.closeevent=True formLayout.addWidget(table) formLayout.addWidget(button) formLayout.addWidget(button2) - dialog.resize(QSize(600,400)) - dialog.show() - \ No newline at end of file + self.resize(QSize(600,400)) + self.show() + +def postconfigdialog(parent,configdict,title): + postconfigdialog_(parent,configdict,title) \ No newline at end of file diff --git a/LunaTranslator/LunaTranslator/gui/settingpage7.py b/LunaTranslator/LunaTranslator/gui/settingpage7.py index deeb8529..716ee2bc 100644 --- a/LunaTranslator/LunaTranslator/gui/settingpage7.py +++ b/LunaTranslator/LunaTranslator/gui/settingpage7.py @@ -3,7 +3,7 @@ import functools from PyQt5.QtWidgets import QDialog,QLabel ,QLineEdit,QSpinBox,QPushButton ,QTableView, QVBoxLayout,QHBoxLayout,QHeaderView ,QTextEdit,QHBoxLayout,QWidget,QMenu,QAction from PyQt5.QtCore import QSize,Qt,pyqtSignal,QPoint -from PyQt5.QtGui import QStandardItem, QStandardItemModel +from PyQt5.QtGui import QCloseEvent, QStandardItem, QStandardItemModel from traceback import print_exc from myutils.config import globalconfig ,postprocessconfig,noundictconfig,transerrorfixdictconfig,_TR,_TRL,defaultglobalconfig import functools ,gobject @@ -162,15 +162,15 @@ def setTab7_lazy(self) : @Singleton class noundictconfigdialog1(QDialog): - def __init__(dialog,parent,configdict,title,label=[ '原文','翻译'] ,_=None) -> None: + def __init__(self,parent,configdict,title,label=[ '原文','翻译'] ,_=None) -> None: super().__init__(parent,Qt.WindowCloseButtonHint) - dialog.setWindowTitle(_TR(title)) - #dialog.setWindowModality(Qt.ApplicationModal) + self.setWindowTitle(_TR(title)) + #self.setWindowModality(Qt.ApplicationModal) - formLayout = QVBoxLayout(dialog) # 配置layout + formLayout = QVBoxLayout(self) # 配置layout - model=QStandardItemModel(len(list(configdict['dict'].keys())),1 , dialog) + model=QStandardItemModel(len(list(configdict['dict'].keys())),1 , self) row=0 for key in (configdict['dict']): # 2 @@ -180,7 +180,7 @@ class noundictconfigdialog1(QDialog): model.setItem(row, 1, item) row+=1 model.setHorizontalHeaderLabels(_TRL(label)) - table = QTableView(dialog) + table = QTableView(self) table.setModel(model) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) #table.setEditTriggers(QAbstractItemView.NoEditTriggers) @@ -209,46 +209,58 @@ class noundictconfigdialog1(QDialog): search.addWidget(button4) - button=QPushButton(dialog) + button=QPushButton(self) button.setText(_TR('添加行')) def clicked1(): model.insertRow(0,[ QStandardItem(''),QStandardItem('')]) button.clicked.connect(clicked1) - button2=QPushButton(dialog) + button2=QPushButton(self) button2.setText(_TR('删除选中行')) def clicked2(): model.removeRow(table.currentIndex().row()) button2.clicked.connect(clicked2) - - def clicked3(_): - button.setFocus() - rows=model.rowCount() - newdict={} - for row in range(rows): - if model.item(row,0).text()=="": - continue - newdict[model.item(row,0).text()]=model.item(row,1).text() - configdict['dict']=newdict - - dialog.closeEvent=clicked3 + self.button=button + self.model=model + self.configdict=configdict formLayout.addWidget(table) formLayout.addLayout(search) formLayout.addWidget(button) formLayout.addWidget(button2) - dialog.resize(QSize(600,400)) - dialog.show() + self.resize(QSize(600,400)) + self.show() + def closeEvent(self, a0: QCloseEvent) -> None: + self.button.setFocus() + rows=self.model.rowCount() + newdict={} + for row in range(rows): + if self.model.item(row,0).text()=="": + continue + newdict[self.model.item(row,0).text()]=self.model.item(row,1).text() + self.configdict['dict']=newdict @Singleton class noundictconfigdialog(QDialog): - def __init__(dialog,parent,configdict,title,label=['游戏ID MD5' ,'原文','翻译'] ,_=None) -> None: + def closeEvent(self, a0: QCloseEvent) -> None: + self.button.setFocus() + rows=self.model.rowCount() + newdict={} + for row in range(rows): + if self.model.item(row,1).text()=="": + continue + if self.model.item(row,1).text() not in newdict: + newdict[self.model.item(row,1).text()]=[self.model.item(row,0).text(),self.model.item(row,2).text()] + else: + newdict[self.model.item(row,1).text()]+=[self.model.item(row,0).text(),self.model.item(row,2).text()] + self.configdict['dict']=newdict + def __init__(self,parent,configdict,title,label=['游戏ID MD5' ,'原文','翻译'] ,_=None) -> None: super().__init__(parent,Qt.WindowCloseButtonHint) - dialog.setWindowTitle(_TR(title)) - #dialog.setWindowModality(Qt.ApplicationModal) + self.setWindowTitle(_TR(title)) + #self.setWindowModality(Qt.ApplicationModal) - formLayout = QVBoxLayout(dialog) # 配置layout + formLayout = QVBoxLayout(self) # 配置layout - model=QStandardItemModel(len(list(configdict['dict'].keys())),1 , dialog) + model=QStandardItemModel(len(list(configdict['dict'].keys())),1 , self) row=0 for key in (configdict['dict']): # 2 if type(configdict['dict'][key])==str: @@ -263,12 +275,12 @@ class noundictconfigdialog(QDialog): model.setItem(row, 2, item) row+=1 model.setHorizontalHeaderLabels(_TRL(label)) - table = QTableView(dialog) + table = QTableView(self) table.setModel(model) table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) #table.setEditTriggers(QAbstractItemView.NoEditTriggers) #table.clicked.connect(self.show_info) - button=QPushButton(dialog) + button=QPushButton(self) button.setText(_TR('添加行')) def clicked1(): try: @@ -278,13 +290,13 @@ class noundictconfigdialog(QDialog): print_exc() model.insertRow(0,[QStandardItem('0'),QStandardItem(''),QStandardItem('')]) button.clicked.connect(clicked1) - button2=QPushButton(dialog) + button2=QPushButton(self) button2.setText(_TR('删除选中行')) def clicked2(): model.removeRow(table.currentIndex().row()) button2.clicked.connect(clicked2) - button5=QPushButton(dialog) + button5=QPushButton(self) button5.setText(_TR('设置所有词条为全局词条')) def clicked5(): rows=model.rowCount() @@ -292,20 +304,6 @@ class noundictconfigdialog(QDialog): model.item(row,0).setText('0') button5.clicked.connect(clicked5) - def clicked3(_): - button.setFocus() - rows=model.rowCount() - newdict={} - for row in range(rows): - if model.item(row,1).text()=="": - continue - if model.item(row,1).text() not in newdict: - newdict[model.item(row,1).text()]=[model.item(row,0).text(),model.item(row,2).text()] - else: - newdict[model.item(row,1).text()]+=[model.item(row,0).text(),model.item(row,2).text()] - configdict['dict']=newdict - - dialog.closeEvent=clicked3 search=QHBoxLayout() searchcontent=QLineEdit() search.addWidget(searchcontent) @@ -341,7 +339,9 @@ class noundictconfigdialog(QDialog): button5.clicked.connect(lambda x:gobject.baseobject.__setattr__('currentmd5',md5content.text())) button5.setText(_TR('修改')) setmd5layout.addWidget(button5) - + self.button=button + self.model=model + self.configdict=configdict formLayout.addLayout(setmd5layout) - dialog.resize(QSize(600,400)) - dialog.show() + self.resize(QSize(600,400)) + self.show() diff --git a/LunaTranslator/files/defaultconfig/static_data.json b/LunaTranslator/files/defaultconfig/static_data.json index 7795b081..0254d2df 100644 --- a/LunaTranslator/files/defaultconfig/static_data.json +++ b/LunaTranslator/files/defaultconfig/static_data.json @@ -1,5 +1,5 @@ { - "version":"v2.36.1", + "version":"v2.36.2", "language_list_show":["简体中文","日本語","English","Русский язык","Español","한국어","Français","繁體中文","Tiếng Việt","Türkçe","Polski","Українська Мова","Italiano","اللغة العربية","ภาษาไทย"] , "language_list_translator":["简体中文","日文","英文","俄语","西班牙语","韩语","法语","繁体中文","越南语","土耳其语","波兰语","乌克兰语","意大利语","阿拉伯语","泰语"], "language_list_translator_inner":["zh", "ja", "en","ru","es","ko","fr","cht","vi","tr","pl","uk","it","ar","th"],