4.0.0: specify a function to be called
This commit is contained in:
@@ -35,7 +35,7 @@ import ezztui
|
|||||||
menu = {
|
menu = {
|
||||||
'First menu':
|
'First menu':
|
||||||
{'Function 1': 'ezztui_return_value', # use 'return' also from 2.0.0
|
{'Function 1': 'ezztui_return_value', # use 'return' also from 2.0.0
|
||||||
'Function 2': 'ezztui_return_value',
|
'Function 2': 'ezztui_return_value', # specify a function to be called from 4.0.0
|
||||||
'Function 3': 'ezztui_return_value',
|
'Function 3': 'ezztui_return_value',
|
||||||
'Function 4': 'ezztui_return_value',
|
'Function 4': 'ezztui_return_value',
|
||||||
'Function 5': 'ezztui_return_value',
|
'Function 5': 'ezztui_return_value',
|
||||||
|
|||||||
34
ezztui.py
34
ezztui.py
@@ -1,6 +1,9 @@
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
|
|
||||||
def check_curses():
|
def check_curses():
|
||||||
import subprocess, sys
|
import subprocess
|
||||||
|
import sys
|
||||||
try:
|
try:
|
||||||
import curses
|
import curses
|
||||||
except:
|
except:
|
||||||
@@ -9,15 +12,18 @@ def check_curses():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
import curses
|
import curses
|
||||||
except:
|
except ImportError:
|
||||||
check_curses()
|
check_curses()
|
||||||
|
|
||||||
|
|
||||||
def cls():
|
def cls():
|
||||||
os.system('cls' if os.name == 'nt' else 'clear')
|
os.system('cls' if os.name == 'nt' else 'clear')
|
||||||
|
|
||||||
|
|
||||||
def softcls():
|
def softcls():
|
||||||
print("\n" * (os.get_terminal_size().lines * 2))
|
print("\n" * (os.get_terminal_size().lines * 2))
|
||||||
|
|
||||||
|
|
||||||
def center_message(text: str):
|
def center_message(text: str):
|
||||||
print("\n" * (os.get_terminal_size().lines // 2 - 2))
|
print("\n" * (os.get_terminal_size().lines // 2 - 2))
|
||||||
print(" " * ((os.get_terminal_size().columns//2 - (len(text)//2)) - 1) + text)
|
print(" " * ((os.get_terminal_size().columns//2 - (len(text)//2)) - 1) + text)
|
||||||
@@ -25,6 +31,7 @@ def center_message(text: str):
|
|||||||
input()
|
input()
|
||||||
cls()
|
cls()
|
||||||
|
|
||||||
|
|
||||||
def center_multiline(text: list):
|
def center_multiline(text: list):
|
||||||
print("\n" * ((os.get_terminal_size().lines // 2 - (len(text) // 2)) - 1))
|
print("\n" * ((os.get_terminal_size().lines // 2 - (len(text) // 2)) - 1))
|
||||||
for line in text:
|
for line in text:
|
||||||
@@ -33,6 +40,7 @@ def center_multiline(text: list):
|
|||||||
input()
|
input()
|
||||||
cls()
|
cls()
|
||||||
|
|
||||||
|
|
||||||
def menu(menulist: dict):
|
def menu(menulist: dict):
|
||||||
def print_menu(stdscr, selected_row_idx, menu):
|
def print_menu(stdscr, selected_row_idx, menu):
|
||||||
stdscr.clear()
|
stdscr.clear()
|
||||||
@@ -80,17 +88,14 @@ def menu(menulist: dict):
|
|||||||
elif key == curses.KEY_DOWN and current_row == len(currentmenu) - 1:
|
elif key == curses.KEY_DOWN and current_row == len(currentmenu) - 1:
|
||||||
current_row = 0
|
current_row = 0
|
||||||
|
|
||||||
elif key == curses.KEY_ENTER or key in [10, 13] and isinstance(currentmenu[list(currentmenu.keys())[current_row]], dict):
|
elif key == curses.KEY_ENTER or key in [10, 13] and \
|
||||||
|
isinstance(currentmenu[list(currentmenu.keys())[current_row]], dict):
|
||||||
menupath.append(list(currentmenu)[current_row])
|
menupath.append(list(currentmenu)[current_row])
|
||||||
currentmenu = currentmenu[list(currentmenu.keys())[current_row]]
|
currentmenu = currentmenu[list(currentmenu.keys())[current_row]]
|
||||||
break
|
break
|
||||||
|
|
||||||
elif key == curses.KEY_ENTER or key in [10, 13] and currentmenu[list(currentmenu.keys())[current_row]] in ['ezztui_return_value', 'return']:
|
elif key == curses.KEY_BACKSPACE or str(key) in ['KEY_BACKSPACE', '8', '127'] or \
|
||||||
menupath.append(list(currentmenu)[current_row])
|
currentmenu[list(currentmenu.keys())[current_row]] in ['ezztui_back_value', 'back']:
|
||||||
returning = menupath
|
|
||||||
break
|
|
||||||
|
|
||||||
elif key == curses.KEY_BACKSPACE or str(key) in ['KEY_BACKSPACE', '8', '127'] or currentmenu[list(currentmenu.keys())[current_row]] in ['ezztui_back_value', 'back']:
|
|
||||||
menupath = menupath[:-1:]
|
menupath = menupath[:-1:]
|
||||||
try:
|
try:
|
||||||
currentmenu = menulist[list(menupath)[0]]
|
currentmenu = menulist[list(menupath)[0]]
|
||||||
@@ -101,9 +106,18 @@ def menu(menulist: dict):
|
|||||||
mainmenu(stdscr)
|
mainmenu(stdscr)
|
||||||
break
|
break
|
||||||
|
|
||||||
elif key == curses.KEY_ENTER or key in [10, 13] and currentmenu[list(currentmenu.keys())[current_row]] in ['ezztui_exit_value', 'exit']:
|
elif key == curses.KEY_ENTER or key in [10, 13] and currentmenu[list(currentmenu.keys())[current_row]] in \
|
||||||
|
['ezztui_exit_value', 'exit']:
|
||||||
exit()
|
exit()
|
||||||
|
|
||||||
|
elif key == curses.KEY_ENTER or key in [10, 13]:
|
||||||
|
menupath.append(list(currentmenu)[current_row])
|
||||||
|
try:
|
||||||
|
returning = currentmenu[list(currentmenu.keys())[current_row]]()
|
||||||
|
except TypeError:
|
||||||
|
returning = menupath
|
||||||
|
break
|
||||||
|
|
||||||
print_menu(stdscr, current_row, currentmenu)
|
print_menu(stdscr, current_row, currentmenu)
|
||||||
|
|
||||||
while returning is None:
|
while returning is None:
|
||||||
|
|||||||
25
setup.py
25
setup.py
@@ -1,18 +1,17 @@
|
|||||||
from setuptools import setup
|
from setuptools import setup
|
||||||
|
|
||||||
with open("README.md", "r") as fh:
|
with open("README.md", "r") as fh:
|
||||||
long_description = fh.read()
|
long_description = fh.read()
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name="ezztui",
|
name="ezztui",
|
||||||
version="2.0.0",
|
version="4.0.0",
|
||||||
scripts=["ezztui.py"],
|
py_modules=["ezztui"],
|
||||||
author="BarsTiger",
|
author="BarsTiger",
|
||||||
description="Easy TextUI creating package",
|
description="Easy TextUI creating package",
|
||||||
long_description=long_description,
|
long_description=long_description,
|
||||||
py_modules=["ezztui"],
|
license='MIT',
|
||||||
license='MIT',
|
url='https://github.com/BarsTiger/ezztui',
|
||||||
url='https://github.com/BarsTiger/ezztui',
|
long_description_content_type="text/markdown",
|
||||||
long_description_content_type="text/markdown",
|
keywords=["textui", "curses", "tui", "autotui", "autoui", "autogui", "crossplatform"]
|
||||||
keywords=["textui", "curses", "tui", "autotui", "autoui", "autogui", "crossplatform"]
|
)
|
||||||
)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user