from gtk import * from iw import * import string from gnome.ui import GnomeCanvas from gui import _ import timezonemap class Map (GnomeCanvas): def __init__ (self, map): self._o = map class List (GtkScrolledWindow): def __init__ (self, list): self._o = list class Status (GtkStatusbar): def __init__ (self, bar): self._o = bar class Option (GtkOptionMenu): def __init__ (self, option): self._o = option class TimezoneWindow (InstallWindow): def __init__ (self, ics): InstallWindow.__init__ (self, ics) ics.setTitle (_("Time Zone Selection")) ics.setNextEnabled (1) ics.readHTML ("timezone") self.old_page = 0 self.old_ulist_row = 9 # default to UTC row self.old_use_dst = 0 self.timeZones = ((("-14", ""), ("Etc/GMT-14", "Etc/GMT-14")), (("-13", ""), ("Etc/GMT-13", "Etc/GMT-13")), (("-12", ""), ("Etc/GMT-12", "Etc/GMT-12")), (("-11", ""), ("Etc/GMT-11", "Etc/GMT-11")), (("-10", ""), ("Etc/GMT-10", "Etc/GMT-10")), (("-09", ""), ("Etc/GMT-09", "Etc/GMT-09")), (("-08", "US Pacific"), ("Etc/GMT-08", "America/Los_Angeles")), (("-07", "US Mountain"), ("Etc/GMT-07", "America/Denver")), (("-06", "US Central"), ("Etc/GMT-06", "America/Chicago")), (("-05", "US Eastern"), ("Etc/GMT-05", "America/New_York")), (("-04", ""), ("Etc/GMT-04", "Etc/GMT-04")), (("-03", ""), ("Etc/GMT-03", "Etc/GMT-03")), (("-02", ""), ("Etc/GMT-02", "Etc/GMT-02")), (("-01", ""), ("Etc/GMT-01", "Etc/GMT-01")), (("", ""), ("Etc/GMT", "Etc/GMT")), (("+01", ""), ("Etc/GMT+01", "Etc/GMT+01")), (("+02", ""), ("Etc/GMT+02", "Etc/GMT+02")), (("+03", ""), ("Etc/GMT+03", "Etc/GMT+03")), (("+04", ""), ("Etc/GMT+04", "Etc/GMT+04")), (("+05", ""), ("Etc/GMT+05", "Etc/GMT+05")), (("+06", ""), ("Etc/GMT+06", "Etc/GMT+06")), (("+07", ""), ("Etc/GMT+07", "Etc/GMT+07")), (("+08", ""), ("Etc/GMT+08", "Etc/GMT+08")), (("+09", ""), ("Etc/GMT+09", "Etc/GMT+09")), (("+10", ""), ("Etc/GMT+10", "Etc/GMT+10")), (("+11", ""), ("Etc/GMT+11", "Etc/GMT+11")), (("+12", ""), ("Etc/GMT+12", "Etc/GMT+12"))) def getNext (self): if not self.__dict__.has_key('list'): return None self.old_page = self.nb.get_current_page () self.old_ulist_row = self.ulist.selection[0] self.old_use_dst = self.daylightCB.get_active () if (self.old_page == 0): self.todo.setTimezoneInfo (self.list.get_text (self.list.selection[0], 0), self.systemUTC.get_active ()) else: timezone = self.timeZones[self.ulist.selection[0]][1] if self.daylightCB.get_active (): timezone = timezone[1] else: timezone = timezone[0] self.todo.setTimezoneInfo (timezone, self.systemUTC.get_active ()) return None def copy_toggled (self, cb1, cb2): if cb1.get_data ("toggling"): return cb2.set_data ("toggling", 1) cb2.set_active (cb1.get_active ()) cb2.set_data ("toggling", 0) def view_change (self, widget, *args): if not self.list.selection: self.ics.setNextEnabled (FALSE) else: self.ics.setNextEnabled (TRUE) def getScreen (self): try: f = open ("/usr/share/anaconda/pixmaps/map480.png") f.close () except: path = "gnome-map/map480.png" else: path = "/usr/share/anaconda/pixmaps/map480.png" nb = GtkNotebook () self.nb = nb mainBox = GtkVBox (FALSE, 5) tz = timezonemap.new (path) self.tz = tz map = Map (tz.map) swList = List (tz.citylist) self.list = swList.children ()[0] rc = self.todo.getTimezoneInfo() if rc: (self.default, asUTC, asArc) = rc else: self.default = "America/New_York" asUTC = 0 if (string.find (self.default, "UTC") != -1): self.default = "America/New_York" self.list.connect ("draw", lambda widget, area, self=self: self.tz.setcurrent (self.default)) self.nb.connect ("realize", lambda widget, self=self: self.nb.set_page (self.old_page)) status = Status (tz.statusbar) views = Option (tz.views) for menu_item in views.get_menu ().children (): menu_item.connect ("activate", self.view_change) # fix for current map weirdness in dr mike's code. views.get_menu ().children ()[0].activate () label = GtkLabel (_("View:")) hbox = GtkHBox (FALSE, 5) hbox.pack_start (label, FALSE) align = GtkAlignment (0.5, 0.5) align.add (views) hbox.pack_start (align, FALSE) self.p1_align = align systemUTCCopy = GtkCheckButton (_("System clock uses UTC")) self.systemUTC = GtkCheckButton (_("System clock uses UTC")) systemUTCCopy.connect ("toggled", self.copy_toggled, self.systemUTC) self.systemUTC.connect ("toggled", self.copy_toggled, systemUTCCopy) self.systemUTC.set_active (asUTC) align = GtkAlignment (0.5, 0.5) align.add (self.systemUTC) hbox.pack_start (align, FALSE) im = self.ics.readPixmap ("timezone.png") if im: im.render () pix = im.make_pixmap () a = GtkAlignment () a.add (pix) a.set (1.0, 0.0, 0.0, 0.0) hbox.pack_start (a, TRUE) frame = GtkFrame () frame.set_shadow_type (SHADOW_IN) frame.add (map) mainBox.pack_start (hbox, FALSE) box = GtkVBox (FALSE, 0) box.pack_start (frame, FALSE) box.pack_start (status, FALSE) mainBox.pack_start (box, FALSE) mainBox.pack_start (swList, TRUE) tzBox = GtkVBox (FALSE) sw = GtkScrolledWindow () sw.set_policy (POLICY_AUTOMATIC, POLICY_AUTOMATIC) self.ulist = GtkCList (2) self.ulist.connect ("draw", lambda widget, area, self=self: self.ulist.moveto (self.old_ulist_row)) self.ulist.set_selection_mode (SELECTION_BROWSE) self.ulist.freeze () for zone in self.timeZones: self.ulist.append (("UTC%s" % (zone[0][0],), zone[0][1])) self.ulist.columns_autosize () self.ulist.thaw () self.ulist.select_row (self.old_ulist_row, 0) sw.add (self.ulist) tzBox.pack_start (sw) box = GtkHBox (FALSE) align = GtkAlignment (0.5, 0.5) self.daylightCB = GtkCheckButton (_("Use Daylight Saving Time (US only)")) self.daylightCB.set_active (self.old_use_dst) align.add (self.daylightCB) box.pack_start (align, FALSE) align = GtkAlignment (1.0, 0.5) align.add (systemUTCCopy) box.pack_start (align, TRUE) tzBox.pack_start (box, FALSE) tzBox.set_border_width (5) self.tzBox = tzBox mainBox.set_border_width (5) nb.append_page (mainBox, GtkLabel (_("Location"))) nb.append_page (tzBox, GtkLabel (_("UTC Offset"))) def switch_page (widget, page, page_num, self=self): if page_num == 1: self.ics.setNextEnabled (TRUE) else: self.view_change (None) nb.connect ("switch_page", switch_page) self.list.connect ("select_row", self.view_change) box = GtkVBox (FALSE, 5) box.pack_start (nb) # self.systemUTC = GtkCheckButton (_("System clock uses UTC")) # self.systemUTC.set_active (asUTC) # align = GtkAlignment (0, 0) # align.add (self.systemUTC) # box.pack_start (align, FALSE) box.set_border_width (5) return box