mirror of https://github.com/rusefi/KiCad-Diff.git
145 lines
4.2 KiB
Python
145 lines
4.2 KiB
Python
#!/usr/local/bin/python3
|
|
|
|
import subprocess
|
|
import tkinter as tk
|
|
from tkinter import *
|
|
from tkinter import filedialog, ttk, messagebox
|
|
|
|
global root, commitTop, commitBottom
|
|
|
|
|
|
def runProgram():
|
|
# Just break out of mainloop to return current variables
|
|
|
|
root.destroy()
|
|
|
|
def quit():
|
|
root.destroy()
|
|
|
|
|
|
def CurSelect(event):
|
|
global commitTop, commitBottom
|
|
widget = event.widget
|
|
selection = widget.curselection()
|
|
picked = widget.get(selection)
|
|
source = ((str(widget).split('.'))[1])[-1:]
|
|
# TOP window is 3
|
|
if source == '2':
|
|
commitTop = picked
|
|
# BOTTOM window is 4
|
|
elif source == '3':
|
|
commitBottom = picked
|
|
|
|
|
|
def runGUI(checkouts_top, prjctName, prjctPath, scm):
|
|
|
|
global root, commitTop, commitBottom
|
|
|
|
checkouts_bottom = checkouts_top[:]
|
|
|
|
root = Tk()
|
|
|
|
root.configure(background='#ececec')
|
|
|
|
root.title("Kicad Visual Diff")
|
|
# root.geometry('1200x700')
|
|
|
|
frame1 = tk.LabelFrame(root, text=scm, width=1000,
|
|
height=50, bd=1, background='#ececec')
|
|
frame2 = tk.LabelFrame(root, text="Commit 1", width=1000,
|
|
height=200, bd=1, background='#ececec')
|
|
frame3 = tk.LabelFrame(root, text="Commit 2", width=1000,
|
|
height=200, bd=1, background='#ececec')
|
|
frame4 = tk.LabelFrame(root, width=1000,
|
|
height=50, bd=0, background='#ececec')
|
|
|
|
frame1.grid(row=0, column=0, padx=25, sticky='N E W S')
|
|
frame2.grid(row=1, column=0, padx=25, sticky='N E W')
|
|
frame3.grid(row=2, column=0, padx=25, sticky='N EW')
|
|
frame4.grid(row=3, column=0, padx=25, sticky='N E W S')
|
|
|
|
# root.grid_columnconfigure(0, weight=1)
|
|
# root.grid_columnconfigure(1, weight=10)
|
|
|
|
root.grid_rowconfigure(0, minsize=50, weight=1)
|
|
root.grid_rowconfigure(1, minsize=200, weight=2)
|
|
root.grid_rowconfigure(2, minsize=200, weight=2)
|
|
root.grid_rowconfigure(3, minsize=50, weight=1)
|
|
|
|
tk.Label(frame1, text=prjctPath, bg='#ececec').pack(side=LEFT, padx=10)
|
|
tk.Label(frame1, text=prjctName, bg='#ececec').pack(side=LEFT, padx=10)
|
|
|
|
|
|
|
|
commitTop = Variable()
|
|
listTop = Listbox(
|
|
frame2,
|
|
bd=0,
|
|
selectmode=SINGLE,
|
|
exportselection=False,
|
|
font='TkFixedFont')
|
|
listTop.grid(column=0, row=0, sticky=(N, E, W))
|
|
scrollTop = ttk.Scrollbar(frame2, orient=VERTICAL, command=listTop.yview)
|
|
scrollTop.grid(column=1, row=0, sticky=(N, E, W))
|
|
listTop['yscrollcommand'] = scrollTop.set
|
|
|
|
listTop.bind('<<ListboxSelect>>', CurSelect)
|
|
|
|
commitBottom = Variable()
|
|
listBottom = Listbox(
|
|
frame3,
|
|
bd=0,
|
|
selectmode=SINGLE,
|
|
exportselection=False,
|
|
font='TkFixedFont')
|
|
listBottom.grid(column=0, row=0, sticky=(N, E, W))
|
|
scrollBottom = ttk.Scrollbar(
|
|
frame3, orient=VERTICAL, command=listBottom.yview)
|
|
scrollBottom.grid(column=1, row=0, sticky=(N, E, W))
|
|
listBottom['yscrollcommand'] = scrollBottom.set
|
|
listBottom.bind('<<ListboxSelect>>', CurSelect)
|
|
|
|
frame2.grid_columnconfigure(0, weight=1)
|
|
frame2.grid_columnconfigure(1, weight=0)
|
|
frame2.grid_rowconfigure(0, weight=1)
|
|
|
|
frame3.grid_columnconfigure(0, weight=1)
|
|
frame3.grid_columnconfigure(1, weight=0)
|
|
frame3.grid_rowconfigure(0, weight=1)
|
|
|
|
buttonOK = ttk.Button(
|
|
frame4, text="OK", command=runProgram, default='active')
|
|
buttonOK.grid(column=2, row=0, sticky='w', pady=10)
|
|
|
|
buttonCancel = ttk.Button(frame4, text="Cancel", command=quit)
|
|
buttonCancel.grid(column=1, row=0, sticky='e', pady=10)
|
|
|
|
|
|
frame4.grid_columnconfigure(0, weight=0)
|
|
frame4.grid_columnconfigure(1, weight=0)
|
|
frame4.grid_columnconfigure(2, weight=10)
|
|
|
|
|
|
for line in checkouts_top:
|
|
listTop.insert(END, line)
|
|
|
|
for i in range(1, len(checkouts_top), 2):
|
|
listTop.itemconfigure(i, background='#ececec')
|
|
|
|
for line in checkouts_bottom:
|
|
# listBottom.insert(END, line[0:-1])
|
|
listBottom.insert(END, line)
|
|
|
|
for i in range(1, len(checkouts_bottom), 2):
|
|
listBottom.itemconfigure(i, background='#ececec')
|
|
|
|
for child in root.winfo_children():
|
|
child.grid_configure(padx=5, pady=5)
|
|
|
|
root.bind('<Return>', runProgram)
|
|
|
|
root.update()
|
|
root.mainloop()
|
|
return (commitTop, commitBottom)
|
|
root.destroy()
|