cleanup db.Thread rewrite widgets: * write example howto use treewidgets * attachments as TW * rewrite messagewidget remove cmdline interface in favour of simple commands -> interpret args -> instanciate alot.command.Command Commands * how should we do mappings? via settings, 'set' in the commandline interpreter or both? use global commandmap to map urwid actions: 'activate/cursor down etc'. only those are interpreted by widgets! all other will be read from buffer.bindings: in b.keypress, look for local, then global mappings, then return widget.keypress (interprets urwid actions) * help strings in commands and help buffer * undo for commands send.Sender * refresh open thread buffers? (happens automatically if mail gets indexed and buffer refreshed..) envelope buffer: * needs ability do display/edit attachments (widget will be reused in messagewidget) * full headers via a MessageHeadersWidget with displayed=None * enter -> editor * gpg settings per widget, should read defaults from account settings searchbuffer: * unseen tag -> msg bold * focus next thread after toggletag. It would be easyest if IteratorWalker had a focus_next() that could be called in ToggleTagCommand in case thread is still in the searchresults * individual formating for tags? (eg. "important" tag white on red). should be configurable in the settings singleThread buffer: * what if depth>screensize? * proper display of email body: fold stuff * open unread mails? focus first unread/query matched? * text search: tag through occurences, highlight etc * toggle full header taglist buffer * interactively filter tagcloud this will have to wait until a version of urwid can be easy_installed in that GridFlow has a get_focus: http://comments.gmane.org/gmane.comp.lib.urwid/971 db: * db.Message.get_replies() needs fixing. see http://notmuch.198994.n3.nabble.com/python-get-all-messages-of-a-thread-tt2996080.html * relay matched-flag to msg objects (to open only matches messages in thread buffer) * all interpretation of the mail shoud happen in db.Message ui.commandline: possible cmds: map,search (short \ or o), refine (| or O), print, save, view attachments?, pipe should these cmds have output? where to put it? see pentadactyl. ui: * current bindings in header like mutt? * notifier class called by ui.notify()? This would enable different subclasses to implement growl/libnotify or just internal popups * message widgets should get their info exclusively from alot.db.message, not indirectly via an email object. the benefit is that switching to notmuch's mimepart api later will be painless general * gg, g5j.. combos like in vim: input->stack; rm timeoutalarm; try to interpret stack; if this fails, wait for more; on alarm remove stack * pydoc/sphinx * update dependencies in setup.py. Do we have to include all these? cmd subprocess,shlex threading mailbox mailcap distant future: * addressbook manager with backends for lbdb,abook,rolo that can be used for prompt autocompletion.