From 9bd576a53d5d40d3d318a427219551b81ba59e37 Mon Sep 17 00:00:00 2001 From: Paul Goins Date: Sat, 20 Feb 2010 17:43:01 +0900 Subject: [PATCH] Added yes/no dialog widget, skeleton download dialog and logic in main window --- jben/jben/interface/gtk/widget/yesnodialog.py | 23 ++++++++++++++++++++ jben/jben/interface/gtk/window/main.py | 31 +++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 jben/jben/interface/gtk/widget/yesnodialog.py diff --git a/jben/jben/interface/gtk/widget/yesnodialog.py b/jben/jben/interface/gtk/widget/yesnodialog.py new file mode 100644 index 0000000..b2981b3 --- /dev/null +++ b/jben/jben/interface/gtk/widget/yesnodialog.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +import gtk + + +class InfoMessage(gtk.MessageDialog): + + def __init__(self, parent=None, title="", message="", + type=gtk.MESSAGE_INFO, buttons=gtk.BUTTONS_YES_NO): + gtk.MessageDialog.__init__(self, parent, + gtk.DIALOG_MODAL, type, + buttons, message) + self.set_title(title) + + +def show_message_yn(parent, title, message): + """Convenience function intended for displaying modal dialogs.""" + im = InfoMessage(parent, title, message) + result = im.run() + im.destroy() + return True if result == gtk.RESPONSE_YES else False diff --git a/jben/jben/interface/gtk/window/main.py b/jben/jben/interface/gtk/window/main.py index dd5d0d5..89c13ac 100644 --- a/jben/jben/interface/gtk/window/main.py +++ b/jben/jben/interface/gtk/window/main.py @@ -16,9 +16,11 @@ from ..widget.worddict import TabWordDict from ..widget.kanjidict import TabKanjiDict from ..widget.storedsize import StoredSizeWindow from ..widget.infomessage import show_message +from ..widget.yesnodialog import show_message_yn from ..dialog.vocablisteditor import DialogVocabListEditor from ..dialog.kanjilisteditor import DialogKanjiListEditor from ..dialog.preferences import DialogPreferences +from ..dialog.dict_download import DictDownload class Main(StoredSizeWindow): @@ -34,9 +36,30 @@ class Main(StoredSizeWindow): def on_show(self, widget): wdict_avail, kdict_avail = self.app.dictmgr.check_dicts() if not all((wdict_avail, kdict_avail)): - show_message(self, _("Dictionaries not found"), - _("Could not find some needed dictionary files. " - "The relevant tabs will be disabled.")) + # Ask if we should download dictionaries from the internet. + do_download = show_message_yn( + self, _("Dictionaries not found"), + _("Could not find some needed dictionary files. " + "Do you wish to download them from the Internet?")) + if do_download: + dialog = DictDownload(self) + dl_result = dialog.run() + dialog.destroy() + if (not do_download) or (dl_result == gtk.RESPONSE_CANCEL): + show_message(self, _("Not downloading dictionaries"), + _("Not downloading dictionaries. " + "Some features may be disabled.")) + elif dl_result == gtk.RESPONSE_OK: + wdict_avail, kdict_avail = self.app.dictmgr.check_dicts() + if not all((wdict_avail, kdict_avail)): + show_message( + self, _("Could not download all dictionaries"), + _("Could not download all needed files. " + "Some features may be disabled.")) + else: + show_message(self, _("Unhandled dialog result"), + _("Unhandled dialog result: <%s>") % + str(dl_result)) if wdict_avail: self.children.get_nth_page(0).set_sensitive(True) if kdict_avail: @@ -168,7 +191,7 @@ class Main(StoredSizeWindow): show_message(self, _("License Information"), message) - def _layout_window(self) + def _layout_window(self): self.set_title(jben_globals.PROGRAM_NAME) self.menu = self._create_menu() self.children = self._create_children() -- 2.11.4.GIT