Source code for mylinux.view.tuiElement.SelectForm
from __future__ import absolute_import
import curses
import npyscreen
from mylinux.libs import overrides, override
[docs]class SelectForm(npyscreen.ActionForm):
@overrides(npyscreen.ActionForm)
[docs] def on_ok(self):
packageNames = self.packageNames.get_selected_objects()
if not packageNames:
packageNames = []
confirm = npyscreen.notify_yes_no(
"Are you sure to {0} {1} packages...".format(self.action, len(packageNames)),
title="Execute action")
if confirm:
self.setNextForm(None)
else:
self.setNextForm('MAIN')
@overrides(npyscreen.ActionForm)
[docs] def on_cancel(self):
exitState = npyscreen.notify_yes_no(
'Really want to exit? Changes will not be saved!',
title="Exit")
if exitState:
self.packageNames.value = None
self.setNextForm(None)
else:
self.setNextForm('MAIN')
@overrides(npyscreen.ActionForm)
[docs] def create(self):
self.modules = self.add(npyscreen.TitleMultiSelect,
rely=2,
relx=2,
max_height=10,
width=25,
value=[],
begin_entry_at=0,
name="Select modules : ",
values=[],
scroll_exit=True)
self.classes = self.add(npyscreen.TitleMultiSelect,
rely=13,
relx=2,
max_height=25,
width=25,
value=[],
begin_entry_at=0,
name="Select classes : ",
values=[],
scroll_exit=True)
pacX = 24
pacY = 2
self.packageNames = self.add(npyscreen.TitleMultiSelect,
rely=pacY,
relx=pacX,
max_height=20,
field_width=20,
value=[],
begin_entry_at=2,
name=" Name State Config Info",
values=[],
scroll_exit=True)
self.packageInfos = self.add(
npyscreen.Pager,
values=[],
rely=pacY + 1,
relx=pacX + 44,
scroll_exit=True)
self.packageStates = self.add(
npyscreen.Pager,
values=[],
name="TESt",
width=10,
rely=pacY + 1,
relx=pacX + 23,
scroll_exit=True)
self.configStates = self.add(
npyscreen.Pager,
values=[],
width=10,
name=" ",
rely=pacY + 1,
relx=pacX + 34,
scroll_exit=True)
self.OK_BUTTON_TEXT = 'OK'
self.CANCEL_BUTTON_TEXT = 'EXIT'
self.init()
@override
[docs] def ModulesEvents(self, key=None):
selectedModules = self.modules.get_selected_objects()
if (not selectedModules): selectedModules = []
classesValue = []
for package in self.packages:
if package.info['module'] in selectedModules:
classesValue.append(self.classes.values.index(package.info['class']))
self.classes.value = classesValue
self.classes.update()
self.ClassesEvents()
[docs] def ClassesEvents(self, key=None):
selectedClasses = self.classes.get_selected_objects()
if not selectedClasses: selectedClasses = []
packagesValue = []
for package in self.packages:
if package.info['class'] in selectedClasses:
packagesValue.append(self.packageNames.values.index(package.name))
self.packageNames.value = packagesValue
self.packageNames.update()
[docs] def setHandlers(self):
self.modules.entry_widget.add_handlers({
curses.ascii.NL: self.ModulesEvents
})
self.classes.entry_widget.add_handlers({
curses.ascii.NL: self.ClassesEvents
})