QM™ (QP Modeler) Release History ================================ For the latest QM release, see http://www.state-machine.com/downloads/index.php#QM Installation ------------ Download the installer qm_-win32.exe. Run the installer and follow the instructions. Release 2.1.02, date: 28-Dec-2011 ---------------------------------- * Fixed the problem with the keyboard focus being removed from the Property Editor when the mouse pointer is moved over a diagram. Now editing text properties can continue regardless of the position of the mouse pointer. * Modified the behavior of the main window to eliminate the annoying context switches when the user moves the keyboard focus to another desktop application. Now the Bird's Eye View, the Toolbox, and the Property Editor would not be deactivated when the user clicks outside the QM application. * Added menu command and toolbar button for copying model links to the Clipboard. This is useful for quickly finding the corresponding model elements in the generated code (through the standard text find feature available in virtually all code editors and IDEs). * Changed the code generation to generate consistently the @()-style model links to match the copy-link feature. * Fixed the bug with model name not appearing in the Model Explorer when a new model is first created. * Fixed the unexpected switching of the Current Model Item when the user double-clicked text or code in the Property Editor. * Improved model checking to disallow creating circular dependencies of choice segments, which was possible when the begin of the parent choice segment was moved to the free-end of a child choice segment. * Changed displaying text in the diagrams to show only complete lines rather than cutting the text horizontally and showing only top slice of the last line. * Added the standard file extension ".ino" for the Arduino sketches, to recognize this file type and apply the correct (C++) syntax highlighting. The extension ".ino" has been added in the latest release of the Arduino IDE (Arduino 1.0). Release 2.1.01, date: 04-Nov-2011 ---------------------------------- * This release allows specifying comma-separated trigger lists for transitions as opposed to just single triggers. The code generator converts the trigger list into fall-through case statements. * Updated all examples for compatibility with QP 4.3.00. * Fixed a bug which caused crash when a model file failed to opened (due to version incompatiblity or a missing imported package) and the user would double-click on the Log message to inspect the failure cause. * Fixed a bug causing assertion on Mac OS X in module nodeglyph, line 289. Release 2.1.00, date: 20-Oct-2011 ---------------------------------- * This release provides support for breaking up model files into separate package files, which can be imported (included) in any number of models. This feature allows teams to work on different parts of a large model by breaking it up into independently managed and version-controlled packages. * Fixed the inconsistency between reading and writing the file items, which for empty files lead to "WARNING F802> ...parsing the model template file failed". Specifically, this warning occured for the model templates provided in the QM distribution. * Fixed the bug in resizing the diagram canvas, which could lead to breaking an assertion on Mac OS X (when the mouse coursor would momentarily leave and re-enter the diagram area). * Fixed the inconsistentcy in enabling and disabling of copy/cut/ paste/delete actions, which could lead to breaking an assertion in explorerview, line 321. Release 2.0.00, date: 21-Sep-2011 ---------------------------------- * This release provides support for Cut/Copy/Paste of model items within one model and accross different models opened in separate instances of QM. * The model file format has chaned compared to QM 1.x (to reuse the model serialization for Cut/Copy/Paste). This means that the models created with QM 1.x are incompatible with QM 2.x. *** NOTE: the /bin/ directory contains the utility qmconv-1-2 for converting models created with QM 1.x to QM 2.x. *** * Added panning of the current viewport to the Bird's Eye View. * Added Cut/Copy/Paste/Delete actions to the popup menus inside the Model Explorer. * Fixed several bugs and inconsistencies. Release 1.1.08, date: 11-Aug-2011 ---------------------------------- * This release is the first one available for all three platforms: Windows, Linux, and Mac OS X. * The directory structure of the QM installation has been modified to accomodate Mac OS X and to make it common for all platforms. * Changed the behavior of the "Generate Code" command to save the model to disk before generating code. * Changed the keys for panning and zooming of diagrams with the mouse to make it consistent with popular programs such as GIMP or Google Maps (bug #3381122). Now SHIFT activates panning and horizontal scrolling with the mouse wheel. When SHIFT is depressed, rotating the mouse wheel towards the back of the mouse will scroll horizontally right (i.e., the horizontal scroll bar will move right). This is exactly as in GIMP. CTRL activates selecting and zooming with the mouse wheel. When CTRL is depressed, rotating the mouse wheel towards the back of the mouse will zoom out. * Fixed the problem with C-style comments at the end of a file (bug #3355437). * Fixed the problem with print crashing QM on Linux (bug #3325130). * Added drag-and-drop of model elements inside the Model Explorer. Now you can drag packages, classes, attributes, operations, and paramters as well as directories and files (feature request #3116849). The drag-and drop feature verifies the types of the elements and allows only the meaningful operations. For example, dragging a class operation to another class, but not allowing dragging a state to a directory. * Added drag-and-drop of model elements from the Model Explorer to files. This allows quick generation of code directives without manually typing the element paths. * Added drag-and-drop of model files from the File Explorer (File Finder on the Mac) to the QM manin window, to open the model file. * Added "Close Model" command to the File menu. Release 1.1.07, date: 23-Jun-2011 ---------------------------------- * Fixed the bug causing a crash for the sequence: open an existing model, create new model, checking class properties. * Modified code generation to include generating Doxygen comments from the documentation for classes, class attributes, class operations, free attributes, and free operations. * Fixed bug related to incorrect updating of free attribute documentation from the property sheet. * Added collapse/expand button for documentation box in the operation property sheet. This is to allow more space for the code box. * Added toggle buttons to the View toolbar to allow easy toggling the view of the docking windows (Explorer, Property Editor, Bird's Eye View, and the Log). * Improved/corrected the locked/unloced button behavior and added the locked/unlocked status to the status bar. * Improved/corrected the Grid view button behavior and added grid status to the status bar. * Updated ARM Cortex examples for EK-LM3S811 to use the latest IAR EWARM 6.20. Release 1.1.06, date: 27-Apr-2011 ---------------------------------- * This release adds the "locked" moded for exploring or reviewing the model without the risk of inadvertently modifiying the model. * Fixed the EMF (Enhanced Windows Metafile) generation issue with the bounding box. When shapes in a diagram are selected only the selected shapes are rendered to EMF and the bounding box is adjusted so that it contains only the selected shapes. Previously, the EMF bounding box was always the size of the diagram canvas, regardless if only a tiny fragment of the diagram was selected and rendered to EMF. * Fixed the bug with keyboard focus, in which occasionally a diagram would ignore the Ctrl or Shift keys (for going into Selecting and Panning modes, respectively). * Added the Show/Hide Grid menu option and toolbar button. Release 1.1.05, date: 22-Apr-2011 ---------------------------------- * This release changes the permissions of the generated files to READ-ONLY, to prevent users from editing these files. This is to reinforce the policy that all changes need to be really made to the QM MODELS, not the generated files. * Fixed the bug in creating new models, which led to code generation errors: "ERROR F031 state machine not allowed in this class" * Fixed the EMF (Enhanced Windows Metafile) generation bug, in which all single ampersands ('&') were dropped and double ampersands ('&&') were replaced with a single ampersand. * Fixed the problem with closing a minimized window, which would lead to problems in opening the window again. * Fiexed the problem of not adding newly created models to the list of most-recently used models. * Improved error message reporting from XML parsing of the model file. * Added Help button to the "New Model" dialog box. * Added .pde file stereotype for Arduino sketches Release 1.1.04, date: 18-Mar-2011 ---------------------------------- * This release adds the QMC (QP Model Compiler) command line utility for automated builds. * Several minor improvements and bug fixes related to abrupt interrupting the QM session by popus (such as system update notifications). Release 1.1.03, date: 02-Mar-2011 ---------------------------------- * This release includes examples of QM models and projects for Windows, Linux, and ARM Cortex. * The default location of the help and model templates have been modified. Release 1.1.02, date: 05-Jan-2011 --------------------------------- * Made the code compatible with the Linux build (this is the first QM version offered for Windows and Linux). * Added the View|Styles menu. Release 1.1.01, date: 01-Jan-2011 --------------------------------- * Fixed internal framework models of QP/C++ and QP-nano to correctly inherit QActive from QHsm. * Fixed a bug in the MDI (multiple document interface) related to deleting a item with an active open MDI window (such as file item or statechart item). Release 1.1.00, date: 30-Dec-2010 --------------------------------- * Added consistent support for Unicode, from the model file, through all model elements, to generated code. Now, you can use Unicode characters (e.g., Chinese, Japanese, etc.) in your documenation and code (e.g., comments) and they will be preserved and propagated to the generated code. * Added options for specifying text endcoding for the generated code and the model file explicitly for most encodings used in the world. * Added customizability of look and feel via a style sheet (file qm.qss stored in the QM directory). Now you can customize fonts and colors of editors and diagrams. * Improved log file by adding double-click functionality for quickly selecting model elements corresponding to errors or warnings. Now you can double-click on any warning or error and the related item gets highlighted. * Added similar double-click functionality to documentation. This allows you to build hyper-links for cross-referencing items within the model. * Added documentation entry in property sheets to several model items, such as model, class attribute, class operation, free attribute, free operation. * Changed the way of storing documentation in the model file from HTML to plain text. * Added tons of documentation for the QP framework models. Now, when you expand the QP framework model item, you can find detailed documentation and code examples for all classes, operations, and macros provided in the QP frameworks. * Added support for QFsm (flat, not-hierarchical state machines), including code generation for classes derived from QFsm. * Improved selecting of diagram items (with Ctrl key) and panning of diagrams (with Shift key). * Fixed bug related to moving complex selections of states and transitions, in which transitions could occasionally get detached from states. * Fixed bugs and inconsistencies in the tabbed view (this was really an issue of the underlying Qt framework). * Improved syntax coloring for C/C++. The syntax coloring now highlights QM-specific elements, such as code generation directives, QP services, etc. * Added support for Makefiles (syntax coloring and proper generation of makefiles). * Eliminated any dependencies of the QM Windows executable on the Visual Studio runtime library redistributable (such as msvcr90.dll). The runtime libraries are now linked statically. * Many other cosmetic improvements. Release 1.0.08, date: 12-Dec-2010 --------------------------------- * Fixed a bug related to undo/redo of moving transitions with choice segments attached. The bug occurred when the user moved the choice-end of a transition, which had some choice segments attached. After executing undo (Ctrl-Z) the attached choice segments would not be moved, so they would become detached from the transition end. * Fixed a bug related to invalid initial transitions. The bug occurred when the target state of an initial transition was deleted (at which point the initial transition changed to dashed line) and the user tried to move the ball-end of the initial transition. * Changed the top-level comment placed in the generated code. Now, the top-level comment contains only the model file name *without* the full path name of the model file. This change was to make sure that a given QM model generates exactly the same code regardless of the directory in which the model file resides. Teams working with VCSs (version control systems) often check out the master model in various working directories, but they rightly expect that the generated code be identical. * Changed the code generator so that every generated file is terminated with the new-line character. Some C/C++ compilers require all files to be terminated with new line. Also improved parsing of the files and error reporting. * Added context-sensitive help, which is activated by 'Ctrl-F1'. The context-sensitive help checks the position of the mouse cursor and displays the help for the specific window under the cursor. NOTE: The actual help pages are under development, so currently only a placeholder page is displayed in your browser. The online help will be gradually added and you will not need to upgrade the QM tool to get the new help. * Other cosmetic improvements. Release 1.0.07, date: 27-Nov-2010 --------------------------------- * Fixed bug related to adding connectors without dragging them out of the attachment point, which results in zero-sized connectors. Such connectors are illegal and were deleted, but the property sheet was not cleaned up. Now adding a zero-size connector removes the connector and cleans up all views. * Added a proactive fix to an unreproducible bug (assertion in diagramview, line 214). * Changed how code editors resize in the Property Editor window. Previously the code editor grew only to about 20 lines of code in vertical direction. Now the code editor always fills the whole available vertical space of the Property Editor docking widget. * Made the same change for text (documentation) editors in the Property Editor window. * Added version number reporting in the Assertion message box. Most users never reported the QM version number when they encountered an assertion failure. * Implemented editing of a new directory name and a new file name immediately after these elements have been added to the model. * Added close button (x) to the subwindow tabs in the tabbed view. * Fixed inconsistent behavior of the tabbed view after closing a subwindow. * Other cosmetic improvements. Release 1.0.06, date: 20-Nov-2010 --------------------------------- * added docking widget with the zoomed-out view of the current diagram ("Bird's Eye View"). The "Bird's Eye View" is designed to improve orientation in large diagrams by showing the position of the current viewport in the relation to the diagram. * improved consistency of the diagram panning mode and fixed bugs related to entering the panning mode while in the middle of moving/resizing nodes or dragging connectors. Now, the panning mode can be activated only when there is no dragging in progress. * added vertical scrolling of diagrams with the mouse-wheel * added horizontal scrolling of diagrams with Shift mouse-wheel * changed zooming of the diagram to Ctrl-mouse-wheel * fixed bug related to pressing right or middle mouse buttons in the middle of moving node(s) or connectors. * fixed incorrect behavior of connectors when dragged to zero-size (when the begin overlapped with the end). * other cosmetic improvements. Release 1.0.05, date: 17-Nov-2010 --------------------------------- * this release fixes the bug in C-code generation in definition of free operations. * there are some cosmetic improvements as well. Release 1.0.04, date: 17-Nov-2010 --------------------------------- * bug fix in adding, deleting, and adding a class to a package * added diagram zoom slider and buttons in the status bar * added panning of the diagrams. Panning is activated by pressing Shift in an active diagram. Release 1.0.03, date: 29-Oct-2010 --------------------------------- * bug fix in editing of class documentation that can break assertion in classheet, line 148 (this turned out to be an undo/redo issue of incorrect unwinding of the undo stack.) * improved consistency of line-wrapping between screen output and EMF output. * allowed using backslash characters ('\') in guard conditions to enforce line breaks in displaying the guard in the diagram. The backslashes are removed in the generated code. * used lighter background colors for states in the EMF output * added cleanup of the generated code, so that it contains no superfluous white space (extra spaces could be present in the user-defined action code.) Release 1.0.02, date: 26-Oct-2010 --------------------------------- Release 1.0.00, date: 20-Oct-2010 --------------------------------- The first official QM™ release contains the following features: * Graphical modeling tool based on the UML state machine subset * Automatic generation of production-quality C or C++ code * Automatic model verification during the code generation * Built-in support for QP/C, QP/C++, and QP-nano frameworks * 100% traceability from design to code * Ultimate flexibility in generated code design * Friendly to version control systems (VCS) * Intuitive diagramming environment for making clean, good-looking diagrams * Export of diagrams to EMF vector format for direct pasting into MS-Office and Open Office applications * Modern user interface with docking windows with the layout saved across sessions * State of the art editors for action code with syntax highlighting * Undo/redo of all model edits * Quick Clipboard-based navigation between the model and third-party tools * Support for user-generated model templates * Ready-made project examples and online tutorials * Completely free to download and free to use