Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I want to create an application GUI that allows a user to create a visual state machine. The interface would work similarly to Microsoft's Visio product, where the user adds blocks or circles (states) and then connects the states with arrow lines denoting a change of state or an event. In the backend, I would like the GUI to create an SCXML file to describe the important connections.
See: SCXML in wikipedia
Here are some other requirements:
Cross Platform (Linux/Windows/MAC OSX)
Open Source
User-friendly
Qt implementation - (preferred, not required)
Here are some related projects:
http://ostatic.org/fsme - Doesn't work with new version of Qt, not well-maintained
http://doc.qt.nokia.com/4.6/graphicsview-diagramscene.html - very close, but missing some functionality such as multiple connections between two states.
If there are no other alternatives, I am going to take Qt's Diagram Scene example (above) and modify it to suit my needs.
I would love to know if anyone else knows of a well-supported and well-developed tool for dynamically creating visual state machines.
There is qfsm.
You might want to check the free QM modeling tool at: http://www.state-machine.com/qm. QM has been developed in the latest Qt 4.7 and runs on Windows and Linux platforms. The tool is specifically designed for hierarchical state machines (UML statecharts). If you know other graphical tools of this type (IBM Rhapsody, BoUML, MagicDraw, Enterprise Architect, or even Visio), you will appreciate the ease of creating nested states and routing transitions in QM. The tool generates C or C++ code based on the mature QP state machine frameworks. (Automatic code generation almost always is based on a framework.) QM is targeted mainly for embedded real-time systems.
Have you seen AutomataEditor? It can even do a simulation of an automata work.
It's written in Qt and it's open source.
I think you said
"I want to create an application GUI"
This means you need some framework to build an application..! If I'm correct,
You can take a look at this Javascript framework called JointJS
Its a JavaScript Diagramming Library. This site called FigurePool
is a good example of graph editor GUI built with jointjs! I hope this information will help you.
I'm also using it for Reservation Table Analyzer state machines.
Related
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 to work with Appium for mobile automation, now i want to use the same logic of Appium but for windows desktop application.
Is there any automation tool similar to Appium but to test desktop windows application?
(Other than RIDE and AutoIt) i 'm using ride with Sikuli library but i find that Is not as good as Appium which offer a many locations strategies by name,by id, by xpath ... there is no good strategy to locate elements only by image using SikuliLibrary or mouse click position using AutoItLibrary so that if i change from Windows 7 to 10 image will not respond to our scripts ....
Sikuli and Appium are two different types of application and test approaches. This is well beyond the scope of SO and I urge you to look elsewhere for that type of information.
Within the Robot Framework community a number of official/common libraries exist. These are well known and easily found. However, there are also a large group of libraries that are not found in the Python Repository but freely available on (example) GitHub. On top of this there are the plain Python modules that can be directly imported and whose methods are then usable as keywords. If your favorite application has a Python interface or module, then creating a Robot Framework Library is not difficult.
Given the specific topic of Windows Desktop Application testing with Robot Framework my first search result lead me to the Official Python Testing Tools Taxonomy Page for testing and it's GUI testing section. From this list the PyWinAuto project shows most promise as it supports windows and is open source. A Robot Framework Library robotframework-winbot exists, and still works but has not been updated in a while.
As you mentioned Appium, I've also taken a look there and although the Robot Framework Library keyword documentation doesn't seems to support Windows application, Appium itself has recently released some support for Windows Application UI Testing. This is based on the fairly new Microsoft Windows Application Driver. Python sypport is available, as there are Python examples in the Python Samples section, but no specific Robot Framework Library.
There may be other options, but I recommend you try these first and raise specific questions when you encounter issues.
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
I'm developing an application with the Qt open source edition. As I don't want to deliver the Microsoft Visual Visual C(++) redistributables, I'd like to use a static-linked version of Qt.
The Qt licensing information says that I "should" develop with a commercial Qt license if I want to use static linking in my application, although when I use the configure -static command for building a static Qt library the command prompt asks me if I use the commercial or open source version of Qt.
So it is possible to build Qt with the open source version? Do I need the commercial edition to use static linking? I won't sell the application.
EDIT April 2016
Actually, I have recently been reading in depth about LGPL, and asking some experts on the subject. Turns out that the inability to use static linking for Qt in closed source applications is more of a cultivated legend and has nothing to do with reality.
What LGPL requires is the possibility for the end user to relink the application against a different version of the library. Using dynamic linking is one way to achieve that, but you can just as easily provide your object files, this way you don't have to open your source and the LGPL requirement is still satisfied.
On the Qt website there are 2 legal FAQs and in neither of them is it directly stated that you can't do it. Just as it is not stated that you can. However, there are at least several instances of implying a vague legal threat in case that you do. I think there is a good explanation for all of those - they can't say that you can't do it without publishing a practical lie which may as well have negative legal repercussions for them, and they are willing to discourage doing that rather than encourage it, as it has the potential to force more people into purchasing a commercial license.
So in short, yes you can, and you most definitely should as lately Qt has become a living deployment hell, plus as of Qt 5.7 in a static build, QML files are tucked neatly in the executable rather than being out on the file system, for anyone to tamper with. Just make sure that:
your Qt build only contains modules, licensed under LGPL, and nothing GPL
the about section of your app mentions that it is using Qt and contains a link to where you can download the application's object files
include all the respective license files with your application
Lastly, your application actually has to be "relinkable", that is, it must be able to work with a compatible library version that provides the necessary functionality. Which means that if you have made modifications to Qt before building it, you must provide those in the form of source code as well, but only the modifications to Qt, not your application's source code.
Update:
Here is an excerpt directly from the GNU FAQ:
For the purpose of complying with the LGPL (any extant version: v2,
v2.1 or v3):
(1) If you statically link against an LGPL'd library, you must also provide your application in an object (not necessarily source)
format, so that a user has the opportunity to modify the library and
relink the application.
That states it pretty clear.
The old, original answer:
It is possible to build Qt statically as long as your application is open-source and you provide the source. If you want to keep your source closed, you either need an expensive commercial license, or you need to use dynamic linking.
BTW using a static build of Qt is pretty nice, for Qt5 I get about 7-8 MB executable with no external dependencies, which is much better than the 20+ MB of additional dll's you have to ship with a dynamically linked app.
For more information, you can take a look at this video: Making the correct license choice when developing with Qt
All in all, can it be done? 100% yes. Should it be done? It depends, for personal/testing/learning purposes it is 100% OK, however if you plan to distribute production grade software, be that commercially or not, open source or not, you'd better first consult with a lawyer. The whole subject is unnecessarily complicated, subject to interpretation, so that the consultation with a lawyer becomes more expensive than a pricey commercial license.
The answer is Yes, if you are willing to open source your application.
According to the Qt-Project's own interpretation of the licenses they use, if you dynamically link to the Qt libraries your application can be either closed source or open. If you statically link, however, your application is subject to the terms of the LGPL.
The exact language the Qt Project uses is this:
In case of dynamic linking, it is possible, but not mandatory, to keep
application source code proprietary as long as it is “work that uses
the library” - typically achieved via dynamic linking of the library.
In case of static linking of the library, the application itself may
no longer be “work that uses the library” and thus become subject to
LGPL. It is recommended to either link dynamically, or provide the
application source code to the user under LGPL.
(http://qt-project.org/legal.html)
The suggestion in some of the other answers that the situation is "not at all clear" is simply untrue - The Qt Project has tried to be abundantly clear about in what circumstances usage of the LGPL license is permissible, and static linking is one of those as long as the app is also LGPL.
Since the original question specifies non-commercial (not necessarily open source), the asker will need to decide whether they can allow distribution under the LGPL (or GPL by extension, as the above page also says "LGPL can be converted to GNU General Public License").
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
I have the intention to develop a commercial, closed-source application for mobile phones.
I've choosen to start with Symbian OS, as I've got a Symbian phone as
well, and I really like it.
I would like to adopt Qt, because it's actually the way suggested by
Nokia, and because I know I could port my app quite easily to ios and
other platforms by using the Qt libraries.
So, having to make the choose between Qt and C/C++/Carbide
I have one compelling question:
do I have to pay to obtain a license for using the Qt to develop a
commercial closed-source program?
Truly, I won't to pay for using a development tool, as I'm not sure I
could return on my investment. Besides, I have also to pay to open an
account for hosting my app on the stores.
Please feel free to correct my English if it sounds bad. Thnx.
No, you don't have to pay for the Qt framework to build commercial or proprietary applications. GNU LGPL version 2.1 allows this, and Qt is licensed under this licence.
Read about the Qt licensing here.
Extract:
This version of Qt is appropriate for the development of Qt applications (proprietary or open source) provided you can comply with the terms and conditions contained in the GNU LGPL version 2.1.
Note that LGPL still has some requirements. For example, if you improve the Qt sources to provide your application a better performance or to fix a bug, you have to make the source code of your modifications available to anybody you give (sell; distribute) your application to. As this is not a bad idea per se, one may want to keep such changes private and use it as a competitive advantage.
See also FAQ on Qt licensing (thanks to Claudio for the comments).
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
My company uses Qt 4.7.4 under LGPL for a commercial proprietary application.
We had to put two changes into the source code of Qt and re-build its DLLs to resolve some issues. What should we now do under LGPL? Are we to expose our source code? or do we just need to expose the Qt files we've changed? What is the nature of this "exposure"? posting them on a website?
how does that work?
LGPL is mainly meant for libraries and means that you can use Qt with "closed-source" applications, i.e. ones you do not have to divulge their source code.
Would Qt be GPL, you would have had to open-source your own app, too.
Now, LGPL also means that if you modify the sources of the library, you have to make these modifications open and public.
How this is done is not fixed in stone. If your modifications is of general interest, you should submit a patch to Code Review. see Contribute to Qt for more info.
If it is very specific to your needs, publishing the patch on your website should be sufficient.
Nothing has really changed, the Qt is still LGPL, your app is still proprietary
You have to make the modified version of the Qt sources available. The strict interpretation by GNU is that you must host your own copy of the Qt source tree that you you modified and make that available.
A more useful one, if these are just small fixes, is that you make patches to the Qt tree available. Ideally you would contribute these fixes back to the Qt source and have them adopted - which saves you from the effort of reapplying them to subsequent versions and makes it a lot easier for your users.
Hopefully with Qt moving to a more open development following the decline of Nokia this will become easier.
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 8 years ago.
Improve this question
What coding tools do you use for improving effectivness of programming in FLEX?
I found Tr.ace() AS3 Debugging Utility which help me a lot with working in a team of programmers?
frameworks like RobotLegs and others.
Signals.
What are the others?
Chris
I guess it depends how you define tools. These are some things used by me, or others I've spoken to:
ServiceCapture: This is a great program to see the packets being sent to and from the browser / Flash Player and a remote server. Charles is another common tool for this purpose; and Flash Builder now has a network monitor built in to perform the same task. ServiceCapture will also show the trace statements that your app puts out.
Step Through Debugger: The Step Through Debugger is a fantastic tool for stepping through code to figure out what happens. It's built nicely into Flash Builder; but there is a command line tool too. I assume that other Flex IDEs support this functionality.
Flash Builder: You can write code in a text editor and compile it via command line tools; but an IDE helps tremendously. Flash Buyilder is Adobe's IDE; and the one I use primarily, but others exist such as IntelliJ or FDT.
ANT: ANT is build tool that allows you to do a bunch of tasks automatically; such as compiling and automatically uploading to a server. Maven and CruiseControl are two alternate options I've heard about. I think both are much more advanced than ANT.
Subversion: Subversion is a version control system that allows you to track changes with your code. It is strongly recommended for any project; but has extra special benefits when it comes to projects with multiple people working on them. Other options are Git, and CVS.
I would like to add some thing with "www.Flextras.com" answer.
Profiling the application
Profiling an application can help you in understanding the following:
Call Frequency
Method Duration
Call Stacks
Number of Instances and their sizes at any givin point of time
Garbage collection and Loitering Objects
for More info refer the link
http://livedocs.adobe.com/flex/3/html/help.html?content=profiler_1.html
since the profiling and network monitor available to premium Flash builders.
~~~~~~~Happy Coding~~~~~~~~~
There is also
Flexformatter: This is a great plugin for Flash Builder that helps you clean up Actionscript/MXML code.
http://sourceforge.net/apps/mediawiki/flexformatter/index.php?title=Main_Page