コード例 #1
0
class BatteryPage(Page):

    _FootMsg = ["Nav", "", "Refresh", "Back", "Enter"]
    _Label = None

    def Init(self):
        self._CanvasHWND = self._Screen._CanvasHWND
        self._Width = self._Screen._Width
        self._Height = self._Screen._Height

        self._Label = Label()
        self._Label.SetCanvasHWND(self._CanvasHWND)
        self._Label.Init('', MySkinManager.GiveFont('varela25'))

    def _update_percent(self):
        self._Label.SetText('%s %%' % get_battery_percent())
        rect = midRect(self._Width / 2, self._Height / 2, self._Label._Width,
                       self._Label._Height, Width, Height)
        self._Label.NewCoord(rect.left, rect.top)

    def OnLoadCb(self):
        self._update_percent()

    def KeyDown(self, event):
        if event.key == CurKeys["Menu"] or event.key == CurKeys["B"]:
            self.ReturnToUpLevelPage()
            self._Screen.Draw()
            self._Screen.SwapAndShow()

        if event.key == CurKeys["Right"]:
            self._Screen.Draw()
            self._Screen.SwapAndShow()

        if event.key == CurKeys["Left"]:
            self._Screen.Draw()
            self._Screen.SwapAndShow()

        if event.key == CurKeys["X"]:
            self._update_percent()
            self._Screen.Draw()
            self._Screen.SwapAndShow()

    def Draw(self):
        self.ClearCanvas()
        self._Label.Draw()
コード例 #2
0
class DownloadProcessPage(Page):
    _FootMsg = ["Nav.", "", "", "Back", ""]
    _Downloader = None
    _DownloaderTimer = -1
    _Value = 0

    _URL = ""
    _DST_DIR = ""

    _PngSize = {}

    _FileNameLabel = None
    _SizeLabel = None

    _URLColor = MySkinManager.GiveColor('URL')
    _TextColor = MySkinManager.GiveColor('Text')

    def __init__(self):
        Page.__init__(self)
        self._Icons = {}
        self._CanvasHWND = None

    def Init(self):
        self._PosX = self._Index * self._Screen._Width
        self._Width = self._Screen._Width
        self._Height = self._Screen._Height

        self._CanvasHWND = self._Screen._CanvasHWND

        self._PngSize["bg"] = (48, 79)
        self._PngSize["needwifi_bg"] = (253, 132)

        bgpng = IconItem()
        bgpng._ImgSurf = MyIconPool._Icons["rom_download"]
        bgpng._MyType = ICON_TYPES["STAT"]
        bgpng._Parent = self
        bgpng.Adjust(0, 0, self._PngSize["bg"][0], self._PngSize["bg"][1], 0)
        self._Icons["bg"] = bgpng

        needwifi_bg = IconItem()
        needwifi_bg._ImgSurf = MyIconPool._Icons["needwifi_bg"]
        needwifi_bg._MyType = ICON_TYPES["STAT"]
        needwifi_bg._Parent = self
        needwifi_bg.Adjust(0, 0, self._PngSize["needwifi_bg"][0],
                           self._PngSize["needwifi_bg"][1], 0)

        self._Icons["needwifi_bg"] = needwifi_bg

        self._FileNameLabel = Label()
        self._FileNameLabel.SetCanvasHWND(self._CanvasHWND)
        self._FileNameLabel.Init("", MyLangManager.TrFont("varela12"))

        self._SizeLabel = Label()
        self._SizeLabel.SetCanvasHWND(self._CanvasHWND)
        self._SizeLabel.Init("0/0Kb", MyLangManager.TrFont("varela12"))
        self._SizeLabel.SetColor(self._URLColor)

    def OnExitCb(self, event):
        print("DownloadProcessPage OnExitCb")
        if self._Downloader == None:
            return
        try:
            self._Downloader.stop()
        except:
            pass
        return

    def GObjectUpdateProcessInterval(self):
        if self._Screen.CurPage() == self:
            if self._Downloader.isFinished():
                if self._Downloader.isSuccessful():
                    print("Success!")
                    # Do something with obj.get_dest()
                    filename = os.path.basename(self._Downloader.get_dest())
                    cur_dir = os.getcwd()

                    if filename.endswith(".zip"):
                        os.chdir(self._DST_DIR)
                        os.system("unzip " + filename)

                    elif filename.endswith(".zsync"):
                        os.chdir(self._DST_DIR)
                        os.system("rm -rf " + filename)

                    elif filename.endswith(".tar.xz"):
                        os.chdir(self._DST_DIR)
                        os.system("tar xf " + filename)
                        os.system("rm -rf " + filename)

                    os.chdir(cur_dir)
                    self.ReturnToUpLevelPage()
                    self._Screen.Draw()
                    self._Screen.SwapAndShow()

                else:
                    print("Download failed with the following exceptions:")
                    for e in self._Downloader.get_errors():
                        print(unicode(e))

                    try:
                        self._Downloader.stop()
                    except:
                        pass

                    self._Screen._MsgBox.SetText("DownloadFailed")
                    self._Screen._MsgBox.Draw()
                    self._Screen.SwapAndShow()
                    return False
            else:
                self._Value = self._Downloader.get_progress()

                filename = os.path.basename(self._Downloader.get_dest())
                self._FileNameLabel.SetText(filename)

                downloaded = self._Downloader.progress["downloaded"]
                total = self._Downloader.progress["total"]

                downloaded = downloaded / 1000.0 / 1000.0
                total = total / 1000.0 / 1000.0

                self._SizeLabel.SetText("%.2f" % downloaded + "/" +
                                        "%.2f" % total + "Mb")

                print("Progress: %d%%" % (self._Value))
                self._Screen.Draw()
                self._Screen.SwapAndShow()
                return True
        else:
            return False

    def StartDownload(self, url, dst_dir):
        if is_wifi_connected_now() == False:
            return

        if validators.url(url) and os.path.isdir(dst_dir):
            self._URL = url
            self._DST_DIR = dst_dir
        else:
            self._Screen._MsgBox.SetText("Invaid")
            self._Screen._MsgBox.Draw()
            self._Screen.SwapAndShow()
            print("url or dst dir error")
            return

        self._Downloader = Download(url, dst_dir, None)
        self._Downloader.start()

        self._DownloaderTimer = gobject.timeout_add(
            100, self.GObjectUpdateProcessInterval)

    def KeyDown(self, event):
        if IsKeyMenuOrB(event.key):
            gobject.source_remove(self._DownloaderTimer)
            self._DownloaderTimer = -1

            if self._Downloader != None:
                try:
                    self._Downloader.stop()
                except:
                    print("user canceled ")

            self.ReturnToUpLevelPage()
            self._Screen.Draw()
            self._Screen.SwapAndShow()

    def Draw(self):
        self.ClearCanvas()

        if is_wifi_connected_now() == False:
            self._Icons["needwifi_bg"].NewCoord(self._Width / 2,
                                                self._Height / 2)
            self._Icons["needwifi_bg"].Draw()
            return

        self._Icons["bg"].NewCoord(self._Width / 2, self._Height / 2 - 20)
        self._Icons["bg"].Draw()

        percent = self._Value
        if percent < 10:
            percent = 10

        rect_ = midRect(self._Width / 2, self._Height / 2 + 33, 170, 17, Width,
                        Height)
        aa_round_rect(self._CanvasHWND, rect_,
                      MySkinManager.GiveColor('TitleBg'), 5, 0,
                      MySkinManager.GiveColor('TitleBg'))

        rect2 = midRect(self._Width / 2, self._Height / 2 + 33,
                        int(170 * (percent / 100.0)), 17, Width, Height)
        rect2.left = rect_.left
        rect2.top = rect_.top
        aa_round_rect(self._CanvasHWND, rect2,
                      MySkinManager.GiveColor('Front'), 5, 0,
                      MySkinManager.GiveColor('Front'))

        rect3 = midRect(self._Width / 2, self._Height / 2 + 53,
                        self._FileNameLabel._Width,
                        self._FileNameLabel._Height, Width, Height)

        rect4 = midRect(self._Width / 2, self._Height / 2 + 70,
                        self._SizeLabel._Width, self._SizeLabel._Height, Width,
                        Height)

        self._FileNameLabel.NewCoord(rect3.left, rect3.top)
        self._SizeLabel.NewCoord(rect4.left, rect4.top)

        self._FileNameLabel.Draw()
        self._SizeLabel.Draw()
コード例 #3
0
ファイル: __init__.py プロジェクト: clockworkpi/launcher_deot
class Aria2DownloadProcessPage(Page):
    _FootMsg = ["Nav.", "", "Pause", "Back", "Cancel"]
    _DownloaderTimer = -1
    _Value = 0
    _GID = None

    _PngSize = {}

    _FileNameLabel = None
    _SizeLabel = None

    _URLColor = MySkinManager.GiveColor('URL')
    _TextColor = MySkinManager.GiveColor('Text')

    def __init__(self):
        Page.__init__(self)
        self._Icons = {}
        self._CanvasHWND = None

    def Init(self):
        self._PosX = self._Index * self._Screen._Width
        self._Width = self._Screen._Width
        self._Height = self._Screen._Height

        self._CanvasHWND = self._Screen._CanvasHWND

        bgpng = IconItem()
        bgpng._ImgSurf = MyIconPool.GiveIconSurface("rom_download")
        bgpng._MyType = ICON_TYPES["STAT"]
        bgpng._Parent = self
        bgpng.Adjust(0, 0, self._PngSize["bg"][0], self._PngSize["bg"][1], 0)
        self._Icons["bg"] = bgpng

        self._FileNameLabel = Label()
        self._FileNameLabel.SetCanvasHWND(self._CanvasHWND)
        self._FileNameLabel.Init("", MyLangManager.TrFont("varela12"))

        self._SizeLabel = Label()
        self._SizeLabel.SetCanvasHWND(self._CanvasHWND)
        self._SizeLabel.Init("0/0Kb", MyLangManager.TrFont("varela12"))
        self._SizeLabel.SetColor(self._URLColor)

    @property
    def GObjectUpdateProcessInterval(self):
        downloaded = 0
        if self._Screen.CurPage() == self and self._GID is not None:
            self._Value = config.RPC.tellStatus(self._GID)

            downloaded = 0
            total = 0

        if self._Value["status"] == "waiting":
            self._FileNameLabel.SetText("waiting to download...")
        if self._Value["status"] == "paused":
            self._FileNameLabel.SetText("download paused...")
        if self._Value["status"] == "error":
            self._FileNameLabel.SetText("download errors,cancel it please")

        if self._Value["status"] == "active":
            downloaded = self._Value["completedLength"]
            total = self._Value["totalLength"]

            downloaded = downloaded / 1000.0 / 1000.0
            total = total / 1000.0 / 1000.0

        self._SizeLabel.SetText("%.2f" % downloaded + "/" + "%.2f" % total +
                                "Mb")

        print("Progress: %d%%" % (self._Value))
        self._Screen.Draw()
        self._Screen.SwapAndShow()
        return True

    def CheckDownload(self, aria2_gid):
        self._GID = aria2_gid
        self._DownloaderTimer = gobject.timeout_add(
            234, self.GObjectUpdateProcessInterval)

    def KeyDown(self, event):
        if IsKeyMenuOrB(event.key):
            gobject.source_remove(self._DownloaderTimer)
            self._DownloaderTimer = -1

            #if self._Downloader != None:
            #    try:
            #        self._Downloader.stop()
            #    except:
            #        print("user canceled ")

            self.ReturnToUpLevelPage()
            self._Screen.Draw()
            self._Screen.SwapAndShow()

    def Draw(self):
        self.ClearCanvas()

        self._Icons["bg"].NewCoord(self._Width / 2, self._Height / 2 - 20)
        self._Icons["bg"].Draw()

        percent = self._Value
        if percent < 10:
            percent = 10

        rect_ = midRect(self._Width / 2, self._Height / 2 + 33, 170, 17, Width,
                        Height)
        aa_round_rect(self._CanvasHWND, rect_,
                      MySkinManager.GiveColor('TitleBg'), 5, 0,
                      MySkinManager.GiveColor('TitleBg'))

        rect2 = midRect(self._Width / 2, self._Height / 2 + 33,
                        int(170 * (percent / 100.0)), 17, Width, Height)
        rect2.left = rect_.left
        rect2.top = rect_.top
        aa_round_rect(self._CanvasHWND, rect2,
                      MySkinManager.GiveColor('Front'), 5, 0,
                      MySkinManager.GiveColor('Front'))

        rect3 = midRect(self._Width / 2, self._Height / 2 + 53,
                        self._FileNameLabel._Width,
                        self._FileNameLabel._Height, Width, Height)

        rect4 = midRect(self._Width / 2, self._Height / 2 + 70,
                        self._SizeLabel._Width, self._SizeLabel._Height, Width,
                        Height)

        self._FileNameLabel.NewCoord(rect3.left, rect3.top)
        self._SizeLabel.NewCoord(rect4.left, rect4.top)

        self._FileNameLabel.Draw()
        self._SizeLabel.Draw()