.com Solutions Inc. - Logo  
services header buttons
.
FmPro Migration bullet item 7b FmPro Upgrade bullet item 7b FmPro Development
.
.
.
. .

Email a Friend

Bookmark This Page

 

FmPro Migrator Demo Image

order now button

 

 

A LiveCode DB App in 3 Seconds or Less

LiveCode articles
by David Simpson

Article Part #1
Article Part #2
Article Part #3
Article Part #4
Article Part #5

 

 

 

 

 


..

. .

...
.


LiveCode Conversion


The converted Contacts database links below include:
  • Standalone macOS or Windows apps.
  • LiveCode stack files ready to build your own standalone apps.
  • Converted script files for scripts, Stored Calcs, Unstored Calcs.
  • FileMaker Contacts.fmp12 database.
  • ReadMe PDF file showing manual changes which were made and detailed code examples.
  • SQlite database.
What is LiveCode?
How to Perform an Automated Conversion from FileMaker Pro, Microsoft Access or Visual FoxPro into LiveCode
Contacts_macOS_9.26.15.zip (29.6Mb)
Contacts_Windows_64bit_9.26.15.zip (81.8Mb)
   

FmPro Migrator Platinum Edition 9.37 - Fixes an issue with the saveRecordsAsPDF handler in which a couple of local variables weren't declared.

Top 10 Features

black bulletInstantly generate a full featured LiveCode desktop or mobile application, including Print/PDF, import/export, insert, query, update, and delete functionality.
black bulletProcess your files locally, using FmPro Migrator Platinum Edition.
black bulletAutomated conversion of FileMaker Pro Layouts and Microsoft Access and Visual FoxPro Forms/Reports to LiveCode stack files.
black bulletFileMaker Pro scripts and Visual FoxPro PRG code is converted into executable LiveCode code.
black bulletIncludes SQL Library, Unstored Calc Library, Stored Calc Library, Value List Library, fmFunctions_Library, and LiveCode Data Grid technology for sophisticated database functionality.
black bulletSupports conversion of relationships to related tables and fields on the same form and within portals/Data Grids.
black bulletFill-in field queries includes AND/OR record searching feature.
black bulletFound set record processing includes scrolling thru records, new record/delete record features.
black bulletConverts Tab Controls into LiveCode 9+ Segmented Widgets including hide/show scripting.
black bulletSaves weeks of development effort writing a full featured database application.

For more info please send email or call.

 

Description

The LiveCode Conversion feature included in FmPro Migrator Platinum Edition generates a full-featured LiveCode front-end application from FileMaker Pro Microsoft Access and Visual FoxPro database files. This feature quickly and efficiently converts layouts, scripts, relationships, and value lists into a LiveCode application for building macOS, Windows, Linux desktop apps, or Mobile apps (supporting: IOS, Android). This feature leverages the automated layout and relationship importing features of FmPro Migrator Platinum Edition, along with FileMaker Pro Advanced, the LiveCode IDE.

LiveCode Migration Screenshot

LiveCode Conversion Pricing

FmPro Migrator Platinum Edition includes the LiveCode Conversion License Key (250 Layout Quantity - Unlimited Number of Database Files)

order now button


FmPro Migrator integrates a variety of LiveCode extensions into the generated stack file. Other extensions are worthy of consideration to enhance the generated application stack file., and require a separate download/purchase.

LiveCode Extensions Implemented
Name
Status
Cost
Usage
Button Bar Widget Separate Download [Required]
$0
LiveCode 9 compatible. Open Source.
calendarWidget100 Included
$0
LiveCode 6.7 compatible (not 7.0 compatible)
DatePicker Separate Purchase
$79
Date picker, compatible with LiveCode 6.7/7.0
FieldFormatter Separate Purchase
$79
Data independent field formatting utility. Dual Licensed Commercial/Open Source.
ChartMaker Separate Purchase
$79
Full featured cross-platform library solution designed to create professional charts. Note: FmPro Migrator builds placeholder LiveCode 9 LineGraph widgets. This extension can be used by LiveCode developers to create new full featured charts in LiveCode having more features than the LineGraph widget.
ChartsEngine Separate Purchase
$99
ChartsEngine is a powerful, yet lightweight library to create charts in a LiveCode. Note: FmPro Migrator builds placeholder LiveCode 9 LineGraph widgets. This extension can be used by LiveCode developers to create new full featured charts in LiveCode having more features than the LineGraph widget.

hline image

The features and benefits of using the LiveCode Conversion feature include:

black bulletSave Time, Get Up and Running Quickly - It can be a tedious and time consuming process to manually re-create each FileMaker Pro, Microsoft Access or Visual FoxPro form object using any other development environment. Rather than spending days or even weeks of valuable time manually converting hundreds of layouts, LiveCode developers can utilize the LiveCode Conversion feature as an economical alternative. FmPro Migrator Platinum Edition typically processes each layout in less than 1 second - much faster than you could perform the task manually!

The ability to efficiently perform LiveCode migrations makes it possible to quickly show prototypes to prospective customers. An automated migration process represents the ultimate in rapid application development, which can't be matched by any other development environment. Being able to show customers a rapid prototype may make the difference in getting approval for a new client project.

black bulletScript Conversion - Each FileMaker Pro script imported by FmPro Migrator, is converted into executable LiveCode code and written into a text file within the output directory. These scripts are intended to be used as a template for the writing of new LiveCode code which will be used to replace the original FileMaker Pro script functionality by the LiveCode developer. FileMaker Pro script instructions are parsed and replaced with one or more equivalent LiveCode commands. Visual Basic code from Access database files is converted by the BASIC to LiveCode conversion feature.

black bulletA Learning Tool - It could take weeks of work reading hundreds of pages of documentation to learn how to develop a full featured database application by yourself. Or, you could let FmPro Migrator do all of this work for you within a few seconds. FmPro Migrator builds a sophisticated database application having many of the features users have come to expect from a database application. The generated application stack file includes Printing, Print to PDF, Import/Export TAB delimited files, Preferences.JSON, DBConnection.JSON preferences features.

black bulletIncluded Library Substacks - Several Library substack files are created during each conversion in order to replicate the original database application functionality. These Libraries include: SQL Library, Unstored Calculation Library, Stored Calculation Library, Value List Library, Validation Library, fmFunctions Library, Globals Library and Images Library.

 

SQL Library Framework

SQL Framework Diagram

All of the database management code generated by FmPro Migrator is implemented by using the SQL Library database framework developed by .com Solutions Inc.. The SQL Library simplifies the development of LiveCode applications by enabling the developer to work with properties and arrays instead of writing SQL code and easily manage the relationships converted from the source database. Related records are retrieved within nested arrays which can easily be passed on to the LiveCode Data Grid object.

The SQL Library code generated by FmPro Migrator works efficiently with large data sets. First, all of the Primary Key values for a database table are retrieved into an array in memory. All of the data for an individual database record is retrieved only for the current record being viewed by the user. A new record is only loaded from the server when the user clicks the Next/Previous buttons or moves the scrollbar to the new record. This technique reduces the load on the SQL database server, reduces network bandwidth requirements and reduces the possibility of having stale data in memory.

The SQL Library code calls upon handlers within the Validation Library, Stored Calc Library, Unstored Calc Library to prepare data for display or writing to the database. The Value List library supports field based and custom value lists when displaying data on the converted cards of the new application.

Query By Example & Found Set Processing Find Mode Menu

FmPro Migrator generates sophisticated Query By Example infrastructure enabling your application's users to enter Find Mode, fill in the appropriate fields and then press the Find button to retrieve the records.

Search Criteria Symbols Menu

Find Mode Symbols Menu

Search criteria symbols are implemented with a handy pop-up menu (1), which inserts the requested symbol into the currently selected field (2).

Once the user clicks the Find button, the search conditions are gathered from each of the fields and a SQL query is run against the SQL database.



AND/OR Record Search

Find Mode AND/OR Search Menu
SQL databases easily support AND as well as OR search criteria in a straightforward manner. The converted LiveCode application provides for AND/OR searching via a pop-up menu.


Found Set Record Navigation

Find Mode Record Navigation

In found set mode, the number of records found out of the total number of records in the table are displayed (2/3).

The Next/Previous buttons and the scrollbar can be used to move to another record in the found set. Or a record number can be entered in the Record box to move directly to the requested record.



New Record/Delete Record Application Menu

Find Mode Symbols Menu

Selecting the Show All Records menu exits Found Set display mode and returns to the regular Browse Mode. Selecting the Show All Records menu within Browse mode will refresh the list of Primary Key values from the SQL database.



Portal to Data Grid Conversion

DataGrid

FileMaker Portals and Microsoft Access SubForms are converted into LiveCode Data Grid objects. Each Data Grid includes fields, menus, checkboxes, radio button groups, image objects and button objects. The alternate row color info from the original Portal is also configured within the Data Grid. Related records are gathered based upon a conversion of the original database relationships in order to automatically fill the Data Grid with related records. Each field of data is drawn to utilizes the TruncateTail Data Grid function, as shown for the Date and Notes fields above. Image fields, drop down menus, pop-up menus, checkbox groups, radio button groups, oval, rectangle, rounded rectangle, button and image objects are drawn in the same positions within the Data Grid as they were originally located within the portal object.

[Note: Some objects, including drop down menus, checkbox and radio button groups are drawn slightly larger in LiveCode compared to their sizes in the original FileMaker database layout. Therefore some slight manual modification of object position and size may be required in the Data Grid Row Template.]

A New Record button represented as a green (+) symbol is added to the card near the upper right corner of the Data Grid object. Clicking this button creates a new record in the related table and automatically fills the Foreign Key column with the Primary Key value from the current parent record.

Delete DataGrid Row Buttons

Within FileMaker Portals, it is common to have a button object or an image object with an embedded "Delete Portal Row" script script. Clicking the button will delete the selected row of the portal. FmPro Migrator implements this same functionality within LiveCode Data Grid objects by converting the "Delete Portal Row" script step into code which deletes the selected row of data in the Data Grid (and in the related database table).

Tab Control to LiveCode Conversion



LiveCode Segmented Widget
 


Tab  Control 1 LC8

Tab Control 2 LC8


Tab Control 3 LC8

 

Tab Controls from databases like FileMaker or Microsoft Access need to be handled a little differently within LiveCode stacks.

FmPro Migrator builds each tab of a Tab Control into group using the Segmented widget. Tab Control processing is supported 2 levels deep for FM12+ files.

LiveCode menuPick code is placed into each group to automatically hide the current Tab Panel group and show the next group when a different Tab Panel tab has been clicked. Hiding or showing the enclosing group automatically hides or shows each of the objects created within the group, thus simulating the graphical interface of the original database. Tab controls can contain most other types of objects including fields, checkboxes, radio buttons, graphics, images and DataGrids.

black bulletLiveCode lineGraph Widget

SQL Yoga _CreateRelationships revTalk Code

FileMaker Chart objects are converted into LiveCode lineGraph widgets. Each lineGraph widget can be considered as a placeholder for further development by the LiveCode developer. The existing refreshFields handler can be updated to populate the DataCSV property of the lineGraph.

The ChartMaker and ChartsEngine Extensions provide even more functionality for building sophisticated charts and graphs within LiveCode applications.

 

black bulletRelationship Conversion

SQL Yoga _CreateRelationships revTalk Code

Each relationship imported by FmPro Migrator is converted into two SQL relationships. Both forward and reverse relationships are created within the Relationships.JSON file, to operate in the same manner as the original. The contents of the Relationships.JSON file are stored in a custom property within the SQL_Library stack. It is converted from JSON into the gRelationshipsArray array when the database connection is opened.

The Relationships JSON Editor app shown here is included with FmPro Migrator to facilitate updating relationships used by the converted application. After changes have been made to the relationships, a button is provided to import the JSON info into the SQL_Library stack.



black bulletInsert Picture Processing for Image Fields

Insert Image

Microsoft Access OLE Objects and FileMaker Container fields are converted into BLOB columns within SQL database tables. A pop-up menu is created over top of the LiveCode image object for each one of these fields.

Clicking the field brings up the Insert Picture dialog box for selection of a file from the local disk. Canceling this dialog clears the image data from the field, selecting a file saves the file into the database column and displays the new image. Non-image data could also be handled with additional application-specific code.

The Insert Picture dialog also works for image fields displayed within the rows of a Data Grid.


black bulletCheckBox & Radio Button Groups

Radio Buttons Checkboxes

Radio buttons and checkboxes are created as groups having the same name as the original field object. Within FileMaker databases these would be one single object, but within LiveCode these objects are created as separate buttons having label values retrieved from the original custom value list.

Radio buttons write a single value into the database for the selected radio button.

Checkboxes write multiple values into the database separated by return characters in order to simulate the original database functionality.

Checkboxes consisting of a single value list value equal to a numeric "1" will be created with the label drawn as a space (meaning it will be an invisible label) - as is shown with the checkbox for the Obsolete? field at the left. When selected, this checkbox will write the numeric value "1" into the database or an empty value if it is unchecked in order to simulate the original database functionality.

Checkbox and radio button groups also work within rows of a Data Grid.

black bulletPopover Conversion

Radio Buttons Checkboxes

FileMaker popover buttons are implemented as LiveCode groups. A popover is shown by clicking the popover button, and it is hidden by clicking the close button inside the popover. When a popover is hidden, it is moved over to the right side of the card.

FmPro Migrator generates code which centers the popover group over top of a hidden red rectangle named for the popover (i.e. Popover1_showLoc). This location can easily be changed by moving the showLoc rectangle object somewhere else on the card.

The normally invisible Popover1_showLoc rectangle shown here has been made visible by selecting the View -> Show Invisible Objects menu item in the LiveCode IDE.

 

 

black bulletCustom and Field Based Value Lists

Custom Value Lists

Value lists are used to populate drop down menus, pop-up menus, checkbox or radio button groups wherever the value list is utilized within the layouts of the database. Value lists are converted into LiveCode scripts within the Value_List_Library substack, providing a single location to mange the values just like in the original FileMaker database.

Microsoft Access and Visual FoxPro don't use a centralized storage location for value lists. FmPro Migrator assigns a unique name to each value list it finds on forms, and creates a script for each of them in the Value_List_Library stack. This implementation gives the LiveCode developer the opportunity to de-dupe the value lists in the application, reducing future development time.

To improve performance, value lists are only retrieved during the preOpenCard handler when a card is opened. There is generally no need for value list contents to be updated each time the user navigates to a different record. But if this feature was needed, it would be easy to move the value list refreshing code into the refreshFields handler for specific value lists.

 

black bulletLayout Images and Vector Graphic Objects

Rectangle, Oval, Image Objects

Rectangle, rounded rectangle, and oval graphics objects are converted into their equivalent LiveCode vector graphic objects and placed onto the new card in the same location. Embedded images like the drag & drop icon, New, Delete and Find icons are imported as paint objects and placed onto the card.

FmPro Migrator builds objects in the order they were created within the original layout. There isn't any method available to determine the z-order stacking of the objects in the original database. It is likely that some manual changes will generally be necessary to fine tune the z-order stacking of objects on the card.

black bulletPreferences.JSON

The Preferences.JSON file is automatically created within a sub-folder consisting of the name of the app. The path for the preferences is determined by the operating system using the specialFolderPath() function. Initially the preferences file will typically contain the name of the app, preferences path and printer page setup info if the user has used the print menu. But this feature can be used by the LiveCode developer to store any preferences required by the application by updating the contents of the gAppPrefsArray and calling the updateAppPrefs handler.

The Preferences.JSON information is loaded automatically into the gAppPrefsArray during a call to the initializeAppPrefs handler within the openStack handler. Page setup info is stored automatically when the user selects the Page Setup menu or performs printing the first time.

 

black bulletLayout Objects Group

Layout Objects Group


Each object within the newly created LiveCode card is created within group named "Layout_Objects_Group". Resizing the card containing this group enables the objects to be scrolled in the same manner as in the original database application.

The Status Area is implemented in a similar manner. Hiding the Status Area hides the Status Area group and moves the Layout_Objects_Group and its contents up to take its place. The opposite is done when enabling the Status Area.

black bulletFileMaker Functions Conversion

Radio Buttons Checkboxes

The FMFunctionsToLiveCodeMapping.livecode stack has the ability to read the latest list of FileMaker functions from the Claris website. It then converts the embedded functions found within the converted FileMaker scripts and maps them into the functions which already exist in the fmFunctions_Library substack.

LiveCode developers can add more functions to the fmFunctions_Library substack, and add these new functions to the tool so that it can also re-map them.

 

black bulletCustomized Card Handlers

Card Script Handlers


FmPro Migrator will typically generate a few hundred lines of customized LiveCode code within each card of the converted stack.

These handlers are customized to implement the functionality required to support the unique set of fields and Data Grids built into each card.

These handlers include:

saveRecordsAsExcel - Writes a tab delimited file with an .xls file extension containing either the current record, current foundset or all records. The spreadsheet column titles and column order can be easily customized.

clearAllPortalContents - Sets the dgData to empty for each Data Grid on the card. This handler runs when all fields and Data Grids are cleared when entering Find Mode. All of the fields are cleared in preparation

deleteRecord - Deletes the currently displayed record in Browse mode or Found Set mode.

findRecords - Gathers search criteria entered by the user from each of the fields on the card, and formulates a SQL Yoga query to find the records. Displays a dialog with Cancel/Modify Find options if no records were found.

getData - Retrieves a list of Primary Key column values for the table associated with the card. If the PK array doesn't need retrieved again, then this process is skipped. This is because the user might have simply switched from one card to another and the data might not need to be retrieved again. Passing a value of 1 in the pRefreshAllFlag parameter forces a retrieval of all of the PK values regardless of whether the array already contains values.

newRecord - Creates a new record in the table associated with the card.

preOpenCard - Sets the currently displayed card name as the label of the Layouts menu, calls the getData and refreshFields handlers.

refreshFields - Gathers the column data for each column of the table associated with the card along with all of the related records from related tables. Fills all of the fields and Data Grids on the current card.

updateDBRecord - Updates columns in the table associated with this card and all of its related tables. First, the SQL data array is updated, and then the updateRecordSQL function in the SQL_Library stack is called to update the SQL database table.

[There are additional customized handlers built into many of the objects on the card, including radio button groups, checkbox groups and tab panel objects. There is also static LiveCode code written into the stack script.]

 

black bulletSave Records as PDF

Save Records as PDF

FileMaker scripts are converted into LiveCode and saved within the FmPro Converted Scripts.txt text file.

Commonly used script steps attached to buttons are also converted, including: Go to Layout, Perform Script, Open URL, Show Custom Dialog, Go to Record/Request/Page, Beep, Save Records as PDF, Save Records as Excel.

The Save Records as PDF script step is implemented as a stack-level script callable from anywhere within the application. This feature supports the CurrentRecord, RecordsBeingBrowsed and BlankRecord parameters. The RecordsBeingBrowsed option uses the current Foundset or all records to create multi-page PDF files. Setting the printScale parameter before calling the saveRecordsAsPDF stack handler enables LiveCode developers to customize the amount of info placed onto a single PDF page.

black bulletSave Records as Excel

Insert Image

The Save Records as Excel script step is implemented as a card-level script callable from buttons on the card. This feature supports the CurrentRecord and BrowsedRecords parameters. The saveRecordsAsExcel handler is generated for the specific fields located on each card of the stack. Spreadsheet column titles and column ordering are easily customizable within the saveRecordsAsExcel card handler.

 

black bulletPrint/Page Setup Menu

Print Menu

Print and Page Setup menus enable printing from any data handling card of the LiveCode stack. Stack-level handlers process Printing, Page Setup, and updating preferences.

Print Dialog

The print dialog provides for the selection of the printer, number of copies to be printed. Printing can be done for the Current record, Records being browsed or Blank record.

And regardless of the operating system being used, the printing can be directed either to the printer or a PDF file.

The source code for each of these features is available for customization by the LiveCode developer.

black bulletImport/Export Records

Insert Image

The Save Records as Excel script step is implemented as a card-level script callable from buttons on the card. This feature supports the CurrentRecord and BrowsedRecords parameters. The saveRecordsAsExcel handler is generated for the specific fields located on each card of the stack. Spreadsheet column titles and column ordering are easily customizable within the saveRecordsAsExcel card handler.

Tab delimited data can also be imported using the importRecordsTAB handler included on each card.

Export and import of data can be accessed via the File menu of the application stack created by FmPro Migrator.

black bulletJSON Connection File Builder

The JSON Connection File Builder stack builds a database connection JSON file named DBConnection.JSON. This stack is written to disk with other utility stacks as part of the automated conversion.

This JSON connection file has 2 main uses:
1) During development, the LiveCode developer can quickly log into a development database server without manually entering connection details.
2) For production usage, the LiveCode developer can create connection files having the database type, name, port, hostname info pre-filled for users to log into the database server. Fields which are missing from the DBConnection.JSON file will be filled in by the user during login.

The JSON Connection File Builder utility encrypts the contents of the password field before writing the JSON file.

By distributing this stack and its source code, it provides ideas to developers for turning this tool into a more extensive utility for production use. A more extensive tool could be developed to automate the on-boarding process for new customers.

 


Layout & Field Object Features Supported

Field
Field with Value List Menu
Field with Checkbox
Field displayed as Radio Button Set
Field with Calendar Picker
Field Validation
Field Auto-Enter Values
Global Fields
Stored Calculation Fields
Un-stored Calculation Fields
Text
Chart (LiveCode 8 LineGraph)
Button (including non-button objects configured as buttons)
Button (with embedded merge field object)
Merge Fields
Popover Buttons
Portal (including portal objects)
WebViewer
Line
Rectangle
Relationships - Multi-Hop Away
Rounded Rectangle
Oval
Embedded Layout Image Graphics
Tab Controls (and enclosed objects)

Demo Mode

Due to the complexity associated with any database migration project, it is recommended that a small test project be completed prior to starting the full conversion project. By default, FmPro Migrator Platinum Edition processes LiveCode migration projects in demo mode without a license key. In Demo mode, FmPro Migrator Platinum Edition will process 5 layouts and 5 scripts.

Using the demo mode at no charge, enables LiveCode developers to become familiar with the conversion process and see the completed layouts in the converted stack file.

Processing Steps & Requirements

Requirements:
FmPro Migrator Platinum Edition - FmPro Migrator Platinum Edition is used for importing the structure info from the FileMaker Pro database file and generating the LiveCode stack file. FmPro Migrator Platinum Edition utilizes the DDR XML file generated by FileMaker Pro Advanced, along with AppleScript(macOS) or a compiled WinAutomation (Windows) job file [provided at no cost] in order to automate the capturing of Tables/Fields, Layouts, Relationships and Scripts. This import process follows the videos and PDF file on the support page. Once the info has been captured by FmPro Migrator Platinum Edition, click the LiveCode Conversion button on the GUI tab. Complete instructions for the LiveCode Conversion feature are included a detailed PDF file. In demo mode, FmPro Migrator Platinum Edition will convert 5 layouts and 5 scripts into a LiveCode stack. Buying an FmPro Migrator Platinum Edition license key provides full-featured migration of 250 layouts.
FmPro Migrator Platinum Edition may also be used by the LiveCode developer to perform the conversion of the Microsoft Access and FileMaker Pro database tables and data into one of the supported SQL database servers.


FileMaker Pro Advanced 11+ - FileMaker Pro Advanced is used for creating a DDR XML export file providing the structure of the FileMaker Pro database file. This file is used for importing the relationships and layout display order info associated with the layouts.


AppleScript(macOS)/WinAutomation(Windows) Software - FmPro Migrator Platinum Edition utilizes one of these two utilities to drive the FileMaker Pro user interface to automate the capturing of layouts from via the clipboard from FileMaker Pro.

LiveCode 9.x Commercial or Community Edition - LiveCode Commercial Edition is required for submission to the Apple IOS or MacOS stores for licensing reasons, but development and testing can be done locally with either version.

The LiveCode Conversion feature utilizes FmPro Migrator Platinum Edition along with the other software listed here in order to automate the capturing of layouts, relationships, value list names and scripts from FileMaker Pro and Microsoft Access database files. Once the information has been imported, it is stored within FmPro Migrator's MigrationProcess.db3 embedded database file and saved to the output directory. This file serves as the source of info for the LiveCode Conversion process.

Unsupported Layout Objects and Other Features

Feature Status
SVG Images/Buttons Under Consideration
Slider Object NOFIX - No equivalent LiveCode object
Delete Found Set or Delete All Records Under Consideration
Embedded Page#, Date, Record# Layout objects Under Consideration
Summary Fields Under Consideration
Layout Object TAB Order NOFIX - Info not available in DDR XML
Layout Part Objects NOFIX - Info not available in DDR XML

hline image

.

 

. .

.

. .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

email link

Home | Products | Services | Downloads | Order | Support | Contact

Legal Notices

.
.   .
.
Home Products Services Downloads Order Support Contact