#Boa:Dialog:DBConnectDialog
import wx
import wxdbtools as db
def create(parent):
return DBConnectDialog(parent)
[wxID_DBCONNECTDIALOG, wxID_DBCONNECTDIALOGCANCELBTN,
wxID_DBCONNECTDIALOGCONNECTBTN, wxID_DBCONNECTDIALOGDATABASETEXTCTRL,
wxID_DBCONNECTDIALOGPWDTEXTCTRL, wxID_DBCONNECTDIALOGSERVERNAMETEXTCTRL,
wxID_DBCONNECTDIALOGSTATICTEXT1, wxID_DBCONNECTDIALOGSTATICTEXT2,
wxID_DBCONNECTDIALOGSTATICTEXT3, wxID_DBCONNECTDIALOGSTATICTEXT4,
wxID_DBCONNECTDIALOGSTATICTEXT5, wxID_DBCONNECTDIALOGSTATUSTEXTCTRL,
wxID_DBCONNECTDIALOGUSERNAMETEXTCTRL,
] = [wx.NewId() for _init_ctrls in range(13)]
class DBConnectDialog(wx.Dialog):
def _init_ctrls(self, prnt):
# generated method, don't edit
wx.Dialog.__init__(self, id=wxID_DBCONNECTDIALOG,
name='DBConnectDialog', parent=prnt, pos=wx.Point(503, 380),
size=wx.Size(385, 344),
style=wx.STAY_ON_TOP | wx.DIALOG_MODAL | wx.TAB_TRAVERSAL | wx.SUNKEN_BORDER | wx.DEFAULT_DIALOG_STYLE,
title='Database Connection Dialog')
self.SetClientSize(wx.Size(377, 317))
self.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL, False,
'MS Shell Dlg 2'))
self.SetThemeEnabled(True)
self.staticText1 = wx.StaticText(id=wxID_DBCONNECTDIALOGSTATICTEXT1,
label='User Name', name='staticText1', parent=self,
pos=wx.Point(16, 8), size=wx.Size(63, 16), style=0)
self.staticText1.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.NORMAL,
False, 'MS Shell Dlg 2'))
self.staticText2 = wx.StaticText(id=wxID_DBCONNECTDIALOGSTATICTEXT2,
label='Password', name='staticText2', parent=self,
pos=wx.Point(200, 8), size=wx.Size(55, 16), style=0)
self.usernameTextCtrl = wx.TextCtrl(id=wxID_DBCONNECTDIALOGUSERNAMETEXTCTRL,
name='usernameTextCtrl', parent=self, pos=wx.Point(16, 24),
size=wx.Size(160, 24), style=0, value='barton')
self.servernameTextCtrl = wx.TextCtrl(id=wxID_DBCONNECTDIALOGSERVERNAMETEXTCTRL,
name='servernameTextCtrl', parent=self, pos=wx.Point(16, 80),
size=wx.Size(160, 24), style=0, value='genesis')
self.staticText3 = wx.StaticText(id=wxID_DBCONNECTDIALOGSTATICTEXT3,
label='Server Name or IP Address', name='staticText3',
parent=self, pos=wx.Point(16, 64), size=wx.Size(156, 16),
style=0)
self.staticText5 = wx.StaticText(id=wxID_DBCONNECTDIALOGSTATICTEXT5,
label='Default Database', name='staticText5', parent=self,
pos=wx.Point(200, 64), size=wx.Size(97, 16), style=0)
self.pwdTextCtrl = wx.TextCtrl(id=wxID_DBCONNECTDIALOGPWDTEXTCTRL,
name='pwdTextCtrl', parent=self, pos=wx.Point(200, 24),
size=wx.Size(160, 24), style=wx.TE_PASSWORD, value='1coolSQL')
self.databaseTextCtrl = wx.TextCtrl(id=wxID_DBCONNECTDIALOGDATABASETEXTCTRL,
name='databaseTextCtrl', parent=self, pos=wx.Point(200, 80),
size=wx.Size(160, 24), style=0, value='Trails')
self.staticText4 = wx.StaticText(id=wxID_DBCONNECTDIALOGSTATICTEXT4,
label='Connection Status Log', name='staticText4', parent=self,
pos=wx.Point(16, 120), size=wx.Size(127, 16), style=0)
self.ConnectBtn = wx.Button(id=wxID_DBCONNECTDIALOGCONNECTBTN,
label='Connect', name='ConnectBtn', parent=self, pos=wx.Point(104,
280), size=wx.Size(75, 26), style=0)
self.ConnectBtn.Bind(wx.EVT_BUTTON, self.OnConnectButton,
id=wxID_DBCONNECTDIALOGCONNECTBTN)
self.cancelBtn = wx.Button(id=wxID_DBCONNECTDIALOGCANCELBTN,
label='Cancel', name='cancelBtn', parent=self, pos=wx.Point(200,
280), size=wx.Size(75, 26), style=0)
self.cancelBtn.Bind(wx.EVT_BUTTON, self.OnCancelButton,
id=wxID_DBCONNECTDIALOGCANCELBTN)
self.statusTextCtrl = wx.TextCtrl(id=wxID_DBCONNECTDIALOGSTATUSTEXTCTRL,
name='statusTextCtrl', parent=self, pos=wx.Point(16, 136),
size=wx.Size(344, 136), style=wx.TE_READONLY | wx.TE_MULTILINE,
value='')
self.statusTextCtrl.SetFont(wx.Font(8, wx.SWISS, wx.NORMAL, wx.NORMAL,
False, 'MS Shell Dlg 2'))
def __init__(self, parent):
self._init_ctrls(parent)
self.dbServer = db.DBServer(self)
self.dbConnect = self.DBConnect() # Don't call this guy directly (don't keep?)
if not self.dbConnect:
self.Show()
def DBConnect(self):
user = self.usernameTextCtrl.GetValue()
password = self.pwdTextCtrl.GetValue()
host = self.servernameTextCtrl.GetValue()
dbConnect = self.dbServer.Login(host, user, password)
database = self.databaseTextCtrl.GetValue()
if database:
self.dbServer.Execute("CREATE DATABASE IF NOT EXISTS %s" % database)
self.dbServer.Execute("USE %s" % database)
return dbConnect
def GetDBServer(self):
return self.dbServer
def GetDefaultDatabase(self):
return self.databaseTextCtrl.GetValue()
def write(self, message):
self.statusTextCtrl.AppendText("%s\n" %message)
def OnConnectButton(self, event):
if self.dbConnect:
self.dbConnect.close()
self.dbConnect = self.DBConnect()
if self.dbConnect:
self.write("Ready")
def OnCancelButton(self, event):
self.Hide()
From: https://bytes.com/topic/python/insights/572415-wx-dialog-subclass-instantiates-my-dbserver-class