@@ -274,6 +274,32 @@ def confirm(self, q):
274274 dialog .destroy ()
275275 return response
276276
277+ def file_prompt (self , s ):
278+ chooser = gtk .FileChooserDialog (action = gtk .FILE_CHOOSER_ACTION_SAVE ,
279+ buttons = (gtk .STOCK_CANCEL ,gtk .RESPONSE_CANCEL ,gtk .STOCK_OPEN ,gtk .RESPONSE_OK ))
280+ chooser .set_default_response (gtk .RESPONSE_OK )
281+ chooser .set_current_name ('test.py' )
282+
283+ pyfilter = gtk .FileFilter ()
284+ pyfilter .set_name ("Python files" )
285+ pyfilter .add_pattern ("*.py" )
286+ chooser .add_filter (pyfilter )
287+
288+ allfilter = gtk .FileFilter ()
289+ allfilter .set_name ("All files" )
290+ allfilter .add_pattern ("*" )
291+ chooser .add_filter (allfilter )
292+
293+ response = chooser .run ()
294+ if response == gtk .RESPONSE_OK :
295+ fn = chooser .get_filename ()
296+ else :
297+ fn = False
298+
299+ chooser .destroy ()
300+
301+ return fn
302+
277303 def notify (self , s , n = 10 ):
278304 self .statusbar .message (s )
279305
@@ -588,6 +614,9 @@ def on_suggestion_selection_changed(self, selection, word):
588614 def do_paste (self , widget ):
589615 self .pastebin ()
590616
617+ def do_write2file (self , widget ):
618+ self .write2file ()
619+
591620 def do_partial_paste (self , widget ):
592621 bounds = self .text_buffer .get_selection_bounds ()
593622 if bounds == ():
@@ -751,7 +780,12 @@ def main(args=None):
751780
752781 filem = gtk .MenuItem ("File" )
753782 filem .set_submenu (filemenu )
754-
783+
784+ save = gtk .MenuItem ("Save to file" )
785+ save .connect ("activate" , repl_widget .do_write2file )
786+ filemenu .append (save )
787+
788+
755789 pastebin = gtk .MenuItem ("Pastebin" )
756790 pastebin .connect ("activate" , repl_widget .do_paste )
757791 filemenu .append (pastebin )
0 commit comments