Esempio n. 1
0
    def __init__(self, title, initial_dir, initial_filename, callback):
        self.callback = callback

        self.chooser = gtk.FileChooserDialog(title=title,
                                             action=gtk.FILE_CHOOSER_ACTION_SAVE,
                                             buttons=(gtk.STOCK_CANCEL,
                                                      gtk.RESPONSE_CANCEL,
                                                      gtk.STOCK_SAVE,
                                                      gtk.RESPONSE_OK))

        if initial_dir:
            self.chooser.set_current_folder(initial_dir)

        if initial_filename:
            self.chooser.set_filename(initial_filename)

        self.th_viewer = ThumbnailViewer(300)
        widget = self.th_viewer.get_widget()

        self.chooser.set_preview_widget(widget)
        self.chooser.set_preview_widget_active(True)
        self.chooser.connect("selection-changed", self.on_selection_changed)

        img_filter = gtk.FileFilter()
        img_filter.set_name("All supported files")
        img_filter.add_pixbuf_formats()
        for ext in (ArchiveFile.valid_extensions +
                    PDFFile.valid_extensions +
                    EPUBFile.valid_extensions +
                    VideoFile.valid_extensions):
            img_filter.add_pattern("*." + ext)
        self.chooser.add_filter(img_filter)

        img_filter = gtk.FileFilter()
        img_filter.set_name("Images")
        img_filter.add_pixbuf_formats()
        self.chooser.add_filter(img_filter)

        self.add_filter("Archive Files", ArchiveFile.valid_extensions)
        self.add_filter("PDF Files", PDFFile.valid_extensions)
        self.add_filter("EPub Files", EPUBFile.valid_extensions)
        self.add_filter("Video Files", VideoFile.valid_extensions)
Esempio n. 2
0
class FileSelectorDialogGTK:
    def __init__(self, title, initial_dir, initial_filename, callback):
        self.callback = callback

        self.chooser = gtk.FileChooserDialog(title=title,
                                             action=gtk.FILE_CHOOSER_ACTION_SAVE,
                                             buttons=(gtk.STOCK_CANCEL,
                                                      gtk.RESPONSE_CANCEL,
                                                      gtk.STOCK_SAVE,
                                                      gtk.RESPONSE_OK))

        if initial_dir:
            self.chooser.set_current_folder(initial_dir)

        if initial_filename:
            self.chooser.set_filename(initial_filename)

        self.th_viewer = ThumbnailViewer(300)
        widget = self.th_viewer.get_widget()

        self.chooser.set_preview_widget(widget)
        self.chooser.set_preview_widget_active(True)
        self.chooser.connect("selection-changed", self.on_selection_changed)

        img_filter = gtk.FileFilter()
        img_filter.set_name("All supported files")
        img_filter.add_pixbuf_formats()
        for ext in (ArchiveFile.valid_extensions +
                    PDFFile.valid_extensions +
                    EPUBFile.valid_extensions +
                    VideoFile.valid_extensions):
            img_filter.add_pattern("*." + ext)
        self.chooser.add_filter(img_filter)

        img_filter = gtk.FileFilter()
        img_filter.set_name("Images")
        img_filter.add_pixbuf_formats()
        self.chooser.add_filter(img_filter)

        self.add_filter("Archive Files", ArchiveFile.valid_extensions)
        self.add_filter("PDF Files", PDFFile.valid_extensions)
        self.add_filter("EPub Files", EPUBFile.valid_extensions)
        self.add_filter("Video Files", VideoFile.valid_extensions)

    def add_filter(self, name, extensions):
        filter_ = gtk.FileFilter()
        filter_.set_name(name)
        for ext in extensions:
            filter_.add_pattern("*." + ext)
        self.chooser.add_filter(filter_)

    def on_selection_changed(self, chooser):
        filename = chooser.get_preview_filename()
        if filename:
            if os.path.isfile(filename):
                self.th_viewer.load(FileFactory.create(filename))
                self.th_viewer.show()
            else:
                self.th_viewer.hide()
        else:
            self.th_viewer.hide()

    def run(self):
        response = self.chooser.run()
        selection = self.chooser.get_filename()
        self.chooser.destroy()

        if response == gtk.RESPONSE_OK:
            self.callback(selection)