You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
4.5 KiB
Python
150 lines
4.5 KiB
Python
#!/usr/bin/env python
|
|
|
|
"""
|
|
This Python script demonstrates the usage of the Kross
|
|
python-interface to access KexiDB functionality from
|
|
within Python.
|
|
"""
|
|
|
|
class TkTest:
|
|
def __init__(self):
|
|
import tkinter
|
|
self.root = tkinter.Tk()
|
|
self.root.title("TkTest")
|
|
self.root.deiconify()
|
|
|
|
self.mainframe = tkinter.Frame(self.root)
|
|
self.mainframe.pack()
|
|
|
|
self.button1 = tkinter.Button(self.mainframe, text="Button1", command=self.callback1)
|
|
self.button1.pack(side=tkinter.LEFT)
|
|
|
|
self.button2 = tkinter.Button(self.mainframe, text="Button2", command=self.callback2)
|
|
self.button2.pack(side=tkinter.LEFT)
|
|
|
|
self.exitbutton = tkinter.Button(self.mainframe, text="Exit", command=self.root.destroy)
|
|
self.exitbutton.pack(side=tkinter.LEFT)
|
|
|
|
self.root.mainloop()
|
|
|
|
def callback1(self):
|
|
import tkinter.messagebox
|
|
tkinter.messagebox.showinfo("Callback1", "Callback1 called.")
|
|
|
|
def callback2(self):
|
|
import tkinter.messagebox
|
|
tkinter.messagebox.showinfo("Callback2", "Callback2 called.")
|
|
|
|
class TQtTest:
|
|
def __init__(self):
|
|
from TQt import tqt
|
|
|
|
class Button(tqt.TQPushButton):
|
|
def __init__(self, *args):
|
|
tqt.TQPushButton.__init__(*(self,) + args)
|
|
|
|
class ComboBox(tqt.TQHBox):
|
|
def __init__(self, parent, caption, items = []):
|
|
tqt.TQHBox.__init__(self, parent)
|
|
self.setSpacing(6)
|
|
label = tqt.TQLabel(str(caption), self)
|
|
self.combobox = tqt.TQComboBox(self)
|
|
self.setStretchFactor(self.combobox, 1)
|
|
label.setBuddy(self.combobox)
|
|
for item in items:
|
|
self.combobox.insertItem( str(item) )
|
|
|
|
class FileChooser(tqt.TQHBox):
|
|
def __init__(self, *args):
|
|
tqt.TQHBox.__init__(*(self,) + args)
|
|
self.defaultfilename = "~/output.html"
|
|
|
|
self.setSpacing(6)
|
|
label = tqt.TQLabel("File:", self)
|
|
self.edit = tqt.TQLineEdit(self)
|
|
self.edit.setText(self.defaultfilename)
|
|
self.setStretchFactor(self.edit, 1)
|
|
label.setBuddy(self.edit)
|
|
|
|
browsebutton = Button("...", self)
|
|
tqt.TQObject.connect(browsebutton, tqt.SIGNAL("clicked()"), self.browseButtonClicked)
|
|
|
|
def file(self):
|
|
return self.edit.text()
|
|
|
|
def browseButtonClicked(self):
|
|
filename = None
|
|
try:
|
|
# try to use the tdefile module included in pytde
|
|
import tdefile
|
|
filename = tdefile.KFileDialog.getOpenFileName(self.defaultfilename, "*.html", self, "Save to file")
|
|
except:
|
|
# fallback to TQt filedialog
|
|
filename = tqt.TQFileDialog.getOpenFileName(self.defaultfilename, "*.html", self, "Save to file")
|
|
if filename != None and filename != "":
|
|
self.edit.setText(filename)
|
|
|
|
class Dialog(tqt.TQDialog):
|
|
def __init__(self, parent = None, name = None, modal = 0, fl = 0):
|
|
tqt.TQDialog.__init__(self, parent, name, modal, fl)
|
|
tqt.TQDialog.accept = self.accept
|
|
self.setCaption("Export to HTML")
|
|
#self.layout()
|
|
|
|
self.layout = tqt.TQVBoxLayout(self)
|
|
self.layout.setSpacing(6)
|
|
self.layout.setMargin(11)
|
|
|
|
infolabel = tqt.TQLabel("Export the data of a table or a query to a HTML-file.", self)
|
|
self.layout.addWidget(infolabel)
|
|
|
|
source = ComboBox(self, "Datasource:")
|
|
self.layout.addWidget(source)
|
|
|
|
self.exporttype = ComboBox(self, "Style:", ["Plain","Paper","Desert","Blues"])
|
|
self.layout.addWidget(self.exporttype)
|
|
|
|
self.filechooser = FileChooser(self)
|
|
self.layout.addWidget(self.filechooser)
|
|
|
|
buttonbox = tqt.TQHBox(self)
|
|
buttonbox.setSpacing(6)
|
|
self.layout.addWidget(buttonbox)
|
|
|
|
savebutton = Button("Save", buttonbox)
|
|
tqt.TQObject.connect(savebutton, tqt.SIGNAL("clicked()"), self, tqt.SLOT("accept()"))
|
|
#tqt.TQObject.connect(savebutton, tqt.SIGNAL("clicked()"), self.exportButtonClicked)
|
|
|
|
cancelbutton = Button("Cancel", buttonbox)
|
|
tqt.TQObject.connect(cancelbutton, tqt.SIGNAL("clicked()"), self, tqt.SLOT("close()"))
|
|
|
|
def accept(self):
|
|
print("ACCEPTTTTTTTT !!!!!!!!!!!!!!!!!!!!!!!!!!!!")
|
|
|
|
file = tqt.TQFile( self.filechooser.file() )
|
|
#if not file.exists():
|
|
# print "File '%s' does not exist." % self.filechooser.file()
|
|
#else:
|
|
# print "File '%s' does exist." % self.filechooser.file()
|
|
|
|
def exportButtonClicked(self):
|
|
print("Export to HTML !!!!!!!!!!!!!!!!!!!!!!!!!!!!")
|
|
|
|
def __getattr__(self, attr):
|
|
print("=> Dialog.__getattr__(self,attr)")
|
|
#def closeEvent(self, ev): pass
|
|
def event(self, e):
|
|
print("=> Dialog.event %s" % e)
|
|
#self.deleteLater()
|
|
#support.swapThreadState() # calls appropriate c-function
|
|
return tqt.TQDialog.event(self, e)
|
|
|
|
app = tqt.tqApp
|
|
dialog = Dialog(app.mainWidget(), "Dialog", 1)
|
|
dialog.show()
|
|
|
|
print("################## BEGIN")
|
|
#TkTest()
|
|
TQtTest()
|
|
print("################## END")
|