def currentCityLabel_set (self): if self.currentEntry.comments and len (self.currentEntry.comments): labelText = _('Selected city: %(city)s (%(comments)s)') % {'city': self.cityname_format (self.currentEntry.translated_tz), 'comments': _(self.currentEntry.comments)} else: labelText = _('Selected city: %s') % self.cityname_format (self.currentEntry.translated_tz) self.currentCityLabel.set_text (labelText)
def ntpSrvReachable (self, host): argv = ["/usr/sbin/ntpdate", "-d", host] #debug: argv = ["/bin/sleep", "10"] (pid, stdin, stdout, stderr) = gobject.spawn_async (argv, flags = gobject.SPAWN_STDOUT_TO_DEV_NULL | gobject.SPAWN_STDERR_TO_DEV_NULL | gobject.SPAWN_DO_NOT_REAP_CHILD) self.modal_dialog = gtk.MessageDialog (parent = self.mainWindow, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, type = gtk.MESSAGE_INFO, buttons = gtk.BUTTONS_CANCEL, message_format = _("Checking whether NTP server '%s' is reachable...") % (host)) progress_bar = gtk.ProgressBar () self.modal_dialog.get_child ().add (progress_bar) progress_bar.show () progress_bar.pulse () pbar_id = gobject.timeout_add (100, self.progress_pulse, progress_bar) spawn_id = gobject.child_watch_add (pid, self.ntpSrvReachable_cb) result = self.modal_dialog.run () gobject.source_remove (spawn_id) gobject.source_remove (pbar_id) md = self.modal_dialog self.modal_dialog = None md.destroy () if result == gtk.RESPONSE_CANCEL or result == gtk.RESPONSE_DELETE_EVENT: #print "cancel, delete" self.modal_dialog = gtk.MessageDialog (parent = self.mainWindow, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, type = gtk.MESSAGE_QUESTION, buttons = gtk.BUTTONS_YES_NO, message_format = _("You cancelled checking whether NTP server '%s' is reachable. Do you still want your changes to take effect?") % (host)) result = self.modal_dialog.run () self.modal_dialog.destroy () self.modal_dialog = None if result == gtk.RESPONSE_YES: return True else: return False elif result == gtk.RESPONSE_REJECT: #print "reject" self.modal_dialog = gtk.MessageDialog (parent = self.mainWindow, flags = gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, type = gtk.MESSAGE_QUESTION, buttons = gtk.BUTTONS_YES_NO, message_format = _("Host '%s' is not reachable or doesn't act as an NTP server. Do you still want your changes to take effect?") % (host)) result = self.modal_dialog.run () self.modal_dialog.destroy () self.modal_dialog = None if result == gtk.RESPONSE_YES: return True else: return False else: #print "ok" return True
def ntpSrvAddButtonClicked (self, args): iter = self.ntpListStore.append () self.ntpListStore.set_value (iter, self.NTPSERVER, _('New NTP Server')) path = self.ntpListStore.get_path (iter) self.ntpServersTreeView.set_cursor (path, self.ntpServersTreeView.get_column (self.NTPSERVER), True) self.ntpSrvButtonbox.set_sensitive (False) self.added_row_reference = gtk.TreeRowReference (self.ntpListStore, self.ntpListStore.get_path (iter))
def showhelp (): sys.stderr.write (_("""Usage: system-config-date [options] Enduser options: -h|--help Display this help message Reserved options: --page <page> Display page <page> """))
def __init__(self, zonetab, default="America/New_York", map='../pixmaps/map1440.png', viewportWidth = 480, tzActionLabel = gtk.Label (_("Please select the nearest city in your time zone:"))): gtk.VBox.__init__(self, False, 5) # set up members self.columns = Enum ("TZ", "COMMENTS", "ENTRY", "TZSORT") self.currentEntry = None self.fallbackEntry = None self.highlightedEntry = None self.zonetab = zonetab self.markers = {} self.tzActionLabel = tzActionLabel # set up the map canvas self.map_canvas_init (map, viewportWidth) # marker for currently selected city root = self.canvas.root () self.currentMapX = root.add (gnomecanvas.CanvasText, text='x', fill_color='red', anchor=gtk.ANCHOR_CENTER, weight=pango.WEIGHT_BOLD) # label for currently selected city self.currentCityLabel_init () # set up the arrows self.arrow_init () # set up the label for the currently selected city self.city_label_init ("current") # set up list of time zones self.timezone_list_init (default) # set up the label for the highlighted city self.city_label_init ("highlighted") self.setCurrent (zonetab.findEntryByTZ (default)) (self.lastx, self.lasty) = (0, 0) self.canvas.set_tooltip_text (_("Use button 2 or 3 for panning and the scrollwheel to zoom in or out."))
def __init__(self, dateBackend, xml): self.xml = xml self.mainWindow = self.xml.get_widget ("window") self.dateBackend = dateBackend self.modal_dialog = None self.flag = False times = scdMainWindow.dateBackend.getDate() # current date and time self.dateTimeLabel = self.xml.get_widget ("dateTimeLabel") self.updateDateTime () gobject.timeout_add (1000, self.updateDateTime) self.ntpCheckButton = self.xml.get_widget ("ntp_check") self.ntpCheckButton.connect("clicked", self.ntpCheckButtonClicked) # hidden manual date and time/NTP notebook self.manualNtpNotebook = self.xml.get_widget ("manualNtpNotebook") self.manualNtpNotebook.set_show_tabs (False) # manual page self.date_frame = self.xml.get_widget ("date_frame") self.time_frame = self.xml.get_widget ("time_frame") # calendar to set date self.cal = self.xml.get_widget ("calendar") self.cal.select_month(times[1]-1, times[0]) self.cal.select_day(times[2]) # controls to set time self.hourEntry = self.xml.get_widget ("hour_entry") self.hourEntry.connect("changed", self.filter, 23) hourAdj = gtk.Adjustment(times[3], 0, 24, 1) self.hourEntry.set_adjustment(hourAdj) self.hourEntry.set_value(times[3]) self.hourEntry.set_data ('last_value', times[3]) self.minEntry = self.xml.get_widget ("min_entry") self.minEntry.connect("changed", self.filter, 59) minAdj = gtk.Adjustment(times[4], 0, 59, 1) self.minEntry.set_adjustment(minAdj) self.minEntry.set_value(times[4]) self.minEntry.set_data ('last_value', times[4]) self.secEntry = self.xml.get_widget ("sec_entry") self.secEntry.connect("changed", self.filter, 59) secAdj = gtk.Adjustment(times[5], 0, 60, 1) self.secEntry.set_adjustment(secAdj) self.secEntry.set_value(times[5]) self.secEntry.set_data ('last_value', times[5]) # NTP page self.ntpFrame = self.xml.get_widget ("ntp_frame") self.ntpLabel = self.xml.get_widget ("ntp_label") self.ntpAdvOptionsExpander = self.xml.get_widget ("ntp_adv_options_expander") self.ntpAdvOptionsExpanderLabel = self.xml.get_widget ("ntp_adv_options_expander_label") self.ntpIburstButton = self.xml.get_widget ("ntp_iburst") self.ntpLocalTimeSourceButton = self.xml.get_widget ("ntp_local_timesource_check") self.ntpBroadcastClientCheckButton = self.xml.get_widget ("ntp_broadcast_check") self.srv_frame = self.xml.get_widget ("srv_frame") self.ntpSrvButtonbox = self.xml.get_widget ("ntp_srv_buttonbox") self.ntpSrvAddButton = self.xml.get_widget ("ntp_srv_add_button") self.ntpSrvEditButton = self.xml.get_widget ("ntp_srv_edit_button") self.ntpSrvDelButton = self.xml.get_widget ("ntp_srv_del_button") self.NTPSERVER = 0 self.added_row_reference = None self.ntpListStore = gtk.ListStore (gobject.TYPE_STRING, gobject.TYPE_BOOLEAN) self.ntpListStore.set_sort_func (self.NTPSERVER, self.list_sort) self.ntpListStore.set_sort_column_id (self.NTPSERVER, gtk.SORT_ASCENDING) self.ntpServersTreeView = self.xml.get_widget ("ntp_servers_view") self.ntpServersTreeView.set_model (self.ntpListStore) self.ntpServersTreeView.columns_autosize () self.cellrend = gtk.CellRendererText () self.cellrend.set_property ("editable", True) self.cellrend.connect ("edited", self.cell_edited) self.cellrend.connect ("editing-canceled", self.cell_editing_canceled) col = gtk.TreeViewColumn (_("Server"), self.cellrend, text = self.NTPSERVER) self.ntpServersTreeView.append_column (col) selection = self.ntpServersTreeView.get_selection () selection.set_mode (gtk.SELECTION_MULTIPLE) selection.connect ("changed", self.ntpServersTreeViewSelectRow) self.ntpSrvAddButton.connect ("clicked", self.ntpSrvAddButtonClicked) self.ntpSrvAddButton.set_sensitive (True) self.ntpSrvEditButton.connect ("clicked", self.ntpSrvEditButtonClicked) self.ntpSrvEditButton.set_sensitive (False) self.ntpSrvDelButton.connect ("clicked", self.ntpSrvDelButtonClicked) self.ntpSrvDelButton.set_sensitive (False) #Find out if ntpd is currently running. If so, activate checkbox ntpStatus = scdMainWindow.dateBackend.isNtpRunning() if ntpStatus == 1: self.ntpCheckButton.set_active(True) elif ntpStatus == None: text = (_("The NTP initscript (%s) does not seem to be functioning " "properly. Try running 'rpm -V ntp' to see if the initscript " "has been modified. system-config-date will exit now.") % '/etc/rc.d/init.d/ntpd') dlg = gtk.MessageDialog(None, 0, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, text) dlg.set_title(_("Error")) dlg.set_default_size(100, 100) dlg.set_position (gtk.WIN_POS_CENTER_ON_PARENT) dlg.set_border_width(2) dlg.set_modal(True) rc = dlg.run() dlg.destroy() import os os._exit(1) ntpBroadcastClient = scdMainWindow.dateBackend.getNtpBroadcastClient() #print "ntpBroadcastClient = " + str (ntpBroadcastClient) self.ntpBroadcastClientCheckButton.set_active(ntpBroadcastClient) (self.ntpServers, self.ntpLocalTimeSource) = scdMainWindow.dateBackend.getNtpServers () self.ntpLocalTimeSourceButton.set_active (self.ntpLocalTimeSource) self.ntpIburst = scdMainWindow.dateBackend.getIburst () self.ntpIburstButton.set_active (self.ntpIburst) self.ntpListStore.clear () for ntpServer in self.ntpServers: iter = self.ntpListStore.append () self.ntpListStore.set_value (iter, self.NTPSERVER, ntpServer) self.ntpCheckButtonClicked () self.hourEntry.connect("changed", self.changed) self.minEntry.connect("changed", self.changed) self.secEntry.connect("changed", self.changed)
def cityname_format (self, name): componentsReversed = reversed (name.split ('/')) return _(', ').join (componentsReversed)
def timezone_list_init (self, default): root = self.canvas.root () self.treeStore = gtk.TreeStore (gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_STRING) self.treeStoreRoots = {} nonGeoTzItem = 10 for entry in self.zonetab.getEntries (): if entry.tz[0:4] != 'Etc/': try: tz_root_str, tz_node_str = \ entry.translated_tz.rsplit ('/', 1) except ValueError: print >>sys.stderr, "Couldn't split timezone name fields:\nUntranslated TZ: %s\nTranslated TZ: %s" % (entry.tz, entry.translated_tz) raise tzsortprefix = "0/" else: tz_root_str = _('Non-geographic timezones') tz_node_str = entry.translated_tz.split("/", 1)[1] tzsortprefix = "%u/" % nonGeoTzItem nonGeoTzItem += 1 tz_root_str_split = tz_root_str.split ('/') for depth in xrange (len (tz_root_str_split)): root_joined_str = '/'.join (tz_root_str_split[:depth]) root_joined_str_1 = '/'.join (tz_root_str_split[:depth+1]) if depth == 0: riter = None else: riter = self.treeStoreRoots[root_joined_str] if not self.treeStoreRoots.has_key (root_joined_str_1): iter = self.treeStore.append (riter) self.treeStore.set_value (iter, self.columns.TZ, tz_root_str_split [depth]) self.treeStore.set_value (iter, self.columns.COMMENTS, None) self.treeStore.set_value (iter, self.columns.ENTRY, None) self.treeStore.set_value (iter, self.columns.TZSORT, tzsortprefix + tz_root_str_split [depth]) self.treeStoreRoots[root_joined_str_1] = iter iter = self.treeStore.append (self.treeStoreRoots[tz_root_str]) self.treeStore.set_value (iter, self.columns.TZ, tz_node_str) if entry.comments: self.treeStore.set_value (iter, self.columns.COMMENTS, _(entry.comments)) else: self.treeStore.set_value (iter, self.columns.COMMENTS, "") self.treeStore.set_value (iter, self.columns.ENTRY, entry) self.treeStore.set_value (iter, self.columns.TZSORT, (tzsortprefix + tz_node_str).replace ('+', '+1').replace ('-', '-0')) if entry.long != None and entry.lat != None: x, y = self.map2canvas (entry.lat, entry.long) marker = root.add (gnomecanvas.CanvasText, x=x, y=y, text=u'\u00B7', fill_color='yellow', anchor=gtk.ANCHOR_CENTER, weight=pango.WEIGHT_BOLD) self.markers[entry.tz] = marker if entry.tz == default: self.currentEntry = entry if entry.tz == "America/New York": #In case the /etc/sysconfig/clock is messed up, use New York as default self.fallbackEntry = entry self.treeStore.set_sort_column_id (self.columns.TZSORT, gtk.SORT_ASCENDING) self.treeView = gtk.TreeView (self.treeStore) selection = self.treeView.get_selection () selection.connect ("changed", self.selectionChanged) #self.treeView.connect ('button_press_event', self.selectionChanged_wrap) self.treeView.set_property ("headers-visible", False) col = gtk.TreeViewColumn (None, gtk.CellRendererText (), text=0) self.treeView.append_column (col) col = gtk.TreeViewColumn (None, gtk.CellRendererText (), text=1) self.treeView.append_column (col) sw = gtk.ScrolledWindow () sw.add (self.treeView) sw.set_shadow_type (gtk.SHADOW_IN) self.pack_start (sw, True, True)
Reserved options: --page <page> Display page <page> """)) def useGuiMode(page): import scdMainWindow scdMainWindow.scdMainWindow(page).stand_alone() if __name__ == "__main__": signal.signal (signal.SIGINT, signal.SIG_DFL) try: opts, rest = getopt.gnu_getopt(sys.argv[1:], "h", ["help"]) except getopt.GetoptError, g: sys.stderr.write (_("option(s) '%s' not recognized\n") % g.opt) showhelp () sys.exit (1) if rest: sys.stderr.write (_("option(s) '%s' not recognized\n") % ' '.join (rest)) showhelp () sys.exit (1) page = 0 for opt, value in opts: if opt == '-h' or opt == '--help': showhelp () sys.exit (0) if opt == "--page": page = int(value)