class WidgetClass(common.WidgetClass): def __init__(self, event): common.WidgetClass.__init__(self, event) ### hbox = gtk.HBox() pack(hbox, gtk.Label(_("Date"))) self.dateInput = DateButton() pack(hbox, self.dateInput) pack(self, hbox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self): common.WidgetClass.updateWidget(self) self.dateInput.set_value(self.event.getDate()) def updateVars(self): common.WidgetClass.updateVars(self) self.event.setDate(*self.dateInput.get_value()) def modeComboChanged(self, obj=None): # overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.dateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(gtk.HBox): def __init__(self, rule): self.rule = rule ### gtk.ComboBox.__init__(self) ### self.dateInput = DateButton() pack(self, self.dateInput) ### pack(self, gtk.Label(" " + _("Time"))) self.timeInput = TimeButton() pack(self, self.timeInput) def updateWidget(self): self.dateInput.set_value(self.rule.date) self.timeInput.set_value(self.rule.time) def updateVars(self): self.rule.date = self.dateInput.get_value() self.rule.time = self.timeInput.get_value() def changeMode(self, mode): curMode = self.rule.getMode() if mode != curMode: y, m, d = self.dateInput.get_value() self.dateInput.set_value(core.convert(y, m, d, curMode, mode))
class WidgetClass(gtk.HBox): def __init__(self, rule): self.rule = rule ### gtk.ComboBox.__init__(self) ### self.dateInput = DateButton() pack(self, self.dateInput) ### pack(self, gtk.Label(' ' + _('Time'))) self.timeInput = TimeButton() pack(self, self.timeInput) def updateWidget(self): self.dateInput.set_value(self.rule.date) self.timeInput.set_value(self.rule.time) def updateVars(self): self.rule.date = self.dateInput.get_value() self.rule.time = self.timeInput.get_value() def changeMode(self, mode): curMode = self.rule.getMode() if mode != curMode: y, m, d = self.dateInput.get_value() self.dateInput.set_value(core.convert(y, m, d, curMode, mode))
class WidgetClass(gtk.HBox): def __init__(self, rule): self.rule = rule ### gtk.ComboBox.__init__(self) ### self.dateInput = DateButton() pack(self, self.dateInput) ### pack(self, gtk.Label(" " + _("Time"))) self.timeInput = TimeButton() pack(self, self.timeInput) def updateWidget(self): self.dateInput.set_value(self.rule.date) self.timeInput.set_value(self.rule.time) def updateVars(self): self.rule.date = self.dateInput.get_value() self.rule.time = self.timeInput.get_value() def changeMode(self, mode): if mode == self.rule.getMode(): return self.updateVars() self.rule.changeMode(mode) self.updateWidget()
class ExportToIcsDialog(gtk.Dialog, MyDialog): def __init__(self, saveIcsFunc, defaultFileName, **kwargs): self.saveIcsFunc = saveIcsFunc gtk.Dialog.__init__(self, **kwargs) self.set_title(_('Export to %s')%'iCalendar') ## parent=None FIXME #self.set_has_separator(False) ######## hbox = gtk.HBox(spacing=2) pack(hbox, gtk.Label(_('From')+' ')) self.startDateInput = DateButton() pack(hbox, self.startDateInput) pack(hbox, gtk.Label(' '+_('To')+' ')) self.endDateInput = DateButton() pack(hbox, self.endDateInput) pack(self.vbox, hbox) #### year, month, day = ui.todayCell.dates[calTypes.primary] self.startDateInput.set_value((year, 1, 1, 0)) self.endDateInput.set_value((year+1, 1, 1, 0)) ######## self.fcw = gtk.FileChooserWidget(action=gtk.FileChooserAction.SAVE) pack(self.vbox, self.fcw, 1, 1) self.vbox.set_focus_child(self.fcw)## FIXME self.vbox.show_all() ## dialog_add_button(self, gtk.STOCK_CANCEL, _('_Cancel'), 1, self.onDelete) dialog_add_button(self, gtk.STOCK_SAVE, _('_Save'), 2, self.save) ## self.connect('delete-event', self.onDelete) self.fcw.connect('file-activated', self.save)## not working FIXME ## try: self.fcw.set_current_folder(core.deskDir) except AttributeError:## PyGTK < 2.4 pass if not defaultFileName.endswith('.ics'): defaultFileName += '.ics' self.fcw.set_current_name(defaultFileName) def onDelete(self, widget=None, event=None):## hide(close) File Chooser Dialog self.destroy() return True def _save(self, path, startJd, endJd): self.saveIcsFunc(path, startJd, endJd) self.destroy() def save(self, widget=None): while gtk.events_pending(): gtk.main_iteration_do(False) path = self.fcw.get_filename() if path in (None, ''): return print('Exporting to ics file "%s"'%path) self.waitingDo( self._save, path, core.primary_to_jd(*self.startDateInput.get_value()), core.primary_to_jd(*self.endDateInput.get_value()), )
class WidgetClass(common.WidgetClass): def __init__(self, event): ## FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### try: seperated = event.parent.showSeperatedYmdInputs except AttributeError: seperated = False if seperated: self.startDateInput = YearMonthDayBox() self.endDateInput = YearMonthDayBox() else: self.startDateInput = DateButton() self.endDateInput = DateButton() ###### hbox = gtk.HBox() label = gtk.Label(_('Start') + ': ') label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) pack(hbox, self.startDateInput) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_('End') + ': ') label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) pack(hbox, self.endDateInput) pack(self, hbox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self): common.WidgetClass.updateWidget(self) self.startDateInput.set_value(self.event['start'].date) self.endDateInput.set_value(self.event['end'].date) def updateVars(self): ## FIXME common.WidgetClass.updateVars(self) self.event['start'].setDate(self.startDateInput.get_value()) self.event['end'].setDate(self.endDateInput.get_value()) def modeComboChanged(self, obj=None ): ## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(common.WidgetClass): def __init__(self, event):## FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### try: seperated = event.parent.showSeperatedYmdInputs except AttributeError: seperated = False if seperated: self.startDateInput = YearMonthDayBox() self.endDateInput = YearMonthDayBox() else: self.startDateInput = DateButton() self.endDateInput = DateButton() ###### hbox = gtk.HBox() label = gtk.Label(_('Start')+': ') label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) pack(hbox, self.startDateInput) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_('End')+': ') label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) pack(hbox, self.endDateInput) pack(self, hbox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self): common.WidgetClass.updateWidget(self) self.startDateInput.set_value(self.event['start'].date) self.endDateInput.set_value(self.event['end'].date) def updateVars(self):## FIXME common.WidgetClass.updateVars(self) self.event['start'].setDate(self.startDateInput.get_value()) self.event['end'].setDate(self.endDateInput.get_value()) def modeComboChanged(self, obj=None):## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(common.WidgetClass): def __init__(self, event):## FIXME event.setJd(ui.cell.jd) common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_('Start')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_('End')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) ### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_('Day of Month')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.daySpin = DaySpinButton() pack(hbox, self.daySpin) ### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ######### hbox = gtk.HBox() label = gtk.Label(_('Time')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) ## self.dayTimeStartInput = HourMinuteButton() self.dayTimeEndInput = HourMinuteButton() ## pack(hbox, self.dayTimeStartInput) pack(hbox, gtk.Label(' ' + _('to') + ' ')) pack(hbox, self.dayTimeEndInput) pack(self, hbox) ############# #self.notificationBox = common.NotificationBox(event) #pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self):## FIXME common.WidgetClass.updateWidget(self) mode = self.event.mode ### self.startDateInput.set_value(jd_to(self.event.getStartJd(), mode)) self.endDateInput.set_value(jd_to(self.event.getEndJd(), mode)) ### self.daySpin.set_value(self.event.getDay()) ### timeRangeRule = self.event['dayTimeRange'] self.dayTimeStartInput.set_value(timeRangeRule.dayTimeStart) self.dayTimeEndInput.set_value(timeRangeRule.dayTimeEnd) def updateVars(self):## FIXME common.WidgetClass.updateVars(self) self.event['start'].setDate(self.startDateInput.get_value()) self.event['end'].setDate(self.endDateInput.get_value()) self.event.setDay(self.daySpin.get_value()) ### self.event['dayTimeRange'].setRange( self.dayTimeStartInput.get_value(), self.dayTimeEndInput.get_value(), ) def modeComboChanged(self, obj=None):## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class EditDbDialog(gtk.Dialog): def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Tune Hijri Monthes")) self.connect("delete-event", self.onDeleteEvent) ############ self.altMode = 0 self.altModeDesc = "Gregorian" ############ hbox = gtk.HBox() self.topLabel = gtk.Label() pack(hbox, self.topLabel) self.startDateInput = DateButton() self.startDateInput.set_editable(False) ## FIXME self.startDateInput.connect("changed", lambda widget: self.updateEndDates()) pack(hbox, self.startDateInput) pack(self.vbox, hbox) ############################ treev = gtk.TreeView() trees = gtk.ListStore( int, # ym (hidden) str, # localized year str, # localized month int, # monthLenCombo str, # localized endDate ) treev.set_model(trees) #treev.get_selection().connect("changed", self.plugTreevCursorChanged) #treev.connect("row-activated", self.plugTreevRActivate) #treev.connect("button-press-event", self.plugTreevButtonPress) ### swin = gtk.ScrolledWindow() swin.add(treev) swin.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_("Year"), cell, text=1) treev.append_column(col) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_("Month"), cell, text=2) treev.append_column(col) ###### cell = gtk.CellRendererCombo() mLenModel = gtk.ListStore(int) mLenModel.append([29]) mLenModel.append([30]) cell.set_property("model", mLenModel) #cell.set_property("has-entry", False) cell.set_property("editable", True) cell.set_property("text-column", 0) cell.connect("edited", self.monthLenCellEdited) col = gtk.TreeViewColumn(_("Month Length"), cell, text=3) treev.append_column(col) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_("End Date"), cell, text=4) treev.append_column(col) ###### toolbar = gtk.Toolbar() toolbar.set_orientation(gtk.Orientation.VERTICAL) size = gtk.IconSize.SMALL_TOOLBAR ### tb = toolButtonFromStock(gtk.STOCK_ADD, size) set_tooltip(tb, _("Add")) tb.connect("clicked", self.addClicked) toolbar.insert(tb, -1) ### tb = toolButtonFromStock(gtk.STOCK_DELETE, size) set_tooltip(tb, _("Delete")) tb.connect("clicked", self.delClicked) toolbar.insert(tb, -1) ###### self.treev = treev self.trees = trees ##### mainHbox = gtk.HBox() pack(mainHbox, swin, 1, 1) pack(mainHbox, toolbar) pack(self.vbox, mainHbox, 1, 1) ###### dialog_add_button( self, gtk.STOCK_OK, _("_OK"), gtk.ResponseType.OK, ) dialog_add_button( self, gtk.STOCK_CANCEL, _("_Cancel"), gtk.ResponseType.CANCEL, ) ## resetB = self.add_button( gtk.STOCK_UNDO, gtk.ResponseType.NONE, ) resetB.set_label(_("_Reset to Defaults")) resetB.set_image( gtk.Image.new_from_stock( gtk.STOCK_UNDO, gtk.IconSize.BUTTON, )) resetB.connect("clicked", self.resetToDefaults) ## self.connect("response", self.onResponse) #print(dir(self.get_action_area())) #self.get_action_area().set_homogeneous(False) ###### self.vbox.show_all() def resetToDefaults(self, widget): if isfile(hijri.monthDb.userDbPath): os.remove(hijri.monthDb.userDbPath) hijri.monthDb.load() self.updateWidget() return True def addClicked(self, obj=None): last = self.trees[-1] # 0 ym # 1 yearLocale # 2 monthLocale # 3 mLen # 4 endDate = "" ym = last[0] + 1 mLen = 59 - last[3] year, month0 = divmod(ym, 12) self.trees.append(( ym, _(year), _(hijri.monthName[month0]), mLen, "", )) self.updateEndDates() self.selectLastRow() def selectLastRow(self): lastPath = (len(self.trees) - 1, ) self.treev.scroll_to_cell(lastPath) self.treev.set_cursor(lastPath) def delClicked(self, obj=None): if len(self.trees) > 1: del self.trees[-1] self.selectLastRow() def updateWidget(self): #for index, module in calTypes.iterIndexModule(): # if module.name != "hijri": for mode in calTypes.active: module, ok = calTypes[mode] if not ok: raise RuntimeError("cal type %r not found" % mode) modeDesc = module.desc if "hijri" not in modeDesc.lower(): self.altMode = mode self.altModeDesc = modeDesc break self.topLabel.set_label( _("Start") + ": " + dateLocale(*hijri.monthDb.startDate) + " " + _("Equals to") + " %s" % _(self.altModeDesc)) self.startDateInput.set_value( jd_to(hijri.monthDb.startJd, self.altMode)) ########### selectYm = getCurrentYm() - 1 ## previous month selectIndex = None self.trees.clear() for index, ym, mLen in hijri.monthDb.getMonthLenList(): if ym == selectYm: selectIndex = index year, month0 = divmod(ym, 12) self.trees.append([ ym, _(year), _(hijri.monthName[month0]), mLen, "", ]) self.updateEndDates() ######## if selectIndex is not None: self.treev.scroll_to_cell(str(selectIndex)) self.treev.set_cursor(str(selectIndex)) def updateEndDates(self): y, m, d = self.startDateInput.get_value() jd0 = to_jd(y, m, d, self.altMode) - 1 for row in self.trees: mLen = row[3] jd0 += mLen row[4] = dateLocale(*jd_to(jd0, self.altMode)) def monthLenCellEdited(self, combo, path_string, new_text): editIndex = int(path_string) mLen = int(new_text) if mLen not in (29, 30): return mLenPrev = self.trees[editIndex][3] delta = mLen - mLenPrev if delta == 0: return n = len(self.trees) self.trees[editIndex][3] = mLen if delta == 1: for i in range(editIndex + 1, n): if self.trees[i][3] == 30: self.trees[i][3] = 29 break elif delta == -1: for i in range(editIndex + 1, n): if self.trees[i][3] == 29: self.trees[i][3] = 30 break self.updateEndDates() def updateVars(self): y, m, d = self.startDateInput.get_value() hijri.monthDb.endJd = hijri.monthDb.startJd = to_jd( y, m, d, self.altMode) hijri.monthDb.monthLenByYm = {} for row in self.trees: ym = row[0] mLen = row[3] hijri.monthDb.monthLenByYm[ym] = mLen hijri.monthDb.endJd += mLen hijri.monthDb.expJd = hijri.monthDb.endJd hijri.monthDb.save() def run(self): hijri.monthDb.load() self.updateWidget() self.treev.grab_focus() gtk.Dialog.run(self) def onResponse(self, dialog, response_id): if response_id == gtk.ResponseType.OK: self.updateVars() self.destroy() elif response_id == gtk.ResponseType.CANCEL: self.destroy() return True def onDeleteEvent(self, dialog, gevent): self.destroy() return True
class AdjusterDialog(gtk.Dialog): xpad = 15 def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Adjust System Date & Time")) # FIXME self.set_keep_above(True) try: self.set_icon(IconTheme.get_default().load_icon( icon_name = "preferences-system-time", size = 32, flags = 0, )) except Exception: pass # render_icon: Deprecated since version 3.0: Use Gtk.Widget.render_icon_pixbuf() instead. # render_icon_pixbuf: Deprecated since version 3.10: Use Gtk.IconTheme.load_icon() instead. ######### self.buttonCancel = self.add_button(gtk.STOCK_CANCEL, 0) #self.buttonCancel.connect("clicked", lambda w: sys.exit(0)) self.buttonSet = self.add_button(_("Set System Time"), 1) #self.buttonSet.connect("clicked", self.setSysTimeClicked) ######### hbox = gtk.HBox() self.label_cur = gtk.Label(label=_("Current:")) pack(hbox, self.label_cur) pack(self.vbox, hbox) ######### hbox = gtk.HBox() self.radioMan = gtk.RadioButton.new_with_mnemonic( group=None, label=_("Set _Manully:"), ) self.radioMan.connect("clicked", self.radioManClicked) pack(hbox, self.radioMan) pack(self.vbox, hbox) ###### vb = gtk.VBox() sg = gtk.SizeGroup(mode=gtk.SizeGroupMode.HORIZONTAL) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditTime = gtk.CheckButton.new_with_mnemonic(_("Edit _Time")) self.editTime = False self.ckeckbEditTime.connect("clicked", self.ckeckbEditTimeClicked) pack(hbox, self.ckeckbEditTime) sg.add_widget(self.ckeckbEditTime) self.timeInput = TimeButton() ## ??????? options pack(hbox, self.timeInput) pack(vb, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditDate = gtk.CheckButton.new_with_mnemonic(_("Edit _Date")) self.editDate = False self.ckeckbEditDate.connect("clicked", self.ckeckbEditDateClicked) pack(hbox, self.ckeckbEditDate) sg.add_widget(self.ckeckbEditDate) self.dateInput = DateButton() ## ??????? options pack(hbox, self.dateInput) pack(vb, hbox) ### pack(self.vbox, vb, 0, 0, 10)#????? self.vboxMan = vb ###### hbox = gtk.HBox() self.radioNtp = gtk.RadioButton.new_with_mnemonic_from_widget( radio_group_member=self.radioMan, label=_("Set from _NTP:"), ) self.radioNtp.connect("clicked", self.radioNtpClicked) pack(hbox, self.radioNtp) pack(self.vbox, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## pack(hbox, gtk.Label(label=_("Server:") + " ")) combo = gtk.ComboBoxText.new_with_entry() combo.get_child().connect("changed", self.updateSetButtonSensitive) pack(hbox, combo, 1, 1) self.ntpServerEntry = combo.get_child() for s in ui.ntpServers: combo.append_text(s) combo.set_active(0) self.hboxNtp = hbox pack(self.vbox, hbox) ###### self.radioManClicked() #self.radioNtpClicked() self.ckeckbEditTimeClicked() self.ckeckbEditDateClicked() ###### self.updateTimes() self.vbox.show_all() def radioManClicked(self, radio=None): if self.radioMan.get_active(): self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) else: self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) self.updateSetButtonSensitive() def radioNtpClicked(self, radio=None): if self.radioNtp.get_active(): self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) else: self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) self.updateSetButtonSensitive() def ckeckbEditTimeClicked(self, checkb=None): self.editTime = self.ckeckbEditTime.get_active() self.timeInput.set_sensitive(self.editTime) self.updateSetButtonSensitive() def ckeckbEditDateClicked(self, checkb=None): self.editDate = self.ckeckbEditDate.get_active() self.dateInput.set_sensitive(self.editDate) self.updateSetButtonSensitive() #def set_sys_time(self): # if os.path.isfile("/bin/date"): # pass # FIXME # elif sys.platform == "win32": # import win32api # win32api.SetSystemTime()##???????? # else: # pass def updateTimes(self): dt = now() % 1 timeout_add(clockWaitMilliseconds(), self.updateTimes) #print("updateTimes", dt) lt = localtime() self.label_cur.set_label( _("Current:") + " %.4d/%.2d/%.2d - %.2d:%.2d:%.2d" % lt[:6] ) if not self.editTime: self.timeInput.set_value(lt[3:6]) if not self.editDate: self.dateInput.set_value(lt[:3]) return False def updateSetButtonSensitive(self, widget=None): if self.radioMan.get_active(): self.buttonSet.set_sensitive(self.editTime or self.editDate) elif self.radioNtp.get_active(): self.buttonSet.set_sensitive( self.ntpServerEntry.get_text() != "" ) def setSysTimeClicked(self, widget=None): if self.radioMan.get_active(): if self.editTime: h, m, s = self.timeInput.get_value() if self.editDate: Y, M, D = self.dateInput.get_value() cmd = [ "/bin/date", "-s", "%.4d/%.2d/%.2d %.2d:%.2d:%.2d" % ( Y, M, D, h, m, s, ), ] else: cmd = [ "/bin/date", "-s", "%.2d:%.2d:%.2d" % (h, m, s), ] else: if self.editDate: Y, M, D = self.dateInput.get_value() ##h, m, s = self.timeInput.get_value() h, m, s = localtime()[3:6] cmd = [ "/bin/date", "-s", "%.4d/%.2d/%.2d %.2d:%.2d:%.2d" % ( Y, M, D, h, m, s, ), ] else: error_exit("No change!", self) # FIXME elif self.radioNtp.get_active(): cmd = ["ntpdate", self.ntpServerEntry.get_text()] #if os.path.isfile("/usr/sbin/ntpdate"): # cmd = ["/usr/sbin/ntpdate", self.ntpServerEntry.get_text()] #else: # error_exit( # "Could not find command /usr/sbin/ntpdate: no such file!", # self, #) # FIXME else: error_exit("Not valid option!", self) proc = subprocess.Popen( cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, ) resCode = proc.wait() error = proc.stderr.read().strip() output = proc.stdout.read().strip() if output: print(output) #print("resCode=%r, error=%r, output=%r" % (resCode, error, output)) if error: print(error) if resCode != 0: error_exit( resCode, error, parent=self, )
class AdjusterDialog(gtk.Dialog): xpad = 15 def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Adjust System Date & Time")) ##???????? self.set_icon(self.render_icon(gtk.STOCK_PREFERENCES, gtk.IconSize.BUTTON)) ######### self.buttonCancel = self.add_button(gtk.STOCK_CANCEL, 0) # self.buttonCancel.connect('clicked', lambda w: sys.exit(0)) self.buttonSet = self.add_button(_("Set System Time"), 1) # self.buttonSet.connect('clicked', self.setSysTimeClicked) ######### hbox = gtk.HBox() self.label_cur = gtk.Label(_("Current:")) pack(hbox, self.label_cur) pack(self.vbox, hbox) ######### hbox = gtk.HBox() self.radioMan = gtk.RadioButton(None, _("Set _Manully:"), True) self.radioMan.connect("clicked", self.radioManClicked) pack(hbox, self.radioMan) pack(self.vbox, hbox) ###### vb = gtk.VBox() sg = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ### hbox = gtk.HBox() ## l = gtk.Label("") l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditTime = gtk.CheckButton(_("Edit Time")) self.editTime = False self.ckeckbEditTime.connect("clicked", self.ckeckbEditTimeClicked) pack(hbox, self.ckeckbEditTime) sg.add_widget(self.ckeckbEditTime) self.timeInput = TimeButton() ## ??????? options pack(hbox, self.timeInput) pack(vb, hbox) ### hbox = gtk.HBox() ## l = gtk.Label("") l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditDate = gtk.CheckButton(_("Edit Date")) self.editDate = False self.ckeckbEditDate.connect("clicked", self.ckeckbEditDateClicked) pack(hbox, self.ckeckbEditDate) sg.add_widget(self.ckeckbEditDate) self.dateInput = DateButton() ## ??????? options pack(hbox, self.dateInput) pack(vb, hbox) ### pack(self.vbox, vb, 0, 0, 10) # ????? self.vboxMan = vb ###### hbox = gtk.HBox() self.radioNtp = gtk.RadioButton(group=self.radioMan, label=_("Set from NTP:")) self.radioNtp.connect("clicked", self.radioNtpClicked) pack(hbox, self.radioNtp) pack(self.vbox, hbox) ### hbox = gtk.HBox() ## l = gtk.Label("") l.set_property("width-request", self.xpad) pack(hbox, l) ## pack(hbox, gtk.Label(_("Server:") + " ")) combo = gtk.ComboBoxText.new_with_entry() combo.get_child().connect("changed", self.updateSetButtonSensitive) pack(hbox, combo, 1, 1) self.ntpServerEntry = combo.get_child() for s in ui.ntpServers: combo.append_text(s) combo.set_active(0) self.hboxNtp = hbox pack(self.vbox, hbox) ###### self.radioManClicked() # self.radioNtpClicked() self.ckeckbEditTimeClicked() self.ckeckbEditDateClicked() ###### self.updateTimes() self.vbox.show_all() def radioManClicked(self, radio=None): if self.radioMan.get_active(): self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) else: self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) self.updateSetButtonSensitive() def radioNtpClicked(self, radio=None): if self.radioNtp.get_active(): self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) else: self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) self.updateSetButtonSensitive() def ckeckbEditTimeClicked(self, checkb=None): self.editTime = self.ckeckbEditTime.get_active() self.timeInput.set_sensitive(self.editTime) self.updateSetButtonSensitive() def ckeckbEditDateClicked(self, checkb=None): self.editDate = self.ckeckbEditDate.get_active() self.dateInput.set_sensitive(self.editDate) self.updateSetButtonSensitive() """def set_sys_time(self): if os.path.isfile('/bin/date'): pass##???????? elif sys.platform == 'win32': import win32api win32api.SetSystemTime()##???????? else: pass""" def updateTimes(self): dt = now() % 1 timeout_add(iceil(1000 * (1 - dt)), self.updateTimes) # print('updateTimes', dt) lt = localtime() self.label_cur.set_label(_("Current:") + " %.4d/%.2d/%.2d - %.2d:%.2d:%.2d" % lt[:6]) if not self.editTime: self.timeInput.set_value(lt[3:6]) if not self.editDate: self.dateInput.set_value(lt[:3]) return False def updateSetButtonSensitive(self, widget=None): if self.radioMan.get_active(): self.buttonSet.set_sensitive(self.editTime or self.editDate) elif self.radioNtp.get_active(): self.buttonSet.set_sensitive(self.ntpServerEntry.get_text() != "") def setSysTimeClicked(self, widget=None): if self.radioMan.get_active(): if self.editTime: h, m, s = self.timeInput.get_value() if self.editDate: Y, M, D = self.dateInput.get_value() cmd = ["/bin/date", "-s", "%.4d/%.2d/%.2d %.2d:%.2d:%.2d" % (Y, M, D, h, m, s)] else: cmd = ["/bin/date", "-s", "%.2d:%.2d:%.2d" % (h, m, s)] else: if self.editDate: Y, M, D = self.dateInput.get_value() ##h, m, s = self.timeInput.get_value() h, m, s = localtime()[3:6] cmd = ["/bin/date", "-s", "%.4d/%.2d/%.2d %.2d:%.2d:%.2d" % (Y, M, D, h, m, s)] else: error_exit("No change!", self) # ?????????? elif self.radioNtp.get_active(): cmd = ["ntpdate", self.ntpServerEntry.get_text()] # if os.path.isfile('/usr/sbin/ntpdate'): # cmd = ['/usr/sbin/ntpdate', self.ntpServerEntry.get_text()] # else: # error_exit('Could not find command /usr/sbin/ntpdate: no such file!', self)#?????????? else: error_exit("Not valid option!", self) proc = subprocess.Popen(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE) resCode = proc.wait() error = proc.stderr.read().strip() output = proc.stdout.read().strip() if output: print(output) # print('resCode=%r, error=%r, output=%r' % (resCode, error, output)) if error: print(error) if resCode != 0: error_exit(resCode, error, parent=self)
class WidgetClass(common.WidgetClass): def __init__(self, event): # FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_("Start")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ## pack(hbox, gtk.Label(" " + _("Time"))) self.startTimeInput = TimeButton() pack(hbox, self.startTimeInput) ## pack(self, hbox) ###### hbox = gtk.HBox() self.endTypeCombo = gtk.ComboBoxText() for item in ("Duration", "End"): self.endTypeCombo.append_text(_(item)) self.endTypeCombo.connect("changed", self.endTypeComboChanged) sizeGroup.add_widget(self.endTypeCombo) pack(hbox, self.endTypeCombo) #### self.durationBox = common.DurationInputBox() pack(hbox, self.durationBox, 1, 1) #### self.endDateHbox = gtk.HBox() self.endDateInput = DateButton() pack(self.endDateHbox, self.endDateInput) ## pack(self.endDateHbox, gtk.Label(" " + _("Time"))) self.endTimeInput = TimeButton() pack(self.endDateHbox, self.endTimeInput) ## pack(hbox, self.endDateHbox, 1, 1) #### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ############# self.notificationBox = common.NotificationBox(event) pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def endTypeComboChanged(self, combo=None): active = self.endTypeCombo.get_active() if active == 0: # duration self.durationBox.show() self.endDateHbox.hide() elif active == 1: # end date self.durationBox.hide() self.endDateHbox.show() else: raise RuntimeError def updateWidget(self): ## FIXME common.WidgetClass.updateWidget(self) ### startDate, startTime = self.event.getStart() self.startDateInput.set_value(startDate) self.startTimeInput.set_value(startTime) ### endType, values = self.event.getEnd() if endType == "duration": self.endTypeCombo.set_active(0) self.durationBox.setDuration(*values) self.endDateInput.set_value(startDate) ## FIXME self.endTimeInput.set_value(startTime) ## FIXME elif endType == "date": self.endTypeCombo.set_active(1) self.endDateInput.set_value(values[0]) self.endTimeInput.set_value(values[1]) else: raise RuntimeError self.endTypeComboChanged() def updateVars(self): # FIXME common.WidgetClass.updateVars(self) self.event.setStart( self.startDateInput.get_value(), self.startTimeInput.get_value(), ) ### active = self.endTypeCombo.get_active() if active == 0: self.event.setEnd("duration", *self.durationBox.getDuration()) elif active == 1: self.event.setEnd( "date", self.endDateInput.get_value(), self.endTimeInput.get_value(), ) def modeComboChanged(self, obj=None): # overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class ExportToIcsDialog(gtk.Dialog, MyDialog): def __init__(self, saveIcsFunc, defaultFileName, **kwargs): self.saveIcsFunc = saveIcsFunc gtk.Dialog.__init__(self, **kwargs) self.set_title(_('Export to %s') % 'iCalendar') ## parent=None FIXME #self.set_has_separator(False) ######## hbox = gtk.HBox(spacing=2) pack(hbox, gtk.Label(_('From') + ' ')) self.startDateInput = DateButton() pack(hbox, self.startDateInput) pack(hbox, gtk.Label(' ' + _('To') + ' ')) self.endDateInput = DateButton() pack(hbox, self.endDateInput) pack(self.vbox, hbox) #### year, month, day = ui.todayCell.dates[calTypes.primary] self.startDateInput.set_value((year, 1, 1)) self.endDateInput.set_value((year + 1, 1, 1)) ######## self.fcw = gtk.FileChooserWidget(action=gtk.FileChooserAction.SAVE) pack(self.vbox, self.fcw, 1, 1) self.vbox.set_focus_child(self.fcw) ## FIXME self.vbox.show_all() ## dialog_add_button(self, gtk.STOCK_CANCEL, _('_Cancel'), 1, self.onDelete) dialog_add_button(self, gtk.STOCK_SAVE, _('_Save'), 2, self.save) ## self.connect('delete-event', self.onDelete) self.fcw.connect('file-activated', self.save) ## not working FIXME ## try: self.fcw.set_current_folder(core.deskDir) except AttributeError: ## PyGTK < 2.4 pass if not defaultFileName.endswith('.ics'): defaultFileName += '.ics' self.fcw.set_current_name(defaultFileName) def onDelete(self, widget=None, event=None): ## hide(close) File Chooser Dialog self.destroy() return True def _save(self, path, startJd, endJd): self.saveIcsFunc(path, startJd, endJd) self.destroy() def save(self, widget=None): while gtk.events_pending(): gtk.main_iteration_do(False) path = self.fcw.get_filename() if path in (None, ''): return print('Exporting to ics file "%s"' % path) self.waitingDo( self._save, path, core.primary_to_jd(*self.startDateInput.get_value()), core.primary_to_jd(*self.endDateInput.get_value()), )
class EditDbDialog(gtk.Dialog): def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Tune Hijri Monthes")) self.connect("delete-event", self.onDeleteEvent) ############ self.altMode = 0 self.altModeDesc = "Gregorian" ############ hbox = gtk.HBox() self.topLabel = gtk.Label() pack(hbox, self.topLabel) self.startDateInput = DateButton() self.startDateInput.set_editable(False)## FIXME self.startDateInput.connect("changed", lambda widget: self.updateEndDates()) pack(hbox, self.startDateInput) pack(self.vbox, hbox) ############################ treev = gtk.TreeView() trees = gtk.ListStore( int, # ym (hidden) str, # localized year str, # localized month int, # monthLenCombo str, # localized endDate ) treev.set_model(trees) #treev.get_selection().connect("changed", self.plugTreevCursorChanged) #treev.connect("row-activated", self.plugTreevRActivate) #treev.connect("button-press-event", self.plugTreevButtonPress) ### swin = gtk.ScrolledWindow() swin.add(treev) swin.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_("Year"), cell, text=1) treev.append_column(col) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_("Month"), cell, text=2) treev.append_column(col) ###### cell = gtk.CellRendererCombo() mLenModel = gtk.ListStore(int) mLenModel.append([29]) mLenModel.append([30]) cell.set_property("model", mLenModel) #cell.set_property("has-entry", False) cell.set_property("editable", True) cell.set_property("text-column", 0) cell.connect("edited", self.monthLenCellEdited) col = gtk.TreeViewColumn(_("Month Length"), cell, text=3) treev.append_column(col) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_("End Date"), cell, text=4) treev.append_column(col) ###### toolbar = gtk.Toolbar() toolbar.set_orientation(gtk.Orientation.VERTICAL) size = gtk.IconSize.SMALL_TOOLBAR ### tb = toolButtonFromStock(gtk.STOCK_ADD, size) set_tooltip(tb, _("Add")) tb.connect("clicked", self.addClicked) toolbar.insert(tb, -1) ### tb = toolButtonFromStock(gtk.STOCK_DELETE, size) set_tooltip(tb, _("Delete")) tb.connect("clicked", self.delClicked) toolbar.insert(tb, -1) ###### self.treev = treev self.trees = trees ##### mainHbox = gtk.HBox() pack(mainHbox, swin, 1, 1) pack(mainHbox, toolbar) pack(self.vbox, mainHbox, 1, 1) ###### dialog_add_button( self, gtk.STOCK_OK, _("_OK"), gtk.ResponseType.OK, ) dialog_add_button( self, gtk.STOCK_CANCEL, _("_Cancel"), gtk.ResponseType.CANCEL, ) ## resetB = self.add_button( gtk.STOCK_UNDO, gtk.ResponseType.NONE, ) resetB.set_label(_("_Reset to Defaults")) resetB.set_image(gtk.Image.new_from_stock( gtk.STOCK_UNDO, gtk.IconSize.BUTTON, )) resetB.connect("clicked", self.resetToDefaults) ## self.connect("response", self.onResponse) #print(dir(self.get_action_area())) #self.get_action_area().set_homogeneous(False) ###### self.vbox.show_all() def resetToDefaults(self, widget): if isfile(hijri.monthDb.userDbPath): os.remove(hijri.monthDb.userDbPath) hijri.monthDb.load() self.updateWidget() return True def addClicked(self, obj=None): last = self.trees[-1] # 0 ym # 1 yearLocale # 2 monthLocale # 3 mLen # 4 endDate = "" ym = last[0] + 1 mLen = 59 - last[3] year, month0 = divmod(ym, 12) self.trees.append(( ym, _(year), _(hijri.monthName[month0]), mLen, "", )) self.updateEndDates() self.selectLastRow() def selectLastRow(self): lastPath = (len(self.trees) - 1,) self.treev.scroll_to_cell(lastPath) self.treev.set_cursor(lastPath) def delClicked(self, obj=None): if len(self.trees) > 1: del self.trees[-1] self.selectLastRow() def updateWidget(self): #for index, module in calTypes.iterIndexModule(): # if module.name != "hijri": for mode in calTypes.active: module, ok = calTypes[mode] if not ok: raise RuntimeError("cal type %r not found" % mode) modeDesc = module.desc if "hijri" not in modeDesc.lower(): self.altMode = mode self.altModeDesc = modeDesc break self.topLabel.set_label( _("Start") + ": " + dateLocale(*hijri.monthDb.startDate) + " " + _("Equals to") + " %s" % _(self.altModeDesc) ) self.startDateInput.set_value(jd_to(hijri.monthDb.startJd, self.altMode)) ########### selectYm = getCurrentYm() - 1 ## previous month selectIndex = None self.trees.clear() for index, ym, mLen in hijri.monthDb.getMonthLenList(): if ym == selectYm: selectIndex = index year, month0 = divmod(ym, 12) self.trees.append([ ym, _(year), _(hijri.monthName[month0]), mLen, "", ]) self.updateEndDates() ######## if selectIndex is not None: self.treev.scroll_to_cell(str(selectIndex)) self.treev.set_cursor(str(selectIndex)) def updateEndDates(self): y, m, d = self.startDateInput.get_value() jd0 = to_jd(y, m, d, self.altMode) - 1 for row in self.trees: mLen = row[3] jd0 += mLen row[4] = dateLocale(*jd_to(jd0, self.altMode)) def monthLenCellEdited(self, combo, path_string, new_text): editIndex = int(path_string) mLen = int(new_text) if mLen not in (29, 30): return mLenPrev = self.trees[editIndex][3] delta = mLen - mLenPrev if delta == 0: return n = len(self.trees) self.trees[editIndex][3] = mLen if delta == 1: for i in range(editIndex + 1, n): if self.trees[i][3] == 30: self.trees[i][3] = 29 break elif delta == -1: for i in range(editIndex + 1, n): if self.trees[i][3] == 29: self.trees[i][3] = 30 break self.updateEndDates() def updateVars(self): y, m, d = self.startDateInput.get_value() hijri.monthDb.endJd = hijri.monthDb.startJd = to_jd(y, m, d, self.altMode) hijri.monthDb.monthLenByYm = {} for row in self.trees: ym = row[0] mLen = row[3] hijri.monthDb.monthLenByYm[ym] = mLen hijri.monthDb.endJd += mLen hijri.monthDb.expJd = hijri.monthDb.endJd hijri.monthDb.save() def run(self): hijri.monthDb.load() self.updateWidget() self.treev.grab_focus() gtk.Dialog.run(self) def onResponse(self, dialog, response_id): if response_id == gtk.ResponseType.OK: self.updateVars() self.destroy() elif response_id == gtk.ResponseType.CANCEL: self.destroy() return True def onDeleteEvent(self, dialog, gevent): self.destroy() return True
class WidgetClass(common.WidgetClass): def __init__(self, event): # FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_("Start")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ## pack(hbox, gtk.Label(" " + _("Time"))) self.startTimeInput = TimeButton() pack(hbox, self.startTimeInput) ## pack(self, hbox) ###### hbox = gtk.HBox() self.endTypeCombo = gtk.ComboBoxText() for item in ("Duration", "End"): self.endTypeCombo.append_text(_(item)) self.endTypeCombo.connect("changed", self.endTypeComboChanged) sizeGroup.add_widget(self.endTypeCombo) pack(hbox, self.endTypeCombo) #### self.durationBox = common.DurationInputBox() pack(hbox, self.durationBox, 1, 1) #### self.endDateHbox = gtk.HBox() self.endDateInput = DateButton() pack(self.endDateHbox, self.endDateInput) ## pack(self.endDateHbox, gtk.Label(" " + _("Time"))) self.endTimeInput = TimeButton() pack(self.endDateHbox, self.endTimeInput) ## pack(hbox, self.endDateHbox, 1, 1) #### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ############# self.notificationBox = common.NotificationBox(event) pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def endTypeComboChanged(self, combo=None): active = self.endTypeCombo.get_active() if active == 0: # duration self.durationBox.show() self.endDateHbox.hide() elif active == 1: # end date self.durationBox.hide() self.endDateHbox.show() else: raise RuntimeError def updateWidget(self):## FIXME common.WidgetClass.updateWidget(self) ### startDate, startTime = self.event.getStart() self.startDateInput.set_value(startDate) self.startTimeInput.set_value(startTime) ### endType, values = self.event.getEnd() if endType == "duration": self.endTypeCombo.set_active(0) self.durationBox.setDuration(*values) self.endDateInput.set_value(startDate)## FIXME self.endTimeInput.set_value(startTime)## FIXME elif endType == "date": self.endTypeCombo.set_active(1) self.endDateInput.set_value(values[0]) self.endTimeInput.set_value(values[1]) else: raise RuntimeError self.endTypeComboChanged() def updateVars(self): # FIXME common.WidgetClass.updateVars(self) self.event.setStart( self.startDateInput.get_value(), self.startTimeInput.get_value(), ) ### active = self.endTypeCombo.get_active() if active == 0: self.event.setEnd("duration", *self.durationBox.getDuration()) elif active == 1: self.event.setEnd( "date", self.endDateInput.get_value(), self.endTimeInput.get_value(), ) def modeComboChanged(self, obj=None): # overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class AdjusterDialog(gtk.Dialog): xpad = 15 def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_('Adjust System Date & Time')) ##???????? self.set_icon( self.render_icon(gtk.STOCK_PREFERENCES, gtk.IconSize.BUTTON)) ######### self.buttonCancel = self.add_button(gtk.STOCK_CANCEL, 0) #self.buttonCancel.connect('clicked', lambda w: sys.exit(0)) self.buttonSet = self.add_button(_('Set System Time'), 1) #self.buttonSet.connect('clicked', self.setSysTimeClicked) ######### hbox = gtk.HBox() self.label_cur = gtk.Label(_('Current:')) pack(hbox, self.label_cur) pack(self.vbox, hbox) ######### hbox = gtk.HBox() self.radioMan = gtk.RadioButton(None, _('Set _Manully:'), True) self.radioMan.connect('clicked', self.radioManClicked) pack(hbox, self.radioMan) pack(self.vbox, hbox) ###### vb = gtk.VBox() sg = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ### hbox = gtk.HBox() ## l = gtk.Label('') l.set_property('width-request', self.xpad) pack(hbox, l) ## self.ckeckbEditTime = gtk.CheckButton(_('Edit Time')) self.editTime = False self.ckeckbEditTime.connect('clicked', self.ckeckbEditTimeClicked) pack(hbox, self.ckeckbEditTime) sg.add_widget(self.ckeckbEditTime) self.timeInput = TimeButton() ## ??????? options pack(hbox, self.timeInput) pack(vb, hbox) ### hbox = gtk.HBox() ## l = gtk.Label('') l.set_property('width-request', self.xpad) pack(hbox, l) ## self.ckeckbEditDate = gtk.CheckButton(_('Edit Date')) self.editDate = False self.ckeckbEditDate.connect('clicked', self.ckeckbEditDateClicked) pack(hbox, self.ckeckbEditDate) sg.add_widget(self.ckeckbEditDate) self.dateInput = DateButton() ## ??????? options pack(hbox, self.dateInput) pack(vb, hbox) ### pack(self.vbox, vb, 0, 0, 10) #????? self.vboxMan = vb ###### hbox = gtk.HBox() self.radioNtp = gtk.RadioButton(group=self.radioMan, label=_('Set from NTP:')) self.radioNtp.connect('clicked', self.radioNtpClicked) pack(hbox, self.radioNtp) pack(self.vbox, hbox) ### hbox = gtk.HBox() ## l = gtk.Label('') l.set_property('width-request', self.xpad) pack(hbox, l) ## pack(hbox, gtk.Label(_('Server:') + ' ')) combo = gtk.ComboBoxText.new_with_entry() combo.get_child().connect('changed', self.updateSetButtonSensitive) pack(hbox, combo, 1, 1) self.ntpServerEntry = combo.get_child() for s in ui.ntpServers: combo.append_text(s) combo.set_active(0) self.hboxNtp = hbox pack(self.vbox, hbox) ###### self.radioManClicked() #self.radioNtpClicked() self.ckeckbEditTimeClicked() self.ckeckbEditDateClicked() ###### self.updateTimes() self.vbox.show_all() def radioManClicked(self, radio=None): if self.radioMan.get_active(): self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) else: self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) self.updateSetButtonSensitive() def radioNtpClicked(self, radio=None): if self.radioNtp.get_active(): self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) else: self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) self.updateSetButtonSensitive() def ckeckbEditTimeClicked(self, checkb=None): self.editTime = self.ckeckbEditTime.get_active() self.timeInput.set_sensitive(self.editTime) self.updateSetButtonSensitive() def ckeckbEditDateClicked(self, checkb=None): self.editDate = self.ckeckbEditDate.get_active() self.dateInput.set_sensitive(self.editDate) self.updateSetButtonSensitive() """def set_sys_time(self): if os.path.isfile('/bin/date'): pass##???????? elif sys.platform == 'win32': import win32api win32api.SetSystemTime()##???????? else: pass""" def updateTimes(self): dt = now() % 1 timeout_add(iceil(1000 * (1 - dt)), self.updateTimes) #print('updateTimes', dt) lt = localtime() self.label_cur.set_label( _('Current:') + ' %.4d/%.2d/%.2d - %.2d:%.2d:%.2d' % lt[:6]) if not self.editTime: self.timeInput.set_value(lt[3:6]) if not self.editDate: self.dateInput.set_value(lt[:3]) return False def updateSetButtonSensitive(self, widget=None): if self.radioMan.get_active(): self.buttonSet.set_sensitive(self.editTime or self.editDate) elif self.radioNtp.get_active(): self.buttonSet.set_sensitive(self.ntpServerEntry.get_text() != '') def setSysTimeClicked(self, widget=None): if self.radioMan.get_active(): if self.editTime: h, m, s = self.timeInput.get_value() if self.editDate: Y, M, D = self.dateInput.get_value() cmd = [ '/bin/date', '-s', '%.4d/%.2d/%.2d %.2d:%.2d:%.2d' % (Y, M, D, h, m, s) ] else: cmd = ['/bin/date', '-s', '%.2d:%.2d:%.2d' % (h, m, s)] else: if self.editDate: Y, M, D = self.dateInput.get_value() ##h, m, s = self.timeInput.get_value() h, m, s = localtime()[3:6] cmd = [ '/bin/date', '-s', '%.4d/%.2d/%.2d %.2d:%.2d:%.2d' % (Y, M, D, h, m, s) ] else: error_exit('No change!', self) #?????????? elif self.radioNtp.get_active(): cmd = ['ntpdate', self.ntpServerEntry.get_text()] #if os.path.isfile('/usr/sbin/ntpdate'): # cmd = ['/usr/sbin/ntpdate', self.ntpServerEntry.get_text()] #else: # error_exit('Could not find command /usr/sbin/ntpdate: no such file!', self)#?????????? else: error_exit('Not valid option!', self) proc = subprocess.Popen( cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, ) resCode = proc.wait() error = proc.stderr.read().strip() output = proc.stdout.read().strip() if output: print(output) #print('resCode=%r, error=%r, output=%r' % (resCode, error, output)) if error: print(error) if resCode != 0: error_exit( resCode, error, parent=self, )
class WidgetClass(common.WidgetClass): def __init__(self, event):## FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_('Start')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_('Repeat Every ')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.weeksSpin = IntSpinButton(1, 99999) pack(hbox, self.weeksSpin) pack(hbox, gtk.Label(' '+_(' Weeks'))) ### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_('End')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) ### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ######### hbox = gtk.HBox() label = gtk.Label(_('Time')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) ## self.dayTimeStartInput = HourMinuteButton() self.dayTimeEndInput = HourMinuteButton() ## pack(hbox, self.dayTimeStartInput) pack(hbox, gtk.Label(' ' + _('to') + ' ')) pack(hbox, self.dayTimeEndInput) pack(self, hbox) ############# #self.notificationBox = common.NotificationBox(event) #pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self):## FIXME common.WidgetClass.updateWidget(self) mode = self.event.mode ### self.startDateInput.set_value(jd_to(self.event.getStartJd(), mode)) self.weeksSpin.set_value(self.event['cycleWeeks'].weeks) self.endDateInput.set_value(jd_to(self.event.getEndJd(), mode)) ### timeRangeRule = self.event['dayTimeRange'] self.dayTimeStartInput.set_value(timeRangeRule.dayTimeStart) self.dayTimeEndInput.set_value(timeRangeRule.dayTimeEnd) def updateVars(self):## FIXME common.WidgetClass.updateVars(self) self.event['start'].setDate(self.startDateInput.get_value()) self.event['end'].setDate(self.endDateInput.get_value()) self.event['cycleWeeks'].setData(self.weeksSpin.get_value()) ### self.event['dayTimeRange'].setRange( self.dayTimeStartInput.get_value(), self.dayTimeEndInput.get_value(), ) def modeComboChanged(self, obj=None):## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class EditDbDialog(gtk.Dialog): def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_('Tune Hijri Monthes')) self.connect('delete-event', self.onDeleteEvent) ############ self.altMode = 0 self.altModeDesc = 'Gregorian' ############ hbox = gtk.HBox() self.topLabel = gtk.Label() pack(hbox, self.topLabel) self.startDateInput = DateButton() self.startDateInput.set_editable(False)## FIXME self.startDateInput.connect('changed', lambda widget: self.updateEndDates()) pack(hbox, self.startDateInput) pack(self.vbox, hbox) ############################ treev = gtk.TreeView() trees = gtk.ListStore(int, str, str, int, str)## ym, yearShown, monthShown, monthLenCombo, endDateShown treev.set_model(trees) #treev.get_selection().connect('changed', self.plugTreevCursorChanged) #treev.connect('row-activated', self.plugTreevRActivate) #treev.connect('button-press-event', self.plugTreevButtonPress) ### swin = gtk.ScrolledWindow() swin.add(treev) swin.set_policy(gtk.PolicyType.AUTOMATIC, gtk.PolicyType.AUTOMATIC) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_('Year'), cell, text=1) treev.append_column(col) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_('Month'), cell, text=2) treev.append_column(col) ###### cell = gtk.CellRendererCombo() mLenModel = gtk.ListStore(int) mLenModel.append([29]) mLenModel.append([30]) cell.set_property('model', mLenModel) #cell.set_property('has-entry', False) cell.set_property('editable', True) cell.set_property('text-column', 0) cell.connect('edited', self.monthLenCellEdited) col = gtk.TreeViewColumn(_('Month Length'), cell, text=3) treev.append_column(col) ###### cell = gtk.CellRendererText() col = gtk.TreeViewColumn(_('End Date'), cell, text=4) treev.append_column(col) ###### toolbar = gtk.Toolbar() toolbar.set_orientation(gtk.Orientation.VERTICAL) size = gtk.IconSize.SMALL_TOOLBAR ### tb = toolButtonFromStock(gtk.STOCK_ADD, size) set_tooltip(tb, _('Add')) tb.connect('clicked', self.addClicked) toolbar.insert(tb, -1) ### tb = toolButtonFromStock(gtk.STOCK_DELETE, size) set_tooltip(tb, _('Delete')) tb.connect('clicked', self.delClicked) toolbar.insert(tb, -1) ###### self.treev = treev self.trees = trees ##### mainHbox = gtk.HBox() pack(mainHbox, swin, 1, 1) pack(mainHbox, toolbar) pack(self.vbox, mainHbox, 1, 1) ###### dialog_add_button(self, gtk.STOCK_OK, _('_OK'), gtk.ResponseType.OK) dialog_add_button(self, gtk.STOCK_CANCEL, _('_Cancel'), gtk.ResponseType.CANCEL) ## resetB = self.add_button(gtk.STOCK_UNDO, gtk.ResponseType.NONE) resetB.set_label(_('_Reset to Defaults')) resetB.set_image(gtk.Image.new_from_stock(gtk.STOCK_UNDO, gtk.IconSize.BUTTON)) resetB.connect('clicked', self.resetToDefaults) ## self.connect('response', self.onResponse) #print(dir(self.get_action_area())) #self.get_action_area().set_homogeneous(False) ###### self.vbox.show_all() def resetToDefaults(self, widget): if isfile(monthDb.userDbPath): os.remove(monthDb.userDbPath) monthDb.load() self.updateWidget() return True def addClicked(self, obj=None): last = self.trees[-1] ## 0 ym ## 1 yearLocale ## 2 monthLocale ## 3 mLen ## 4 endDate = '' ym = last[0] + 1 mLen = 59 - last[3] year, month0 = divmod(ym, 12) self.trees.append(( ym, _(year), _(monthName[month0]), mLen, '', )) self.updateEndDates() self.selectLastRow() def selectLastRow(self): lastPath = (len(self.trees)-1,) self.treev.scroll_to_cell(lastPath) self.treev.set_cursor(lastPath) def delClicked(self, obj=None): if len(self.trees) > 1: del self.trees[-1] self.selectLastRow() def updateWidget(self): #for index, module in calTypes.iterIndexModule(): # if module.name != 'hijri': for mode in calTypes.active: modeDesc = calTypes[mode].desc if not 'hijri' in modeDesc.lower(): self.altMode = mode self.altModeDesc = modeDesc break self.topLabel.set_label(_('Start')+': '+dateLocale(*monthDb.startDate)+' '+_('Equals to')+' %s'%_(self.altModeDesc)) self.startDateInput.set_value(jd_to(monthDb.startJd, self.altMode)) ########### selectYm = getCurrentYm() - 1 ## previous month selectIndex = None self.trees.clear() for index, ym, mLen in monthDb.getMonthLenList(): if ym == selectYm: selectIndex = index year, month0 = divmod(ym, 12) self.trees.append([ ym, _(year), _(monthName[month0]), mLen, '', ]) self.updateEndDates() ######## if selectIndex is not None: self.treev.scroll_to_cell(str(selectIndex)) self.treev.set_cursor(str(selectIndex)) def updateEndDates(self): y, m, d = self.startDateInput.get_value() jd0 = to_jd(y, m, d, self.altMode) - 1 for row in self.trees: mLen = row[3] jd0 += mLen row[4] = dateLocale(*jd_to(jd0, self.altMode)) def monthLenCellEdited(self, combo, path_string, new_text): editIndex = int(path_string) mLen = int(new_text) if not mLen in (29, 30): return mLenPrev = self.trees[editIndex][3] delta = mLen - mLenPrev if delta == 0: return n = len(self.trees) self.trees[editIndex][3] = mLen if delta==1: for i in range(editIndex+1, n): if self.trees[i][3] == 30: self.trees[i][3] = 29 break elif delta==-1: for i in range(editIndex+1, n): if self.trees[i][3] == 29: self.trees[i][3] = 30 break self.updateEndDates() def updateVars(self): y, m, d = self.startDateInput.get_value() monthDb.endJd = monthDb.startJd = to_jd(y, m, d, self.altMode) monthDb.monthLenByYm = {} for row in self.trees: ym = row[0] mLen = row[3] monthDb.monthLenByYm[ym] = mLen monthDb.endJd += mLen monthDb.save() def run(self): monthDb.load() self.updateWidget() self.treev.grab_focus() gtk.Dialog.run(self) def onResponse(self, dialog, response_id): if response_id==gtk.ResponseType.OK: self.updateVars() self.destroy() elif response_id==gtk.ResponseType.CANCEL: self.destroy() return True def onDeleteEvent(self, dialog, gevent): self.destroy() return True
class WidgetClass(BaseWidgetClass): def __init__(self, group): BaseWidgetClass.__init__(self, group) #### hbox = gtk.HBox() label = gtk.Label(_('Start')) label.set_alignment(0, 0.5) pack(hbox, label) self.sizeGroup.add_widget(label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) pack(self, hbox) ### hbox = gtk.HBox() label = gtk.Label(_('End')) label.set_alignment(0, 0.5) pack(hbox, label) self.sizeGroup.add_widget(label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) pack(self, hbox) ###### exp = gtk.Expander() exp.set_label(_('Online Service')) vbox = gtk.VBox() exp.add(vbox) sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ## hbox = gtk.HBox() label = gtk.Label(_('Account')) label.set_alignment(0, 0.5) pack(hbox, label) sizeGroup.add_widget(label) ## FIXME self.accountCombo = AccountCombo() pack(hbox, self.accountCombo) pack(vbox, hbox) ## hbox = gtk.HBox() label = gtk.Label(_('Remote Group')) label.set_alignment(0, 0.5) pack(hbox, label) sizeGroup.add_widget(label) ## FIXME accountGroupBox = AccountGroupBox(self.accountCombo) pack(hbox, accountGroupBox, 1, 1) pack(vbox, hbox) self.accountGroupCombo = accountGroupBox.combo ## pack(self, exp) def updateWidget(self): BaseWidgetClass.updateWidget(self) self.startDateInput.set_value(jd_to(self.group.startJd, self.group.mode)) self.endDateInput.set_value(jd_to(self.group.endJd, self.group.mode)) ### if self.group.remoteIds: aid, gid = self.group.remoteIds else: aid, gid = None, None self.accountCombo.set_active(aid) self.accountGroupCombo.set_active(gid) def updateVars(self): BaseWidgetClass.updateVars(self) self.group.startJd = self.startDateInput.get_jd(self.group.mode) self.group.endJd = self.endDateInput.get_jd(self.group.mode) ### aid = self.accountCombo.get_active() if aid: gid = self.accountGroupCombo.get_active() self.group.remoteIds = aid, gid else: self.group.remoteIds = None def modeComboChanged(self, obj=None): newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.group.mode, newMode) self.endDateInput.changeMode(self.group.mode, newMode) self.group.mode = newMode
class WidgetClass(common.WidgetClass): def __init__(self, event):## FIXME event.setJd(ui.cell.jd) common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_("Start")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_("End")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) ### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_("Day of Month")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.daySpin = DaySpinButton() pack(hbox, self.daySpin) ### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ######### hbox = gtk.HBox() label = gtk.Label(_("Time")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) ## self.dayTimeStartInput = HourMinuteButton() self.dayTimeEndInput = HourMinuteButton() ## pack(hbox, self.dayTimeStartInput) pack(hbox, gtk.Label(" " + _("to") + " ")) pack(hbox, self.dayTimeEndInput) pack(self, hbox) ############# #self.notificationBox = common.NotificationBox(event) #pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self):## FIXME common.WidgetClass.updateWidget(self) mode = self.event.mode ### self.startDateInput.set_value(jd_to(self.event.getStartJd(), mode)) self.endDateInput.set_value(jd_to(self.event.getEndJd(), mode)) ### self.daySpin.set_value(self.event.getDay()) ### dayTimeRange, ok = self.event["dayTimeRange"] if not ok: raise RuntimeError("no dayTimeRange rule") self.dayTimeStartInput.set_value(dayTimeRange.dayTimeStart) self.dayTimeEndInput.set_value(dayTimeRange.dayTimeEnd) def updateVars(self):## FIXME common.WidgetClass.updateVars(self) ## start, ok = self.event["start"] if not ok: raise RuntimeError("no start rule") start.setDate(self.startDateInput.get_value()) ## end, ok = self.event["end"] if not ok: raise RuntimeError("no end rule") end.setDate(self.endDateInput.get_value()) ## self.event.setDay(self.daySpin.get_value()) ### dayTimeRange, ok = self.event["dayTimeRange"] if not ok: raise RuntimeError("no dayTimeRange rule") dayTimeRange.setRange( self.dayTimeStartInput.get_value(), self.dayTimeEndInput.get_value(), ) def modeComboChanged(self, obj=None): # overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(BaseWidgetClass): def __init__(self, group): BaseWidgetClass.__init__(self, group) #### hbox = gtk.HBox() label = gtk.Label(_('Start')) label.set_alignment(0, 0.5) pack(hbox, label) self.sizeGroup.add_widget(label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) pack(self, hbox) ### hbox = gtk.HBox() label = gtk.Label(_('End')) label.set_alignment(0, 0.5) pack(hbox, label) self.sizeGroup.add_widget(label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) pack(self, hbox) ###### exp = gtk.Expander() exp.set_label(_('Online Service')) vbox = gtk.VBox() exp.add(vbox) sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ## hbox = gtk.HBox() label = gtk.Label(_('Account')) label.set_alignment(0, 0.5) pack(hbox, label) sizeGroup.add_widget(label) ## FIXME self.accountCombo = AccountCombo() pack(hbox, self.accountCombo) pack(vbox, hbox) ## hbox = gtk.HBox() label = gtk.Label(_('Remote Group')) label.set_alignment(0, 0.5) pack(hbox, label) sizeGroup.add_widget(label) ## FIXME accountGroupBox = AccountGroupBox(self.accountCombo) pack(hbox, accountGroupBox, 1, 1) pack(vbox, hbox) self.accountGroupCombo = accountGroupBox.combo ## pack(self, exp) def updateWidget(self): BaseWidgetClass.updateWidget(self) self.startDateInput.set_value( jd_to(self.group.startJd, self.group.mode)) self.endDateInput.set_value(jd_to(self.group.endJd, self.group.mode)) ### if self.group.remoteIds: aid, gid = self.group.remoteIds else: aid, gid = None, None self.accountCombo.set_active(aid) self.accountGroupCombo.set_active(gid) def updateVars(self): BaseWidgetClass.updateVars(self) self.group.startJd = self.startDateInput.get_jd(self.group.mode) self.group.endJd = self.endDateInput.get_jd(self.group.mode) ### aid = self.accountCombo.get_active() if aid: gid = self.accountGroupCombo.get_active() self.group.remoteIds = aid, gid else: self.group.remoteIds = None def modeComboChanged(self, obj=None): newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.group.mode, newMode) self.endDateInput.changeMode(self.group.mode, newMode) self.group.mode = newMode
class WidgetClass(common.WidgetClass): def __init__(self, event): ## FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_('Start')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ## pack(self, hbox) ###### hbox = gtk.HBox() self.endTypeCombo = gtk.ComboBoxText() for item in ('Duration', 'End'): self.endTypeCombo.append_text(_(item)) self.endTypeCombo.connect('changed', self.endTypeComboChanged) sizeGroup.add_widget(self.endTypeCombo) pack(hbox, self.endTypeCombo) #### self.durationBox = gtk.HBox() self.durationSpin = IntSpinButton(1, 999) pack(self.durationBox, self.durationSpin) pack(self.durationBox, gtk.Label(_(' days'))) pack(hbox, self.durationBox) #### self.endDateInput = DateButton() pack(hbox, self.endDateInput) #### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ############# self.notificationBox = common.NotificationBox(event) pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def endTypeComboChanged(self, combo=None): active = self.endTypeCombo.get_active() if active == 0: ## duration self.durationBox.show() self.endDateInput.hide() elif active == 1: ## end date self.durationBox.hide() self.endDateInput.show() else: raise RuntimeError def updateWidget(self): ## FIXME common.WidgetClass.updateWidget(self) mode = self.event.mode ### startJd = self.event.getJd() self.startDateInput.set_value(jd_to(startJd, mode)) ### endType, endValue = self.event.getEnd() if endType == 'duration': self.endTypeCombo.set_active(0) self.durationSpin.set_value(endValue) self.endDateInput.set_value(jd_to(self.event.getEndJd(), mode)) ## FIXME elif endType == 'date': self.endTypeCombo.set_active(1) self.endDateInput.set_value(endValue) else: raise RuntimeError self.endTypeComboChanged() def updateVars(self): ## FIXME common.WidgetClass.updateVars(self) self.event.setStartDate(self.startDateInput.get_value()) ### active = self.endTypeCombo.get_active() if active == 0: self.event.setEnd('duration', self.durationSpin.get_value()) elif active == 1: self.event.setEnd( 'date', self.endDateInput.get_value(), ) def modeComboChanged(self, obj=None ): ## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class ExportToIcsDialog(gtk.Dialog, MyDialog): def __init__(self, saveIcsFunc, defaultFileName, **kwargs): self.saveIcsFunc = saveIcsFunc gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Export to %s") % "iCalendar") ## parent=None FIXME #self.set_has_separator(False) ######## hbox = gtk.HBox(spacing=2) pack(hbox, gtk.Label(_("From") + " ")) self.startDateInput = DateButton() pack(hbox, self.startDateInput) pack(hbox, gtk.Label(" " + _("To") + " ")) self.endDateInput = DateButton() pack(hbox, self.endDateInput) pack(self.vbox, hbox) #### year, month, day = ui.todayCell.dates[calTypes.primary] self.startDateInput.set_value((year, 1, 1)) self.endDateInput.set_value((year + 1, 1, 1)) ######## self.fcw = gtk.FileChooserWidget(action=gtk.FileChooserAction.SAVE) pack(self.vbox, self.fcw, 1, 1) self.vbox.set_focus_child(self.fcw)## FIXME self.vbox.show_all() ## dialog_add_button( self, gtk.STOCK_CANCEL, _("_Cancel"), 1, self.onDelete, ) dialog_add_button( self, gtk.STOCK_SAVE, _("_Save"), 2, self.save, ) ## self.connect("delete-event", self.onDelete) self.fcw.connect("file-activated", self.save) # not working FIXME ## self.fcw.set_current_folder(core.deskDir) if not defaultFileName.endswith(".ics"): defaultFileName += ".ics" self.fcw.set_current_name(defaultFileName) def onDelete(self, widget=None, event=None):## hide(close) File Chooser Dialog self.destroy() return True def _save(self, path, startJd, endJd): self.saveIcsFunc(path, startJd, endJd) self.destroy() def save(self, widget=None): while gtk.events_pending(): gtk.main_iteration_do(False) path = self.fcw.get_filename() if path in (None, ""): return print("Exporting to ics file \"%s\"" % path) self.waitingDo( self._save, path, core.primary_to_jd(*self.startDateInput.get_value()), core.primary_to_jd(*self.endDateInput.get_value()), )
class WidgetClass(common.WidgetClass): def __init__(self, event):## FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_('Start')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ## pack(self, hbox) ###### hbox = gtk.HBox() self.endTypeCombo = gtk.ComboBoxText() for item in ('Duration', 'End'): self.endTypeCombo.append_text(_(item)) self.endTypeCombo.connect('changed', self.endTypeComboChanged) sizeGroup.add_widget(self.endTypeCombo) pack(hbox, self.endTypeCombo) #### self.durationBox = gtk.HBox() self.durationSpin = IntSpinButton(1, 999) pack(self.durationBox, self.durationSpin) pack(self.durationBox, gtk.Label(_(' days'))) pack(hbox, self.durationBox) #### self.endDateInput = DateButton() pack(hbox, self.endDateInput) #### pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ############# self.notificationBox = common.NotificationBox(event) pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def endTypeComboChanged(self, combo=None): active = self.endTypeCombo.get_active() if active==0:## duration self.durationBox.show() self.endDateInput.hide() elif active==1:## end date self.durationBox.hide() self.endDateInput.show() else: raise RuntimeError def updateWidget(self):## FIXME common.WidgetClass.updateWidget(self) mode = self.event.mode ### startJd = self.event.getJd() self.startDateInput.set_value(jd_to(startJd, mode)) ### endType, endValue = self.event.getEnd() if endType=='duration': self.endTypeCombo.set_active(0) self.durationSpin.set_value(endValue) self.endDateInput.set_value(jd_to(self.event.getEndJd(), mode))## FIXME elif endType=='date': self.endTypeCombo.set_active(1) self.endDateInput.set_value(endValue) else: raise RuntimeError self.endTypeComboChanged() def updateVars(self):## FIXME common.WidgetClass.updateVars(self) self.event.setStartDate(self.startDateInput.get_value()) ### active = self.endTypeCombo.get_active() if active==0: self.event.setEnd('duration', self.durationSpin.get_value()) elif active==1: self.event.setEnd( 'date', self.endDateInput.get_value(), ) def modeComboChanged(self, obj=None):## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class AdjusterDialog(gtk.Dialog): xpad = 15 def __init__(self, **kwargs): gtk.Dialog.__init__(self, **kwargs) self.set_title(_("Adjust System Date & Time")) # FIXME self.set_keep_above(True) self.set_icon(IconTheme.get_default().load_icon( icon_name = "preferences-system-time", size = 32, flags = 0, )) # render_icon: Deprecated since version 3.0: Use Gtk.Widget.render_icon_pixbuf() instead. # render_icon_pixbuf: Deprecated since version 3.10: Use Gtk.IconTheme.load_icon() instead. ######### self.buttonCancel = self.add_button(gtk.STOCK_CANCEL, 0) #self.buttonCancel.connect("clicked", lambda w: sys.exit(0)) self.buttonSet = self.add_button(_("Set System Time"), 1) #self.buttonSet.connect("clicked", self.setSysTimeClicked) ######### hbox = gtk.HBox() self.label_cur = gtk.Label(label=_("Current:")) pack(hbox, self.label_cur) pack(self.vbox, hbox) ######### hbox = gtk.HBox() self.radioMan = gtk.RadioButton.new_with_mnemonic( group=None, label=_("Set _Manully:"), ) self.radioMan.connect("clicked", self.radioManClicked) pack(hbox, self.radioMan) pack(self.vbox, hbox) ###### vb = gtk.VBox() sg = gtk.SizeGroup(mode=gtk.SizeGroupMode.HORIZONTAL) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditTime = gtk.CheckButton.new_with_mnemonic(_("Edit _Time")) self.editTime = False self.ckeckbEditTime.connect("clicked", self.ckeckbEditTimeClicked) pack(hbox, self.ckeckbEditTime) sg.add_widget(self.ckeckbEditTime) self.timeInput = TimeButton() ## ??????? options pack(hbox, self.timeInput) pack(vb, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## self.ckeckbEditDate = gtk.CheckButton.new_with_mnemonic(_("Edit _Date")) self.editDate = False self.ckeckbEditDate.connect("clicked", self.ckeckbEditDateClicked) pack(hbox, self.ckeckbEditDate) sg.add_widget(self.ckeckbEditDate) self.dateInput = DateButton() ## ??????? options pack(hbox, self.dateInput) pack(vb, hbox) ### pack(self.vbox, vb, 0, 0, 10)#????? self.vboxMan = vb ###### hbox = gtk.HBox() self.radioNtp = gtk.RadioButton.new_with_mnemonic_from_widget( radio_group_member=self.radioMan, label=_("Set from _NTP:"), ) self.radioNtp.connect("clicked", self.radioNtpClicked) pack(hbox, self.radioNtp) pack(self.vbox, hbox) ### hbox = gtk.HBox() ## l = gtk.Label() l.set_property("width-request", self.xpad) pack(hbox, l) ## pack(hbox, gtk.Label(label=_("Server:") + " ")) combo = gtk.ComboBoxText.new_with_entry() combo.get_child().connect("changed", self.updateSetButtonSensitive) pack(hbox, combo, 1, 1) self.ntpServerEntry = combo.get_child() for s in ui.ntpServers: combo.append_text(s) combo.set_active(0) self.hboxNtp = hbox pack(self.vbox, hbox) ###### self.radioManClicked() #self.radioNtpClicked() self.ckeckbEditTimeClicked() self.ckeckbEditDateClicked() ###### self.updateTimes() self.vbox.show_all() def radioManClicked(self, radio=None): if self.radioMan.get_active(): self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) else: self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) self.updateSetButtonSensitive() def radioNtpClicked(self, radio=None): if self.radioNtp.get_active(): self.vboxMan.set_sensitive(False) self.hboxNtp.set_sensitive(True) else: self.vboxMan.set_sensitive(True) self.hboxNtp.set_sensitive(False) self.updateSetButtonSensitive() def ckeckbEditTimeClicked(self, checkb=None): self.editTime = self.ckeckbEditTime.get_active() self.timeInput.set_sensitive(self.editTime) self.updateSetButtonSensitive() def ckeckbEditDateClicked(self, checkb=None): self.editDate = self.ckeckbEditDate.get_active() self.dateInput.set_sensitive(self.editDate) self.updateSetButtonSensitive() #def set_sys_time(self): # if os.path.isfile("/bin/date"): # pass # FIXME # elif sys.platform == "win32": # import win32api # win32api.SetSystemTime()##???????? # else: # pass def updateTimes(self): dt = now() % 1 timeout_add(clockWaitMilliseconds(), self.updateTimes) #print("updateTimes", dt) lt = localtime() self.label_cur.set_label( _("Current:") + " %.4d/%.2d/%.2d - %.2d:%.2d:%.2d" % lt[:6] ) if not self.editTime: self.timeInput.set_value(lt[3:6]) if not self.editDate: self.dateInput.set_value(lt[:3]) return False def updateSetButtonSensitive(self, widget=None): if self.radioMan.get_active(): self.buttonSet.set_sensitive(self.editTime or self.editDate) elif self.radioNtp.get_active(): self.buttonSet.set_sensitive( self.ntpServerEntry.get_text() != "" ) def setSysTimeClicked(self, widget=None): if self.radioMan.get_active(): if self.editTime: h, m, s = self.timeInput.get_value() if self.editDate: Y, M, D = self.dateInput.get_value() cmd = [ "/bin/date", "-s", "%.4d/%.2d/%.2d %.2d:%.2d:%.2d" % ( Y, M, D, h, m, s, ), ] else: cmd = [ "/bin/date", "-s", "%.2d:%.2d:%.2d" % (h, m, s), ] else: if self.editDate: Y, M, D = self.dateInput.get_value() ##h, m, s = self.timeInput.get_value() h, m, s = localtime()[3:6] cmd = [ "/bin/date", "-s", "%.4d/%.2d/%.2d %.2d:%.2d:%.2d" % ( Y, M, D, h, m, s, ), ] else: error_exit("No change!", self) # FIXME elif self.radioNtp.get_active(): cmd = ["ntpdate", self.ntpServerEntry.get_text()] #if os.path.isfile("/usr/sbin/ntpdate"): # cmd = ["/usr/sbin/ntpdate", self.ntpServerEntry.get_text()] #else: # error_exit( # "Could not find command /usr/sbin/ntpdate: no such file!", # self, #) # FIXME else: error_exit("Not valid option!", self) proc = subprocess.Popen( cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE, ) resCode = proc.wait() error = proc.stderr.read().strip() output = proc.stdout.read().strip() if output: print(output) #print("resCode=%r, error=%r, output=%r" % (resCode, error, output)) if error: print(error) if resCode != 0: error_exit( resCode, error, parent=self, )
class WidgetClass(gtk.VBox): def __init__(self, event): ## FIXME gtk.VBox.__init__(self) self.event = event assert event.parent.name == "universityTerm" ## FIXME sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ##### if not event.parent.courses: showError(event.parent.noCourseError, ui.eventManDialog) raise RuntimeError("No courses added") self.courseIds = [] self.courseNames = [] combo = gtk.ComboBoxText() for course in event.parent.courses: self.courseIds.append(course[0]) self.courseNames.append(course[1]) combo.append_text(course[1]) #combo.connect("changed", self.updateSummary) self.courseCombo = combo ## hbox = gtk.HBox() label = gtk.Label(_("Course")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) pack(hbox, combo) ## pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_("Date")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.dateInput = DateButton() pack(hbox, self.dateInput) pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_("Time")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) ## self.dayTimeStartCombo = HourMinuteButton() self.dayTimeEndCombo = HourMinuteButton() ## #self.dayTimeStartCombo.get_child().set_direction(gtk.TextDirection.LTR) #self.dayTimeEndCombo.get_child().set_direction(gtk.TextDirection.LTR) ## pack(hbox, self.dayTimeStartCombo) pack(hbox, gtk.Label(" " + _("to") + " ")) pack(hbox, self.dayTimeEndCombo) pack(self, hbox) ########### #hbox = gtk.HBox() #label = gtk.Label(_("Summary")) #label.set_alignment(0, 0.5) #sizeGroup.add_widget(label) #pack(hbox, label) #self.summaryEntry = gtk.Entry() #pack(hbox, self.summaryEntry, 1, 1) #pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_("Description")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.descriptionInput = TextFrame() pack(hbox, self.descriptionInput, 1, 1) pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_("Icon")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.iconSelect = IconSelectButton() #print(join(pixDir, self.icon)) pack(hbox, self.iconSelect) pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ###### self.notificationBox = common.NotificationBox(event) pack(self, self.notificationBox) ###### #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) ###### self.courseCombo.set_active(0) #self.updateSummary() def focusSummary(self): pass #def updateSummary(self, widget=None): # courseIndex = self.courseCombo.get_active() # summary = _("%s Exam")%self.courseNames[courseIndex] # self.summaryEntry.set_text(summary) # self.event.summary = summary def updateWidget(self): ## FIXME if self.event.courseId is None: pass else: self.courseCombo.set_active( self.courseIds.index(self.event.courseId)) ## self.dateInput.set_value(self.event.getDate()) ## timeRangeRule, ok = self.event["dayTimeRange"] if not ok: raise RuntimeError("no dayTimeRange rule") self.dayTimeStartCombo.set_value(timeRangeRule.dayTimeStart) self.dayTimeEndCombo.set_value(timeRangeRule.dayTimeEnd) #### #self.summaryEntry.set_text(self.event.summary) self.descriptionInput.set_text(self.event.description) self.iconSelect.set_filename(self.event.icon) #### self.notificationBox.updateWidget() #### #self.filesBox.updateWidget() def updateVars(self): ## FIXME courseIndex = self.courseCombo.get_active() if courseIndex is None: showError(_("No course is selected"), ui.eventManDialog) raise RuntimeError("No courses is selected") else: self.event.courseId = self.courseIds[courseIndex] ## self.event.setDate(*tuple(self.dateInput.get_value())) ## timeRangeRule, ok = self.event["dayTimeRange"] if not ok: raise RuntimeError("no dayTimeRange rule") timeRangeRule.setRange( self.dayTimeStartCombo.get_value(), self.dayTimeEndCombo.get_value(), ) #### #self.event.summary = self.summaryEntry.get_text() self.event.description = self.descriptionInput.get_text() self.event.icon = self.iconSelect.get_filename() #### self.notificationBox.updateVars() self.event.updateSummary() def modeComboChanged(self, obj=None): # overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.dateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(common.WidgetClass): def __init__(self, event):## FIXME common.WidgetClass.__init__(self, event) ###### sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ###### hbox = gtk.HBox() label = gtk.Label(_("Start")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) ### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_("Repeat Every ")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.weeksSpin = IntSpinButton(1, 99999) pack(hbox, self.weeksSpin) pack(hbox, gtk.Label(" " + _(" Weeks"))) ### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ###### hbox = gtk.HBox() label = gtk.Label(_("End")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) ### pack(hbox, gtk.Label(""), 1, 1) pack(self, hbox) ######### hbox = gtk.HBox() label = gtk.Label(_("Time")) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) ## self.dayTimeStartInput = HourMinuteButton() self.dayTimeEndInput = HourMinuteButton() ## pack(hbox, self.dayTimeStartInput) pack(hbox, gtk.Label(" " + _("to") + " ")) pack(hbox, self.dayTimeEndInput) pack(self, hbox) ############# #self.notificationBox = common.NotificationBox(event) #pack(self, self.notificationBox) ############# #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) def updateWidget(self):## FIXME common.WidgetClass.updateWidget(self) mode = self.event.mode ### self.startDateInput.set_value(jd_to(self.event.getStartJd(), mode)) ### cycleWeeks, ok = self.event["cycleWeeks"] if not ok: raise RuntimeError("no cycleWeeks rule") self.weeksSpin.set_value(cycleWeeks.weeks) ### self.endDateInput.set_value(jd_to(self.event.getEndJd(), mode)) ### dayTimeRange, ok = self.event["dayTimeRange"] self.dayTimeStartInput.set_value(dayTimeRange.dayTimeStart) self.dayTimeEndInput.set_value(dayTimeRange.dayTimeEnd) def updateVars(self):## FIXME common.WidgetClass.updateVars(self) ### start, ok = self.event["start"] if not ok: raise RuntimeError("no start rule") start.setDate(self.startDateInput.get_value()) ### end, ok = self.event["end"] if not ok: raise RuntimeError("no end rule") end.setDate(self.endDateInput.get_value()) ### cycleWeeks, ok = self.event["cycleWeeks"] if not ok: raise RuntimeError("no cycleWeeks rule") cycleWeeks.setData(self.weeksSpin.get_value()) ### dayTimeRange, ok = self.event["dayTimeRange"] if not ok: raise RuntimeError("no dayTimeRange rule") dayTimeRange.setRange( self.dayTimeStartInput.get_value(), self.dayTimeEndInput.get_value(), ) def modeComboChanged(self, obj=None): # overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.event.mode, newMode) self.endDateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(gtk.VBox): def __init__(self, event):## FIXME gtk.VBox.__init__(self) self.event = event assert event.parent.name == 'universityTerm' ## FIXME sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ##### if not event.parent.courses: showError(event.parent.noCourseError, ui.eventManDialog) raise RuntimeError('No courses added') self.courseIds = [] self.courseNames = [] combo = gtk.ComboBoxText() for course in event.parent.courses: self.courseIds.append(course[0]) self.courseNames.append(course[1]) combo.append_text(course[1]) #combo.connect('changed', self.updateSummary) self.courseCombo = combo ## hbox = gtk.HBox() label = gtk.Label(_('Course')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) pack(hbox, combo) ## pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_('Date')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.dateInput = DateButton() pack(hbox, self.dateInput) pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_('Time')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) ## self.dayTimeStartCombo = HourMinuteButton() self.dayTimeEndCombo = HourMinuteButton() ## #self.dayTimeStartCombo.get_child().set_direction(gtk.TextDirection.LTR) #self.dayTimeEndCombo.get_child().set_direction(gtk.TextDirection.LTR) ## pack(hbox, self.dayTimeStartCombo) pack(hbox, gtk.Label(' ' + _('to') + ' ')) pack(hbox, self.dayTimeEndCombo) pack(self, hbox) ########### #hbox = gtk.HBox() #label = gtk.Label(_('Summary')) #label.set_alignment(0, 0.5) #sizeGroup.add_widget(label) #pack(hbox, label) #self.summaryEntry = gtk.Entry() #pack(hbox, self.summaryEntry, 1, 1) #pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_('Description')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.descriptionInput = TextFrame() pack(hbox, self.descriptionInput, 1, 1) pack(self, hbox) ##### hbox = gtk.HBox() label = gtk.Label(_('Icon')) label.set_alignment(0, 0.5) sizeGroup.add_widget(label) pack(hbox, label) self.iconSelect = IconSelectButton() #print(join(pixDir, self.icon)) pack(hbox, self.iconSelect) pack(hbox, gtk.Label(''), 1, 1) pack(self, hbox) ###### self.notificationBox = common.NotificationBox(event) pack(self, self.notificationBox) ###### #self.filesBox = common.FilesBox(self.event) #pack(self, self.filesBox) ###### self.courseCombo.set_active(0) #self.updateSummary() def focusSummary(self): pass #def updateSummary(self, widget=None): # courseIndex = self.courseCombo.get_active() # summary = _('%s Exam')%self.courseNames[courseIndex] # self.summaryEntry.set_text(summary) # self.event.summary = summary def updateWidget(self):## FIXME if self.event.courseId is None: pass else: self.courseCombo.set_active(self.courseIds.index(self.event.courseId)) ## self.dateInput.set_value(self.event.getDate()) ## timeRangeRule = self.event['dayTimeRange'] self.dayTimeStartCombo.set_value(timeRangeRule.dayTimeStart) self.dayTimeEndCombo.set_value(timeRangeRule.dayTimeEnd) #### #self.summaryEntry.set_text(self.event.summary) self.descriptionInput.set_text(self.event.description) self.iconSelect.set_filename(self.event.icon) #### self.notificationBox.updateWidget() #### #self.filesBox.updateWidget() def updateVars(self):## FIXME courseIndex = self.courseCombo.get_active() if courseIndex is None: showError(_('No course is selected'), ui.eventManDialog) raise RuntimeError('No courses is selected') else: self.event.courseId = self.courseIds[courseIndex] ## self.event.setDate(*tuple(self.dateInput.get_value())) ## self.event['dayTimeRange'].setRange( self.dayTimeStartCombo.get_value(), self.dayTimeEndCombo.get_value(), ) #### #self.event.summary = self.summaryEntry.get_text() self.event.description = self.descriptionInput.get_text() self.event.icon = self.iconSelect.get_filename() #### self.notificationBox.updateVars() self.event.updateSummary() def modeComboChanged(self, obj=None):## overwrite method from common.WidgetClass newMode = self.modeCombo.get_active() self.dateInput.changeMode(self.event.mode, newMode) self.event.mode = newMode
class WidgetClass(BaseWidgetClass): def __init__(self, group): BaseWidgetClass.__init__(self, group) #### hbox = gtk.HBox() label = gtk.Label(_("Start")) label.set_alignment(0, 0.5) pack(hbox, label) self.sizeGroup.add_widget(label) self.startDateInput = DateButton() pack(hbox, self.startDateInput) pack(self, hbox) ### hbox = gtk.HBox() label = gtk.Label(_("End")) label.set_alignment(0, 0.5) pack(hbox, label) self.sizeGroup.add_widget(label) self.endDateInput = DateButton() pack(hbox, self.endDateInput) pack(self, hbox) ###### exp = gtk.Expander() exp.set_label(_("Online Service")) vbox = gtk.VBox() exp.add(vbox) sizeGroup = gtk.SizeGroup(gtk.SizeGroupMode.HORIZONTAL) ## hbox = gtk.HBox() label = gtk.Label(_("Account")) label.set_alignment(0, 0.5) pack(hbox, label) sizeGroup.add_widget(label) ## FIXME self.accountCombo = AccountCombo() pack(hbox, self.accountCombo) pack(vbox, hbox) ## hbox = gtk.HBox() label = gtk.Label(_("Remote Group")) label.set_alignment(0, 0.5) pack(hbox, label) sizeGroup.add_widget(label) ## FIXME accountGroupBox = AccountGroupBox(self.accountCombo) pack(hbox, accountGroupBox, 1, 1) pack(vbox, hbox) self.accountGroupCombo = accountGroupBox.combo ## hbox = gtk.HBox() self.syncCheck = gtk.CheckButton(_("Synchronization Interval")) pack(hbox, self.syncCheck) sizeGroup.add_widget(self.syncCheck) self.syncIntervalInput = common.DurationInputBox() pack(hbox, self.syncIntervalInput) pack(hbox, gtk.Label(""), 1, 1) pack(vbox, hbox) self.syncCheck.connect( "clicked", lambda check: self.syncIntervalInput.set_sensitive(check. get_active()), ) ## pack(self, exp) def updateWidget(self): BaseWidgetClass.updateWidget(self) self.startDateInput.set_value( jd_to( self.group.startJd, self.group.mode, )) self.endDateInput.set_value(jd_to( self.group.endJd, self.group.mode, )) ### if self.group.remoteIds: aid, gid = self.group.remoteIds else: aid, gid = None, None self.accountCombo.set_active(aid) self.accountGroupCombo.set_active(gid) self.syncCheck.set_active(self.group.remoteSyncEnable) self.syncIntervalInput.set_sensitive(self.group.remoteSyncEnable) value, unit = self.group.remoteSyncDuration self.syncIntervalInput.setDuration(value, unit) def updateVars(self): BaseWidgetClass.updateVars(self) self.group.startJd = self.startDateInput.get_jd(self.group.mode) self.group.endJd = self.endDateInput.get_jd(self.group.mode) ### aid = self.accountCombo.get_active() if aid: gid = self.accountGroupCombo.get_active() self.group.remoteIds = aid, gid else: self.group.remoteIds = None self.group.remoteSyncEnable = self.syncCheck.get_active() self.group.remoteSyncDuration = self.syncIntervalInput.getDuration() def modeComboChanged(self, obj=None): newMode = self.modeCombo.get_active() self.startDateInput.changeMode(self.group.mode, newMode) self.endDateInput.changeMode(self.group.mode, newMode) self.group.mode = newMode