Commit Graph

84 Commits

Author SHA1 Message Date
patrick boutot
abacb37ea4 MVVM: Update the pin from a name to an array of name. That will allow the pin to be used in converion function inside conversion function.
#jira UE-200604
#rb editor-ui-systems

[CL 30396321 by patrick boutot in ue5-main branch]
2023-12-19 11:31:33 -05:00
zahra nikbakht
07b5dae4ec [Backout] - CL30376074
[FYI] zahra.nikbakht
Original CL Desc
-----------------------------------------------------------------
MVVM: allow viewmodel values to be edited on nested userwidgets.
Expose viewmodels whose creation type is "Create Instance" in the details panel of nested userwidgets and allow editing them independently.
#jira UE-185718
#rb Patrick.Boutot

#virtualized

[CL 30378342 by zahra nikbakht in ue5-main branch]
2023-12-18 12:37:49 -05:00
zahra nikbakht
cc8d9c4d96 MVVM: allow viewmodel values to be edited on nested userwidgets.
Expose viewmodels whose creation type is "Create Instance" in the details panel of nested userwidgets and allow editing them independently.
#jira UE-185718
#rb Patrick.Boutot

#virtualized

[CL 30376075 by zahra nikbakht in ue5-main branch]
2023-12-18 10:38:20 -05:00
patrick boutot
fa42c9b609 MVVM: Rework for the view runtime data. The new format allows for better error detection and new features in progress. The view owns the bindings and events. The source has a list of the bindings. That saves runtime of memory, the delegate doesn't store the binding id. All bindings, events, sources are now sorted for better incremental build performance.
Add a different "key" structures to prevent mistakes with indexes.
Unregister the delay bindings when the source is released.
Store the FieldId, in the source itself. That reduces the amount of work when loading the view.
Add option to delay the events initialization (like we do for bindings).
The binding to evaluate "long path" view models are now separated from regular bindings.
#jira UE-194167
#rb editor-ui-systems

[CL 30042205 by patrick boutot in ue5-main branch]
2023-12-01 11:13:35 -05:00
patrick boutot
158eed9d9c MVVM: Enable setter flag by default. Add flag to generate a public getter. Change the display logic for the optional flag and the setter flag.
#rb editor-ui-systems

[CL 30041317 by patrick boutot in ue5-main branch]
2023-12-01 10:43:39 -05:00
patrick boutot
205c1853b9 MVVM: Event do not save the pin id. The graph is rebuilt and the id is new everytime. Warn the user, at compile, when a pin is orphaned. Fix event's setter on the UserWidget (the index is -1 because of that).
#rb editor-ui-systems
#jira UE-130879

[CL 30039594 by patrick boutot in ue5-main branch]
2023-12-01 09:37:20 -05:00
patrick boutot
d145d441ec Fix localization waring initroduced with CL 29815759
#issue 399399
#rb none

[CL 29839871 by patrick boutot in ue5-main branch]
2023-11-20 08:10:01 -05:00
patrick boutot
3e38401639 MVVM: Backout change that make widget private when not enabled via the "is variable". Assets need to be fixed before reenabling.
#rb trivial

[CL 29818028 by patrick boutot in ue5-main branch]
2023-11-17 15:09:55 -05:00
patrick boutot
2ab80be567 MVVM: Big rework of the MVVM view compiler. It add supports for conversion function to go from complex to simple. Supports pin split on simple conversion function. Add ability to to support setter function with more than one argument. Build the list of all the sources.
#jira UE-200602, UE-200602, UE-200602, UE-200602, UE-200602
#rb editor-ui-systems

[CL 29815789 by patrick boutot in ue5-main branch]
2023-11-17 14:09:15 -05:00
bob tellez
f98456e469 [Backout] - CL29797661
[FYI] Patrick.Boutot
Original CL Desc
-----------------------------------------------------------------
MVVM: Big rework of the MVVM view compiler. It add supports for conversion function to go from complex to simple. Supports pin split on simple conversion function. Add ability to to support setter function with more than one argument. Build the list of all the sources.
#jira UE-200602, UE-200602, UE-200602, UE-200602, UE-200602
#rb editor-ui-systems

[CL 29801739 by bob tellez in ue5-main branch]
2023-11-16 23:04:14 -05:00
patrick boutot
c362983f9f MVVM: Big rework of the MVVM view compiler. It add supports for conversion function to go from complex to simple. Supports pin split on simple conversion function. Add ability to to support setter function with more than one argument. Build the list of all the sources.
#jira UE-200602, UE-200602, UE-200602, UE-200602, UE-200602
#rb editor-ui-systems

[CL 29797678 by patrick boutot in ue5-main branch]
2023-11-16 20:11:58 -05:00
patrick boutot
0bb197807d MVVM: Test if a field is allowed base on the path, not only on the field owner. That allow to have a Widget's property allowed on a child widget but not on the base widget.
#rb editor-ui-systems

[CL 29753638 by patrick boutot in ue5-main branch]
2023-11-15 13:51:32 -05:00
patrick boutot
0b2998c534 MVVM: Cache the default execution mode for performance.
#rb editor-ui-systems

[CL 29517618 by patrick boutot in ue5-main branch]
2023-11-07 07:37:01 -05:00
bob tellez
268fb34791 #UE Make cvar access static for MVVM.DefaultExecutionMode
[FYI] Patrick.Boutot

[CL 29423452 by bob tellez in ue5-main branch]
2023-11-03 17:28:46 -04:00
patrick boutot
52e687f13f MVVM: Instead of saving the name of the root widget for self reference, use a different flag. When the Blueprint asset is renamed the root widget is also renamed and self reference do not work anymore. Redirect the previously saved reference.
IsEmpty is renamed to IsValid. It used to be that we wanted to know if there was a source and a path but now the IsEmpty is confusing.
Fix Widget rename for conversion function pins and event pins.
#jira UE-191812
[REVIEW] editor-ui-systems

[CL 28965810 by patrick boutot in ue5-main branch]
2023-10-20 10:45:57 -04:00
patrick boutot
f852893a58 MVVM: Allow a property or a function if it's from the blueprint we are currently compiling.
#jira UE-191812
#rb editor-ui-systems

[CL 28963236 by patrick boutot in ue5-main branch]
2023-10-20 09:15:33 -04:00
patrick boutot
e53c801770 MVVM: Only create properties when needed. Viewmodel properties should always be created (no inheritance). Widget should be created if they are not already. Support BindWidget.
Rename FCreateVariableContext::GetSkeletonGeneratedClass to GetGeneratedClass because it returns the current class it generates and not the skeletal. It will be the skeletal if it's generating the skeletal.
#jira UE-194135
#rb editor-ui-systems

[CL 28672606 by patrick boutot in ue5-main branch]
2023-10-11 13:52:26 -04:00
bob tellez
f1e730f370 [Backout] - CL28648528
[FYI] Patrick.Boutot
Original CL Desc
-----------------------------------------------------------------
MVVM: Only create properties when needed. Viewmodel properties should always be created (no inheritance). Widget should be created if they are not already. Support BindWidget.
Rename FCreateVariableContext::GetSkeletonGeneratedClass to GetGeneratedClass because it returns the current class it generates and not the skeletal. It will be the skeletal if it's generating the skeletal.
#jira UE-194135
#rb editor-ui-systems

[CL 28650523 by bob tellez in ue5-main branch]
2023-10-10 21:44:56 -04:00
patrick boutot
7de8a4e609 MVVM: Only create properties when needed. Viewmodel properties should always be created (no inheritance). Widget should be created if they are not already. Support BindWidget.
Rename FCreateVariableContext::GetSkeletonGeneratedClass to GetGeneratedClass because it returns the current class it generates and not the skeletal. It will be the skeletal if it's generating the skeletal.
#jira UE-194135
#rb editor-ui-systems

[CL 28648555 by patrick boutot in ue5-main branch]
2023-10-10 20:39:10 -04:00
daren cheng
6feb5780e6 Fix MVVM failing validation due to checking if object nodes were allowed within themselves
Add PropertyHasFiltering method to complete MVVM allowlist API.
Make LocalizableMessage API exposed so that it can be allowlisted.

#rb yohann.dossantos byron.cornejo
[FYI] [at]Patrick.boutot

[CL 28521880 by daren cheng in ue5-main branch]
2023-10-05 18:27:37 -04:00
asil karatas
295ec0a854 MVVM: Sort the view bindings and the view sources to make sure we have a reliable order of execution.
Initialize each bindings source one at the time. That allow a binding to set a variable that will then be read by another binding. That other binding can also change another source (by calling SetViewmodel internally). The bindings of the new source need to execute only if that source was already initialized. Delay bindings executed that way if they are complex.

[REVIEW] [at]daren.cheng [at]christian.savoie [at]jc.authier
#jira UE-194167

[CL 28323824 by asil karatas in ue5-main branch]
2023-09-28 14:01:37 -04:00
jc authier
180e8af8a4 MVVM:
- Remove FPropertyEditorPermissionList call that was massively slowing down launching Frontend in PIE

[REVIEW] [at]patrick.boutot

[CL 27421227 by jc authier in ue5-main branch]
2023-08-28 15:35:11 -04:00
patrick boutot
7055c5a8d6 MVVM: Add instanced viewmodel. A way to create your viewmodel inside the view. The viewmodel is private and can only be used by the view. The feature is enabled by a setting. Change how the customization for the viewmodel context hide properties. Add a new submenu for the viewmodel panel.
#rb editor-ui-systems

[CL 27409246 by patrick boutot in ue5-main branch]
2023-08-28 08:59:49 -04:00
patrick boutot
30997ca639 MVVM: Reuse the same library when generating the view class. It helps the cook make smaller diff packages when the cook is deterministic.
[REVIEW] editor-ui-systems

[CL 27359733 by patrick boutot in ue5-main branch]
2023-08-24 17:34:17 -04:00
patrick boutot
1ffbe228b6 Add setting to disable Binding Event
#jira UE-166284
#rb editor-ui-systems

[CL 27302901 by patrick boutot in ue5-main branch]
2023-08-23 08:39:32 -04:00