diff --git a/src/nailab/ui/applicationwindow.py b/src/nailab/ui/applicationwindow.py
index 274b64d..4bf42ee 100644
--- a/src/nailab/ui/applicationwindow.py
+++ b/src/nailab/ui/applicationwindow.py
@@ -20,6 +20,7 @@ class ApplicationWindow:
'on_ApplicationWindow_delete_event' : Gtk.main_quit,
'on_OpenFile' : self.open_file,
'on_menuSave' : self.save_file,
+ 'on_menuSaveAs' : self.save_file_as,
'on_StrategyExecute' : self.strategy_execute
}
@@ -40,6 +41,17 @@ class ApplicationWindow:
def save_file(self, arg):
self.tab_manager.save_current()
+ def save_file_as(self, arg):
+ dlg = Gtk.FileChooserDialog('Save file', self.window, Gtk.FileChooserAction.SAVE,
+ (Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_SAVE, Gtk.ResponseType.OK))
+ result = dlg.run()
+
+ if result == Gtk.ResponseType.OK:
+ self.tab_manager.save_current_as(dlg.get_filename())
+
+ dlg.destroy()
+
def strategy_execute(self, arg):
sel = self.tv_datasources.get_selection()
model, rows = sel.get_selected_rows()
diff --git a/src/nailab/ui/tabmanager.py b/src/nailab/ui/tabmanager.py
index 8f9fec7..f22f669 100644
--- a/src/nailab/ui/tabmanager.py
+++ b/src/nailab/ui/tabmanager.py
@@ -87,7 +87,14 @@ class TabManager(GObject.Object):
with open(self.source_paths[k], 'w') as f:
f.write(text)
-
+ def save_current_as(self, path):
+ index = self.notebook.get_current_page()
+ w = self.notebook.get_nth_page(index)
+ for k, v in self.widgets.items():
+ if v == w:
+ text = self.source_controllers[k].get_source_text()
+ with open(path, 'w') as f:
+ f.write(text)
def _init_sourceeditor(self):
scroll = Gtk.ScrolledWindow()
diff --git a/ui/nailab.glade b/ui/nailab.glade
index c83d92e..ee02885 100644
--- a/ui/nailab.glade
+++ b/ui/nailab.glade
@@ -125,12 +125,13 @@
-