22import contextlib
33import sys
44from PyQt6 import QtWidgets
5- from PyQt6 .QtCore import pyqtSignal , QThread , QMutex , Qt
5+ from PyQt6 .QtCore import pyqtSignal , QThread , QMutex , Qt , QPoint
66from OCR_style import Ui_OCR_Window
77from getSecret_style import Ui_getSecretWidget
88from Screenshot import getScreenPos , getScreenshot
1414from config_style import Ui_Config
1515from Config import readConfig , writeConfig , isInit
1616import keyboard
17- from customerDefineDict import ZhNameDict , JPNameDict
17+ from customerDefineDict import ZhNameDict , JPNameDict , hirakanaList , katakanaList
1818# from var_dump import var_dump
1919
2020def keymap_replace (
@@ -45,6 +45,8 @@ def keymap_replace(
4545 )
4646 return replaced_string
4747
48+ def getSimilarKana (kana : str ) -> list :
49+ return [similarKana for similarKana in katakanaList + hirakanaList if kana in similarKana ]
4850
4951def nameReplace (string : str , reverse = False ):
5052 _dict = ZhNameDict if reverse else JPNameDict
@@ -310,6 +312,7 @@ def __init__(self):
310312 self .selectionText = str ()
311313 self .OCRText = str ()
312314 self .setupUi (self )
315+ self .replaceListWidget .hide ()
313316 self .defaultWidth , self .defaultHeight = self .width (), self .height ()
314317 self .defaultX , self .defaultY = self .geometry ().x (), self .geometry ().y ()
315318 self .OCRResultTextEdit .setPlainText ('' )
@@ -320,7 +323,7 @@ def __init__(self):
320323 self .configWidget = configWidget_class (self )
321324 self .selectionTextChange = self .dictWindow .selectionTextChange
322325 self .autoDict = self .autoDictCheckBox .isChecked ()
323- self .resultTextEditList = self .TransResult_0 ,self .TransResult_1 ,self .TransResult_2 ,self .TransResult_3
326+ self .resultTextEditList = self .TransResult_0 , self .TransResult_1 , self .TransResult_2 , self .TransResult_3
324327 self .updateTranslatorList (self .ConfigDict ['SELECTED_TRANSLATORS' ])
325328 self .autoTrans = True
326329 if (not isInit ):
@@ -354,6 +357,32 @@ def updateSelectionText(self):
354357 if (self .autoDict ):
355358 self .showDictWindow ()
356359
360+ def showReplaceListWidget (self ):
361+ selectedText = self .OCRResultTextEdit .textCursor ().selectedText ()
362+ if (len (selectedText ) != 1 or self .autoDict ):
363+ self .replaceListWidget .hide ()
364+ return
365+ similarKanaList = getSimilarKana (selectedText )
366+ if (not similarKanaList ):
367+ self .replaceListWidget .hide ()
368+ return
369+ similarKanaList = list (similarKanaList [0 ])
370+ similarKanaList .remove (selectedText )
371+ if len (similarKanaList ) == 1 : self .replaceListWidget .setFixedSize (35 ,35 )
372+ else : self .replaceListWidget .setFixedSize (35 ,70 )
373+ self .replaceListWidget .clear ()
374+ self .replaceListWidget .addItems (similarKanaList )
375+ self .replaceListWidget .show ()
376+ self .replaceListWidget .move (self .OCRResultTextEdit .mapToParent (QPoint (self .OCRResultTextEdit .cursorRect ().left (),self .OCRResultTextEdit .cursorRect ().bottom ())))
377+
378+ def hideReplaceListWidget (self ):
379+ self .replaceListWidget .hide ()
380+
381+ def replaceKana (self ):
382+ _pos = min (self .OCRResultTextEdit .selectionArea )
383+ nowText = self .OCRResultTextEdit .toPlainText ()
384+ self .OCRResultTextEdit .setPlainText (nowText [:_pos ] + self .replaceListWidget .currentItem ().text () + nowText [_pos + 1 :])
385+
357386 def updateAutoTransBool (self ,_bool ):
358387 self .autoTrans = _bool
359388
0 commit comments