Which language should I use to program a GUI application? [closed] - user-interface

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I would like to write a GUI application for management of information (text documents). In more details, it should be similar to the TiddlyWiki. I would like to have there some good visual effects (like nice representation for three structures, which you can rotate, some sound). I also would like to include some communication via Internet (for sharing and collaboration). In should include some features of such applications as a web browser, word processor, Skype.
Which programming language should I use?
I like the idea of usage of JavaScripts (like TddlyWiki). The good thing about that, is that user should not install anything. They open a file in a browser and it works! The bad thing is that JavaScript cannot communicate via internet with other applications.
I think the choice of the programming language, in my case, id conditioned by 2 things:
What can be done with this programming language (which restrictions are there).
How easy to program. I would like to have "block" which can do a lot of things (rather than to program then and, in this way, to "rediscover a bicycle")
ADDED:
I would like to make it platform independent.

There is no simple solution in 2010.
If you want to make your GUI platform independent, you have these options:
Run it as a JavaScript application inside the browser with a server running a program + database you like. Hard to get to work but the most simple solution for your users. There are good editors like CKEditor but they use HTML underneath, and sometimes, they are slow or weird. Also, they are absolutely unsuited for large amounts of text.
Use Java. Java is available for many platforms but not all. It comes with an UI framework called Swing that could be better. Java offers a huge set of frameworks and libraries. Most are free to use but it will take some time for you to select the best ones in your case. Plus: So far, there are no good text editor components in Java. So you either have to buy one or you must live with some ... oddities.
Use .NET/Mono. Not available right away for many platforms but you can find binary installers for Mono for the major ones (Linux and Mac) and Mono is available as source, so your fans can build versions for their favorite OS themselves. There are pretty good editor components for .NET but almost everything for .NET is either not free (as in freedom) or costs money.

Related

Windows Programming Languages (GUI) that doesn't require installing any framework/dependency [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I use C#/VB.NET most of the time to write windows applications.
But this happens when my customers need an app that doesn't require a framework (e.g .Net 4) to be installed on destination system . So the exe file can run without installing any dependency.
I know about C/C++ but writing GUI applications in them is so hard.
I heard about D language, but it seems to be very fresh and there is no (not enough) documentation at all.
Also there is Delphi but it's so expensive.
Is there anything else out there ?
note: I prefer compiled languages over interpreted ones.
If cost is a factor, since you reject Delphi, how about FreePascal with the Lazarus IDE. It's just hit version 1.0 and is of a very high standard.
Yes.
Understand the point of the libraries (DLLs): to avoid you having to bundle the common functions/methods/classes into your application every time. With that in mind, I would ask why the requirement to not install libraries on the destination?
Is it disk space? Required effort? Fear/Paranoia? (Lack of) expertise?
I would look to address the root cause of this "requirement" rather than try to work around it.
There are ways to statically link whatever functions/methods/classes/etc. your code needs directly into your binary.
If you go away from .NET and wander into the wonderful world of Windows assembly programming (warning: near-vertical learning curve), you can write tiny, tiny apps (we're talking a few K) that require nothing external.
If you want a GUI compiler for Windows that uses no framework, then you want Visual Basic Version 6, which hasn't been updated since 1998.
If you want a web scripting language for Windows that uses no framework, then you want Classic ASP, which sadly hasn't been updated since 2000.
Classic ASP rocked. It was miles better than the .NET framework. Microsoft is run by idiots. Perl and PHP are just stepchildren of Classic ASP. Classic ASP was the last good development tool that Microsoft ever made. What kind of idiots would assume that an overbearing framework would be suitable for all software development? The .NET framework is an ugly, bloated circus of auto-generated code that pours ice down the pants of real developers.

What scripting tool can I use for automated testing of Delphi programs? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm looking for a tool for automated testing. I will use scripting for testing, rather than just automating, which means that it can't just send some key-presses. It needs to examine the app's window to see if it was updated correctly. The cheaper the better, with no downside limit on cost. ;-)
I need a real language, with functions, variables, loops, branching, etc., and the apps are developed in Delphi.
I need to be able to focus controls*, wait for windows to appear, search for controls/windows, send keyboard input and check that various windows/controls have changed state (e.g a button is now disabled, a text box contains the correct text, a dialog box opens, etc.).
I used to use AutoIt a few years ago and am now coming back to scripting. I wondered if there has been any new development while I was gone.
Any suggestions?
* I do not want to move the cursor to absolute coordinates in case the app's layout changes. This quote from Wikipedia explains why:
Regression testing becomes a problem with GUIs as well. This is because the GUI may change significantly across versions of the application, even though the underlying application may not. A test designed to follow a certain path through the GUI may not be able to follow that path since a button, menu item, or dialog may have changed location or appearance.
I believe you just described TestComplete by SmartBear Software.
Autoit does everything you listed. I use it for the same porpoises all the time. Also, Delphi is good in the sense that uses standard windows controls which makes it very easy to hook into.
I've had some success with sikuli, which has the advantage of being python (jython) code. It is built on top of OpenCV, and uses a full image processing engine to pattern match parts of the screen. It also contains editors and functions for screenshots, waiting on changes, as well as keystroke and mouse injection.
Something different from my other answer: PyWinAuto
It has full scripting (because it's Python), it uses control names instead of X, Y coordinates, it waits for windows and you can send keypresses. And it's free.
The downsides should be obvious :)
To automate a delphi application main problem i found was that the any testing tools (QTP with delphi addon , Test Complete , Testanywhere, autoit, sikuli) they all dont detect any Tlabels and Tlist and and other components, which for an application build in delphi forms a prominent part of the UI. Even to do func based testing we need to ultimately examine a component in the front end to see whether a func is giving right out. Even to right a script to automate we need to first be able to detect and add the object to the repository.
We have an application in which we have heavy dependency on a lot of third party components. I have tried to check feasibility with almost all the tools available in market.
The top two tools in market were of no use.
QTP with Delphi addon is of no use even in there website they have openly mentioned it wont support many classes build in delphi.
TestComplete its better than QTP where in it detects many components menu components and if i remember correctly grid etc.
Then after few googling i found
TestAnywhere which was certainly better in detecting the thirdparty build components. Only problem i found with this was that it was not detecting Tlabel classes and some components dont remember which.
When i speak of detecting components it may be partial or fully ie some tools were able to detect that there is a component at XY co-ordinates but failed to get the component classes or details (like components property name etc) without which it was difficult in automating and writing a script.
Rest all was more or less combination or subset of these above there.
Still Searching !!!!!!!!!!!
With TestComplete, if you compile your app as an open app - i.e. include their libs, it makes your app super inspectable. Great for testing, probably not best for security. Test complete was the best, it is just TOOOO expensive for my budget.
The scripting in it is great, the understanding of Delphi is great. The pricetag is just not great, especially if you are trying to get traction for GUI testing within an org, like it sounds like you are.

UI Automation Testing Tools [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 11 months ago.
Improve this question
I'm working on UI automation.
We are using the following tools.
Bewildr
Snoop
Our WPF application uses a custom framework developed by the company. Many of the buttons are generated dynamically. For example, the controls that have ID guids, get new ID guids every time I run the program. Many controls don't have names.
Are there any other tools which might be worth a look?
Is this commercial or personal - ie do you have a budget? That'll affect whether you might consider the Mercury or HP suites, or just go straight to opensource ;)
http://en.wikipedia.org/wiki/List_of_GUI_testing_tools provides a good list of GUI testing tools. AutoIT is nice and easy to learn and use, especially if you're a coder anyway. Phantom AL and IcuTest are both useful for WPF applications.
If you have a budget, there's not much better than the Mercury/HP toolsets - QTP (QuickTest Pro) and WinRunner - the former uses VBScript while the later uses a custom Test Script Language - very clever for quickly writing tests.
I won't provide links to them all as the Wiki article already has that, but I hope that helps.
As for targeting the names, hypothetically you could work out the order in which they're being loaded and tab through them that way, ignoring names and guids. Alternatively you could send clicks to targetted coordinates on the app if you know where the buttons are going to be.
Mark,
There's nothing you mention that bewildr can't already do. Even if you don't know the name, id or even the type of object, you can always get elements dynamically using the .children method... See this for a brief intro: http://www.natontesting.com/2010/11/27/bewildr-0-1-7/
...and here for code examples:
https://github.com/natritmeyer/bewildr/blob/82cd1e907484583be26bc22024ca6a8f34c0d6a4/features/step_definitions/hierarchy_steps.rb
#Jon Abaca
As my knowledge, It depends on which interfaces you are going to test(mobile/web) and you are going to test those applications with code knowledge staff or not.
with less knowledge of coding, mobile testing, cross browsing and ci/cd. you can go with Katalon-studio, yes it's free
or else better to go with Selenium.
https://github.com/last-hit-aab/last-hit is a UI automation testing tool for chrome developer to test their web site without change test script

XUL runner as GUI framework for my application,what am i missing here? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about programming within the scope defined in the help center.
Closed 7 years ago.
Improve this question
recently i was introduce to the mozilla XUL runner as framework for front line GUI
this seems to be idial framework to me ( none GUI person ) based on xul and js for events
and gives me the possibility to use c++ as back end ( xpcom ) . its seams to good to be perfect .
my question is for the guys that have expireance in this frame work and can give me some points on the limitations of this frame work.
and also can i base commercial software on XULrunner binary ? some one knows about this license matter?
XUL is just part of a larger "Mozilla Application Framework". There's a lot of conceptual stuff to learn to get the most out this superb x-paltform development environment. Like the previous poster said, good documentation is hard to comb by.
I suggest you read McFarlane's book, there's an online version here ...
http://mb.eschew.org/
It gives a very thorough treatment -- so you can code feeling like you understand the platform rather than like you're accumulating hacks from the net. Another thing you can do is download well-written open-source Mozilla-based applications like Komodo Edit and Songbird, then browse around their chrome directories. You'll save yourself a lot of time by checking out XUL experts at work.
That being said, one major limitation I've come across concering comercial development is that the design of XUL requires you to write alot of your client code in JavaScript. This means that your customers (and competitors) will end up with a lot of your source-code. The obvious way around this is to code the "core" propriatory stuff code using another language and bind it to JS through XPCOM. The other method I've heard of (which I'm yet to try) is to ompile the JS into byte-code using mozilla's JSXDRAPI. Firefox itself does this internally to cache XUL/JS files. I'm yet to come across somebody who has gotten xulrunner to recognise compiled .JSC files though.
Edmond Begumisa.
I think the hard part is that you have compile binaries for every platform you want to support. That's pretty nasty limitation right there. And yes the Mozilla license is pretty liberal, it's just fine for commercial purposes, here's the license and here's an annotated guide. Here I like this overview.
XUL is great.
One downside is that it is not promoted as a desktop application development framework. So tools support is worse than Microsoft's, not everything is documented, it doesn't have components to do everything.
If you're going to do serious development with XUL, be prepared to have to learn the framework, including its implementation details. Basically, if you're using components that Firefox doesn't actively use, you will have issues you'll need to figure out on your own.
The framework being open-source and liberally licensed allows you to patch it and use a patched runtime in your application.

Creating a GUI application that wraps command-line programs on Linux and Windows [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 5 years ago.
Improve this question
I'm writing a GUI application that will let users interact with command-line programs. The programs are crystallography programs, in this case. They take a long time to run.
There's a certain common workflow using the command-line programs. The output from one program is typically processed and then is used by other programs. The user needs to be able to fill in various text boxes and select options that are sent to the command-line programs.
As I'm lazy and don't want to do more work than I need to, what tools are out there that will help me in doing this? The software needs to work initially on Linux, but also running on Windows at some point would be neat.
Would also be neat if there was some sort of DSL for non-programmers to be able to extend/modify the GUI application (to add new programs and change the options and so on).
Take a look at GTK Server it is easily scriptable from any language and since it runs as a service (bit like a browser) it can be used across systems. That is, the system running the command line stuff can be on a powerful system and the GTK Server running on the user's desktop PC. The examples are easy to follow and the matrix of versions and languages is bound to include yours. If you are unlucky, just pick the closest combination for examples.
I'd suggest having a look at the Galaxy web portal. It is basically a web based GUI to command line bioinformatics tools (but works equally well for any command line application), with workflow capabilities built in, and thus should have exactly what you're looking for.
It should be fairly easy to add your own wrapper, by following Galaxy's tool configuration format. See this page for how to do this.
TCL/TK was the traditional way.
Today I would use python with either wxPython (more complete) or FLTK(simpler).
If you don't need to readback results from the commandline program it's much easier -
eg os.system("command options")
You can use WShell and redirect stdin stdout.
object console = WShell.Exec(cmdLine);
if (console.StdOut.AtEndOfStream)
s = Pipe.StdOut.ReadLine();
Downside that you still have to figure out how to hode console window. But it is easy one. You need to find this window by window title and set its properties to ivisible. Or use freeware some utility from internet which can do it automatically for you.

Resources