Good Looking UI for a stand alone application

T

The Night Blogger

Can someone recommend me a good API for writing a sexy looking (Rich UI like
WinForms) shrink wrap application

My requirement is that the application needs to look as good on Windows as
on the Apple Mac
 
P

Peter Decker

Can someone recommend me a good API for writing a sexy looking (Rich UI like
WinForms) shrink wrap application

My requirement is that the application needs to look as good on Windows as
on the Apple Mac

For my money (even though it's free!), you can't beat Dabo. It uses
the wxPython UI toolkit, so it looks great on Mac and Windows (Linux,
too), since it uses native UI widgets on each platform. They even have
tools to design your visual classes interactively.

Check it out at http://dabodev.com.
 
S

Sandra-24

Can someone recommend me a good API for writing a sexy looking (Rich UI like
WinForms) shrink wrap application
My requirement is that the application needs to look as good on Windows as
on the Apple Mac

wxPython or something layered on it would be the way to go. I tried all
the popular toolkits (except qt) and nothing else comes close for cross
platform gui work. Don't let people persuade you otherwise, that caused
me a lot of trouble.

-Sandra
 
L

Luc Heinrich

The Night Blogger said:
Can someone recommend me a good API for writing a sexy looking (Rich UI
like WinForms) shrink wrap application

No, because such a thing doesn't exist.
My requirement is that the application needs to look as good on Windows as
on the Apple Mac

Crossplatform GUIs are a myth, you *always* end up with a lowest common
denominator (aka Windows) which makes your application look like crap on
other platforms. And when the toolkit/framework only makes it look like
semi-crap, it makes it *feel* like crap.

Because, you know, user interfaces aren't only about the look but also
(and most importantly) the feel, and the lowest common denominator (aka
Windows) won't bring a Mac feel to your app.

Crossplatform toolkits/frameworks suck. All of them. No exception. If
you want your app to look *AND* feel great on all platform, abstract the
core of your application and embed it in platform native GUI code.
 
C

Christophe Cavalaria

Sandra-24 said:
wxPython or something layered on it would be the way to go. I tried all
the popular toolkits (except qt) and nothing else comes close for cross
platform gui work. Don't let people persuade you otherwise, that caused
me a lot of trouble.

Well, you should try qt too ;)

BTW, does wxWindow/wxPython have something that allows you to switch the OK
and Cancel button position according to the current machine GUI guidelines?
 
V

Vincent Delporte

Crossplatform toolkits/frameworks suck. All of them. No exception. If
you want your app to look *AND* feel great on all platform, abstract the
core of your application and embed it in platform native GUI code.

+1. Applications beyond very basic GUI's are better off rewriting the
GUI for each application, while keeping the business logic separate.
Even something as basic as QuickTime sucks on Windows.

I'd be curious to see the source code to Skype: I just installed the
Linux version, and it looks very nice. Maybe it was recompiled with
Kylix.
 
C

Christophe Cavalaria

Vincent said:
+1. Applications beyond very basic GUI's are better off rewriting the
GUI for each application, while keeping the business logic separate.
Even something as basic as QuickTime sucks on Windows.
Read my second reply before reading that part again ;)
I'd be curious to see the source code to Skype: I just installed the
Linux version, and it looks very nice. Maybe it was recompiled with
Kylix.
They use QT. Back to read the first part of your post.
 
V

Vincent Delporte

They use QT. Back to read the first part of your post.

It doesn't make much difference:
- QT is big, so even small apps carry a lot of baggage
- by not using the native widgets, you're dependent on that layer to
keep up with changes in the look & feel of the platform (eg. XP's
widgets that look different from previous widgets).

Bottom line: GUI apps are better off extracting the maximum amount of
logic into OS-agnostic code, and then rewrite the GUI for each
platform.

Even better: Considering that Windows has a 95% market share, make
doubly-sure that it makes financial sense to provide a cross-platform
GUI application (the server can be written in text mode, and can then
be available for multiple OS's with no major problem).
 
P

Peter Decker

Crossplatform GUIs are a myth, you *always* end up with a lowest common
denominator (aka Windows) which makes your application look like crap on
other platforms. And when the toolkit/framework only makes it look like
semi-crap, it makes it *feel* like crap.

You're full of it. I routinely write GUI apps in Dabo for both Windows
and Linux users, and they look just fine on both platforms. Using
sizers is the key; layouts just 'look right' no matter what the native
fonts and control sizes are.
 
T

tleeuwenburg

You could write it as a web app, with an executable which launches the
server and points a browser at it.

Python GUI work is a bit of a drag, really. One of the worst things
about it, IMHO.

-T
 
V

Vincent Delporte

You could write it as a web app, with an executable which launches the
server and points a browser at it.

Right, I was thinking of this too, but since the OP was talking of a
fat app...
Python GUI work is a bit of a drag, really. One of the worst things
about it, IMHO.

But then, it was built for write text-based scripts. I assume someone
could take it, and turn it into a GUI-based solution for Windows, but
it's probably quite a lot of work, and maybe there just isn't anyone
willing to pay for it. It'd be cool, though to be able to just send
someone a 10KB GUI Python script and have it run in Windows natively
:)
 
C

Chris Mellon

Well, you should try qt too ;)

BTW, does wxWindow/wxPython have something that allows you to switch the OK
and Cancel button position according to the current machine GUI guidelines?

Yes. See wxDialog.CreateButtonSizer, which will return a sizer
(probably, on some embedded platforms it might not create actual
buttons, see docs) that has ok/cancel buttons in the standard position
for the platform, and with the correct stock graphics and text on
those platforms that have such a concept (like Gtk/GNOME).
 
L

Luc Heinrich

Peter Decker said:
You're full of it. I routinely write GUI apps in Dabo for both Windows
and Linux users, and they look just fine on both platforms.

Oh, I'm sure you do. Now go try to run one of your Dabo apps on a Mac
and see how it looks/feels... :>

Here's a hint directly taken from the Dabo homepage: "It also suffers
from the same display limitations on some platforms (most notably OS X),
but these should improve as the underlying toolkits improve."
Using sizers is the key; layouts just 'look right' no matter what the native
fonts and control sizes are.

No, sizers are a tiny part of a much bigger problem. Sizers might be the
key to solve parts of the "look" problem, they don't address any of the
"feel" problem.

But you clearly have a point here, so let me rephrase: "Crossplatform
toolkits/frameworks suck. All of them. No exception. UNLESS you only
target the lowest common denominator, aka Windows and its Linux
followers".

Now, the OP *explicitely* said that "[his] requirement is that the
application needs to look as good on Windows as on the Apple Mac", so
the rephrasing does not apply in this case. So here's a last try:

"Crossplatform toolkits/frameworks suck. All of them. No exception.
ESPECIALLY if one of your target is Mac OS".
 
P

Paul McNett

Luc said:
Oh, I'm sure you do. Now go try to run one of your Dabo apps on a Mac
and see how it looks/feels... :>

It looks/feels like a native app on OS X.

Here's a hint directly taken from the Dabo homepage: "It also suffers
from the same display limitations on some platforms (most notably OS X),
but these should improve as the underlying toolkits improve."

That was written a long time ago, and doesn't really apply anymore as a
lot of effort has gone into wxPython over the past three years getting
correctly interfaced to the OS X native API.

(Note to self: rewrite that (prescient) paragraph).

No, sizers are a tiny part of a much bigger problem. Sizers might be the
key to solve parts of the "look" problem, they don't address any of the
"feel" problem.

Admittedly, to some extent there is a lowest common denominator problem
inherent in any UI toolkit that tries to be crossplatform and use the
platform's native GUI. But for the most part, that just isn't the case
anymore in a practical sense.

Why not use the best crossplatform native toolkit (wxPython) and then if
you need native features that aren't provided, use ctypes or something
to get access to the native GUI? Nothing in wxPython or Dabo prevents
you from doing that.

But you clearly have a point here, so let me rephrase: "Crossplatform
toolkits/frameworks suck. All of them. No exception. UNLESS you only
target the lowest common denominator, aka Windows and its Linux
followers".

Absolutism sucks. Please try not to be so black and white about things,
and you may find you enjoy life more.

Now, the OP *explicitely* said that "[his] requirement is that the
application needs to look as good on Windows as on the Apple Mac", so
the rephrasing does not apply in this case. So here's a last try:

"Crossplatform toolkits/frameworks suck. All of them. No exception.
ESPECIALLY if one of your target is Mac OS".

It is much more nuanced than that.
 
P

Peter Decker

Oh, I'm sure you do. Now go try to run one of your Dabo apps on a Mac
and see how it looks/feels... :>

I don't have a Mac, although I would certainly like one. But one of
the two authors of Dabo is a Mac user, and says that he does all his
development on a Mac, and then tests it on the other platforms. Look
at the screencasts on the Dabo site - most of them are recorded on OS
X.
Here's a hint directly taken from the Dabo homepage: "It also suffers
from the same display limitations on some platforms (most notably OS X),
but these should improve as the underlying toolkits improve."

OK, it's true: you don't have 100% access to the lickable Aqua stuff
that a Cocoa app might be able to use. But paged controls use native
Aqua tabs; progress bars are native Aqua bars, buttons are native Aqua
buttons... Perfect? Of course not. But stating that it sucks is a load
of crap.
No, sizers are a tiny part of a much bigger problem. Sizers might be the
key to solve parts of the "look" problem, they don't address any of the
"feel" problem.

Huh? Based on what I've seen on the screencasts, the apps look better
on the Mac than they do on XP. How should I judge how they "feel"?
SIzers automatically take care of font metric differences and native
control size differences.
But you clearly have a point here, so let me rephrase: "Crossplatform
toolkits/frameworks suck. All of them. No exception. UNLESS you only
target the lowest common denominator, aka Windows and its Linux
followers".

Now, the OP *explicitely* said that "[his] requirement is that the
application needs to look as good on Windows as on the Apple Mac", so
the rephrasing does not apply in this case. So here's a last try:

Well, I don't think *anything* looks as good on Windows as it does on
a Mac, whether it is from a platform-specific toolkit such as Winforms
or a cross-platform toolkit like wxPython. If you want it to look as
good on Windows, you'll have to use VNC or something like that.
"Crossplatform toolkits/frameworks suck. All of them. No exception.
ESPECIALLY if one of your target is Mac OS".

Such self-important pronouncements would be better received if you
brought them down the mountain on stone tablets.
 
L

Luc Heinrich

Paul McNett said:
It looks/feels like a native app on OS X.

I'm sorry, but the screenshots I'm seeing on the Dabo website all look
like ugly Windows ports (when they don't look like straight X11 crap). I
can't comment on the feel of course, but I wouldn't hold my breath. I'm
downloading the screencasts as we "speak", but I'm not holding my breath
either.

[UPDATE] I have watched three of the Dabo screencasts and the presented
application are *very* far from looking/feeling like native OS X
applications. Sorry.
Why not use the best crossplatform native toolkit (wxPython) and then if
you need native features that aren't provided, use ctypes or something
to get access to the native GUI? Nothing in wxPython or Dabo prevents
you from doing that.

Eh, funny, I have used wx thingy for quite some time (when it was
actually still called wxWindows and then when they switched to
wxWidgets) and it's probably the worst of all crossplatform toolkits I
have ever used. So I'm not sure you'll be able to convince me here :D

Ok, now here's a question for you: if crossplatform toolkits/frameworks
are sooooo great and automagically allow to produce superlickable and
native-looking/feeling applications on all three major platforms, why is
there so few of those applications on OS X ?

"Because Mac users are elitists assholes" is not the good answer by the
way :)
 
L

Luc Heinrich

Peter Decker said:
I don't have a Mac, although I would certainly like one. But one of
the two authors of Dabo is a Mac user, and says that he does all his
development on a Mac, and then tests it on the other platforms. Look
at the screencasts on the Dabo site - most of them are recorded on OS
X.

Yeah, I have watched three of them and they are glaring examples of what
I'm talking about. The applications presented not only don't look right,
at all, they apparently don't feel right either.
OK, it's true: you don't have 100% access to the lickable Aqua stuff
that a Cocoa app might be able to use. But paged controls use native
Aqua tabs; progress bars are native Aqua bars, buttons are native Aqua
buttons... Perfect? Of course not. But stating that it sucks is a load
of crap.

No it's not, because you insist on presenting only one part of the
problem. Using native widgets is *far* from enough.
Such self-important pronouncements would be better received if you
brought them down the mountain on stone tablets.

No problem, let me get my chisel, do you prefer Fedex or UPS ? :p
 
D

Dennis Lee Bieber

Admittedly, to some extent there is a lowest common denominator problem
inherent in any UI toolkit that tries to be crossplatform and use the
platform's native GUI. But for the most part, that just isn't the case
anymore in a practical sense.
If one really wants to see "lowest common denominator", find a copy
of an ancient book "The Viewport Technician: A Guide to Portable
Software Design" (Bentley 1988). It attempted to cover old Macintosh,
Windows (pre WfW3, I think), Amiga, GEM, and Apple IIGS.
--
Wulfraed Dennis Lee Bieber KD6MOG
(e-mail address removed) (e-mail address removed)
HTTP://wlfraed.home.netcom.com/
(Bestiaria Support Staff: (e-mail address removed))
HTTP://www.bestiaria.com/
 
C

Chris Mellon

Ok, now here's a question for you: if crossplatform toolkits/frameworks
are sooooo great and automagically allow to produce superlickable and
native-looking/feeling applications on all three major platforms, why is
there so few of those applications on OS X ?

"Because Mac users are elitists assholes" is not the good answer by the
way :)

You've got a ridiculous straw man here. Nobody has ever said that they
do this, and nobody with any experience would. I don't actually think
you're interested in what is possible and what isn't, and I don't even
think that you actually evaluate the screenshots in a context where
it's possible for you to have any other opinion.

wx is the only popular toolkit of it's kind - it's a wrapper toolkit,
that uses actual native controls, not just ones designed to look like
them. For many wxPython/wxWidgets applications, there is *no
difference* between an app written directly to cocoa and a wxwidgets
app besides the API the author used. None, zero, zilch. Any "feel"
issues you claim to be present are solely because the author either
didn't know about or didn't care about a convention on the mac
platform.

The only other major cross platform toolkit with good mac support is
Qt, and I don't follow it's development closely. It may also use
native controls, at least in some cases, or it may still render
everything via the presentation manager, but regardless it's got a lot
of work and again, in most cases, it's hard if not impossible to tell
the difference between a "native" app and a qt one. I'm not a qt
expert so I won't spend too much energy defending it.

The look is easiest, of course. There's more to the look than just
that, of course, there's things like the stock behavior of controls.
wxPython gets that mostly for free, because it's using actual native
controls. There's things like the button order and layout, and wx
provides APIs to address that. Not everyone uses them, which is too
bad. There's some standard platform conventions like where your menu
items go. wx provides support for that. There's the fairly minor
issues of making sure your layout works with differently sized
controls and text, the wx layout mechanism addresses that.

Finally, there's some poorly defined "mac style" issues. wx, and no
toolkit, not even the native one, can address that. Many cross
platform apps are written on Windows with windows users in mind and
use windows assumptions, like that it's fine for a context menu to be
the only way to interact with something. This category is where almost
all complaints against cross platform apps fall, and it's ridiculous
because it's not something that a toolkit can address. You can, and
people do, write exactly the same sort of interface into mac native
applications. FinkCommander is a good example.

There's a few more caveats I haven't addressed, and there are places
where wx isn't perfect. In wxPython, there are quite a few commonly
used controls that are custom controls hand-designed in Python, and
don't wrap native controls, so that can be a problem. It's not a
panacea, and anyone who sells it as such is wrong. But it doesn't
"suck", either. And it's a lot easier than maintaining multiple GUI
codebases, especially for platforms that don't see as much use.

Why are there so few applications? The real answer is probably that
the mac developer community is smaller than either the windows or
linux dev community, and people who develop for the mac tend not to
care about any other platform. So most of the crossover comes from the
other direction, and the mac community, being elitist assholes, makes
scathing comments about how it assumes you have 2 mouse buttons.

FYI: OS X ships with wxWidgets installed. How many applications built
into OS X are built using it? Are you sure? How would you know?
 
H

hg

The said:
Can someone recommend me a good API for writing a sexy looking (Rich UI
like WinForms) shrink wrap application

My requirement is that the application needs to look as good on Windows as
on the Apple Mac


I would download the wxPython demo and test it on all platforms if I were
you: no coding and you see stuff right away / decide whether it is a good
choice.

.... I know it is mine (although I must confess I never tried it on a mac).

hg
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,754
Messages
2,569,521
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top