-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
<feature> support set default language at startup
- Loading branch information
1 parent
9cb30b2
commit 300ff04
Showing
41 changed files
with
2,275 additions
and
1,226 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
init 1000 python: | ||
renpy.game.preferences.language = "{tl_name}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# -*- coding: utf-8 -*- | ||
|
||
################################################################################ | ||
## Form generated from reading UI file 'default_language.ui' | ||
## | ||
## Created by: Qt User Interface Compiler version 6.6.1 | ||
## | ||
## WARNING! All changes made in this file will be lost when recompiling UI file! | ||
################################################################################ | ||
|
||
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, | ||
QMetaObject, QObject, QPoint, QRect, | ||
QSize, QTime, QUrl, Qt) | ||
from PySide6.QtGui import (QBrush, QColor, QConicalGradient, QCursor, | ||
QFont, QFontDatabase, QGradient, QIcon, | ||
QImage, QKeySequence, QLinearGradient, QPainter, | ||
QPalette, QPixmap, QRadialGradient, QTransform) | ||
from PySide6.QtWidgets import (QApplication, QCheckBox, QDialog, QLabel, | ||
QPushButton, QSizePolicy, QTextEdit, QWidget) | ||
|
||
class Ui_DefaultLanguageDialog(object): | ||
def setupUi(self, DefaultLanguageDialog): | ||
if not DefaultLanguageDialog.objectName(): | ||
DefaultLanguageDialog.setObjectName(u"DefaultLanguageDialog") | ||
DefaultLanguageDialog.resize(869, 267) | ||
self.selectFileText = QTextEdit(DefaultLanguageDialog) | ||
self.selectFileText.setObjectName(u"selectFileText") | ||
self.selectFileText.setGeometry(QRect(90, 20, 661, 91)) | ||
self.label = QLabel(DefaultLanguageDialog) | ||
self.label.setObjectName(u"label") | ||
self.label.setGeometry(QRect(10, 35, 81, 61)) | ||
self.label.setWordWrap(True) | ||
self.selectFileBtn = QPushButton(DefaultLanguageDialog) | ||
self.selectFileBtn.setObjectName(u"selectFileBtn") | ||
self.selectFileBtn.setGeometry(QRect(750, 20, 81, 91)) | ||
self.selectFileBtn.setText(u"...") | ||
self.setDefaultLanguageCheckBox = QCheckBox(DefaultLanguageDialog) | ||
self.setDefaultLanguageCheckBox.setObjectName(u"setDefaultLanguageCheckBox") | ||
self.setDefaultLanguageCheckBox.setGeometry(QRect(10, 230, 821, 20)) | ||
self.label_8 = QLabel(DefaultLanguageDialog) | ||
self.label_8.setObjectName(u"label_8") | ||
self.label_8.setGeometry(QRect(10, 150, 81, 51)) | ||
self.label_8.setWordWrap(True) | ||
self.tlNameText = QTextEdit(DefaultLanguageDialog) | ||
self.tlNameText.setObjectName(u"tlNameText") | ||
self.tlNameText.setGeometry(QRect(90, 140, 741, 81)) | ||
|
||
self.retranslateUi(DefaultLanguageDialog) | ||
|
||
QMetaObject.connectSlotsByName(DefaultLanguageDialog) | ||
# setupUi | ||
|
||
def retranslateUi(self, DefaultLanguageDialog): | ||
DefaultLanguageDialog.setWindowTitle(QCoreApplication.translate("DefaultLanguageDialog", u"set default langauge at startup", None)) | ||
#if QT_CONFIG(tooltip) | ||
self.selectFileText.setToolTip("") | ||
#endif // QT_CONFIG(tooltip) | ||
self.selectFileText.setPlaceholderText(QCoreApplication.translate("DefaultLanguageDialog", u"Input or choose or drag the game you want to set default language at startup.Example:F:/DemoGame.exe", None)) | ||
self.label.setText(QCoreApplication.translate("DefaultLanguageDialog", u"file", None)) | ||
self.setDefaultLanguageCheckBox.setText(QCoreApplication.translate("DefaultLanguageDialog", u"set default language at startup", None)) | ||
self.label_8.setText(QCoreApplication.translate("DefaultLanguageDialog", u"tl name", None)) | ||
self.tlNameText.setPlaceholderText(QCoreApplication.translate("DefaultLanguageDialog", u"Input the directory name under game\\tl Example: 'japanese' or 'chinese'", None)) | ||
# retranslateUi | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<ui version="4.0"> | ||
<class>DefaultLanguageDialog</class> | ||
<widget class="QDialog" name="DefaultLanguageDialog"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>0</x> | ||
<y>0</y> | ||
<width>869</width> | ||
<height>267</height> | ||
</rect> | ||
</property> | ||
<property name="windowTitle"> | ||
<string>set default langauge at startup</string> | ||
</property> | ||
<widget class="QTextEdit" name="selectFileText"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>90</x> | ||
<y>20</y> | ||
<width>661</width> | ||
<height>91</height> | ||
</rect> | ||
</property> | ||
<property name="toolTip"> | ||
<string/> | ||
</property> | ||
<property name="placeholderText"> | ||
<string>Input or choose or drag the game you want to set default language at startup.Example:F:/DemoGame.exe</string> | ||
</property> | ||
</widget> | ||
<widget class="QLabel" name="label"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>10</x> | ||
<y>35</y> | ||
<width>81</width> | ||
<height>61</height> | ||
</rect> | ||
</property> | ||
<property name="text"> | ||
<string>file</string> | ||
</property> | ||
<property name="wordWrap"> | ||
<bool>true</bool> | ||
</property> | ||
</widget> | ||
<widget class="QPushButton" name="selectFileBtn"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>750</x> | ||
<y>20</y> | ||
<width>81</width> | ||
<height>91</height> | ||
</rect> | ||
</property> | ||
<property name="text"> | ||
<string notr="true">...</string> | ||
</property> | ||
</widget> | ||
<widget class="QCheckBox" name="setDefaultLanguageCheckBox"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>10</x> | ||
<y>230</y> | ||
<width>821</width> | ||
<height>20</height> | ||
</rect> | ||
</property> | ||
<property name="text"> | ||
<string>set default language at startup</string> | ||
</property> | ||
</widget> | ||
<widget class="QLabel" name="label_8"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>10</x> | ||
<y>150</y> | ||
<width>81</width> | ||
<height>51</height> | ||
</rect> | ||
</property> | ||
<property name="text"> | ||
<string>tl name</string> | ||
</property> | ||
<property name="wordWrap"> | ||
<bool>true</bool> | ||
</property> | ||
</widget> | ||
<widget class="QTextEdit" name="tlNameText"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>90</x> | ||
<y>140</y> | ||
<width>741</width> | ||
<height>81</height> | ||
</rect> | ||
</property> | ||
<property name="placeholderText"> | ||
<string>Input the directory name under game\tl Example: 'japanese' or 'chinese'</string> | ||
</property> | ||
</widget> | ||
</widget> | ||
<resources/> | ||
<connections/> | ||
</ui> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
import io | ||
import os.path | ||
from PySide6.QtCore import QCoreApplication | ||
from PySide6.QtWidgets import QDialog, QFileDialog | ||
|
||
from my_log import log_print | ||
from default_language import Ui_DefaultLanguageDialog | ||
|
||
default_language_template_path = 'default_langauge_template.txt' | ||
out_default_lanugage_script_name = 'set_default_language_at_startup.rpy' | ||
|
||
|
||
def set_default_language_at_startup(tl_name, target): | ||
f = io.open(default_language_template_path, 'r', encoding='utf-8') | ||
_data = f.read() | ||
f.close() | ||
_data = _data.replace('{tl_name}', tl_name) | ||
f = io.open(target, 'w', encoding='utf-8') | ||
f.write(_data) | ||
f.close() | ||
log_print(f'set default langauge to {tl_name} success!') | ||
|
||
|
||
class MyDefaultLanguageForm(QDialog, Ui_DefaultLanguageDialog): | ||
def __init__(self, parent=None): | ||
super(MyDefaultLanguageForm, self).__init__(parent) | ||
self.setupUi(self) | ||
self.setFixedHeight(self.height()) | ||
self.setFixedWidth(self.width()) | ||
self.selectFileBtn.clicked.connect(self.select_file) | ||
self.selectFileText.textChanged.connect(self.on_text_changed) | ||
self.tlNameText.textChanged.connect(self.on_tl_name_changed) | ||
self.setDefaultLanguageCheckBox.clicked.connect(self.on_default_language_checkbox_clicked) | ||
|
||
def on_tl_name_changed(self): | ||
target = self.get_target() | ||
if target is not None and os.path.isfile(target): | ||
f = io.open(target, 'r', encoding='utf-8') | ||
_lines = f.readlines() | ||
f.close() | ||
tl_name = '' | ||
for index, _line in enumerate(_lines): | ||
if 'renpy.game.preferences.language' in _line: | ||
idx = _line.rindex('=') | ||
tl_name = _line[idx + 1:].strip().strip('"') | ||
_lines[index] = _lines[index].replace(tl_name, self.tlNameText.toPlainText()) | ||
break | ||
f = io.open(target, 'w', encoding='utf-8') | ||
f.writelines(_lines) | ||
f.close() | ||
self.setDefaultLanguageCheckBox.setChecked(True) | ||
else: | ||
self.setDefaultLanguageCheckBox.setChecked(False) | ||
|
||
def on_default_language_checkbox_clicked(self): | ||
tl_name = self.tlNameText.toPlainText() | ||
if self.setDefaultLanguageCheckBox.isChecked(): | ||
target = self.get_target() | ||
if target is not None: | ||
set_default_language_at_startup(tl_name, target) | ||
else: | ||
target = self.get_target() | ||
if target is not None: | ||
if os.path.isfile(target): | ||
os.remove(target) | ||
if os.path.isfile(target + 'c'): | ||
os.remove(target + 'c') | ||
log_print('remove set default langauge success!') | ||
|
||
def get_target(self): | ||
path = self.selectFileText.toPlainText() | ||
path = path.replace('file:///', '') | ||
if os.path.isfile(path): | ||
if path.endswith('.exe'): | ||
target = os.path.dirname(path) | ||
target = target + '/game' | ||
if os.path.isdir(target): | ||
target = target + '/' + out_default_lanugage_script_name | ||
return target | ||
return None | ||
|
||
def on_text_changed(self): | ||
target = self.get_target() | ||
if target is not None and os.path.isfile(target): | ||
f = io.open(target, 'r', encoding='utf-8') | ||
_lines = f.readlines() | ||
f.close() | ||
tl_name = '' | ||
for _line in _lines: | ||
if 'renpy.game.preferences.language' in _line: | ||
idx = _line.rindex('=') | ||
tl_name = _line[idx + 1:].strip().strip('"') | ||
break | ||
self.setDefaultLanguageCheckBox.setChecked(True) | ||
self.tlNameText.setText(tl_name) | ||
else: | ||
self.setDefaultLanguageCheckBox.setChecked(False) | ||
|
||
def select_file(self): | ||
file, filetype = QFileDialog.getOpenFileName(self, | ||
QCoreApplication.translate('DefaultLanguageDialog', | ||
'select the game file you want to set default language at startup', | ||
None), | ||
'', | ||
"Game Files (*.exe)") | ||
self.selectFileText.setText(file) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.