mirror of
https://github.com/jtdaugherty/brick.git
synced 2024-08-17 03:40:23 +03:00
This change fixes a bug where it was possible to parse and construct key bindings for capitalized characters with modifiers, thus leading to unusable bindings in terminal applications. This is because a binding like Ctrl-X can never be generated by a terminal because it always arrives as Ctrl-x Prior to this patch, if a user wrote "Ctrl-X" in a keybinding configuration file or used the library API to construct such a binding, it would be accepted but would lead to a binding that was never usable at runtime for the reason explained above. This patch updates the library API to always normalize constructed and parsed key bindings to lowercase when modifiers are present.
590 lines
17 KiB
Plaintext
590 lines
17 KiB
Plaintext
name: brick
|
|
version: 2.3.2
|
|
synopsis: A declarative terminal user interface library
|
|
description:
|
|
Write terminal user interfaces (TUIs) painlessly with 'brick'! You
|
|
write an event handler and a drawing function and the library does the
|
|
rest.
|
|
.
|
|
.
|
|
> module Main where
|
|
>
|
|
> import Brick
|
|
>
|
|
> ui :: Widget ()
|
|
> ui = str "Hello, world!"
|
|
>
|
|
> main :: IO ()
|
|
> main = simpleMain ui
|
|
.
|
|
.
|
|
To get started, see:
|
|
.
|
|
* <https://github.com/jtdaugherty/brick/blob/master/README.md The README>
|
|
.
|
|
* The <https://github.com/jtdaugherty/brick/blob/master/docs/guide.rst Brick user guide>
|
|
.
|
|
* The demonstration programs in the 'programs' directory
|
|
.
|
|
.
|
|
This package deprecates <http://hackage.haskell.org/package/vty-ui vty-ui>.
|
|
license: BSD3
|
|
license-file: LICENSE
|
|
author: Jonathan Daugherty <cygnus@foobox.com>
|
|
maintainer: Jonathan Daugherty <cygnus@foobox.com>
|
|
copyright: (c) Jonathan Daugherty 2015-2024
|
|
category: Graphics
|
|
build-type: Simple
|
|
cabal-version: 1.18
|
|
Homepage: https://github.com/jtdaugherty/brick/
|
|
Bug-reports: https://github.com/jtdaugherty/brick/issues
|
|
tested-with: GHC == 8.2.2
|
|
|| == 8.4.4
|
|
|| == 8.6.5
|
|
|| == 8.8.4
|
|
|| == 8.10.7
|
|
|| == 9.0.2
|
|
|| == 9.2.8
|
|
|| == 9.4.8
|
|
|| == 9.6.3
|
|
|| == 9.8.1
|
|
|
|
extra-doc-files: README.md,
|
|
docs/guide.rst,
|
|
docs/snake-demo.gif,
|
|
CHANGELOG.md,
|
|
programs/custom_keys.ini
|
|
|
|
Source-Repository head
|
|
type: git
|
|
location: git://github.com/jtdaugherty/brick.git
|
|
|
|
Flag demos
|
|
Description: Build demonstration programs
|
|
Default: False
|
|
|
|
library
|
|
default-language: Haskell2010
|
|
ghc-options: -Wall -Wcompat -O2 -Wunused-packages
|
|
default-extensions: CPP
|
|
hs-source-dirs: src
|
|
exposed-modules:
|
|
Brick
|
|
Brick.AttrMap
|
|
Brick.BChan
|
|
Brick.BorderMap
|
|
Brick.Keybindings
|
|
Brick.Keybindings.KeyConfig
|
|
Brick.Keybindings.KeyEvents
|
|
Brick.Keybindings.KeyDispatcher
|
|
Brick.Keybindings.Normalize
|
|
Brick.Keybindings.Parse
|
|
Brick.Keybindings.Pretty
|
|
Brick.Focus
|
|
Brick.Forms
|
|
Brick.Main
|
|
Brick.Themes
|
|
Brick.Types
|
|
Brick.Util
|
|
Brick.Widgets.Border
|
|
Brick.Widgets.Border.Style
|
|
Brick.Widgets.Center
|
|
Brick.Widgets.Core
|
|
Brick.Widgets.Dialog
|
|
Brick.Widgets.Edit
|
|
Brick.Widgets.FileBrowser
|
|
Brick.Widgets.List
|
|
Brick.Widgets.ProgressBar
|
|
Brick.Widgets.Table
|
|
Data.IMap
|
|
other-modules:
|
|
Brick.Types.Common
|
|
Brick.Types.TH
|
|
Brick.Types.EventM
|
|
Brick.Types.Internal
|
|
Brick.Widgets.Internal
|
|
|
|
build-depends: base >= 4.9.0.0 && < 4.21.0.0,
|
|
vty >= 6.0,
|
|
vty-crossplatform,
|
|
bimap >= 0.5 && < 0.6,
|
|
data-clist >= 0.1,
|
|
directory >= 1.2.5.0,
|
|
exceptions >= 0.10.0,
|
|
filepath,
|
|
containers >= 0.5.7,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl,
|
|
mtl,
|
|
config-ini,
|
|
vector,
|
|
stm >= 2.4.3,
|
|
text,
|
|
text-zipper >= 0.13,
|
|
template-haskell,
|
|
deepseq >= 1.3 && < 1.6,
|
|
unix-compat,
|
|
bytestring,
|
|
word-wrap >= 0.2
|
|
|
|
executable brick-custom-keybinding-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: CustomKeybindingDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
text,
|
|
vty,
|
|
containers,
|
|
microlens,
|
|
microlens-mtl,
|
|
microlens-th
|
|
|
|
executable brick-table-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: TableDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
text,
|
|
vty
|
|
|
|
executable brick-tail-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: TailDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
text,
|
|
vty,
|
|
vty-crossplatform,
|
|
random,
|
|
microlens-th,
|
|
microlens-mtl
|
|
|
|
executable brick-readme-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: ReadmeDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
text
|
|
|
|
executable brick-file-browser-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: FileBrowserDemo.hs
|
|
build-depends: base,
|
|
vty,
|
|
brick,
|
|
text,
|
|
mtl
|
|
|
|
executable brick-form-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: FormDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
text,
|
|
microlens,
|
|
microlens-th,
|
|
vty-crossplatform,
|
|
vty
|
|
|
|
executable brick-text-wrap-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: TextWrapDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
text,
|
|
word-wrap
|
|
|
|
executable brick-cache-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: CacheDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
mtl
|
|
|
|
executable brick-visibility-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: VisibilityDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl
|
|
|
|
executable brick-viewport-scrollbars-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: ViewportScrollbarsDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
vty-crossplatform,
|
|
text,
|
|
microlens,
|
|
microlens-mtl,
|
|
microlens-th
|
|
|
|
executable brick-viewport-scroll-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
default-extensions: CPP
|
|
main-is: ViewportScrollDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-dialog-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: DialogDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-mouse-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: MouseDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl,
|
|
text-zipper,
|
|
mtl
|
|
|
|
executable brick-layer-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: LayerDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl
|
|
|
|
executable brick-suspend-resume-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: SuspendAndResumeDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th
|
|
|
|
executable brick-cropping-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: CroppingDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-padding-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: PaddingDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-theme-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: ThemeDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
mtl,
|
|
microlens
|
|
|
|
executable brick-attr-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: AttrDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-tabular-list-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: TabularListDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-mtl,
|
|
microlens-th,
|
|
mtl,
|
|
vector
|
|
|
|
executable brick-list-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: ListDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-mtl,
|
|
mtl,
|
|
vector
|
|
|
|
executable brick-list-vi-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: ListViDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-mtl,
|
|
mtl,
|
|
vector
|
|
|
|
executable brick-custom-event-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: CustomEventDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl
|
|
|
|
executable brick-fill-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: FillDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-hello-world-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: HelloWorldDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-edit-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: EditDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
vector,
|
|
mtl,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl
|
|
|
|
executable brick-editor-line-numbers-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-language: Haskell2010
|
|
main-is: EditorLineNumbersDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
vector,
|
|
mtl,
|
|
microlens >= 0.3.0.0,
|
|
microlens-th,
|
|
microlens-mtl
|
|
|
|
executable brick-border-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-extensions: CPP
|
|
default-language: Haskell2010
|
|
main-is: BorderDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-dynamic-border-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-extensions: CPP
|
|
default-language: Haskell2010
|
|
main-is: DynamicBorderDemo.hs
|
|
build-depends: base <= 5,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens
|
|
|
|
executable brick-progressbar-demo
|
|
if !flag(demos)
|
|
Buildable: False
|
|
hs-source-dirs: programs
|
|
ghc-options: -threaded -Wall -Wcompat -O2
|
|
default-extensions: CPP
|
|
default-language: Haskell2010
|
|
main-is: ProgressBarDemo.hs
|
|
build-depends: base,
|
|
brick,
|
|
vty,
|
|
text,
|
|
microlens,
|
|
microlens-mtl,
|
|
microlens-th
|
|
|
|
test-suite brick-tests
|
|
type: exitcode-stdio-1.0
|
|
hs-source-dirs: tests
|
|
ghc-options: -Wall -Wcompat -Wno-orphans -O2
|
|
default-language: Haskell2010
|
|
main-is: Main.hs
|
|
other-modules: List Render
|
|
build-depends: base <=5,
|
|
brick,
|
|
containers,
|
|
microlens,
|
|
vector,
|
|
vty,
|
|
vty-crossplatform,
|
|
QuickCheck
|