#!/usr/bin/env python # $Id: gtkqdir4lve.py 605 2005-09-19 14:54:41Z too $ # # Author: Tomi Ollila # # Created: Sun Sep 18 16:03:31 EEST 2005 too # Last modified: Mon Sep 19 17:52:32 EEST 2005 too import sys, os import gtk#, gobject _buttuple = (gtk.STOCK_OK, gtk.RESPONSE_ACCEPT, gtk.STOCK_CANCEL, gtk.RESPONSE_REJECT) class Context: def __init__(self, title, existing, confirm, selection): self.confirm = confirm if existing: action = gtk.FILE_CHOOSER_ACTION_OPEN else: action = gtk.FILE_CHOOSER_ACTION_SAVE self.filechooser = gtk.FileChooserDialog(title, action=action, buttons=_buttuple) if selection: self.filechooser.set_filename(os.path.abspath(selection)) self.filechooser.connect('delete_event', gtk.main_quit) self.filechooser.connect('close', gtk.main_quit) self.filechooser.connect('response', self.response) self.filechooser.show_all() def response(self, dialog, response_id): if response_id == gtk.RESPONSE_ACCEPT: filename = self.filechooser.get_filename() if filename: if self.confirm and os.path.exists(filename): if not os.path.isfile(filename): return self.dialog = gtk.Dialog('Overwrite', self.filechooser, gtk.DIALOG_MODAL | gtk.DIALOG_DESTROY_WITH_PARENT, buttons=_buttuple) self.dialog.vbox.pack_start(gtk.Label('Overwrite ' \ + filename)); self.dialog.connect('response', self.confirm_response, filename) self.dialog.show_all() return print filename else: return gtk.main_quit() def confirm_response(self, dialog, response_id, filename): if response_id == gtk.RESPONSE_ACCEPT: print filename gtk.main_quit() dialog.destroy() if __name__ == '__main__': if len(sys.argv) < 2: sys.exit(1) if sys.argv[1] == 'new': what = 'new/open'; existing = False; confirm = False elif sys.argv[1] == 'open': what = 'open'; existing = True; confirm = False elif sys.argv[1] == 'save': what = 'save'; existing = False; confirm = True else: sys.exit(2) selection = None if len(sys.argv) > 2: if os.path.isfile(sys.argv[2]): selection = sys.argv[2] elif os.path.isdir(sys.argv[2]): os.chdir(sys.argv[2]) # filtering... make tuple, add filters on request #if len(sys.argv) > 3: # filterid = sys.argv[3] c = Context('LVE file selector - ' + what, existing, confirm, selection) gtk.main() sys.exit(0)