Features/GTK3/Porting/Log: Difference between revisions

Humitos (talk | contribs)
Created page with "This page is being performed while I'm porting Log Activity to Gtk3. There is a [http://bugs.sugarlabs.org/ticket/3761 ticket] with some useful information that I'm using on ..."
 
Humitos (talk | contribs)
 
(9 intermediate revisions by the same user not shown)
Line 4: Line 4:


I will take [[User:Humitos/PortingGetBooks|this guide]] as reference on the Gtk3 porting.
I will take [[User:Humitos/PortingGetBooks|this guide]] as reference on the Gtk3 porting.
= Code Snippets =
== Gtk.TextView ==
* gtk2: http://www.pygtk.org/docs/pygtk/class-gtktextview.html#method-gtktextview--scroll-to-mark
* Gtk3: http://developer.gnome.org/gtk3/3.5/GtkTextView.html#gtk-text-view-scroll-to-mark
Gtk.TextView.scroll_to_mark needs all the arguments. In gtk2 version three of them were optional (use_align, xalign, yalign)
self._textview.scroll_to_mark(log.get_insert(), 0)
replaced with:
self._textview.scroll_to_mark(log.get_insert(), 0, use_align=False, xalign=0.5, yalign=0.5)
== Gtk.TreeSortable.set_sort_func ==
* http://python-gtk-3-tutorial.readthedocs.org/en/latest/treeview.html#Gtk.TreeSortable.set_sort_func
This function sometimes receives ''user_data'' so we need to add an optional argument to the definition.
def _sort_logfile(self, treemodel, itera, iterb):
replaced by:
def _sort_logfile(self, treemodel, itera, iterb, user_data=None):
== Gtk.TreeModelSort.convert_child_iter_to_iter ==
* http://developer.gnome.org/gtk3/3.5/GtkTreeModelSort.html#gtk-tree-model-sort-convert-child-iter-to-iter
The old way to do this:
log_iter = \
    self._treeview.get_model().convert_child_iter_to_iter(None,
            log.iter)
replaced by:
success, log_iter = \
    self._treeview.get_model().convert_child_iter_to_iter(log.iter)
= Clipboard =
* Gtk3: http://python-gtk-3-tutorial.readthedocs.org/en/latest/clipboard.html
** http://developer.gnome.org/gtk3/3.5/GtkTextBuffer.html#gtk-text-buffer-copy-clipboard
To integrate the clipboard of the activity with the ''MAIN'' clipboard (the Sugar one) we should obtain that clipboard:
# Clipboard of the activity
self.clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
And then, when the ''Copy'' button is pressed we should call this function (in the callback). The ''self.viewer.'''''active_log'''  is a Gtk.TextBuffer
self.viewer.active_log.copy_clipboard(self.clipboard)
= Missing things =
* Look for '''FIXME'''s and '''README'''s in the code (logviewer.py)
* Searching in the log is not working due to this bug: https://bugzilla.gnome.org/show_bug.cgi?id=680597
= Useful Links =
* http://developer.gnome.org/gtk3/3.5/GtkTextIter.html#gtk-text-iter-forward-search
* http://developer.gnome.org/gtk3/3.5/GtkTreeModelSort.html#gtk-tree-model-filter-convert-child-iter-to-iter