primitivus: added edition zone at the bottom
- primitivus: new AdvancedEdit widget, which is like Edit but manage some new keys (C-a, C-e, C-k, C-w)
This commit is contained in:
parent
66a6d7599c
commit
8d1e8e1a11
2 changed files with 27 additions and 3 deletions
|
|
@ -36,6 +36,26 @@ class Password(urwid.Edit):
|
|||
def get_edit_text(self):
|
||||
return self.__real_text
|
||||
|
||||
class AdvancedEdit(urwid.Edit):
|
||||
"""Edit box with some custom improvments"""
|
||||
|
||||
def keypress(self, size, key):
|
||||
#TODO: insert mode is not managed yet
|
||||
if key == 'ctrl a':
|
||||
key = 'home'
|
||||
elif key == 'ctrl e':
|
||||
key = 'end'
|
||||
elif key == 'ctrl k':
|
||||
self._delete_highlighted()
|
||||
self.set_edit_text(self.edit_text[:self.edit_pos])
|
||||
elif key == 'ctrl w':
|
||||
before = self.edit_text[:self.edit_pos]
|
||||
pos = before.rstrip().rfind(" ")+1
|
||||
self.set_edit_text(before[:pos] + self.edit_text[self.edit_pos:])
|
||||
self.set_edit_pos(pos)
|
||||
return super(AdvancedEdit, self).keypress(size, key)
|
||||
|
||||
|
||||
class SelectableText(urwid.FlowWidget):
|
||||
signals = ['change']
|
||||
|
||||
|
|
@ -93,6 +113,7 @@ class List(urwid.WidgetWrap):
|
|||
|
||||
self.content = urwid.SimpleListWalker([])
|
||||
self.list_box = urwid.ListBox(self.content)
|
||||
urwid.WidgetWrap.__init__(self, self.list_box)
|
||||
self.changeValues(options)
|
||||
|
||||
def __onStateChange(self, widget, selected):
|
||||
|
|
@ -141,7 +162,7 @@ class List(urwid.WidgetWrap):
|
|||
if self.single and new_values:
|
||||
self.content[0].setState(True)
|
||||
display_widget = urwid.BoxAdapter(self.list_box, min(len(new_values),5) or 1)
|
||||
urwid.WidgetWrap.__init__(self, display_widget)
|
||||
self._set_w(display_widget)
|
||||
|
||||
def selectValue(self, value):
|
||||
self.unselectAll()
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ from quick_frontend.quick_contact_management import QuickContactManagement
|
|||
import urwid
|
||||
from profile_manager import ProfileManager
|
||||
from contact_list import ContactList
|
||||
from custom_widgets import AdvancedEdit
|
||||
import pdb
|
||||
"""from window import Window
|
||||
from editbox import EditBox
|
||||
|
|
@ -78,10 +79,12 @@ class PrimitivusApp(QuickApp):
|
|||
|
||||
def __buildMainWidget(self):
|
||||
self.contactList = ContactList(self, self.CM)
|
||||
return self.contactList
|
||||
self.center_part = urwid.Columns([self.contactList])
|
||||
self.main_widget = urwid.Frame(self.center_part, footer=AdvancedEdit('> '), focus_part='footer')
|
||||
return self.main_widget
|
||||
|
||||
def plug_profile(self, profile_key='@DEFAULT@'):
|
||||
self.main_widget = self.loop.widget = self.__buildMainWidget()
|
||||
self.loop.widget = self.__buildMainWidget()
|
||||
QuickApp.plug_profile(self, profile_key)
|
||||
|
||||
def removePopUp(self):
|
||||
|
|
|
|||
Loading…
Reference in a new issue