>>>>> "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/

Reply via email to