From bec32a9f57abdf0ba20e2e64920648f2d7e993d4 Mon Sep 17 00:00:00 2001 From: emkael Date: Sat, 1 Jun 2019 14:09:04 +0200 Subject: MySQL config frame --- jfr_playoff/gui/tabs.py | 61 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'jfr_playoff') 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('', 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): -- cgit v1.2.3