diff options
author | Gonzalo Odiard <godiard@sugarlabs.org> | 2011-03-26 19:52:06 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@sugarlabs.org> | 2011-03-26 19:52:06 (GMT) |
commit | 201ad14122e5edfe13f32df0de5b295d92b7736e (patch) | |
tree | 4d39c2f35cf5218f7e2c1268dcea0d70116dde13 /GetIABooksActivity.py | |
parent | 5bcdbbc189ef05ae7dc258f3174a6c79c2999fa0 (diff) |
Add support to filter searches by language
Diffstat (limited to 'GetIABooksActivity.py')
-rwxr-xr-x | GetIABooksActivity.py | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py index 93f7379..5518adb 100755 --- a/GetIABooksActivity.py +++ b/GetIABooksActivity.py @@ -87,10 +87,13 @@ class GetIABooksActivity(activity.Activity): self.queryresults = None self._getter = None self.show_images = True + self.languages = {} + self._lang_code_handler = languagenames.LanguageNames() - self._read_configuration() if os.path.exists('/etc/get-books.cfg'): self._read_configuration('/etc/get-books.cfg') + else: + self._read_configuration() if OLD_TOOLBAR: @@ -132,6 +135,14 @@ class GetIABooksActivity(activity.Activity): config.readfp(open(file_name)) if config.has_option('GetBooks', 'show_images'): self.show_images = config.getboolean('GetBooks', 'show_images') + self.languages = {} + if config.has_option('GetBooks', 'languages'): + languages_param = config.get('GetBooks', 'languages') + for language in languages_param.split(','): + lang_code = language.strip() + if len(lang_code) > 0: + self.languages[lang_code] = \ + self._lang_code_handler.get_full_language_name(lang_code) for section in config.sections(): if section != 'GetBooks': @@ -143,6 +154,7 @@ class GetIABooksActivity(activity.Activity): _SOURCES_CONFIG[section] = repo_config logging.error('_SOURCES %s', _SOURCES) logging.error('_SOURCES_CONFIG %s', _SOURCES_CONFIG) + logging.error('languages %s', self.languages) def _add_search_controls(self, toolbar): book_search_item = gtk.ToolItem() @@ -167,6 +179,20 @@ class GetIABooksActivity(activity.Activity): toolbar.insert(combotool, -1) combotool.show() + if len(self.languages) > 0: + toolbar.language_combo = ComboBox() + toolbar.language_combo.props.sensitive = True + toolbar.language_changed_cb_id = \ + toolbar.language_combo.connect('changed', + self.__language_changed_cb) + combotool = ToolComboBox(toolbar.language_combo) + toolbar.language_combo.append_item('all',_('Any language')) + for key in self.languages.keys(): + toolbar.language_combo.append_item(key, self.languages[key]) + toolbar.language_combo.set_active(0) + toolbar.insert(combotool, -1) + combotool.show() + self._device_manager = devicemanager.DeviceManager() self._refresh_sources(toolbar) self._device_manager.connect('device-added', self.__device_added_cb) @@ -227,6 +253,13 @@ class GetIABooksActivity(activity.Activity): def __format_changed_cb(self, combo): self.show_book_data() + def __language_changed_cb(self, combo): + search_terms = self.get_search_terms() + if search_terms == '': + self.find_books(None) + else: + self.find_books(search_terms) + def __search_entry_activate_cb(self, entry): self.find_books(entry.props.text) @@ -254,7 +287,6 @@ class GetIABooksActivity(activity.Activity): self.msg_label = gtk.Label() - self._lang_code_handler = languagenames.LanguageNames() self.listview = ListView(self._lang_code_handler) self.listview.connect('selection-changed', self.selection_cb) @@ -448,6 +480,10 @@ class GetIABooksActivity(activity.Activity): def find_books(self, search_text=''): source = self._books_toolbar.source_combo.props.value + query_language = None + if len(self.languages) > 0: + query_language = self._books_toolbar.language_combo.props.value + self.enable_button(False) self.clear_downloaded_bytes() self.book_selected = False @@ -468,7 +504,7 @@ class GetIABooksActivity(activity.Activity): if source in _SOURCES_CONFIG: repo_configuration = _SOURCES_CONFIG[source] self.queryresults = opds.RemoteQueryResult(repo_configuration, - search_text, self.window) + search_text, query_language, self.window) else: self.queryresults = opds.LocalVolumeQueryResult( \ source, search_text, self.window) |