curses
| Vývojář | Ken Arnold |
|---|---|
| První vydání | 1978[1] |
| Vyvíjeno v | C |
| Typ softwaru | Widget toolkit |
| Některá data mohou pocházet z datové položky. | |
curses je knihovna pro ovládání terminálů pro unixové systémy umožňující vytvářet aplikace s pokročilým textovým uživatelským rozhraním (TUI). Knihovna obsahuje funkce, které řídí zobrazování na terminálech s znakovými buňkami (např. VT100) a v terminálových emulátorech.[2]
Její název, který v angličtině znamená „kletby“ je hříčkou na spojení „optimalizace kurzoru“.[3]
Schválenou náhradou za klasické curses z 4.4BSD je knihovna ncurses.[zdroj?]
Úvod
[editovat | editovat zdroj]Knihovna curses umožňuje programátorům vytvářet aplikace pro textový uživatelské rozhraní, které mohou pracovat s různými typy terminálů a terminálových emulátorů; protože knihovna produkuje řídicí sekvence pro nastavený typ terminálu. Poskytuje abstrakci jednoho nebo více oken, která převádí na obrazovku terminálů. Každé okno je reprezentováno maticí znaků. Programátor nastaví požadovaný vzhled každého okna, a pak řekne knihovně curses, aby aktualizovala obrazovku. Knihovna určí minimální sadu změn, které jsou potřebné pro aktualizaci obrazovky a tyto změny pak provede pomocí funkcionalit a řídicích posloupností pro nastavený terminál.
To znamená, že programátor vytvoří znakovou matice, jak má vypadat obrazovka a nechá curses, aby ji vykreslily.
API knihovny curses je popsané na několika místech.[4] Většina implementací curses používá databázi, které umožňuje popsat funkcionality tisíců různých terminálů. Existuje několik implementací, jako PDCurses, které používají specializované ovladače zařízení místo databáze terminálů. Většina implementací používá pro popis schopností terminálů terminfo; některé používají termcap. Výhodou curses je zpětná portabilita na terminály se znakovými buňkami a jednoduchost. U aplikací, které nevyžadují bitově mapovanou grafiku nebo více fontů, je implementace rozhraní pomocí curses obvykle mnohem jednodušší a rychlejší než použití X toolkitu.
Historie
[editovat | editovat zdroj]První knihovnu curses napsal Ken Arnold a byla vydána s BSD Unixem, kde byla použita pro několik her, především Rogue.[5][6][7] V 90. letech 20. století byla provedena určitá vylepšení BSD knihovny vydaná jako „4.4BSD“ curses; např. více než jeden typ zvýrazňování,[zdroj?] která však nejsou příliš používána.
Není pravda, že curses byly používány editorem vi; ve skutečnosti byl kód pro optimalizaci pohybu kurzoru byl do curses převzat z vi, který je starší než curses.[6]
Berny Goodheart uvádí, že Ken Arnold zahájil původní implementaci curses přebíráním funkcí z knihovny termcap, ke kterým přidával další funkčnost.[8] O několik let později Mary Ann Hortonová, která udržovala zdrojové texty editoru vi a knihovny termcap v Berkeley, odešla do AT&T Corporation a vytvořila různé verze, které používaly terminfo a staly se součástí UNIX System III a UNIX System V. Kvůli licenčním omezením UNIX System V byly BSD a AT&T verze knihovna vyvinuty nezávisle. Kromě vylepšení termcap/terminfo byla v AT&T verzi zavedena další vylepšení:
- zvýrazňování písma (polotučné, podtržené)
- BSD verze podporovala pouze standout.
- kreslení čar
- BSD verze v této oblasti poskytovala jen malou podporu.
- barvy
- v BSD verzi nebyly podporované.
Vývoj knihovny AT&T curses se zřejmě zastavil v polovině 90. let, kdy byla definována knihovna X/Open Curses.[9] Správce BSD, Keith Bostic, v roce 1995 oficiálně doporučoval používat ncurses místo knihovny curses.[10]
Nepotvrzeno. Vývoj ncurses a PDCurses pokračuje. Verze BSD curses je stále udržována v operačním systému NetBSD (podpora širokých znaků, migrace od termcap k terminfo, atd.).
Pcurses a PDCurses
[editovat | editovat zdroj]Existuje několik implementací knihoven se stejným rozhraním jako curses společnosti AT&T: pcurses vyvíjel Pavel Curtis od roku 1982, PDCurses (Public Domain curses) vyvíjel od roku 1987 Mark Hessling pro svůj Hessling Editor stejně jako Rexx/Curses,[11] a PC curses (do verze 1.4 byl autorem Björn Larsson inspirovaný knihovou, kterou napsal Pavel Curtis před rokem 1990).[12][13]Šablona:Discuss
Ncurses
[editovat | editovat zdroj]ncurses (nové curses) „byly vytvořeny jako pcurses ... a na konci roku 1993 byly znovu vydané jako ncurses 1.8.1“.[14] ncurses je nejznámější implementace curses, a motivovala vývoj dalších variant, jako BSD curses v projektu NetBSD.[15][16]
Portabilita
[editovat | editovat zdroj]Přestože knihovna ncurses byl vyvinuta pod Linuxem, OpenBSD, FreeBSD, a NetBSD, Thomas Dickey a další ji portovali na mnoho jiných ANSI/POSIX unixových systémů. PDCurses implementují stejné funkce a fungují stejným způsobem jako ncurses, ale nejsou identické s ncurses, protože jsou určeny pro jiná zařízení, např. textové rozhraní systému DOS, konzolové rozhraní Win32, OS/2 nebo X11. Přenos programů mezi ncurses a PDCurses není obtížný. Například hra Ancient Domains of Mystery (ADOM) vycházející z Rogue byla napsána pro Linux a ncurses a později portována na DOS s PDCurses.[17][18]
Ukázky rozhraní
[editovat | editovat zdroj]Aplikace
[editovat | editovat zdroj]Knihovna curses zpřístupňuje v TUI prvky navržené pro grafická rozhraní, které je tak možné používat např. na PC v režimu konzole, na hardwarových ANSI terminálech, při přihlášení pomocí protokolu telnet nebo SSH apod.
Uživatelské rozhraní programů využívajících curses se často podobá grafickému uživatelskému rozhraní, včetně používání ovládacích prvků (widgetů) jako jsou textová pole (text box), kombinovaná pole (combo box) a výběrové seznamy (list box) místo klasického rozhraní příkazového řádku (CLI), které je na zařízeních pracujících pouze v textovém režimu nejrozšířenější. Díky tomu bývají tyto programy uživatelsky přívětivější, i když mohou běžet na zařízení, které má pouze textový výstup. Programy používající curses mohou být menší a fungovat na více typech počítačů než programy s GUI, např. na počítačích vyrobených před rokem 1990 nebo na moderních vestavěných systémech s textovými zobrazovači.
Curses se nejčastěji používá na unixových operačních systémech, i když existují i implementace pro Microsoft Windows.
Odkazy
[editovat | editovat zdroj]Reference
[editovat | editovat zdroj]V tomto článku byl použit překlad textu z článku curses (programming library) na anglické Wikipedii.
- ↑ CRADDOCK, David L. Procedural Dungeons of Doom: The Making of Rogue – Chapter 3 [online]. 2016-06-17 [cit. 2023-05-18]. Dostupné online.
- ↑ DICKEY, Thomas E. NCURSES - Frequently Asked Questions [online]. Dostupné online.
- ↑ DICKEY, Thomas E. NCURSES - Frequently Asked Questions [online]. Dostupné online.
- ↑ STRANG, John, 1991. Programming with curses. [s.l.]: O'Reilly. Dostupné online. ISBN 0-937175-02-1.
- ↑ SALUS, Peter H. The history of Unix is as much about collaboration as it is about technology [online]. Byte, October 1994. Dostupné online.
- 1 2 ARNOLD, K. C. R. C., 1977. Screen Updating and Cursor Movement Optimization: A Library Package.. [s.l.]: University of California, Berkeley.
- ↑ ARNOLD, Kenneth C. R. C.; AMIR, Elan. Screen Updating and Cursor Movement Optimization: A Library Package [online]. December 1992. Dostupné online.
- ↑ GOODHEART, Berny, 1991. UNIX Curses Explained. [s.l.]: Prentice Hall. Dostupné online. ISBN 0-13-931957-3. S. xi.
- ↑ , 1997. X/Open Curses, Issue 4 Version 2, Reference Pages [online]. The Open Group, 1997. Dostupné online.
- ↑ RAYMOND, Eric S. ncurses: Portable Screen-Handling for Linux [online]. Linux Journal, 1995-09-01 [cit. 2023-05-18]. Dostupné online.
- ↑ HESSLING, Mark, 2008. Rexx/Curses [online]. SourceForgeproject rexxcurses, 2008 [cit. 2014-02-10]. Dostupné online.
- ↑ ELLERMANN, F. CURSES.NEW in pccurses.zip [online]. 1993-07-26 [cit. 2014-02-10]. Vycházela z PC curses (verze 1.4), které napsal Björn Larsson. Dostupné online.[nedostupný zdroj]
- ↑ LARSSON, Björn. README.NOW in pccurs14.zip [online]. 1990-01-14 [cit. 2014-02-10]. PCcurses je port/přepisovat of Pavel Curtis' [balíček]. Dostupné v archivu pořízeném dne 2014-02-23.
- ↑ DICKEY, Thomas E. NCURSES - New Curses [online]. December 1996. Dostupné online.
- ↑ NetBSD project. CURSES_SCREEN(3), NetBSD Library Functions Manual [online]. February 2004. Dostupné online.
- ↑ QIU, Ruibiao. NetBSD-SoC: Wide Character Support in NetBSD curses Library [online]. September 2005. Dostupné online.
- ↑ BISKUP, Thomas. ADOM - The Past [online]. 1994–2007 [cit. 2007-11-16]. Dostupné v archivu pořízeném dne 2007-10-10.
- ↑ BISKUP, Thomas. New Game: ADOM (MS-DOS, MS-Windows, and Linux only) [online]. rec.games.roguelike.announce, 1996-03-15 [cit. 2007-11-16]. Dostupné online.
Související články
[editovat | editovat zdroj]Externí odkazy
[editovat | editovat zdroj]- NCURSES - Manual Pages
- Curses tutorial Archivováno 28. 5. 2005 na Wayback Machine. (PDF formát)
- Public Domain Curses
- Interface for Rexx programmers
- Tcl Toolkit
- X/Open Curses
- Curses for Python
- NetBSD Curses main manual page Archivováno 8. 8. 2014 na Wayback Machine.
- X/Open Curses, Issue 4, Version 2, 1996, opengroup.org
- X/Open Curses, Issue 7, 2009, opengroup.org