summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--textw/partitioning.py1
-rw-r--r--textw/timezone.py105
2 files changed, 105 insertions, 1 deletions
diff --git a/textw/partitioning.py b/textw/partitioning.py
index cfca7ddcc..38700800f 100644
--- a/textw/partitioning.py
+++ b/textw/partitioning.py
@@ -1,4 +1,3 @@
-#import gettext
import iutil
import os
import isys
diff --git a/textw/timezone.py b/textw/timezone.py
new file mode 100644
index 000000000..e776c0121
--- /dev/null
+++ b/textw/timezone.py
@@ -0,0 +1,105 @@
+import string
+import iutil
+import os
+from time import *
+from snack import *
+from textw.constants import *
+from text import _
+
+class TimezoneWindow:
+
+ def getTimezoneList(self, test):
+ if not os.access("/usr/lib/timezones.gz", os.R_OK):
+ if test:
+ cmd = "./gettzlist"
+ stdin = None
+ else:
+ zoneList = iutil.findtz('/usr/share/zoneinfo', '')
+ cmd = ""
+ stdin = None
+ else:
+ cmd = "/usr/bin/gunzip"
+ stdin = os.open("/usr/lib/timezones.gz", 0)
+
+ if cmd != "":
+ zones = iutil.execWithCapture(cmd, [ cmd ], stdin = stdin)
+ zoneList = string.split(zones)
+
+ if (stdin != None):
+ os.close(stdin)
+
+ return zoneList
+
+ def updateSysClock(self):
+ if os.access("/sbin/hwclock", os.X_OK):
+ args = [ "/sbin/hwclock" ]
+ else:
+ args = [ "/usr/sbin/hwclock" ]
+
+ args.append("--hctosys")
+ if self.c.selected():
+ args.append("--utc")
+
+ iutil.execWithRedirect(args[0], args)
+ self.g.setTimer(500)
+ self.updateClock()
+
+ def updateClock(self):
+ os.environ['TZ'] = self.l.current()
+ self.label.setText(self.currentTime())
+
+ def currentTime(self):
+ return "Current time: " + strftime("%X %Z", localtime(time()))
+
+ def __call__(self, screen, todo, test):
+ timezones = self.getTimezoneList(test)
+ rc = todo.getTimezoneInfo()
+ if rc:
+ (default, asUtc, asArc) = rc
+ else:
+ default = "US/Eastern"
+ asUtc = 0
+
+ bb = ButtonBar(screen, [(_("OK"), "ok"), (_("Back"), "back")])
+ t = TextboxReflowed(30,
+ _("What time zone are you located in?"))
+
+ self.label = Label(self.currentTime())
+
+ self.l = Listbox(5, scroll = 1, returnExit = 0)
+
+ for tz in timezones:
+ self.l.append(tz, tz)
+
+ self.l.setCurrent(default)
+ self.l.setCallback(self.updateClock)
+
+ self.c = Checkbox(_("Hardware clock set to GMT?"), isOn = asUtc)
+ self.c.setCallback(self.updateSysClock)
+
+ self.g = GridForm(screen, _("Time Zone Selection"), 1, 5)
+ self.g.add(t, 0, 0)
+ self.g.add(self.label, 0, 1, padding = (0, 1, 0, 0), anchorLeft = 1)
+ self.g.add(self.c, 0, 2, padding = (0, 1, 0, 1), anchorLeft = 1)
+ self.g.add(self.l, 0, 3, padding = (0, 0, 0, 1))
+ self.g.add(bb, 0, 4, growx = 1)
+ self.g.setTimer(500)
+
+ result = "TIMER"
+ while result == "TIMER":
+ result = self.g.run()
+ if result == "TIMER":
+ self.label.setText(self.currentTime())
+
+ screen.popWindow()
+
+ button = bb.buttonPressed(result)
+
+ if button == "back":
+ return INSTALL_BACK
+
+ todo.setTimezoneInfo(self.l.current(), asUtc = self.c.selected())
+
+ return INSTALL_OK
+
+