Author : Göran Karlson, gorankarlson@users.sourceforge.net This software is distributed under the GNU GPL licens; either version 2, or (at your option) any later version. ImportInterface version 1.2 requires BOUML version 4.14+ 1 Generating the include statement for imported classes is done in the following manner and priority: If the property "II_IncludeName" exists, its contents is used. Example: The class QFile is contained in qfile.h not QFile.h. This requires the "II_IncludeName" attribute to contain "" Generated include statement: #include If an artifact exists for the class then this artifacts name is used. (Thanks Duna Zoltán for suggesting this.) Example: The class a,b and c are contained in the artifact abcClasses. Generated include statement: #include "abcClasses.h" If no artifact exists for the class, the class name is used. Example: For the class myClass, the following is generated. #include 2 All properties now have a "II_" prefix altough the old properties are still recognized (for now). I believe that all plugouts that uses attributes should have a plugout unique attribute prefix. ImportInterface version 1.1 requires BOUML version 4.13+ 1 Added copying of "_active" attribute in UmlBaseClass. 2 Removed use of property "LastImportTime". ImportInterface version 1.0 requires BOUML version 4.12.2+ Features: Defines an interface to a project. Initial import of an interface. Update an interface without redrawing all relations to the interface. Update all interfaces. Can only create interfaces from class views. Define an interface to a project: 1 For all exported elements (classes, attributes and operations) do Set visibility to Public or Protected.. Set the property "II_Interface" to "true". (Currently case is important). 2 Save the project. Initial import of an interface: This can not be done to the top package in the project because the plugout interpretes such an action as a request to update all interfaces. 1 Create an package just below the top and name it "imports" or "includes" or something equally appropriate. Note: an imported interface can be placed in any package except the top package. 2 Right-click the import package and select "Import Interface" 3 When the file requester appears, navigate to the .prj file for the project to import. Update an interface: 1 Right click the interface and select "Import Interface". Update all interfaces: 1 Right click the top package and select "Import Interface". Trace output: While importInterface is running, the actions taken are displayed in the trace window. Build and Install: 1 Uncompress the downloaded archive into a folder. 2 Open the importInterface.prj file using Bouml. Set the generation directory for C++ in the Bouml generation settings. Generate C++ source code and apply "Generate .pro" plug-out on the 'executable' artifact in the "API USER Deployment View". 3 Change to the folder where the C++ source (and .pro file) has been generated by Bouml. 4 Generate make file by using the "qmake importInterface.pro" command on linux/unix or use tmake on windows. 5 Copy the executable 'importInterface' (or 'importInterface.exe' in windows) to the Bouml directory 6 Configure Bouml to use the plugout for top package and packages. Implementation notes: The following properties are used by importInterface: "II_IncludeName" Set if the filename used does not correspond to the class name in imported classes. "II_Interface" Set to "true" if the UmlItem is part of an interface, see above. "II_ClassModelInterface" The project filename for an imported interface. "II_ClassModelImportTime" The last time and date the interface was updated. "LastImportTime" Has been removed, used to circumvate a bug that prevents the interfaces from beeing saved.