ncmultiselector_options structure #322

pull/404/head
nick black 4 years ago committed by Nick Black
parent 583906368c
commit 6060248968

@ -2201,6 +2201,7 @@ API void ncplane_greyscale(struct ncplane* n);
// selection widget -- an ncplane with a title header and a body section. the
// body section supports infinite scrolling up and down. the widget looks like:
//
// ╭──────────────────────────╮
// │This is the primary header│
// ╭──────────────────────this is the secondary header──────╮
@ -2276,6 +2277,50 @@ API bool ncselector_offer_input(struct ncselector* n, const struct ncinput* nc);
// be strdup()ed and assigned to '*item' (and must be free()d by the caller).
API void ncselector_destroy(struct ncselector* n, char** item);
// multiselection widget -- a selector supporting multiple selections.
//
// ╭──────────────────────────╮
// │This is the primary header│
// ╭──────────────────────this is the secondary header──────╮
// │ │
// │ [ ] option1 Long text #1 │
// │ [X] option2 Long text #2 │
// │ [ ] option3 Long text #3 │
// │ [ ] option4 Long text #4 │
// │ [X] option5 Long text #5 │
// │ [ ] option6 Long text #6 │
// │ │
// ╰────────────────────────────────────here's the footer───╯
//
// Unlike the selector widget, zero to all of the items can be selected, but
// also the widget does not support adding or removing items at runtime.
typedef struct multiselector_options {
char* title; // title may be NULL, inhibiting riser, saving two rows.
char* secondary; // secondary may be NULL
char* footer; // footer may be NULL
struct selector_item* items; // initial items and descriptions
unsigned itemcount; // number of items and descriptions, can't be 0
// maximum number of options to display at once, 0 to use all available space
unsigned maxdisplay;
// exhaustive styling options
uint64_t opchannels; // option channels
uint64_t descchannels; // description channels
uint64_t titlechannels;// title channels
uint64_t footchannels; // secondary and footer channels
uint64_t boxchannels; // border channels
uint64_t bgchannels; // background channels, used only in body
} multiselector_options;
struct ncmultiselector;
API struct ncmultiselector* ncmultiselector_create(struct ncplane* n, int y, int x,
const selector_options* opts);
// FIXME
// Destroy the ncmultiselector.
API void ncmultiselector_destroy(struct ncmultiselector* n, char** item);
// Menus. Horizontal menu bars are supported, on the top and/or bottom rows.
// If the menu bar is longer than the screen, it will be only partially
// visible. Menus may be either visible or invisible by default. In the event of

Loading…
Cancel
Save