diff --git a/README.md b/README.md index c67a8c6..9efc50e 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ import ezztui menu = { 'First menu': {'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 4': 'ezztui_return_value', 'Function 5': 'ezztui_return_value', diff --git a/ezztui.py b/ezztui.py index 84682ba..0b1dc87 100644 --- a/ezztui.py +++ b/ezztui.py @@ -1,6 +1,9 @@ import os + + def check_curses(): - import subprocess, sys + import subprocess + import sys try: import curses except: @@ -9,15 +12,18 @@ def check_curses(): try: import curses -except: +except ImportError: check_curses() + def cls(): os.system('cls' if os.name == 'nt' else 'clear') + def softcls(): print("\n" * (os.get_terminal_size().lines * 2)) + def center_message(text: str): print("\n" * (os.get_terminal_size().lines // 2 - 2)) print(" " * ((os.get_terminal_size().columns//2 - (len(text)//2)) - 1) + text) @@ -25,6 +31,7 @@ def center_message(text: str): input() cls() + def center_multiline(text: list): print("\n" * ((os.get_terminal_size().lines // 2 - (len(text) // 2)) - 1)) for line in text: @@ -33,6 +40,7 @@ def center_multiline(text: list): input() cls() + def menu(menulist: dict): def print_menu(stdscr, selected_row_idx, menu): stdscr.clear() @@ -80,17 +88,14 @@ def menu(menulist: dict): elif key == curses.KEY_DOWN and current_row == len(currentmenu) - 1: 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]) currentmenu = currentmenu[list(currentmenu.keys())[current_row]] break - elif key == curses.KEY_ENTER or key in [10, 13] and currentmenu[list(currentmenu.keys())[current_row]] in ['ezztui_return_value', 'return']: - menupath.append(list(currentmenu)[current_row]) - 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']: + 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:] try: currentmenu = menulist[list(menupath)[0]] @@ -101,9 +106,18 @@ def menu(menulist: dict): mainmenu(stdscr) 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() + 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) while returning is None: diff --git a/setup.py b/setup.py index e6c822d..e9fe8cb 100644 --- a/setup.py +++ b/setup.py @@ -1,18 +1,17 @@ from setuptools import setup with open("README.md", "r") as fh: - long_description = fh.read() + long_description = fh.read() setup( - name="ezztui", - version="2.0.0", - scripts=["ezztui.py"], - author="BarsTiger", - description="Easy TextUI creating package", - long_description=long_description, - py_modules=["ezztui"], - license='MIT', - url='https://github.com/BarsTiger/ezztui', - long_description_content_type="text/markdown", - keywords=["textui", "curses", "tui", "autotui", "autoui", "autogui", "crossplatform"] -) \ No newline at end of file + name="ezztui", + version="4.0.0", + py_modules=["ezztui"], + author="BarsTiger", + description="Easy TextUI creating package", + long_description=long_description, + license='MIT', + url='https://github.com/BarsTiger/ezztui', + long_description_content_type="text/markdown", + keywords=["textui", "curses", "tui", "autotui", "autoui", "autogui", "crossplatform"] +)