Changes

728 bytes added ,  19:14, 30 December 2017
→‎Porting an existing activity to GTK3: Added more extra information
Line 6: Line 6:  
If you would like to reference other examples of GTK3 port:
 
If you would like to reference other examples of GTK3 port:
 
* [https://github.com/sugarlabs/biorhythm/commit/c16de3b70cce2cc6f8af933e2b062c844a47c144/ Biorhythm]
 
* [https://github.com/sugarlabs/biorhythm/commit/c16de3b70cce2cc6f8af933e2b062c844a47c144/ Biorhythm]
 +
* [https://github.com/sugarlabs/peru-learns-english-activity/commit/caa2cde526b3823a5a1f7d200a76ad5bc3502b0e Peru Learns English, includes GStreamer and GST update]
    
==Preparation==
 
==Preparation==
Line 72: Line 73:  
gi.require_version('Gtk', '3.0')
 
gi.require_version('Gtk', '3.0')
 
from gi.repository import Gtk
 
from gi.repository import Gtk
 +
</pre>
 +
 +
Here are some more examples of imports that may be used:
 +
<pre>
 +
from gi.repository import Gdk, Pango, Gobject
 
</pre>
 
</pre>
   Line 233: Line 239:     
Additionally, PyGTK accepted these construction parameters as positional arguments. As explained above, they must now be converted to keyword arguments.
 
Additionally, PyGTK accepted these construction parameters as positional arguments. As explained above, they must now be converted to keyword arguments.
 +
 +
=== Gtk Menu Popup ===
 +
The Gtk.Menu.popup function now works slightly differently.
 +
The user supplied positioning function now takes different parameters. These are menu, x, y, push_in and user_data.
 +
    
=== Gdk ===
 
=== Gdk ===
Line 266: Line 277:  
Most of the constants have slightly different formats, e.g.,
 
Most of the constants have slightly different formats, e.g.,
   −
Gtk.StateFlags.NORMAL
+
gtk.STATE_NORMAL became Gtk.StateFlags.NORMAL
Gtk.PolicyType.NEVER
+
gtk.RESPONSE_ACCEPT became Gtk.ResponseType.ACCEPT
Gtk.Justification.LEFT
+
gtk.JUSTIFY_CENTER became Gtk.Justification.CENTER
 +
gtk.RELIEF_NONE became Gtk.ReliefStyle.NONE
 +
 
    
=== Pixbufs ===
 
=== Pixbufs ===
Line 361: Line 374:     
# Handle the expose event
 
# Handle the expose event
 +
# "expose" became "draw" for the cairo signal
 
def do_expose_event(self, event):
 
def do_expose_event(self, event):
 
     # Create the cairo context
 
     # Create the cairo context
Line 457: Line 471:     
The get_extents() method if different in PangoCairo. It calculates an extent as a Rectangle, but doesn't return anything. There is a method, get_logical_extents() that returns a Rectangle. Alas, it is not necessarily available after v1.16. Note that Rectangle is not a list but a class with methods for get_x(), get_y(), get_width(), and get_height(), so you cannot iter over it.
 
The get_extents() method if different in PangoCairo. It calculates an extent as a Rectangle, but doesn't return anything. There is a method, get_logical_extents() that returns a Rectangle. Alas, it is not necessarily available after v1.16. Note that Rectangle is not a list but a class with methods for get_x(), get_y(), get_width(), and get_height(), so you cannot iter over it.
 +
 +
Note that the <samp>cairo.Region</samp> will no longer work in Gtk+3
    
==== Replacing pixmaps with Cairo ====
 
==== Replacing pixmaps with Cairo ====
1

edit