ocarina/ocarina/fsselect.py

87 lines
2.4 KiB
Python

# Bryan Schumaker (June 2010)
import ocarina
import gobject
import os
gtk = ocarina.gtk
libsaria = ocarina.libsaria
#FS_OK = gobject.signal_new("filesystem_ok", gtk.FileChooserDialog,
# gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
# (gtk.Dialog, int))
#print FS_OK
#print gobject.signal_query(FS_OK)
#print gobject.signal_query(gtk.RESPONSE_OK)
chooser_window = None
chooser_widget = None
def make_chooser(title, action):
buttons = (gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OK, gtk.RESPONSE_OK)
chooser = gtk.FileChooserDialog(title, action=action, buttons=buttons)
return chooser
def make_chooser2(title, callback):
global chooser_window
global chooser_widget
chooser_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
chooser_box = gtk.VBox(spacing = 0)
button_box = gtk.HBox()
chooser_widget = gtk.FileChooserWidget()
open_button = gtk.Button(stock=gtk.STOCK_OK)
close_button = gtk.Button(stock=gtk.STOCK_CANCEL)
button_box.pack_end(open_button, False, False, 10)
button_box.pack_end(close_button, False, False)
chooser_box.pack_start(chooser_widget, True, True, 10)
chooser_box.pack_start(button_box, False, False, 10)
size = close_button.size_request()
open_button.set_size_request(size[0], size[1])
chooser_widget.connect("file-activated", select_path, callback)
open_button.connect("clicked", select_path, callback)
close_button.connect("clicked", hide_chooser)
chooser_window.add(chooser_box)
chooser_window.resize(800, 600)
chooser_window.show_all()
def hide_chooser(button):
global chooser_window
chooser_window.hide()
def select_path(widget, callback):
global chooser_widget
global chooser_window
chooser_window.hide()
uri = chooser_widget.get_uri()
if uri[:7] == "file://":
uri = uri[7:]
uri = uri.replace("%20", " ")
callback(uri)
def run_chooser2(callback):
make_chooser2("title", callback)
def run_chooser(chooser):
file = None
if chooser.run() == gtk.RESPONSE_OK:
file = chooser.get_filename()
chooser.hide()
return file
# Use for selecting a file through the GUI
def select_file(title = "Select a song"):
chooser = make_chooser(title, gtk.FILE_CHOOSER_ACTION_OPEN)
return run_chooser(chooser)
# Use for selecting a directory through the GUI
def select_dir(title = "Select a directory"):
chooser = make_chooser(title, gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER)
return run_chooser(chooser)
def select_save(title = "Select a location"):
chooser = make_chooser(title, gtk.FILE_CHOOSER_ACTION_SAVE)
return run_chooser(chooser)