You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koffice/lib/kross/test/testgui.py

150 lines
4.5 KiB

#!/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 tkMessageBox
tkMessageBox.showinfo("Callback1", "Callback1 called.")
def callback2(self):
import tkMessageBox
tkMessageBox.showinfo("Callback2", "Callback2 called.")
class QtTest:
def __init__(self):
import qt
class Button(qt.QPushButton):
def __init__(self, *args):
apply(qt.QPushButton.__init__, (self,) + args)
class ComboBox(qt.QHBox):
def __init__(self, parent, caption, items = []):
qt.QHBox.__init__(self, parent)
self.setSpacing(6)
label = qt.QLabel(str(caption), self)
self.combobox = qt.QComboBox(self)
self.setStretchFactor(self.combobox, 1)
label.setBuddy(self.combobox)
for item in items:
self.combobox.insertItem( str(item) )
class FileChooser(qt.QHBox):
def __init__(self, *args):
apply(qt.QHBox.__init__, (self,) + args)
self.defaultfilename = "~/output.html"
self.setSpacing(6)
label = qt.QLabel("File:", self)
self.edit = qt.QLineEdit(self)
self.edit.setText(self.defaultfilename)
self.setStretchFactor(self.edit, 1)
label.setBuddy(self.edit)
browsebutton = Button("...", self)
qt.QObject.connect(browsebutton, qt.SIGNAL("clicked()"), self.browseButtonClicked)
def file(self):
return self.edit.text()
def browseButtonClicked(self):
filename = None
try:
# try to use the kfile module included in pykde
import kfile
filename = kfile.KFileDialog.getOpenFileName(self.defaultfilename, "*.html", self, "Save to file")
except:
# fallback to Qt filedialog
filename = qt.QFileDialog.getOpenFileName(self.defaultfilename, "*.html", self, "Save to file")
if filename != None and filename != "":
self.edit.setText(filename)
class Dialog(qt.QDialog):
def __init__(self, parent = None, name = None, modal = 0, fl = 0):
qt.QDialog.__init__(self, parent, name, modal, fl)
qt.QDialog.accept = self.accept
self.setCaption("Export to HTML")
#self.layout()
self.layout = qt.QVBoxLayout(self)
self.layout.setSpacing(6)
self.layout.setMargin(11)
infolabel = qt.QLabel("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 = qt.QHBox(self)
buttonbox.setSpacing(6)
self.layout.addWidget(buttonbox)
savebutton = Button("Save", buttonbox)
qt.QObject.connect(savebutton, qt.SIGNAL("clicked()"), self, qt.SLOT("accept()"))
#qt.QObject.connect(savebutton, qt.SIGNAL("clicked()"), self.exportButtonClicked)
cancelbutton = Button("Cancel", buttonbox)
qt.QObject.connect(cancelbutton, qt.SIGNAL("clicked()"), self, qt.SLOT("close()"))
def accept(self):
print "ACCEPTTTTTTTT !!!!!!!!!!!!!!!!!!!!!!!!!!!!"
file = qt.QFile( 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 qt.QDialog.event(self, e)
app = qt.qApp
dialog = Dialog(app.mainWidget(), "Dialog", 1)
dialog.show()
print "################## BEGIN"
#TkTest()
QtTest()
print "################## END"