Skip to main content

Galaxie Curses is a free software ToolKit for the NCurses API

Project description

Documentation Status pipeline status coverage report codecov

Galaxie Curses, The ToolKit

Once upon a time, this project was hosted on a ancient platform called GitHub. Then came the Buyer. The Buyer bought GitHub, willing to rule over its community.

I was not to sell, so here is the new home of "https://github.com/Tuuux/galaxie-curses".

The Project

Galaxie Curses alias Le Truc Blue (The Blue Thing) is a free software Tool Kit for the NCurses API. It can be consider as a text based implementation of the famous GTK+ Library (Or Ultra Inspired...).

Where implementation mean: Devellop a project from a documentation specs.

Originally the project have start in 2016 by author Jérôme.O.

Then the lib is write in Python

Installation

Pre Version: pip install galaxie-curses
Dev Version: pip install -i https://test.pypi.org/simple/ galaxie-curses

Documentation:

The Mission

Provide a Text Based ToolKit with powerfull high level Widget (Select Color, Printer Dialog, FileSelector).

During lot of years the main stream was to provide big computer with big GUI Toolkit, unfortunately almost nobody have care about ultra low profile computer and we are now in a situation where no mature ToolKit is ready to use on pen computer. Time's change then it's time to change the world ...

The goal of the version 1.0 will be to create a application like Midnight-Commander with GLXCurses.

Midnight-Commander: https://midnight-commander.org

The Lib should have no dependency , then consider Applications will come with they own dependency.

Contribute

You welcome !!!

The GTK+ v3 documentation is our model: https://developer.gnome.org/gtk3/stable/

It's almost impossible to code widget without UnitTest, that because eyes can't easily control background operations.

Screenshots

ProgressBar demo

Mini Commander (MC UI Clone)

Label with markdown

v0.3rc1

v0.2

Example

v0.2

#!/usr/bin/env python
import GLXCurses

if __name__ == '__main__':

    # Create the main Application
    app = GLXCurses.Application()

    # Create a Label
    label = GLXCurses.Label()
    label.set_markdown("Hello **World** !!!")
    label.set_single_line_mode(True)

    # Create the main Window and add our Label inside
    win = GLXCurses.Window()
    win.add(label)


    def handle_keys(self, event_signal, *event_args):
        if event_args[0] == ord('q'):
            # Everything have a end, the main loop too ...
            # Control + C work automatically
            GLXCurses.mainloop.stop()


    # Add Everything inside the Application
    app.add_window(win)

    # Connect the application to Curses event
    app.connect('CURSES', handle_keys)

    # Main loop
    GLXCurses.mainloop.start()

More examples can be found here: https://gitlab.com/Tuuux/galaxie-curses/tree/master/examples

Features

  • MainLoop from EveLoop
  • EventBus from EveLoop
  • Signal based
  • Application Class
  • Component like Button, Container, ProgressBar, Image
  • Have GTK+ design as roadmap
  • Auto Resize
  • Minimize NCurses crash
  • Common thing for a text based graphic interface tool kit :)
  • Use RGB color (255, 0, 255)
  • Image Widget
  • Label can use MarkDown

Roadmap

Galaxie-Curses is a Text Based GTK+ like, then the GTK+ Doc is the roadmap.

Yes NCurses haven't icons or pixel management :) , then chars replace pixel. Each sizes x, y , height, width are in chars value.

  • 100% Test Code Coverage
  • Add Video Widget
  • Ultra Low Power usage.
  • Widget over SSH
  • DBus integration
  • Audio
  • Data to Audio file for backup or long distance radio
  • Build Application via YAML file (it have been report about a low TUI must have light programation style)
  • Every Examples should be a small and efficient Desktop component, Calc, Config Panel, File Explorer, Panel, etc ...
  • Widget capability to save information's
  • Look like MC similar to GTK code

Note that actually a Curses Window Manager is not on the pipe. Everything is ready for ...

How that possible

I don't know if one day i'll finish the lib. I do my best for that.

Unfortunately GLXCurses is not a GTK Clone it will take too mush time for one guy to make it possible. For minimize the effort i implement property and Widget class with the same GTK+ design.

I consider haven't the enginier level to create a UI design by my self, then i have choose GTK Documentation as specs.

GTK Method's are implemented only if that really require. The lib use massively properties getter and setter decorator, for limit the need of method.

For be brief it take advantage of Python object where GTK use GLIBC and method's for make the same thing.

If a method is implemented, then it's a pure GTK+ implementation else the lib use a property in pure Python style.

Exemple:

widget = Widget.new()
widget.set_decorated(True)

is replace by

widget = Widget()
widget.decorated = True

I focus my effort to have capability to make MC clone with GLXCurses, and limit my effort to that direction. (yes i would like more too ...)

Note for GTK+ Project Developer's

I'm really confuse about the big copy/past i making from the GTK+ documentation during the creation of the Galaxie-Curse documentation, that because english is not my primary language and i'm a bit limited for make a ToolKit documentation without that ... Consider that actual documentation of Galaxie-Curse as the better i can do and it include to copy/past large parts of the GTK+ documentation. (sorry about that)

As you probably see Galaxie-Curses is a Text Based GTK+ with a hard dependency to the GTK+ documentation.

Thanks

To everyone i have interrest to it project, copy it, use it, diffuse it , and have fun ...

All Galaxie API is develop with pycharm as IDE from JetBrains link: https://www.jetbrains.com

JetBrains graciously have provide to us licenses for pycharm profesional

License

GNU GENERAL PUBLIC LICENSE Version 3 https://gitlab.com/Tuuux/galaxie-curses/blob/master/LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

galaxie-curses-0.3.5.tar.gz (244.8 kB view details)

Uploaded Source

File details

Details for the file galaxie-curses-0.3.5.tar.gz.

File metadata

  • Download URL: galaxie-curses-0.3.5.tar.gz
  • Upload date:
  • Size: 244.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/54.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.9.2

File hashes

Hashes for galaxie-curses-0.3.5.tar.gz
Algorithm Hash digest
SHA256 1ac08e11e0e9e44f76dfba69d0d58c9f84b1fe95f782e1f607bc1c9ac74f84fc
MD5 02c2a7f8aee1e8d8c61d579b814200cd
BLAKE2b-256 6bd2e7fc0ee83a8c40e19be4d043783cf2293c8e5a0c8b3d62fdd4d4981f904a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page