def __init__(self, session, args=0):
     self.session = session
     Screen.__init__(self, session)
     self.disks = list()
     self.mdisks = Disks()
     self.asHDD = False
     for disk in self.mdisks.disks:
         capacity = "%d MB" % (disk[1] / (1024 * 1024))
         self.disks.append(
             DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))
     self["menu"] = List(self.disks)
     self["key_red"] = Button(_("Exit"))
     self["key_green"] = Button(_("Info"))
     if sfdisk:
         self["key_yellow"] = Button(_("Initialize"))
     else:
         self["key_yellow"] = Button("")
     self["key_blue"] = Button(_("Partitions"))
     self["actions"] = ActionMap(
         ["OkCancelActions", "ColorActions"], {
             "blue": self.blue,
             "yellow": self.yellow,
             "green": self.green,
             "red": self.quit,
             "cancel": self.quit,
         }, -2)
     self.onShown.append(self.setWindowTitle)
Beispiel #2
0
    def refresh(self):
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = "%d MB" % (disk[1] / (1024 * 1024))
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self["menu"].setList(self.disks)
Beispiel #3
0
	def refresh(self):
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = '%d MB' % (disk[1] / 1048576)
			self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

		self['menu'].setList(self.disks)
Beispiel #4
0
	def mkfs(self):
		disks = Disks()
		ret = disks.mkfs(self.disk[5][self.index][0][:3], self.index+1, self.fstype)
		if ret == 0:
			self.session.open(MessageBox, _("Format terminated with success"), MessageBox.TYPE_INFO)
		elif ret == -2:
			self.session.open(MessageBox, _("Cannot format current drive.\nA record in progress, timeshift or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again"), MessageBox.TYPE_ERROR)
		else:
			self.session.open(MessageBox, _("Error formatting disk. The disk may be damaged"), MessageBox.TYPE_ERROR)
Beispiel #5
0
	def mkfs(self):
		disks = Disks()
		ret = disks.mkfs(self.disk[5][self.index][0][:3], self.index+1, self.fstype)
		if ret == 0:
			self.session.open(MessageBox, _("Format terminated with success"), MessageBox.TYPE_INFO)
		elif ret == -2:
			self.session.open(MessageBox, _("Cannot format current drive.\nA record in progress, timeshift or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again"), MessageBox.TYPE_ERROR)
		else:
			self.session.open(MessageBox, _("Error formatting disk. The disk may be damaged"), MessageBox.TYPE_ERROR)
Beispiel #6
0
 def refreshMP(self, uirefresh=True):
     self.mdisks = Disks()
     self.mountpoints = MountPoints()
     self.mountpoints.read()
     self.disks = list()
     self.mounts = list()
     for disk in self.mdisks.disks:
         if disk[2] == True:
             diskname = disk[3]
             for partition in disk[5]:
                 mp = ""
                 rmp = ""
                 try:
                     mp = self.mountpoints.get(partition[0][:3],
                                               int(partition[0][3:]))
                     rmp = self.mountpoints.getRealMount(
                         partition[0][:3], int(partition[0][3:]))
                 except Exception, e:
                     pass
                 if len(mp) > 0:
                     self.disks.append(
                         MountEntry(
                             disk[3],
                             "P.%s (Fixed: %s)" % (partition[0][3:], mp)))
                     self.mounts.append(mp)
                 elif len(rmp) > 0:
                     self.disks.append(
                         MountEntry(
                             disk[3],
                             "P.%s (Fast: %s)" % (partition[0][3:], rmp)))
                     self.mounts.append(rmp)
Beispiel #7
0
	def __init__(self, session, args=0):
		self.session = session
		Screen.__init__(self, session)
		self.disks = list()
		self.mdisks = Disks()
		self.asHDD = False
		for disk in self.mdisks.disks:
			capacity = "%d MB" % (disk[1] / (1024 * 1024))
			self.disks.append(DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))
		self["menu"] = List(self.disks)
		self["key_red"] = Button(_("Exit"))
		self["key_green"] = Button(_("Info"))
		if sfdisk:
			self["key_yellow"] = Button(_("Initialize"))
		else:
			self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Partitions"))
		self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
		{
			"blue": self.blue,
			"yellow": self.yellow,
			"green": self.green,
			"red": self.quit,
			"cancel": self.quit,
		}, -2)
		self.onShown.append(self.setWindowTitle)
Beispiel #8
0
	def refresh(self):
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = "%d MB" % (disk[1] / (1024 * 1024))
			self.disks.append(DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))

		self["menu"].setList(self.disks)
Beispiel #9
0
    def refresh(self):
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = '%d MB' % (disk[1] / 1048576)
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self['menu'].setList(self.disks)
Beispiel #10
0
	def __init__(self, session, args = 0):
		self.session = session
		Screen.__init__(self, session)
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = '%d MB' % (disk[1] / 1048576)
			self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

		self['menu'] = ExtrasList(self.disks)
		self['key_red'] = Button(_('Partitions'))
		self['key_green'] = Button('Info')
		self['key_yellow'] = Button(_('Initialize'))
		self['key_blue'] = Button(_('Exit'))
		self['actions'] = ActionMap(['OkCancelActions', 'ColorActions'], {'blue': self.quit,
			'yellow': self.yellow,
			'green': self.green,
			'red': self.red,
			'cancel': self.quit}, -2)
		self.onShown.append(self.setWindowTitle)
Beispiel #11
0
class Main:

    server = Server(Cpu(), Ram(), Nics(), Disks())
    serverObject = {
        'Vendor': server.vendor,
        'Model': server.model,
        'Cpu': server.serverCpu.cpuObject,
        'Ram': server.serverRam.ramObject,
        'NICs': server.serverNics.nicsObject,
        'Disks': server.serverDisks.disksObject
    }

    print(Utils.convert_to_json(serverObject))
Beispiel #12
0
 def __init__(self, **kwargs):
     super(PartitionsScreen, self).__init__(**kwargs)
     Builder.load_file('partitions.kv')
     box_layout = BoxLayout()
     partitions_box_layout = BoxLayout(padding=50, orientation="vertical")
     disks = Disks()
     for partition in disks.get_partitions():
         partitions_box_layout.add_widget(PartitionWidget(partition))
     box_layout.add_widget(partitions_box_layout)
     file_chooser_layout = BoxLayout(orientation="vertical")
     self.file_chooser = FileChooserListView()
     file_chooser_layout.add_widget(self.file_chooser)
     buttons_box_layout = BoxLayout()
     buttons_box_layout.add_widget(
         Button(text="Run cleaner on selected directory",
                on_press=self.on_run_btn_press))
     buttons_box_layout.add_widget(
         Button(text="Give me some propositions",
                on_press=self.give_propositions))
     file_chooser_layout.add_widget(buttons_box_layout)
     box_layout.add_widget(file_chooser_layout)
     self.add_widget(box_layout)
Beispiel #13
0
 def initialize_vd(self):
     '''
     This method used to initialize virtual disk.
     Arguments : None
     Return: None
     '''
     uri = "physicaldisks"
     pd_data = Disks().do_get_physical_disks(uri, header=None)
     pd_data = json.loads(pd_data.content)
     for i in range(len(pd_data)):
         for key, val in pd_data[i].items():
             if key == "VirtualDiskId" and val in self.vd_id:
                 diskindex = pd_data[i]['DiskIndex']
                 ILDC().initial_disk(diskindex)
                 msg = "Initialized Virtual disk"
                 print(msg)
                 LogCreate().logger_info.info(msg)
                 break
     return diskindex
Beispiel #14
0
 def get_physical_disk_id(self):
     '''
     This method used to get all physical disk details.
     Arguments : None
     Return: None
     '''
     uri = "physicaldisks"
     pd_data = Disks().do_get_physical_disks(uri, header=None)
     pd_data = json.loads(pd_data.content)
     if len(pd_data) != 0:
         self.pd_ids = {
             x['DiskIndex']: x["Id"]
             for x in pd_data if x['Partitioned'] == False
         }
         msg = "Found %d physical disks in server group" % len(self.pd_ids)
         LogCreate().logger_info.info(msg)
     else:
         msg = "No Physical disks found"
         LogCreate().logger_error.error(msg)
     return self.pd_ids
Beispiel #15
0
    def __init__(self, session, args = 0):
        self.session = session
        Screen.__init__(self, session)
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = '%d MB' % (disk[1] / 1048576)
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self['menu'] = List(self.disks)
        self['key_red'] = Button(_('Mounts'))
        self['key_green'] = Button(_('Info'))
        self['key_yellow'] = Button(_('Initialize'))
        self['key_blue'] = Button(_('Exit'))
        self['actions'] = ActionMap(['OkCancelActions', 'ColorActions'], {'blue': self.quit,
         'yellow': self.yellow,
         'green': self.green,
         'red': self.red,
         'cancel': self.quit}, -2)
        self.onShown.append(self.setWindowTitle)
Beispiel #16
0
class HddSetup(Screen):
	skin = """
	<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">
		<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
		<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
		<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
		<ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
		<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
		<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
		<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
		<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
		<widget name="menu" position="20,45" size="520,380" scrollbarMode="showOnDemand" itemHeight="50" transparent="1" />
	</screen>"""

	def __init__(self, session, args = 0):
		self.session = session
		Screen.__init__(self, session)
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = '%d MB' % (disk[1] / 1048576)
			self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

		self['menu'] = ExtrasList(self.disks)
		self['key_red'] = Button(_('Partitions'))
		self['key_green'] = Button('Info')
		self['key_yellow'] = Button(_('Initialize'))
		self['key_blue'] = Button(_('Exit'))
		self['actions'] = ActionMap(['OkCancelActions', 'ColorActions'], {'blue': self.quit,
			'yellow': self.yellow,
			'green': self.green,
			'red': self.red,
			'cancel': self.quit}, -2)
		self.onShown.append(self.setWindowTitle)

	def setWindowTitle(self):
		self.setTitle(_('Atemio Device Manager'))

	def mkfs(self):
		self.formatted += 1
		return self.mdisks.mkfs(self.mdisks.disks[self.sindex][0], self.formatted)

	def refresh(self):
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = '%d MB' % (disk[1] / 1048576)
			self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

		self['menu'].setList(self.disks)

	def checkDefault(self):
		mp = MountPoints()
		mp.read()
		if not mp.exist('/hdd'):
			mp.add(self.mdisks.disks[self.sindex][0], 1, '/hdd')
			mp.write()
			mp.mount(self.mdisks.disks[self.sindex][0], 1, '/hdd')
			os.system('/bin/mkdir /hdd/movie')
			os.system('/bin/mkdir /hdd/music')
			os.system('/bin/mkdir /hdd/picture')

	def format(self, result):
		if result != 0:
			self.session.open(MessageBox, _('Cannot format partition %d' % self.formatted), MessageBox.TYPE_ERROR)
		if self.result == 0:
			if self.formatted > 0:
				self.checkDefault()
				self.refresh()
				return
		elif self.result > 0 and self.result < 3:
			if self.formatted > 1:
				self.checkDefault()
				self.refresh()
				return
		elif self.result == 3:
			if self.formatted > 2:
				self.checkDefault()
				self.refresh()
				return
		elif self.result == 4:
			if self.formatted > 3:
				self.checkDefault()
				self.refresh()
				return
		self.session.openWithCallback(self.format, ExtraActionBox, _('Formatting partition %d') % (self.formatted + 1), 'Initialize disk', self.mkfs)

	def fdiskEnded(self, result):
		if result == 0:
			self.format(0)
		elif result == -1:
			self.session.open(MessageBox, _('Cannot umount device.\nA record in progress, timeshit or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again'), MessageBox.TYPE_ERROR)
		else:
			self.session.open(MessageBox, _('Partitioning failed!'), MessageBox.TYPE_ERROR)

	def fdisk(self):
		return self.mdisks.fdisk(self.mdisks.disks[self.sindex][0], self.mdisks.disks[self.sindex][1], self.result)

	def initialaze(self, result):
		if result != 5:
			self.result = result
			self.formatted = 0
			mp = MountPoints()
			mp.read()
			mp.deleteDisk(self.mdisks.disks[self.sindex][0])
			mp.write()
			self.session.openWithCallback(self.fdiskEnded, ExtraActionBox, _('Partitioning...'), _('Initialize disk'), self.fdisk)

	def yellow(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getSelectedIndex()
			self.session.openWithCallback(self.initialaze, ExtraMessageBox, _('Please select your preferred configuration.'), _('HDD Partitioner'), [[_('One partition'), 'partitionmanager.png'],
				[_('Two partitions (50% - 50%)'), 'partitionmanager.png'],
				[_('Two partitions (75% - 25%)'), 'partitionmanager.png'],
				[_('Three partitions (33% - 33% - 33%)'), 'partitionmanager.png'],
				[_('Four partitions (25% - 25% - 25% - 25%)'), 'partitionmanager.png'],
				[_('Cancel'), 'cancel.png']], 1, 5)
				
	def green(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getSelectedIndex()
			self.session.open(HddInfo, self.mdisks.disks[self.sindex][0])
			
	def red(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getSelectedIndex()
			self.session.open(HddPartitions, self.mdisks.disks[self.sindex])
			
	def quit(self):
		self.close()
Beispiel #17
0
class HddSetup(Screen):
	if FULLHD:
		skin = """
		<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">
			<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
			<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
			<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
			<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
			<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
			<widget source="menu" render="Listbox" position="20,45" size="520,380" scrollbarMode="showOnDemand">
				<convert type="TemplatedMultiContent">
					{"template": [
						MultiContentEntryPixmapAlphaTest(pos = (5, 0), size = (48, 48), png = 0),
						MultiContentEntryText(pos = (65, 10), size = (330, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),
						MultiContentEntryText(pos = (405, 10), size = (125, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),
						],
						"fonts": [gFont("Regular", 22)],
						"itemHeight": 50
					}
				</convert>
			</widget>
		</screen>"""
	else:
		skin = """
		<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">
			<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
			<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
			<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
			<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
			<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
			<widget source="menu" render="Listbox" position="20,45" size="520,380" scrollbarMode="showOnDemand">
				<convert type="TemplatedMultiContent">
					{"template": [
						MultiContentEntryPixmapAlphaTest(pos = (5, 0), size = (48, 48), png = 0),
						MultiContentEntryText(pos = (65, 10), size = (330, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),
						MultiContentEntryText(pos = (405, 10), size = (125, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),
						],
						"fonts": [gFont("Regular", 22)],
						"itemHeight": 50
					}
				</convert>
			</widget>
		</screen>"""

	def __init__(self, session, args=0):
		self.session = session
		Screen.__init__(self, session)
		self.disks = list()
		self.mdisks = Disks()
		self.asHDD = False
		for disk in self.mdisks.disks:
			capacity = "%d MB" % (disk[1] / (1024 * 1024))
			self.disks.append(DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))
		self["menu"] = List(self.disks)
		self["key_red"] = Button(_("Exit"))
		self["key_green"] = Button(_("Info"))
		if sfdisk:
			self["key_yellow"] = Button(_("Initialize"))
		else:
			self["key_yellow"] = Button("")
		self["key_blue"] = Button(_("Partitions"))
		self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
		{
			"blue": self.blue,
			"yellow": self.yellow,
			"green": self.green,
			"red": self.quit,
			"cancel": self.quit,
		}, -2)
		self.onShown.append(self.setWindowTitle)

	def setWindowTitle(self):
		self.setTitle(_("Device Manager"))

	def isExt4Supported(self):
		return "ext4" in open("/proc/filesystems").read()

	def mkfs(self):
		self.formatted += 1
		return self.mdisks.mkfs(self.mdisks.disks[self.sindex][0], self.formatted, self.fsresult)

	def refresh(self):
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = "%d MB" % (disk[1] / (1024 * 1024))
			self.disks.append(DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))

		self["menu"].setList(self.disks)

	def checkDefault(self):
		mp = MountPoints()
		mp.read()
		if self.asHDD and not mp.exist("/media/hdd"):
			mp.add(self.mdisks.disks[self.sindex][0], 1, "/media/hdd")
			mp.write()
			mp.mount(self.mdisks.disks[self.sindex][0], 1, "/media/hdd")
			os.system("mkdir -p /media/hdd/movie")
			message = _("Fixed mounted first initialized Storage Device to /media/hdd. It needs a system restart in order to take effect.\nRestart your STB now?")
			mbox = self.session.openWithCallback(self.restartBox, MessageBox, message, MessageBox.TYPE_YESNO)
			mbox.setTitle(_("Restart STB"))

	def restartBox(self, answer):
		if answer is True:
			self.session.open(TryQuitMainloop, 2)

	def format(self, result):
		if result != 0:
			self.session.open(MessageBox, _("Cannot format partition %d") % (self.formatted), MessageBox.TYPE_ERROR)
		if self.result == 0:
			if self.formatted > 0:
				self.checkDefault()
				self.refresh()
				return
		elif self.result > 0 and self.result < 3:
			if self.formatted > 1:
				self.checkDefault()
				self.refresh()
				return
		elif self.result == 3:
			if self.formatted > 2:
				self.checkDefault()
				self.refresh()
				return
		elif self.result == 4:
			if self.formatted > 3:
				self.checkDefault()
				self.refresh()
				return
		self.session.openWithCallback(self.format, ExtraActionBox, _("Formatting partition %d") % (self.formatted + 1), _("Initialize disk"), self.mkfs)

	def fdiskEnded(self, result):
		if result == 0:
			self.format(0)
		elif result == -1:
			self.session.open(MessageBox, _("Cannot umount current device.\nA record in progress, timeshift or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again"), MessageBox.TYPE_ERROR)
		else:
			self.session.open(MessageBox, _("Partitioning failed!"), MessageBox.TYPE_ERROR)

	def fdisk(self):
		return self.mdisks.fdisk(self.mdisks.disks[self.sindex][0], self.mdisks.disks[self.sindex][1], self.result, self.fsresult)

	def initialaze(self, result):
		if not self.isExt4Supported():
			result += 1
		if result != 6:
			self.fsresult = result
			self.formatted = 0
			mp = MountPoints()
			mp.read()
			mp.deleteDisk(self.mdisks.disks[self.sindex][0])
			mp.write()
			self.session.openWithCallback(self.fdiskEnded, ExtraActionBox, _("Partitioning..."), _("Initialize disk"), self.fdisk)

	def chooseFSType(self, result):
		if result != 5:
			self.result = result
			if self.isExt4Supported():
				self.session.openWithCallback(self.initialaze, ExtraMessageBox, _("Format as"), _("Partitioner"),
											[ [ "Ext4", "partitionmanager.png" ],
											[ "Ext3", "partitionmanager.png" ],
											[ "Ext2", "partitionmanager.png" ],
											[ "NTFS", "partitionmanager.png" ],
											[ "exFAT", "partitionmanager.png" ],
											[ "Fat32", "partitionmanager.png" ],
											[ _("Cancel"), "cancel.png" ],
											], 1, 6)
			else:
				self.session.openWithCallback(self.initialaze, ExtraMessageBox, _("Format as"), _("Partitioner"),
											[ [ "Ext3", "partitionmanager.png" ],
											[ "Ext2", "partitionmanager.png" ],
											[ "NTFS", "partitionmanager.png" ],
											[ "exFAT", "partitionmanager.png" ],
											[ "Fat32", "partitionmanager.png" ],
											[ _("Cancel"), "cancel.png" ],
											], 1, 5)
	def yellow(self):
		self.asHDD = False
		if sfdisk and len(self.mdisks.disks) > 0:
			list = [(_("No - simple"), "simple"), (_("Yes - fstab entry as /media/hdd"), "as_hdd")]
			def extraOption(ret):
				if ret:
					if ret[1] == "as_hdd":
						self.asHDD = True
					self.yellowAswer()
			self.session.openWithCallback(extraOption, ChoiceBox, title = _("Initialize") + _(" as HDD ?"),list = list)

	def yellowAswer(self):
		if sfdisk and len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getIndex()
			self.session.openWithCallback(self.chooseFSType, ExtraMessageBox, _("Please select your preferred configuration.") + "\n" + _("Or use standard 'Harddisk Setup' to initialize your drive in ext4."), _("Partitioner"),
										[ [ _("One partition"), "partitionmanager.png" ],
										[ _("Two partitions (50% - 50%)"), "partitionmanager.png" ],
										[ _("Two partitions (75% - 25%)"), "partitionmanager.png" ],
										[ _("Three partitions (33% - 33% - 33%)"), "partitionmanager.png" ],
										[ _("Four partitions (25% - 25% - 25% - 25%)"), "partitionmanager.png" ],
										[ _("Cancel"), "cancel.png" ],
										], 1, 5)

	def green(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getIndex()
			self.session.open(HddInfo, self.mdisks.disks[self.sindex][0], self.mdisks.disks[self.sindex])

	def blue(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getIndex()
			if len(self.mdisks.disks[self.sindex][5]) == 0:
				self.session.open(MessageBox, _("You need to initialize your storage device first"), MessageBox.TYPE_ERROR)
			else:
				self.session.open(HddPartitions, self.mdisks.disks[self.sindex])

	def quit(self):
		self.close()
Beispiel #18
0
class HddSetup(Screen):
	skin = """
	<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">
		<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
		<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
		<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
		<ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
		<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
		<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
		<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
		<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
		<widget name="menu" position="20,45" size="520,380" scrollbarMode="showOnDemand" itemHeight="50" transparent="1" />
	</screen>"""

	def __init__(self, session, args = 0):
		self.session = session
		Screen.__init__(self, session)
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = '%d MB' % (disk[1] / 1048576)
			self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

		self['menu'] = ExtrasList(self.disks)
		self['key_red'] = Button(_('Exit'))
		self['key_green'] = Button('Info')
		self['key_yellow'] = Button(_('Initialize'))
		self['key_blue'] = Button(_('Partitions'))
		self['actions'] = ActionMap(['OkCancelActions', 'ColorActions'], {'red': self.quit,
			'yellow': self.yellow,
			'green': self.green,
			'blue': self.blue,
			'cancel': self.quit}, -2)
		self.onShown.append(self.setWindowTitle)

	def setWindowTitle(self):
		self.setTitle(_('Device Manager'))

	def mkfs(self):
		self.formatted += 1
		return self.mdisks.mkfs(self.mdisks.disks[self.sindex][0], self.formatted)

	def refresh(self):
		self.disks = list()
		self.mdisks = Disks()
		for disk in self.mdisks.disks:
			capacity = '%d MB' % (disk[1] / 1048576)
			self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

		self['menu'].setList(self.disks)

	def checkDefault(self):
		mp = MountPoints()
		mp.read()
		if not mp.exist('/hdd'):
			mp.add(self.mdisks.disks[self.sindex][0], 1, '/hdd')
			mp.write()
			mp.mount(self.mdisks.disks[self.sindex][0], 1, '/hdd')
			os.system('/bin/mkdir /hdd/movie')
			os.system('/bin/mkdir /hdd/music')
			os.system('/bin/mkdir /hdd/picture')

	def format(self, result):
		if result != 0:
			self.session.open(MessageBox, _('Cannot format partition %d' % self.formatted), MessageBox.TYPE_ERROR)
		if self.result == 0:
			if self.formatted > 0:
				self.checkDefault()
				self.refresh()
				return
		elif self.result > 0 and self.result < 3:
			if self.formatted > 1:
				self.checkDefault()
				self.refresh()
				return
		elif self.result == 3:
			if self.formatted > 2:
				self.checkDefault()
				self.refresh()
				return
		elif self.result == 4:
			if self.formatted > 3:
				self.checkDefault()
				self.refresh()
				return
		self.session.openWithCallback(self.format, ExtraActionBox, _('Formatting partition %d') % (self.formatted + 1), 'Initialize disk', self.mkfs)

	def fdiskEnded(self, result):
		if result == 0:
			self.format(0)
		elif result == -1:
			self.session.open(MessageBox, _('Cannot umount device.\nA record in progress, timeshit or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again'), MessageBox.TYPE_ERROR)
		else:
			self.session.open(MessageBox, _('Partitioning failed!'), MessageBox.TYPE_ERROR)

	def fdisk(self):
		return self.mdisks.fdisk(self.mdisks.disks[self.sindex][0], self.mdisks.disks[self.sindex][1], self.result)

	def initialaze(self, result):
		if result != 5:
			self.result = result
			self.formatted = 0
			mp = MountPoints()
			mp.read()
			mp.deleteDisk(self.mdisks.disks[self.sindex][0])
			mp.write()
			self.session.openWithCallback(self.fdiskEnded, ExtraActionBox, _('Partitioning...'), _('Initialize disk'), self.fdisk)

	def yellow(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getSelectedIndex()
			self.session.openWithCallback(self.initialaze, ExtraMessageBox, _('Please select your preferred configuration.'), _('HDD Partitioner'), [[_('One partition'), 'partitionmanager.png'],
				[_('Two partitions (50% - 50%)'), 'partitionmanager.png'],
				[_('Two partitions (75% - 25%)'), 'partitionmanager.png'],
				[_('Three partitions (33% - 33% - 33%)'), 'partitionmanager.png'],
				[_('Four partitions (25% - 25% - 25% - 25%)'), 'partitionmanager.png'],
				[_('Cancel'), 'cancel.png']], 1, 5)
				
	def green(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getSelectedIndex()
			self.session.open(HddInfo, self.mdisks.disks[self.sindex][0])
			
	def blue(self):
		if len(self.mdisks.disks) > 0:
			self.sindex = self['menu'].getSelectedIndex()
			self.session.open(HddPartitions, self.mdisks.disks[self.sindex])
			
	def quit(self):
		self.close()
Beispiel #19
0
class HddSetup(Screen):
    skin = '\n\t<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />\n\t\t<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />\n\t\t<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />\n\t\t<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />\n\t\t<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />\n\t\t<widget source="menu" render="Listbox" position="20,45" size="520,380" scrollbarMode="showOnDemand">\n\t\t\t<convert type="TemplatedMultiContent">\n\t\t\t\t{"template": [\n\t\t\t\t\tMultiContentEntryPixmapAlphaTest(pos = (5, 0), size = (48, 48), png = 0),\n\t\t\t\t\tMultiContentEntryText(pos = (65, 10), size = (330, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),\n\t\t\t\t\tMultiContentEntryText(pos = (405, 10), size = (125, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),\n\t\t\t\t\t],\n\t\t\t\t\t"fonts": [gFont("Regular", 22)],\n\t\t\t\t\t"itemHeight": 50\n\t\t\t\t}\n\t\t\t</convert>\n\t\t</widget>\n\t</screen>'

    def __init__(self, session, args = 0):
        self.session = session
        Screen.__init__(self, session)
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = '%d MB' % (disk[1] / 1048576)
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self['menu'] = List(self.disks)
        self['key_red'] = Button(_('Mounts'))
        self['key_green'] = Button(_('Info'))
        self['key_yellow'] = Button(_('Initialize'))
        self['key_blue'] = Button(_('Exit'))
        self['actions'] = ActionMap(['OkCancelActions', 'ColorActions'], {'blue': self.quit,
         'yellow': self.yellow,
         'green': self.green,
         'red': self.red,
         'cancel': self.quit}, -2)
        self.onShown.append(self.setWindowTitle)

    def setWindowTitle(self):
        self.setTitle(_('Devicelist'))

    def isExt4Supported(self):
        return 'ext4' in open('/proc/filesystems').read()

    def mkfs(self):
        self.formatted += 1
        return self.mdisks.mkfs(self.mdisks.disks[self.sindex][0], self.formatted, self.fsresult)

    def refresh(self):
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = '%d MB' % (disk[1] / 1048576)
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self['menu'].setList(self.disks)

    def checkDefault(self):
        mp = MountPoints()
        mp.read()
        if not mp.exist('/media/hdd'):
            mp.add(self.mdisks.disks[self.sindex][0], 1, '/media/hdd')
            mp.write()
            mp.mount(self.mdisks.disks[self.sindex][0], 1, '/media/hdd')
            os.system('/bin/mkdir -p /media/hdd/movie')
            message = _('Fixed mounted first initialized Storage Device to /media/hdd. It needs a system restart in order to take effect.\nRestart your STB now?')
            mbox = self.session.openWithCallback(self.restartBox, MessageBox, message, MessageBox.TYPE_YESNO)
            mbox.setTitle(_('Restart STB'))

    def restartBox(self, answer):
        if answer is True:
            self.session.open(TryQuitMainloop, 2)

    def format(self, result):
        if result != 0:
            self.session.open(MessageBox, _('Cannot format partition %d') % self.formatted, MessageBox.TYPE_ERROR)
        if self.result == 0:
            if self.formatted > 0:
                self.checkDefault()
                self.refresh()
                return
        elif self.result > 0 and self.result < 3:
            if self.formatted > 1:
                self.checkDefault()
                self.refresh()
                return
        elif self.result == 3:
            if self.formatted > 2:
                self.checkDefault()
                self.refresh()
                return
        elif self.result == 4:
            if self.formatted > 3:
                self.checkDefault()
                self.refresh()
                return
        self.session.openWithCallback(self.format, ExtraActionBox, _('Formatting partition %d') % (self.formatted + 1), _('Initialize disk'), self.mkfs)

    def fdiskEnded(self, result):
        if result == 0:
            self.format(0)
        elif result == -1:
            self.session.open(MessageBox, _('Cannot umount current device.\nA record in progress, timeshift or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again'), MessageBox.TYPE_ERROR)
        else:
            self.session.open(MessageBox, _('Partitioning failed!'), MessageBox.TYPE_ERROR)

    def fdisk(self):
        return self.mdisks.fdisk(self.mdisks.disks[self.sindex][0], self.mdisks.disks[self.sindex][1], self.result, self.fsresult)

    def initialaze(self, result):
        if not self.isExt4Supported():
            result += 1
        if result != 4:
            self.fsresult = result
            self.formatted = 0
            mp = MountPoints()
            mp.read()
            mp.deleteDisk(self.mdisks.disks[self.sindex][0])
            mp.write()
            self.session.openWithCallback(self.fdiskEnded, ExtraActionBox, _('Partitioning...'), _('Initialize disk'), self.fdisk)

    def chooseFSType(self, result):
        if result != 5:
            self.result = result
            if self.isExt4Supported():
                self.session.openWithCallback(self.initialaze, ExtraMessageBox, _('Format as'), _('Partitioner'), [['Ext4', 'partitionmanager.png'],
                 ['Ext3', 'partitionmanager.png'],
                 ['NTFS', 'partitionmanager.png'],
                 ['Fat32', 'partitionmanager.png'],
                 [_('Cancel'), 'cancel.png']], 1, 4)
            else:
                self.session.openWithCallback(self.initialaze, ExtraMessageBox, _('Format as'), _('Partitioner'), [['Ext3', 'partitionmanager.png'],
                 ['NTFS', 'partitionmanager.png'],
                 ['Fat32', 'partitionmanager.png'],
                 [_('Cancel'), 'cancel.png']], 1, 3)

    def yellow(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            self.session.openWithCallback(self.chooseFSType, ExtraMessageBox, _('Please select your preferred configuration.'), _('Partitioner'), [[_('One partition'), 'partitionmanager.png'],
             [_('Two partitions (50% - 50%)'), 'partitionmanager.png'],
             [_('Two partitions (75% - 25%)'), 'partitionmanager.png'],
             [_('Three partitions (33% - 33% - 33%)'), 'partitionmanager.png'],
             [_('Four partitions (25% - 25% - 25% - 25%)'), 'partitionmanager.png'],
             [_('Cancel'), 'cancel.png']], 1, 5)

    def green(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            self.session.open(HddInfo, self.mdisks.disks[self.sindex][0])

    def red(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            if len(self.mdisks.disks[self.sindex][5]) == 0:
                self.session.open(MessageBox, _('You need to initialize your storage device first'), MessageBox.TYPE_ERROR)
            else:
                self.session.open(HddPartitions, self.mdisks.disks[self.sindex])

    def quit(self):
        self.close()
class HddSetup(Screen):
    if FULLHD:
        skin = """
		<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">
			<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
			<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
			<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
			<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
			<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
			<widget source="menu" render="Listbox" position="20,45" size="520,380" scrollbarMode="showOnDemand">
				<convert type="TemplatedMultiContent">
					{"template": [
						MultiContentEntryPixmapAlphaTest(pos = (5, 0), size = (48, 48), png = 0),
						MultiContentEntryText(pos = (65, 10), size = (330, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),
						MultiContentEntryText(pos = (405, 10), size = (125, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),
						],
						"fonts": [gFont("Regular", 22)],
						"itemHeight": 50
					}
				</convert>
			</widget>
		</screen>"""
    else:
        skin = """
		<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">
			<ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />
			<ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
			<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
			<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
			<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />
			<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;18" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
			<widget source="menu" render="Listbox" position="20,45" size="520,380" scrollbarMode="showOnDemand">
				<convert type="TemplatedMultiContent">
					{"template": [
						MultiContentEntryPixmapAlphaTest(pos = (5, 0), size = (48, 48), png = 0),
						MultiContentEntryText(pos = (65, 10), size = (330, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),
						MultiContentEntryText(pos = (405, 10), size = (125, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),
						],
						"fonts": [gFont("Regular", 22)],
						"itemHeight": 50
					}
				</convert>
			</widget>
		</screen>"""

    def __init__(self, session, args=0):
        self.session = session
        Screen.__init__(self, session)
        self.disks = list()
        self.mdisks = Disks()
        self.asHDD = False
        for disk in self.mdisks.disks:
            capacity = "%d MB" % (disk[1] / (1024 * 1024))
            self.disks.append(
                DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))
        self["menu"] = List(self.disks)
        self["key_red"] = Button(_("Exit"))
        self["key_green"] = Button(_("Info"))
        if sfdisk:
            self["key_yellow"] = Button(_("Initialize"))
        else:
            self["key_yellow"] = Button("")
        self["key_blue"] = Button(_("Partitions"))
        self["actions"] = ActionMap(
            ["OkCancelActions", "ColorActions"], {
                "blue": self.blue,
                "yellow": self.yellow,
                "green": self.green,
                "red": self.quit,
                "cancel": self.quit,
            }, -2)
        self.onShown.append(self.setWindowTitle)

    def setWindowTitle(self):
        self.setTitle(_("Device Manager"))

    def isExt4Supported(self):
        return "ext4" in open("/proc/filesystems").read()

    def mkfs(self):
        self.formatted += 1
        return self.mdisks.mkfs(self.mdisks.disks[self.sindex][0],
                                self.formatted, self.fsresult)

    def refresh(self):
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = "%d MB" % (disk[1] / (1024 * 1024))
            self.disks.append(
                DiskEntry(disk[3], capacity, disk[2], disk[6], disk[7]))

        self["menu"].setList(self.disks)

    def checkDefault(self):
        mp = MountPoints()
        mp.read()
        if self.asHDD and not mp.exist("/media/hdd"):
            mp.add(self.mdisks.disks[self.sindex][0], 1, "/media/hdd")
            mp.write()
            mp.mount(self.mdisks.disks[self.sindex][0], 1, "/media/hdd")
            os.system("mkdir -p /media/hdd/movie")
            message = _(
                "Fixed mounted first initialized Storage Device to /media/hdd. It needs a system restart in order to take effect.\nRestart your STB now?"
            )
            mbox = self.session.openWithCallback(self.restartBox, MessageBox,
                                                 message,
                                                 MessageBox.TYPE_YESNO)
            mbox.setTitle(_("Restart STB"))

    def restartBox(self, answer):
        if answer is True:
            self.session.open(TryQuitMainloop, 2)

    def format(self, result):
        if result != 0:
            self.session.open(
                MessageBox,
                _("Cannot format partition %d") % (self.formatted),
                MessageBox.TYPE_ERROR)
        if self.result == 0:
            if self.formatted > 0:
                self.checkDefault()
                self.refresh()
                return
        elif self.result > 0 and self.result < 3:
            if self.formatted > 1:
                self.checkDefault()
                self.refresh()
                return
        elif self.result == 3:
            if self.formatted > 2:
                self.checkDefault()
                self.refresh()
                return
        elif self.result == 4:
            if self.formatted > 3:
                self.checkDefault()
                self.refresh()
                return
        self.session.openWithCallback(
            self.format, ExtraActionBox,
            _("Formatting partition %d") % (self.formatted + 1),
            _("Initialize disk"), self.mkfs)

    def fdiskEnded(self, result):
        if result == 0:
            self.format(0)
        elif result == -1:
            self.session.open(
                MessageBox,
                _("Cannot umount current device.\nA record in progress, timeshift or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again"
                  ), MessageBox.TYPE_ERROR)
        else:
            self.session.open(MessageBox, _("Partitioning failed!"),
                              MessageBox.TYPE_ERROR)

    def fdisk(self):
        return self.mdisks.fdisk(self.mdisks.disks[self.sindex][0],
                                 self.mdisks.disks[self.sindex][1],
                                 self.result, self.fsresult)

    def initialaze(self, result):
        if not self.isExt4Supported():
            result += 1
        if result != 6:
            self.fsresult = result
            self.formatted = 0
            mp = MountPoints()
            mp.read()
            mp.deleteDisk(self.mdisks.disks[self.sindex][0])
            mp.write()
            self.session.openWithCallback(self.fdiskEnded, ExtraActionBox,
                                          _("Partitioning..."),
                                          _("Initialize disk"), self.fdisk)

    def chooseFSType(self, result):
        if result != 5:
            self.result = result
            if self.isExt4Supported():
                self.session.openWithCallback(
                    self.initialaze, ExtraMessageBox, _("Format as"),
                    _("Partitioner"), [
                        ["Ext4", "partitionmanager.png"],
                        ["Ext3", "partitionmanager.png"],
                        ["Ext2", "partitionmanager.png"],
                        ["NTFS", "partitionmanager.png"],
                        ["exFAT", "partitionmanager.png"],
                        ["Fat32", "partitionmanager.png"],
                        [_("Cancel"), "cancel.png"],
                    ], 1, 6)
            else:
                self.session.openWithCallback(
                    self.initialaze, ExtraMessageBox, _("Format as"),
                    _("Partitioner"), [
                        ["Ext3", "partitionmanager.png"],
                        ["Ext2", "partitionmanager.png"],
                        ["NTFS", "partitionmanager.png"],
                        ["exFAT", "partitionmanager.png"],
                        ["Fat32", "partitionmanager.png"],
                        [_("Cancel"), "cancel.png"],
                    ], 1, 5)

    def yellow(self):
        self.asHDD = False
        if sfdisk and len(self.mdisks.disks) > 0:
            list = [(_("No - simple"), "simple"),
                    (_("Yes - fstab entry as /media/hdd"), "as_hdd")]

            def extraOption(ret):
                if ret:
                    if ret[1] == "as_hdd":
                        self.asHDD = True
                    self.yellowAswer()

            self.session.openWithCallback(extraOption,
                                          ChoiceBox,
                                          title=_("Initialize") +
                                          _(" as HDD ?"),
                                          list=list)

    def yellowAswer(self):
        if sfdisk and len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            self.session.openWithCallback(
                self.chooseFSType, ExtraMessageBox,
                _("Please select your preferred configuration.") + "\n" +
                _("Or use standard 'Harddisk Setup' to initialize your drive in ext4."
                  ), _("Partitioner"),
                [
                    [_("One partition"), "partitionmanager.png"],
                    [_("Two partitions (50% - 50%)"), "partitionmanager.png"],
                    [_("Two partitions (75% - 25%)"), "partitionmanager.png"],
                    [
                        _("Three partitions (33% - 33% - 33%)"),
                        "partitionmanager.png"
                    ],
                    [
                        _("Four partitions (25% - 25% - 25% - 25%)"),
                        "partitionmanager.png"
                    ],
                    [_("Cancel"), "cancel.png"],
                ], 1, 5)

    def green(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            self.session.open(HddInfo, self.mdisks.disks[self.sindex][0],
                              self.mdisks.disks[self.sindex])

    def blue(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            if len(self.mdisks.disks[self.sindex][5]) == 0:
                self.session.open(
                    MessageBox,
                    _("You need to initialize your storage device first"),
                    MessageBox.TYPE_ERROR)
            else:
                self.session.open(HddPartitions,
                                  self.mdisks.disks[self.sindex])

    def quit(self):
        self.close()
Beispiel #21
0
class HddSetup(Screen):
    skin = '\n\t<screen name="HddSetup" position="center,center" size="560,430" title="Hard Drive Setup">\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/yellow.png" position="280,0" size="140,40" alphatest="on" />\n\t\t<ePixmap pixmap="/usr/share/enigma2/skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />\n\t\t<widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />\n\t\t<widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />\n\t\t<widget name="key_yellow" position="280,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#a08500" transparent="1" />\n\t\t<widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />\n\t\t<widget source="menu" render="Listbox" position="20,45" size="520,380" scrollbarMode="showOnDemand">\n\t\t\t<convert type="TemplatedMultiContent">\n\t\t\t\t{"template": [\n\t\t\t\t\tMultiContentEntryPixmapAlphaTest(pos = (5, 0), size = (48, 48), png = 0),\n\t\t\t\t\tMultiContentEntryText(pos = (65, 10), size = (330, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 1),\n\t\t\t\t\tMultiContentEntryText(pos = (405, 10), size = (125, 38), font=0, flags = RT_HALIGN_LEFT|RT_VALIGN_TOP, text = 2),\n\t\t\t\t\t],\n\t\t\t\t\t"fonts": [gFont("Regular", 22)],\n\t\t\t\t\t"itemHeight": 50\n\t\t\t\t}\n\t\t\t</convert>\n\t\t</widget>\n\t</screen>'

    def __init__(self, session, args=0):
        self.session = session
        Screen.__init__(self, session)
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = '%d MB' % (disk[1] / 1048576)
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self['menu'] = List(self.disks)
        self['key_red'] = Button(_('Mounts'))
        self['key_green'] = Button(_('Info'))
        self['key_yellow'] = Button(_('Initialize'))
        self['key_blue'] = Button(_('Exit'))
        self['actions'] = ActionMap(
            ['OkCancelActions', 'ColorActions'], {
                'blue': self.quit,
                'yellow': self.yellow,
                'green': self.green,
                'red': self.red,
                'cancel': self.quit
            }, -2)
        self.onShown.append(self.setWindowTitle)

    def setWindowTitle(self):
        self.setTitle(_('Devicelist'))

    def isExt4Supported(self):
        return 'ext4' in open('/proc/filesystems').read()

    def mkfs(self):
        self.formatted += 1
        return self.mdisks.mkfs(self.mdisks.disks[self.sindex][0],
                                self.formatted, self.fsresult)

    def refresh(self):
        self.disks = list()
        self.mdisks = Disks()
        for disk in self.mdisks.disks:
            capacity = '%d MB' % (disk[1] / 1048576)
            self.disks.append(DiskEntry(disk[3], capacity, disk[2]))

        self['menu'].setList(self.disks)

    def checkDefault(self):
        mp = MountPoints()
        mp.read()
        if not mp.exist('/media/hdd'):
            mp.add(self.mdisks.disks[self.sindex][0], 1, '/media/hdd')
            mp.write()
            mp.mount(self.mdisks.disks[self.sindex][0], 1, '/media/hdd')
            os.system('/bin/mkdir -p /media/hdd/movie')
            message = _(
                'Fixed mounted first initialized Storage Device to /media/hdd. It needs a system restart in order to take effect.\nRestart your STB now?'
            )
            mbox = self.session.openWithCallback(self.restartBox, MessageBox,
                                                 message,
                                                 MessageBox.TYPE_YESNO)
            mbox.setTitle(_('Restart STB'))

    def restartBox(self, answer):
        if answer is True:
            self.session.open(TryQuitMainloop, 2)

    def format(self, result):
        if result != 0:
            self.session.open(MessageBox,
                              _('Cannot format partition %d') % self.formatted,
                              MessageBox.TYPE_ERROR)
        if self.result == 0:
            if self.formatted > 0:
                self.checkDefault()
                self.refresh()
                return
        elif self.result > 0 and self.result < 3:
            if self.formatted > 1:
                self.checkDefault()
                self.refresh()
                return
        elif self.result == 3:
            if self.formatted > 2:
                self.checkDefault()
                self.refresh()
                return
        elif self.result == 4:
            if self.formatted > 3:
                self.checkDefault()
                self.refresh()
                return
        self.session.openWithCallback(
            self.format, ExtraActionBox,
            _('Formatting partition %d') % (self.formatted + 1),
            _('Initialize disk'), self.mkfs)

    def fdiskEnded(self, result):
        if result == 0:
            self.format(0)
        elif result == -1:
            self.session.open(
                MessageBox,
                _('Cannot umount current device.\nA record in progress, timeshift or some external tools (like samba, swapfile and nfsd) may cause this problem.\nPlease stop this actions/applications and try again'
                  ), MessageBox.TYPE_ERROR)
        else:
            self.session.open(MessageBox, _('Partitioning failed!'),
                              MessageBox.TYPE_ERROR)

    def fdisk(self):
        return self.mdisks.fdisk(self.mdisks.disks[self.sindex][0],
                                 self.mdisks.disks[self.sindex][1],
                                 self.result, self.fsresult)

    def initialaze(self, result):
        if not self.isExt4Supported():
            result += 1
        if result != 4:
            self.fsresult = result
            self.formatted = 0
            mp = MountPoints()
            mp.read()
            mp.deleteDisk(self.mdisks.disks[self.sindex][0])
            mp.write()
            self.session.openWithCallback(self.fdiskEnded, ExtraActionBox,
                                          _('Partitioning...'),
                                          _('Initialize disk'), self.fdisk)

    def chooseFSType(self, result):
        if result != 5:
            self.result = result
            if self.isExt4Supported():
                self.session.openWithCallback(
                    self.initialaze, ExtraMessageBox, _('Format as'),
                    _('Partitioner'), [['Ext4', 'partitionmanager.png'],
                                       ['Ext3', 'partitionmanager.png'],
                                       ['NTFS', 'partitionmanager.png'],
                                       ['Fat32', 'partitionmanager.png'],
                                       [_('Cancel'), 'cancel.png']], 1, 4)
            else:
                self.session.openWithCallback(
                    self.initialaze, ExtraMessageBox, _('Format as'),
                    _('Partitioner'), [['Ext3', 'partitionmanager.png'],
                                       ['NTFS', 'partitionmanager.png'],
                                       ['Fat32', 'partitionmanager.png'],
                                       [_('Cancel'), 'cancel.png']], 1, 3)

    def yellow(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            self.session.openWithCallback(
                self.chooseFSType, ExtraMessageBox,
                _('Please select your preferred configuration.'),
                _('Partitioner'),
                [[_('One partition'), 'partitionmanager.png'],
                 [_('Two partitions (50% - 50%)'), 'partitionmanager.png'],
                 [_('Two partitions (75% - 25%)'), 'partitionmanager.png'],
                 [
                     _('Three partitions (33% - 33% - 33%)'),
                     'partitionmanager.png'
                 ],
                 [
                     _('Four partitions (25% - 25% - 25% - 25%)'),
                     'partitionmanager.png'
                 ], [_('Cancel'), 'cancel.png']], 1, 5)

    def green(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            self.session.open(HddInfo, self.mdisks.disks[self.sindex][0])

    def red(self):
        if len(self.mdisks.disks) > 0:
            self.sindex = self['menu'].getIndex()
            if len(self.mdisks.disks[self.sindex][5]) == 0:
                self.session.open(
                    MessageBox,
                    _('You need to initialize your storage device first'),
                    MessageBox.TYPE_ERROR)
            else:
                self.session.open(HddPartitions,
                                  self.mdisks.disks[self.sindex])

    def quit(self):
        self.close()