130
128
self.pulsing = False
130
# Hide erase in fastboot mode
131
if self.fastboot_mode:
132
self.format_dest.hide()
133
self.intro_label.set_text(_('To run Ubuntu on a portable device, it needs to be set up first.'))
134
self.label2.set_text(_('Source disc image (.img):'))
135
self.label3.set_text(_('Target device:'))
136
self.window.set_title(_('Ubuntu Core Installer'))
137
self.button_install.set_label(_('Install Ubuntu Core'))
138
self.button_help.set_label(_('Legal'))
139
self.button_help.connect('clicked', self.show_eula)
140
self.eula_dialog.add_buttons(
141
Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
142
Gtk.STOCK_OK, Gtk.ResponseType.OK
144
with open(eula_path, 'r') as f:
145
text = ''.join(f.readlines())
146
self.eula_text.get_buffer().set_text(text)
148
# we currently do not have help
149
self.button_help.hide()
150
#self.button_help.connect('clicked', lambda x: Gtk.show_uri(self.button_help.get_screen(),
151
# 'ghelp:usb-creator',
152
# Gtk.get_current_event_time()))
132
154
self.setup_sources_treeview()
133
155
self.setup_targets_treeview()
134
156
self.persist_vbox.set_sensitive(False)
355
379
column_name.set_cell_data_func(cell_name, column_data_func, 0)
356
380
column_name.set_cell_data_func(cell_pixbuf, pixbuf_data_func, None)
358
cell_version = Gtk.CellRendererText()
359
cell_version.set_property('ellipsize', Pango.EllipsizeMode.END)
360
column_name = Gtk.TreeViewColumn(_('OS Version'), cell_version)
361
column_name.set_cell_data_func(cell_version, column_data_func, 1)
362
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
363
column_name.set_resizable(True)
364
column_name.set_expand(True)
365
column_name.set_min_width(75)
366
self.source_treeview.append_column(column_name)
382
if not self.fastboot_mode:
383
cell_version = Gtk.CellRendererText()
384
cell_version.set_property('ellipsize', Pango.EllipsizeMode.END)
385
column_name = Gtk.TreeViewColumn(_('OS Version'), cell_version)
386
column_name.set_cell_data_func(cell_version, column_data_func, 1)
387
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
388
column_name.set_resizable(True)
389
column_name.set_expand(True)
390
column_name.set_min_width(75)
391
self.source_treeview.append_column(column_name)
368
393
cell_size = Gtk.CellRendererText()
369
394
cell_size.set_property('ellipsize', Pango.EllipsizeMode.END)
416
441
m.row_changed(m.get_path(iterator), iterator)
418
443
iterator = m.iter_next(iterator)
445
target = self.backend.targets[udi]
419
447
# Update persistence maximum value.
420
self.persist_vbox.set_sensitive(False)
421
self.persist_enabled_vbox.set_sensitive(False)
422
target = self.backend.targets[udi]
423
persist_mb = target['persist'] / 1024 / 1024
424
if persist_mb > misc.MIN_PERSISTENCE:
425
self.persist_vbox.set_sensitive(True)
426
self.persist_enabled_vbox.set_sensitive(True)
427
self.persist_value.set_range(misc.MIN_PERSISTENCE, persist_mb)
428
self.persist_value.set_value(misc.MIN_PERSISTENCE)
448
if not self.fastboot_mode:
449
self.persist_vbox.set_sensitive(False)
450
self.persist_enabled_vbox.set_sensitive(False)
451
persist_mb = target['persist'] / 1024 / 1024
452
if persist_mb > misc.MIN_PERSISTENCE:
453
self.persist_vbox.set_sensitive(True)
454
self.persist_enabled_vbox.set_sensitive(True)
455
self.persist_value.set_range(misc.MIN_PERSISTENCE, persist_mb)
456
self.persist_value.set_value(misc.MIN_PERSISTENCE)
429
458
# Update install button state.
430
459
status = target['status']
431
460
source = self.backend.get_current_source()
546
578
column_name.set_cell_data_func(cell_name, column_data_func, 0)
547
579
column_name.set_cell_data_func(cell_pixbuf, pixbuf_data_func, None)
549
cell_name = Gtk.CellRendererText()
550
cell_name.set_property('ellipsize', Pango.EllipsizeMode.END)
551
column_name = Gtk.TreeViewColumn(_('Label'), cell_name)
552
column_name.set_cell_data_func(cell_name, column_data_func, 1)
553
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
554
column_name.set_resizable(True)
555
column_name.set_expand(True)
556
column_name.set_min_width(75)
557
self.dest_treeview.append_column(column_name)
559
cell_capacity = Gtk.CellRendererText()
560
cell_capacity.set_property('ellipsize', Pango.EllipsizeMode.END)
561
column_name = Gtk.TreeViewColumn(_('Capacity'), cell_capacity)
562
column_name.set_cell_data_func(cell_capacity, column_data_func, 2)
563
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
564
column_name.set_resizable(True)
565
column_name.set_expand(False)
566
column_name.set_min_width(75)
567
self.dest_treeview.append_column(column_name)
569
cell_free = Gtk.CellRendererText()
570
cell_free.set_property('ellipsize', Pango.EllipsizeMode.END)
571
column_name = Gtk.TreeViewColumn(_('Free Space'), cell_free)
572
column_name.set_cell_data_func(cell_free, column_data_func, 3)
573
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
574
column_name.set_resizable(True)
575
column_name.set_expand(False)
576
column_name.set_min_width(75)
577
self.dest_treeview.append_column(column_name)
581
if not self.fastboot_mode:
582
cell_name = Gtk.CellRendererText()
583
cell_name.set_property('ellipsize', Pango.EllipsizeMode.END)
584
column_name = Gtk.TreeViewColumn(_('Label'), cell_name)
585
column_name.set_cell_data_func(cell_name, column_data_func, 1)
586
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
587
column_name.set_resizable(True)
588
column_name.set_expand(True)
589
column_name.set_min_width(75)
590
self.dest_treeview.append_column(column_name)
592
cell_capacity = Gtk.CellRendererText()
593
cell_capacity.set_property('ellipsize', Pango.EllipsizeMode.END)
594
column_name = Gtk.TreeViewColumn(_('Capacity'), cell_capacity)
595
column_name.set_cell_data_func(cell_capacity, column_data_func, 2)
596
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
597
column_name.set_resizable(True)
598
column_name.set_expand(False)
599
column_name.set_min_width(75)
600
self.dest_treeview.append_column(column_name)
602
cell_free = Gtk.CellRendererText()
603
cell_free.set_property('ellipsize', Pango.EllipsizeMode.END)
604
column_name = Gtk.TreeViewColumn(_('Free Space'), cell_free)
605
column_name.set_cell_data_func(cell_free, column_data_func, 3)
606
column_name.set_sizing(Gtk.TreeViewColumnSizing.AUTOSIZE)
607
column_name.set_resizable(True)
608
column_name.set_expand(False)
609
column_name.set_min_width(75)
610
self.dest_treeview.append_column(column_name)
579
612
def add_file_source_dialog(self, *args):
581
614
chooser = Gtk.FileChooserDialog(title=None,action=Gtk.FileChooserAction.OPEN,
582
615
buttons=(Gtk.STOCK_CANCEL,Gtk.ResponseType.CANCEL,Gtk.STOCK_OPEN,Gtk.ResponseType.OK))
583
for p, n in (('*.iso', _('CD Images')), ('*.img', _('Disk Images'))):
616
def _add_filter(p, n):
584
617
filter = Gtk.FileFilter()
585
618
filter.add_pattern(p)
586
619
filter.set_name(n)
587
620
chooser.add_filter(filter)
622
if not self.fastboot_mode:
623
_add_filter('*.iso', _('CD Images'))
624
_add_filter('*.img', _('Disk Images'))
588
626
folder = os.path.expanduser('~')
589
627
chooser.set_current_folder(folder)
590
628
response = chooser.run()