Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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
Ejemplo n.º 4
0
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()))
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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()))
Ejemplo n.º 7
0
 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)
Ejemplo n.º 8
0
    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)