vonshednob / cursedspace

A python library/framework for TUI application on the basis of the curses package.

Home Page:https://vonshednob.cc/cursedspace/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cursedspace

A python library/framework for TUI application on the basis of the curses package.

Installation

The project is available from pypi, so you just run

pip install cursedspace

And you’re set.

Example use

Here’s a very simple example of how to use the cursedspace package:

#!/usr/bin/env python3

import curses
from cursedspace import Application, Key, Panel, colors


class DemoApplication(Application):
    def __init__(self):
        super().__init__()
        self.panel = None

    def main(self):
        self.panel = Panel(self)
        self.resize()

        self.screen.addstr(0, 0, "Just some color example", colors.attr(colors.RED))

        while True:
            curses.doupdate()

            key = self.read_key()

            if key == Key.RESIZE:
                self.resize()
            elif key in [Key.ESCAPE, "q", "^C"]:
                break

    def resize(self):
        height, width = self.size()
        self.panel.resize(height, width)
        self.panel.paint()


# run the application
DemoApplication().run()

For more examples see the examples folder.

Components

  • Application is the main application class and provides boilerplate initialisations
  • Panel is a basic panel with support for borders and key handling in the context of an Application
  • InputLine is a panel with very basic editing support.
  • Key provides a convenient wrapper around curses’ key system. It can be used standalone even when you don’t want to use Application or Panel.
  • ShellContext is a convenient wrapper to execute external processes (e.g. through subprocess) and returning to the curses context afterwards again.
  • colors is a generic way to define colors in pairs (foreground and background) and have them automatically registerd for use in curses. You only have to call colors.attr(ColorPair(...)) to use a new color combination (limited by the terminal, of course).

Alright, but where’s the code?

The code is available from pypi or from this project’s repository over at codeberg.

About

A python library/framework for TUI application on the basis of the curses package.

https://vonshednob.cc/cursedspace/

License:MIT License


Languages

Language:Python 100.0%