Browse Source

Saving files

master
Denis Tereshkin 8 years ago
parent
commit
edfb112fa0
  1. 4
      src/nailab/ui/applicationwindow.py
  2. 5
      src/nailab/ui/sourceviewcontroller.py
  3. 15
      src/nailab/ui/tabmanager.py
  4. 5
      ui/nailab.glade

4
src/nailab/ui/applicationwindow.py

@ -19,6 +19,7 @@ class ApplicationWindow:
handlers = { handlers = {
'on_ApplicationWindow_delete_event' : Gtk.main_quit, 'on_ApplicationWindow_delete_event' : Gtk.main_quit,
'on_OpenFile' : self.open_file, 'on_OpenFile' : self.open_file,
'on_menuSave' : self.save_file,
'on_StrategyExecute' : self.strategy_execute 'on_StrategyExecute' : self.strategy_execute
} }
@ -36,6 +37,9 @@ class ApplicationWindow:
dlg.destroy() dlg.destroy()
def save_file(self, arg):
self.tab_manager.save_current()
def strategy_execute(self, arg): def strategy_execute(self, arg):
sel = self.tv_datasources.get_selection() sel = self.tv_datasources.get_selection()
model, rows = sel.get_selected_rows() model, rows = sel.get_selected_rows()

5
src/nailab/ui/sourceviewcontroller.py

@ -6,3 +6,8 @@ class SourceViewController:
def set_source_text(self, text): def set_source_text(self, text):
self.sourceview.get_buffer().set_text(text) self.sourceview.get_buffer().set_text(text)
def get_source_text(self):
buf = self.sourceview.get_buffer()
return buf.get_text(buf.get_start_iter(), buf.get_end_iter(), True)

15
src/nailab/ui/tabmanager.py

@ -9,6 +9,7 @@ class TabManager(GObject.Object):
super().__init__() super().__init__()
self.notebook = notebook self.notebook = notebook
self.widgets = {} self.widgets = {}
self.source_controllers = {}
self.id_counter = 1 self.id_counter = 1
self.source_paths = {} self.source_paths = {}
@ -39,6 +40,7 @@ class TabManager(GObject.Object):
self.source_paths[tab_id] = source_file self.source_paths[tab_id] = source_file
(sv, sv_controller) = self._init_sourceeditor() (sv, sv_controller) = self._init_sourceeditor()
sv_controller.set_source_text(f.read()) sv_controller.set_source_text(f.read())
self.source_controllers[tab_id] = sv_controller
self.widgets[tab_id] = sv self.widgets[tab_id] = sv
sv.show_all() sv.show_all()
header = Gtk.HBox() header = Gtk.HBox()
@ -64,6 +66,8 @@ class TabManager(GObject.Object):
del self.widgets[tab_id] del self.widgets[tab_id]
if tab_id in self.source_paths: if tab_id in self.source_paths:
del self.source_paths[tab_id] del self.source_paths[tab_id]
if tab_id in self.source_controllers:
del self.source_controllers[tab_id]
def get_current_source_path(self): def get_current_source_path(self):
index = self.notebook.get_current_page() index = self.notebook.get_current_page()
@ -74,6 +78,17 @@ class TabManager(GObject.Object):
return None return None
def save_current(self):
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(self.source_paths[k], 'w') as f:
f.write(text)
def _init_sourceeditor(self): def _init_sourceeditor(self):
scroll = Gtk.ScrolledWindow() scroll = Gtk.ScrolledWindow()
manager = GtkSource.LanguageManager() manager = GtkSource.LanguageManager()

5
ui/nailab.glade

@ -105,7 +105,7 @@
</object> </object>
</child> </child>
<child> <child>
<object class="GtkImageMenuItem" id="imagemenuitem22"> <object class="GtkImageMenuItem" id="menuOpen">
<property name="label">gtk-open</property> <property name="label">gtk-open</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
@ -115,12 +115,13 @@
</object> </object>
</child> </child>
<child> <child>
<object class="GtkImageMenuItem" id="imagemenuitem23"> <object class="GtkImageMenuItem" id="menuSave">
<property name="label">gtk-save</property> <property name="label">gtk-save</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">False</property> <property name="can_focus">False</property>
<property name="use_underline">True</property> <property name="use_underline">True</property>
<property name="use_stock">True</property> <property name="use_stock">True</property>
<signal name="activate" handler="on_menuSave" swapped="no"/>
</object> </object>
</child> </child>
<child> <child>

Loading…
Cancel
Save