>>>>> "Somesh" == Somesh Bartakke <[EMAIL PROTECTED]> writes:
Somesh> when am usinf pyGTK i have to write functions for each and
Somesh> evry signal, no default available for Fileselections box'x
Somesh> cancel and Ok buttons,
Not necessarily, you can do something like
dlg = gtk.Dialog(title)
entry = gtk.Entry()
entry.show()
entry.set_width_chars(10)
entry.set_activates_default(gtk.TRUE)
dlg.vbox.pack_start(entry, gtk.TRUE, gtk.TRUE)
dlg.add_button(gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL)
dlg.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK)
dlg.set_default_response(gtk.RESPONSE_OK)
dlg.show()
response = dlg.run()
if response==gtk.RESPONSE_OK:
# do something
else:
# do something else
As for file selection, I use a class that wraps the file selection
dialog, remembers the last dir, etc,
class FileManager:
if sys.platform=='win32':
last = 'C:\\'
else:
last = os.getcwd()
def __init__(self, parent=None):
self.parent = parent
def get_lastdir(self):
return self.last
def set_lastdir(self, s):
if os.path.isdir(s):
self.last = s
elif os.path.isfile(s):
basedir, fname = os.path.split(s)
self.last = basedir
else: pass
def get_filename(self, fname=None, title='Select file name', parent=None):
dlg = gtk.FileSelection(title)
if parent is not None:
dlg.set_transient_for(parent)
elif self.parent is not None:
dlg.set_transient_for(self.parent)
if fname is None:
dlg.set_filename(self.get_lastdir() + os.sep)
else:
dlg.set_filename(fname)
dlg.cancel_button.connect("clicked", lambda w: dlg.destroy())
dlg.show()
response = dlg.run()
if response == gtk.RESPONSE_OK:
fullpath = dlg.get_filename()
self.set_lastdir(fullpath)
dlg.destroy()
return fullpath
return None
Your code can then instantiate a FileManager and use it like this
filename = fmanager.get_filename()
if filename is None:
#ignore, user hit cancel
else:
#process filename
The next time you call get_filename, the current dir will be the last
one used. I tend to create one fmanager instance in a shared module
and share it across the application.
JDH
_______________________________________________
pygtk mailing list [EMAIL PROTECTED]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/