Skip to content

Commit

Permalink
setup: Search engine name directly
Browse files Browse the repository at this point in the history
Currently users can search language names only in the language list
in ibus-setup. After a language is selected and open, engine names can
be searched.
Now engine names also can be searched in the language list.
  • Loading branch information
fujiwarat committed Jan 20, 2021
1 parent d0a47c3 commit ef4c5c7
Showing 1 changed file with 21 additions and 19 deletions.
40 changes: 21 additions & 19 deletions setup/enginedialog.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# ibus - The Input Bus
#
# Copyright (c) 2015 Peng Huang <shawn.p.huang@gmail.com>
# Copyright (c) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
# Copyright (c) 2015-2021 Takao Fujiwara <takao.fujiwara1@gmail.com>
# Copyright (c) 2013-2015 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or
Expand Down Expand Up @@ -112,15 +112,20 @@ def __list_filter(self, row, data):
return False
if self.__filter_word == None:
return True
if row.back:
return True

name = row.name.lower()
untrans = row.untrans.lower()
if self.__filter_word != None:
word = self.__filter_word.lower()
if name.startswith(word):
return True
if untrans.startswith(word):
return True
word = self.__filter_word.lower()
if word in row.name.lower():
return True
if word in row.untrans.lower():
return True
if row.lang_info and row.name in self.__engines_for_lang:
for row_e in self.__engines_for_lang[row.name]:
if word in row_e.name.lower():
return True
if word in row_e.untrans.lower():
return True
return False


Expand All @@ -129,11 +134,9 @@ def __row_activated(self, box, row):
self.__show_more()
return
if row.back:
self.__filter_entry.set_text('')
self.__show_lang_rows()
return
if row.lang_info:
self.__filter_entry.set_text('')
self.__show_engines_for_lang(row)
return

Expand Down Expand Up @@ -232,6 +235,7 @@ def __engine_row_new(self, engine):
description = i18n.gettext_engine_description(engine)
row = self.__list_box_row_new(longname)
row.untrans = engine.get_longname()
row.rank = engine.get_rank()
row.set_tooltip_text(description)
row.engine = engine
widget = self.__padded_label_new(longname,
Expand Down Expand Up @@ -260,16 +264,13 @@ def __add_engine_rows_for_lang(self, row):
lang = row.name

def cmp_engine(a, b):
if a.get_rank() == b.get_rank():
a_longname = i18n.gettext_engine_longname(a)
b_longname = i18n.gettext_engine_longname(b)
return locale.strcoll(a_longname, b_longname)
return int(b.get_rank() - a.get_rank())
if a.rank == b.rank:
return locale.strcoll(a.name, b.name)
return int(b.rank - a.rank)

self.__engines_for_lang[lang].sort(
key = functools.cmp_to_key(cmp_engine))
for e in self.__engines_for_lang[lang]:
row = self.__engine_row_new(e)
for row in self.__engines_for_lang[lang]:
self.__list.add(row)


Expand Down Expand Up @@ -329,7 +330,8 @@ def set_engines(self, engines):
if l not in self.__engines_for_lang:
self.__engines_for_lang[l] = []
i18n.init_textdomain(e.get_textdomain())
self.__engines_for_lang[l].append(e)
row = self.__engine_row_new(e)
self.__engines_for_lang[l].append(row)

# Retrieve Untranslated language names.
untrans = IBus.get_untranslated_language_name(e.get_language())
Expand Down

0 comments on commit ef4c5c7

Please sign in to comment.