kopia lustrzana https://github.com/inkstitch/inkstitch
				
				
				
			
		
			
				
	
	
		
			74 wiersze
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			74 wiersze
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
| #!/usr/bin/env python
 | |
| 
 | |
| # Implemented support for multiple diverse versions of Inkstitch extensions in Inkscape.
 | |
| #   - useful for testing and development
 | |
| #   - useful for comparing different versions of Inkstitch
 | |
| 
 | |
| 
 | |
| # this script generates inx files in inx/ directory from xml templates in templates/ directory
 | |
| # - added support for alternative id registration and menu names for Inkscape extensions
 | |
| #   - each xml template should be modified to use the new id_inkstitch and menu_inkstitch:
 | |
| #        <id>org.inkstitch.....</id>    ---> <id>org.{{ id_inkstitch }}.....</id>
 | |
| #        <submenu name="Ink/Stitch"     ---> <submenu name="{{ menu_inkstitch }}"
 | |
| #     or input/output xml template should be modified to use the filetypename:
 | |
| #        <filetypename>Ink/Stitch:...   ---> <filetypename>{{ menu_inkstitch }}:...
 | |
| 
 | |
| 
 | |
| # Here's an example of how to use two Inkstitch extensions:
 | |
| #   - install Inkstitch in two different locations (e.g. inkstitch and inkstitch-k)
 | |
| #       - check out the Inkstitch repository in two different locations
 | |
| #   - ensure 'make inx' is executed in both locations
 | |
| #       - this will generate also inx/locale/ files
 | |
| #   - generate modified inx files for second location
 | |
| #       - in the second location:
 | |
| #            > generate-inx-files -a k
 | |
| #   - install the inx files in Inkscape extensions directory
 | |
| #       - symlink .config/inkscape/extensions/inkstitch   -> inkstitch
 | |
| #       - symlink .config/inkscape/extensions/inkstitch-k -> inkstitch-k
 | |
| #   - modify .config/inkscape/keys/default.xml if necessary
 | |
| #   - run Inkscape with both Inkstitch extensions enabled
 | |
| #       - first version:  Extensions > Ink/Stitch
 | |
| #       - second version: Extensions > Ink/Stitch-k
 | |
| 
 | |
| import sys
 | |
| import os
 | |
| from pathlib import Path
 | |
| import argparse
 | |
| 
 | |
| # add inkstitch lib dir to python path
 | |
| parent_dir = Path(__file__).resolve().parents[1]
 | |
| sys.path.append(str(parent_dir))  # we need import from lib/ directory
 | |
| 
 | |
| # find inkex module
 | |
| try:
 | |
|     import inkex     # if it is already in the path, do nothing
 | |
| except ImportError:  # if not, add inkscape version
 | |
|     import subprocess
 | |
|     inkscape_path = 'inkscape'
 | |
|     # for now assume inkscape is in the path and raise an error if inkscape is not in the path
 | |
|     system_path = subprocess.run([inkscape_path, "--system-data-directory"], capture_output=True, text=True).stdout.strip()
 | |
|     inkex_path = os.path.join(system_path, "extensions")
 | |
|     sys.path.append(inkex_path)
 | |
| 
 | |
|     # possible last attempt to import inkex may be as follows:
 | |
|     # sys.path.append(os.path.join("/usr/share/inkscape/extensions"))
 | |
|     # default inkex.py location on macOS
 | |
|     # sys.path.append("/Applications/Inkscape.app/Contents/Resources/share/inkscape/extensions/")
 | |
| 
 | |
| 
 | |
| from lib.inx.generate import generate_inx_files
 | |
| 
 | |
| # parse arguments
 | |
| #   -a, --alter letter a-z: generate inx files for the given alter
 | |
| parser = argparse.ArgumentParser(description='Generate INX files, supporting multiple active inkstitch extensions in inkscape.')
 | |
| parser.add_argument('-a', '--alter', type=str, help='Letter a-z representing the alter')
 | |
| args = parser.parse_args()
 | |
| 
 | |
| # print(f"generate_inx_files: alter={args.alter}")
 | |
| 
 | |
| inx_path = parent_dir / "inx"
 | |
| inx_path.mkdir(parents=True, exist_ok=True)
 | |
| 
 | |
| # if -a is not given, args.alter is None - not alternative inx, but generate default inx
 | |
| generate_inx_files(args.alter)
 |