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 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 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 })