diff options
author | Erik Troan <ewt@redhat.com> | 2001-06-20 02:00:44 +0000 |
---|---|---|
committer | Erik Troan <ewt@redhat.com> | 2001-06-20 02:00:44 +0000 |
commit | 1a0247090d0d3629a9cd150d63597f94c4f27fad (patch) | |
tree | 1508f8237c8e7fb62f187706bfc5173df8819236 /textw/progress_text.py | |
parent | dbb4861e176cadfb14c48313fd9922d3dbfcefed (diff) | |
download | anaconda-1a0247090d0d3629a9cd150d63597f94c4f27fad.tar.gz anaconda-1a0247090d0d3629a9cd150d63597f94c4f27fad.tar.xz anaconda-1a0247090d0d3629a9cd150d63597f94c4f27fad.zip |
merge from (now defunct) anaconda-dispatch branch
Diffstat (limited to 'textw/progress_text.py')
-rw-r--r-- | textw/progress_text.py | 155 |
1 files changed, 155 insertions, 0 deletions
diff --git a/textw/progress_text.py b/textw/progress_text.py new file mode 100644 index 000000000..705b7ea62 --- /dev/null +++ b/textw/progress_text.py @@ -0,0 +1,155 @@ +from snack import * +from constants_text import * +from translate import _ +import rpm +import dispatch + +class InstallProgressWindow: + def completePackage(self, header, timer): + def formatTime(amt): + hours = amt / 60 / 60 + amt = amt % (60 * 60) + min = amt / 60 + amt = amt % 60 + secs = amt + + return "%01d:%02d:%02d" % (int(hours) ,int(min), int(secs)) + + self.numComplete = self.numComplete + 1 + self.sizeComplete = self.sizeComplete + (header[rpm.RPMTAG_SIZE] / 1024) + self.numCompleteW.setText("%12d" % self.numComplete) + self.sizeCompleteW.setText("%10dM" % (self.sizeComplete/1024)) + self.numRemainingW.setText("%12d" % (self.numTotal - self.numComplete)) + self.sizeRemainingW.setText("%10dM" % (self.sizeTotal/1024 - self.sizeComplete/1024)) + self.total.set(self.sizeComplete) + + elapsedTime = timer.elapsed() + if not elapsedTime: + elapsedTime = 1 + self.timeCompleteW.setText("%12s" % formatTime(elapsedTime)) + if self.sizeComplete != 0: + finishTime = (float (self.sizeTotal) / (self.sizeComplete)) * elapsedTime; + else: + finishTime = (float (self.sizeTotal) / (self.sizeComplete+1)) * elapsedTime; + self.timeTotalW.setText("%12s" % formatTime(finishTime)) + remainingTime = finishTime - elapsedTime; + self.timeRemainingW.setText("%12s" % formatTime(remainingTime)) + + self.g.draw() + self.screen.refresh() + + def setPackageScale(self, amount, total): + self.s.set(int(((amount * 1.0)/ total) * 100)) + self.g.draw() + self.screen.refresh() + + def setPackage(self, header): + self.name.setText("%s-%s-%s" % (header[rpm.RPMTAG_NAME], + header[rpm.RPMTAG_VERSION], + header[rpm.RPMTAG_RELEASE])) + self.size.setText("%dk" % (header[rpm.RPMTAG_SIZE] / 1024)) + summary = header[rpm.RPMTAG_SUMMARY] + if (summary != None): + self.summ.setText(summary) + else: + self.summ.setText("(none)") + + self.g.draw() + self.screen.refresh() + + def processEvents(self): + pass + + def setSizes(self, total, totalSize): + screen = self.screen + + toplevel = GridForm(self.screen, _("Package Installation"), 1, 5) + + name = _("Name : ") + size = _("Size : ") + sum = _("Summary: ") + + width = 40 + max (len (name), len (size), len (sum)) + self.name = Label(" " * 40) + self.size = Label(" ") + detail = Grid(2, 2) + detail.setField(Label(name), 0, 0, anchorLeft = 1) + detail.setField(Label(size), 0, 1, anchorLeft = 1) + detail.setField(self.name, 1, 0, anchorLeft = 1) + detail.setField(self.size, 1, 1, anchorLeft = 1) + toplevel.add(detail, 0, 0) + + summary = Grid(2, 1) + summlabel = Label(sum) + self.summ = Textbox(40, 2, "", wrap = 1) + summary.setField(summlabel, 0, 0) + summary.setField(self.summ, 1, 0) + toplevel.add(summary, 0, 1) + + self.s = Scale (width, 100) + toplevel.add (self.s, 0, 2, (0, 1, 0, 1)) + + overall = Grid(4, 4) + # don't ask me why, but if this spacer isn"t here then the + # grid code gets unhappy + overall.setField (Label (" "), 0, 0, anchorLeft = 1) + overall.setField (Label (_(" Packages")), 1, 0, anchorLeft = 1) + overall.setField (Label (_(" Bytes")), 2, 0, anchorLeft = 1) + overall.setField (Label (_(" Time")), 3, 0, anchorLeft = 1) + + overall.setField (Label (_("Total :")), 0, 1, anchorLeft = 1) + overall.setField (Label ("%12d" % total), 1, 1, anchorLeft = 1) + overall.setField (Label ("%10dM" % (totalSize/1024)), + 2, 1, anchorLeft = 1) + self.timeTotalW = Label("") + overall.setField(self.timeTotalW, 3, 1, anchorLeft = 1) + + overall.setField (Label (_("Completed: ")), 0, 2, anchorLeft = 1) + self.numComplete = 0 + self.numCompleteW = Label("%12d" % self.numComplete) + overall.setField(self.numCompleteW, 1, 2, anchorLeft = 1) + self.sizeComplete = 0 + self.sizeCompleteW = Label("%10dM" % (self.sizeComplete)) + overall.setField(self.sizeCompleteW, 2, 2, anchorLeft = 1) + self.timeCompleteW = Label("") + overall.setField(self.timeCompleteW, 3, 2, anchorLeft = 1) + + overall.setField (Label (_("Remaining: ")), 0, 3, anchorLeft = 1) + self.numRemainingW = Label("%12d" % total) + self.sizeRemainingW = Label("%10dM" % (totalSize/1024)) + overall.setField(self.numRemainingW, 1, 3, anchorLeft = 1) + overall.setField(self.sizeRemainingW, 2, 3, anchorLeft = 1) + self.timeRemainingW = Label("") + overall.setField(self.timeRemainingW, 3, 3, anchorLeft = 1) + + toplevel.add(overall, 0, 3) + + self.numTotal = total + self.sizeTotal = totalSize + self.total = Scale (width, totalSize) + toplevel.add(self.total, 0, 4, (0, 1, 0, 0)) + + self.timeStarted = -1 + + toplevel.draw() + self.g = toplevel + screen.refresh() + self.drawn = 1 + + def __init__(self, screen): + self.screen = screen + self.drawn = 0 + + def __del__ (self): + if self.drawn: self.screen.popWindow () + +class setupForInstall: + + def __call__(self, screen, dir, intf, id): + if dir == dispatch.DISPATCH_BACK: + id.setInstallProgressClass(None) + return INSTALL_BACK + else: + id.setInstallProgressClass(InstallProgressWindow(screen)) + + return INSTALL_OK |