cur.execute("CREATE TABLE logger(sign,name,lat,lon)")
cur.execute("CREATE TABLE pacom(sign,name,lat,lon)")
#rst = raport, dt=czas/data, eq=PMR/CB, ch=2/12(PMR),11/13(CB)
- cur.execute("CREATE TABLE logs(sign,name,rst,dt,eq,ch)")
+ cur.execute("CREATE TABLE logs(logger,sign,name,rst,dt,eq,ch)")
con.close()
def loadDataFromPAcom(pacomList):
con = sqlite3.connect("ml-logs.db")
cur = con.cursor()
- cur.executemany("INSERT INTO pacom VALUES(?, ?, ?)", pacomList)
+ cur.executemany("INSERT INTO pacom VALUES(?, ?, ?, ?)", pacomList)
con.commit()
con.close()
-def checkLoggerData(loggerData, ldType):
+def checkData(phrase, pType, sqlTable):
con = sqlite3.connect("ml-logs.db")
cur = con.cursor()
- if ldType:
- res = cur.execute(f"SELECT * FROM logger WHERE sign = {loggerData}")
+ if pType:
+ res = cur.execute(f"SELECT * FROM {sqlTable} WHERE sign = '{phrase}'")
else:
- res = cur.execute(f"SELECT * FROM logger WHERE name = '{loggerData}'")
+ res = cur.execute(f"SELECT * FROM {sqlTable} WHERE name = '{phrase}'")
result = res.fetchone()
- print(result)
+ #print(result)
+ return result
con.close()
def isSignOrName(phrase):
con = sqlite3.connect('ml-logs.db')
cur = con.cursor()
if isSignOrName(phrase):
- cur.execute(f"INSERT INTO logger VALUES ({phrase},'None',0.0,0.0)")
+ cur.execute(f"INSERT INTO logger VALUES ('{phrase}','None',0.0,0.0)")
else:
cur.execute(f"INSERT INTO logger VALUES (0,'{phrase}',0.0,0.0)")
con.commit()
con = sqlite3.connect('ml-logs.db')
cur = con.cursor()
if isSignOrName(phrase):
- cur.execute(f"UPDATE logger SET sign = {sign}, name = '{name}', lat = {lat}, lon = {lon} WHERE sign = {phrase}")
+ cur.execute(f"UPDATE logger SET sign = '{sign}', name = '{name}', lat = {lat}, lon = {lon} WHERE sign = '{phrase}'")
else:
- cur.execute(f"UPDATE logger SET sign = {sign}, name = '{name}', lat = {lat}, lon = {lon} WHERE name = '{phrase}'")
+ cur.execute(f"UPDATE logger SET sign = '{sign}', name = '{name}', lat = {lat}, lon = {lon} WHERE name = '{phrase}'")
con.commit()
con.close()
from tkinter import *
from tkinter import ttk
-import re
+import re, db, pa_com
"""
def csCHandler(arg1):
csTypeLabel=ttk.Label(csFrame, text=csCLValue.get())
csTypeLabel.grid(column=2, row=0, padx=5)
"""
-def findInfoAbout():
+def alertWindow(msg):
+ alert = Toplevel(root)
+ alert.title('Mike Lima')
+ #icon = PhotoImage(file="ml-windowicon.png")
+ #alert.call('wm','iconphoto', alert._w, icon)
+ alert.geometry('200x150')
+ mainFrame=ttk.Frame(alert)
+ alertMsg=ttk.Label(mainFrame, text=msg, justify="center", wraplength=195)
+ alertBtn=ttk.Button(mainFrame, text="OK", command=alert.destroy, width=4)
+ mainFrame.grid(column=0, row=0)
+ alertMsg.grid(column=0, row=0, padx=5, pady=5, sticky="ew")
+ alertBtn.grid(column=0, row=1, padx=5, pady=5, sticky="ew")
+ alert.columnconfigure(1, weight=1)
+ alert.rowconfigure(1, weight=1)
+ root.wait_window(alert)
+
+def fillLoggerData(sign, name, lat, lon):
+ loggerSignEntry.insert(0, sign)
+ loggerNameEntry.insert(0, name)
+ loggerLatEntry.insert(0, lat)
+ loggerLonEntry.insert(0, lon)
+
+def fillDbWithNewLoggerData(phrase):
+ db.saveLoggerData(phrase)
+ logger=db.checkData(phrase, db.isSignOrName(phrase), 'logger')
+ fillLoggerData(logger[0], logger[1], logger[2], logger[3])
+
+def loadLoggerInfo():
phrase=csValue.get()
- PA_comFlag=checkPA_com.get()
- prog = re.compile('^\d*$');
- if not prog.match(phrase) == None:
- print("Sign");
+ checkPA=checkPA_com.get()
+ print(checkPA)
+ if checkPA == '1':
+ if db.isDatabaseExist():
+ pass
+ else:
+ alertWindow('Baza danych nie istnieje!\nZostanie utworzona nowa.\nZostaną załadowane dane ze strony planawaryjny.com, co może chwilę potrwać.')
+ db.dbNotFound()
+ pCL=[]
+ pa_com.getDataFromPAcom(pCL)
+ db.loadDataFromPAcom(pCL)
+ db.saveLoggerData(phrase)
+ pacom=db.checkData(phrase, db.isSignOrName(phrase), 'pacom')
+ db.updateLoggerData(phrase, pacom[0], pacom[1], pacom[2], pacom[3])
+ fillLoggerData(pacom[0], pacom[1], pacom[2], pacom[3])
+ else:
+ if db.isDatabaseExist():
+ logger=db.checkData(phrase, db.isSignOrName(phrase), 'logger')
+ if not logger == None:
+ fillLoggerData(logger[0], logger[1], logger[2], logger[3])
+ else:
+ fillDbWithNewLoggerData(phrase)
+ else:
+ alertWindow('Baza danych nie istnieje!\nZostanie utworzona nowa.')
+ db.dbNotFound()
+ fillDbWithNewLoggerData(phrase)
+
+
+def saveLoggerInfo():
+ phrase = loggerSign.get()
+ sign = phrase
+ name = loggerName.get()
+ lat = loggerLat.get()
+ lon = loggerLon.get()
+ logger=db.checkData(phrase, db.isSignOrName(phrase), 'logger')
+ if not logger == None:
+ db.updateLoggerData(phrase, sign, name, lat, lon)
+ alertWindow('Dane zostały zmienione')
+
+
+def loggerEqHandler(arg1):
+ radio=loggerEq.get()
+ loggerChLabel=ttk.Label(loggerFrame, text="Kanał: ")
+ if radio == 'CB':
+ loggerChCombo=ttk.Combobox(loggerFrame, textvariable=loggerCh, value=('(AM) 11', '(SSB) 13)'))
else:
- print("Name");
- print(phrase)
- print(PA_comFlag)
+ loggerChCombo=ttk.Combobox(loggerFrame, textvariable=loggerCh, value=('2', '12'))
+
+ loggerChLabel.grid(column=2, row=2, padx=5, pady=5)
+ loggerChCombo.grid(column=3, row=2, padx=5, pady=5)
+def searchInfo():
+ pass
+
root = Tk()
root.title('Mike Lima')
icon = PhotoImage(file="ml-windowicon.png")
-root.call('wm','iconphoto', root._w, icon)
+root.iconphoto(True, icon)
+#root.call('wm','iconphoto', root._w, icon)
root.geometry('640x480')
content=ttk.Frame(root)
-csFrame=ttk.Frame(content, width=600, height=32)
+alert=""
+
+#Frame: Imie/Znak
+csFrame=ttk.LabelFrame(content, text="Imię/(161)ML:", borderwidth=1, relief='groove', width=640, height=32)
+csValue=StringVar()
+checkPA_com=StringVar()
+
+csLogo=PhotoImage(file="ml-sign-32x32.png")
+csImage=ttk.Label(csFrame, image=csLogo)
+csValueEntry=ttk.Entry(csFrame, textvariable=csValue)
+csLoadButton=ttk.Button(csFrame, text="Załaduj", command=loadLoggerInfo)
+csCheckPAChkbox=ttk.Checkbutton(csFrame, text="Pobierz dane z planawaryjny.com", variable=checkPA_com)
+
+csImage.grid(column=1, row=0, padx=10)
+csValueEntry.grid(column=3, row=0, padx=10)
+csCheckPAChkbox.grid(column=5, row=0, padx=10)
+csLoadButton.grid(column=6, row=0, padx=10)
+
+#Frame: Logujący
+loggerFrame=ttk.LabelFrame(content, text="Logujący:", borderwidth=1, relief='groove', width=640, height=96)
+loggerSign=StringVar()
+loggerName=StringVar()
+loggerLat=StringVar()
+loggerLon=StringVar()
+loggerEq=StringVar()
+loggerCh=StringVar()
+
+loggerSignLabel=ttk.Label(loggerFrame, text="Znak: ")
+loggerSignEntry=ttk.Entry(loggerFrame, textvariable=loggerSign)
+loggerNameLabel=ttk.Label(loggerFrame, text="Nazwa: ")
+loggerNameEntry=ttk.Entry(loggerFrame, textvariable=loggerName)
+loggerLatLabel=ttk.Label(loggerFrame, text="Lat: ")
+loggerLatEntry=ttk.Entry(loggerFrame, textvariable=loggerLat)
+loggerLonLabel=ttk.Label(loggerFrame, text="Lon: ")
+loggerLonEntry=ttk.Entry(loggerFrame, textvariable=loggerLon)
+loggerSaveButton=ttk.Button(loggerFrame, text="Zapisz", command=saveLoggerInfo)
+loggerEqLabel=ttk.Label(loggerFrame, text="Radio: ")
+loggerEqCombo=ttk.Combobox(loggerFrame, textvariable=loggerEq, values=('CB', 'PMR'))
+loggerEqCombo.bind('<<ComboboxSelected>>', loggerEqHandler);
+
+loggerSignLabel.grid(column=0, row=0, padx=5, pady=5)
+loggerSignEntry.grid(column=1, row=0, padx=5, pady=5)
+loggerNameLabel.grid(column=2, row=0, padx=5, pady=5)
+loggerNameEntry.grid(column=3, row=0, padx=5, pady=5)
+
+loggerLatLabel.grid(column=0, row=1, padx=5, pady=5)
+loggerLatEntry.grid(column=1, row=1, padx=5, pady=5)
+loggerLonLabel.grid(column=2, row=1, padx=5, pady=5)
+loggerLonEntry.grid(column=3, row=1, padx=5, pady=5)
+loggerSaveButton.grid(column=4, row=1, padx=5, pady=5)
+
+loggerEqLabel.grid(column=0, row=2, padx=5, pady=5)
+loggerEqCombo.grid(column=1, row=2, padx=5, pady=5)
+
+#Frame: Szukaj
+searchFrame=ttk.LabelFrame(content, text="Szukaj:", borderwidth=1, relief='groove', width=640, height=32)
+searchQuery=StringVar()
+
+searchEntryLabel=ttk.Label(searchFrame, text="Imię/(161)ML: ")
+searchEntry=ttk.Entry(searchFrame, textvariable=searchQuery)
+searchButton=ttk.Button(searchFrame, text="Szukaj", command=searchInfo)
+
+searchEntryLabel.grid(column=0, row=0, padx=5, pady=5)
+searchEntry.grid(column=1, row=0, padx=5, pady=5)
+searchButton.grid(column=2, row=0, padx=5, pady=5)
+
#Frame image: https://www.flaticon.com/free-icon/emergency-sign_2061966?term=emergency+sign&related_id=2061966
#csType=StringVar()
#csC.bind('<<ComboboxSelected>>', csCHandler)
#csValue=StringVar()
-csLogo=PhotoImage(file="ml-sign-32x32.png")
-csImage=ttk.Label(csFrame, image=csLogo)
-csLabel=ttk.Label(csFrame, text="Imię/(161)ML:")
-csValue=StringVar()
-csValueEntry=ttk.Entry(csFrame, textvariable=csValue)
-csLoadButton=ttk.Button(csFrame, text="Załaduj", command=findInfoAbout)
-checkPA_com=StringVar()
-csCheckPAChkbox=ttk.Checkbutton(csFrame, text="Pobierz z planawaryjny.com", variable=checkPA_com)
-
content.grid(column=0, row=0)
-csFrame.grid(column=0, row=0, padx=5, pady=5)
-csImage.grid(column=0, row=0, padx=5)
-csLabel.grid(column=1, row=0, padx=5)
-csValueEntry.grid(column=2, row=0, padx=5)
-csCheckPAChkbox.grid(column=3, row=0, padx=5)
-csLoadButton.grid(column=4, row=0, padx=5)
+csFrame.grid(column=0, row=0, padx=15, sticky="ew")
+loggerFrame.grid(column=0, row=1, padx=15, sticky="ew")
+searchFrame.grid(column=0, row=2, padx=15, sticky="ew")
+
+root.columnconfigure(1, weight=1)
+root.rowconfigure(1, weight=1)
root.mainloop()