Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit fe84f78

Browse filesBrowse files
committed
Have a save to file option in gtk
1 parent 9aff5bc commit fe84f78
Copy full SHA for fe84f78

2 files changed

+38-1Lines changed: 38 additions & 1 deletion

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎bpython/gtk_.py‎

Copy file name to clipboardExpand all lines: bpython/gtk_.py
+35-1Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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)
Collapse file

‎bpython/repl.py‎

Copy file name to clipboardExpand all lines: bpython/repl.py
+3Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -634,6 +634,9 @@ def write2file(self):
634634

635635
try:
636636
fn = self.interact.file_prompt('Save to file (Esc to cancel): ')
637+
if not fn:
638+
self.interact.notify("Save cancelled.")
639+
return
637640
except ValueError:
638641
self.interact.notify("Save cancelled.")
639642
return

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.