50 lines
1.6 KiB
Python
50 lines
1.6 KiB
Python
|
#!/usr/bin/env python3
|
||
|
|
||
|
import inkex
|
||
|
import os
|
||
|
import subprocess
|
||
|
|
||
|
class ExportAndRunScript(inkex.EffectExtension):
|
||
|
|
||
|
def effect(self):
|
||
|
# Define the export file path
|
||
|
png_file_path = "~/yair/exported.png"
|
||
|
|
||
|
# Get the current selection
|
||
|
selection = self.svg.selected
|
||
|
|
||
|
# If there's no selection, show an error and exit
|
||
|
if not selection:
|
||
|
inkex.dialogs.errormsg("No selection to export.")
|
||
|
return
|
||
|
|
||
|
# Export the selection to PNG
|
||
|
self.export_selection_to_png(selection, png_file_path)
|
||
|
|
||
|
# Run the bash script on the exported PNG
|
||
|
self.run_script_on_png(png_file_path)
|
||
|
|
||
|
def export_selection_to_png(self, selection, png_file_path):
|
||
|
# Create a command that calls Inkscape's command line interface to export the selection to a PNG
|
||
|
command = ["inkscape", "--export-area-drawing", "--export-dpi=96", "--export-background-opacity=0", "-o", "{}".format(png_file_path)]
|
||
|
|
||
|
# Add the IDs of the selected items to the command
|
||
|
for id, item in selection.items():
|
||
|
command.append("--export-id={}".format(id))
|
||
|
|
||
|
# Run the command
|
||
|
subprocess.check_call(command)
|
||
|
|
||
|
def run_script_on_png(self, png_file_path):
|
||
|
# Define the path to your bash script
|
||
|
bash_script_path = "print.sh"
|
||
|
|
||
|
# Create a command that calls the bash script with the PNG as an argument
|
||
|
command = ["bash", bash_script_path, png_file_path]
|
||
|
|
||
|
# Run the command
|
||
|
subprocess.check_call(command)
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
ExportAndRunScript().run()
|