[Sugar-devel] Bug No. #398
Shanjit Singh Jajmann
shanjit at dev.seeta.in
Wed Sep 29 11:49:50 EDT 2010
Hi,
I have changed a few things in viewsource.py, and i am posting the diff
file,
the issue still remains the same although i have changed view type from
gtksourceview2 to gtk.textview.
--------------------------- git diff file.------------------------
diff --git a/install/lib/python2.6/site-packages/jarabe/view/viewsource.py
b/install/lib/python2.6/site-packages/jarabe/view/viewsource.py
index 524db9e..24e361c 100644
--- a/install/lib/python2.6/site-packages/jarabe/view/viewsource.py
+++ b/install/lib/python2.6/site-packages/jarabe/view/viewsource.py
@@ -321,18 +321,18 @@ class Toolbar(gtk.Toolbar):
search_item.show()
search_entry.show()
- _search_prev = ToolButton('go-previous-paired')
- _search_prev.set_tooltip(_('Previous'))
- # self._search_prev.connect('clicked', self._search_prev_cb)
- self.insert(_search_prev, -1)
- _search_prev.show()
+ self._search_prev = ToolButton('go-previous-paired')
+ self._search_prev.set_tooltip(_('Previous'))
+ self._search_prev.connect('clicked', self._search_prev_cb)
+ self.insert(self._search_prev, -1)
+ self._search_prev.show()
- _search_next = ToolButton('go-next-paired')
- _search_next.set_tooltip(_('Next'))
- #self._search_next.connect('clicked', self._search_next_cb)
- self.insert(_search_next, -1)
- _search_next.show()
- #self._update_search_buttons()
+ self._search_next = ToolButton('go-next-paired')
+ self._search_next.set_tooltip(_('Next'))
+ self._search_next.connect('clicked', self._search_next_cb)
+ self.insert(self._search_next, -1)
+ self._search_next.show()
+ self._update_search_buttons()
stop = ToolButton(icon_name='dialog-cancel')
@@ -343,10 +343,30 @@ class Toolbar(gtk.Toolbar):
def _search_entry_activate_cb(self, entry):
self.viewer.set_search_text(entry.props.text)
+ self._update_search_buttons()
def _search_entry_changed_cb(self, entry):
self.viewer.set_search_text(entry.props.text)
-
+ self._update_search_buttons()
+
+ def _search_prev_cb(self, button):
+ self.viewer.search_next('backward')
+ self._update_search_buttons()
+
+ def _search_next_cb(self, button):
+ self.viewer.search_next('forward')
+ self._update_search_buttons()
+
+ def _update_search_buttons(self,):
+ if len(self.viewer.search_text) == 0:
+ self._search_prev.props.sensitive = False
+ self._search_next.props.sensitive = False
+ else:
+ prev = self.viewer.get_next_result('backward')
+ next = self.viewer.get_next_result('forward')
+ self._search_prev.props.sensitive = prev != None
+ self._search_next.props.sensitive = next != None
+
def _add_separator(self, expand=False):
separator = gtk.SeparatorToolItem()
separator.props.draw = False
@@ -452,22 +472,88 @@ class SourceDisplay(gtk.ScrolledWindow):
self._buffer = gtksourceview2.Buffer()
self._buffer.set_highlight_syntax(True)
- self._source_view = gtksourceview2.View(self._buffer)
- self._source_view.set_editable(False)
- self._source_view.set_cursor_visible(True)
- self._source_view.set_show_line_numbers(True)
- self._source_view.set_show_right_margin(True)
- self._source_view.set_right_margin_position(80)
+ self.search_text = ' '
+
+ #self._source_view = gtksourceview2.View(self._buffer)
+ #self._source_view.set_editable(False)
+ #self._source_view.set_cursor_visible(True)
+ #self._source_view.set_show_line_numbers(True)
+ #self._source_view.set_show_right_margin(True)
+ #self._source_view.set_right_margin_position(80)
#self._source_view.set_highlight_current_line(True) #FIXME: Ugly
color
- self._source_view.modify_font(_SOURCE_FONT)
- self.add(self._source_view)
- self._source_view.show()
+ #self._source_view.modify_font(_SOURCE_FONT)
+ # self.add(self._source_view)
+ # self._source_view.show()
+
+ self._textview = gtk.TextView(self._buffer)
+ self.add(self._textview)
+ self._tagtable = gtk.TextTagTable()
+ hilite_tag = gtk.TextTag('search-hilite')
+ hilite_tag.props.background = '#FFFFB0'
+ self._tagtable.add(hilite_tag)
+ select_tag = gtk.TextTag('search-select')
+ select_tag.props.background = '#B0B0FF'
+ self._tagtable.add(select_tag)
+
+ scroll = gtk.ScrolledWindow()
+ scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ scroll.add(self._textview)
+ self._textview.show()
+
self._file_path = None
def set_search_text(self, text):
self.search_text = text
+ buffer = self._textview.get_buffer()
+ start, end = buffer.get_bounds()
+ # buffer.remove_tag_by_name('search-hilite', start, end)
+ # buffer.remove_tag_by_name('search-select', start, end)
+
+ iter = buffer.get_start_iter()
+ while True:
+ next = iter.forward_search(text, 0)
+ if next is None: break
+ start, end = next
+ buffer.apply_tag_by_name('search-hilite', start, end)
+ iter = end
+
+ if self.get_next_result('current'):
+ self.search_next('current')
+ elif self.get_next_result('backward'):
+ self.search_next('backward')
+
+ def get_next_result(self, dir):
+ buffer = self._textview.get_buffer()
+
+ if dir == 'forward':
+ iter = buffer.get_iter_at_mark(buffer.get_insert())
+ iter.forward_char()
+ else:
+ iter = buffer.get_iter_at_mark(buffer.get_insert())
+
+ if dir == 'backward':
+ return iter.backward_search(self.search_text, 0)
+ else:
+ return iter.forward_search(self.search_text, 0)
+
+ def search_next(self, dir):
+ next = self.get_next_result(dir)
+ if next:
+ buffer = self._textview.get_buffer()
+
+ start, end = buffer.get_bounds()
+ buffer.remove_tag_by_name('search-select', start, end)
+
+ start, end = next
+ buffer.apply_tag_by_name('search-select', start, end)
+
+ buffer.place_cursor(start)
+
+ self._textview.scroll_to_iter(start, 0.1)
+ self._textview.scroll_to_iter(end, 0.1)
+
----------------------------------
Regards
Shan
On Mon, Sep 27, 2010 at 8:25 PM, Tomeu Vizoso <tomeu at sugarlabs.org> wrote:
> On Mon, Sep 27, 2010 at 16:36, Shanjit Singh Jajmann
> <shanjit at dev.seeta.in> wrote:
> > Team,
> >
> > I am working on http://bugs.sugarlabs.org/ticket/398 : Regarding the
> search
> > box, i have tried to introduce the same functionality as in the 'Log'
> > activity, in the toolbar of viewsource (jarabe/view/viewscreen.py),
> however
> > i have run into some searching and highlighting issues regarding working
>
> Without knowing which are the issues is a bit hard to know how to
> help. Can you be more explicit and also post the patch?
>
> Regards,
>
> Tomeu
>
> > with gtksourceview used in the sourceview function of the same file.
> Could
> > you please provide some pointers on how to achieve the searching and
> > highlighting ? (i could not get the bounds of the buffer created,
> start,end
> > . The highlight function has me confused as it isn't working) or any
> other
> > approach if possible.
> >
> > Regards
> > Shan
> >
> > _______________________________________________
> > Sugar-devel mailing list
> > Sugar-devel at lists.sugarlabs.org
> > http://lists.sugarlabs.org/listinfo/sugar-devel
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.sugarlabs.org/archive/sugar-devel/attachments/20100929/42320afd/attachment.htm
More information about the Sugar-devel
mailing list