I ask this question in the context of desktop apps.
I guess it’s really a two-fold question.
People mention that you can design for say MacOS on the Mac, then deploy to say Windows and have things not lining up or sized properly. Is this more about graphics or control rendering generally? IOW if I have just garden variety controls with no graphics component to customize appearance, can I hope to deploy to Windows and not have a lot of wonky alignments and size differences? I’m talking just ordinary labels and textboxes and listboxes.
To what degree do e.g. Einhuger or MBS controls work around any such issues in your experience?
My most likely scenario is to replicate my current test environment on MacOs onto one or more Linux servers so I would compile to the Linux target and what I hopefully will experience is at least that the software is usable if not perfect. Since this is an internal use admin app, if controls are not as pretty on the Linux target that is okay, if annoying. I just want to know in advance if things are so wonky that I have to expect to futz a lot with it, use conditionals, etc.
Obviously I could spin up a server someplace and test I suppose but I lack that much bandwidth at the moment and this is just to help me for planning purposes.
Xojo makes a small effort to ensure things line up, however things change across versions (especially on macOS) so things can fall out of alignment seemingly for no reason. The most recent surprise someone mentioned was about Labels next to PopupMenus. Another one I keep my eye on is button height. On Windows, 22px is more correct and I have a subclass to help with that.
Einhugur puts in a lot more work than Xojo does to ensure their controls are top notch. If you need any kind of example look at Einhugur’s Date control vs the built in DateTime control. Xojo’s is just so incomplete it should be embarrassing. MBS is more a library of wrapped system APIs than a library of controls. Yes, there are platform specific controls, but the last time I attempted to use one it very much required a professional understanding of how macOS, MBS, and Xojo all interact with each other.
As far as Linux goes, there is a switch you’ll want to turn on that makes the controls sized more like the other platforms. Build Settings > Linux > Normalize Control Sizes.
Windows and Mac work ook on size and layout, linux is the one that has that problem however they intetgrated a hack (previusly coded by an user) to kind of mitigate that.
Windows has a large history of problems with graphics, xojo hasnt being able to make it work as it should. A layout that works on may may not work on windows if you overlap controls or use transparent ones.
graffitisuite sucks, the controls are ugly and really SLOW, I tested some of them and my CPU core went to 99% while interacting with the controls. einhugur is better, works ok, but it wasnt the native look, jeremieleroy sometimes feels like abandonware, the controls are not updated/fixed as they should. MBS is not really UI centric.
I needed controls that look native, had good performance and were compatible with the OS high contrast setting. None of the current add-ons cover this, so I had to make my own.
So what I’m hearing is, WRT developing on MacOS and deploying to Linux, is basically, for my purposes with an internal app where functionality is more important than appearance – turn on “Normalize Control Sizes” and hope for the best and I will likely get by.
With MBS Xojo Plugins we provide stuff developers missed in Xojo for over 20 years.
This includes a few controls like our recent Scintilla based text control.
In general we use the built-in controls and customize them for our projects.
And we recommend Einhugur controls for various controls including buttons, date picker and others.
Try also the Graffiti Suite. Anthony is very responsive to feedback and if you find an issue, please let him know.
Normalize controls sizes will help but what will help more is standardizing on the version of Linux you’re supporting. They’re all just slightly different and a pain to make a Xojo app work on all versions. But I suspect you’ll most likely get by with an oddity or two along the way.
Yes it will be whatever flavor of Linux my API ends up running on and it’s an internal app so I’ll just have the one to support. TBH the cost vs performance of the server, ease of scaling with demand, and other factors will be way more important than picking a Linux flavor that Xojo happens to work better on. That said, if that last factor were to end up being a tie-breaker, is there a Linux version Xojo tends to be happier with? Do we know what the dev team routinely tests with?
Thanks, I recall reading that now. Although if you read that link closely, other than whatever one reads into the order in which the distros are listed, what little explicit preference they give to Mint seems to be concerning the IDE, which I would not necessarily be running … my thought was to maintain my MacOS test environment and deploy only the compiled app to Linux.