Create a BaseDialog class

This commit is contained in:
Andrew Resch 2009-05-20 21:09:50 +00:00
parent 1d006e1368
commit f78cf72544
1 changed files with 35 additions and 14 deletions

View File

@ -35,33 +35,31 @@
import gtk import gtk
import deluge.component as component import deluge.component as component
class YesNoDialog(gtk.Dialog): class BaseDialog(gtk.Dialog):
""" """
Displays a dialog asking the user to select Yes or No to a question. Base dialog class that should be used with all dialogs.
When run(), it will return either a gtk.RESPONSE_YES or a gtk.RESPONSE_NO.
""" """
def __init__(self, header, text, parent=None): def __init__(self, header, text, icon, buttons, parent=None):
""" """
:param header: str, the header portion of the dialog, try to keep it short and to the point :param header: str, the header portion of the dialog
:param text: str, the body of the dialog, this can be longer with a more :param text: str, the text body of the dialog
thorough explanation of the question :param icon: gtk Stock ID, a stock id for the gtk icon to display
:param buttons: tuple, of gtk stock ids and responses
:param parent: gtkWindow, the parent window, if None it will default to the :param parent: gtkWindow, the parent window, if None it will default to the
MainWindow MainWindow
""" """
super(YesNoDialog, self).__init__( super(BaseDialog, self).__init__(
title="", title="",
parent=parent if parent else component.get("MainWindow").window, parent=parent if parent else component.get("MainWindow").window,
flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR, flags=gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT | gtk.DIALOG_NO_SEPARATOR,
buttons=(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO)) buttons=buttons)
# XXX: All of this stuff should be moved to a base dialog class.. # Setup all the formatting and such to make our dialog look pretty
self.set_border_width(5) self.set_border_width(5)
self.set_default_size(200, 100) self.set_default_size(200, 100)
hbox = gtk.HBox(spacing=5) hbox = gtk.HBox(spacing=5)
image = gtk.Image() image = gtk.Image()
image.set_from_stock(gtk.STOCK_DIALOG_QUESTION, gtk.ICON_SIZE_DIALOG) image.set_from_stock(icon, gtk.ICON_SIZE_DIALOG)
image.set_alignment(0.5, 0.0) image.set_alignment(0.5, 0.0)
hbox.pack_start(image, False, False) hbox.pack_start(image, False, False)
vbox = gtk.VBox(spacing=5) vbox = gtk.VBox(spacing=5)
@ -80,6 +78,29 @@ class YesNoDialog(gtk.Dialog):
self.vbox.show_all() self.vbox.show_all()
def run(self): def run(self):
response = super(YesNoDialog, self).run() # Destroy the dialog once we get a response and return it
response = super(BaseDialog, self).run()
self.destroy() self.destroy()
return response return response
class YesNoDialog(BaseDialog):
"""
Displays a dialog asking the user to select Yes or No to a question.
When run(), it will return either a gtk.RESPONSE_YES or a gtk.RESPONSE_NO.
"""
def __init__(self, header, text, parent=None):
"""
:param header: str, the header portion of the dialog, try to keep it short and to the point
:param text: str, the body of the dialog, this can be longer with a more
thorough explanation of the question
:param parent: gtkWindow, the parent window, if None it will default to the
MainWindow
"""
super(YesNoDialog, self).__init__(
header,
text,
gtk.STOCK_DIALOG_QUESTION,
(gtk.STOCK_YES, gtk.RESPONSE_YES, gtk.STOCK_NO, gtk.RESPONSE_NO),
parent)