Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/develop-activity
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@gmail.com>2014-02-12 20:32:56 (GMT)
committer Gonzalo Odiard <godiard@gmail.com>2014-02-12 20:32:56 (GMT)
commit9664d3cad1978cf68df864c03474af6d2e3ebe0b (patch)
tree14935d2d60de8ede8bf206cfe4c21bb34f76099f /develop-activity
parente42cda312998dfa908a6f97db0dfcf96f70fb36b (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.py29
-rw-r--r--develop-activity/sourceview_editor.py20
-rw-r--r--develop-activity/symbols_tree.py11
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()