summaryrefslogtreecommitdiffstats
path: root/textw/progress_text.py
diff options
context:
space:
mode:
authorErik Troan <ewt@redhat.com>2001-06-20 02:00:44 +0000
committerErik Troan <ewt@redhat.com>2001-06-20 02:00:44 +0000
commit1a0247090d0d3629a9cd150d63597f94c4f27fad (patch)
tree1508f8237c8e7fb62f187706bfc5173df8819236 /textw/progress_text.py
parentdbb4861e176cadfb14c48313fd9922d3dbfcefed (diff)
downloadanaconda-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.py155
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