How start with XUL development? - user-interface

First of all, I need to say that my English is not good. So I sorry for errors in this post.
Second, I'm a professional programmer for 2 years. Main programming language is VB.net (that I find somewhat limited when speaking about User Interfaces).
I love user interfaces, and I really want to be able to create software in Windows environment that has great User interface. After a long time searching for such a thing I discovered a Thunderbird theme that makes exactly what I want! This theme is called "Leopard Mail-Default-Aqua". This is really beautiful.
After some research I discovered that the Thunderbird UI is created using something called XUL, and that XUL is a descriptive language for user interfaces. Now I'm very interested in creating applications using this platform, but have no idea where to start.
After some research I also discovered that Microsoft created WPF to separate GUI from logic, and WPF support themes, but to me it's much more lucrative to learn XUL that is multiplatform, than WPF.
I need some directions on how to start development in XUL, and also very important, how can I use existing themes for Thunderbird in my XUL applications, so them look really great?
From what I've seen, applications developed in XUL uses javascript or C++ to program logic. Is this correct?
Also, as I came from .net programming that is event driven, I'd like to know if XUL development is also event driven, so if I want to respond to a button click for exemple, I can connect a event to a code/function.
Thanks a lot for your help.

The best place to find XUL documentation is at the Mozilla Developer Network Here are some specific suggestion from MDN and other places:
Introduction to XUL
XUL tutorial on the Mozilla Developer Center
XUL Periodic Chart (Open in firefox, provides a demo of various XUL widgets)
XUL Explorer (Provides a simple interface for learning XUL/building a XUL window)
xul #xulrunner on Mozilla's IRC channels (Low traffic but if you have a specific question you may be able to get a response here)
XUL mailing list
And yes, XUL is event-driven, you attach events to buttons and other widgets and Javascript functions respond to the events.

There is XUL documentation at
https://developer.mozilla.org/en/XUL

I think it's Qt you've been looking for, not XUL. There's plenty of tutorials to get you started.

Related

Are there any ui automation tools that allow you to change/add elements to a window?

With selenium, we can get/change/add html elements from/to a web page.
But what about win32 based applications?
All the ui automation tools allow you to get elements of windows and verify the content. And they can also simulate mouse and keyboard events.
But are there any ui automation tools that allow you to change/add elements to a window?
Or are there any other tools/APIs available for that purpose?
Given an arbitrary Win32 application, of course not. The question assumes that the UI framework for the app supports runtime modification, and most don't. (That even assumes that the app actually has a UI framework.)
There are many commercial tools for non web applications. Open source examples would be AutoIt, Twin, Sikuli..........

Phonegap basics - designing ui for iphone and android

I'm developing an application both for Iphone and Andriod using Phonegap.
I came up with all kinds of plugins JQuery, JQTouch and more,
What is the recommended way of doing this?
Meaning-designing a generic UI (tabbars, tables, navigation bars etc') for both Iphone,Android that will "feel" native?
Thanks,
Asaf
If you want your application to look as native as possible I'd try jQuery Mobile.
The documentation is brilliant and all of elements look native to the iPhone. It's also incredibly easy and quick to build up your UI as all of the design and colour scheme has already been done.
I've used this in an Android application that I've made and I've so far received very positive reviews.
You may also want to look out for Kendo UI which is out this month! Again, very similar to what jQuery mobile is about with a few exceptions. It has great support for graphs and data, and promotes native Android look and feel.
Sencha Touch has just released version 2 and it is a good JS toolkit as well.
I feel I have to put my hat in the ring for jQTouch. Although the version downloadable from their site is a bit oldish, if you get it from GitHub it is currently maintained and works well on both iOS and Android. https://github.com/senchalabs/jQTouch
Also, if you want the fixed headers or footers with scrollable elements in-between, DataZombie's fork of jQTouch includes iScroll which does a great job of this. https://github.com/DataZombies/jQTouch
I am also in the process of developing a theme for jQTouch that will allow apps on Android to feel quite a bit more "native" than the other js kits as they all seem to have a very iOS-cenrtic navigation style (e.g.: back buttons on toolbars instead of relying on the hardware back button, etc). Even if you don't want to wait for my theme, making your own is pretty easy on jQTouch. I would not call myself a designer and I managed. ;)
Feel free to choose one of the other answers, but keep jQTouch in mind. I tried and tried other JavaScript frameworks and it was the only one that made it possible to look good on both platforms.
jQuery Mobile works awesomely.. and with the theme roller coming soon it will be pretty good.
Kendo Mobile UI - Pre release rip.. I have a working Eclispe project here.. markup is identical to jQuery mobile.. but this is faster, nice native looking apps. Take a look

Custom UI design in Sencha and othere touch frameworks

Can someone please guide me regarding which touch framework (javascript) I should use to make a tablet app? I am new to this area and I am looking for something which allows me to play with my own UI design comfortably.
I went through sencha as I heard its apt for a tablet app environment but I am (sorry, it might sound odd) not able to make out whether I can use my own UI design to make app in sencha. Or any other framework (stable) allows to use custom UI design?
There aren't any major differences between handsets and tablets, except for the screen size. For example, what you would show in a handset in one long scrolling screen, would be shown in a split-screen on a tablet (I am concentrating on the user-experience here).
Split-screen support in still rare in the jscript frameworks, since webkit browsers didn't fully support scrolling only parts of a page (i.e. an iframe or overflow:scroll divs), this support is only now starting to get materialized with iOS5 (Android already had this since 2.2, but it never worked right).
There have been other jscript solutions (like iScroll), but being client code they are not always bringing the full "experience" to the client.
The JQuery-Mobile docs have a version under testing, you can try that in a tablet/handset to see the differences.
Regarding your "own UI design", if you mean colors/icons/buttons that's possible on any framework. Where the problems start is when you want to create custom layouts, and each framework provides partial support depending on what exactly you want to achieve.
In general, I'd say Sencha totally separates you from HTML design - you build everything using JSON controls and it has an extensive events/rendering code (of course you can write your own controls), whereas frameworks like JQuery mobile work directly on the HTML (you specify data-* attributes for the details) and renders it almost the same (ok, it does adds wrapping layers, but in general it's still pure HTML).
As always, "it depends" on what you want to achieve and what you are ready to give up... ;-)
Sencha Touch (our framework) is particularly well suited to tablet apps because it has an implementation of multiple scrollable areas that works on older iOS and RIM devices, not just iOS5. But, the intention with Sencha Touch is that you create your app using the built-in UI components (carousels, momentum lists, tabs, etc.) or, if you have unique UI elements, then you will need to extend an existing component or build a custom component. If you're expecting to be able to slap some of your own HTML into innerHTML or even a Touch xTemplate, then you will be setting yourself up for failure. But the good news is that there are tutorials on doing your own components, and there are plenty of apps that you can look at the source of, in order to guide your development. Lots of people have built apps with custom UI's
You need some level of JavaScript experience to use Sencha Touch, so if you're coming from a non-JavaScript web design background, you'll have to get down the JavaScript learning curve first.

Usability of applications without the traditional "menu" bar

I've noticed recently that it seems to be a trend in Windows applications to no longer include the menu bar in an application (the "File Edit ..." menu), instead having the functionality linked to icons seemingly randomly spread around the application window.
for example: IE8, Windows 7 media player.
Is there any usability evidence driving this change? (I, personally, find these apps really hard to use)
If so, can someone suggest where I might find this research and perhaps some guidelines for writing new applications using this style?
Some answers have suggested that it's the "Ribbon" style, which appears to be what I'm looking at. I'm still having trouble finding guidelines or evidence of what works/doesn't work.
The MS Office Ribbon perhaps inspired the latest slew of apps that use multiple icons without text labels in lieu of a menu bar. However, the implementation of these apps apparently failed to understand or realize the advantages of the Ribbon or even what makes a Ribbon a Ribbon.
Controls labeled with icons alone are more difficult to learn than those labeled with text alone [See Wiedenbeck S (1999). The use of icons and labels in an end user application program: an empirical study of learning and retention. Behaviour & Information Technology, 18(2)]. The lack of text labels for groups of controls in these apps can’t help.
Note that the Office Ribbon generally avoids both of these pitfalls by providing text labels for groups of controls (the Office Logo being a notable exception) and text labels for most individual controls (many controls on the Home tab being another notable exception).
After being subject to much research, the Office Ribbon largely preserved the traditional File-Edit-View arrangement of commands found the traditional menu bar. There’s no evidence that there’s anything wrong with this organization.
IMO, icon-scattered UI designs represent a fashion or branding statement, a rather clumsy attempt to appear “state-of-the-art” like Office, and an excuse to decorate the UI with graphics. They are not a usability improvement.
For everything about the Ribbon, see Jensen Harris’s blog.
My critique of the Ribbon. Not that I'm particularly satisfied with the traditional menu bar and tool bar.
It is ribbon. Presumably it is easier to use than the standard menu because it is context dependent. The whole purpose of developing it was that despite the fact Word can do almost anything now, people were complaining it is missing some features just because they couldn't find them. So MS people were thinking hard and ribbon is what they created. Being context dependent it shows you the features you might use right now, not all the features and it saves screen estate so more features actually visible to the user.
Well, after a quick search I found a reasonable explanation of this UI trend. It is based on the Ribbon concept. It traces back from Office 2007 and even Firefox is using it.
References:
http://www.pcpro.co.uk/news/351808/firefox-tidies-up-with-office-2007s-ribbon
http://slashdot.org/story/09/09/23/1846248/Firefox-To-Replace-Menus-Wi
https://wiki.mozilla.org/Firefox/Sprints/Windows_Theme_Revamp/Direction_and_Feedback
http://en.wikipedia.org/wiki/Ribbon_(computing)
The ribbon still serves as a navigation area - a combination of a menubar and toolbar that tends to be organized by area (Print, Design, Layout, External Data) rather than traditional style (File, Edit, Tools). While it does take a bit of getting used to things being organized by area, it certainly adds to the usability.
I think the reason IE 8 integrates the menu bar into the same line as the tab is to allow for more viewing real estate (or junky toolbar add-ons). A ribbon would be overkill for something as simple as a browser where 99% of the time you do one of 3 things: Enter a URL, Go to Bookmarks/Favorites, or Print.
If you are writing a Windows-based database system or other complex application, definitely checkout how Microsoft utilizes the ribbons throughout its Office products.
The "ribbon" is nothing more than a FAT toolbar. Such things are getting invented, not because of user request or need, but because of the arrogance of large corporations and bored, rich managers and "developers" sitting around with nothing to do. "Inventing" things is one thing, but FORCING it on everyone w/o preserving the previous, non-cluttered, classic, working, familiar interface is absolute arrogance. People need to be informed. You don't have to put up with it. Say something.

XNA and GUI controls (eg. xaml and xna)

Is there a way to get textboxes, labels and other wpf controls in xna that supports margins, etc that flexes for window size?
You might give CeGui a shot.
If your game needs advanced GUI capabilities, CeGui# might just hit the nail on the head for you. Marketese aside, this is a seriously good GUI library with Buttons, ListBoxes, Scrollbars, ProgressBars, Sliders, ComboBoxes and more.
To access the Xna version you'll need to check out the latest copy from the project's SVN and load up CeGui-XNA.sln.
There are other options listed in this thread, but I have no idea how well any of the others work (and it probably isn't a comprehensive list anymore).
The official GUI systems FAQ thread in the XNA Forum:
What GUI systems are there for the XNA framework?
CEGUI# is powerful, but it doesn't support the Xbox 360 (eg. its design doesn't include responding to game pad input) - a major overhaul would be required to refit it to be usable with something else than mouse and keyboard.
Not exactly what you're looking for, but here is an example of getting winforms GUI elements mixed in with XNA 3d content:
http://creators.xna.com/en-US/sample/winforms_series1
Check out SQUID: http://www.ionstar.org/
It's a really clean, fast, and engine independent UI system. I've worked with it extensively and really enjoy using it. The download includes sample code for XNA 3.1, Truevision3D, and SlimDX.
It is possible to embed an XNA game in a WPF form (google: XNA in WPF) if you target only Windows system. You will then have access to all the controls available in XPF for your 2D GUI.
If you also target Xbox 360 or Zune; you must make your own GUI library :(

Resources