* Subview clean up * New Add/Remove event pattern * Using Logging * cleanup * Subview -> SubView * Test code cleanup. Killed many warnings. * Fix tznind feedback * Refactored AllViewTest helpers * Moved keyboard tests to parallel * Moved mouse tests to parallel * Moved view tests to parallel * Test code cleanup. Killed many warnings. * dupe test * Some mouse tests can't run in parallel because MouseGrabView * Made SpinnerView more testable * Moved more tests * SubViews to IReadOnlyCollection<View> * SubViews to IReadOnlyCollection<View> 2 * scrollbar tests * shortcut tests * Use InternalSubViews vs. _subviews * Nuked View.IsAdded. Added View.SuperViewChanged. * API doc updats * Unit Test tweak * Unit Test tweak
2.7 KiB
View Deep Dive
View Lexicon & Taxonomy
Hierarchy
-
@"Terminal.Gui.View" - The base class for implementing higher-level visual/interactive Terminal.Gui elements. Implemented in the @Terminal.Gui.View base class.
-
SubView - A View that is contained in another view and will be rendered as part of the containing view's ContentArea. SubViews are added to another view via the @"Terminal.Gui.View.Add(Terminal.Gui.View)" method. A View may only be a SubView of a single View. Each View has a @Terminal.Gui.View.SubViews property that is a list of all SubViews that have been added.
-
@"Terminal.Gui.View.SuperView" - The View that is a container for SubViews. Each View has a @Terminal.Gui.View.SuperView property that references it's SuperView after it has been added.
-
Child View - A view that holds a reference to another view in a parent/child relationship. Terminal.Gui uses the terms "Child" and "Parent" sparingly. Generally SubView/SuperView is preferred.
-
Parent View - A view that holds a reference to another view in a parent/child relationship, but is NOT a SuperView of the child. Terminal.Gui uses the terms "Child" and "Parent" sparingly. Generally SubView/SuperView is preferred.
Input
See the Keyboard Deep Dive and Mouse Deep Dive.
Layout and Arrangement
See the Layout Deep Dive and the Arrangement Deep Dive.
Drawing
See the Drawing Deep Dive.
Navigation
See the Navigation Deep Dive.
Scrolling
See the Scrolling Deep Dive.
Application Concepts
-
TopLevel - The v1 term used to describe a view that can have a MenuBar and/or StatusBar. In v2, we will delete the
TopLevelclass and ensure ANY View can have a menu bar and/or status bar (viaAdornments).- NOTE: There will still be an
Application.Topwhich is the View that is the root of theApplication's view hierarchy.
- NOTE: There will still be an
-
Runnable - TBD
-
Modal - Modal - The term used when describing a View that was created using the
Application.Run(view)orApplication.Run<T>APIs. When a View is running as a modal, user input is restricted to just that View untilApplication.Runexits. AModalView has its ownRunState.- In v1, classes derived from
Dialogwere originally thought to only work modally. However,Wizardproved that aDialog-based class can also work non-modally. - In v2, we will simplify the
Dialogclass, and let any class be run viaApplicaiton.Run. TheModalproperty will be set byApplication.Runso the class can detect it is running modally if it needs to.
- In v1, classes derived from