lib/alexandria/ui/alert_dialog.rb in alexandria-book-collection-manager-0.7.5 vs lib/alexandria/ui/alert_dialog.rb in alexandria-book-collection-manager-0.7.6
- old
+ new
@@ -4,46 +4,61 @@
#
# See the file README.md for authorship and licensing information.
module Alexandria
module UI
- class AlertDialog < SimpleDelegator
+ class AlertDialog
def initialize(parent, title, stock_icon, buttons, message = nil)
- dialog = Gtk::Dialog.new(title: "", parent: parent, flags: :destroy_with_parent,
- buttons: buttons)
- super(dialog)
+ @dialog = Gtk::Dialog.new(title: "", parent: parent, flags: :destroy_with_parent,
+ buttons: buttons)
+ @dialog.border_width = 6
+ @dialog.resizable = false
+ @dialog.child.spacing = 12
- self.border_width = 6
- self.resizable = false
- child.spacing = 12
-
hbox = Gtk::Box.new(:horizontal, 12)
hbox.homogeneous = false
hbox.border_width = 6
- child.pack_start(hbox)
image = Gtk::Image.new(stock: stock_icon,
size: Gtk::IconSize::DIALOG)
image.set_alignment(0.5, 0)
hbox.pack_start(image)
vbox = Gtk::Box.new(:vertical, 6)
vbox.homogeneous = false
+ vbox.pack_start make_label("<b><big>#{title}</big></b>")
+ vbox.pack_start make_label(message.strip) unless message
hbox.pack_start(vbox)
+ @dialog.child.pack_start(hbox)
+ end
+
+ def show_all
+ dialog.show_all
+ end
+
+ def run
+ dialog.run
+ end
+
+ def destroy
+ dialog.destroy
+ end
+
+ def default_response=(response)
+ dialog.default_response = response
+ end
+
+ private
+
+ attr_reader :dialog
+
+ def make_label(markup)
label = Gtk::Label.new
label.set_alignment(0, 0)
label.wrap = label.selectable = true
- label.markup = "<b><big>#{title}</big></b>"
- vbox.pack_start(label)
-
- if message
- label = Gtk::Label.new
- label.set_alignment(0, 0)
- label.wrap = label.selectable = true
- label.markup = message.strip
- vbox.pack_start(label)
- end
+ label.markup = markup
+ label
end
end
end
end