1 from urllib import urlretrieve
4 from Screens.Screen import Screen
5 from Screens.MessageBox import MessageBox
7 from Plugins.Plugin import PluginDescriptor
9 from Components.PluginComponent import plugins
10 from Components.Pixmap import Pixmap
11 from Components.ActionMap import ActionMap
12 from Components.Sources.StaticText import StaticText
13 from Components.FileList import FileList
15 class FPGAUpgrade(Screen):
17 <screen position="center,center" size="560,440" title="FPGA Upgrade" >
18 <ePixmap pixmap="Vu_HD/buttons/red.png" position="0,7" size="140,40" alphatest="blend" />
19 <ePixmap pixmap="Vu_HD/buttons/green.png" position="140,7" size="140,40" alphatest="blend" />
20 <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="280,7" size="140,40" alphatest="blend" />
21 <ePixmap pixmap="Vu_HD/buttons/blue.png" position="420,7" size="140,40" alphatest="blend" />
23 <widget source="key_red" render="Label" position="20,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
24 <widget source="key_green" render="Label" position="160,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
25 <widget source="key_yellow" render="Label" position="300,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
26 <widget source="key_blue" render="Label" position="440,0" zPosition="1" size="115,40" font="Regular;20" halign="center" valign="center" transparent="1" />
28 <widget source="status" render="Label" position="15,45" zPosition="1" size="540,40" font="Regular;18" halign="left" valign="center" backgroundColor="#a08500" transparent="1" />
29 <widget name="file_list" position="0,100" size="555,325" scrollbarMode="showOnDemand" />
32 def __init__(self, session):
33 Screen.__init__(self, session)
34 self.session = session
36 self["key_red"] = StaticText(_("Close"))
37 self["key_green"] = StaticText(_("Ugrade"))
38 self["key_yellow"] = StaticText(_(" "))
39 self["key_blue"] = StaticText(_("Download"))
40 #self["key_blue"] = StaticText(_(" "))
41 self["status"] = StaticText(_(" "))
42 self["file_list"] = FileList("/", matchingPattern = "^.*")
44 self["actions"] = ActionMap(["OkCancelActions", "ShortcutActions", "WizardActions", "ColorActions", ],
46 "red": self.onClickRed,
47 "green": self.onClickGreen,
48 "blue": self.onClickBlue,
49 "back": self.onClickRed,
52 "down": self.onClickDown,
53 "left": self.onClickLeft,
54 "right": self.onClickRight,
56 self.onLayoutFinish.append(self.doLayoutFinish)
60 self.SOURCELIST = self["file_list"]
61 self.STATUS_BAR = self["status"]
62 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
64 self.DEVICE_PATH = 'a'
65 self.DOWNLOAD_TAR_PATH = '/tmp/'
66 self.DOWNLOAD_FILE_NAME = 'fpga.vuplus'
67 self.DOWNLOAD_URL = ''
70 print self.DEVICE_PATH
71 print self.DOWNLOAD_TAR_PATH
72 print self.DOWNLOAD_FILE_NAME
73 print self.DOWNLOAD_URL
75 def doLayoutFinish(self):
83 f = open('/usr/lib/enigma2/python/Plugins/SystemPlugins/FPGAUpgrade/fpga.conf')
84 self.DOWNLOAD_URL = str(f.readline())
86 def doHook(self, blockNumber, blockSize, totalSize) :
87 if blockNumber*blockSize > totalSize :
88 self.STATUS_BAR.setText(_("Downloaded " + self.DOWNLOAD_TAR_PATH + self.DOWNLOAD_FILE_NAME))
90 self.STATUS_BAR.setText(_("Downloading..."))
92 def onCallbackHandler(self, confirmed):
100 def onClickGreen(self):
107 path = self.SOURCELIST.getCurrentDirectory() + self.SOURCELIST.getFilename()
109 #self.session.open(MessageBox, _("Can't select directory."), MessageBox.TYPE_INFO, timeout = 5)
112 self.ERROR_CODE = FPGA.fpga_upgrade(path, self.DEVICE_PATH)
113 if self.ERROR_CODE > 0:
114 self.ERROR_MSG = FPGA.get_error_msg(self.ERROR_CODE, self.ERROR_MSG)
115 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)
117 print "DEVICE_PATH : ", self.DEVICE_PATH
118 print "FILE_PATH : ", path
120 self.session.open(MessageBox, _("Success!!"), MessageBox.TYPE_INFO, timeout = 5)
122 def onClickBlue(self):
125 test_opener = urllib.URLopener()
127 test_opener.open(self.DOWNLOAD_URL)
129 self.session.open(MessageBox, _('File not found'), MessageBox.TYPE_INFO, timeout = 5)
133 fname, header = urlretrieve(self.DOWNLOAD_URL, self.DOWNLOAD_TAR_PATH + self.DOWNLOAD_FILE_NAME, self.doHook)
135 self.session.open(MessageBox, _(str(msg)), MessageBox.TYPE_INFO, timeout = 5)
141 self.SOURCELIST.changeDir(self.DOWNLOAD_TAR_PATH)
142 self.SOURCELIST.moveToIndex(0)
143 while cmp(self.SOURCELIST.getFilename(), self.DOWNLOAD_FILE_NAME) != 0 :
144 self.SOURCELIST.down()
145 if cmp(before_name, self.SOURCELIST.getFilename()) == 0:
147 before_name = self.SOURCELIST.getFilename()
150 if self.SOURCELIST.canDescent() : # isDir
151 self.SOURCELIST.descent()
152 if self.SOURCELIST.getCurrentDirectory():
153 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
159 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
161 def onClickDown(self):
162 self.SOURCELIST.down()
163 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
165 def onClickLeft(self):
166 self.SOURCELIST.pageUp()
167 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
169 def onClickRight(self):
170 self.SOURCELIST.pageDown()
171 self.STATUS_BAR.setText(_(self.SOURCELIST.getCurrentDirectory()))
173 def main(session, **kwargs):
174 session.open(FPGAUpgrade)
176 def Plugins(**kwargs):
177 return PluginDescriptor(name=_("FPGA Upgrade"), description="Upgrade FPGA..", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=main)