When I used to write test tools in Windows, I use MFC for creating the front-end GUI. This made development of GUI development very fast, and I always used to concentrate on the back-end. Recently I moved to the console based Linux-world. Where most of the things are just console based.
My question: Is there any easy to use equivalent of MFC in Linux?
If you are used to MFC, you will LOVE QT.
http://www.qtsoftware.com/products/
There are a lot of alternatives.
I like wxWidgets. Others will recommend Qt.
Another option is to use Glade to build GTK+ or GNOME applications.
I've never used MFC, but supposedly the wxWidgets toolkit is somewhat MFC-like. Though I prefer Qt over wxWidgets as IMHO the API is nicer, more complete and better documented, and the Qt GUI builder is pretty good.
A nice thing with both Qt and wxWidgets BTW is that they are both cross-platform toolkits; they work on Linux/Unix, Windows, OS X, and maybe other platforms as well.
There's a a huge omission here! gtkmm, the official C++ binding to GTK+, is arguably the modern C++ GUI kit, since it goes out of its way to really use and evolve with the language. For those learning modern C++, it's the best counterpart to the stdlib. It grabbed and kept my interest, where no other GUI lib could, due to its modern and clear API. And it'll work wherever GTK+ does - a tonne of places. I'm glad to have built my first ever (and not trivial!) GUI project around it. It also provides sigc++, which I imagine is really powerful for custom signalling/event systems. Disclaimer: I'm just a self-taught user.
Related
I'm starting to desing ะก++ Linux program with Qt-based GUI. Now I'm looking for all possible embeddable browsers which I will be able to use in my project. I know about Chromium-based solutions - Berkelium, CEF and Awesomium. Anything else?
Also it will be nice to hear some comments about practical use of such systems.
What about using QtWebKit that's already in your Qt-based system? TideSDK may be of interest. It probably has a way to use a C++ backend, as the toolkit already works with Ruby, Python, and PHP. However, I think they are primarily a packaged version of CEF for dynamic languages.
I was wondering if it has some manner to design more beautiful, personalized GUIs. All apps I've seen so far are Gtk based, which have the "linux face". It's not ugly, but what if I want my own design into my app?
Has linux a framework such a Windows Presentation Foundation?
Try QT Framework. With the advent of Ubuntu 12.04 -- they are shifting from GTK and Gnome based application to QT based GUI's. QT has more beautiful and personalized GUI's.
http://qt.nokia.com/products/
The main GUI frameworks are Qt and GTK+. If you don't like the looks of GTK+ programs it is probably easier to define a custom GTK+ theme than to write a new program from scratch. You can also define custom widgets which looks and works exactly as you want them to. There is also a more low-level (and cross platform) framework called SDL. There you will have to do everything from scratch. It basically only provides functions to draw to the screen and read keyboard and mouse events. But you can create a program which looks exactly the way you want with SDL. Because of that, and because it is fast, SDL is often used for games.
wxWidgets is another great cross-platform framework.
I would like to use dockpanel suite in Linux or Mono platform. I heard that there is some methods to modify the source code of dockpanel so that it can be used in Linux platform with all its features like drag and drop and all.Can anyone guide me to achieve that?
Due to its close bindings to Win32 API/PInvoke, currently it is impossible to use full features on Mono. You probably misinterpreted others' words.
Edited: DockPanel Suite 2.6 and above contains Mono support that I developed, http://dockpanelsuite.com
Yes and No.. You can write a silverlight 4.0 program and run it in a browser window on linux you can use silverlight controls.
If you are feeling really brave you can use MoonLight (silverlight by mono) to write full desktop apps on linux. One helpful set of tools (shameless plug) for doing this is MoonBase
But.. Generally, No, if you mean the WPF DockPanel control, you can't use that on top of Mono.
I know you've used WPF tag, but what you heard indicates rather winforms. In such case you may be interested in this. If you really had WPF in mind, look at the IanNorton's answer.
In Windows creating perfect-looking GUI applications is just a piece of cake with VisualC# and WinForms. Is there something of this ease and power in GNU/Linux world? Gtk# looks too arcane compared to ordinary VisualStudio WinForms designer.
You could try Qt
https://stackoverflow.com/questions/235579/good-books-on-qt-and-boost-libraries
If you want to drag the widgets around, you could use Glade to create user interface, and save it in GtkBuilder project, then load it with GTK+ bindings in your programming language.
It's pretty easy and you have those tutorials in Glade's website.
By the way, Linux is just the kernel of the system, although I think all modern GNU/Linux systems with graphical support are equipped with X. However it still depends on the specific library. Generally GNOME and KDE use GTK+ and Qt respectively.
Or you can use multi-platform language. If you have experiences with C# / VisualC# then developing a Java application wouldn't be so hard. C# and Java are really similar languages based on similar principles.
In Java world you have a few GUI frameworks that you can use : Swing, Standard Widget Toolkit (eclipse), JavaFx
Are there any good OOP languages that you can use on Linux? Obviously Java comes to mind, even running C# under mono.
Looking for a language that can be used for all round development, web dev, desktop, services etc.
Besides Mono C# and Java anything else come to mind?
Python seems to be the obvious choice. There a lot of great web frameworks for it, strong support for development of GTK desktop apps and many others. Ruby should also be mentioned, although it's not usually used for desktop apps.
Don't forget other languages running on top of the JVM either - most notably Scala, Clojure and Groovy.
Vala and D are new and interesting languages with some quality tools available. Vala was primarily designed to work smoothly in GNOME environment.
All of them. Whatever you want to use on Linux, you can.
Linux developent is a lot of things. For GUI application programming, you're most likely to want to program for one of the two big desktop environments, GNOME and KDE, or directly to the widget libraries that they are built on, GTK+ and Qt.
GTK+ is at its root a C library with object orientation being implemented as a set of conventions, very simply explained. However, many now program GTK+ and GNOME using true OOP languages like C++, C# using Mono (some very popular and default GNOME applications are built on Mono).
Another very interesting language for GTK+/GNOME is Vala, which is made to look and behave like C#, but which compiles to idiomatic GTK-using C, so all the GTK+ OOP conventions are lifted up to be part of the Vala language.
KDE and Qt are basically C++ libraries, but these also have bindings to other languages.
Both environments have good Python bindings.
You can still use C# with the Mono project.
Python and Ruby are probably the most logical choice for all-round development. PHP is also great for web development.
Interesting how as soon as Java gets ruled out as an answer that we go straight for dynamic languages.
I'd still suggest using Java as a lot of your C# knowledge will apply with subtle differences in convention.
For the compiled type of app how about Freepascal.
Multi-platform and pretty easy to get the hang of for a C#/Java developer I would have thought. Can do web, desktop, client-server etc etc. And free (as the name implies!). Plus, it's based on Pascal (obviously) so it's well tried and tested and not one of the 'languages du jour' :-)
Give a try to the Free Pascal and Lazarus IDE.
You are getting support for multiple platforms, not only Linux. You write code once and compile it everywhere and you have a quite nice IDE which will speed up your development process.
Take a look at screenshots
TIP: When using Lazarus try the last daily snapshot instead of stable release. Snapshots are much more up to date with bugfixes \ features.
Consider C++ with Boost.org. Boost is always coming out with new releases and it's all open source. Linux and C++ have a very long history and there are plenty of stable tools. Once you know C++, many new worlds seem to open up. There are several good IDE's as well. I like code::blocks.