- #!/usr/bin/python
- import pygtk
- pygtk.require('2.0')
- import gtk
- class golden_crop_gtk:
- def delete_event(self, widget, event, data=None):
- """ Before quitting, print a message."""
- print "Goodbye!"
- gtk.main_quit()
- def select_file(self, widget, data=None):
- """This launches the file selection dialog."""
- dialog = gtk.FileChooserDialog("Open..",
- None, gtk.FILE_CHOOSER_ACTION_OPEN,
- (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
- gtk.STOCK_OPEN, gtk.RESPONSE_OK))
- dialog.set_default_response(gtk.RESPONSE_OK)
- filter = gtk.FileFilter()
- filter.set_name("All files")
- filter.add_pattern("*")
- dialog.add_filter(filter)
- # We only want image files
- filter = gtk.FileFilter()
- filter.set_name("Images")
- filter.add_mime_type("image/png")
- filter.add_mime_type("image/jpeg")
- filter.add_mime_type("image/gif")
- filter.add_pattern("*.png")
- filter.add_pattern("*.jpg")
- filter.add_pattern("*.gif")
- filter.add_pattern("*.tif")
- filter.add_pattern("*.xpm")
- dialog.add_filter(filter)
- response = dialog.run()
- if response == gtk.RESPONSE_OK:
- print dialog.get_filename(), 'selected'
- self.selected_file = dialog.get_filename()
- elif response == gtk.RESPONSE_CANCEL:
- print 'Closed, no files selected'
- self.selected_file = ""
- dialog.destroy()
- def __init__(self):
- """Constructor for the main class."""
- self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
- # When there is a "delete event" emitted, execute the delete_event
- # function.
- self.window.connect("delete_event", self.delete_event)
- # Border width (padding)
- self.window.set_border_width(10)
- # Define the button and what happens when it gets clicked
- self.file_select_button = gtk.Button("Select file")
- self.file_select_button.connect("clicked", self.select_file, None)
- # Add the button to the window, show the button, and show the window
- self.window.add(self.file_select_button)
- self.file_select_button.show()
- self.window.show()
- def main(self):
- """ Sends GTK into the main loop."""
- gtk.main()
- crop = golden_crop_gtk()
- crop.main()