Added new SVG branch. Note TKui now needs to have the layers and resolution either removed or managed in the new code. The revision selection works

This commit is contained in:
John 2019-05-18 14:32:47 +01:00
parent 474d4134be
commit d710fc3d90
4 changed files with 450 additions and 265 deletions

View File

@ -596,18 +596,18 @@ def comparePNG(diff1, diff2, prjctName, prjctPath):
composite = convertProg + ' ' + p1 + ' ' + p2 + \
' "(" -clone 0-1 -compose darken -composite ")" -channel RGB -combine ' + \
diffDir + '/' + plot
comp1 = subprocess.Popen(c1, shell=True, executable='/bin/bash')
comp2 = subprocess.Popen(c2, shell=True, executable='/bin/bash')
diffs = subprocess.Popen(composite, shell=True, executable='/bin/bash')
out, err = diffs.communicate()
# Accounts for project names containing hyphens
splitted = plot.split('-')
page = splitted[-2]
layerExt = splitted[-1]
layer, ext = layerExt.split('.')
colour = layerCols.get(layer, '#ffffff')
@ -615,7 +615,7 @@ def comparePNG(diff1, diff2, prjctName, prjctPath):
colourize = convertProg + ' ' + diffDir + '/' + plot + ' -fill "' + colour + \
'" -fuzz 75% -opaque "#ffffff" ' + diffDir + '/' + plot
diffs = subprocess.Popen(colourize, shell=True, stdout=subprocess.PIPE)
out, err = diffs.communicate()
@ -975,16 +975,6 @@ div.responsive {{
diff1=diffDir1,
diff2=diffDir2,
prjctPath=prjctPath)
print(diffCmnd1)
diffCmnd2 = '''diff {prjctPath}{plotDir}/{diff2}/*.kicad_pcb {prjctPath}{plotDir}/{diff1}/*.kicad_pcb | grep {mod} | sed 's/> /<\/div><div class="differences added">/g' | sed 's/< /<\/div><div class="differences removed">/g' | sed 's/\/n/<\/div>/g' '''.format(
layername=filename,
plotDir=plotDir,
diff1=diffDir1,
diff2=diffDir2,
prjctPath=prjctPath,
mod=layer,
webDir=webDir)
diff1Txt = Popen(
diffCmnd1,
@ -995,15 +985,28 @@ div.responsive {{
close_fds=True)
stdout, stderr = diff1Txt.communicate()
diff2Txt = Popen(
diffCmnd2,
shell=True,
stdin=PIPE,
stdout=PIPE,
stderr=PIPE,
close_fds=True)
stdout, stderr = diff2Txt.communicate()
out = stdout.decode('utf8')
diffCmnd2 = '''diff {prjctPath}{plotDir}/{diff2}/*.kicad_pcb {prjctPath}{plotDir}/{diff1}/*.kicad_pcb | grep {mod} | sed 's/> /<\/div><div class="differences added">/g' | sed 's/< /<\/div><div class="differences removed">/g' | sed -e 's/\/n/<\/div>/g' | sed 's/(layer {mod})//g' '''.format(
layername=filename,
plotDir=plotDir,
diff1=diffDir1,
diff2=diffDir2,
prjctPath=prjctPath,
mod=layer,
webDir=webDir)
diff2Txt = Popen(
diffCmnd2,
shell=True,
stdin=PIPE,
stdout=PIPE,
stderr=PIPE,
close_fds=True)
stdout, stderr = diff2Txt.communicate()
out = stdout.decode('utf8')
print(diffCmnd2)
tryptychOut.write(out)

643
style.css
View File

@ -1,433 +1,598 @@
/* style.css */
body {
background-color: #282C35;
body
{
background-color: #002b36;
margin: 0 auto;
max-width: 45cm;
border: 1pt solid #586e75;
padding: 1em;
}
.gallery {
.gallery
{
border: 1px solid #ccc;
background-color: #222;
}
.gallery:hover {
.gallery:hover
{
border: 1px solid #777;
}
.gallery img {
.gallery img
{
width: 100%;
height: auto;
}
.desc {
.desc,.title
{
padding: 15px;
text-align: center;
font: 15px arial, sans-serif;
font: 15px arial,sans-serif;
}
.title {
padding: 15px;
.title
{
text-align: left;
font: 25px arial, sans-serif;
font: 25px arial,sans-serif;
color: #202b34;
}
.subtitle {
.details,.subtitle
{
padding: 5px;
text-align: left;
font: 20px arial, sans-serif;
color: #000000;
font: 20px arial,sans-serif;
color: #000;
}
.details {
.details
{
padding: 20px;
text-align: left;
font: 15px arial, sans-serif;
color: #000000;
font: 15px arial,sans-serif;
}
.differences{
.differences
{
font: 12px courier,monospace;
}
.differences,.td,.th
{
padding: 5px;
text-align: left;
font: 18px courier, monospace;
color: #000000;
color: #000;
}
.th {
padding: 5px;
text-align: left;
font: 20px arial, sans-serif;
font-weight: bold;
color: #000000;
.th
{
font-weight: 700;
font: 20px arial,sans-serif;
}
.td {
padding: 5px;
text-align: left;
font: 15px arial, sans-serif;
color: #000000;
.td
{
font: 15px arial,sans-serif;
}
* {
*
{
box-sizing: border-box;
}
.responsive {
.responsive
{
padding: 0 6px;
float: left;
width: 19.99999%;
margin: 6px 0;
}
@media only screen and (max-width: 700px) {
.responsive {
@media only screen and (max-width:700px)
{
.responsive
{
width: 49.98%;
margin: 6px 0;
}
}
@media only screen and (max-width: 500px) {
.responsive {
@media only screen and (max-width:500px)
{
.responsive
{
width: 100%;
margin: 6px 0;
}
}
.clearfix:after {
.responsivefull {
padding: 0 6px;
float: left;
width: 100%;
margin: 6px 0;
}
.clearfix:after
{
content: "";
display: table;
clear: both;
}
.box {
.box
{
float: left;
width: 20px;
height: 20px;
margin: 5px;
border: 1px solid rgba(0, 0, 0, .2);
border: 1px solid rgba(0,0,0,.2);
}
.red {
background: #F40008;
.red
{
background: #ba312d;
}
.green {
background: #43ff01;
.green
{
background: #5eb6c4;
}
.white {
background: #ffffff;
.white
{
background: #fff;
}
.added {
color: #5EB6C4;
.added
{
color: #5eb6c4;
}
.removed {
color: #BA312D;
.removed
{
color: #ba312d;
}
@import url(http://fonts.googleapis.com/css?family=Inconsolata);
@import url(http://fonts.googleapis.com/css?family=PT+Sans);
@import url(http://fonts.googleapis.com/css?family=PT+Sans+Narrow:400,700);
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section,
summary {
article,aside,details,figcaption,figure,footer,header,hgroup,nav,section,summary
{
display: block;
}
audio,
canvas,
video {
audio,canvas,video
{
display: inline-block;
}
audio:not([controls]) {
audio:not([controls])
{
display: none;
height: 0;
}
[hidden] {
[hidden]
{
display: none;
}
html {
font-family: sans-serif;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
html
{
-webkit-text-size-adjust: 80%;
-ms-text-size-adjust: 90%;
font-family: 'PT Sans',sans-serif;
background-color: #073642;
color: #e2e3e3;
margin: 1em;
}
body {
margin: 0;
}
a:focus {
a:focus
{
outline: thin dotted;
}
a:active,
a:hover {
a:active,a:hover
{
outline: 0;
}
h1 {
font-size: 2em;
}
abbr[title] {
abbr[title]
{
border-bottom: 1px dotted;
}
b,
strong {
font-weight: bold;
b,strong
{
font-weight: 700;
}
dfn {
dfn
{
font-style: italic;
}
mark {
mark
{
background: #ff0;
color: #000;
}
code,
kbd,
pre,
samp {
font-family: monospace, serif;
code,kbd,pre,samp
{
font-size: 1em;
}
pre {
kbd,samp
{
font-family: monospace,serif;
}
pre
{
white-space: pre-wrap;
word-wrap: break-word;
}
q {
q
{
quotes: "\201C" "\201D" "\2018" "\2019";
}
small {
small
{
font-size: 80%;
}
sub,
sup {
sub,sup
{
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
sup
{
top: -.5em;
}
sub {
bottom: -0.25em;
sub
{
bottom: -.25em;
}
img {
img
{
border: 0;
}
svg:not(:root) {
overflow: hidden;
svg:not(:root)
{
overflow: visible;
}
figure {
.F_Cu
{
filter: invert(28%) sepia(50%) saturate(2065%) hue-rotate(334deg) brightness(73%) contrast(97%);
}
.B_Cu
{
filter: invert(44%) sepia(14%) saturate(2359%) hue-rotate(70deg) brightness(103%) contrast(82%);
}
.B_Paste
{
filter: invert(91%) sepia(47%) saturate(4033%) hue-rotate(139deg) brightness(82%) contrast(91%);
}
.F_Paste
{
filter: invert(57%) sepia(60%) saturate(6%) hue-rotate(314deg) brightness(92%) contrast(99%);
}
.F_SilkS
{
filter: invert(46%) sepia(44%) saturate(587%) hue-rotate(132deg) brightness(101%) contrast(85%);
}
.B_SilkS
{
filter: invert(14%) sepia(27%) saturate(2741%) hue-rotate(264deg) brightness(95%) contrast(102%);
}
.B_Mask
{
filter: invert(22%) sepia(56%) saturate(2652%) hue-rotate(277deg) brightness(94%) contrast(87%);
}
.F_Mask
{
filter: invert(27%) sepia(51%) saturate(1920%) hue-rotate(269deg) brightness(89%) contrast(96%);
}
.Edge_Cuts
{
filter: invert(79%) sepia(79%) saturate(401%) hue-rotate(6deg) brightness(88%) contrast(88%);
}
.Margin
{
filter: invert(74%) sepia(71%) saturate(5700%) hue-rotate(268deg) brightness(89%) contrast(84%);
}
.In1_Cu
{
filter: invert(69%) sepia(39%) saturate(1246%) hue-rotate(17deg) brightness(97%) contrast(104%);
}
.In2_Cu
{
filter: invert(14%) sepia(79%) saturate(5231%) hue-rotate(293deg) brightness(91%) contrast(119%);
}
.Dwgs_User
{
filter: invert(40%) sepia(68%) saturate(7431%) hue-rotate(203deg) brightness(89%) contrast(98%);
}
.Cmts_User
{
filter: invert(73%) sepia(10%) saturate(1901%) hue-rotate(171deg) brightness(95%) contrast(102%);
}
.Eco1_User
{
filter: invert(25%) sepia(98%) saturate(2882%) hue-rotate(109deg) brightness(90%) contrast(104%);
}
.Eco2_User
{
filter: invert(85%) sepia(21%) saturate(5099%) hue-rotate(12deg) brightness(91%) contrast(102%);
}
.B_Fab
{
filter: invert(60%) sepia(0%) saturate(0%) hue-rotate(253deg) brightness(87%) contrast(90%);
}
.F_Fab
{
filter: invert(71%) sepia(21%) saturate(4662%) hue-rotate(21deg) brightness(103%) contrast(100%);
}
.B_Adhes
{
filter: invert(24%) sepia(48%) saturate(2586%) hue-rotate(218deg) brightness(88%) contrast(92%);
}
.F_Adhes
{
filter: invert(38%) sepia(49%) saturate(1009%) hue-rotate(254deg) brightness(88%) contrast(86%);
}
.B_CrtYd
{
filter: invert(79%) sepia(92%) saturate(322%) hue-rotate(3deg) brightness(89%) contrast(92%);
}
.F_CrtYd
{
filter: invert(73%) sepia(1%) saturate(0%) hue-rotate(116deg) brightness(92%) contrast(91%);
}
.section
{
margin: 0 0 1em;
}
figure
{
margin: 0;
}
fieldset {
border: 1px solid #c0c0c0;
fieldset
{
border: 1px solid silver;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
padding: .35em .625em .75em;
}
legend {
legend
{
border: 0;
padding: 0;
}
button,
input,
select,
textarea {
button,input,select,textarea
{
font-family: inherit;
font-size: 100%;
margin: 0;
}
button,
input {
button,input
{
line-height: normal;
}
button,
html input[type="button"],
input[type="reset"],
input[type="submit"] {
button,html input[type=button],input[type=reset],input[type=submit]
{
-webkit-appearance: button;
cursor: pointer;
}
button[disabled],
input[disabled] {
button[disabled],input[disabled]
{
cursor: default;
}
input[type="checkbox"],
input[type="radio"] {
input[type=checkbox],input[type=radio]
{
box-sizing: border-box;
padding: 0;
}
input[type="search"] {
input[type=search]
{
-webkit-appearance: textfield;
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration
{
-webkit-appearance: none;
}
button::-moz-focus-inner,
input::-moz-focus-inner {
button::-moz-focus-inner,input::-moz-focus-inner
{
border: 0;
padding: 0;
}
textarea {
textarea
{
overflow: auto;
vertical-align: top;
}
table {
table
{
border-collapse: collapse;
border-spacing: 0;
}
html {
font-family: 'PT Sans', sans-serif;
}
pre,
code {
font-family: 'Inconsolata', sans-serif;
}
h1,
h2,
h3,
h4,
h5,
h6 {
font-family: 'PT Sans Narrow', sans-serif;
font-weight: 700;
}
html {
background-color: #073642;
color: #839496;
margin: 1em;
}
body {
background-color: #002b36;
margin: 0 auto;
max-width: 40cm;
border: 1pt solid #586e75;
padding: 1em;
code,pre
{
font-family: 'Inconsolata',sans-serif;
}
code {
h1,h2,h3,h4,h5,h6
{
font-family: 'PT Sans Narrow',sans-serif;
font-weight: 400;
}
code
{
background-color: #073642;
padding: 2px;
}
a {
a
{
color: #b58900;
}
a:visited {
a:hover,a:visited
{
color: #cb4b16;
}
a:hover {
color: #cb4b16;
}
h1 {
.tag,h1
{
color: #d33682;
}
h2,
h3,
h4,
h5,
h6 {
h1
{
font-size: 2.4em;
}
h2,h3,h4,h5,h6
{
color: #859900;
}
pre {
background-color: #002b36;
pre
{
color: #839496;
border: 1pt solid #586e75;
padding: 1em;
box-shadow: 5pt 5pt 8pt #073642;
}
pre code {
pre,pre code
{
background-color: #002b36;
}
h1 {
font-size: 2.8em;
h2
{
font-size: 2em;
}
h2 {
font-size: 2.4em;
h3
{
font-size: 1.1em;
}
h3 {
font-size: 1.8em;
h4
{
font-size: 1.0em;
}
h4 {
font-size: 1.4em;
h5
{
font-size: 0.9em;
}
h5 {
font-size: 1.3em;
h6
{
font-size: .8em;
}
h6 {
font-size: 1.15em;
}
.tag {
.tag
{
background-color: #073642;
color: #d33682;
padding: 0 0.2em;
padding: 0 .2em;
}
.todo,
.next,
.done {
.done,.next,.todo
{
color: #002b36;
background-color: #dc322f;
padding: 0 0.2em;
padding: 0 .2em;
}
.tag {
-webkit-border-radius: 0.35em;
-moz-border-radius: 0.35em;
border-radius: 0.35em;
.tag
{
-webkit-border-radius: .35em;
-moz-border-radius: .35em;
border-radius: .35em;
}
.TODO {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
.ACTIVE,.CANCELLED,.DONE,.HOLD,.NEXT,.NOTE,.TODO,.WAITING
{
-webkit-border-radius: .2em;
-moz-border-radius: .2em;
border-radius: .2em;
background-color: #2aa198;
}
.NEXT {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
.ACTIVE,.CANCELLED,.DONE,.HOLD,.NEXT,.NOTE,.WAITING
{
background-color: #268bd2;
}
.ACTIVE {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
background-color: #268bd2;
}
.DONE {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
.CANCELLED,.DONE,.HOLD,.NOTE,.WAITING
{
background-color: #859900;
}
.WAITING {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
.CANCELLED,.HOLD,.NOTE,.WAITING
{
background-color: #cb4b16;
}
.HOLD {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
.CANCELLED,.HOLD,.NOTE
{
background-color: #d33682;
}
.NOTE {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
background-color: #d33682;
}
.CANCELLED {
-webkit-border-radius: 0.2em;
-moz-border-radius: 0.2em;
border-radius: 0.2em;
.CANCELLED
{
background-color: #859900;
}
}

13
temp Normal file
View File

@ -0,0 +1,13 @@
</div><div class="differences added"> (fp_line (start 23.25 -1.7) (end 25.05 -1.7) (layer F.SilkS) (width 0.12))
</div><div class="differences added"> (fp_line (start 25.05 -1.7) (end 25.05 -2.45) (layer F.SilkS) (width 0.12))
</div><div class="differences added"> (fp_line (start 25.05 -2.45) (end 23.25 -2.45) (layer F.SilkS) (width 0.12))
</div><div class="differences removed"> (fp_line (start -1.8 2.75) (end 13.75 2.75) (layer F.SilkS) (width 0.12))
</div><div class="differences removed"> (fp_line (start 30.05 -0.2) (end 29.3 -0.2) (layer F.SilkS) (width 0.12))
</div><div class="differences removed"> (fp_line (start 29.3 -0.2) (end 29.3 2.75) (layer F.SilkS) (width 0.12))
</div><div class="differences removed"> (fp_line (start 29.3 2.75) (end 13.75 2.75) (layer F.SilkS) (width 0.12))
</div><div class="differences added"> (fp_line (start -1.8 2.75) (end 11.25 2.75) (layer F.SilkS) (width 0.12))
</div><div class="differences added"> (fp_line (start 25.05 -0.2) (end 24.3 -0.2) (layer F.SilkS) (width 0.12))
</div><div class="differences added"> (fp_line (start 24.3 -0.2) (end 24.3 2.75) (layer F.SilkS) (width 0.12))
</div><div class="differences added"> (fp_line (start 24.3 2.75) (end 11.25 2.75) (layer F.SilkS) (width 0.12))
</div><div class="differences removed"> (fp_text reference C13 (at 0 -1.65 270) (layer F.SilkS)
</div><div class="differences added"> (fp_text reference C13 (at 0 -1.65) (layer F.SilkS)

10
tkUI.py
View File

@ -113,7 +113,7 @@ def runGUI(checkouts_top, prjctName, prjctPath, scm):
frame2, text=b, variable=buttons[b], onvalue=1, offvalue=0).pack(anchor='w')
commitTop = Variable()
listTop = Listbox(frame3, bd=0, selectmode=SINGLE, exportselection=False)
listTop = Listbox(frame3, bd=0, selectmode=SINGLE, exportselection=False, font='TkFixedFont')
listTop.grid(column=0, row=0, sticky=(N, E, W))
scrollTop = ttk.Scrollbar(frame3, orient=VERTICAL, command=listTop.yview)
scrollTop.grid(column=1, row=0, sticky=(N, E, W))
@ -122,8 +122,12 @@ def runGUI(checkouts_top, prjctName, prjctPath, scm):
listTop.bind('<<ListboxSelect>>', CurSelect)
commitBottom = Variable()
listBottom = Listbox(frame4, bd=0, selectmode=SINGLE,
exportselection=False)
listBottom = Listbox(
frame4,
bd=0,
selectmode=SINGLE,
exportselection=False,
font='TkFixedFont')
listBottom.grid(column=0, row=0, sticky=(N, E, W))
scrollBottom = ttk.Scrollbar(
frame4, orient=VERTICAL, command=listBottom.yview)