[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:
parent
1ca7c9d94c
commit
c95d6a47c4
|
|
@ -22,7 +22,7 @@ Dependencies:
|
|||
import datetime
|
||||
import pwd
|
||||
import os
|
||||
from shutil import copy2, rmtree, copytree
|
||||
from shutil import copy2, rmtree
|
||||
from subprocess import CalledProcessError
|
||||
from tempfile import mkdtemp, NamedTemporaryFile
|
||||
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 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):
|
||||
src_dir = GS.get_resource_path('kiri')
|
||||
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')
|
||||
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, 'kiri.css'), os.path.join(web_dir, 'kiri.css'))
|
||||
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, 'images'), os.path.join(web_dir, 'images'), dirs_exist_ok=True)
|
||||
copytree(os.path.join(src_dir, 'utils'), os.path.join(web_dir, 'utils'), dirs_exist_ok=True)
|
||||
copy2(os.path.join(src_dir, 'blank.svg'), os.path.join(web_dir, 'blank.svg'))
|
||||
self.copy_index(src_dir, 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)
|
||||
# copy2(os.path.join(src_dir, 'kiri.css'), os.path.join(web_dir, 'kiri.css'))
|
||||
# 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
|
||||
with open(os.path.join(web_dir, 'layer_colors.css'), 'wt') as f:
|
||||
f.write(LAYER_COLORS_HEAD)
|
||||
for id, color in self._color_theme.layer_id2color.items():
|
||||
f.write(f'.layer_color_{id} {{ color: {color[:7]}; }}\n')
|
||||
# with open(os.path.join(web_dir, 'layer_colors.css'), 'wt') as f:
|
||||
# f.write(LAYER_COLORS_HEAD)
|
||||
# for id, color in self._color_theme.layer_id2color.items():
|
||||
# f.write(f'.layer_color_{id} {{ color: {color[:7]}; }}\n')
|
||||
|
||||
def run(self, name):
|
||||
self.cache_dir = self._parent.output_dir
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -3,11 +3,9 @@
|
|||
<head>
|
||||
<meta charset="utf-8">
|
||||
<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="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="./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="stylesheet" href="kiri.css" integrity="">
|
||||
<link rel="stylesheet" href="layer_colors.css" integrity="">
|
||||
<title>[PROJECT_TITLE]</title>
|
||||
|
|
@ -319,6 +317,7 @@
|
|||
</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/svg-pan-zoom.min.js" integrity=""></script>
|
||||
<script src="./kiri.js" integrity="" crossorigin="anonymous"></script>
|
||||
|
|
|
|||
|
|
@ -548,13 +548,13 @@ function update_selected_page()
|
|||
if (sheet_pages_commit1.has(page_filename)) {
|
||||
image_path_1 = "../" + commit1.value + "/_KIRI_/sch/" + page_filename + ".svg";
|
||||
} else {
|
||||
image_path_1 = "images/blank.svg";
|
||||
image_path_1 = "blank.svg";
|
||||
}
|
||||
|
||||
if (sheet_pages_commit2.has(page_filename)) {
|
||||
image_path_2 = "../" + commit2.value + "/_KIRI_/sch/" + page_filename + ".svg";
|
||||
} else {
|
||||
image_path_2 = "images/blank.svg";
|
||||
image_path_2 = "blank.svg";
|
||||
}
|
||||
|
||||
console.log("[SCH] page_filename =", page_filename);
|
||||
|
|
@ -907,12 +907,12 @@ function update_selected_layer() {
|
|||
if (layers_commit1.has(layer_id)) {
|
||||
image_path_1 = "../" + commit1.value + "/_KIRI_/pcb/layer" + "-" + layer_id + ".svg";
|
||||
} else {
|
||||
image_path_1 = "images/blank.svg";
|
||||
image_path_1 = "blank.svg";
|
||||
}
|
||||
if (layers_commit2.has(layer_id)) {
|
||||
image_path_2 = "../" + commit2.value + "/_KIRI_/pcb/layer" + "-" + layer_id + ".svg";
|
||||
} else {
|
||||
image_path_2 = "images/blank.svg";
|
||||
image_path_2 = "blank.svg";
|
||||
}
|
||||
|
||||
console.log("[PCB] layer_id =", layer_id);
|
||||
|
|
|
|||
Loading…
Reference in New Issue