Cross platform GUI development - Page 1
Forum section: electronics / projects

author: trevwhite
author_rank: Frequent Contributor
timestamp: November 26, 2014, 09:57:16 am
content: HII keep putting it off or more to the point failing to conclude which is the best GUI based language to develop with. I really do not want to start some war about language A is better than language B, C and D because it will end up 100s of messages and I will be no closer to my answer I fear. I just want to get some people's thoughts on languages that do the job.I want a cross platform GUI based language that has a decent looking GUI, is actively being maintained and has good books/support. I need to use it to communicate with serial ports and usb ports, etc. I did a bit of Android development previously and so have some experience with Java but am by no means any kind of expert. Some of the Python based GUIs seem to have stalled or not so supported. I do not want to put all my energy into learning a GUI and then find out its just not supported.Anyone got a recommendation/links to information?ThanksTrev

author: nctnico
author_rank: Super Contributor
timestamp: November 26, 2014, 10:15:24 am
content: I'm using C++ and Wxwidgets. If you want to start with Wxwidgets you do need to get the book 'cross platform programming with Wxwidgets'. About a decade ago I had the same question. Back then Qt wasn't free for use in commercial applications and the licensing model has changed several times since then. Wxwidgets has always allowed commercial applications. What I like about Wxwidgets is that it produces a pure native application for the platform so it doesn't look alien. Wxwidgets also abstracts a lot of OS stuff like threads, sockets, etc. And yes, there is a serial port class: look for Wxctb.

author: jancumps
author_rank: Unknown
timestamp: November 26, 2014, 10:45:09 am
content: Do you have a wish list of the platforms that should be supported. Not all cross-platform solutions support all platforms.That list will take care that you can already cross-out some of the options - makes your candidate list smaller and easier to choose from.

author: trevwhite
author_rank: Frequent Contributor
timestamp: November 26, 2014, 10:53:56 am
content: Thanks for the fast response, wxwidgets looks interesting.

author: Thor-Arne
author_rank: Unknown
timestamp: November 26, 2014, 07:24:12 pm
content: Check outEmbarcadero, they have several language options.

author: Christopher
author_rank: Frequent Contributor
timestamp: November 26, 2014, 07:45:34 pm
content: I use python with pygtk. Can use glade as an interface designer!If its only running on windows I use c# visual studio 2010 as it is very simple to get stuff running quickly.

author: hagster
author_rank: Frequent Contributor
timestamp: November 26, 2014, 09:17:25 pm
content: I'm planning to give Xamarin a go to do x platform dev in C#. The latest Visual Studio 2015 preview has a native android emulator which sounds useful.I have also used phonegap in the past to make apps in HTML/javascript. It works well, but I hate js.

author: The Chump
author_rank: Contributor
timestamp: November 27, 2014, 12:48:56 am
content: For those who remember Borland Delphi and have a soft spot for Pascalhttp://www.lazarus.freepascal.org/

author: lgbeno
author_rank: Frequent Contributor
timestamp: November 27, 2014, 01:36:31 am
content: I've used QT with Python before, it's pretty good. Java also a standard option. All the rage these days is using node.js and a framework like bootstrap to make web based UIs

author: vvanders
author_rank: Regular Contributor
timestamp: November 27, 2014, 02:18:57 am
content: Qt and WxWidgets are the common one's. There's also Mono which lets you do WinForms but I've heard of mixed compatibility(although the tools/framework is hard to beat there).

author: nctnico
author_rank: Super Contributor
timestamp: November 27, 2014, 02:30:15 am
content: Quote from: The Chump on November 27, 2014, 12:48:56 amI remember but I wish I couldn'tPascal is a terrible language for taking on big projects and Borland's inconsistent libraries and bolted on band-aid features to do C style programming didn't help much.

author: coppice
author_rank: Super Contributor
timestamp: November 27, 2014, 02:55:16 am
content: I think you need to define your list of important platforms. None of the cross platform toolkits work on every platform. Most focus on desktop environments. If small embedded platforms are important to you, you need to keep that clearly in mind as you choose. Don't accept vague statements about embedded support. Look carefully at how well theyactuallywork on your important platforms. A number of toolkits have had a variety of platforms on their web pages for years, which have never received the love needed to be considered properly supported.

author: Charles Creations
author_rank: Contributor
timestamp: November 27, 2014, 03:35:09 am
content: I am using TKinter in python to create a USB interfacing application. I have had some difficulty finding good quality examples and information on Tkinter, but once I got over the hump, it became much easier for me. Tkinter is included in the basic python download, so it makes it easy on a user side to get it up and running although pyserial is not included, so they need to install that library.Tkinter is by no means the only option, so I am interested to hear what others have to say. Anyone else using Tkinter?

author: metacollin
author_rank: Contributor
timestamp: November 27, 2014, 08:44:53 am
content: I emphatically recommend Qt. It has many bindings, with C++ and python (via PyQt) to probably be the most common. Qt is message driven, has a visual interface creator, and is easy to use and build. It also looks pretty damn good on every platform, even OS X. Message driven means someone does something to an interface element (like clicks it) and it creates a signal, and you have a method that gets called. This is, to me, much more intuitive.wxWidgets is event handler driven, you have a loop that is constantly checking on a giant state machine, and you write handlers for certain state changes. This is outdated and dick chafe, to me anyway. Unless you want to script GUI elements using python (as in, embedding the python interpreter in your GUI program, I don't mean simply writing the program in python), steer clear of wx. Wxwidgets was originally developed to be (and still is) very close to MFC. MFC is short for Microsoft Foundation Classes. It's the clusterfuck of a Windows API that predates .NET. There is a reason .NET was a completely new API that shared nothing with MFC, and that reason was because MFC was fucking terrible.Back when .NET was being transitioned to and tons of developers who had been using MFC for years found their entire knowledge base suddenly deprecated. That's a pretty awful situation to find oneself in, so enter wxWidgets. Unfortunately, it inherited a lot of the things that were bad about MFC because of this.Qt also is originally for use on dumb phones, and was created by Nokia. It's now become a very polished, feature complete (while staying lightweight) solution that works on all platforms, including mobile look-at devices such as tablets and smartphones.Also, Qt is licensed under permissive, non-copy left licenses which greatly simplifies what must be done should you ever modify the code base for one reason or another for a given program you're writing. It does happen, though is uncommon. KiCad modifies wx to get it to run properly on OS X, for example.Then there is, uh, wxqt. That just confuses and frightens me.I don't have any experience with much else, but I am sure there are other good options too. gtk+ looks nice, despite evolving from the GUI for GIMP, generally regarded to be the single worst GUI ever made by man or God.Hereis a helpful post that goes more in-depth on wx and Qt at least, on StackExchange.

author: nctnico
author_rank: Super Contributor
timestamp: November 27, 2014, 06:07:13 pm
content: Quote from: metacollin on November 27, 2014, 08:44:53 amMFC has been deprecated by Microsoft since they decided everybody should program in VB. When that didn't work out so well Microsoft introduced their own Java: C#.The Windows backend of WxWidgets may be build on MFC (which at least provides a clean interface to Windows) but that doesn't mean you have to do a lot of work to create a GUI.QuoteThat is not true. Qt was originally developed by a company (eventually) called Trolltech which at some point was bought by Nokia in an attempt to make programming on Symbian easier. That didn't turn out well so Qt has been sold to a different company so nowadays you'd need to have a paid license (again) if you want to develop commercial software.

author: The Chump
author_rank: Contributor
timestamp: November 27, 2014, 07:54:32 pm
content: Quote from: nctnico on November 27, 2014, 02:30:15 ambbb..but I'm not recommending Delphi or Kylix, I'm offering Lazarus is answer to the original question.I don't see how pascal is sooo bad for big projects. Maybe you'd like to bore us with your wisdom

author: enz
author_rank: Regular Contributor
timestamp: November 27, 2014, 10:03:39 pm
content: QuoteSorry, but the last statement is not true. You can still use Qt without a paid license even for commercial closed source applications. Take a look at the license options athttp://www.qt.io/download/

author: nctnico
author_rank: Super Contributor
timestamp: November 27, 2014, 11:35:01 pm
content: Quote from: enz on November 27, 2014, 10:03:39 pmI've read the page about licensing. If you care to read it also you see that you need to pay to make proprietary software. On the page you linked to it even says you can't keep modifications to Qt for yourself.

author: nctnico
author_rank: Super Contributor
timestamp: November 27, 2014, 11:38:58 pm
content: Quote from: The Chump on November 27, 2014, 07:54:32 pmPascal has been developed as a structured language to LEARN programming in an organised and structured way and not for real world programming. The real world isn't structured (changing requirements) so if you are creating a big project in Pascal you'll find yourself spending a lot of time fighting the rigidity of Pascal instead of working on your software.

author: Howardlong
author_rank: Super Contributor
timestamp: November 27, 2014, 11:51:54 pm
content: If it's mobile platforms as well as OSX and Windaz, I use Marmalade which is C++. Single source covers all bases and runs natively, no Java/C# indeterministic nonsense ;-)Android, iOS, even Windaz Phone are covered.Although Windows (both desktop and Store) and OSX is supported on the desktop, however Linux is not.Writing app code is not really my bag, but the Marmalade platform keeps me close enough to the hardware that I don't get all teary eyed not being able to look at the assembly langauge and CPu registers.

author: Dago
author_rank: Frequent Contributor
timestamp: November 28, 2014, 05:29:39 am
content: There are a LOT of suggestions in this topic that are not really cross platform...In my opinion Qt is pretty much the best and only choice. It has bindings for a LOT of languages and the documentation is excellent, has a boatload of features and supports something like 12 different platforms. Including Android, iOS, Linux, embedded Linux, Windows, Mac...

author: Jeroen3
author_rank: Super Contributor
timestamp: November 28, 2014, 06:32:03 am
content: I really like Qt, because you only have to download ONE single package to get it working. Includes documentations and source.With WxWidgets you are also able to build on other platforms, but setting up the toolchain isn't that easy.

author: FrankBuss
author_rank: Unknown
timestamp: November 28, 2014, 06:43:36 am
content: Quote from: nctnico on November 27, 2014, 11:35:01 pmThe community edition is LGPL. It is true that you have to release modifications to Qt as LGPL open source, but you don't have to release your software that uses Qt as open source. And usually you don't need to modify Qt itself.

author: nixfu
author_rank: Unknown
timestamp: November 28, 2014, 07:24:54 am
content: Qt is the most popular cross-platform gui toolset it seems to me in the industry outside of using Java.

author: Jeroen3
author_rank: Super Contributor
timestamp: November 28, 2014, 10:40:17 am
content: Quote from: FrankBuss on November 28, 2014, 06:43:36 amOrigin, the steam rip-off from EA, is Qt.I've seen Qt dll's appear in the most unexpected places.Regarding to the startpost questions, USB isn't as easy to do with Qt.Networking is, and Serialport works on most x86 platforms. Raw USB requires some more effort, for Windows at least.On mobile you have tty over audio.I do know of at least some more expensive all-in solutions which claim to be multi-platform with all different kind of grahpics and driver features. But their prices are in a range that they do not deserve to be mentioned.Other free alternatives require extensive toolchain knowledge and will make you rely on open source projects.That can either be fast and cheap to start with, or a lot of work when it suddenly becomes incompatible after a platform update, such as Windows 9 or OS X Snow Yosemite.

author: kripton2035
author_rank: Super Contributor
timestamp: November 28, 2014, 11:22:02 am
content: I use Xojo (formerly realstudio)you can try it for freewww.xojo.com, you pay only when you compile without debugit's the easiest way to do a GUI in my opinion.it works for windows, macos, linux, and soon next month or so for iOsyou wan make an that makes a web server and so connect from any navigator on any platform.there is native serial supportfor usb, it will work natively if you have serial over usb, if you want full usb support it's via paid pluginsit's modern, object (natively) programming, and a lot of examples, and an active forum.just give it a try.ps: it's not usable to make a brand new usb printer interface... there are other tools for that !

author: Wilksey
author_rank: Super Contributor
timestamp: November 28, 2014, 12:26:40 pm
content: Qt is nice, I went back to WXWidgets though for a while, if you use QT I would use V4 as V5 has this god awful dependency on some crappy language support DLL which is 20 odd MB, which you don't need on V4.The worst thing that I came across which is easier on V5 is compiling for MySQL, SQLLite seems to be default, compiling the framework to change an option or two takes ages!I think you can get rid of the language dependency on V5 commercial, but I haven't found a way to get rid of it on the free version.Plus, you have to practically distribute the whole framework for V5 as there are dependencies galore!

author: Jeroen3
author_rank: Super Contributor
timestamp: November 28, 2014, 06:29:56 pm
content: Quote from: Wilksey on November 28, 2014, 12:26:40 pmYou'd need about 60 MB of dll's for a Windows release. (With network and serial)I'm not sure if these dll's rely on .NET. Which should be about a few hundred MB if not already installed.

author: nctnico
author_rank: Super Contributor
timestamp: November 28, 2014, 06:59:29 pm
content: Having to distribute & install a framework sucks in the long run. People are likely to have more than one version installed which is probably incompatible. My latest Wxwidgets program has a Windows installer of 1.1MB and the executable itself is a single self contained .exe file.

author: _Sin
author_rank: Regular Contributor
timestamp: November 28, 2014, 07:56:37 pm
content: I'd also give serious consideration to doing the GUI stuff in a browser using JS/HTML5, but it kind of depends on what kind of GUI you're trying to create.

author: Howardlong
author_rank: Super Contributor
timestamp: November 28, 2014, 09:10:31 pm
content: Regarding Qt, I found, and still find it incredibly difficult to make a working environment, it seems that a lot of things break between versions. I tried rebuilding some old cross platform code I wrote from less than four years ago and obtaining the downloads for the same environment ended up being a fruitless exercise.How is Qt on iOS and Android? The last time I looked a year or so ago it was near enough vapourware as far as production strength went. How is its support for sound on those platforms for example?Regarding the use of HTML5 and JS, for the DSP stuff I do it's really not an ideal option I'm afraid.I totally agree that the mentality of having to have enormous frameworks and other prerequisites like .NET and Java around, with exactly the right versions, is a big irritation. They also have to be regularly maintained by the end user afterwards. It's an aspect that is typically forgotten about by software "architects" and developers, apparently it's not their problem. Personally, just give me a single straight .exe, not even a setup or install, and I'll be happy!

author: nctnico
author_rank: Super Contributor
timestamp: November 28, 2014, 09:20:05 pm
content: The problem with a browser is that you'll need a webserver quickly and browser incompatibilities are still a PITA. Interaction with hardware like a serial port is also not going to happen.

author: trevwhite
author_rank: Frequent Contributor
timestamp: November 28, 2014, 11:16:14 pm
content: node.js has really caught my eye. Anyone recommend some good books on how to learn this?Trev

author: kripton2035
author_rank: Super Contributor
timestamp: November 29, 2014, 08:23:15 am
content: Quote from: Howardlong on November 28, 2014, 09:10:31 pmtry xojo ... you will be surprised !

author: zapta
author_rank: Super Contributor
timestamp: November 29, 2014, 08:37:44 am
content: Quote from: nctnico on November 27, 2014, 11:38:58 pmI done large projects in Pascal and later in Modula 2 and they were just great. Structure and modularity are good things in programming and most main stream languages provide them in one way or another (classes and packages in Java, classes and namespaces in C++, etc).

author: jancumps
author_rank: Unknown
timestamp: November 29, 2014, 08:42:36 am
content: Quote from: Howardlong on November 28, 2014, 09:10:31 pmThat's not going to be easy if you are looking for cross platform GUI development, as is requested by OP.

author: kripton2035
author_rank: Super Contributor
timestamp: November 29, 2014, 09:44:05 am
content: Quote from: zapta on November 29, 2014, 08:37:44 am+1pascal is not rigid at all, but you may have difficulties to find an implementation on every platform you may need

author: nctnico
author_rank: Super Contributor
timestamp: November 29, 2014, 03:30:13 pm
content: Quote from: jancumps on November 29, 2014, 08:42:36 amWhy should that be a problem? If everything is linked statically into one executable you don't need to install or depend on a bunch of external libraries.

author: jancumps
author_rank: Unknown
timestamp: November 29, 2014, 04:48:30 pm
content: Do we know a statically link-able library that is cross platform for all the platforms that the OP has in mind?

author: nuno
author_rank: Frequent Contributor
timestamp: November 29, 2014, 04:51:11 pm
content: I've been using TCL/Tk for at least a decade, which means at least a decade of fast development and free of dependency-hassle. I don't know of any really good UI builder, I settled at Visual TCL but while it looks promising (for years) it has some issues (which I don't mind because I now know it very well, but maybe a little hard to recommend to a beginer). A TCL/Tk application can be packed (and encripted) in a single executable by a tool named freewrap; they support at least linux as well.With Tk it takes some work to make a beatiful UI, but the library is quite capable and there are bindings for several languages and platforms, including python if you want a more modern and appropriate language to tackle big software projects.Anyways, my recomendation is that you try Tk, with an interpreted language of your choice, maybe python. I know there are UI builders for python, but never tried one and can't recommend any.

author: nctnico
author_rank: Super Contributor
timestamp: November 29, 2014, 04:54:42 pm
content: Quote from: jancumps on November 29, 2014, 04:48:30 pmThere is no such thing as cross platform binaries; this also goes for libraries. If you compile for a certain platform you can link the libraries compiled for that platform together with your own compiled code into one executable. You can have source code which can be compiled into a binary for several platforms. That is the goal of cross platform development: have one piece of source code and compile that for several platforms.

author: jancumps
author_rank: Unknown
timestamp: November 29, 2014, 05:12:14 pm
content: I know. When I said library I did not mean binary library, but GUI library (i.e. a library that can be used to create a graphical interface on all platforms and that can be compiled to link in statically).

author: nctnico
author_rank: Super Contributor
timestamp: November 29, 2014, 05:57:56 pm
content: Quote from: jancumps on November 29, 2014, 05:12:14 pmWxwidgets just does that but you have to compile it into a binary library for the target platform (or get precompiled static linkable binaries).

author: Jeroen3
author_rank: Super Contributor
timestamp: November 30, 2014, 01:04:25 pm
content: Quote from: jancumps on November 29, 2014, 04:48:30 pmYour browser.

author: jancumps
author_rank: Unknown
timestamp: November 30, 2014, 03:52:51 pm
content: Yes, but that runs in a sandbox that doesn't have quality access to peripherals.Quote

author: Jeroen3
author_rank: Super Contributor
timestamp: November 30, 2014, 05:49:29 pm
content: Not if you use embedded webkit inside your application.

author: briselec
author_rank: Regular Contributor
timestamp: November 30, 2014, 09:24:38 pm
content: Quote from: metacollin on November 27, 2014, 08:44:53 amI like gtk but the direction it's main developers have taken with it is of concern. Cross platform support has suffered. A number of large projects have migrated to Qt.

author: nctnico
author_rank: Super Contributor
timestamp: December 01, 2014, 01:13:44 am
content: IMHO gtk+ applications look funny and don't work very well on Windows. Call me a purist but IMHO an application should follow the native look & feel the way the user has configured it. That way you never run into trouble with people who have poor eye sight or suffer from color blindness.

author: tonyarkles
author_rank: Regular Contributor
timestamp: December 01, 2014, 02:53:17 am
content: I realize that I'm not answering the question specifically, but am offering an alternative.Don't look for a cross-platform GUI library. Instead, write the foundational parts of your application as a cross-platform compatible library (which is quite a bit easier when you're not doing any GUI things in it), and make a separate native GUI for each platform. If you design the library well, it shouldn't be a whole lot of work to integrate it into applications that you make for different platforms.In the past I've had great success doing this; my library compiled to a DLL in windows, a dylib in OSX, and statically linked for both iOS and Android (compiled using NDK, accessed via JNI). This gave me a lot of flexibility to make the apps differently based on the native "look and feel" of each platform, while still giving me a single place to make most changes.

author: nctnico
author_rank: Super Contributor
timestamp: December 02, 2014, 05:42:06 pm
content: That is exactly what most cross platform frameworks do: create a library which deals with the OS specific stuff.

author: trevwhite
author_rank: Frequent Contributor
timestamp: December 02, 2014, 08:25:32 pm
content: Thanks for all the discussion. I am currently reading a book on node.js. It looks very interesting and might be a nice way forward.I was surprised though that no one really mentioned Java. I thought this is what it was created for? Is it just not recommended or are there not many people using it? I know Android is created from it but does Java have any place in the cross platform gui world?

author: nctnico
author_rank: Super Contributor
timestamp: December 02, 2014, 08:36:19 pm
content: Not so long ago running Java on an embedded Linux platform was a no-go due to resources and you could only use a 'cut down Java for embedded devices' which is a major PITA to compile yourself. Nowadays with 1GHz ARM CPUs Java could be an option but it has a long road ahead to catch up. Also the stability of Java could be an issue. From what I have seen it is not trivial to write a well behaving Java application; I've seen too many Java applications with quirky bugs.

author: jancumps
author_rank: Unknown
timestamp: December 02, 2014, 08:55:18 pm
content: Quote from: trevwhite on December 02, 2014, 08:25:32 pmI'm a big Java fan. I held back from suggesting it because you asked cross-platform without specifying what platforms you were targeting.I've run Java applications across Windows, Unix (Sun Solaris), Linux (Ubuntu) and AS-400 (non-gui on that platform) with Java.But there are other platforms that don't support it. Hence I kept stumm on that option.

author: tonyarkles
author_rank: Regular Contributor
timestamp: December 03, 2014, 01:44:30 am
content: Quote from: nctnico on December 02, 2014, 05:42:06 pmNo no, I mean the opposite. Create a library that handles all of the non-OS specific stuff (data processing, etc). Link that library with an app that you create for each OS. That way you end up with a nice native-feeling app for each OS, but you don't have to worry about copy & pasting all of the guts of your app, you just link the library.

author: nctnico
author_rank: Super Contributor
timestamp: December 03, 2014, 01:48:11 am
content: Quote from: tonyarkles on December 03, 2014, 01:44:30 amAh I see. That sounds like a cumbersome approach because a library may be harder to debug than having all the code inside one application. A long time ago I did a project where I put the business logic into a seperate DLL (for a different reason) but that made things quite complicated because both the library and user application needed debugging.

author: tonyarkles
author_rank: Regular Contributor
timestamp: December 03, 2014, 03:37:29 am
content: Quote from: nctnico on December 03, 2014, 01:48:11 amLess challenging in my experience than trying to make sure that algorithm changes and business logic changes get patched into 4 different apps.

author: nctnico
author_rank: Super Contributor
timestamp: December 03, 2014, 11:59:55 am
content: And again that is why people use cross platform frameworks. One piece of source to maintain AND the cross platform framework takes care of the nasty idiosyncrasies of an OS so it's a win-win.

author: tonyarkles
author_rank: Regular Contributor
timestamp: December 03, 2014, 03:34:37 pm
content: Quote from: nctnico on December 03, 2014, 11:59:55 amThe only person who loses is the user, when they end up with an app that almost-but-not-quite feels like an app for their platformThis is definitely not the only way that works, but it's the way that's worked best for me in my experience. Another nice perk is that it makes it super easy to do:- automated testing: you can test all of the features of the app (other than the GUI) using a unit test framework. The library doesn't have any GUI dependencies, so you can exercise all of the functionality in an automated way- command-line tools: if you end up with a use case where you just want to use one or two features, it's super easy to link against the library. As an example, a client had a custom board that we wrote a GUI for and they were curious about how much a particular ADC on the board varied over time (and temperature in the room). I wrote up a 20 line CLI program that just queried the value of that sensor every 5 minutes and we left it to run for a few days. It just dumped out a csv that we loaded up in Excel later to look at. Way way way less work than building a new one-off feature into the GUI, plus we could easily repeat the test later on with new hardware revs.Edit: a 3rd example- I had a different client with the same kind of setup, custom board, etc. They had a desktop app, and they wanted to make a cut-down web version. All I had to do was load the library using Python ctypes (https://docs.python.org/2/library/ctypes.html) and right away my web app had access to all of the functionality of the hardware. Put together a few HTTP endpoints, and they had a super simple web app that could do exactly what they wanted. If the code that accessed the external hardware was tied in with their GUI code, it would have been *way* harder to do that.

author: nctnico
author_rank: Super Contributor
timestamp: December 03, 2014, 03:53:16 pm
content: Quote from: tonyarkles on December 03, 2014, 03:34:37 pmThat totally depends on which framework you use. I have most experience with WxWidgets which uses the native platform controls. So an application compiled for Windows just looks & feel like any other Windows application because nothing is emulated. For embedded Linux platforms customers often want to have their own look and feel so I use a GTK theme to customise the way the user interface looks. Still both the Windows application and embedded Linux application are compiled from exactly the same source.QuoteUsually you put the code which deals with the hardware and business logic in seperate objects/files so it shouldn't be hard to fork off a DLL/library from an application which is otherwise compiled into a user application. But that depends more on how clean the code is written. If the programmer puts the business logic and GUI together then it is hard to seperate them (and time for a serious talk about career opportunities).

author: tonyarkles
author_rank: Regular Contributor
timestamp: December 03, 2014, 04:07:40 pm
content: Quote from: nctnico on December 03, 2014, 03:53:16 pmYes, WxWidgets uses native platform controls but... Most of the work I've done has been Windows and Mac. There's a lot more to a "native-feeling" app than just using native controls. A Wx app for Windows and Mac will either feel like a Windows app with Mac controls, or a Mac app with Windows controls (depending on which platform you use to influence the style of the app). Wx gets the "look" part of the "look and feel" idea right, but Wx apps usually feel right on one platform and feel weird on another.Matlab is a great example (while not a Wx app). Matlab feels pretty right on Windows, and it just feels weird on a Mac. Doesn't fit with the rest of the apps that I've got running. All the details are off. It doesn't feel like a Mac app, it feels like a Windows app that conveniently runs on a Mac.Edit: Thought of another simple exampleSettings Pages. On Windows, it's super common to have a settings page be tab-based (separate tabs for different aspects of config). On OSX, it's usually either separate list-detail views (e.g. the "System Preferences" app), or a list on the left-hand side of different aspects, with the config details on the right-hand side. Unless you build two separate Wx GUIs, you're going to end up with one platform using a paradigm that's common on the other.