A GUI Question: Dynamic Modular Panel Layout?
I am a student working on a college engineering project team.
Our software subteam is looking to create a modular GUI that allows for real time reconfiguration through snapping panels that the user can shuffle around and detach from the GUI (popular programs that feature this type of GUI: Adobe Production Studio, Eclipse, Visual Studio, most major "design" programs).
Can anyone suggest a framework for developing such a GUI? Ideally, we are striving for compatibility throughout major PC platforms (Linux, Mac, Windows). Any popular language is acceptable.
I have looked through examples of wxWidgets, GTK+, and Java Swing GUIs. I am sure it is possible 开发者_如何学运维to develop such a GUI with any of these, but it would be preferable if we could take advantage of some sort of existing framework or library. Any tips / tricks would be appreciated.
Thanks.
In wxWidgets there is the wxAUI library which is designed exactly for dockable panels and toolbars. There is quite an extensive sample in the samples/aui folder of your wxWidgets installation.
I'm not an expert, but, it sounds like you're talking about "docking" widgets (or controls or whatever you want to call GUI components). While many of the major GUI players do this well, I have seen very few outside of Java which do this well cross-platform. If docking is critical to your project, you may even want to build simple little test applications in each of the major GUI toolkits before deciding on one.
wxWidgets uses the underlying native libraries and, at least to my knowledge, does not have a docking library.
GTK+ has gdl (GNOME docking library) but I don't think it will work in Windows. I've used this often and it works great in GNOME.
Qt has a Dock Widget but I'm not a Qt developer so I can't give you any more than that.
Java/Swing has a lot of docking libraries. You'll have to Google that one--too many for me to list. I don't do too much Java either.
As much as I typically do not like Java applications, Java may be your best bet if it really needs to run consistently across multiple platforms.
In Java Swing, there are several open source libraries that I've used with more or less success in the past:
flexdock: old library, very powerful, but very complex to use and tune (not enough design documentation in my view). Project was abndoned a long time ago but, when you could "master" it, it gave very good results. I would not recommend it today (no support at all)
mydoggy: good API, easy to use (well documented), but a bit hard to fine tune, in particular if you use a 3rd-party look and feel. Maybe this later issue has disappeared in more recent releases (I tried mydoggy more than one year ago)
docking frames: very good API, easy to setup, good documentation, some simple tutorials, but lacks "deeper" examples. Well supported. Today I would definitely recommend to go with this library. Note that the library provides 2 API levels, "common" and "core". I found documentation wasn't very clear about which one to use under which circumstances. I had tested both and finally decided to go with the "common" library, but wouldn't be able to explain why today :-(
In addition, there are also several commercial docking libraries for Swing, you can check JIDE in particular, which is well renown.
A lot of gui kits have that functionality, i know this is a pretty vague answer but a lot comes down to your preferences in development language and target platform which you have not stated. Also if you don't have a lot of experience with developing GUI in general it might be better to start of with something that is more static rather than a gui that can be reconfigured on the fly. A lot of work goes into designing a dynamic gui that is easy to handle.
I personally am very partial to Qt and c++. Qt supports windows/mac os and linux and is very well organized has a decent amount of documentation.
It's a .NET Winforms library, but we use the Dock Panel Suite. It's open source and works great.
精彩评论