1import pygtk
2pygtk.require('2.0')
3import gtk
4
5import os
6
7def InputBox(title, label, parent, text=''):
8    dlg = gtk.Dialog(title, parent, gtk.DIALOG_DESTROY_WITH_PARENT,
9                     (gtk.STOCK_OK, gtk.RESPONSE_OK,
10                      gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
11    lbl = gtk.Label(label)
12    lbl.show()
13    dlg.vbox.pack_start(lbl)
14    entry = gtk.Entry()
15    if text: entry.set_text(text)
16    entry.show()
17    dlg.vbox.pack_start(entry, False)
18    resp = dlg.run()
19    text = entry.get_text()
20    dlg.hide()
21    if resp == gtk.RESPONSE_CANCEL:
22        return None
23    return text
24
25def OpenFile(title, parent=None, dirname=None, fname=None):
26    dlg = gtk.FileChooserDialog(title, parent,
27                                buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
28                                         gtk.STOCK_CANCEL,
29                                         gtk.RESPONSE_CANCEL))
30    if fname:
31        dlg.set_current_folder(os.path.dirname(fname))
32    elif dirname:
33        dlg.set_current_folder(dirname)
34    dlg.set_local_only(True)
35    resp = dlg.run()
36    fname = dlg.get_filename()
37    dlg.hide()
38    if resp == gtk.RESPONSE_CANCEL:
39        return None
40    return fname
41
42def SaveFile(title, parent=None, dirname=None, fname=None):
43    dlg = gtk.FileChooserDialog(title, parent,
44                                gtk.FILE_CHOOSER_ACTION_SAVE,
45                                buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
46                                         gtk.STOCK_CANCEL,
47                                         gtk.RESPONSE_CANCEL))
48    if fname:
49        dlg.set_filename(fname)
50    elif dirname:
51        dlg.set_current_folder(dirname)
52    dlg.set_local_only(True)
53    resp = dlg.run()
54    fname = dlg.get_filename()
55    dlg.hide()
56    if resp == gtk.RESPONSE_CANCEL:
57        return None
58    return fname
59