summaryrefslogtreecommitdiff
path: root/jfr_playoff/gui/tabs.py
diff options
context:
space:
mode:
authoremkael <emkael@tlen.pl>2019-06-01 14:09:04 +0200
committeremkael <emkael@tlen.pl>2019-06-01 14:09:04 +0200
commitbec32a9f57abdf0ba20e2e64920648f2d7e993d4 (patch)
tree94556ee5804f006e3b122caf5771ce13ea1120ff /jfr_playoff/gui/tabs.py
parent353b6d158c5e34064728514a015ea760ee771268 (diff)
MySQL config frame
Diffstat (limited to 'jfr_playoff/gui/tabs.py')
-rw-r--r--jfr_playoff/gui/tabs.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/jfr_playoff/gui/tabs.py b/jfr_playoff/gui/tabs.py
index e64c768..ecb7ab8 100644
--- a/jfr_playoff/gui/tabs.py
+++ b/jfr_playoff/gui/tabs.py
@@ -5,10 +5,13 @@ import os
import tkinter as tk
from tkinter import ttk
import tkFileDialog as tkfd
+import tkMessageBox as tkmb
+from .frames import getIntVal
from .frames.team import *
from ..data import PlayoffData
+from ..db import PlayoffDB
class PlayoffTab(ttk.Frame):
def __init__(self, master):
@@ -162,8 +165,66 @@ class NetworkTab(PlayoffTab):
return 'Sieć'
def getDB(self):
+ if len(self.host.get().strip()):
+ return {
+ 'host': self.host.get().strip(),
+ 'port': getIntVal(self.port, default=3306),
+ 'user': self.user.get().strip(),
+ 'pass': self.pass_.get().strip()
+ }
return None
+ def _testDB(self):
+ try:
+ dbConfig = self.getDB()
+ if dbConfig is None:
+ raise AttributeError('Database not configured')
+ db = PlayoffDB(dbConfig)
+ self.dbError = None
+ self.dbTestLabel.configure(text='✓')
+ self.dbTestLabel.configure(foreground='green')
+ except Exception as e:
+ self.dbError = unicode(e)
+ self.dbTestLabel.configure(text='✗')
+ self.dbTestLabel.configure(foreground='red')
+
+ def _dbError(self, event):
+ if self.dbError is not None:
+ tkmb.showerror('Błąd połączenia z bazą danych', self.dbError)
+
+ def renderContent(self, container):
+ (ttk.Label(container, text='Ustawienia MySQL')).grid(
+ row=0, column=0, columnspan=4, sticky=tk.E+tk.W)
+ (ttk.Label(container, text='Host:')).grid(
+ row=1, column=0, sticky=tk.E)
+ self.host = tk.StringVar()
+ (ttk.Entry(container, textvariable=self.host)).grid(
+ row=1, column=1, sticky=tk.E+tk.W)
+ (ttk.Label(container, text='Port:')).grid(
+ row=1, column=2, sticky=tk.E)
+ self.port = tk.StringVar()
+ self.port.set(3306)
+ (tk.Spinbox(
+ container, textvariable=self.port, width=5,
+ from_=0, to=65535)).grid(row=1, column=3, sticky=tk.W)
+ (ttk.Label(container, text='Użytkownik:')).grid(
+ row=2, column=0, sticky=tk.E)
+ self.user = tk.StringVar()
+ (ttk.Entry(container, textvariable=self.user)).grid(
+ row=2, column=1, sticky=tk.E+tk.W)
+ (ttk.Button(
+ container, text='Testuj ustawienia', command=self._testDB)).grid(
+ row=2, column=3)
+ self.dbError = None
+ self.dbTestLabel = ttk.Label(container)
+ self.dbTestLabel.grid(row=2, column=4)
+ self.dbTestLabel.bind('<Button-1>', self._dbError)
+ (ttk.Label(container, text='Hasło:')).grid(
+ row=3, column=0, sticky=tk.E)
+ self.pass_ = tk.StringVar()
+ (ttk.Entry(container, textvariable=self.pass_, show='*')).grid(
+ row=3, column=1, sticky=tk.E+tk.W)
+
class VisualTab(PlayoffTab):
@property
def title(self):