Source code for mylinux.view.tuiElement.CreateForm
from __future__ import absolute_import
import curses
import difflib
import npyscreen
from mylinux.libs import overrides, override
[docs]class CreateForm(npyscreen.ActionForm):
@overrides(npyscreen.ActionForm)
@overrides(npyscreen.ActionForm)
@overrides(npyscreen.ActionForm)
[docs] def create(self):
self.moduleName = self.add(npyscreen.TitleText,
rely=2,
use_two_lines=False,
value='',
name="Module name : ",
scroll_exit=True)
self.className = self.add(npyscreen.TitleText,
use_two_lines=False,
rely=3,
value='',
name="Class name : ",
scroll_exit=True)
self.info = self.add(npyscreen.TitleText,
rely=4,
use_two_lines=False,
value='',
name="Package info : ",
scroll_exit=True)
self.packageInstall = self.add(npyscreen.MultiLineEditableBoxed,
begin_entry_at=0,
rely=6,
width=76,
max_height=6,
name="Package install script...",
scroll_exit=True)
self.packagePurge = self.add(npyscreen.MultiLineEditableBoxed,
begin_entry_at=0,
rely=12,
width=76,
max_height=6,
name="Package purge script...",
scroll_exit=True)
self.configInstall = self.add(npyscreen.MultiLineEditableBoxed,
rely=18,
width=76,
max_height=6,
begin_entry_at=0,
name="Config install script...",
scroll_exit=True)
self.configPurge = self.add(npyscreen.MultiLineEditableBoxed,
begin_entry_at=0,
rely=24,
max_height=6,
width=76,
name="Config purge script...",
scroll_exit=True)
self.test = self.add(npyscreen.MultiLineEditableBoxed,
begin_entry_at=0,
rely=30,
max_height=7,
width=76,
name="Test check script...",
scroll_exit=True)
self.OK_BUTTON_TEXT = 'OK'
self.CANCEL_BUTTON_TEXT = 'EXIT'
self.init()
@override
[docs] def hintingEvent(self, widget, hints, key):
widget.value = widget.value.replace('->', ' ')
widget.value = widget.value.replace(',', ' ')
if widget.value.split():
matches = sorted(
list(set(self.hints[hints])),
key=lambda x: difflib.SequenceMatcher(None, x, widget.value.split()[0]).ratio(),
reverse=True
)
if key == curses.ascii.TAB:
widget.value = widget.value.split()[0] + ' -> ' + ','.join(matches)
if key == curses.ascii.NL:
if matches:
widget.value = matches[0]
else:
widget.value = widget.value.split()[0]
widget.update()
else:
widget.value = ' -> ' + ','.join(self.hints[hints])
self.moduleName.update()
[docs] def setHandlers(self):
self.moduleName.entry_widget.add_handlers({
curses.ascii.TAB: self.moduleNameEvents,
curses.ascii.NL: self.moduleNameEvents
})
self.className.entry_widget.add_handlers({
curses.ascii.TAB: self.classNameEvents,
curses.ascii.NL: self.classNameEvents
})