1 from urllib import urlretrieve
3 from Screens.Screen import Screen
4 from Screens.MessageBox import MessageBox
6 from Plugins.Plugin import PluginDescriptor
8 from Components.PluginComponent import plugins
9 from Components.Pixmap import Pixmap
10 from Components.ActionMap import ActionMap
11 from Components.Sources.StaticText import StaticText
12 from Components.FileList import FileList
14 class FPGAUpgrade(Screen):
16 <screen position="center,center" size="560,440" title="FPGA Upgrade" >
17 <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,7" size="140,40" alphatest="blend" />
18 <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,7" size="140,40" alphatest="blend" />
19 <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,7" size="140,40" alphatest="blend" />
20 <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,7" size="140,40" alphatest="blend" />
22 <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
23 <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
24 <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
25 <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
27 <widget source="status" render="Label" position="15,45" zPosition="1" size="540,40" font="Regular;18" halign="left" valign="center" backgroundColor="#a08500" transparent="1" />
28 <widget name="file_list" position="0,100" size="555,325" scrollbarMode="showOnDemand" />
31 def __init__(self, session):
32 Screen.__init__(self, session)
33 self.session = session
35 self["key_red"] = StaticText(_("Close"))
36 self["key_green"] = StaticText(_("Ugrade"))
37 self["key_yellow"] = StaticText(_(" "))
38 self["key_blue"] = StaticText(_("Download"))
39 #self["key_blue"] = StaticText(_(" "))
40 self["status"] = StaticText(_(" "))
41 self["file_list"] = FileList("/", matchingPattern = "^.*")
43 self["actions"] = ActionMap(["OkCancelActions", "ShortcutActions", "WizardActions", "ColorActions", ],
45 "red": self.onClickRed,
46 "green": self.onClickGreen,
47 "blue": self.onClickBlue,
48 "back": self.onClickRed,
51 "down": self.onClickDown,
52 "left": self.onClickLeft,
53 "right": self.onClickRight,
55 self.onLayoutFinish.append(self.doLayoutFinish)
59 self.SOURCELIST = self["file_list"]
60 self.STATUS_BAR = self["status"]
61 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
63 self.DEVICE_PATH = 'a'
64 self.DOWNLOAD_TAR_PATH = '/tmp/'
65 self.DOWNLOAD_FILE_NAME = 'fpga.vuplus'
66 self.DOWNLOAD_URL = ''
69 print self.DEVICE_PATH
70 print self.DOWNLOAD_TAR_PATH
71 print self.DOWNLOAD_FILE_NAME
72 print self.DOWNLOAD_URL
74 def doLayoutFinish(self):
82 f = open('/usr/lib/enigma2/python/Plugins/SystemPlugins/FPGAUpgrade/fpga.conf')
83 self.DOWNLOAD_URL = str(f.readline())
85 def doHook(self, blockNumber, blockSize, totalSize) :
86 if blockNumber*blockSize > totalSize :
87 self.STATUS_BAR.setText(_("Downloaded " + self.DOWNLOAD_TAR_PATH + self.DOWNLOAD_FILE_NAME))
89 self.STATUS_BAR.setText(_("Downloading..."))
91 def onCallbackHandler(self, confirmed):
99 def onClickGreen(self):
106 path = self.SOURCELIST.getCurrentDirectory() + self.SOURCELIST.getFilename()
108 #self.session.open(MessageBox, _("Can't select directory."), MessageBox.TYPE_INFO, timeout = 5)
111 self.ERROR_CODE = FPGA.fpga_upgrade(path, self.DEVICE_PATH)
112 if self.ERROR_CODE > 0:
113 self.ERROR_MSG = FPGA.get_error_msg(self.ERROR_CODE, self.ERROR_MSG)
114 self.session.openWithCallback(self.onCallbackHandler, MessageBox, _("Fail to upgrade.\nCause : " + self.ERROR_MSG + "\nDo you want to exit?"), MessageBox.TYPE_YESNO, timeout = 10, default = True)
116 print "DEVICE_PATH : ", self.DEVICE_PATH
117 print "FILE_PATH : ", path
119 self.session.open(MessageBox, _("Success!!"), MessageBox.TYPE_INFO, timeout = 5)
121 def onClickBlue(self):
126 fname, header = urlretrieve(self.DOWNLOAD_URL, self.DOWNLOAD_TAR_PATH + self.DOWNLOAD_FILE_NAME, self.doHook)
128 self.session.open(MessageBox, _(str(msg)), MessageBox.TYPE_INFO, timeout = 5)
131 self.SOURCELIST.changeDir(self.DOWNLOAD_TAR_PATH)
132 while cmp(self.SOURCELIST.getFilename(), self.DOWNLOAD_FILE_NAME) != 0 :
133 self.SOURCELIST.down()
136 if self.SOURCELIST.canDescent() : # isDir
137 self.SOURCELIST.descent()
138 if self.SOURCELIST.getCurrentDirectory():
139 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
145 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
147 def onClickDown(self):
148 self.SOURCELIST.down()
149 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
151 def onClickLeft(self):
152 self.SOURCELIST.pageUp()
153 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
155 def onClickRight(self):
156 self.SOURCELIST.pageDown()
157 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
159 def main(session, **kwargs):
160 session.open(FPGAUpgrade)
162 def Plugins(**kwargs):
163 return PluginDescriptor(name=_("FPGA Upgrade"), description="Upgrade FPGA..", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main)