@@ -274,6 +274,32 @@ def confirm(self, q):
274
274
dialog .destroy ()
275
275
return response
276
276
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
+
277
303
def notify (self , s , n = 10 ):
278
304
self .statusbar .message (s )
279
305
@@ -588,6 +614,9 @@ def on_suggestion_selection_changed(self, selection, word):
588
614
def do_paste (self , widget ):
589
615
self .pastebin ()
590
616
617
+ def do_write2file (self , widget ):
618
+ self .write2file ()
619
+
591
620
def do_partial_paste (self , widget ):
592
621
bounds = self .text_buffer .get_selection_bounds ()
593
622
if bounds == ():
@@ -751,7 +780,12 @@ def main(args=None):
751
780
752
781
filem = gtk .MenuItem ("File" )
753
782
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
+
755
789
pastebin = gtk .MenuItem ("Pastebin" )
756
790
pastebin .connect ("activate" , repl_widget .do_paste )
757
791
filemenu .append (pastebin )
0 commit comments