While I can't help you with the wx specific part of the question, I can
offer help with the reuse question. Here is one approach. Add an
controller identifier to fpCallback. Then use lambda expressions for
the
actual callback, where the lambda expressions pass in a fixed value
for the
identifier.
Modified code:
self.fp1 = filebrowse.FileBrowseButtonWithHistory(pnl, -1,
size=(300, -1),
labelText='', fileMask='*.*', fileMode=wx.OPEN,
dialogTitle='Select the file containing UCF claims',
changeCallback= lambda x: self.fpCallback('fp1', x)
)
self.fp2 = filebrowse.FileBrowseButtonWithHistory(pnl, -1,
size=(300, -1),
labelText='', fileMask='FI*.*', fileMode=wx.OPEN,
dialogTitle='Select the form-image file - generally
starts with FI',
changeCallback= lambda x: self.fpCallback('fp2', x)
)
[snip]
def fpCallback(self, controlID, evt):
print evt.__dict__
print help(evt)
value = evt.GetString()
[snip]
- Jeff Younker - [EMAIL PROTECTED] -
On Dec 6, 2007, at 9:12 AM, Marc Tompkins wrote:
I have a specific question - how can I generalize a
FileBrowseButtonWithHistory - and I realized, as I was trying to
word my question, that my real question is a bit more generic.
First, the specific question: The FileBrowseButtonWithHistory
requires a callback override and some custom code to straighten out
handling the history. So far, so good. However, I wish to use more
than one FBBWH on my form, and I can't figure out how to re-use the
custom callback so it will work for both controls. (It makes me
sick to my stomach when I look at my code and see duplicate
blocks!) Don't get me wrong - it's working right now, it's just
that my code is fugly and I want to clean it up.
In more general terms, how can I set more than one control to use
the same block of code as a custom callback, and figure out at
runtime which control I'm responding to? Doesn't the Event or
CommandEvent carry any information about itself?
I've tried this:
[snip]
self.fp1 = filebrowse.FileBrowseButtonWithHistory(pnl, -1,
size=(300, -1),
labelText='', fileMask='*.*', fileMode=wx.OPEN,
dialogTitle='Select the file containing UCF claims',
changeCallback= self.fp1Callback)
self.fp2 = filebrowse.FileBrowseButtonWithHistory(pnl, -1,
size=(300, -1),
labelText='', fileMask='FI*.*', fileMode=wx.OPEN,
dialogTitle='Select the form-image file - generally
starts with FI', changeCallback= self.fp2Callback)
[snip]
def fp1Callback(self, evt):
print evt.__dict__
print help(evt)
value = evt.GetString()
[snip]
def fp2Callback(self, evt):
print evt.__dict__
print help(evt)
value = evt.GetString()
[snip]
All I get from "print evt.__dict__" is: {'_string': u'E:\\ultrahld\
\report\\FILE'}
and all I get from help is:
Help on instance of LocalEvent in module wx.lib.filebrowsebutton
object:class instance(object)
| instance(class[, dict])
|
| Create an instance without calling its __init__() method.
| The class must be a classic class.
| If present, dict must be a dictionary or None.
|
| Methods defined here:
|
| __abs__(...)
| x.__abs__() <==> abs(x)
|
... in other words, I might as well have typed "help(object)".
I only know that the method "evt.GetString()" exists because the
example in the demo uses it.
I've Googled, and Gmaned, and read the wx docs (such as they are),
but I'm not seeing anything I can use.
I know that this is a wxPython question, and that this is the Python
list... but y'all have answered some wx questions in the past, and I
hate to join another list for one question. If I must, I will...
but thanks in advance for any light you can shed.
--
www.fsrtechnologies.com
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor