msip
GUI Tool
msip
is the GUI part of MetaSIP that allows the bindings developer to create
a project that contains the history of the API of one or more libraries.
To install msip
, run the following command:
pip install metasip[gui]
The image below shows the GUI with the project for PyQt6 opened.
The image shows the three main areas of the GUI:
the main area shows the complete API as a tree structure with the top level Python package as it’s root
the area on the right side (the
Scanner
) shows a number of header directories containing the individual header files that define the libraries APIsthe area at the bottom shows various error and progress messages that may be issued by the scanner.
Workflow
The workflow to create a set of bindings can be summarised as:
specify the name of the root package (if multiple modules are going to be created)
specify the individual Python modules to be created (typically one for each library)
specify the directories containing the header files than define the APIs of each library (a well designed library will typically have its own header directory)
scan each header directory so that each header file appears in the
Scanner
and marked asNeeds assigning
assign each header file to one of the Python modules or mark it as
Ignored
parse each assigned header file so that it appears under the module in the main part of the GUI and contains each API item defined in the header file
review each API item marked as
Unchecked
, specifying any required SIP annotations, directives or handwritten code, and updating the status toChecked
,Ignored
orTodo
as appropriate.
When a new release of the libraries is made then a corresponding new version is
defined in msip
, the workflow reset, and the above workflow is repeated.
msip
will only change the status of an existing API item to Unchecked
if
the item has changed in some way since the previous release. This dramatically
reduces the amount of work that the developer needs to do when a new release is
made.
When a project is opened then the tree in the main part of the GUI is only
expanded to show API items that are not Checked
to make it easy for the
developer to identify the tasks that are still outstanding at any time.
Use msipgen
to generate the .sip
files from the project.