3

I am wanting to start a new (open source) project, and I wish for it to be cross-platform on Windows and Mac OS X (Linux would be good, too!)

I am open for developing seperate front-ends for each platform, but the core logic should be shared.

I would need the following:

  • Preferably a native GUI widgetset
  • FTP connection (platform-independant wrappers)
  • A TreeListView (again, preferably a platform-independant wrapper)

I have been researching this for quite awhile now, and I find these solutions quite attractive:

  • Mono, using WinForms for Windows, and MonoMac for OS X
  • Lazarus (FreePascal) with LCL

Mono pros:

  • Uses C#, a very nice language to work with
  • Has widgetsets for OS X and Windows

Mono cons:

  • Mono Framework is a dependency for my application

Lazarus with FPC pros:

  • Pascal is a great language too, and I know how to work with the Indy controls for FTP.
  • Has VirtualTreeview, which is the best treelistview control I have ever seen!
  • Cross-compilation is possible
  • Also has widgetsets for Windows and OS X
  • No framework dependencies!

Lazarus with FPC cons:

  • It appears the support is dying, but maybe thats just me.
  • VirtualTreeview appears to only have ports for Windows.
  • Executables can get quite large, but that can be fixed.

I also looked into Delphi XE2 with FireMonkey, but it does not use native controls, and it does not look native, due to the anti-aliasing. :(

Now, my biggest concern is, that I cant seem to find a TreeListView that works for Windows and OS X! I really need a treeview with columns.

The big points go to the technology that has a cross-platform TreeListView that works and is still supported.

Thank you for your time!

Jeff
  • 12,085
  • 12
  • 82
  • 152
  • Would a web client/server be a valid alternative? – Emond Aug 26 '12 at 12:28
  • @Erno - no, sadly not, FTP is a requirement :) – Jeff Aug 26 '12 at 12:29
  • Couldn't the web server do the FTPing for the client? – Emond Aug 26 '12 at 12:34
  • So incorporate a webserver INTO the client? – Jeff Aug 26 '12 at 12:35
  • No, connect from the web browser to a web server and let the web browser do the FTPing to the FTP server and pass the results to the client. The results could be cached (if that is ok) for other clients. – Emond Aug 26 '12 at 12:41
  • @Erno isn't that kind of hackish? And why do that, when both Lazarus and Mono (presumably) have FTP client components? – Jeff Aug 26 '12 at 12:43
  • I don't see why that would be hackish; it is perfectly normal for a server to do something for a client. I am afraid that your question is very hard to answer without knowing what you want to build and to base your selection on the availability of a treeview is a bit tricky to say the least. It might be much easier to create a client for each platform than to try and keep it single source. – Emond Aug 26 '12 at 12:54
  • @Erno Yes, I will build a client for each platform, but I need a TreeListView for each platform. And using a webbrowser for the FTP connection.. Well, there gotta be a better alternative. – Jeff Aug 26 '12 at 12:59
  • I voted to close because this can't be answered with out knowing the full story. – Emond Aug 26 '12 at 13:43
  • Why not? I am asking if you know any framework/widgetkit/environment/language that has what I need? – Jeff Aug 26 '12 at 13:50
  • possible duplicate: http://stackoverflow.com/questions/12109795/is-there-a-cross-os-gui-framework-that-supports-embedding-html-pages – Liam McInroy Aug 26 '12 at 14:43
  • While Delphi is fading, Lazarus+FPC is still growing year over year. So while magnitudes smaller than any of the other named (.NET, Java, Delphi), the trend is up. – Marco van de Voort Oct 07 '12 at 11:28
  • I decided to go with Mono, as I found out Cocoa's NSOutlineView has the functionality I need, and I can develop the Windows app in .NET, and the Mac app in Mono. Does Lazarus use Cocoa controls, like NSOutlineView? – Jeff Oct 07 '12 at 11:55

2 Answers2

1

I would strongly suggest against Pascal.
It is a dying language, and as you noticed support will diminish with time.
The chance of asking a question and getting an answer is much better with more modern languages.

.NET/Mono is one good option.
.NET has TreeView in WPF, but it's not implemented in Mono, and as far as I know, it never will be.

Another option I'd suggest checking out is Java (Or even better - other JVM based languages such as Scala).
It's very cross-platform(Maybe the most cross-platform language), support is good and language is still evolving (Although it was stuck for a few years), and the syntax+code style is very similar to C#(excluding support for LINQ, etc.), which makes moving from one to another pretty straightforward.
JVM is a prerequisite, but it's not really big problem, as it's already installed on most machines.

Svarog
  • 2,188
  • 15
  • 21
  • I considered Java, but AFAIK, its slowly getting replaced by C# - My teacher at school told me you will only find Java=>C# books, not the other way around. – Jeff Aug 26 '12 at 13:01
  • I just looked into Java with SWT, and it looks very nice actually. However, deploying jar files... Isnt it possible to deploy .exe, .app and .elf instead? – Jeff Aug 26 '12 at 13:27
  • I myself am not a Java Programmer(Am a C# programmer, Although I know java from college), so can't really answer your questions precisely, but no, Java is not getting replaced by C#. Java is a live and evolving language, although C# is gaining market share over Java. – Svarog Aug 26 '12 at 13:42
  • 1
    As for the .exe question: here's a good article on the matter: http://www.excelsior-usa.com/articles/java-to-exe.html It's quite long, but worth your time if it's a serious issue for you. Mainly take a look at the "Ahead-Of-Time Compilers" section. – Svarog Aug 26 '12 at 13:43
  • Thank you! I will mark your answer as correct if no other alternative comes up here. :) – Jeff Aug 26 '12 at 13:53
0

Years ago, I used Qt and wxWindows/wxWidgets for single-codebase UI for Windows and various *NIX variants.

Frankly, I haven't worked with them in years, nor I'm aware of how well they support Mac OS X, but they might be worth a look if you are willing to use C++ (they are both C++ libraries).

Branko Dimitrijevic
  • 50,809
  • 10
  • 93
  • 167