Skip to content

Commit 7ca1b9e

Browse files
committed
alpha 0.1.1
√ 添加双语输出rpy √ 添加修改language功能
1 parent ea19822 commit 7ca1b9e

File tree

5 files changed

+111
-9
lines changed

5 files changed

+111
-9
lines changed

.idea/misc.xml

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

RPY_manager.py

+75-3
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,10 @@ def close_merge_tasks_dialog(_):
137137
self.merge_tasks_dialog.open = False
138138
self.merge_tasks_dialog.update()
139139

140+
def close_change_language_dialog(_):
141+
self.change_language_dialog.open = False
142+
self.change_language_dialog.update()
143+
140144
self.page.overlay.append(self.file_picker)
141145
# version文件夹选择dialog
142146
self.version_add_dialog = ft.AlertDialog(
@@ -169,7 +173,8 @@ def close_merge_tasks_dialog(_):
169173
[
170174
ft.TextButton("添加", icon=ft.icons.CHECK_ROUNDED, on_click=add_version),
171175
ft.TextButton("取消", icon=ft.icons.CANCEL_ROUNDED, icon_color="#ba1a1a", on_click=close_version_add_dialog)
172-
]
176+
],
177+
alignment=ft.MainAxisAlignment.SPACE_BETWEEN
173178
)
174179
]
175180
),
@@ -203,7 +208,8 @@ def close_merge_tasks_dialog(_):
203208
text="取消",
204209
on_click=close_version_delete_dialog
205210
),
206-
]
211+
],
212+
alignment=ft.MainAxisAlignment.SPACE_BETWEEN
207213
)
208214

209215
]
@@ -487,6 +493,41 @@ def close_merge_tasks_dialog(_):
487493
]
488494
)
489495

496+
self.change_language_dialog = ft.AlertDialog(
497+
title=ft.Text("修改Language标签", size=20),
498+
modal=True,
499+
actions=[
500+
ft.Column(
501+
[
502+
ft.TextField(),
503+
ft.ProgressBar(
504+
value=0,
505+
width=490,
506+
height=10,
507+
),
508+
ft.Row(
509+
[
510+
ft.TextButton(
511+
icon=ft.icons.CHANGE_CIRCLE_OUTLINED,
512+
text="修改",
513+
on_click=lambda _:self.version_list[self.selected_version].change_language(self.change_language_dialog.actions[0].controls[0].value, self.change_language_dialog.actions[0].controls[1]) if self.selected_version else None
514+
),
515+
ft.TextButton(
516+
icon=ft.icons.CANCEL_ROUNDED,
517+
icon_color="#FF0000",
518+
text="取消",
519+
on_click=close_change_language_dialog
520+
)
521+
],
522+
alignment=ft.MainAxisAlignment.SPACE_BETWEEN
523+
)
524+
],
525+
height=120,
526+
width=500,
527+
)
528+
]
529+
)
530+
490531
def close_app(self, _):
491532
running_log("关闭")
492533
self.page.controls[1].save_app_config()
@@ -530,6 +571,17 @@ def build(self):
530571
on_click=lambda _: os.system(f"notepad {os.path.join(self.temp_path, 'out.log')}") if os.path.isfile(os.path.join(self.temp_path, 'out.log')) else lambda _: None,
531572
tooltip="打开运行日志"
532573
),
574+
ft.IconButton(
575+
icon=ft.icons.WEB_ROUNDED,
576+
icon_color="#eb9da5",
577+
icon_size=34,
578+
style=ft.ButtonStyle(
579+
shape={ft.MaterialState.DEFAULT: ft.RoundedRectangleBorder(radius=5)},
580+
bgcolor={ft.MaterialState.DEFAULT: "#71363c"},
581+
),
582+
on_click=lambda _: os.system(f"start https://www.lessonsinlove.wiki"),
583+
tooltip="LIL wiki"
584+
),
533585
],
534586
horizontal_alignment=ft.CrossAxisAlignment.CENTER
535587
),
@@ -657,12 +709,22 @@ def build(self):
657709
on_click=lambda _: os.system(f"explorer {self.version_list[self.selected_version].folder_path if self.selected_version != '' else ''}"),
658710
text="打开文件夹",
659711
),
712+
ft.PopupMenuItem(
713+
icon=ft.icons.LANGUAGE_ROUNDED,
714+
on_click=self.open_change_language_dialog,
715+
text="修改Language",
716+
),
660717
ft.PopupMenuItem(),
661718
ft.PopupMenuItem(
662719
icon=ft.icons.ARROW_FORWARD_IOS_ROUNDED,
663-
text="json到rpy",
720+
text="json到rpy(单中文)",
664721
on_click=lambda _: self.version_list[self.selected_version].json_2_rpy() if self.selected_version != "" else None
665722
),
723+
ft.PopupMenuItem(
724+
icon=ft.icons.ARROW_FORWARD_IOS_ROUNDED,
725+
text="json到rpy(双语)",
726+
on_click=lambda _: self.version_list[self.selected_version].json_2_rpy(True) if self.selected_version != "" else None
727+
),
666728
ft.PopupMenuItem(
667729
icon=ft.icons.ARROW_BACK_IOS_ROUNDED,
668730
text="rpy到json",
@@ -1587,6 +1649,16 @@ def refresh_tasks(self, _):
15871649
self.update_version_UI_list(None)
15881650
self.main_page.update()
15891651

1652+
def open_change_language_dialog(self, _):
1653+
self.change_language_dialog.actions[0].controls[0].value = list(self.version_list[self.selected_version].rpy_dict.values())[0].file_json["language"]
1654+
self.page.dialog = self.change_language_dialog
1655+
self.change_language_dialog.open = True
1656+
self.page.update()
1657+
1658+
def close_change_language_dialog(self, _):
1659+
self.change_language_dialog.open = False
1660+
self.change_language_dialog.update()
1661+
15901662
def save_setting_config(self, _):
15911663
running_log("保存设置")
15921664
self.app_config["user_name"] = self.setting_config_dialog.actions[0].content.controls[0].controls[1].value

rpy_file.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
import os
22
import json
3+
import re
4+
35
import flet as ft
46
from running_log import running_log
57

68
line_height = 21
79

810

11+
def remove_flag(input_: str):
12+
input_ = input_.replace('{i}', '').replace('{/i}', '')
13+
input_ = input_.replace('{b}', '').replace('{/b}', '')
14+
input_ = input_.replace('{s}', '').replace('{/s}', '')
15+
input_ = input_ = re.sub(r'{size=[-+]?\d+}', '', input_).replace('{/size}', '')
16+
input_ = input_ = re.sub(r'{lore=.*?}', '', input_).replace('{/lore}', '')
17+
return input_
18+
19+
920
class RPY_File:
1021
def __init__(self, path: str, Rm):
1122
self.Rm = Rm
@@ -170,7 +181,7 @@ def write_json(self, folder_path: str):
170181
with open(os.path.join(folder_path, self.file_json['name'] + '.json'), mode='w', encoding='utf-8') as F:
171182
F.write(json_str)
172183

173-
def write_rpy(self, folder_path: str):
184+
def write_rpy(self, folder_path: str, duel_language):
174185
running_log(f"写rpy {self.file_name}{folder_path}")
175186
write_str = ''
176187
with open(os.path.join(folder_path, self.file_json['name'] + '.rpy'), mode='w', encoding='utf-8') as F:
@@ -183,7 +194,8 @@ def write_rpy(self, folder_path: str):
183194
dialogue_hex=dialogue_hex,
184195
speaker='' if line['speaker'] == '<>' else '{} '.format(line['speaker']),
185196
origin=line['origin'],
186-
translation=line['translation']
197+
# translation=line['translation'] if not duel_language else line['origin'] + r'\n' + line['translation']
198+
translation=line['translation'] if not duel_language else line['translation'] + "{size=*0.5}{lore=" + remove_flag(line['origin']) + "}" + "原文" + "{/lore}{/size}"
187199
)
188200
write_str += line
189201
for strings in self.file_json['strings']:

rpy_version.py

+18-4
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ def rpy_2_json(self):
180180
r2j_dialog.open = True
181181
self.Rm.page.update()
182182

183-
self.read_rpy_by_rpy(r2j_dialog.actions[0].controls[1])
183+
self.read_rpy_by_rpy(pb=r2j_dialog.actions[0].controls[1])
184184
for rpy_num, rpy_obj in enumerate(self.rpy_dict.values()):
185185
r2j_dialog.actions[0].controls[0].value = rpy_obj.file_name.ljust(20) + f"{(rpy_num + 1)}/{len(self.rpy_dict)}"
186186
r2j_dialog.actions[0].controls[1].value = (rpy_num + 1) / len(self.rpy_dict)
@@ -195,7 +195,7 @@ def rpy_2_json(self):
195195

196196
running_log(f"转移成功 {self.version}")
197197

198-
def json_2_rpy(self):
198+
def json_2_rpy(self, duel_language: bool = False):
199199
running_log(f"json转移到rpy {self.version}")
200200
if not self.success:
201201
running_log("存在解析失败的rpy,操作不允许")
@@ -219,10 +219,10 @@ def json_2_rpy(self):
219219

220220
self.read_rpy_by_json(j2r_dialog.actions[0].controls[1])
221221
for rpy_num, rpy_obj in enumerate(self.rpy_dict.values()):
222-
j2r_dialog.actions[0].controls[0].value = rpy_obj.file_name.ljust(20) + f"{(rpy_num + 1)}/{len(self.rpy_dict)}"
222+
j2r_dialog.actions[0].controls[0].value = rpy_obj.file_name.ljust(40) + f"{(rpy_num + 1)}/{len(self.rpy_dict)}"
223223
j2r_dialog.actions[0].controls[1].value = (rpy_num + 1) / len(self.rpy_dict)
224224
j2r_dialog.update()
225-
rpy_obj.write_rpy(self.folder_path)
225+
rpy_obj.write_rpy(self.folder_path, duel_language)
226226

227227
j2r_dialog.open = False
228228
self.Rm.page.update()
@@ -274,3 +274,17 @@ def scan_tasks(self) -> str:
274274

275275
self.tasks_dict.update({task_hex: task_obj})
276276
return 'success'
277+
278+
def change_language(self, new_language: str, pb: ft.ProgressBar = None):
279+
running_log(f"尝试修改 {self.version} 的Language标签为 {new_language}")
280+
if not new_language:
281+
return
282+
if new_language == list(self.rpy_dict.values())[0].file_json["language"]:
283+
return
284+
running_log("开始修改并保存")
285+
for num, r_file in enumerate(self.rpy_dict.values()):
286+
r_file.file_json["language"] = new_language
287+
r_file.write_json(self.folder_path)
288+
pb.value = float(num) / len(self.rpy_dict)
289+
pb.update()
290+
self.Rm.close_change_language_dialog(None)

text_editor.py

+1
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ def build_control(self):
186186
self.no_flag_origin = self.no_flag_origin.replace('{s}', '').replace('{/s}', '')
187187
self.no_flag_origin = re.sub(r'{size=[-+]?\d+}', '', self.no_flag_origin).replace('{/size}', '')
188188

189+
189190
return control
190191

191192
def translate_self(self, _):

0 commit comments

Comments
 (0)