Linux web-conference.aiou.edu.pk 5.4.0-204-generic #224-Ubuntu SMP Thu Dec 5 13:38:28 UTC 2024 x86_64
Apache/2.4.41 (Ubuntu)
: 172.16.50.247 | : 3.141.12.172
Cant Read [ /etc/named.conf ]
7.4.3-4ubuntu2.28
appadmin
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
lib /
python3 /
dist-packages /
[ HOME SHELL ]
Name
Size
Permission
Action
Automat-0.8.0.egg-info
[ DIR ]
drwxr-xr-x
Click-7.0.egg-info
[ DIR ]
drwxr-xr-x
CommandNotFound
[ DIR ]
drwxr-xr-x
DistUpgrade
[ DIR ]
drwxr-xr-x
HweSupportStatus
[ DIR ]
drwxr-xr-x
Jinja2-2.10.1.egg-info
[ DIR ]
drwxr-xr-x
LanguageSelector
[ DIR ]
drwxr-xr-x
MarkupSafe-1.1.0.egg-info
[ DIR ]
drwxr-xr-x
OpenSSL
[ DIR ]
drwxr-xr-x
PyGObject-3.36.0.egg-info
[ DIR ]
drwxr-xr-x
PyHamcrest-1.9.0.egg-info
[ DIR ]
drwxr-xr-x
PyJWT-1.7.1.egg-info
[ DIR ]
drwxr-xr-x
PyNaCl-1.3.0.egg-info
[ DIR ]
drwxr-xr-x
SecretStorage-2.3.1.egg-info
[ DIR ]
drwxr-xr-x
Twisted-18.9.0.egg-info
[ DIR ]
drwxr-xr-x
UpdateManager
[ DIR ]
drwxr-xr-x
__pycache__
[ DIR ]
drwxr-xr-x
apport
[ DIR ]
drwxr-xr-x
apt
[ DIR ]
drwxr-xr-x
apt_inst-stubs
[ DIR ]
drwxr-xr-x
apt_pkg-stubs
[ DIR ]
drwxr-xr-x
aptsources
[ DIR ]
drwxr-xr-x
attr
[ DIR ]
drwxr-xr-x
attrs-19.3.0.egg-info
[ DIR ]
drwxr-xr-x
automat
[ DIR ]
drwxr-xr-x
blinker
[ DIR ]
drwxr-xr-x
certifi
[ DIR ]
drwxr-xr-x
certifi-2019.11.28.egg-info
[ DIR ]
drwxr-xr-x
chardet
[ DIR ]
drwxr-xr-x
chardet-3.0.4.egg-info
[ DIR ]
drwxr-xr-x
click
[ DIR ]
drwxr-xr-x
cloud_init-24.4.egg-info
[ DIR ]
drwxr-xr-x
cloudinit
[ DIR ]
drwxr-xr-x
colorama
[ DIR ]
drwxr-xr-x
colorama-0.4.3.egg-info
[ DIR ]
drwxr-xr-x
configobj-5.0.6.egg-info
[ DIR ]
drwxr-xr-x
constantly
[ DIR ]
drwxr-xr-x
constantly-15.1.0.egg-info
[ DIR ]
drwxr-xr-x
cryptography
[ DIR ]
drwxr-xr-x
cryptography-2.8.egg-info
[ DIR ]
drwxr-xr-x
dbus
[ DIR ]
drwxr-xr-x
dbus_python-1.2.16.egg-info
[ DIR ]
drwxr-xr-x
debian
[ DIR ]
drwxr-xr-x
debian_bundle
[ DIR ]
drwxr-xr-x
distro-1.4.0.egg-info
[ DIR ]
drwxr-xr-x
distro_info-0.23+ubuntu1.1.egg...
[ DIR ]
drwxr-xr-x
gi
[ DIR ]
drwxr-xr-x
hamcrest
[ DIR ]
drwxr-xr-x
httplib2
[ DIR ]
drwxr-xr-x
httplib2-0.14.0.egg-info
[ DIR ]
drwxr-xr-x
hyperlink
[ DIR ]
drwxr-xr-x
hyperlink-19.0.0.egg-info
[ DIR ]
drwxr-xr-x
idna
[ DIR ]
drwxr-xr-x
idna-2.8.egg-info
[ DIR ]
drwxr-xr-x
importlib_metadata
[ DIR ]
drwxr-xr-x
importlib_metadata-1.5.0.egg-i...
[ DIR ]
drwxr-xr-x
incremental
[ DIR ]
drwxr-xr-x
incremental-16.10.1.egg-info
[ DIR ]
drwxr-xr-x
janitor
[ DIR ]
drwxr-xr-x
jinja2
[ DIR ]
drwxr-xr-x
jsonpatch-1.22.egg-info
[ DIR ]
drwxr-xr-x
jsonpointer-2.0.egg-info
[ DIR ]
drwxr-xr-x
jsonschema
[ DIR ]
drwxr-xr-x
jsonschema-3.2.0.egg-info
[ DIR ]
drwxr-xr-x
jwt
[ DIR ]
drwxr-xr-x
keyring
[ DIR ]
drwxr-xr-x
keyring-18.0.1.egg-info
[ DIR ]
drwxr-xr-x
landscape
[ DIR ]
drwxr-xr-x
language_selector-0.1.egg-info
[ DIR ]
drwxr-xr-x
launchpadlib
[ DIR ]
drwxr-xr-x
launchpadlib-1.10.13.egg-info
[ DIR ]
drwxr-xr-x
lazr
[ DIR ]
drwxr-xr-x
lazr.restfulclient-0.14.2.egg-...
[ DIR ]
drwxr-xr-x
lazr.uri-1.0.3.egg-info
[ DIR ]
drwxr-xr-x
markupsafe
[ DIR ]
drwxr-xr-x
more_itertools
[ DIR ]
drwxr-xr-x
more_itertools-4.2.0.egg-info
[ DIR ]
drwxr-xr-x
nacl
[ DIR ]
drwxr-xr-x
netifaces-0.10.4.egg-info
[ DIR ]
drwxr-xr-x
oauthlib
[ DIR ]
drwxr-xr-x
oauthlib-3.1.0.egg-info
[ DIR ]
drwxr-xr-x
packaging
[ DIR ]
drwxr-xr-x
packaging-20.3.egg-info
[ DIR ]
drwxr-xr-x
pexpect
[ DIR ]
drwxr-xr-x
pkg_resources
[ DIR ]
drwxr-xr-x
ptyprocess
[ DIR ]
drwxr-xr-x
pyOpenSSL-19.0.0.egg-info
[ DIR ]
drwxr-xr-x
pyasn1
[ DIR ]
drwxr-xr-x
pyasn1-0.4.2.egg-info
[ DIR ]
drwxr-xr-x
pyasn1_modules
[ DIR ]
drwxr-xr-x
pygtkcompat
[ DIR ]
drwxr-xr-x
pymacaroons
[ DIR ]
drwxr-xr-x
pymacaroons-0.13.0.egg-info
[ DIR ]
drwxr-xr-x
pyparsing-2.4.6.egg-info
[ DIR ]
drwxr-xr-x
pyrsistent
[ DIR ]
drwxr-xr-x
pyrsistent-0.15.5.egg-info
[ DIR ]
drwxr-xr-x
pyserial-3.4.egg-info
[ DIR ]
drwxr-xr-x
python_apt-2.0.1+ubuntu0.20.4....
[ DIR ]
drwxr-xr-x
python_debian-0.1.36+ubuntu1.1...
[ DIR ]
drwxr-xr-x
requests
[ DIR ]
drwxr-xr-x
requests-2.22.0.egg-info
[ DIR ]
drwxr-xr-x
requests_unixsocket
[ DIR ]
drwxr-xr-x
requests_unixsocket-0.2.0.egg-...
[ DIR ]
drwxr-xr-x
secretstorage
[ DIR ]
drwxr-xr-x
serial
[ DIR ]
drwxr-xr-x
service_identity
[ DIR ]
drwxr-xr-x
service_identity-18.1.0.egg-in...
[ DIR ]
drwxr-xr-x
setuptools
[ DIR ]
drwxr-xr-x
setuptools-45.2.0.egg-info
[ DIR ]
drwxr-xr-x
simplejson
[ DIR ]
drwxr-xr-x
six-1.14.0.egg-info
[ DIR ]
drwxr-xr-x
softwareproperties
[ DIR ]
drwxr-xr-x
sos
[ DIR ]
drwxr-xr-x
sos-4.7.2.egg-info
[ DIR ]
drwxr-xr-x
ssh_import_id
[ DIR ]
drwxr-xr-x
ssh_import_id-5.10.egg-info
[ DIR ]
drwxr-xr-x
systemd
[ DIR ]
drwxr-xr-x
twisted
[ DIR ]
drwxr-xr-x
uaclient
[ DIR ]
drwxr-xr-x
ubuntu_pro_client-8001.egg-inf...
[ DIR ]
drwxr-xr-x
ufw
[ DIR ]
drwxr-xr-x
unattended_upgrades-0.1.egg-in...
[ DIR ]
drwxr-xr-x
urllib3
[ DIR ]
drwxr-xr-x
urllib3-1.25.8.egg-info
[ DIR ]
drwxr-xr-x
wadllib
[ DIR ]
drwxr-xr-x
wadllib-1.3.3.egg-info
[ DIR ]
drwxr-xr-x
yaml
[ DIR ]
drwxr-xr-x
zipp-1.0.0.egg-info
[ DIR ]
drwxr-xr-x
zope
[ DIR ]
drwxr-xr-x
zope.interface-4.7.1.egg-info
[ DIR ]
drwxr-xr-x
PyYAML-5.3.1.egg-info
1.74
KB
-rw-r--r--
_cffi_backend.cpython-38-x86_6...
181.92
KB
-rw-r--r--
_dbus_bindings.cpython-38-x86_...
168.16
KB
-rw-r--r--
_dbus_glib_bindings.cpython-38...
22.54
KB
-rw-r--r--
_pyrsistent_version.py
23
B
-rw-r--r--
_snack.cpython-38-x86_64-linux...
42.77
KB
-rw-r--r--
_version.py
21
B
-rw-r--r--
_yaml.cpython-38-x86_64-linux-...
276.73
KB
-rw-r--r--
apport_python_hook.py
7.87
KB
-rw-r--r--
apt_inst.cpython-38-x86_64-lin...
58.67
KB
-rw-r--r--
apt_pkg.cpython-38-x86_64-linu...
350.95
KB
-rw-r--r--
blinker-1.4.egg-info
3.81
KB
-rw-r--r--
command_not_found-0.3.egg-info
189
B
-rw-r--r--
configobj.py
87.51
KB
-rw-r--r--
deb822.py
273
B
-rw-r--r--
debconf.py
6.61
KB
-rw-r--r--
distro.py
42.24
KB
-rw-r--r--
distro_info.py
10.89
KB
-rw-r--r--
easy_install.py
126
B
-rw-r--r--
entrypoints.egg-info
226
B
-rw-r--r--
entrypoints.py
7.99
KB
-rw-r--r--
jsonpatch.py
24.51
KB
-rw-r--r--
jsonpointer.py
9.57
KB
-rw-r--r--
language_support_pkgs.py
9.7
KB
-rw-r--r--
lsb_release.py
14.55
KB
-rw-r--r--
netifaces.cpython-38-x86_64-li...
22.68
KB
-rw-r--r--
netifaces.cpython-38d-x86_64-l...
26.71
KB
-rw-r--r--
pexpect-4.6.0.egg-info
2.23
KB
-rw-r--r--
problem_report.py
26.24
KB
-rw-r--r--
pvectorc.cpython-38-x86_64-lin...
36.68
KB
-rw-r--r--
pyasn1_modules-0.2.1.egg-info
1.68
KB
-rw-r--r--
pyparsing.py
266.02
KB
-rw-r--r--
simplejson-3.16.0.egg-info
2.97
KB
-rw-r--r--
six.py
33.28
KB
-rw-r--r--
snack.py
30.4
KB
-rw-r--r--
systemd_python-234.egg-info
586
B
-rw-r--r--
ufw-0.36.egg-info
261
B
-rw-r--r--
validate.py
46.14
KB
-rw-r--r--
zipp.py
6.75
KB
-rw-r--r--
zope.interface-4.7.1-nspkg.pth
529
B
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : snack.py
# snack.py: maps C extension module _snack to proper python types in module # snack. # The first section is a very literal mapping. # The second section contains convenience classes that amalgamate # the literal classes and make them more object-oriented. """ This module provides the NEWT Windowing toolkit API for Python This is a lightweight text-mode windowing library, based on slang. Classes: - Widget - Button - CompactButton - Checkbox - SingleRadioButton - Listbox - Textbox - TextboxReflowed - Label - Scale - Entry - Form - Grid - SnackScreen - RadioGroup - RadioBar - ButtonBar - GridFormHelp - GridForm - CheckboxTree - Clistbox Functions: - ListboxChoiceWindow - ButtonChoiceWindow - EntryWindow """ from __future__ import absolute_import, print_function, unicode_literals import _snack import string import sys from _snack import FLAG_DISABLED, FLAGS_SET, FLAGS_RESET, FLAGS_TOGGLE, FD_READ, FD_WRITE, FD_EXCEPT LEFT = (-1, 0) DOWN = (-1, -1) CENTER = (0, 0) UP = (1, 1) RIGHT = (1, 0) snackArgs = {"append":-1} class Widget: """Base class for NEWT toolkit - Do not use directly methods: - Widget(self) - setCallback(self, obj, data = None) : The callback for when object activated. data is passed to obj. """ def setCallback(self, obj, data = None): if data: self.w.setCallback(obj, data) else: self.w.setCallback(obj) def __init__(self): raise NotImplementedError class Button(Widget): """Basic button class, takes button text as parameter method: - Button(self, text): returns a button """ def __init__(self, text): self.w = _snack.button(text) class CompactButton(Widget): """Compact Button class (less frilly button decoration). methods: - CompactButton(self,text) : create button, with text. """ def __init__(self, text): self.w = _snack.compactbutton(text) class Checkbox(Widget): """A checkbox. methods: - Checkbox(self, text, isOn = 0) : text, and boolean as to default value - setValue(self) : set value - value(self, value) : return checkbox value - selected(self) : returns boolean - setFlags(self, flag, sense) : set flags flags: FLAG_DISABLED, FLAGS_SET, FLAGS_RESET """ def value(self): return self.w.checkboxValue def selected(self): return self.w.checkboxValue != 0 def setFlags (self, flag, sense): return self.w.checkboxSetFlags(flag, sense) def setValue (self, value): return self.w.checkboxSetValue(value) def __init__(self, text, isOn = 0): self.w = _snack.checkbox(text, isOn) class SingleRadioButton(Widget): """Single Radio Button. methods: - SingleRadioButton(text, group, isOn = 0) : create button - selected(self) : returns bool, whether or not is selected. """ def selected(self): return self.w.key == self.w.radioValue; def __init__(self, text, group, isOn = 0): if group: self.w = _snack.radiobutton(text, group.w, isOn) else: self.w = _snack.radiobutton(text, None, isOn) class Listbox(Widget): """Listbox class. methods: - Listbox(self, height, scroll = 0, returnExit = 0, width = 0, showCursor = 0, multiple = 0, border = 0) - insert(self, text, item, before) : insert element; before = key to item to insert before, or None. - delete(self, item) : delete item from list. - replace(self, text,item) : Replace a given item's text - current(self) : returns currently selected item - getSelection(self) : returns a list of selected items - setCurrent(self,i tem) : select current. - clear(self) : clear listbox """ def append(self, text, item): key = self.w.listboxAddItem(text) self.key2item[key] = item self.item2key[item] = key def insert(self, text, item, before): if (not before): key = self.w.listboxInsertItem(text, 0) else: key = self.w.listboxInsertItem(text, self.item2key[before]) self.key2item[key] = item self.item2key[item] = key def delete(self, item): self.w.listboxDeleteItem(self.item2key[item]) del self.key2item[self.item2key[item]] del self.item2key[item] def replace(self, text, item): key = self.w.listboxInsertItem(text, self.item2key[item]) self.w.listboxDeleteItem(self.item2key[item]) del self.key2item[self.item2key[item]] self.item2key[item] = key self.key2item[key] = item def current(self): return self.key2item[self.w.listboxGetCurrent()] def getSelection(self): selection = [] list = self.w.listboxGetSelection() for key in list: selection.append(self.key2item[key]) return selection def setCurrent(self, item): self.w.listboxSetCurrent(self.item2key[item]) def clear(self): self.key2item = {} self.item2key = {} self.w.listboxClear() def __init__(self, height, scroll = 0, returnExit = 0, width = 0, showCursor = 0, multiple = 0, border = 0): self.w = _snack.listbox(height, scroll, returnExit, showCursor, multiple, border) self.key2item = {} self.item2key = {} if (width): self.w.listboxSetWidth(width) class Textbox(Widget): """Textbox, container for text. methods: - Textbox(self, width, height, scroll = 0, wrap = 0): scroll, wrap are flags include scroll bars, or text wrap. - setText(text) : set text. - setHeight(height): set height. """ def setText(self, text): self.w.textboxText(text) def setHeight(self, height): self.w.textboxHeight(height) def __init__(self, width, height, text, scroll = 0, wrap = 0): self.w = _snack.textbox(width, height, text, scroll, wrap) class TextboxReflowed(Textbox): def __init__(self, width, text, flexDown = 5, flexUp = 10, maxHeight = -1): (newtext, width, height) = reflow(text, width, flexDown, flexUp) if maxHeight != -1 and height > maxHeight: Textbox.__init__(self, width, maxHeight, newtext, 1) else: Textbox.__init__(self, width, height, newtext, 0) class Label(Widget): """A Label (simple text). methods: - Label(self,text) : create label - setText(self,text) : change text. - setColors(self, colorset) : change individual colors """ def setText(self, text): self.w.labelText(text) def __init__(self, text): self.w = _snack.label(text) def setColors(self, colorset): self.w.labelSetColors(colorset) class Scale(Widget): """A Scale (progress bar). methods: - Scale(self,width, total) : create scale; width: size on screen, fullamount: integer. - set(self,amount) : set amount to integer. """ def set(self, amount): self.w.scaleSet(amount) def __init__(self, width, total): self.w = _snack.scale(width, total) class Entry(Widget): """Entry widget. methods: - Entry(self, width, text = "", hidden = 0, password = 0, scroll = 1, returnExit = 0) constructor. hidden doesn't show text, password stars it out, scroll includes scroll bars; if returnExit is set, return from Form when exiting this element, else proceed to next entry widget. - value(self): return value. - set(text, cursorAtEnd = 1) : set the text - setFlags (flag, sense) : flags can be FLAG_DISABLED, FLAGS_SET, FLAGS_RESET, FLAGS_TOGGLE """ def value(self): return self.w.entryValue def set(self, text, cursorAtEnd = 1): return self.w.entrySetValue(text, cursorAtEnd) def setFlags (self, flag, sense): return self.w.entrySetFlags(flag, sense) def __init__(self, width, text = "", hidden = 0, password = 0, scroll = 1, returnExit = 0): self.w = _snack.entry(width, text, hidden, password, scroll, returnExit) # Form uses hotkeys hotkeys = { "F1" : _snack.KEY_F1, "F2" : _snack.KEY_F2, "F3" : _snack.KEY_F3, "F4" : _snack.KEY_F4, "F5" : _snack.KEY_F5, "F6" : _snack.KEY_F6, "F7" : _snack.KEY_F7, "F8" : _snack.KEY_F8, "F9" : _snack.KEY_F9, "F10" : _snack.KEY_F10, "F11" : _snack.KEY_F11, "F12" : _snack.KEY_F12, "ESC" : _snack.KEY_ESC, "ENTER": _snack.KEY_ENTER, "SUSPEND" : _snack.KEY_SUSPEND, "BACKSPACE": _snack.KEY_BACKSPACE, "DELETE": _snack.KEY_DELETE, "INSERT": _snack.KEY_INSERT, "RESIZE": _snack.KEY_RESIZE, " " : ord(" ") } for n in list(hotkeys.keys()): hotkeys[hotkeys[n]] = n for o,c in [ (ord(c),c) for c in string.ascii_letters+string.digits ]: hotkeys[c] = o hotkeys[o] = c class Form: """ Base Form class, from which Grid, etc. inherit methods: - Form(self, helpArg = None) : constructor. - addHotKey(self, keyname) : keynames of form "F1" through "F12", "ESC" - add(self, widget) : Add a widget - run(self): run a form, expecting input - draw(self): draw form. - setTimer(self, timer) : add a timer - watchFile(self, file, flags) : watch a named file - setCurrent (self, co): Set a given widget as the current focus """ def addHotKey(self, keyname): self.w.addhotkey(hotkeys[keyname]) def add(self, widget): if 'hotkeys' in widget.__dict__: for key in widget.hotkeys.keys(): self.addHotKey(key) if 'gridmembers' in widget.__dict__: for w in widget.gridmembers: self.add(w) elif 'w' in widget.__dict__: self.trans[widget.w.key] = widget return self.w.add(widget.w) return None def run(self): (what, which) = self.w.run() if (what == _snack.FORM_EXIT_WIDGET): return self.trans[which] elif (what == _snack.FORM_EXIT_TIMER): return "TIMER" elif (what == _snack.FORM_EXIT_FDREADY): return self.filemap[which] elif (what == _snack.FORM_EXIT_HOTKEY): return hotkeys[which] raise RuntimeError("EOF or IO error") def draw(self): self.w.draw() return None def __init__(self, helpArg = None): self.trans = {} self.filemap = {} self.w = _snack.form(helpArg) # we do the reference count for the helpArg in python! gross self.helpArg = helpArg def setCurrent (self, co): self.w.setcurrent (co.w) def setTimer (self, timer): self.w.settimer (timer) def watchFile (self, file, flags): self.filemap[file.fileno()] = file self.w.watchfd (file.fileno(), flags) class Grid: """Grid class. methods: - place(self,x,y): Return what is placed at (x,y) - setField(self, what, col, row, padding = (0, 0, 0, 0), anchorLeft = 0, anchorTop = 0, anchorRight = 0, anchorBottom = 0, growx = 0, growy = 0): used to add widget 'what' to grid. - Grid(self, *args): eg. g = Grid(2,3) for 2x3 grid """ def place(self, x, y): return self.g.place(x, y) def setField(self, what, col, row, padding = (0, 0, 0, 0), anchorLeft = 0, anchorTop = 0, anchorRight = 0, anchorBottom = 0, growx = 0, growy = 0): self.gridmembers.append(what) anchorFlags = 0 if (anchorLeft): anchorFlags = _snack.ANCHOR_LEFT elif (anchorRight): anchorFlags = _snack.ANCHOR_RIGHT if (anchorTop): anchorFlags = anchorFlags | _snack.ANCHOR_TOP elif (anchorBottom): anchorFlags = anchorFlags | _snack.ANCHOR_BOTTOM gridFlags = 0 if (growx): gridFlags = _snack.GRID_GROWX if (growy): gridFlags = gridFlags | _snack.GRID_GROWY if 'g' in what.__dict__: return self.g.setfield(col, row, what.g, padding, anchorFlags, gridFlags) else: return self.g.setfield(col, row, what.w, padding, anchorFlags) def __init__(self, *args): self.g = _snack.grid(*args) self.gridmembers = [] colorsets = { "ROOT" : _snack.COLORSET_ROOT, "BORDER" : _snack.COLORSET_BORDER, "WINDOW" : _snack.COLORSET_WINDOW, "SHADOW" : _snack.COLORSET_SHADOW, "TITLE" : _snack.COLORSET_TITLE, "BUTTON" : _snack.COLORSET_BUTTON, "ACTBUTTON" : _snack.COLORSET_ACTBUTTON, "CHECKBOX" : _snack.COLORSET_CHECKBOX, "ACTCHECKBOX" : _snack.COLORSET_ACTCHECKBOX, "ENTRY" : _snack.COLORSET_ENTRY, "LABEL" : _snack.COLORSET_LABEL, "LISTBOX" : _snack.COLORSET_LISTBOX, "ACTLISTBOX" : _snack.COLORSET_ACTLISTBOX, "TEXTBOX" : _snack.COLORSET_TEXTBOX, "ACTTEXTBOX" : _snack.COLORSET_ACTTEXTBOX, "HELPLINE" : _snack.COLORSET_HELPLINE, "ROOTTEXT" : _snack.COLORSET_ROOTTEXT, "EMPTYSCALE" : _snack.COLORSET_EMPTYSCALE, "FULLSCALE" : _snack.COLORSET_FULLSCALE, "DISENTRY" : _snack.COLORSET_DISENTRY, "COMPACTBUTTON" : _snack.COLORSET_COMPACTBUTTON, "ACTSELLISTBOX" : _snack.COLORSET_ACTSELLISTBOX, "SELLISTBOX" : _snack.COLORSET_SELLISTBOX } class SnackScreen: """A Screen; methods: - Screen(self) : constructor - finish(self) - resume(self) - suspend(self) - doHelpCallback(self,arg) call callback with arg - helpCallback(self,cb): Set help callback - suspendcallback(self,cb, data=None) : set callback. data=data to pass to cb. - openWindow(self,left, top, width, height, title): Open a window. - pushHelpLine(self,text): put help line on screen. Returns current help line if text=None - setColor(self, colorset, fg, bg): Set foreground and background colors; colorset = key from snack.colorsets, fg & bg = english color names defined by S-Lang (ref: S-Lang Library C Programmer's Guide section: 8.4.4. Setting Character Attributes) """ def __init__(self): _snack.init() (self.width, self.height) = _snack.size() self.pushHelpLine(None) def finish(self): return _snack.finish() def resume(self): _snack.resume() def suspend(self): _snack.suspend() def doHelpCallback(self, arg): self.helpCb(self, arg) def helpCallback(self, cb): self.helpCb = cb return _snack.helpcallback(self.doHelpCallback) def suspendCallback(self, cb, data = None): if data: return _snack.suspendcallback(cb, data) return _snack.suspendcallback(cb) def openWindow(self, left, top, width, height, title): return _snack.openwindow(left, top, width, height, title) def pushHelpLine(self, text): if (not text): return _snack.pushhelpline("*default*") else: return _snack.pushhelpline(text) def popHelpLine(self): return _snack.pophelpline() def drawRootText(self, left, top, text): return _snack.drawroottext(left, top, text) def centeredWindow(self, width, height, title): return _snack.centeredwindow(width, height, title) def gridWrappedWindow(self, grid, title, x = None, y = None): if x and y: return _snack.gridwrappedwindow(grid.g, title, x, y) return _snack.gridwrappedwindow(grid.g, title) def popWindow(self, refresh = True): if refresh: return _snack.popwindow() return _snack.popwindownorefresh() def refresh(self): return _snack.refresh() def setColor(self, colorset, fg, bg): if colorset in colorsets: return _snack.setcolor(colorsets[colorset], fg, bg) else: # assume colorset is an integer for the custom color set return _snack.setcolor(colorset, fg, bg) def reflow(text, width, flexDown = 5, flexUp = 5): """ returns a tuple of the wrapped text, the actual width, and the actual height """ return _snack.reflow(text, width, flexDown, flexUp) # combo widgets class RadioGroup(Widget): """ Combo widget: Group of Radio buttons methods: - RadioGroup(self): constructor. - add(self,title, value, default = None): add a button. Returns button. - getSelection(self) : returns value of selected button | None """ def __init__(self): self.prev = None self.buttonlist = [] def add(self, title, value, default = None): if not self.prev and default == None: # If the first element is not explicitly set to # not be the default, make it be the default default = 1 b = SingleRadioButton(title, self.prev, default) self.prev = b self.buttonlist.append((b, value)) return b def getSelection(self): for (b, value) in self.buttonlist: if b.selected(): return value return None class RadioBar(Grid): """ Bar of Radio buttons, based on Grid. methods: - RadioBar(self, screen, buttonlist) : constructor. - getSelection(self): return value of selected button """ def __init__(self, screen, buttonlist): self.list = [] self.item = 0 self.group = RadioGroup() Grid.__init__(self, 1, len(buttonlist)) for (title, value, default) in buttonlist: b = self.group.add(title, value, default) self.list.append((b, value)) self.setField(b, 0, self.item, anchorLeft = 1) self.item = self.item + 1 def getSelection(self): return self.group.getSelection() # you normally want to pack a ButtonBar with growx = 1 class ButtonBar(Grid): """ Bar of buttons, based on grid. methods: - ButtonBar(screen, buttonlist,buttonlist, compact = 0): - buttonPressed(self, result): Takes the widget returned by Form.run and looks to see if it was one of the widgets in the ButtonBar. """ def __init__(self, screen, buttonlist, compact = 0): self.list = [] self.hotkeys = {} self.item = 0 Grid.__init__(self, len(buttonlist), 1) for blist in buttonlist: if isinstance(blist, str if sys.version >= '3' else basestring): title = blist value = blist.lower() elif len(blist) == 2: (title, value) = blist else: (title, value, hotkey) = blist self.hotkeys[hotkey] = value if compact: b = CompactButton(title) else: b = Button(title) self.list.append((b, value)) self.setField(b, self.item, 0, (1, 0, 1, 0)) self.item = self.item + 1 def buttonPressed(self, result): if result in self.hotkeys: return self.hotkeys[result] for (button, value) in self.list: if result == button: return value return None class GridFormHelp(Grid): """ Subclass of Grid, for the help form text. methods: - GridFormHelp(self, screen, title, help, *args) : - add (self, widget, col, row, padding = (0, 0, 0, 0), anchorLeft = 0, anchorTop = 0, anchorRight = 0, anchorBottom = 0, growx = 0, growy = 0): - runOnce(self, x = None, y = None): pop up the help window - addHotKey(self, keyname): - setTimer(self, keyname): - create(self, x = None, y = None): - run(self, x = None, y = None): - draw(self): - runPopup(self): - setCurrent (self, co): """ def __init__(self, screen, title, help, *args): self.screen = screen self.title = title self.form = Form(help) self.childList = [] self.form_created = 0 args = list(args) args[:0] = [self] Grid.__init__(*tuple(args)) def add(self, widget, col, row, padding = (0, 0, 0, 0), anchorLeft = 0, anchorTop = 0, anchorRight = 0, anchorBottom = 0, growx = 0, growy = 0): self.setField(widget, col, row, padding, anchorLeft, anchorTop, anchorRight, anchorBottom, growx, growy); self.childList.append(widget) def runOnce(self, x = None, y = None): result = self.run(x, y) self.screen.popWindow() return result def addHotKey(self, keyname): self.form.addHotKey(keyname) def setTimer(self, keyname): self.form.setTimer(keyname) def create(self, x = None, y = None): if not self.form_created: self.place(1,1) for child in self.childList: self.form.add(child) self.screen.gridWrappedWindow(self, self.title, x, y) self.form_created = 1 def run(self, x = None, y = None): self.create(x, y) return self.form.run() def draw(self): self.create() return self.form.draw() def runPopup(self): self.create() self.screen.gridWrappedWindow(self, self.title) result = self.form.run() self.screen.popWindow() return result def setCurrent (self, co): self.form.setCurrent (co) class GridForm(GridFormHelp): """ GridForm class (extends GridFormHelp): methods: - GridForm(self, screen, title, *args): """ def __init__(self, screen, title, *args): myargs = (self, screen, title, None) + args GridFormHelp.__init__(*myargs) class CheckboxTree(Widget): """ CheckboxTree combo widget, methods: - CheckboxTree(self, height, scroll = 0, width = None, hide_checkbox = 0, unselectable = 0) constructor. - append(self, text, item = None, selected = 0): - addItem(self, text, path, item = None, selected = 0): - getCurrent(self): - getSelection(self): - setEntry(self, item, text): - setCurrent(self, item): - setEntryValue(self, item, selected = 1): - getEntryValue(self, item): """ def append(self, text, item = None, selected = 0): self.addItem(text, (snackArgs['append'], ), item, selected) def addItem(self, text, path, item = None, selected = 0): if item is None: item = text key = self.w.checkboxtreeAddItem(text, path, selected) self.key2item[key] = item self.item2key[item] = key def getCurrent(self): curr = self.w.checkboxtreeGetCurrent() return self.key2item[curr] def __init__(self, height, scroll = 0, width = None, hide_checkbox = 0, unselectable = 0): self.w = _snack.checkboxtree(height, scroll, hide_checkbox, unselectable) self.key2item = {} self.item2key = {} if (width): self.w.checkboxtreeSetWidth(width) def getSelection(self): selection = [] list = self.w.checkboxtreeGetSelection() for key in list: selection.append(self.key2item[key]) return selection def setEntry(self, item, text): self.w.checkboxtreeSetEntry(self.item2key[item], text) def setCurrent(self, item): self.w.checkboxtreeSetCurrent(self.item2key[item]) def setEntryValue(self, item, selected = 1): self.w.checkboxtreeSetEntryValue(self.item2key[item], selected) def getEntryValue(self, item): return self.w.checkboxtreeGetEntryValue(self.item2key[item]) def ListboxChoiceWindow(screen, title, text, items, buttons = ('Ok', 'Cancel'), width = 40, scroll = 0, height = -1, default = None, help = None): """ - ListboxChoiceWindow(screen, title, text, items, buttons = ('Ok', 'Cancel'), width = 40, scroll = 0, height = -1, default = None, help = None): """ if (height == -1): height = len(items) bb = ButtonBar(screen, buttons) t = TextboxReflowed(width, text) l = Listbox(height, scroll = scroll, returnExit = 1) count = 0 for item in items: if type(item) == tuple: (text, key) = item else: text = item key = count if (default == count): default = key elif (default == item): default = key l.append(text, key) count = count + 1 if (default != None): l.setCurrent (default) g = GridFormHelp(screen, title, help, 1, 3) g.add(t, 0, 0) g.add(l, 0, 1, padding = (0, 1, 0, 1)) g.add(bb, 0, 2, growx = 1) rc = g.runOnce() return (bb.buttonPressed(rc), l.current()) def ButtonChoiceWindow(screen, title, text, buttons = [ 'Ok', 'Cancel' ], width = 40, x = None, y = None, help = None): """ - ButtonChoiceWindow(screen, title, text, buttons = [ 'Ok', 'Cancel' ], width = 40, x = None, y = None, help = None): """ bb = ButtonBar(screen, buttons) t = TextboxReflowed(width, text, maxHeight = screen.height - 12) g = GridFormHelp(screen, title, help, 1, 2) g.add(t, 0, 0, padding = (0, 0, 0, 1)) g.add(bb, 0, 1, growx = 1) return bb.buttonPressed(g.runOnce(x, y)) def EntryWindow(screen, title, text, prompts, allowCancel = 1, width = 40, entryWidth = 20, buttons = [ 'Ok', 'Cancel' ], help = None): """ EntryWindow(screen, title, text, prompts, allowCancel = 1, width = 40, entryWidth = 20, buttons = [ 'Ok', 'Cancel' ], help = None): """ bb = ButtonBar(screen, buttons); t = TextboxReflowed(width, text) count = 0 for n in prompts: count = count + 1 sg = Grid(2, count) count = 0 entryList = [] for n in prompts: if type(n) == tuple: (n, e) = n if isinstance(e, str if sys.version >= '3' else basestring): e = Entry(entryWidth, e) else: e = Entry(entryWidth) sg.setField(Label(n), 0, count, padding = (0, 0, 1, 0), anchorLeft = 1) sg.setField(e, 1, count, anchorLeft = 1) count = count + 1 entryList.append(e) g = GridFormHelp(screen, title, help, 1, 3) g.add(t, 0, 0, padding = (0, 0, 0, 1)) g.add(sg, 0, 1, padding = (0, 0, 0, 1)) g.add(bb, 0, 2, growx = 1) result = g.runOnce() entryValues = [] count = 0 for n in prompts: entryValues.append(entryList[count].value()) count = count + 1 return (bb.buttonPressed(result), tuple(entryValues)) class CListbox(Grid): """Clistbox convenience class. methods: - Clistbox(self, height, cols, cols_widths, scroll = 0) : constructor - colFormText(self, col_text, align = None, adjust_width = 0) : column text. - append(self, col_text, item, col_text_align = None) : - insert(self, col_text, item, before, col_text_align = None) - delete(self, item) - replace(self, col_text, item, col_text_align = None) - current(self) : returns current item - setCurrent(self, item): sets an item as current - clear(self): clear the listbox Alignments may be LEFT, RIGHT, CENTER, None """ def __init__(self, height, cols, col_widths, scroll = 0, returnExit = 0, width = 0, col_pad = 1, col_text_align = None, col_labels = None, col_label_align = None, adjust_width=0): self.cols = cols self.col_widths = col_widths[:] self.col_pad = col_pad self.col_text_align = col_text_align if col_labels != None: Grid.__init__(self, 1, 2) box_y = 1 lstr = self.colFormText(col_labels, col_label_align, adjust_width=adjust_width) self.label = Label(lstr) self.setField(self.label, 0, 0, anchorLeft=1) else: Grid.__init__(self, 1, 1) box_y = 0 self.listbox = Listbox(height, scroll, returnExit, width) self.setField(self.listbox, 0, box_y, anchorRight=1) def colFormText(self, col_text, align = None, adjust_width=0): i = 0 str = "" c_len = len(col_text) while (i < self.cols) and (i < c_len): cstr = col_text[i] cstrlen = _snack.wstrlen(cstr) if self.col_widths[i] < cstrlen: if adjust_width: self.col_widths[i] = cstrlen else: cstr = cstr[:self.col_widths[i]] delta = self.col_widths[i] - _snack.wstrlen(cstr) if delta > 0: if align == None: a = LEFT else: a = align[i] if a == LEFT: cstr = cstr + (" " * delta) if a == CENTER: cstr = (" " * (delta / 2)) + cstr + \ (" " * ((delta + 1) / 2)) if a == RIGHT: cstr = (" " * delta) + cstr if i != c_len - 1: pstr = (" " * self.col_pad) else: pstr = "" str = str + cstr + pstr i = i + 1 return str def append(self, col_text, item, col_text_align = None): if col_text_align == None: col_text_align = self.col_text_align text = self.colFormText(col_text, col_text_align) self.listbox.append(text, item) def insert(self, col_text, item, before, col_text_align = None): if col_text_align == None: col_text_align = self.col_text_align text = self.colFormText(col_text, col_text_align) self.listbox.insert(text, item, before) def delete(self, item): self.listbox.delete(item) def replace(self, col_text, item, col_text_align = None): if col_text_align == None: col_text_align = self.col_text_align text = self.colFormText(col_text, col_text_align) self.listbox.replace(text, item) def current(self): return self.listbox.current() def setCurrent(self, item): self.listbox.setCurrent(item) def clear(self): self.listbox.clear() def customColorset(x): return 30 + x
Close