def __init__(self, model, controller): log.debug('FileSystemView init start()') self.model = model self.controller = controller self.mount_list = MountList(self) self.avail_list = DeviceList(self, True) self.used_list = DeviceList(self, False) self.avail_list.table.bind(self.used_list.table) body = [ Text(_("FILE SYSTEM SUMMARY")), Text(""), Padding.push_2(self.mount_list), Text(""), Text(""), Text(_("AVAILABLE DEVICES")), Text(""), Padding.push_2(self.avail_list), Text(""), Text(""), Text(_("USED DEVICES")), Text(""), Padding.push_2(self.used_list), Text(""), ] self.lb = ListBox(body) frame = screen(self.lb, self._build_buttons(), focus_buttons=self.model.can_install()) frame.width = ('relative', 95) super().__init__(frame) log.debug('FileSystemView init complete()')
def __init__(self, model, controller): log.debug('FileSystemView init start()') self.model = model self.controller = controller self.mount_list = MountList(self) self.avail_list = DeviceList(self, True) self.used_list = DeviceList(self, False) self.avail_list.table.bind(self.used_list.table) self._create_raid_btn = Toggleable( menu_btn(label=_("Create software RAID (md)"), on_press=self.create_raid)) self._create_vg_btn = Toggleable( menu_btn(label=_("Create volume group (LVM)"), on_press=self.create_vg)) bp = button_pile([self._create_raid_btn, self._create_vg_btn]) bp.align = 'left' body = [ Text(_("FILE SYSTEM SUMMARY")), Text(""), Padding.push_2(self.mount_list), Text(""), Text(""), Text(_("AVAILABLE DEVICES")), Text(""), Padding.push_2(self.avail_list), Text(""), Padding.push_2(bp), Text(""), Text(""), Text(_("USED DEVICES")), Text(""), Padding.push_2(self.used_list), Text(""), ] self.lb = ListBox(body) frame = screen(self.lb, self._build_buttons(), focus_buttons=self.model.can_install()) frame.width = ('relative', 95) super().__init__(frame) self.refresh_model_inputs() log.debug('FileSystemView init complete()')
def refresh_model_inputs(self): devices = [ d for d in self.parent.model.all_devices() if (d.available() == self.show_available or ( not self.show_available and d.has_unavailable_partition())) ] if len(devices) == 0: self._w = Padding.push_2(self._no_devices_content) self.table.table_rows = [] return self._w = self.table log.debug('FileSystemView: building device list') rows = [] rows.append( Color.info_minor( TableRow([ Text(""), (2, Text(_("DEVICE"))), Text(_("TYPE")), Text(_("SIZE"), align="center"), Text(""), Text(""), ]))) for device in devices: for obj, cells in summarize_device( device, lambda part: part.available() == self.show_available): if obj is not None: menu = self._action_menu_for_device(obj) else: menu = Text("") if obj is device: start, end = '[', ']' else: start, end = '', '' cells = [Text(start)] + cells + [menu, Text(end)] if obj is not None: rows.append(make_action_menu_row(cells, menu)) else: rows.append(TableRow(cells)) if (self.show_available and device.used > 0 and device.free_for_partitions > 0): free = humanize_size(device.free_for_partitions) rows.append( TableRow([ Text(""), (3, Color.info_minor(Text(_("free space")))), Text(free, align="right"), Text(""), Text(""), ])) rows.append(TableRow([Text("")])) self.table.set_contents(rows[:-1]) if self.table._w.focus_position >= len(rows): self.table._w.focus_position = len(rows) - 1 while not self.table._w.focus.selectable(): self.table._w.focus_position -= 1
def refresh_model_inputs(self): mountinfos = [ MountInfo(mount=m) for m in sorted(self.parent.model.all_mounts(), key=lambda m: (m.path == "", m.path)) ] if len(mountinfos) == 0: self.table.set_contents([]) self._w = Padding.push_2(self._no_mounts_content) return self._w = self.table rows = [ TableRow([ Color.info_minor(heading) for heading in [ Text(" "), Text(_("MOUNT POINT")), Text(_("SIZE"), align='center'), Text(_("TYPE")), Text(_("DEVICE TYPE")), Text(" "), Text(" "), ] ]) ] for i, mi in enumerate(mountinfos): path_markup = mi.path if path_markup == "": path_markup = "SWAP" else: for j in range(i - 1, -1, -1): mi2 = mountinfos[j] if mi.startswith(mi2): part1 = "/".join(mi.split_path[:len(mi2.split_path)]) part2 = "/".join([''] + mi.split_path[len(mi2.split_path):]) path_markup = [('info_minor', part1), part2] break if j == 0 and mi2.split_path == ['', '']: path_markup = [ ('info_minor', "/"), "/".join(mi.split_path[1:]), ] actions = [(_("Unmount"), mi.mount.can_delete(), 'unmount')] menu = ActionMenu(actions) connect_signal(menu, 'action', self._mount_action, mi.mount) cells = [ Text("["), Text(path_markup), Text(mi.size, align='right'), Text(mi.fstype), Text(mi.desc), menu, Text("]"), ] row = make_action_menu_row(cells, menu, attr_map='menu_button', focus_map={ None: 'menu_button focus', 'info_minor': 'menu_button focus', }) rows.append(row) self.table.set_contents(rows) if self.table._w.focus_position >= len(rows): self.table._w.focus_position = len(rows) - 1