Package toon :: Module dialogs
[hide private]
[frames] | no frames]

Source Code for Module toon.dialogs

 1  #!/usr/bin/env python 
 2  import pprint 
 3  from twisted.internet import gtk2reactor 
 4  gtk2reactor.install() 
 5  import gtk 
 6  from twisted.internet import reactor 
 7  from twisted.internet import defer 
 8   
 9  #from kiwi.ui import dialogs 
10  #def blocking(): 
11  #    dialogs.error("Error 404", "Not found.") 
12  #    print("error") 
13  #    dialogs.info("Some info") 
14  #    print("info") 
15  #    f = dialogs.save("Save to movie file...") 
16  #    print("Saving to %s" % (f)) 
17  #    f = dialogs.open("Open a movie file...") 
18  #    print("Opening %s" % (f)) 
19  #    answer = dialogs.yesno("You sure?") 
20  #    print("Yes/no: %s" % (answer == gtk.RESPONSE_YES)) 
21  #    while gtk.events_pending(): 
22  #        gtk.main_iteration() 
23       
24 -class Save(object):
25 - def __init__(self, deferred, title="Save...", folder=None, default_file_name=None):
26 self.deferredResult = deferred 27 parent = None 28 filechooser = gtk.FileChooserDialog( 29 title, 30 parent, 31 gtk.FILE_CHOOSER_ACTION_SAVE, 32 (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL, 33 gtk.STOCK_SAVE, gtk.RESPONSE_OK)) 34 if default_file_name is not None: 35 filechooser.set_current_name(default_file_name) 36 filechooser.set_default_response(gtk.RESPONSE_OK) 37 if folder is not None: 38 filechooser.set_current_folder(folder) 39 # connecting signals 40 filechooser.connect("close", self.on_close) 41 filechooser.connect("response", self.on_response) 42 filechooser.show()
43
44 - def on_close(self, dialog, *params):
45 print("on_close %s %s" % (dialog, params))
46
47 - def on_response(self, dialog, response_id, *params):
48 #print("on_response %s %s %s" % (dialog, response_id, params)) 49 if response_id == gtk.RESPONSE_DELETE_EVENT: 50 print("Deleted") 51 elif response_id == gtk.RESPONSE_CANCEL: 52 print("Cancelled") 53 self.terminate(dialog, None) 54 elif response_id == gtk.RESPONSE_OK: 55 print("Accepted") 56 file_name = dialog.get_filename() 57 self.terminate(dialog, file_name)
58
59 - def terminate(self, dialog, file_name):
60 dialog.destroy() 61 self.deferredResult.callback(file_name)
62
63 -def non_blocking_save_dialog():
64 def _on_result(result): 65 print(result)
66 deferred = defer.Deferred() 67 deferred.addCallback(_on_result) 68 Save(deferred) 69 return deferred 70
71 -def non_blocking():
72 def _later(): 73 def _cb(result): 74 reactor.stop()
75 deferred = non_blocking_save_dialog() 76 deferred.addCallback(_cb) 77 reactor.callLater(0.1, _later) 78 reactor.run() 79 80 if __name__ == "__main__": 81 non_blocking() 82