def __init__(self, rrule): # TODO: actually implement the Recursion Editor self.recursive = False if rrule is None else True self.checkRecursion = urwid.CheckBox('repeat', state=self.recursive, on_state_change=self.toggle) self.columns = CColumns([self.checkRecursion]) urwid.WidgetWrap.__init__(self, self.columns)
def __init__(self, conf, dbtool, event, cancel=None): """ :type event: khal.model.Event :param cancel: to be executed on pressing the cancel button :type cancel: function/method """ super(EventEditor, self).__init__(conf, dbtool) self.event = event self.cancel = cancel try: self.description = event.vevent['DESCRIPTION'] except KeyError: self.description = u'' try: self.location = event.vevent['LOCATION'] except KeyError: self.location = u'' self.startendeditor = StartEndEditor(event.start, event.end, self.conf) try: rrule = self.event.vevent['RRULE'] except KeyError: rrule = None self.recursioneditor = RecursionEditor(rrule) self.summary = urwid.Edit(edit_text=event.vevent['SUMMARY']) self.accountchooser = AccountChooser(self.event.account, self.conf.sync.accounts) accounts = CColumns([(9, urwid.Text(u'Calendar: ')), self.accountchooser]) self.description = urwid.Edit(caption=u'Description: ', edit_text=self.description) self.location = urwid.Edit(caption=u'Location: ', edit_text=self.location) cancel = urwid.Button(u'Cancel', on_press=self.cancel) save = urwid.Button(u'Save', on_press=self.save) buttons = CColumns([cancel, save]) self.pile = urwid.ListBox( CSimpleFocusListWalker([ self.summary, accounts, self.startendeditor, self.recursioneditor, self.description, self.location, urwid.Text(''), buttons ])) self._w = self.pile
class RecursionEditor(urwid.WidgetWrap): def __init__(self, rrule): self.recursive = False if rrule is None else True self.checkRecursion = urwid.CheckBox('repeat', state=self.recursive, on_state_change=self.toggle) self.columns = CColumns([self.checkRecursion]) urwid.WidgetWrap.__init__(self, self.columns) def toggle(self, checkbox, state): if len(self.columns.contents) < 2: text = 'Editing repitition rules is not supported yet' self.columns.contents.append((urwid.Text(text), self.columns.options()))
def calendar_walker(view, firstweekday=0): """hopefully this will soon become a real "walker", loading new weeks as needed""" calendar.setfirstweekday(firstweekday) dnames = calendar.weekheader(2).split(' ') dnames = CColumns([(4, urwid.Text(' '))] + [(2, urwid.Text(name)) for name in dnames], dividechars=1) weeks = CalendarWalker(view=view, firstweekday=firstweekday) box = urwid.ListBox(weeks) frame = urwid.Frame(box, header=dnames) return frame
class RecursionEditor(urwid.WidgetWrap): def __init__(self, rrule): # TODO: actually implement the Recursion Editor self.recursive = False if rrule is None else True self.checkRecursion = urwid.CheckBox('repeat', state=self.recursive, on_state_change=self.toggle) self.columns = CColumns([self.checkRecursion]) urwid.WidgetWrap.__init__(self, self.columns) def toggle(self, checkbox, state): if len(self.columns.contents) < 2: text = 'Editing repitition rules is not supported yet' self.columns.contents.append( (urwid.Text(text), self.columns.options()))
def __init__(self, collection, conf=None, dbtool=None, title=u'', description=u''): self.collection = collection self.eventscolumn = EventColumn(conf=conf, dbtool=dbtool) weeks = calendar_walker(view=self, firstweekday=conf.default.firstweekday) events = self.eventscolumn columns = CColumns([(25, weeks), events], dividechars=2, box_columns=[0, 1]) self.eventscolumn.update(date.today()) # showing with today's events Pane.__init__(self, columns, title=title, description=description)
def toggle(self, checkbox, state): """change from allday to datetime event :param checkbox: the checkbox instance that is used for toggling, gets automatically passed by urwid (is not used) :type checkbox: checkbox :param state: True if allday event, False if datetime :type state: bool """ self.allday = state datewidth = len(self.startdate) + 7 edit = urwid.Edit(caption=('', 'From: '), edit_text=self.startdate, wrap='any') edit = urwid.AttrMap( edit, self.startdate_bg, 'editcp', ) edit = urwid.Padding(edit, align='left', width=datewidth, left=0, right=1) self.startdatewidget = edit edit = urwid.Edit(caption=('', 'To: '), edit_text=self.enddate, wrap='any') edit = urwid.AttrMap( edit, self.enddate_bg, 'editcp', ) edit = urwid.Padding(edit, align='left', width=datewidth, left=0, right=1) self.enddatewidget = edit if state is True: timewidth = 1 self.starttimewidget = urwid.Text('') self.endtimewidget = urwid.Text('') elif state is False: timewidth = len(self.starttime) + 1 edit = urwid.Edit(edit_text=self.starttime, wrap='any') edit = urwid.AttrMap( edit, self.starttime_bg, 'editcp', ) edit = urwid.Padding(edit, align='left', width=len(self.starttime) + 1, left=1) self.starttimewidget = edit edit = urwid.Edit(edit_text=self.endtime, wrap='any') edit = urwid.AttrMap( edit, self.endtime_bg, 'editcp', ) edit = urwid.Padding(edit, align='left', width=len(self.endtime) + 1, left=1) self.endtimewidget = edit columns = CPile([ CColumns([(datewidth, self.startdatewidget), (timewidth, self.starttimewidget)], dividechars=1), CColumns([(datewidth, self.enddatewidget), (timewidth, self.endtimewidget)], dividechars=1), self.checkallday ], focus_item=2) urwid.WidgetWrap.__init__(self, columns)