]> gitweb.morketsmerke.org Git - ML.git/commitdiff
Przeprowadzenie do końca testów
authorxf0r3m <jakubstasinski@protonmail.com>
Fri, 24 May 2024 12:38:09 +0000 (14:38 +0200)
committerxf0r3m <jakubstasinski@protonmail.com>
Fri, 24 May 2024 12:38:09 +0000 (14:38 +0200)
funkcji bazodanowych. Uzupełnienie layout aplikacji o dane logującego oraz o widget wyszukiwania.
Rozpoczęto obsługę widgetów wraz z funkcjami bazodanymowymi. Zakończono pracę na sprawdzeniu
podanego imienia bądź znaku w danych PA.com i ustawienie ich jako danych logującego.

db.py
pa_com.py
test_db.py
window.py

diff --git a/db.py b/db.py
index 3b3ad987dfa01dd56764de19678d6e2a55dcd5ab..8508a53a5459dad1f4b79bc8050c3bcff0e9a1aa 100755 (executable)
--- a/db.py
+++ b/db.py
@@ -17,25 +17,26 @@ def dbNotFound():
   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):
@@ -49,7 +50,7 @@ def saveLoggerData(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()
@@ -59,8 +60,8 @@ def updateLoggerData(phrase,sign,name,lat,lon):
   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()
index 41927245ee84643ccfdfcf071f841f7b6657686e..ab72071ccea0f32bf68aa6d87e7cb0adceef2893 100755 (executable)
--- a/pa_com.py
+++ b/pa_com.py
@@ -37,6 +37,6 @@ def getDataFromPAcom(paComList):
     #print(f"Znak: {cs}\t Nazwa: {name}\t GPS: {gpsCords}")
     #return paComList
 
-pCL=[]
-getDataFromPAcom(pCL)
+#pCL=[]
+#getDataFromPAcom(pCL)
 #print(pCL)
index 34dbb5980f51183857d3724badaade6901a70280..07645e47a4bd8e91f6f609a0cdbd650feec1f28d 100755 (executable)
@@ -1,11 +1,16 @@
 #!/usr/bin/env python3
 
 import db
+import pa_com
 
 p = '2137'
 
 if db.isDatabaseExist():
-  db.checkLoggerData(p, db.isSignOrName(p))
+  #pCL=[]
+  #pa_com.getDataFromPAcom(pCL)
+  #db.loadDataFromPAcom(pCL) 
+  #db.saveLoggerData(p) 
+  db.checkData(p, db.isSignOrName(p), 'logger')
   #db.updateLoggerData(p, 2137, 'JuanPabloSec', 50.24, 21.49)
 else:
   db.dbNotFound()
index f0bac56e2ee950186b0f1395db8feff14fe0ed07..c2eedb81fb6afa2d6260d157c9d6105467415027 100755 (executable)
--- a/window.py
+++ b/window.py
@@ -4,7 +4,7 @@
 
 from tkinter import *  
 from tkinter import ttk
-import re
+import re, db, pa_com
 
 """
 def csCHandler(arg1):
@@ -21,25 +21,163 @@ 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()
@@ -47,21 +185,12 @@ csFrame=ttk.Frame(content, width=600, height=32)
 #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()