def __init__(self, parent=None, label="", icon=gtk.STOCK_INFO, msg=""): super(CrumbsMessageDialog, self).__init__("", parent, gtk.DIALOG_MODAL) self.set_border_width(6) self.vbox.set_property("spacing", 12) self.action_area.set_property("spacing", 12) self.action_area.set_property("border-width", 6) first_column = gtk.HBox(spacing=12) first_column.set_property("border-width", 6) first_column.show() self.vbox.add(first_column) self.icon = gtk.Image() # We have our own Info icon which should be used in preference of the stock icon self.icon_chk = HobIconChecker() self.icon.set_from_stock(self.icon_chk.check_stock_icon(icon), gtk.ICON_SIZE_DIALOG) self.icon.set_property("yalign", 0.00) self.icon.show() first_column.pack_start(self.icon, expand=False, fill=True, padding=0) if 0 <= len(msg) < 200: lbl = label + "%s" % glib.markup_escape_text(msg) self.label_short = gtk.Label() self.label_short.set_use_markup(True) self.label_short.set_line_wrap(True) self.label_short.set_markup(lbl) self.label_short.set_property("yalign", 0.00) self.label_short.show() first_column.add(self.label_short) else: second_row = gtk.VBox(spacing=12) second_row.set_property("border-width", 6) self.label_long = gtk.Label() self.label_long.set_use_markup(True) self.label_long.set_line_wrap(True) self.label_long.set_markup(label) self.label_long.set_alignment(0.0, 0.0) second_row.pack_start(self.label_long, expand=False, fill=False, padding=0) self.label_long.show() self.textWindow = gtk.ScrolledWindow() self.textWindow.set_shadow_type(gtk.SHADOW_IN) self.textWindow.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) self.msgView = gtk.TextView() self.msgView.set_editable(False) self.msgView.set_wrap_mode(gtk.WRAP_WORD) self.msgView.set_cursor_visible(False) self.msgView.set_size_request(300, 300) self.buf = gtk.TextBuffer() self.buf.set_text(msg) self.msgView.set_buffer(self.buf) self.textWindow.add(self.msgView) self.msgView.show() second_row.add(self.textWindow) self.textWindow.show() first_column.add(second_row) second_row.show()
def __init__(self, parent=None, label="", icon=gtk.STOCK_INFO): super(CrumbsMessageDialog, self).__init__("", parent, gtk.DIALOG_DESTROY_WITH_PARENT) self.set_border_width(6) self.vbox.set_property("spacing", 12) self.action_area.set_property("spacing", 12) self.action_area.set_property("border-width", 6) first_row = gtk.HBox(spacing=12) first_row.set_property("border-width", 6) first_row.show() self.vbox.add(first_row) self.icon = gtk.Image() # We have our own Info icon which should be used in preference of the stock icon self.icon_chk = HobIconChecker() self.icon.set_from_stock(self.icon_chk.check_stock_icon(icon), gtk.ICON_SIZE_DIALOG) self.icon.set_property("yalign", 0.00) self.icon.show() first_row.add(self.icon) self.label = gtk.Label() self.label.set_use_markup(True) self.label.set_line_wrap(True) self.label.set_markup(label) self.label.set_property("yalign", 0.00) self.label.show() first_row.add(self.label)
def create_visual_elements(self): if not self.devices: self.set_size_request(400, 200) first_column = gtk.HBox(spacing=6) first_column.set_property("border-width", 6) first_column.show() self.vbox.add(first_column) icon = gtk.Image() icon_chk = HobIconChecker() icon.set_from_stock(icon_chk.check_stock_icon(gtk.STOCK_DIALOG_WARNING), gtk.ICON_SIZE_DIALOG) icon.set_property("xalign", 0.00) first_column.pack_start(icon, expand=False, fill=True, padding=0) label = gtk.Label() label.set_use_markup(True) label.set_line_wrap(True) label.set_markup("<span font_desc='17' weight=\'bold\'>No external storage\ndevice found</span>") label.set_property("xalign", 0.00) first_column.add(label) label = gtk.Label() label.set_use_markup(True) label.set_line_wrap(True) label.set_markup("<span font_desc='12'>Insert an SD card or USB drive before\ndeploying your image</span>") label.set_property("yalign", 0.00) self.vbox.add(label) button = self.add_button("OK", gtk.RESPONSE_CANCEL) HobAltButton.style_button(button) else: self.set_size_request(350, 300) label = gtk.Label() label.set_alignment(0.0, 0.5) markup = "<span font_desc='17' weight=\'bold\'>External storage device</span>" label.set_markup(markup) self.vbox.pack_start(label, expand=False, fill=False, padding=2) self.device_vendor = gtk.Label() self.device_vendor.set_alignment(0.0, 0.5) vendor = self.get_vendor_info(self.devices[0]) if vendor is None: vendor = "Not known" markup = "<span font_desc='12'>Vendor: %s</span>" % vendor self.device_vendor.set_markup(markup) self.device_model = gtk.Label() self.device_model.set_alignment(0.0, 0.5) model = self.get_model_info(self.devices[0]) if model is None: model = "Not known" markup = "<span font_desc='12'>Model: %s</span>" % model self.device_model.set_markup(markup) self.device_size = gtk.Label() self.device_size.set_alignment(0.0, 0.5) size = float(self.get_size_info(self.devices[0])) * 512 / 1024 / 1024 if size > 1024: size = size/1024 markup = "<span font_desc='12'>Size: %.2f GB</span>" % size else: markup = "<span font_desc='12'>Size: %.2f MB</span>" % size self.device_size.set_markup(markup) if len(self.devices) == 1: label = gtk.Label() label.set_alignment(0.0, 0.5) markup = "<span font_desc='12'>/dev/%s</span>" % self.devices[0] label.set_markup(markup) self.vbox.pack_start(label, expand=False, fill=False, padding=2) else: self.usb_combo = gtk.combo_box_new_text() self.usb_combo.connect("changed", self.usb_combo_changed_cb) model = self.usb_combo.get_model() model.clear() for usb in self.devices: self.usb_combo.append_text("/dev/" + usb) self.usb_combo.set_active(0) self.vbox.pack_start(self.usb_combo, expand=False, fill=False) label = gtk.Label() label.set_alignment(0.0, 0.5) markup = "<span font_desc='17' weight=\'bold\'>Device details</span>" label.set_markup(markup) self.vbox.pack_start(label, expand=False, fill=False, padding=2) self.vbox.pack_start(self.device_vendor, expand=False, fill=False, padding=2) self.vbox.pack_start(self.device_model, expand=False, fill=False, padding=2) self.vbox.pack_start(self.device_size, expand=False, fill=False, padding=2) button = self.add_button("Cancel", gtk.RESPONSE_NO) HobAltButton.style_button(button) button = self.add_button("Deploy image", gtk.RESPONSE_YES) tooltip = "Burn your image to an external storage device" button.set_tooltip_text(tooltip) HobButton.style_button(button) self.progress_bar = HobProgressBar() self.vbox.pack_start(self.progress_bar, expand=False, fill=False) self.vbox.show_all() self.progress_bar.hide()