Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement notcurses-dialog ("colloquy") #320

Closed
dankamongmen opened this issue Feb 5, 2020 · 7 comments
Closed

implement notcurses-dialog ("colloquy") #320

dankamongmen opened this issue Feb 5, 2020 · 7 comments
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request nonfix closed without a successful fix (invalid, wontfix)
Milestone

Comments

@dankamongmen
Copy link
Owner

the bearded class will recognize "dialog" as an ncurses input tool, distributed with ncurses (see https://invisible-island.net/ncurses/ncurses.faq.html#related_programs). we ought do a prettier one, and ship it as notcurses-dialog.

@dankamongmen dankamongmen self-assigned this Feb 5, 2020
@dankamongmen dankamongmen added documentation Improvements or additions to documentation enhancement New feature or request labels Feb 5, 2020
@dankamongmen
Copy link
Owner Author

       Dialog is a program that will let you present a variety of questions or
       display messages using dialog boxes from a shell script.   These  types
       of  dialog  boxes  are implemented (though not all are necessarily com‐
       piled into dialog):

              buildlist, calendar, checklist, dselect, editbox, form, fselect,
              gauge, infobox, inputbox, inputmenu, menu, mixedform,
              mixedgauge, msgbox (message), passwordbox, passwordform, pause,
              prgbox, programbox, progressbox, radiolist, rangebox, tailbox,
              tailboxbg, textbox, timebox, treeview, and yesno (yes/no).

that's quite a few widgets, heh

@dankamongmen dankamongmen added this to the 1.3.0 milestone Feb 18, 2020
@dankamongmen
Copy link
Owner Author

just as an idea, we could do this in Rust (see #101 )

@dankamongmen
Copy link
Owner Author

alright, after looking at whiptail, some notes:

  • its only placement option is --topleft. gag me. provide at least --vert {top, middle, bottom} and --horiz {left, middle, right}. maybe provide absolute yx. maybe provide offsets.
  • by default, we will (a) not use the alternate screen and (b) use only the necessary part of the screen, and (c) be semi-transparent
  • it requires providing a height and width, gaaaaaaaag, and if you provide unsuitable ones, it generates garbage, GAG. by default we will make the minimum box necessary for the provided options. we will allow the user to overrule this, and hard fail if they give bad arguments.
  • inputbox...we'll need a lower-level object to implement this, perhaps integrating readline
  • i think we ought provide a runtime or time/date, so that machines don't look locked up (make this optional, obviously)
  • scrollbars

dialog has a lot more stuff: calendar, menu, treeview, tailbox, and more...

@dankamongmen
Copy link
Owner Author

i like dialog's --file argument, allowing you to provide all other arguments via file. implement that with a unified parser against the CLI, and it's a righteous dub. it looks like both dialog and whiptail accept 0 for the size arguments to produce a minimal one, which is nice, but i'd rather it just be the default.

dialog when provided --colors interprets a 'Zcode' allowing inline style specifiers. it seems reasonable enough, i guess. unnecessary, though?

--no-items is an interesting option. i think we already do that, though, in our selector widget?

@dankamongmen
Copy link
Owner Author

i'm thinking it's maybe a good idea to hew to dialog's CLI, and be a drop-in replacement, unless there's a really good reason not to.

@dankamongmen
Copy link
Owner Author

this tool will be named colloquy, and it will (mostly) follow the dialog CLI. it will be written in rust. all the UI widgets will be written in the C notcurses core. it may only use rust dependencies which are available in debian.

  • add a CMake option regarding rust, default to true
  • build rust bindings as part of make
  • add debian packaging for rust bindings, build-deps
  • get cratespace for colloquy
  • build colloquy as part of make
  • implement dialog-like CLI in rust

@dankamongmen dankamongmen changed the title implement notcurses-dialog implement notcurses-dialog ("colloquy") Feb 18, 2020
@dankamongmen
Copy link
Owner Author

Last open issue for 1.3.0! It's a big fucker, though!

@dankamongmen dankamongmen added the nonfix closed without a successful fix (invalid, wontfix) label Apr 8, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request nonfix closed without a successful fix (invalid, wontfix)
Projects
None yet
Development

No branches or pull requests

1 participant