def ackedDestination(self): print "[ackedDestination]", self.branch, self.target_dir self.container.setCWD(resolveFilename(SCOPE_MEDIA) + "usb/") if self.target_dir[:8] == "/autofs/": self.target_dir = "/dev/" + self.target_dir[8:-1] if self.branch == STICK_WIZARD: job = StickWizardJob(self.target_dir) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.StickWizardCB, JobView, job, afterEventChangeable=False) elif self.branch != STICK_WIZARD: url = self.feedlists[self.branch][self.image_idx][1] filename = self.feedlists[self.branch][self.image_idx][0] print "[getImage] start downloading %s to %s" % (url, filename) if self.target_dir.startswith("/dev/"): job = ImageDownloadJob(url, filename, self.target_dir, self.usbmountpoint) else: job = ImageDownloadJob(url, filename, None, self.target_dir) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, afterEventChangeable=False)
def burnProject(self, answer=True): if not answer: return if self.project.settings.authormode.getValue() == "data_ts": job = Process.DVDdataJob(self.project) job_manager.AddJob(job) job_manager.in_background = False self.session.openWithCallback(self.JobViewCB, JobView, job) else: job = Process.DVDJob(self.project) job_manager.AddJob(job) job_manager.in_background = False self.session.openWithCallback(self.JobViewCB, JobView, job)
def doMove(self,result): if result is not None: if result[1]: filename = self.SOURCELIST.getFilename() sourceDir = self.SOURCELIST.getCurrentDirectory() targetDir = self.TARGETLIST.getCurrentDirectory() dst_file = targetDir if dst_file.endswith("/"): targetDir = dst_file[:-1] if not sourceDir in filename: job_manager.AddJob(FileTransferJob(sourceDir+filename, targetDir, False, False, "%s : %s" % (_("move file"), sourceDir+filename))) self.doMoveCB() else: job_manager.AddJob(FileTransferJob(filename, targetDir, True, False, "%s : %s" % (_("move folder"), filename))) self.doMoveCB()
def green(self, ret = None): sel = self["imageList"].l.getCurrentSelection() if sel == None: print"Nothing to select !!" return file_name = self.imagePath + "/" + sel self.filename = file_name self.sel = sel box = self.box() self.hide() if self.Online: if self.feed == "openeight": url = self.feedurl + "/images/" + box + "/" + sel else: url = self.feedurl + "/" + box + "/" + sel print "[Flash Online] Download image: >%s<" % url try: u = urllib2.urlopen(url) f = open(file_name, 'wb') f.close() job = ImageDownloadJob(url, file_name, sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable = False, afterEventChangeable = False) except urllib2.URLError as e: print "[Flash Online] Download failed !!\n%s" % e self.session.openWithCallback(self.ImageDownloadCB, MessageBox, _("Download Failed !!" + "\n%s" % e), type = MessageBox.TYPE_ERROR) self.close() else: self.session.openWithCallback(self.startInstallLocal, MessageBox, _("Do you want to backup your settings now?"), default=False)
def startInstallOnline(self, ret=None): box = self.box() if self.feed == "openeight": url = self.feedurl + "/images/" + box + "/" + self.sel else: url = self.feedurl + "/" + box + "/" + self.sel print "[Flash Online] Download image: >%s<" % url try: u = urllib2.urlopen(url) f = open(self.filename, 'wb') f.close() job = ImageDownloadJob(url, self.filename, self.sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) except urllib2.URLError as e: print "[Flash Online] Download failed !!\n%s" % e self.session.openWithCallback(self.ImageDownloadCB, MessageBox, _("Download Failed !!" + "\n%s" % e), type=MessageBox.TYPE_ERROR) self.close()
def delete_service(self, ref, serviceHandler): from Screens.MessageBox import MessageBox if config.usage.movielist_use_trash_dir.value: from Screens.MovieSelection import getTrashDir from Components.FileTransfer import FileTransferJob from Components.Task import job_manager trash_dir = getTrashDir(ref.getPath()) if trash_dir: src_file = str(ref.getPath()) dst_file = trash_dir if dst_file.endswith("/"): dst_file = trash_dir[:-1] text = _("remove") job_manager.AddJob( FileTransferJob(src_file, dst_file, False, False, "%s : %s" % (text, src_file))) else: result_txt = _( "Delete failed, because there is no movie trash !\nDisable movie trash in configuration to delete this item" ) self.session.openWithCallback(self.close, MessageBox, result_txt, MessageBox.TYPE_ERROR) return False else: offline = serviceHandler.offlineOperations(ref) if offline.deleteFromDisk(0): self.session.openWithCallback(self.close, MessageBox, _("You cannot delete this!"), MessageBox.TYPE_ERROR) return False return True
def green(self): sel = self["imageList"].l.getCurrentSelection() if sel == None: print "Nothing to select !!" return file_name = self.imagePath + "/" + sel self.filename = file_name box = self.box() self.hide() if self.Online: if self.imagesCounter == 0: url = self.feedurl + "/" + sel else: url = self.feedurl + "/" + box + "/" + sel #print "URL:", url u = urllib2.urlopen(url) f = open(file_name, 'wb') meta = u.info() file_size = int(meta.getheaders("Content-Length")[0]) print "Downloading: %s Bytes: %s" % (sel, file_size) job = ImageDownloadJob(url, file_name, sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) else: if sel == str(flashTmp): self.Start_Flashing() else: self.unzip_image(self.filename, flashPath)
def startInstallOnline(self, ret=None): box = self.box() brand = getMachineBrand() box = getBoxType() self.hide() if self.Online: if self.imagesCounter == 0: url = self.feedurl + "/" + brand + "/" + box + "/" + self.sel else: url = self.feedurl + "/" + brand + "/" + box + "/" + sel print "URL:", url u = urllib2.urlopen(url) f = open(self.filename, 'wb') meta = u.info() file_size = int(meta.getheaders("Content-Length")[0]) print "Downloading: %s Bytes: %s" % (self.sel, file_size) job = ImageDownloadJob(url, self.filename, self.sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) else: self.session.openWithCallback( self.startInstallLocal, MessageBox, _("Do you want to backup your settings now?"), default=False)
def start_download(self, path): image = self['downloadmenu'].getCurrent() if image: self.image_url = self['downloadmenu'].getCurrent()[0] self.image_name = self['downloadmenu'].getCurrent()[4] self.path = path self.file_name = os.path.join(self.path + '/', os.path.basename(self.image_url)) if fileExists(self.file_name) and self.verify_download(): self.download_finished(True) else: job_name = _('Download %s') % self.image_name job_manager.AddJob( downloadJob(self.image_url, self.file_name, job_name)) tasklist = [] for job in job_manager.getPendingJobs(): if job.name == job_name: tasklist.append( (job, job.name, job.getStatustext(), int(100 * job.progress / float(job.end)), str(100 * job.progress / float(job.end)) + '%')) break if len(tasklist): self.session.openWithCallback(self.download_finished, DownloadTaskScreen, self.skin_path, tasklist, job_name)
def green(self): sel = self["imageList"].l.getCurrentSelection() if sel == None: print "Nothing to select !!" return file_name = self.imagePath + "/" + sel self.filename = file_name box = self.box() self.hide() if self.Online: url = self.feedurl + "/" + box + "/" + sel f = open(file_name, 'wb') job = ImageDownloadJob(url, file_name, sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) else: if sel == str(flashTmp): self.Start_Flashing() else: self.unzip_image(self.filename, flashPath)
def startInstallOnline(self, ret = None): box = self.box() brand = getMachineBrand() box = getBoxType() self.hide() if self.Online: if self.imagesCounter == 0: url = self.feedurl + '/' + brand + '/' + box + '/' + self.sel else: url = self.feedurl + '/' + brand + '/' + box + '/' + sel print 'URL:', url u = urllib2.urlopen(url) f = open(self.filename, 'wb') meta = u.info() file_size = int(meta.getheaders('Content-Length')[0]) print 'Downloading: %s Bytes: %s' % (self.sel, file_size) job = ImageDownloadJob(url, self.filename, self.sel) job.afterEvent = 'close' job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) elif sel == str(flashTmp): self.flashWithRestoreQuestion() else: self.unzip_image(self.filename, flashPath)
def green(self, ret = None): sel = self['imageList'].l.getCurrentSelection() if sel == None: print 'Nothing to select !!' return else: file_name = self.imagePath + '/' + sel self.filename = file_name self.sel = sel box = self.box() self.hide() url = self.feedurl + '/' + box[0] + '/' + sel print '[NFR4XBoot] Image download url: ', url try: u = urllib2.urlopen(url) except: self.session.open(MessageBox, _('The URL to this image is not correct !!'), type=MessageBox.TYPE_ERROR) self.close() f = open(file_name, 'wb') f.close() meta = u.info() file_size = int(meta.getheaders('Content-Length')[0]) print 'Downloading: %s Bytes: %s' % (sel, file_size) job = ImageDownloadJob(url, file_name, sel) job.afterEvent = 'close' job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) return
def okClicked(self): svfile = "/tmp/vid" self.svf = svfile JobManager.AddJob(downloadJob(self, self.urtmp, svfile, 'Title 1')) # self.LastJobView() self.play()
def do_run_script(self, answer): answer = answer and answer[1] if answer in ("YES", "PAR", "YES_BG", "PAR_BG"): if not os.access(self.commando, os.R_OK): self.session.open(MessageBox, _("Script '%s' must have read permission to be able to run it") % self.commando, type=MessageBox.TYPE_ERROR, close_on_any_key=True) return nice = config.plugins.filecommander.script_priority_nice.value or '' ionice = config.plugins.filecommander.script_priority_ionice.value or '' if nice: nice = 'nice -n %d ' %nice if ionice: ionice = 'ionice -c %d ' %ionice priority = '%s%s' %(nice,ionice) if self.commando.endswith('.sh'): if os.access(self.commando, os.X_OK): if 'PAR' in answer: cmdline = "%s%s '%s'" %(priority, self.commando, self.parameter) else: cmdline = "%s%s" %(priority, self.commando) else: if 'PAR' in answer: cmdline = "%s/bin/sh %s '%s'" %(priority, self.commando, self.parameter) else: cmdline = "%s/bin/sh %s" %(priority, self.commando) else: if 'PAR' in answer: cmdline = "%s/usr/bin/python %s '%s'" %(priority, self.commando, self.parameter) else: cmdline = "%s/usr/bin/python %s" %(priority, self.commando) elif answer == "VIEW": try: yfile = os.stat(self.commando) except OSError as oe: self.session.open(MessageBox, _("%s: %s") % (self.commando, oe.strerror), type=MessageBox.TYPE_ERROR) return if (yfile.st_size < 1000000): self.session.open(vEditor, self.commando) if answer and answer != "VIEW": if answer.endswith('_BG'): global task_Stout, task_Sterr task_Stout = [] task_Sterr = [] if 'PAR' in answer: name = '%s%s %s' %(priority, self.commando, self.parameter) else: name = '%s%s' %(priority, self.commando) job = Job(_("Run script") + " ('%s')" %name) task = Task(job, name) task.postconditions.append(task_postconditions()) task.processStdout = task_processStdout task.processStderr = task_processSterr task.setCmdline(cmdline) job_manager.AddJob(job, onSuccess=self.finishedCB, onFail=self.failCB) self.jobs += 1 self.onLayout() else: self.session.open(Console, cmdlist=(cmdline,))
def goYellow(self): targetDir = self.TARGETLIST.getCurrentDirectory() for file in self.selectedFiles: extension = file.split('.') extension = extension[-1].lower() if MOVIEEXTENSIONS.has_key(extension): print "[Moviebrowser]: skip " +extension else: print "[Moviebrowser]: copy " +extension dst_file = targetDir if dst_file.endswith("/"): targetDir = dst_file[:-1] if file.endswith("/"): job_manager.AddJob(FileTransferJob(file, targetDir, True, True, "%s : %s" % (_("copy folder"),file))) else: job_manager.AddJob(FileTransferJob(file, targetDir, False, True, "%s : %s" % (_("copy file"),file))) self.exit()
def hddConfirmed(self, confirmed): if not confirmed: return from Components.Task import job_manager try: job_manager.AddJob(self.action(), onSuccess=job_manager.popupTaskView) except Exception as ex: self.session.open(MessageBox, str(ex), type=MessageBox.TYPE_ERROR, timeout=10) self.close()
def doFormat(self): self.reset() try: job_manager.AddJob(self.internalHdd.createInitializeJob(), onSuccess=self.formatSucceeded, onFail=self.formatFailed) for job in job_manager.getPendingJobs(): if job.name == _("Initializing storage device..."): self.showJobView(job) break except Exception, ex: self.session.open(MessageBox, _("Can't start job to format HDD\n")+str(ex), type=MessageBox.TYPE_ERROR, timeout=10)
def green(self, ret=None): sel = self['imageList'].l.getCurrentSelection() if sel == None: print('Nothing to select !!') return else: file_name = self.imagePath + '/' + sel self.filename = file_name self.sel = sel box = self.box() self.hide() if self.distro == 'openvix': url = self.feedurl + '/openvix-builds/' + box[0] + '/' + sel elif self.distro == 'openeight': url = self.feedurl + '/images/' + box[0] + '/' + sel elif self.distro == 'openhdf': url = self.feedurl + '/' + sel elif self.distro == 'pure2': url = 'http://pur-e2.club/OU/images/' + ImageVersion + '/' + BRANDOEM + '/' + sel else: url = self.feedurl + '/' + box[0] + '/' + sel print('[NFR4XBoot] Image download url: ', url) try: user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7' headers = { 'User-Agent': user_agent, } req = urllib.request.Request(url, None, headers) u = urllib.request.urlopen(req) except: self.session.open(MessageBox, _('The URL to this image is not correct !!'), type=MessageBox.TYPE_ERROR) self.close() f = open(file_name, 'wb') f.close() try: file_size = int(u.getheader('Content-Length')) print('Downloading: %s Bytes: %s' % (sel, file_size)) job = ImageDownloadJob(url, file_name, sel) job.afterEvent = 'close' job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) return except: self.session.open(MessageBox, _('The URL to this image is not correct !!'), type=MessageBox.TYPE_ERROR) self.close()
def green(self, ret = None): sel = self['imageList'].l.getCurrentSelection() if sel == None: print 'Nothing to select !!' return else: file_name = self.imagePath + '/' + sel self.filename = file_name self.sel = sel box = self.box() self.hide() if self.distro == 'openvix': url = self.feedurl + '/openvix-builds/' + box[1] + '/' + sel #elif self.distro == 'openpli': #url = 'http://downloads.pli-images.org/builds/' + box[0] + '/' + sel elif self.distro == 'pure2': url = 'http://pur-e2.club/OU/images/6.1/' + BRANDOEM + '/' + sel elif self.distro == 'opendroid': url = self.feedurl + '/' + BRANDOEMDROID + '/' + MASCHINEBUILD + '/' + sel elif self.distro == 'openhdf': url = self.feedurl + '/' + sel elif self.distro == 'satdreamgr': url = self.feedurl + '/' + sel elif self.distro == 'hdmu': self.feedurl2 = 'www.hdmedia-universe.com/images/' url = 'http://www.hdmedia-universe.com/images/arm/' + box[0] + '/' + sel elif self.distro == 'egami': if box[0] == "ax51": url = 'http://image.egami-image.com/hd51/' + sel else: url = 'http://image.egami-image.com/' + box[0] + '/' + sel else: url = self.feedurl + '/' + box[0] + '/' + sel print '[NFR4XBoot] Image download url: ', url try: u = urllib2.urlopen(url) except: self.session.open(MessageBox, _('The URL to this image is not correct !!'), type=MessageBox.TYPE_ERROR) self.close() f = open(file_name, 'wb') f.close() try: meta = u.info() file_size = int(meta.getheaders('Content-Length')[0]) print 'Downloading: %s Bytes: %s' % (sel, file_size) job = ImageDownloadJob(url, file_name, sel) job.afterEvent = 'close' job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable=False, afterEventChangeable=False) return except: self.session.open(MessageBox, _('The URL to this image is not correct !!'), type=MessageBox.TYPE_ERROR) self.close()
def hddConfirmed(self, confirmed): if not confirmed: return from Components.Task import job_manager try: job = self.action() job_manager.AddJob(job, onSuccess=job_manager.popupTaskView) from TaskView import JobView self.session.open(JobView, job, afterEventChangeable=False) except Exception, ex: self.session.open(MessageBox, str(ex), type=MessageBox.TYPE_ERROR, timeout=10)
def hddConfirmed(self, confirmed): if not confirmed: return try: job_manager.AddJob(self.action()) for job in job_manager.getPendingJobs(): if job.name in (_("Initializing storage device..."), _("Checking filesystem..."),_("Converting ext3 to ext4...")): self.showJobView(job) break except Exception, ex: self.session.open(MessageBox, str(ex), type=MessageBox.TYPE_ERROR, timeout=10)
def createJob(self): self.job = Job("Image flashing job") self.job.afterEvent = "close" cwd = self["filelist"].getCurrentDirectory() md5verify(self.job, cwd, self.md5sum) writeNAND(self.job, [self.nfifile], self.box) self["key_blue"].text = "" self["key_yellow"].text = "" self["key_green"].text = "" job_manager.AddJob(self.job) self.session.openWithCallback(self.flashed, JobView, self.job, cancelable = False, backgroundable = False, afterEventChangeable = False)
def addJob(self, job, updateDirs): self.jobs += 1 self.onLayout() self.updateDirs.update(updateDirs) if isinstance(job, list): container = eConsoleAppContainer() container.appClosed.append(self.finishedCB) self.containers.append(container) retval = container.execute("rm", "rm", "-rf", *job) if retval: self.finishedCB(retval) else: job_manager.AddJob(job, onSuccess=self.finishedCB)
def green(self, ret = None): sel = self["imageList"].l.getCurrentSelection() if sel == None: print"Nothing to select !!" return file_name = self.imagePath + "/" + sel self.filename = file_name self.sel = sel box = self.box() self.hide() if self.Online: url = self.feedurl + "/" + box + "/" + sel print "[Flash Online] Download image: >%s<" % url if self.newfeed: self.feedurl = self.newfeed[0][:-1] url = self.feedurl + "/" + box + "/" + sel authinfo = urllib2.HTTPPasswordMgrWithDefaultRealm() authinfo.add_password(None, self.feedurl, self.newfeed[1][:-1], self.newfeed[2][:-1]) handler = urllib2.HTTPBasicAuthHandler(authinfo) myopener = urllib2.build_opener(handler) opened = urllib2.install_opener(myopener) u = urllib2.urlopen(url) total_size = int(u.info().getheaders("Content-Length")[0]) downloaded = 0 CHUNK = 256 * 1024 with open(file_name, 'wb') as fp: while True: chunk = u.read(CHUNK) downloaded += len(chunk) print "Downloading: %s Bytes of %s" % (downloaded, total_size) if not chunk: break fp.write(chunk) self.ImageDownloadCB(False) else: try: u = urllib2.urlopen(url) f = open(file_name, 'wb') f.close() job = ImageDownloadJob(url, file_name, sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable = False, afterEventChangeable = False) except urllib2.URLError as e: print "[Flash Online] Download failed !!\n%s" % e self.session.openWithCallback(self.ImageDownloadCB, MessageBox, _("Download Failed !!" + "\n%s" % e), type = MessageBox.TYPE_ERROR) self.close() else: self.session.openWithCallback(self.startInstallLocal, MessageBox, _("Do you want to backup your settings now?"), default=False)
def green(self): sel = self["imageList"].l.getCurrentSelection() if sel == None: print"Nothing to select !!" return file_name = self.imagePath + "/" + sel self.filename = file_name box = self.box() self.hide() if self.Online: url = self.feedurl + "/" + box + "/" + sel if self.newfeed: self.feedurl = self.newfeed[0][:-1] url = self.feedurl + "/" + box + "/" + sel authinfo = urllib2.HTTPPasswordMgrWithDefaultRealm() authinfo.add_password(None, self.feedurl, self.newfeed[1][:-1], self.newfeed[2][:-1]) handler = urllib2.HTTPBasicAuthHandler(authinfo) myopener = urllib2.build_opener(handler) opened = urllib2.install_opener(myopener) u = urllib2.urlopen(url) total_size = int(u.info().getheaders("Content-Length")[0]) downloaded = 0 CHUNK = 256 * 1024 with open(file_name, 'wb') as fp: while True: chunk = u.read(CHUNK) downloaded += len(chunk) print "Downloading: %s Bytes of %s" % (downloaded, total_size) if not chunk: break fp.write(chunk) self.ImageDownloadCB(False) else: u = urllib2.urlopen(url) f = open(file_name, 'wb') f.close() #meta = u.info() #file_size = int(meta.getheaders("Content-Length")[0]) #print "Downloading: %s Bytes: %s" % (sel, file_size) job = ImageDownloadJob(url, file_name, sel) job.afterEvent = "close" job_manager.AddJob(job) job_manager.failed_jobs = [] self.session.openWithCallback(self.ImageDownloadCB, JobView, job, backgroundable = False, afterEventChangeable = False) else: if sel == str(flashTmp): self.Start_Flashing() else: self.unzip_image(self.filename, flashPath)
def goGreen(self): targetDir = self.TARGETLIST.getCurrentDirectory() for file in self.selectedFiles: extension = file.split('.') extension = extension[-1].lower() if extension in MOVIEEXTENSIONS: print "[FileCommander] skip " + extension else: print "[FileCommander] copy " + extension dst_file = targetDir if dst_file.endswith("/"): targetDir = dst_file[:-1] job_manager.AddJob( FileTransferJob(file, targetDir, False, False, "%s : %s" % (_("move file"), file))) self.exit()
def format(self): if self.formattable: job = DVDformatJob(self) job_manager.AddJob(job) from Screens.TaskView import JobView self.session.openWithCallback(self.formatCB, JobView, job)
def previewMenu(self): job = Process.DVDJob(self.project, menupreview=True) job_manager.in_background = False job_manager.AddJob(job)
def burnISO(self, path, scope, configRef): if path: job = Process.DVDisoJob(self.project, path) job_manager.AddJob(job) job_manager.in_background = False self.session.openWithCallback(self.JobViewCB, JobView, job)
def cut(self, name, inpath, outpath, inlen, outlen, clist): job = Job(_("Execute cuts")) CutTask(job, self.session, name, inpath, outpath, inlen, outlen, mcut_path, clist) JobManager.AddJob(job, onFail=self.noFail) self.close(True)