Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 4th, 2012  |  syntax: None  |  size: 4.38 KB  |  hits: 13  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #!/usr/bin/python
  2.  
  3. import pygtk
  4. pygtk.require('2.0')
  5. import gtk
  6.  
  7. class golden_crop_gtk:
  8.     def delete_event(self, widget, event, data=None):
  9.         """ Before quitting, print a message."""
  10.         print "Goodbye!"
  11.         gtk.main_quit()
  12.    
  13.     def update_entry(self, box):
  14.         """ Update the text field with the selected file. """
  15.         box.set_text(self.selected_file)
  16.    
  17.     def select_file(self, widget, textbox):
  18.         """This launches the file selection dialog."""
  19.         dialog = gtk.FileChooserDialog("Open..",
  20.             None, gtk.FILE_CHOOSER_ACTION_OPEN,
  21.             (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
  22.             gtk.STOCK_OPEN, gtk.RESPONSE_OK))
  23.        
  24.         dialog.set_default_response(gtk.RESPONSE_OK)
  25.        
  26.         #filter = gtk.FileFilter()
  27.         #filter.set_name("All files")
  28.         #filter.add_pattern("*")
  29.         #dialog.add_filter(filter)
  30.        
  31.         # Set up the filter
  32.         filter = gtk.FileFilter()
  33.         filter.set_name("Images")
  34.         filter.add_mime_type("image/png")
  35.         filter.add_mime_type("image/jpeg")
  36.         filter.add_mime_type("image/gif")
  37.         filter.add_pattern("*.png")
  38.         filter.add_pattern("*.jpg")
  39.         filter.add_pattern("*.gif")
  40.         filter.add_pattern("*.tif")
  41.         filter.add_pattern("*.xpm")
  42.         dialog.add_filter(filter)
  43.        
  44.         response = dialog.run()
  45.        
  46.         # If a file was selected, update the text entry box, otherwise do
  47.         # nothing.
  48.         if response == gtk.RESPONSE_OK:
  49.             print dialog.get_filename(), 'selected'
  50.             self.selected_file = dialog.get_filename()
  51.             self.update_entry(textbox)
  52.        
  53.         elif response == gtk.RESPONSE_CANCEL:
  54.             print 'Closed, no files selected'
  55.             self.selected_file = ""
  56.            
  57.         dialog.destroy()
  58.    
  59.     def crop_file(self, widget, data=None):
  60.         pass
  61.    
  62.     def __init__(self):
  63.         """Constructor for the main class."""
  64.         self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
  65.        
  66.         # The container boxes.
  67.         mainbox = gtk.VBox(False, 10)
  68.         inputbox = gtk.HBox(False, 10)
  69.         outputbox = gtk.HBox(False, 10)
  70.         submitbox = gtk.HBox(False, 10)
  71.        
  72.         # When there is a "delete event" emitted, execute the delete_event
  73.         # function.
  74.         self.window.connect("delete_event", self.delete_event)
  75.    
  76.         # Border width (padding)
  77.         self.window.set_border_width(10)
  78.        
  79.         # Add the text input box for infile
  80.         self.inentry = gtk.Entry()
  81.         inputbox.pack_start(gtk.Label("File to crop:"), False, 5, 5)
  82.         inputbox.pack_end(self.inentry)
  83.        
  84.         # Add the "open file" button
  85.         self.file_select_button = gtk.Button("Select file")
  86.         self.file_select_button.connect("clicked", self.select_file,
  87.             self.inentry)
  88.         inputbox.pack_start(gtk.Label(""), False, 5, 5)
  89.         inputbox.pack_end(self.file_select_button)
  90.        
  91.          #Add the text input box for outfile
  92.         self.outentry = gtk.Entry()
  93.         outputbox.pack_start(gtk.Label("File to save to:"), False, 5, 5)
  94.         outputbox.pack_end(self.outentry)
  95.        
  96.         # Add another "open file" button
  97.         self.execute_button = gtk.Button("Select file")
  98.         self.execute_button.connect("clicked", self.select_file, self.outentry)
  99.         outputbox.pack_start(gtk.Label(""), False, 5, 5)
  100.         outputbox.pack_end(self.execute_button)
  101.        
  102.         # Add an "execute" button
  103.         self.execute_button = gtk.Button("Crop")
  104.         self.execute_button.connect("clicked", self.crop_file)
  105.         submitbox.pack_start(gtk.Label(""), False, 5, 5)
  106.         submitbox.pack_end(self.execute_button)
  107.        
  108.         # Add all hboxes to the vbox
  109.         mainbox.pack_start(gtk.Label(""), False, 5, 5)
  110.         mainbox.pack_end(submitbox)
  111.        
  112.         mainbox.pack_start(gtk.Label(""), False, 5, 5)
  113.         mainbox.pack_end(outputbox)
  114.        
  115.         mainbox.pack_start(gtk.Label(""), False, 5, 5)
  116.         mainbox.pack_end(inputbox)
  117.        
  118.         # Add everything to the window and show
  119.         self.window.add(mainbox)
  120.         inputbox.show()
  121.         self.window.show_all()
  122.        
  123.     def main(self):
  124.         """ Sends GTK into the main loop."""
  125.         gtk.main()
  126.    
  127. crop = golden_crop_gtk()
  128. crop.main()