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)
[docs] def on_ok(self): pass
@overrides(npyscreen.ActionForm)
[docs] def on_cancel(self): pass
@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 afterEditing(self): self.parentApp.setNextForm(self.nextForm)
[docs] def init(self): self.setNextForm() self.setHandlers()
[docs] def setNextForm(self, name=None): self.nextForm = name
[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 classNameEvents(self, key=None): self.hintingEvent(self.className,'className', key)
[docs] def moduleNameEvents(self, key=None): self.hintingEvent(self.moduleName,'moduleName', key)
[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 })