Is Adobe Air/Flash the easiest framework for advanced GUI development? - user-interface

Excuse a non-developer being forced to develop applications instead of administrating networks like I'm used to. This is a horrible post in many ways.
I'm developing an application which has reached the point of needing a GUI. However, I haven't done any GUI development ever before, so I feel the need to ask for help on this.
The application is your standard data collecting/management app, with all common widgets and stuff that every application is using. The problem is that I need the application to be able to display websites using an external browser of some sort, to pass a captcha on the site the application works against. The website guys haven't given me permission to circumvent the captcha in any way.
I know of GTK, QT, Tcl/Tk etc. None of these frameworks have struck me as easy to use. To be honest, I'd like to design the interface using drag-and-drop like I used to do in VB6 when I was a kid, although I get chills thinking about writing this thing in Basic.
I was thinking about Adobe Air, and to design the application in Flash/ActionScript. From what I've learned about Air, I should be able to do everything I want to do. And I do believe it has built in sqlite, right? Would it be considered more "simple" to develop the actual GUI using Flash than using one of the traditional frameworks? What pitfalls am I facing?
A few guidelines:
It only needs to run on Windows
I need to be able to work against a database. Currently using SQLite3.
Some sort of browser integration is crucial. A browser window of some sort needs to open up inside my interface, be directed by the application, and the application needs to be able to read some data from the site that is being used.
Any help with this would be great. This is a clear case where I have to rely on the experience of others to complete the project at all. I'm happy to provide more information if you need that to make a suggestion.

You can always try Titanium Framework, it was aquired by Appcelerator nor so much ago. http://www.appcelerator.com/
It actually puts a webkit browser in a window, so if you can design HTML and CSS you can use this framework.

Related

Auto-update with Windows Phone 7 and PhoneGap

I'm thinking of developing a Windows Phone 7 application using PhoneGap and have a few questions around functionality available. I haven't developed a WP7 application before nor used PhoneGap so forgive me if some of the answers to these questions are obvious.
Does PhoneGap support the capability to update HTML/JS/CSS/Images hosted by the WP7 app? I imagine it's possible to easily download new content, but whether one can update or extend the existing files PhoneGap is using for the application is not clear. Given that the application functionality will be primarily driven by HTML/JS, I assume it's possible to download updated HTML/JS asynchronously and update the content on the device. In effect, this would be tantamount to updating the application without downloading a new version of the application through the MarketPlace. Assuming this is possible, what are the chances that an application which does this will pass the application verification process?
Are there any specific restrictions/guidelines that one should pay more attention to when developing an application using PhoneGap? I doubt there are but it would be helpful if anyone has any specific advice in this area.
Any help would be appreciated.
1) The short answer is yes.
The long answer is that you will need to do some native (in this case C#) dev to make that happen. I don't know the specifics of PhoneGap, but I know you can call C# methods from the JS. So you would call a method to download the data and store it in the IsolatedStorage, and then maybe have a callback to the JS to let it know it's done. Otherwise, there may be a way to download the image in JS and pass it to the code behind, but unless the PhoneGap guys have specifically catered for this scenario then I highly highly doubt it.
1.2) Yes, this will pass cert just fine. It is not up to MS to determine how/why/when/where you get your content. They don't make any money out of you updating an app, so they won't care whether you work out your own content delivery system.
2) Maybe not exactly the answer you are looking for - but if you make an app in PhoneGap, or any other non-native way, the app-gods will strike you down. To put it simpler, PhoneGap and everything like it is crap. Not the actual framework (I'm sure they put a lot of work into it), but the results. Seriously, the moment you run a non-native app you can tell how terrible it is. I don't know how to stress this enough. It's really worth developing it natively to every platform.

Web technologies in GUI apps

What's your experience in using web technologies (HTML, XML, CSS, JavaScript) to implement part of the functionality of a GUI application? Pros and cons, please.
No servers, relational databases, AJAX, or cookies for session management, nor an existing webapp either, but rather a GUI app that uses web widgets (like Qt WebKit) to render and handle substantial parts of the UI, while taking advantage of a GUI framework to achieve an even richer interaction and better desktop integration.
I've already validated that the approach is possible using PyQt. Content can be rendered from the file system or from strings, and URL requests (images or clicks) can be captured and served by the form's event handlers. CSS and JavaScript are supported, perhaps with some limitations.
# ...
self.webView.page().setLinkDelegationPolicy(
QtWebKit.QWebPage.DelegateExternalLinks
)
#...
class TotiMainWindow(QtGui.QMainWindow):
def linkClicked(self, url):
pass # events arrive here
Note: This question is different from this one and this one made before, among other things because there is no requirement to use web technologies on the GUI, but there is the requirement that the application should work without a network connection available, and should integrate well with the default desktop over different platforms, without previous infrastructure requirements (no .NET, Java, browsers, or database servers).
Note: I posted a different version of this question on PMS but found very little experience with this approach there.
Closing Note
I just found most of the information I was looking for in a series of blog posts by André Pareis.
I think the largest advantage to using web markup like HTML/CSS and other web technologies is that desktop apps may very well have their days numbered.
As we speak, Google engineers are working on the Chromium OS, which essentially consists of a single GUI application... the browser...
Now, while nothing may never actually come of it, there is clearly a rising trend in the number of applications accessible through a web browser, accessible anywhere. It seems to me that this is the future of application development.
By using these technologies, this becomes one less headache you have to deal with when or if you determine that your app should be available as a web application.
Update: A few years ago, we developed an Agent Desktop for our call center that is essentially a local application that opens sockets to integrate with the phone system. The user interface the agents use is built with HTML, CSS, and JavaScript, and the experience is stunning. When we released our latest update in 2010 with a professional CSS redesign, our agents were all very impressed with not only how easy it was to interact but also how easy it was to use.
In the future we will port this 100% to the browser, but for now it needs to be a local application because of the COM integration with the phone system.
We did exactly this for a project back when Windows XP was new.
This gave my team several benefits:
A good-looking UI with relatively little effort
Easily change the style of the UI in a consistent manner using CSS
Relatively simple integration with C++ (invoking functions from the ui and vice versa)
The drawbacks we saw were:
Some not-so-good firewalls considered accessing internal resources (ie other html pages in the ui) to be a web request
Adding and accessing the needed resources could in some cases be a bit cumbersome
It was possible set properties in Internet Explorer that would prevent JS from running in the application
Note that some of Windows XP:s programs are using this approach.
This probably works best with small, more Wizard-like parts of the ui (which our ui consisted almost entirely of).
I have since then not really been involved in ui projects, so I cannot really tell you whether this approach is still valid... I know that MFC-based applications will let you use HTML-based dialogs though.
In a similar situation in 2005 I created a stand-alone webapp using XForms, CSS, JavaScript, XML and XML Schema for offline data retrieval and verification. With a good XForms -> HTML + JS transformer (Chiba) it did the job with no bug fixes after the initial release. It was used for 6-12 months (IIRC) by about a dozen engineers for a project gathering test data in the tunnel of the Large Hadron Collider. The biggest surprise of that project was just how much you get for free when going for a web platform, even for offline use. Highly recommended.
The major problem is that it reduces your development speed, or the quality of your user interface. A lot. Unless you're using Seaside, it is much faster to develop a desktop app.
There is quite some number of applications built on top of Mozilla platform. It isn't 100% web technology, as instead of HTML you use XML based XUL, but the rest is indeed web stack (JavaScript, CSS). The most successful of these it the OpenKomodo and it's commercial big brother Komodo IDE.
On the other hand, as far as Qt goes, the newest version 4.7 you can build GUI using QML language. Don't let the name mislead you, it's not markup, it acctually JavaScript with app-specific extensions.

most appropriate decision for dynamic web content

First of all, I'm sorry because of this lame question. But I'm kind of lost in all dynamic-html, ajax, etc stuff. So i decided get help from the pros.
Basically what I'm trying to do is creating a web page which have dynamic content(messages) coming from a web server(asp.net or php) presented in floating(movable by viewer) boxes in the page. And those boxes will be created dynamically upon a trigger from the server. And the viewer should be able to draw lines between those boxes to connect them(this information will also be sent/received to/from the server). Now which technologies should i use to have this? Is a combination of ajax+html5+jscript enough for this? Or do i need libraries like Yahoo's YUI, Google's GWT, etc.? Or, is flash/silverlight the best solution? Or something else?
Thanks
I'm no pro but I'd go for the HTML+JS+CSS version. As for the libraries, they'll help you in getting your content accross the many browsers and provide you with some nice utilities ;)
You don't need frameworks to do any of this. They might make the job easier, but, ultimately, they'll produce HTML and Javascript that make use of AJAX to get the job done.
Sounds like a big job, so be sure consider appropriate server-side and Javascript frameworks, and good luck.
You first have to decide between HTML5/JS/CSS, Flash and Silverlight for your client technology. Consider the client machines you need to support (Windows, Mac, Linux, iPad etc.)
You then pick your server-side language/platform. AJAX is your communication medium.
If you're going with HTML5/JS/CSS you'd like to pick a JS framework to speed up development. jQuery makes for quick coding. Other frameworks may have more features but are more abstracted from plain JS. You might want to use GWT if you're more familiar with Java than Javascript.

Advantages/disadvantages of browser-based interface vs. graphics

I'm in the design phase for a desktop-based application. Because of the nature of this particular application, I believe it would benefit greatly from a web-based approach (i.e., allowing a user to interface with the application through a browser running in kiosk mode) in order to leverage the simplicity of HTML/CSS/JS and the availability of many great JS interface plugins. Does taking this approach (rather than coding in a native or cross-platform graphics library) come with any gotchas?
Well, your access to the OS and other domains are going to be limited.
What about using something like Adobe AIR that lets you use HTML/CSS/JS and compile it into a proper desktop app?
Please look at http://www.terrainformatica.com/htmlayout/ - the library which was designed to create desktop GUI using html and css.
The main "gotcha" to doing a web GUI is that you are going to need to set up a web server of some kind. A gui app can be just a single executable. You allso (probably) will need some GCI coding to get information back from the user to your program. In general, it is liable to be a whole lot more work.
Balancing against that is the fact that any user networked to your webserver anywhere in the world using the OS and browser of their choice should be able to operate your program.

Are there any good drag&drop web app IDEs out there that support AJAX?

Can anyone recommend a GUI builder tool for creating DHTML web apps using AJAX to communicate with a web service backend? I'd like to avoid having to mess around with designing HTML, marshalling/unmarshalling data, checking for browser compatibility, etc. The tool should have a library of widgets that can be put into an application and hooked up to functionality, and be extensible enough to be able to define custom widgets. Of course free and/or open source is preferrable but I would consider proprietary tools too.
Also to what extent does the choice of GUI tool affect what platform or language I would use for the backend? If the GUI is just calling a web service then I should be able to use anything on the server-side to provide that interface but maybe some gui-side tools use a proprietary data exchange format that requires some specific server-side code?
Edit: I don't need a widget that can be dragged, I want an IDE that allows one to build a gui easily (i.e. a RAD tool).
WaveMaker is open source, runs on J2EE.
If you're comfortable with Java, maybe you could try Google Web Toolkit? http://code.google.com/webtoolkit/
I'm using Wavemaker and it does exactly what are u asking...
It is really easy to use and very perfomant....
I believe Dreamweaver does some of this, but in my opinion such editors are not a good idea. They produce horrible, unmaintainable server-side code and are quite inflexible.
Wavemaker beats everything else I have used hands down. Applications can be developed rapidly, has drag and drop, can connect to any web service, and has unmatched database management tools. The only problem with it is that it has kept changing hands/ownership so much and its future direction is not clear.
Delphi for PHP from Codegear has some of this capability, but I would agree with ceejayoz that such tools don't necessarily make for nice code.
On Dan's suggestion I took a look at GWT. I'd heard of it before but never looked at it that closely and it seems pretty interesting. Certainly it takes away the annoyance of pixel pushing and making things work in multiple browsers. I also tried searching for "gwt rad tools" and came up with a couple of results:
Instantiations GWT Designer (commercial, $59/year)
Wirelexsoft Vistafei (still in beta but will have a free and a commercial version)
I'll take a look at these but if anyone's used something else let me know.

Resources