Number picker
#!/usr/bin/env python
import argparse
from pzp import Finder, GenericAction
from pzp.layout import list_layouts
from pzp.info import InfoStyle
def num_format(item):
return f"{item}"
def main():
parser = argparse.ArgumentParser()
parser.add_argument("-n", type=int, default=1000)
parser.add_argument("-f", "--fullscreen", action=argparse.BooleanOptionalAction, default=False)
parser.add_argument("--lazy", action=argparse.BooleanOptionalAction, default=False)
parser.add_argument("--height", type=int)
parser.add_argument("--layout", choices=list_layouts(), default="reverse-list")
parser.add_argument("--info", choices=["default", "hidden"], default="default")
parser.add_argument("--input", type=str)
args = parser.parse_args()
info = InfoStyle.DEFAULT if args.info == "default" else InfoStyle.HIDDEN
try:
finder = Finder(
candidates=range(0, args.n),
fullscreen=args.fullscreen,
height=args.height,
layout=args.layout,
format_fn=num_format,
info_style=info,
keys_binding={"custom": ["ctrl-o", "enter"], "qu-qu": ["ctrl-q"], "oh-oh": ["!"]},
header_str="Press enter or ctrl-o",
lazy=args.lazy,
)
finder.show(input=args.input)
except GenericAction as action:
print(f"action: {action.action} selected item: {action.selected_item} line: {action.line}")
if __name__ == "__main__":
main()