File chooser window

I have created my own file chooser window that can select both files and
directories.  Currently, the "OK" button must be clicked to select
anything.
This commit is contained in:
Bryan Schumaker 2010-09-12 19:11:37 -04:00
parent 2aded0e67f
commit 4a5085d973
4 changed files with 50 additions and 12 deletions

View File

@ -3,11 +3,11 @@
__all__ = ["collection"] __all__ = ["collection"]
import libsaria import libsaria
import tagpy #import tagpy
call = libsaria.event.call call = libsaria.event.call
exists = libsaria.path.exists exists = libsaria.path.exists
expand = libsaria.path.expand expand = libsaria.path.expand
FileRef = tagpy.FileRef #FileRef = tagpy.FileRef
LIBRARY = 0 LIBRARY = 0
PLAYLIST = 1 PLAYLIST = 1

View File

@ -4,6 +4,7 @@ import ocarina
LS = ocarina.libsaria LS = ocarina.libsaria
gtk = ocarina.gtk gtk = ocarina.gtk
class Button(gtk.Button): class Button(gtk.Button):
def __init__(self, stock, func=None, show=True): def __init__(self, stock, func=None, show=True):
gtk.Button.__init__(self) gtk.Button.__init__(self)
@ -50,4 +51,6 @@ class OpenButton(Button):
def __init__(self): def __init__(self):
Button.__init__(self, gtk.STOCK_OPEN) Button.__init__(self, gtk.STOCK_OPEN)
def clicked(self, button): def clicked(self, button):
from ocarina import fsselect
fsselect.run_chooser2(LS.data.universal_open)
print "OpenButton clicked" print "OpenButton clicked"

View File

@ -1,7 +1,9 @@
# Bryan Schumaker (June 2010) # Bryan Schumaker (June 2010)
import gtk import ocarina
import gobject import gobject
import os
gtk = ocarina.gtk
#FS_OK = gobject.signal_new("filesystem_ok", gtk.FileChooserDialog, #FS_OK = gobject.signal_new("filesystem_ok", gtk.FileChooserDialog,
# gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, # gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
@ -10,6 +12,8 @@ import gobject
#print gobject.signal_query(FS_OK) #print gobject.signal_query(FS_OK)
#print gobject.signal_query(gtk.RESPONSE_OK) #print gobject.signal_query(gtk.RESPONSE_OK)
chooser_window = None
chooser_widget = None
def make_chooser(title, action): def make_chooser(title, action):
@ -18,6 +22,42 @@ def make_chooser(title, action):
chooser.connect("response", response) chooser.connect("response", response)
return chooser 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])
close_button.connect("clicked", hide_chooser)
open_button.connect("clicked", select_path, callback)
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(button, callback):
global chooser_widget
global chooser_window
chooser_window.hide()
callback( chooser_widget.get_uri() )
def run_chooser2(callback):
make_chooser2("title", callback)
def response(*args): def response(*args):
print "here?" print "here?"

View File

@ -3,17 +3,12 @@
import ocarina import ocarina
from ocarina import fsselect from ocarina import fsselect
gtk = ocarina.gtk def callback(uri):
print uri
chooser = gtk.FileChooserWidget() fsselect.run_chooser2(callback)
chooser.show()
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.add(chooser)
win.show()
raw_input(">>>") raw_input(">>>")
print chooser #print chooser
#chooser = fsselect.make_chooser("Test Chooser", gtk.FILE_CHOOSER_ACTION_OPEN) #chooser = fsselect.make_chooser("Test Chooser", gtk.FILE_CHOOSER_ACTION_OPEN)
#fsselect.run_chooser(chooser) #fsselect.run_chooser(chooser)