Borland Uses (And Supports) wxWindows
jmccay writes " Back in September, Slashdot posted an article about a new tool that Borland is releasing (C++ BuilderX) which is a multi-platform and multi-compiler development environment. What wasn't mentioned in the article that I scanned in the post was that Borland is going to use wxWindows for this product. I have been working with wxWindows for about 6 months now, and I like it. A statement by Julian Smart (founder of the wxWindows project) gives more information on the product and Borland's participation in the wxWindows project. He says that they are also going to help out the project by 'contributing expertise and funding to help in areas such as enhanced run-time type information, the new build system and code reengineering, and will continue to invest in wxWindows while supporting its open source status.' There is also an FAQ available to read on the linked page. This is great news for both the project and the Open Source community as a whole."
actually, isn't QT only LGPL if you're not selling your software?
so for something like borland or people who don't make a living off selling their software (which some people do) can't use it.
also, (not having used wxWindows nor wxPython, but having using python, C++, java, obj-c, etc) i would expect that any application written in C++ would be alot more stable and easily transitioned to other computing platforms (using a cross-platform toolkit, such as QT or wxWindows) than a scripting language, just by nature of the fact that C++ has had years to mature on multiple computing platforms, and yet, with all the correct cools, libraries, sane tool chains, etc, getting python built correctly is still a pain in the ass on windows, mac os x and linux (redhat 9).
But it also comes prepackaged with ACE !
BTW There is a free version of it that is downloadable.
Without wanting to feed trolls, Qt isn't LGPL anywhere, and it's not free in any sense of the word on Windows. Just to be clear.
Borland is caught in the .NET.
.NET. If I were to perform any NEW windows centric development I would use C#. The good news though is C# Builder is AWESOME.
Delphi 8 and the VCL are nothing more than wrappers around
Just my $0.02
Has anyone got any more details on the mysterious C++BuilderX ? It has all the hallmarks of vapourware, except that it actually seems to have been released. Borland's website doesn't give any useful information.
I currently use C++Builder 5 (most of the time, without VCL). Is C++BuilderX a "step up" , or should I be sticking where I am? Is it even similar to the older versions of C++Builder at all? Does it use wxWindows similarly to how the older versions used VCL? (ie. can I design RAD forms and stick controls on them, etc.). Does it still have all the debugger features?
It would be nice if there was a review somewhere from somebody who had actually used the product.. or even just some screenshots?
New development will shift from Win32 to a Linux base as the Monopoly gets recognised as the Naziware (Digital Restriction Ware?) (Prisonware?)that it is, and shunned in the marketplace.
--Mike--
wxpython, makes windows guis easy and fun.
QT costs a large amount of real world currency also. And you have to pay if, and this is from their site,
"Build commercial software.
Build software that is not sold, but that advances the business goals of a commercial enterprise.'"
Hell, the BOX, not the license is $149.00 USD.
Licenses start at 2325.00 USD(pro)/ 3495(enterprise) for 2 platforms and 1 developer.
One year of support is 720(pro)/1080(enterprise) USD for one developer.
About the QT license.
Use the Qt Commercial License to:
Build commercial software.
Build software that is not sold, but that advances the business goals of a commercial enterprise.
Two qualities of the Qt Commercial License should be emphasized:
It is a development license.
For desktop distribution there are no royalties, runtime licenses, or other additional costs.
It is a per-developer license.
It is assigned to an individual. It may be transferred, but only every six months and within the same organization. To transfer a license contact sales@trolltech.com.
Common Elements
Qt is sold in two different commercial editions: Professional and Enterprise.
How long till they kill it like they did to Kylix?
From the QT site.
You must buy a license if you...
""Build commercial software. Build software that is not sold, but that advances the business goals of a commercial enterprise.'""
Borland smells bad - worse than jazz.
Furthermore, if you use a free QT license, you 'taint' your codebase and can not later buy commercial QT and 'relicense' it. This is, at least, the interpretation that I have heard before. It means you can't develop a product using QT and then 'buy a license' when and if you decide to go commercial with it.
Someone please contradict me if I'm wrong, because I don't have it direct from Trolltech anywhere I can cite.
A Good Intro to NetBS
I wish you were right, but after seeing Bocon this year, Borland is ALL ABOUT .NET and M$ is pushing it EXTREMLY hard.
I (as well as many others) code cross-platform GUIs in Tk - a rock solid C lib, available on Windows (down to CE), Linux, Mac, as well as many other Unix flavors. Source is wide open, and under the most free BSD-style license. Highly recommended.
a) highly supported and actively developed
b) C++ (this is a minus for many people, I know)
c)Not fugly. The fugly part is a big problem with alot of toolkits, especially the old ones like Tk.
I'll take the f****bait:
A) Active development and support? Same for Tk: Ever been on comp.lang.tcl or http://wiki.tcl.tk give it a try. There are too many people to count there, most of them very helpful. Plenty of active developers both using *and* creating the language and Tk.
B) What's wrong with extern "C" {}? Or just use a (god forbid) Tcl script to build the UI with a few lines? Forgive my ignorance, but there are dozens of Tk bindings to other languages than Tcl, how many does wxWindows have?
C) Ah, yes, the looks. That is a bit of a sore point, yes. On windows it usually looks just like windows, though and on unix you just copy paste about 100 LOC to make it look more modern. Mind you, the way Tk works, you only need to copy-paste, no need to edit.
b) wxWindows is rapidly replacing Tkinter as the standard Python GUI. There's also bindings to Perl, Ruby, Java (more than 1), JavaScript, a couple forms of Basic, Lua, and .NET. And thats just the ones I know about off the top of my head. How many of those are actively maintained, I couldn't really say, except that wxPython development parallels wxWindows.
c) I need ZERO loc to make wxWindows look like whatever platform its running on. Thats what it's for, after all.
Look, I'm not really an advocate. I like wxWindows and use it, but I'm not going to cry if you don't. I have no idea why anyone would use something like Tk when theres better alternatives, but I'm sure you have good reasons. It's all about choice, right? Just don't ask me to use any of your apps :P
[Qt is] not free in any sense of the word on Windows.
What about the unofficial Win32 port of the GPL'd X11 version? (link)
Unfinished, yes, but an interesting project nevertheless. I must confess I'd like to know what TrollTech think of it...
if you use a free QT license, you 'taint' your codebase and can not later buy commercial QT and 'relicense' it.
Where did you hear this? The owner of copyright in a work (such as an application that uses Qt) is the author of the work. There's no reason why he can't publish a GPL version of the work linked to a GPL library and a proprietary version of the work linked to a proprietary library. And there's no reason why the GPL version of Qt shouldn't run under Cygwin.
Will I retire or break 10K?
Just for reference, all the .NET apps I've written work perfectly fine on my Win98SE machine..
I have been using QT in several places and know it better than wxWindows FLTK and others. So I'm not clear why this guy got modded down. He's right. QT makes C++ actually work the way it should, and the most complex apps compile fine under different compilers in different operating systems while remaining tiny, fast and stable.
Yes this guy is wrong about free. I just dont have the 6 grand CDN dollars to roll out commercial apps that I'd like with QT. Sucks.
"Give orange me give eat orange me eat orange give me eat orange give me you." -Nim Chimpsky
You must buy a license if you...
""Build commercial software. Build software that is not sold, but that advances the business goals of a commercial enterprise.'""
Seems like a reasonable license to me. Businesses get to pay for something to increase their revenue potential (that's pretty much the definition of a business), individuals get it for free. Nice balance. Not that I much like their toolkit, but that's a different story.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
QT costs a large amount of real world currency also.
Qt has a very reasonable business model: Free software developers don't pay, commercial software developers support Trolltech by buying Qt.
Also, a developer can protect themselves by isolating the GUI in their architecture (not impossible), so if Qt goes GPL-only only that portion of the commercial application need be open-sourced. Of course, this takes foresight, which is very rare in the software industry.
Healthcare article at Kuro5hin
Zero lines of code to make something look native? That's all well and good, but you have to keep in mind Tk has sheer elegance going for it in code quality.
Compared with something beastly like wxWindows (which feels like an MFC/Java crossbreed from heck), Tk tastes great and is less filling. Perl::Tk kicks serious butt. Pick up the Oreilly Emu (Mastering Perl Tk) book and read it some time.
And it's not just for Windows and Linux. Tk is everywhere. And for nearly every language. Good stuff.
Too much emphasis is put on shiny things versus cool things. Tk is cool. And, don't know about you, but my Tk apps *ARE* shiny. (And not to mention I can write them faster).
I don't have a proble with the buy the license part. What bothers me is the cost.
I don't have a proble with the buy the license part. What bothers me is the cost.
It's probably the wrong toolkit for a garage-based startup, but for MegaloCorp, it's pretty cheap.
e.g. Motorola has a team of ten developers writing the GUI for their new cellphones. They pay $19K/year for the platform their product is based on. The developers cost them close to a million a year in salary.
My God, it's Full of Source!
OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
Probably nothing, it's hardly a competitor for the "real" Qt. It's cygwin-hosted, not native. It's buggy. It's slow. There's been tentative work a number of times on a real, live, native win32 port of Qt/X11, but (afaik), it's never gotten very far, probably because theres other alternatives, such as (but not limited to) wxWindows.
Yeah, Tk is great for quick prototyping. I've used it that way myself for years, and I very recently released some code for general use that was done that way. However, Tk is simply lower level and less polished than wxWindows. Tk has basic widgets that work which is fine for stuff I use myself or give to other developers, but I can recognize a Tk-based UI as such immediately on either Windows or Linux and that's a drawback. WxWindows has more advanced widgets that are indistinguishable from fully-native counterparts and can match the most polished professional applications. When I looked at a list of programs that used wxWindows (somewhere on the wxWindows site) I was actually surprised by some of them. I had used some of them, and it never occurred to me to wonder what framework they used. That's something I've never been able to say about any Tk-based UI, where the framework is in my face and many operations follow the framework model instead of the local UI standard unless someone has done a lot of per-application work to overcome the mismatch.
Yes, there are plenty of packages that attempt to "raise the semantic level" of Tk-based UIs, from grouping radio buttons to providing automagical tabbed dialogs with built-in scrolling canvases and checkbox tree controls. Follow that approach to its logical conclusion, and what do you get? WxWindows. Why use Tk plus this plus that with a little bit of the other and a whole bunch of your own time sanding off the rough edges, when somebody on the wxWindows team has probably already done it? Sure, you have to learn a little bit about how they did it, but that's really no harder than learning how to do it yourself with Tk, and the next programmer has a better chance of understanding what wxWindows did than what you did. Do you want to spend all of your programming time dicking around with character-set issues and varying focus/selection semantics on multiple platforms, or do you have other kinds of problems you'd rather be solving? I know I'd rather not get bogged down writing UI workarounds just to have something that's not butt-ugly. I have better things to do with my programming time.
Slashdot - News for Herds. Stuff that Splatters.
Borland can't.
This is not a borland created product, is a very powerful and mature framework that is both open source and bussiness friendly.
Borland builder can be killed, but not wxWindows. I use it with mingw GCC and VC++ and I don't think I will change it anytime soon.
We are Turing O-Machines. The Oracle is out there.
I'm just a C++ student at the local community college, so I don't know a lot about the usefulness of the various other stuff it comes with, but I ordered the Personal edition on CD from shop.borland.com a few days after it was released, and have been in love with it from the beginning.
The textbook our class uses comes with CodeWarrior, which I can't stand, so I opted for BuilderX. All CDs of BuilderX I've seen (Personal and Enterprise) have installs for all the supported OSs on one disc (Win32, Solaris, Linux) and support whatever compilers you may want to use.
There doesn't seem to be much in the way of tools to design GUI programs, but I don't need that at the moment anyway. The Java-based UI is surprisingly fast, only slightly slower than the GTK+-2.0 port of Anjuta, which isn't nearly as stable as C++BuilderX.
All in all, for my $10(+$12.50 S&H) I'm quite pleased.
My one gripe would be the lack of documentation on the C Library functions. They're there, and you can of course use them, but no dox.
WxWindows has more advanced widgets that are indistinguishable from fully-native counterparts
That's because they are native. On Win32, wxWindows is a wrapper around the standard Windows components, just like Borland's VCL is a wrapper.
wxWindows is better than Qt from a Windows user's perspective, because wxWindows uses the native API calls, whereas Qt seems to merely draw the UI instead of actually calling it. Menus look very close to the real thing but are always off in tiny, tiny ways. It is never as good as actually just letting the OS do it for you. The Qt site spins this to say it could be faster. Yeah, I don't see how.
.NET because they are too afraid to take advantage of the language.
Qt's slot/signal mechanism is awesome. However, modern C++ compilers can do it without the additional compiler (use Boost/Loki).
I think that any C++ library should actually use the full gamut of C++ features instead of saying "we're going to worry about the platforms that don't support exception handling/namespaces/templates and just not use them at all." That seems like a great way to end up with MFC. It is 2003 people, lets at least code like it is.
Yes, I realize these features are not implemented everywhere. Perhaps someone should split away from the projects and start a comprehensive, powerful C++ abstraction layer that is for desktop application programming on Linux, Windows, and Mac OS X. I'm just tired of half-assed libraries getting the crap kicked out of them (comparatively speaking) from
I ended up working on a wrapper for Win32 because every cross-platform alternative ended up having an Achilles heel of some sort.
wxWindows looks like a really nice toolkit, with lots of robust widgets. I just wish that A) wxPerl wasn't so buggy, and B) that the wxPerl/wxWindows documentation was better than "Here's an alphabetical list of method calls - good luck!"
Good docs like the Perl/Tk books keep me with that toolkit. I'm the first to admit I'm not a good coder, but I've been able to do a lot following the documetation in Mastering Perl/Tk.
> There's also bindings to [...] Ruby
Yup, it's on RubyForge - WxRuby.
The Army reading list
It is, of course, Trolltechs right to do the licensing that way and I can even agree with thier reasons, but the simple fact is that I can't use it, and since I can't use it I'll use something else (and I've grown to prefer wxWindows anyway), and that means that when I get rich and famous or when Microsoft buys my startup or whatever, I'm going to CONTINUE using my other option. Because once I've already got a mature cross platform codebase, Qt doesn't have a whole lot to offer me.
Borlands VCL is actually not a wrapper around natice controls. Most of them are implemented using Win32 primitives. I have no idea why they did it this way but I assume it dates back to the early days of Dephi when the Win32 common controls were much less functional.
Check out http://vcf.sourceforge.net for a library thats based on similiar concepts to wxWindows but written using modern C++ features. It's not mature yet, but maybe you can give it some help ;)
I hope like the Titanic sinking and sucking down life boats with it, Borland doesn't hurt WxWindows in some way. Interbase anyone?
These new-fangled object-oriented GUI's have to abstract the heck out of everything and I guess a frame buffer is considered way too low level. In wxWindows the abstractions are wxWindow (the window thingy), wxDC (abstraction of the drawing surface but pointedly not a frame buffer -- you are only allowed to perform highly-abstract graphics ops like draw geometric shapes, text characters, and blt bitmaps, themselves not frame buffers but abstractions), wxBitmap (highly abstracted bitmap), and wxImage (yet another abstraction, but can be created from a frame buffer). Then there are all these rules -- you can blit wxBitmap to wxDC, and you can create a wxImage from image data and then create a wxBitmap from the wxImage to blit to the wxDC.
Ok, ok, pretty much every GUI framework from Swing to SWT to Borland VCL to wxWindows pretty much has this four-layer system. Windows has it as well (HWND, DC, HBITMAP, and DIBITMAP), but ol' Billy-boy wanted to get all of DOS VGA frame buffer hackers to come over to Windows, so he put in two systems: 1) the StretchDIBits() and CreateDIBSection() calls that in effect allow you to create frame buffers that you can hack as you want, and then you can blit them whole or piecemeal to the screen 2) DirectDraw. I prefer the first approach because it works for non-full screen mode.
Everything apart from Windows (wxWindows included) appears to require you to create a new bitmap from a new image every time you want to change something and to require you to blit the thing wholesale to the screen. While the CreateDIBSection() thingy is complicated, once you have it set up, you can poke at a frame buffer and selectively blit portions of that frame buffer to the screen -- you know, the 2-D game programmer "dirty rectangles" algorithm. Delphi introduced the ScanLine property late in the game (i.e. after I had already hacked down to the Windows API -- was it Delphi 4 before it was finally introduced) that uses CreateDIBSection() behind the scenes. Kylix also supports ScanLine, but because QT doesn't have CreateDIBSection(), there these restrictions imposed on how you have to recreate the frame buffer every time you poke at it.
I guess game programming has all gone 3-D and they worry about "triangles" or some such thing. I am not a game developer -- I am a developer of 2-D scientific visualization software that functions much like the old 2-D games.
Why is being able to set up a frame buffer, poke at portions of that frame buffer, and selectively blit modified parts of that frame buffer to a window object considered such an obscure feature in all these systems? I am really locked into Windows -- help!
Two years ago I was looking for a fine cross-platform toolkit, and I came across wxWindows.
It's very strange that this toolkit gets so little publicity, as it has a very rich API and lots of nice features - such as a sweet sizer-based XML resource system that makes creating GUI a breeze. It also has wxConfig classes which allow one to easily store configuration settings without worrying about the underlying system (registry on windows, files on UNIX). Its HTML help classes provide an easy, cross-platform way write help. wxWindows supports XPM files under all systems to spare the programmer from having to convert one's icons to the appropriate system format on every system. It's all in the API Reference
Disclaimer:
I can't say I've done any very serious applications with wxWindows, just a light AOL Instant Messenger - it fits on a floppy and requires no install. I've seen enough to know it's a great toolkit, though.
TerraIM - my pet AIM client project.