|
From: Kevin A. <al...@se...> - 2001-10-15 23:18:22
|
I am pleased to say that after some false starts yesterday and today, some
email exchanges with Robin, a bit of inspiration, and a generous donation to
the god of kludge, we are close to having generic modal dialogs in
PythonCard. I've included an example below.
The nice thing about the modal dialogs is that they work almost identically
to the Background class. They don't have a menubar or a background image,
but all of the widgets that we have now should work in the modal dialog and
the attribute and event handlers work identically.
Well not quite identically. Both the default button and the cancel buttons
need to call event.skip() and you have to add an id attribute to the
resource
I'm going to mull over this tonight before putting the code into cvs, but
I'll post when I do. I have some other issues I want to address on this
topic, but I have to run right now, so I'll post on those issues later as
well.
ka
---
class FindDialog(PythonCardPrototype.dialognew.GenericDialog):
def __init__(self, aBg, searchText='', wholeWordsOnly=0,
caseSensitive=0) :
# load the resource
aDialogRsrc =
PythonCardPrototype.res.ResourceFile('find.rsrc.py').getResource()
PythonCardPrototype.dialognew.GenericDialog.__init__(self, aBg,
aDialogRsrc)
# if some special setup is necessary, do it here
self.components.fldFind.text = searchText
self.components.chkMatchWholeWordOnly.checked = wholeWordsOnly
self.components.chkMatchCase.checked = caseSensitive
print "init done"
def on_btnFindNext_mouseClick(self, target, event):
print "btnFindNext"
print self.components.fldFind.text
event.skip()
def on_btnCancel_mouseClick(self, target, event):
print "btnCancel"
event.skip()
class Minimal(PythonCardPrototype.model.Background):
def on_btnFind_mouseClick(self, target, event):
dlg = FindDialog(self)
dlg.showModal()
print "fldFind", dlg.components.fldFind.text
print "chkMatchWholeWordOnly",
dlg.components.chkMatchWholeWordOnly.checked
print "chkMatchCase", dlg.components.chkMatchCase.checked
print "FindDialog result:\naccepted: %s\nreturned: %s\n" %
(dlg.accepted(), dlg.returned())
dlg.destroy()
---
{'type':'GenericDialog',
#'file':'find.py',
'classname':'Find',
'name':'dlgFind',
'title':'Find dialog',
'position':(5, 5),
'size':(370, 120),
'components': [
{'type':'StaticText',
'name':'stcFindWhat',
'position':(7, 10),
'text':'Find What:',
},
{'type':'TextField',
'name':'fldFind',
'position':(70, 7),
'size':(195, -1),
},
{'type':'Button',
'name':'btnFindNext',
'position':(280, 5),
'label':'Find Next',
'id':5100,
},
{'type':'Button',
'name':'btnCancel',
'position':(280, 35),
'label':'Cancel',
'id':5101,
},
{'type':'CheckBox',
'name':'chkMatchWholeWordOnly',
'position':(7, 35),
'label':'Match whole word only',
},
{'type':'CheckBox',
'name':'chkMatchCase',
'position':(7, 55),
'label':'Match case',
},
] # end components
} # end GenericDialog
|