mlapptools
mlapptools copied to clipboard
R2023a compatibility issues and suggestions
Summary
Was trying to apply CSS to my GUI using this excellent tool and encountered a few issues in newer releases, at least R2022b and R2023a. Here below are things that I have encountered. Note: Have not tested all functionalities of mlapptools
Problem Description
- The data-tag is no longer stored according to:
data_tag = char(struct(uiElement).Controller.ProxyView.PeerNode.getId); - uigridlayout not supported
- Name of warning identifier in toggleWarnings has changed
- Slow performance when accessing many WidgetID's due to the version check in getWebWindow (not really an error)
My current workarounds:
- In getDataTag, line 360:
data_tag = char(struct(uiElement).Controller.ViewModel.Id);Note: This is only needed for R2023a (and onwards?) so the old code should be still be used for older version, now have an if-statement that use the matlab version (see point 4). - In getWebElements, line 127, add uigridlayout:
case {'uipanel','figure','uigridlayout'} - In toggleWarning, line 436, use this warning ID instead:
OJF = 'MATLAB:ui:javaframe:PropertyToBeRemoved'; - Not sure about the best solution, I have now added the matlab version as an input argument to getWebElements to avoid version lookups on each function call.
Specifications
- MATLAB Release: R2023a
- Operating System: Win 10
mlapptoolsversion (or commit link/hash): v0.4.1
Hello! Please try the develop branch, it's much newer than the released version, and at least one of your points was addressed there. Regardless, if you think you know how to improve the existing code, to make it more robust, performant, etc. - please submit a PR!
Regarding the slowness querying the MATLAB version, I suppose we can modify mlapptools to be a non-static class, and the version will checked only once during construction.
I'm very limited in my ability to fix bugs etc., since I only have access to MATLAB Online unfortunately, and it works differently...