diff --git a/gui/builtinShipBrowser/navigationPanel.py b/gui/builtinShipBrowser/navigationPanel.py index fe0051144..bbded1f8f 100644 --- a/gui/builtinShipBrowser/navigationPanel.py +++ b/gui/builtinShipBrowser/navigationPanel.py @@ -8,10 +8,12 @@ import gui.mainFrame import gui.utils.color as colorUtils import gui.utils.draw as drawUtils import gui.utils.fonts as fonts -from .events import FitSelected, SearchSelected, ImportSelected, Stage1Selected, Stage2Selected, Stage3Selected from gui.bitmap_loader import BitmapLoader -from service.fit import Fit from gui.utils.helpers_wxPython import HandleCtrlBackspace +from service.fit import Fit +from utils.cjk import isStringCjk +from .events import FitSelected, SearchSelected, ImportSelected, Stage1Selected, Stage2Selected, Stage3Selected + pyfalog = Logger(__name__) @@ -86,7 +88,8 @@ class NavigationPanel(SFItem.SFBrowserItem): search = self.BrowserSearchBox.GetValue() # Make sure we do not count wildcard as search symbol realsearch = search.replace("*", "") - if len(realsearch) >= 3: + minChars = 1 if isStringCjk(realsearch) else 3 + if len(realsearch) >= minChars: self.lastSearch = search wx.PostEvent(self.shipBrowser, SearchSelected(text=search, back=False)) diff --git a/utils/cjk.py b/utils/cjk.py new file mode 100644 index 000000000..1a3dc4384 --- /dev/null +++ b/utils/cjk.py @@ -0,0 +1,23 @@ +def isCharCjk(char): + # https://stackoverflow.com/questions/1366068/whats-the-complete-range-for-chinese-characters-in-unicode + ranges = ( + ('\u4e00', '\u9fff'), + ('\u3400', '\u4dbf'), + ('\u20000', '\u2a6df'), + ('\u2a700', '\u2b73f'), + ('\u2b740', '\u2b81f'), + ('\u2b820', '\u2ceaf'), + ('\uf900', '\ufaff'), + ('\u2f800', '\u2fa1f'), + ('\uac00', '\ud7af')) + for low, high in ranges: + if low <= char <= high: + return True + return False + + +def isStringCjk(string): + for char in string: + if isCharCjk(char): + return True + return False