Saturday, August 15, 2015

Another Twisty Turn

Yes, it has been a while.  And I have been busy.  I guess I just have not had the time to document my efforts.

That should change.  I really need to keep a record of my endeavors, at least for my own amusement.

So let's begin.

I have been working pretty heavily on a cross-platform application called the Model File Manager.  Simply put, it is a simple utility to manage the model files of a DeviationTX RC transmitter. Here are a couple of screenshots of the app...






It's not a terribly complicated application... more of a glorified file-manager for the storage files of a DeviationTX transmitter plugged in via a USB cable.  To the PC, the transmitter looks like a little flash drive that you can view and move files to and from.

Anyway, I wrote the app originally in Visual Studio with C# as the language.  While this was fine for some, others kept asking for a cross-platform version.  So I looked closer at the Mono project and specifically MonoDevelop... the IDE of choice for Mono.  I can honestly say that in hind-sight I should have looked at Mono earlier.  They have done a great job of building a highly usable IDE, which is a tall task.  I'm a professional Visual Studio user, so I am exposed to some of the best tools available... but at some point features just become bells and whistles.  It's like C#.  Sometimes language features boil down to just syntactic sugar.  But I digress.

MonoDevelop turned out to be a very capable IDE for building the application.  But there is no free lunch and I still had to learn GTK or GTK# the .NET binding for GTK.  This is where most of my learning turned out to be.  Translating WinForm knowledge into a workable GTK interface was tough.  There are a lot of conceptual differences between the two.


  • GTK is actually more modern in its approach to layout of UIs.  What I mean by modern is that it takes flexible display sizes into account.  Right from the get-go you have to think about laying out your UI with flexible containers that shrink and grow as the window is re-sized.  Very much like the way Android and WPF approach UI design.

    WinForms is solidly in the "Fixed" realm, with the default layout building done with a fixed, absolute positioning of controls and elements.
  • ListBoxes, ComboBoxes, etc... use the MVC pattern in GTK and that is taking some getting used to.  It will be a while before I can fully utilize the versatility of this approach.
  • GTK uses barely any formatting properties... instead relying on the Window Manager to dictate the look of the controls.  Any formatting available though is done through a small style language called Pango.  An interesting approach to look and feel options.

Anyway, I finish up this post with the actual source files.  You will have to look at the readme.txt to learn how to build the app.








No comments:

Post a Comment