[KiRi] Now we generate a self contained page

- Only the real data (and the blank.svg) are outside.
- Failed to also include the blank.svg
This commit is contained in:
Salvador E. Tropea 2023-12-28 13:59:17 -03:00
parent 1ca7c9d94c
commit c95d6a47c4
6 changed files with 69 additions and 72 deletions

View File

@ -22,7 +22,7 @@ Dependencies:
import datetime import datetime
import pwd import pwd
import os import os
from shutil import copy2, rmtree, copytree from shutil import copy2, rmtree
from subprocess import CalledProcessError from subprocess import CalledProcessError
from tempfile import mkdtemp, NamedTemporaryFile from tempfile import mkdtemp, NamedTemporaryFile
from .error import KiPlotConfigurationError from .error import KiPlotConfigurationError
@ -179,6 +179,45 @@ class KiRiOptions(VariantOptions):
logger.debug(f'Commits with changes in the PCB: {self.commits_with_changed_pcb}') logger.debug(f'Commits with changes in the PCB: {self.commits_with_changed_pcb}')
logger.debug(f'Commits with changes in the Schematics: {self.commits_with_changed_sch}') logger.debug(f'Commits with changes in the Schematics: {self.commits_with_changed_sch}')
def copy_index(self, src_dir, src_index, dst_index):
with open(src_index, 'rt') as src:
with open(dst_index, 'wt') as dst:
for ln in src:
ln_stripped = ln.strip()
if ln_stripped.startswith('<script src="'):
fn = ln_stripped[13:].split('"')[0]
with open(os.path.join(src_dir, fn), 'rt') as f:
script = f.read()
dst.write('<script>\n')
dst.write(script)
dst.write('\n</script>\n')
elif ln_stripped.startswith('<link rel="stylesheet" href="'):
fn = ln_stripped[29:].split('"')[0]
if fn == 'layer_colors.css':
script = ''
for id, color in self._color_theme.layer_id2color.items():
script += f'.layer_color_{id} {{ color: {color[:7]}; }}\n'
elif fn == 'kiri.css':
# Replace the SVGs using its source
script = ''
with open(os.path.join(src_dir, fn), 'rt') as f:
for lns in f:
if lns.startswith("\t--svg: url('"):
fns = lns[13:].split("'")[0]
with open(os.path.join(src_dir, fns), 'rt') as f:
svg = f.read().strip()
script += "\t--svg: url('data:image/svg+xml;utf8,"+svg+"');\n"
else:
script += lns
else:
with open(os.path.join(src_dir, fn), 'rt') as f:
script = f.read()
dst.write('<style>\n')
dst.write(script)
dst.write('\n</style>\n')
else:
dst.write(ln)
def create_kiri_files(self): def create_kiri_files(self):
src_dir = GS.get_resource_path('kiri') src_dir = GS.get_resource_path('kiri')
copy2(os.path.join(src_dir, 'redirect.html'), os.path.join(self.cache_dir, 'index.html')) copy2(os.path.join(src_dir, 'redirect.html'), os.path.join(self.cache_dir, 'index.html'))
@ -186,16 +225,18 @@ class KiRiOptions(VariantOptions):
web_dir = os.path.join(self.cache_dir, 'web') web_dir = os.path.join(self.cache_dir, 'web')
os.makedirs(web_dir, exist_ok=True) os.makedirs(web_dir, exist_ok=True)
copy2(os.path.join(src_dir, 'favicon.ico'), os.path.join(web_dir, 'favicon.ico')) copy2(os.path.join(src_dir, 'favicon.ico'), os.path.join(web_dir, 'favicon.ico'))
copy2(os.path.join(src_dir, 'kiri.css'), os.path.join(web_dir, 'kiri.css')) copy2(os.path.join(src_dir, 'blank.svg'), os.path.join(web_dir, 'blank.svg'))
copy2(os.path.join(src_dir, 'kiri.js'), os.path.join(web_dir, 'kiri.js')) self.copy_index(src_dir, os.path.join(src_dir, 'index.html'), os.path.join(web_dir, 'index.html'))
copy2(os.path.join(src_dir, 'index.html'), os.path.join(web_dir, 'index.html')) # copytree(os.path.join(src_dir, 'images'), os.path.join(web_dir, 'images'), dirs_exist_ok=True)
copytree(os.path.join(src_dir, 'images'), os.path.join(web_dir, 'images'), dirs_exist_ok=True) # copy2(os.path.join(src_dir, 'kiri.css'), os.path.join(web_dir, 'kiri.css'))
copytree(os.path.join(src_dir, 'utils'), os.path.join(web_dir, 'utils'), dirs_exist_ok=True) # copy2(os.path.join(src_dir, 'kiri.js'), os.path.join(web_dir, 'kiri.js'))
# copy2(os.path.join(src_dir, 'index.html'), os.path.join(web_dir, 'index.html'))
# copytree(os.path.join(src_dir, 'utils'), os.path.join(web_dir, 'utils'), dirs_exist_ok=True)
# Colors for the layers # Colors for the layers
with open(os.path.join(web_dir, 'layer_colors.css'), 'wt') as f: # with open(os.path.join(web_dir, 'layer_colors.css'), 'wt') as f:
f.write(LAYER_COLORS_HEAD) # f.write(LAYER_COLORS_HEAD)
for id, color in self._color_theme.layer_id2color.items(): # for id, color in self._color_theme.layer_id2color.items():
f.write(f'.layer_color_{id} {{ color: {color[:7]}; }}\n') # f.write(f'.layer_color_{id} {{ color: {color[:7]}; }}\n')
def run(self, name): def run(self, name):
self.cache_dir = self._parent.output_dir self.cache_dir = self._parent.output_dir

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="210mm" height="297mm" version="1.1" viewBox="0 0 210 297" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
</svg>

After

Width:  |  Height:  |  Size: 486 B

View File

@ -1,55 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="210mm"
height="297mm"
viewBox="0 0 210 297"
version="1.1"
id="svg8"
inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
sodipodi:docname="blank.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="1.4285714"
inkscape:cy="548.57143"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="2048"
inkscape:window-height="1088"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1" />
</svg>

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 B

View File

@ -3,11 +3,9 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<script src="./utils/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<link rel="stylesheet" href="./utils/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous"> <link rel="stylesheet" href="./utils/bootstrap.min.css" integrity="sha384-zCbKRCUGaJDkqS1kPbPd7TveP5iyJE0EjAuZQTgFLD2ylzuqKfdKlfG/eSrtxUkn" crossorigin="anonymous">
<!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> --> <!-- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> -->
<link rel="icon" href="./favicon.ico" type="image/x-icon"> <link rel="shortcut icon" href="data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACABAMAAAAxEHz4AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEUAAACbAAAGANJpli7///8s69hEAAAAAXRSTlMAQObYZgAAAAFiS0dEBI9o2VEAAAAHdElNRQfnDBwQNhSXSmLEAAABzElEQVRo3u3ZbZKDIAwG4AgXwBs4ewJmuP/dtlb5CKIkwWLZ2fyTwafyqmAV5rMyEEr9nBf8AzcCa8cWYOs5iQHfVQrEznXgtX0E1l7a4UFwgLWve5VND4ED7Pu/BQlg1uPfCopFANxdgBUBcQRp2a6AK9UfAGxPQH8EcGSgcCUWgOV4hV7cCxqNgQDoJgDNByLAQDYjZSFUgcOcaArAxVk4zspsIKwLkwdQCAQgX5n4QLY24hRJQL40Pw+kIQiA+QuANAQJYNoB3QagEB4CkhBEgDkDsvokEEMQAXM7AI1AEsJjQAhhXCCEMDDgQ3gO8GMYGdhDGBnYQ2gGQA7sY3geUGKgnmInAORANUUioMQA3AK4dgDkQC3FboASA7UUOwD6+jQQAdsOKDFQCaEfAHLgOsWOgBIDxxSXJBE6kOyTPv5SgCwEQH/l+EBoVlxA+fH7IgMoxXh/bg0SILxyYgJoRO9tMoDfa7nw1kuJgP0A/PMjCTh749kMgAfSvmtNtwO6KAwFFEPgZFADqqfx7PtBG8C5EouWFJDcTMVDAMbtnC4JECcU+oyUAssmWODMiWhRylr5wOJb6etCtiziRslH2yX+/ld9Nh4X+AUBg9CLMlCEqAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMy0xMi0yOFQxNjo0ODo1OCswMDowMGbztFMAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjMtMTItMjZUMTE6MjY6MDUrMDA6MDCVFGlIAAAAAElFTkSuQmCC" type="image/x-icon">
<link rel="shortcut icon" href="./favicon.ico" type="image/x-icon">
<link rel="stylesheet" href="kiri.css" integrity=""> <link rel="stylesheet" href="kiri.css" integrity="">
<link rel="stylesheet" href="layer_colors.css" integrity=""> <link rel="stylesheet" href="layer_colors.css" integrity="">
<title>[PROJECT_TITLE]</title> <title>[PROJECT_TITLE]</title>
@ -319,6 +317,7 @@
</div> </div>
</div> </div>
<script src="./utils/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>
<script src="./utils/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script> <script src="./utils/bootstrap.bundle.min.js" integrity="sha384-fQybjgWLrvvRgtW6bFlB7jaZrFsaBXjsOMm/tB9LTS58ONXgqbR9W8oWht/amnpF" crossorigin="anonymous"></script>
<script src="./utils/svg-pan-zoom.min.js" integrity=""></script> <script src="./utils/svg-pan-zoom.min.js" integrity=""></script>
<script src="./kiri.js" integrity="" crossorigin="anonymous"></script> <script src="./kiri.js" integrity="" crossorigin="anonymous"></script>

View File

@ -548,13 +548,13 @@ function update_selected_page()
if (sheet_pages_commit1.has(page_filename)) { if (sheet_pages_commit1.has(page_filename)) {
image_path_1 = "../" + commit1.value + "/_KIRI_/sch/" + page_filename + ".svg"; image_path_1 = "../" + commit1.value + "/_KIRI_/sch/" + page_filename + ".svg";
} else { } else {
image_path_1 = "images/blank.svg"; image_path_1 = "blank.svg";
} }
if (sheet_pages_commit2.has(page_filename)) { if (sheet_pages_commit2.has(page_filename)) {
image_path_2 = "../" + commit2.value + "/_KIRI_/sch/" + page_filename + ".svg"; image_path_2 = "../" + commit2.value + "/_KIRI_/sch/" + page_filename + ".svg";
} else { } else {
image_path_2 = "images/blank.svg"; image_path_2 = "blank.svg";
} }
console.log("[SCH] page_filename =", page_filename); console.log("[SCH] page_filename =", page_filename);
@ -907,12 +907,12 @@ function update_selected_layer() {
if (layers_commit1.has(layer_id)) { if (layers_commit1.has(layer_id)) {
image_path_1 = "../" + commit1.value + "/_KIRI_/pcb/layer" + "-" + layer_id + ".svg"; image_path_1 = "../" + commit1.value + "/_KIRI_/pcb/layer" + "-" + layer_id + ".svg";
} else { } else {
image_path_1 = "images/blank.svg"; image_path_1 = "blank.svg";
} }
if (layers_commit2.has(layer_id)) { if (layers_commit2.has(layer_id)) {
image_path_2 = "../" + commit2.value + "/_KIRI_/pcb/layer" + "-" + layer_id + ".svg"; image_path_2 = "../" + commit2.value + "/_KIRI_/pcb/layer" + "-" + layer_id + ".svg";
} else { } else {
image_path_2 = "images/blank.svg"; image_path_2 = "blank.svg";
} }
console.log("[PCB] layer_id =", layer_id); console.log("[PCB] layer_id =", layer_id);