CrabUI
Loading...
Searching...
No Matches
CrabUI.CUIMainComponent Class Reference

Orchestrating drawing and updating of it's children
Also a CUIComponent, but it's draw and update methods Attached directly to games life cycle. More...

Inheritance diagram for CrabUI.CUIMainComponent:
CrabUI.CUIComponent CrabUI.ICUIComponent CrabUI.ISimpleProps CrabUI.IListProps CrabUI.ISerializationProps

Classes

class  CUIGlobalEvents
 Wrapper for global events. More...
 

Public Member Functions

record DrawEvent (CUIComponent Target, bool front=false)
 
void Step ()
 Forses 1 layout update step, even when Frozen.
 
void Update (double totalTime, bool force=false, bool noInput=false)
 
new void Draw (SpriteBatch spriteBatch)
 Here component should be drawn.
 
void OnDragEnd (CUIDragHandle h)
 
void OnResizeEnd (CUIResizeHandle h)
 
void OnSwipeEnd (CUISwipeHandle h)
 
void Load (Action< CUIMainComponent > initFunc)
 Obsolete function
Will run generator func with this.
 
void PrintRecalLimitWarning ()
 
- Public Member Functions inherited from CrabUI.CUIComponent
void AddAnimation (string name, CUIAnimation animation)
 
void BlockChildrenAnimations ()
 
void AttachTo (Item item, Action< Item, CUIComponent > callback=null)
 
void AddCommand (string name, Action< object > action)
 Manually adds command.
 
void RemoveCommand (string name)
 
void DispatchUp (CUICommand command)
 Dispathes command up the component tree until someone consumes it.
 
void DispatchDown (CUIData data)
 Dispathes command down the component tree until someone consumes it.
 
void Execute (CUICommand command)
 Will execute action corresponding to this command.
 
virtual partial void DrawFront (SpriteBatch spriteBatch)
 Method for drawing something that should always be on top, e.g. resize handles.
 
virtual partial void DrawFront (SpriteBatch spriteBatch)
 
 CUIComponent (float? x=null, float? y=null, float? w=null, float? h=null)
 
void Dispose ()
 
virtual void CleanUp ()
 
override string ToString ()
 
void PrintTree (string offset="")
 
void Info (object msg, [CallerFilePath] string source="", [CallerLineNumber] int lineNumber=0)
 Prints component and then message.
 
CUIComponent Remember (CUIComponent c, string name)
 
CUIComponent Remember (CUIComponent c)
 If it already has AKA.
 
CUIComponent Forget (string name)
 
CUIComponent Forget (CUIComponent c)
 If it already has AKA.
 
virtual CUIComponent Get (string name)
 Returns memorized component by name.
 
Get< T > (string name)
 
void CascadeRefresh ()
 
virtual bool IsPointOnTransparentPixel (Vector2 point)
 
virtual bool ShouldInvoke (CUIInput e)
 
void InvokeOnLayoutUpdated ()
 
record CompareResult (bool equal, string firstMismatch="")
 
CUIComponent Clone ()
 
void SaveStateAs (string name)
 
void LoadState (string name)
 
void ForgetState (string name)
 
void ApplyState (CUIComponent state)
 
virtual XElement ToXML (CUIAttribute propAttribute=CUIAttribute.CUISerializable)
 
virtual void FromXML (XElement element, string baseFolder=null)
 
string Serialize (CUIAttribute propAttribute=CUIAttribute.CUISerializable)
 
void LoadSelfFromFile (string path, bool searchForSpritesInTheSameFolder=true, bool saveAfterLoad=false)
 
void LoadFromTheSameFile ()
 
void SaveToTheSamePath ()
 
void SaveToFile (string path, CUIAttribute propAttribute=CUIAttribute.CUISerializable)
 
virtual void Hydrate ()
 Experimental method
Here you can add data/ callbacks/ save stuff to variables
after loading a xml skeletom.
 
virtual CUIComponent Append (CUIComponent child, string name=null, [CallerMemberName] string memberName="")
 Adds children to the end of the list.
 
virtual CUIComponent Prepend (CUIComponent child, string name=null, [CallerMemberName] string memberName="")
 Adds children to the begining of the list.
 
virtual CUIComponent Insert (CUIComponent child, int index, string name=null, [CallerMemberName] string memberName="")
 
void RemoveSelf ()
 
CUIComponent RemoveChild (CUIComponent child, [CallerMemberName] string memberName="")
 
void RemoveAllChildren ([CallerMemberName] string memberName="")
 
void MoveToFront ()
 Moves component to front in Parent.Children which makes it render after other childs.
 

Public Attributes

double UpdateInterval = 1.0 / 300.0
 
bool CalculateUntilResolved = true
 If true will update layout until it settles to prevent blinking.
 
int MaxLayoutRecalcLoopsPerUpdate = 10
 If your GUI needs more than this steps of layout update you will get a warning.
 
CUIDragHandle GrabbedDragHandle
 
CUIResizeHandle GrabbedResizeHandle
 
CUISwipeHandle GrabbedSwipeHandle
 
CUIComponent MouseOn
 
CUIGlobalEvents Global = new CUIGlobalEvents()
 Container for true global events CUIMainComponent itself can react to events and you can listen for those, but e.g. mouse events may be consumed before they reach Main.
 
- Public Attributes inherited from CrabUI.CUIComponent
Indexer< string, CUIAnimationAnimations
 
Dictionary< string, List< CUIComponent > > DataTargets = new()
 Consumers of emmited data, updates on tree change.
 
bool Disposed
 
bool ignoreDebug
 For debug frame itself.
 
CUIResizeHandle LeftResizeHandle = new CUIResizeHandle(new Vector2(0, 1), new CUIBool2(false, false))
 
CUIResizeHandle RightResizeHandle = new CUIResizeHandle(new Vector2(1, 1), new CUIBool2(true, false))
 

Properties

bool Frozen [get, set]
 Frozen window doesn't update.
 
Action AddOnTreeChanged [set]
 
CUIComponent FocusedComponent [get, set]
 
- Properties inherited from CrabUI.CUIComponent
AttachedItemHandle AttachedItemHandle [get, set]
 
string Command [get, set]
 This command will be dispatched up when some component specific event happens.
 
string Consumes [get, set]
 Will consume data with this name.
 
bool ReflectCommands [get, set]
 
bool RetranslateCommands [get, set]
 
ObservableCollection< string > Emits [get, set]
 Optimization to data flow
If not empty component will search for consumers of the data and pass it directly to them instead of broadcasting it.
 
Dictionary< string, Action< object > > Commands = new() [get, set]
 All commands.
 
static IEnumerable< CUIComponentAllComponents [get]
 
bool Debug [get, set]
 
bool IgnoreDebug [get, set]
 
string AKA [get, set]
 Parent can memorize it's children by their names, AKA.
 
Dictionary< string, CUIComponentNamedComponents = new() [get, set]
 All memorized components.
 
CUIComponent this[string name] [get, set]
 You can access NamedComponents with this indexer.
 
bool ConsumeMouseClicks [get, set]
 
bool ConsumeDragAndDrop [get, set]
 
bool ConsumeSwipe [get, set]
 
bool ConsumeMouseScroll [get, set]
 
Action< double > AddOnUpdate [set]
 
Action< CUIInputAddOnMouseLeave [set]
 
Action< CUIInputAddOnMouseEnter [set]
 
Action< CUIInputAddOnMouseDown [set]
 
Action< CUIInputAddOnMouseUp [set]
 
Action< CUIInputAddOnMouseMove [set]
 
Action< CUIInputAddOnMouseOn [set]
 
Action< CUIInputAddOnMouseOff [set]
 
Action< CUIInputAddOnClick [set]
 
Action< CUIInputAddOnDClick [set]
 
Action< CUIInputAddOnScroll [set]
 
Action< float, float > AddOnDrag [set]
 
Action< float, float > AddOnSwipe [set]
 
Action< CUIInputAddOnKeyDown [set]
 
Action< CUIInputAddOnKeyUp [set]
 
Action< CUIInputAddOnTextInput [set]
 
Action AddOnFocus [set]
 
Action AddOnFocusLost [set]
 
bool Draggable [get, set]
 
bool Focusable [get, set]
 
bool Resizible [get, set]
 
bool ResizibleLeft [get, set]
 
bool ResizibleRight [get, set]
 
CUIBool2 ResizeDirection [get, set]
 
bool Swipeable [get, set]
 
virtual CUILayout Layout [get, set]
 
Dictionary< string, CUIComponentStates = new() [get, set]
 State is just a clone component with copies of all props.
 
string SavePath [get, set]
 
int ID [get, set]
 Global ID, unique for component.
 
CUIMainComponent MainComponent [get, set]
 Link to CUIMainComponent, passed to children.
 
bool Focused [get, set]
 
bool BackgroundVisible [get, set]
 BackgroundColor != Color.Transparent.
 
bool OutlineVisible [get, set]
 
bool MouseOver [get, set]
 
bool MousePressed [get, set]
 
CUINullVector2 ForcedMinSize [get, set]
 This is used by text to prevent resizing beyond that and works as AbsoluteMin.
 
float Scale [get, set]
 This is set by ChildrenOffset when zooming, and iirc consumed by text to adjust text scale.
 
CUIRect BorderBox [get, set]
 Calculated Prop, Real + BorderThickness.
 
CUIRect OutlineBox [get, set]
 
CUIRect Real [get, set]
 Calculated prop, position on real screen in pixels Should be fully calculated after CUIMainComponent.Update.
 
CUIStyle Style [get, set]
 Allows you to assing parsable string or link to CUIPalette to any prop
It's indexable, so you can access it like this: component.Style["BackgroundColor"] = "cyan"
if value starts with "CUIPalette." it will extract the value from palette
e.g. component.Style["BackgroundColor"] = "CUIPalette.DarkBlue.Secondary.On"

 
CUIStyle ResolvedStyle [get, set]
 
List< CUIComponentChildren = new() [get, set]
 
CUIComponentParent [get, set]
 
IEnumerable< CUIComponentAddChildren [set]
 Allows you to add array of children.
 
CUIComponentProps CUIProps = new() [get, set]
 Just a wrapper for CUIProps idk how to separate them better.
 
Vector2 Padding [get, set]
 Used for text, should be in CUITextBlock really.
 
CUISprite BorderSprite = CUISprite.Default [get, set]
 Should be one texture, not sprite sheet
Or there would be no way to wrap it
Top side will always point outwards.
 
CUIBorder Border = new CUIBorder() [get, set]
 Container for Color and Thickness
Border is drawn inside the component and will eat space from content
If "by side" border prop != null then it'll take presidence.
 
CUIBorder TopBorder [get, set]
 
CUIBorder RigthBorder [get, set]
 
CUIBorder BottomBorder [get, set]
 
CUIBorder LeftBorder [get, set]
 
float OutlineThickness = 1f [get, set]
 
Color OutlineColor [get, set]
 Outline is like a border, but on the outside of the component.
 
CUISprite BackgroundSprite [get, set]
 Will be drawn in background with BackgroundColor
Default is solid white 1x1 texture.
 
bool IgnoreTransparent [get, set]
 If true, mouse events on transparent pixels will be ignored
Note: this will buffer texture data and potentially consume a lot of memory so use wisely.
 
Color BackgroundColor [get, set]
 Color of BackgroundSprite, default is black
If you're using custom sprite and don't see it make sure this color is not black.
 
float Transparency [get, set]
 
PaletteOrder Palette [get, set]
 This palette will be used to resolve palette styles
Primary, Secondary, Tertiary, Quaternary.
 
PaletteOrder DeepPalette [set]
 
Color ResizeHandleColor = Color.White [get, set]
 Had to expose resize handle props, because it's not a real component and can't really use styles.
 
Color ResizeHandleGrabbedColor = Color.Cyan [get, set]
 
SamplerState SamplerState [get, set]
 don't
 
bool HideChildrenOutsideFrame [get, set]
 Should children be cut off by scissor rect, this is just visual, it's not the same as culling.
 
bool CullChildren [get, set]
 if child rect doesn't intersect with parent it won't be drawn and won't consume fps
It also sets HideChildrenOutsideFrame
 
bool UnCullable [get, set]
 It shouldn't be culled off even outside of parent bounds and even if parent demands so.
 
CUI3DOffset ChildrenOffset [get, set]
 Will shift all children by this much, e.g. this is how scroll works It's also 3D.
 
Func< CUIRect, CUIBoundariesChildrenBoundaries [get, set]
 Limits to children positions.
 
bool Fixed [get, set]
 Should it ignore child offset?
 
Vector2 Anchor [get, set]
 this point of this component
 
Vector2? ParentAnchor [get, set]
 will be attached to this point of parent
 
CUIBool2 Ghost [get, set]
 Ghost components don't affect layout.
 
int? ZIndex [get, set]
 Components are drawn in order of their ZIndex
Normally it's derived from component position in the tree, but this will override it.
 
bool ResizeToSprite [get, set]
 If true component will set it's Absolute size to sprite texture size.
 
CUIBool2 FillEmptySpace [get, set]
 Will be resized to fill empty space in list components.
 
CUIBool2 FitContent [get, set]
 Will resize itself to fit components with absolute size, e.g. text.
 
CUINullRect Absolute [get, set]
 Absolute size and position in pixels.
 
CUINullRect AbsoluteMin [get, set]
 
CUINullRect AbsoluteMax [get, set]
 
CUINullRect Relative [get, set]
 Relative to parent size and position, [0..1].
 
CUINullRect RelativeMin [get, set]
 
CUINullRect RelativeMax [get, set]
 
CUINullRect CrossRelative [get, set]
 It's like Relative, but to the opposite dimension
E.g. Real.Width = CrossRelative.Width * Parent.Real.Height
Handy for creating square things.
 
string GridTemplateRows [get, set]
 Used in Grid, space separated Row sizes, either in pixels (123) or in % (123%)
 
string GridTemplateColumns [get, set]
 Used in Grid, space separated Columns sizes, either in pixels (123) or in % (123%)
 
Point? GridStartCell [get, set]
 Component will be placed in this cell in the grid component.
 
Point? GridEndCell [get, set]
 And resized to fit cells from GridStartCell to GridEndCell.
 
Point? GridCell [get, set]
 Sets both GridStartCell and GridEndCell at once.
 
object Data [get, set]
 Arbitrary data.
 
virtual bool Disabled [get, set]
 Usually means - non interactable, e.g. unclickable gray button.
 
bool ShouldPassPropsToChildren = true [get, set]
 Some props (like visible) are autopassed to all new childs see PassPropsToChild.
 
bool IgnoreParentVisibility [get, set]
 Don't inherit parent Visibility.
 
bool IgnoreParentEventIgnorance [get, set]
 Don't inherit parent IgnoreEvents.
 
bool IgnoreParentZIndex [get, set]
 Don't inherit parent ZIndex.
 
bool IgnoreParentTransparency [get, set]
 
bool Visible [get, set]
 Invisible components are not drawn, but still can be interacted with.
 
bool IgnoreEvents [get, set]
 Won't react to mouse events.
 
bool Revealed [get, set]
 Visible + !IgnoreEvents.
 
bool Serializable = true [get, set]
 If false then this component and its children won't be serialized.
 
bool SerializeChildren = true [get, set]
 Is this a serialization cutoff point
Parent will serialize children down to this component and stop.
 
bool MergeSerialization = false [get, set]
 If true it won't be deserialized,
Instead its children will be detached and attached to the component with matching AKA on the parent.
 
bool ReplaceSerialization = false [get, set]
 If true, deserialized component will replace existing component with the same AKA instead of creating a duplicate.
 
static bool ForceSaveAllProps = false [get, set]
 
- Properties inherited from CrabUI.ISimpleProps
- Properties inherited from CrabUI.IListProps
- Properties inherited from CrabUI.ISerializationProps

Events

Action OnTreeChanged
 
- Events inherited from CrabUI.CUIComponent
Action< CUICommandOnAnyCommand
 this will be executed on any command
 
Action< CUIDataOnAnyData
 Will be executed when receiving any data.
 
Action< Object > OnConsume
 Happens when appropriate data is received.
 
Action OnTreeChanged
 
Action< double > OnUpdate
 
Action< CUIInputOnMouseLeave
 
Action< CUIInputOnMouseEnter
 
Action< CUIInputOnMouseDown
 
Action< CUIInputOnMouseUp
 
Action< CUIInputOnMouseMove
 
Action< CUIInputOnMouseOn
 
Action< CUIInputOnMouseOff
 
Action< CUIInputOnClick
 
Action< CUIInputOnDClick
 
Action< CUIInputOnScroll
 
Action< float, float > OnDrag
 
Action< float, float > OnSwipe
 
Action< CUIInputOnKeyDown
 
Action< CUIInputOnKeyUp
 
Action< CUIInputOnTextInput
 
Action OnFocus
 
Action OnFocusLost
 
Action OnLayoutUpdated
 
Action OnStyleApplied
 Use it to e.g. update component color.
 
Action< CUIComponentOnChildAdded
 
Action< CUIComponentOnChildRemoved
 

Additional Inherited Members

- Static Public Member Functions inherited from CrabUI.CUIComponent
static void RunRecursiveOn (CUIComponent component, Action< CUIComponent > action)
 designed to be versatile, in fact never used
 
static void ForEach (Action< CUIComponent > action)
 
static IEnumerable< Type > GetClassHierarchy (Type type)
 
static IEnumerable< Type > GetReverseClassHierarchy (Type type)
 
static bool DeepCompareVerbose (CUIComponent a, CUIComponent b)
 
static CompareResult DeepCompare (CUIComponent a, CUIComponent b)
 
static CUIComponent Deserialize (string raw, string baseFolder=null)
 
static CUIComponent Deserialize (XElement e, string baseFolder=null)
 
static CUIComponent LoadFromFile (string path, bool searchForSpritesInTheSameFolder=true, bool saveAfterLoad=false)
 
static T LoadFromFile< T > (string path, bool searchForSpritesInTheSameFolder=true, bool saveAfterLoad=false)
 
- Static Public Attributes inherited from CrabUI.CUIComponent
static Dictionary< int, WeakReference< CUIComponent > > ComponentsById = new()
 
static WeakCatalog< Type, CUIComponentComponentsByType = new()
 
static GUIButton dummyComponent
 This is used to trick vanilla GUI into believing that mouse is hovering some component and block clicks.
 
- Protected Member Functions inherited from CrabUI.CUIComponent
void ExtractProps (XElement element, string baseFolder=null)
 
void PackProps (XElement element, CUIAttribute propAttribute=CUIAttribute.CUISerializable)
 
virtual void PassPropsToChild (CUIComponent child)
 Pass props like ZIndex, Visible to a new child.
 
- Protected Attributes inherited from CrabUI.CUIComponent
CUILayout layout
 
CUINullVector2 forsedSize
 
float scale = 1f
 
Color[] TextureData
 Buffer for texture data, for IgnoreTransparent checks.
 
bool disabled
 
- Package Functions inherited from CrabUI.CUIComponent
- Static Package Functions inherited from CrabUI.CUIComponent
- Package Attributes inherited from CrabUI.CUIComponent
- Static Package Attributes inherited from CrabUI.CUIComponent

Detailed Description

Orchestrating drawing and updating of it's children
Also a CUIComponent, but it's draw and update methods Attached directly to games life cycle.

Definition at line 21 of file CUIMainComponent.cs.

Constructor & Destructor Documentation

◆ CUIMainComponent()

CrabUI.CUIMainComponent.CUIMainComponent ( )

Definition at line 509 of file CUIMainComponent.cs.

509 : base()
510 {
511 CullChildren = true;
512 Real = new CUIRect(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
513 Visible = false;
514 //IgnoreEvents = true;
516
517
518 Debug = true;
519 ChildrenBoundaries = CUIBoundaries.Box;
520 }
CUIRect Real
Calculated prop, position on real screen in pixels Should be fully calculated after CUIMainComponent....
Func< CUIRect, CUIBoundaries > ChildrenBoundaries
Limits to children positions.
bool CullChildren
if child rect doesn't intersect with parent it won't be drawn and won't consume fps It also sets Hi...
bool Visible
Invisible components are not drawn, but still can be interacted with.
bool ShouldPassPropsToChildren
Some props (like visible) are autopassed to all new childs see PassPropsToChild.

Member Function Documentation

◆ Draw()

new void CrabUI.CUIMainComponent.Draw ( SpriteBatch spriteBatch)
virtual

Here component should be drawn.

Parameters
spriteBatch

Reimplemented from CrabUI.CUIComponent.

Definition at line 239 of file CUIMainComponent.cs.

240 {
241 sw.Restart();
242
243 Rectangle OriginalSRect = spriteBatch.GraphicsDevice.ScissorRectangle;
244 Rectangle SRect = OriginalSRect;
245
246 try
247 {
248 RunStraigth(c =>
249 {
250 if (!c.Visible || c.CulledOut) return;
251 if (c.Parent != null && c.Parent.ScissorRect.HasValue && SRect != c.Parent.ScissorRect.Value)
252 {
253 SRect = c.Parent.ScissorRect.Value;
254 StopStart(spriteBatch, SRect, c.SamplerState);
255 }
256 c.Draw(spriteBatch);
257 });
258 }
259 finally
260 {
261 if (spriteBatch.GraphicsDevice.ScissorRectangle != OriginalSRect) StopStart(spriteBatch, OriginalSRect);
262 }
263
264 RunStraigth(c =>
265 {
266 if (!c.Visible || c.CulledOut) return;
267 c.DrawFront(spriteBatch);
268 });
269
270 sw.Stop();
271 // CUIDebug.EnsureCategory();
272 // CUIDebug.CaptureTicks(sw.ElapsedTicks, "CUI.Draw");
273 }

◆ Load()

void CrabUI.CUIMainComponent.Load ( Action< CUIMainComponent > initFunc)

Obsolete function
Will run generator func with this.

Parameters
initFuncGenerator function that adds components to passed Main

Definition at line 503 of file CUIMainComponent.cs.

504 {
505 RemoveAllChildren();
506 initFunc(this);
507 }

◆ OnDragEnd()

void CrabUI.CUIMainComponent.OnDragEnd ( CUIDragHandle h)

Definition at line 278 of file CUIMainComponent.cs.

278{ if (h == GrabbedDragHandle) GrabbedDragHandle = null; }

◆ OnResizeEnd()

void CrabUI.CUIMainComponent.OnResizeEnd ( CUIResizeHandle h)

Definition at line 279 of file CUIMainComponent.cs.

279{ if (h == GrabbedResizeHandle) GrabbedResizeHandle = null; }

◆ OnSwipeEnd()

void CrabUI.CUIMainComponent.OnSwipeEnd ( CUISwipeHandle h)

Definition at line 280 of file CUIMainComponent.cs.

280{ if (h == GrabbedSwipeHandle) GrabbedSwipeHandle = null; }

◆ PrintRecalLimitWarning()

void CrabUI.CUIMainComponent.PrintRecalLimitWarning ( )

Definition at line 522 of file CUIMainComponent.cs.

523 {
524 CUI.Log($"Warning: Your GUI code requires {MaxLayoutRecalcLoopsPerUpdate} layout update loops to fully resolve (which is cringe). Optimize it!", Color.Orange);
525 }

◆ Step()

void CrabUI.CUIMainComponent.Step ( )

Forses 1 layout update step, even when Frozen.

Definition at line 145 of file CUIMainComponent.cs.

146 {
147 Update(LastUpdateTime + UpdateInterval, true, true);
148 }

◆ Update()

void CrabUI.CUIMainComponent.Update ( double totalTime,
bool force = false,
bool noInput = false )

Definition at line 149 of file CUIMainComponent.cs.

150 {
151 if (!force)
152 {
153 if (Frozen) return;
154 if (totalTime - LastUpdateTime <= UpdateInterval) return;
155 }
156
157 CUIDebug.Flush();
158
159 if (TreeChanged)
160 {
161 OnTreeChanged?.Invoke();
162
163 FlattenTree();
164 TreeChanged = false;
165 }
166
167 if (!noInput) HandleInput(totalTime);
168
169 RunStraigth(c => c.InvokeOnUpdate(totalTime));
170
171
173 {
174 UpdateLoopCount = 0;
175 do
176 {
177 GlobalLayoutChanged = false;
178
179 if (TreeChanged)
180 {
181 OnTreeChanged?.Invoke();
182
183 FlattenTree();
184 TreeChanged = false;
185 }
186
187 RunReverse(c =>
188 {
189 c.Layout.ResizeToContent();
190 });
191
192 RunStraigth(c =>
193 {
194 c.Layout.Update();
195 c.Layout.UpdateDecor();
196 });
197
198 UpdateLoopCount++;
199 if (UpdateLoopCount >= MaxLayoutRecalcLoopsPerUpdate)
200 {
201 PrintRecalLimitWarning();
202 break;
203 }
204 }
205 while (GlobalLayoutChanged);
206 //CUI.Log($"UpdateLoopCount: {UpdateLoopCount}");
207 }
208 else
209 {
210 RunReverse(c =>
211 {
212 c.Layout.ResizeToContent();
213 });
214
215 RunStraigth(c =>
216 {
217 c.Layout.Update();
218 c.Layout.UpdateDecor();
219 });
220 }
221
222 //TODO do i need 2 updates?
223 //RunStraigth(c => c.InvokeOnUpdate(totalTime));
224
225 LastUpdateTime = totalTime;
226 }
bool CalculateUntilResolved
If true will update layout until it settles to prevent blinking.
bool Frozen
Frozen window doesn't update.
int MaxLayoutRecalcLoopsPerUpdate
If your GUI needs more than this steps of layout update you will get a warning.

Member Data Documentation

◆ CalculateUntilResolved

bool CrabUI.CUIMainComponent.CalculateUntilResolved = true

If true will update layout until it settles to prevent blinking.

Definition at line 46 of file CUIMainComponent.cs.

◆ Global

CUIGlobalEvents CrabUI.CUIMainComponent.Global = new CUIGlobalEvents()

Container for true global events CUIMainComponent itself can react to events and you can listen for those, but e.g. mouse events may be consumed before they reach Main.

Definition at line 69 of file CUIMainComponent.cs.

◆ GrabbedDragHandle

CUIDragHandle CrabUI.CUIMainComponent.GrabbedDragHandle

Definition at line 55 of file CUIMainComponent.cs.

◆ GrabbedResizeHandle

CUIResizeHandle CrabUI.CUIMainComponent.GrabbedResizeHandle

Definition at line 56 of file CUIMainComponent.cs.

◆ GrabbedSwipeHandle

CUISwipeHandle CrabUI.CUIMainComponent.GrabbedSwipeHandle

Definition at line 57 of file CUIMainComponent.cs.

◆ MaxLayoutRecalcLoopsPerUpdate

int CrabUI.CUIMainComponent.MaxLayoutRecalcLoopsPerUpdate = 10

If your GUI needs more than this steps of layout update you will get a warning.

Definition at line 51 of file CUIMainComponent.cs.

◆ MouseOn

CUIComponent CrabUI.CUIMainComponent.MouseOn

Definition at line 58 of file CUIMainComponent.cs.

◆ UpdateInterval

double CrabUI.CUIMainComponent.UpdateInterval = 1.0 / 300.0

Definition at line 42 of file CUIMainComponent.cs.

Property Documentation

◆ AddOnTreeChanged

Action CrabUI.CUIMainComponent.AddOnTreeChanged
set

Definition at line 53 of file CUIMainComponent.cs.

53{ set { OnTreeChanged += value; } }

◆ FocusedComponent

CUIComponent CrabUI.CUIMainComponent.FocusedComponent
getset

Definition at line 59 of file CUIMainComponent.cs.

60 {
61 get => CUI.FocusedComponent;
62 set => CUI.FocusedComponent = value;
63 }

◆ Frozen

bool CrabUI.CUIMainComponent.Frozen
getset

Frozen window doesn't update.

Definition at line 41 of file CUIMainComponent.cs.

41{ get; set; }

Event Documentation

◆ OnTreeChanged

Action CrabUI.CUIMainComponent.OnTreeChanged

Definition at line 52 of file CUIMainComponent.cs.


The documentation for this class was generated from the following file: