diff options
author | Gonzalo Odiard <godiard@gmail.com> | 2014-02-12 20:32:56 (GMT) |
---|---|---|
committer | Gonzalo Odiard <godiard@gmail.com> | 2014-02-12 20:32:56 (GMT) |
commit | 9664d3cad1978cf68df864c03474af6d2e3ebe0b (patch) | |
tree | 14935d2d60de8ede8bf206cfe4c21bb34f76099f /develop-activity | |
parent | e42cda312998dfa908a6f97db0dfcf96f70fb36b (diff) |
Reorganize source_editor relation with rhe activity
Now emit events, and don't have references to the activityy.
This patch solves the issueof the symbols tree update when the
editor tab is changed.
Diffstat (limited to 'develop-activity')
-rw-r--r-- | develop-activity/develop_app.py | 29 | ||||
-rw-r--r-- | develop-activity/sourceview_editor.py | 20 | ||||
-rw-r--r-- | develop-activity/symbols_tree.py | 11 |
3 files changed, 35 insertions, 25 deletions
diff --git a/develop-activity/develop_app.py b/develop-activity/develop_app.py index c09e0e5..4e951b1 100644 --- a/develop-activity/develop_app.py +++ b/develop-activity/develop_app.py @@ -100,7 +100,9 @@ class DevelopActivity(activity.Activity): logging.info(repr(handle.get_dict())) # Source buffer - self.editor = sourceview_editor.GtkSourceview2Editor(self) + self.editor = sourceview_editor.GtkSourceview2Editor() + self.editor.connect('tab-changed', self.__editor_tab_changed_cb) + self.editor.connect('changed', self.__editor_changed_cb) toolbarbox = ToolbarBox() activity_button = ActivityToolbarButton(self) @@ -135,7 +137,7 @@ class DevelopActivity(activity.Activity): show_symbols_btn.set_active(False) show_symbols_btn.set_tooltip(_('Show file symbols')) toolbarbox.toolbar.insert(show_symbols_btn, -1) - show_symbols_btn.connect('clicked', self.explore_code) + show_symbols_btn.connect('clicked', self._explore_code) show_log_btn = RadioToolButton() show_log_btn.props.icon_name = 'logs' @@ -203,7 +205,7 @@ class DevelopActivity(activity.Activity): self.editor.symbol_selected_cb) scrolled = Gtk.ScrolledWindow() scrolled.add(self._symbolstree) - scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC) + scrolled.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC) self.treenotebook.add_page(_('Symbols Tree'), scrolled) hbox.pack1(sidebar, resize=True, shrink=False) @@ -226,10 +228,11 @@ class DevelopActivity(activity.Activity): def _change_treenotebook_page(self, button, page): self.treenotebook.set_current_page(page) - def explore_code(self, btn, switch_page=True): + def _explore_code(self, btn, switch_page=True): from ninja import introspection text = self.editor.get_text() path = self.editor.get_file_path() + logging.error('Analyzing %s', path) symbols = introspection.obtain_symbols(text, filename=path) self._symbolstree.load_symbols(symbols) if switch_page: @@ -599,14 +602,22 @@ class DevelopActivity(activity.Activity): self.save_unchanged = False self.dirty = dirty - def update_sidebar_to_page(self, page): + def __editor_tab_changed_cb(self, editor, new_full_path): if self.numb: #avoid infinite recursion return - if isinstance(page, sourceview_editor.GtkSourceview2Page): - self.numb = True - self.activity_tree_view.select_by_file_path(page.full_path) - self.numb = False + self.numb = True + self.activity_tree_view.select_by_file_path(new_full_path) + logging.error('new tab %s', new_full_path) + self.numb = False + + # TODO: change by a constant + if self.treenotebook.get_current_page() == 1: # symbols + GObject.idle_add(self._explore_code, None) + + def __editor_changed_cb(self, editor): + logging.error('Editor text changed') + self.set_dirty(True) def __create_empty_file_cb(self, button): alert = Alert() diff --git a/develop-activity/sourceview_editor.py b/develop-activity/sourceview_editor.py index dbb3dc6..c237c01 100644 --- a/develop-activity/sourceview_editor.py +++ b/develop-activity/sourceview_editor.py @@ -35,12 +35,12 @@ class S_WHERE: class GtkSourceview2Editor(Gtk.Notebook): __gsignals__ = { - 'changed': (GObject.SignalFlags.RUN_FIRST, None, []) + 'changed': (GObject.SignalFlags.RUN_FIRST, None, []), + 'tab-changed': (GObject.SignalFlags.RUN_FIRST, None, [str]) } - def __init__(self, activity): + def __init__(self): GObject.GObject.__init__(self) - self.activity = activity self.set_size_request(Gdk.Screen.width(), -1) self.connect('page-removed', self._page_removed_cb) self.connect('switch-page', self._switch_page_cb) @@ -53,8 +53,7 @@ class GtkSourceview2Editor(Gtk.Notebook): # the welcome page do not have a page property def _switch_page_cb(self, __notebook, page_gptr, page_num): - self.activity.update_sidebar_to_page(self._get_page(page_num)) - #self.activity.explore_code(None, switch_page=False) + self.emit('tab-changed', self._get_page(page_num).full_path) def set_to_page_like(self, full_path): for n in range(self.get_n_pages()): @@ -75,7 +74,7 @@ class GtkSourceview2Editor(Gtk.Notebook): scrollwnd.add(page) scrollwnd.page = page label = filename - page.text_buffer.connect('changed', self._changed_cb) + page.text_buffer.connect('changed', self.__text_changed_cb) tablabel = TabLabel(scrollwnd, label) tablabel.connect( @@ -85,7 +84,7 @@ class GtkSourceview2Editor(Gtk.Notebook): self.append_page(scrollwnd, tablabel) - self._changed_cb(page.text_buffer) + self.__text_changed_cb(page.text_buffer) self.show_all() self.set_current_page(-1) @@ -104,11 +103,9 @@ class GtkSourceview2Editor(Gtk.Notebook): self.show_all() self.set_current_page(-1) - def _changed_cb(self, buffer): + def __text_changed_cb(self, buffer): if not buffer.can_undo(): buffer.set_modified(False) - elif not self.activity.dirty: - self.activity.set_dirty(True) self.emit('changed') def _get_page(self, order=-1): @@ -307,7 +304,8 @@ class GtkSourceview2Page(GtkSource.View): def save(self): if self.text_buffer.can_undo(): # only save if there's something to buff = self.text_buffer - text = buff.get_text(buff.get_start_iter(), buff.get_end_iter()) + text = buff.get_text(buff.get_start_iter(), buff.get_end_iter(), + False) _file = file(self.full_path, 'w') try: _file.write(text) diff --git a/develop-activity/symbols_tree.py b/develop-activity/symbols_tree.py index db630e6..022f45a 100644 --- a/develop-activity/symbols_tree.py +++ b/develop-activity/symbols_tree.py @@ -64,11 +64,12 @@ class SymbolsTree(Gtk.TreeView): def _symbol_selected_cb(self, widget): selection = self.get_selection() - model, _iter = selection.get_selected() - line = model.get_value(_iter, 2) - if line is 0: - return - self.emit('symbol-selected', line) + model, iter = selection.get_selected() + if iter is not None: + line = model.get_value(iter, 2) + if line is 0: + return + self.emit('symbol-selected', line) def load_symbols(self, data): self._model.clear() |