[Sugar-devel] Bug No. #398

Tomeu Vizoso tomeu at sugarlabs.org
Thu Sep 30 05:38:03 EDT 2010


On Wed, Sep 29, 2010 at 17:49, Shanjit Singh Jajmann
<shanjit at dev.seeta.in> wrote:
> Hi,
>
> I have changed a few things in viewsource.py, and i am posting the diff
> file,

You should be making changes in sugar-jhbuild/source/sugar and use
"git diff" to generate the diff. Ask your colleagues in Seeta if you
have doubts.

> the issue still remains the same although i have changed view type from
> gtksourceview2 to gtk.textview.

I have no idea why you think changing that may have helped with
whatever problems you have found.

Regards,

Tomeu

> --------------------------- 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
>> >
>> >
>
>


More information about the Sugar-devel mailing list