Difference between revisions of "Features/GTK3/Porting/Typing Turtle"

From Sugar Labs
< Features‎ | GTK3‎ | Porting
Jump to navigation Jump to search
Line 19: Line 19:
 
  self.area.window.draw_rectangle(gc, True, x, y, w, h)
 
  self.area.window.draw_rectangle(gc, True, x, y, w, h)
  
The arguments for ''alloc_color'' are between 1-
+
The arguments for ''alloc_color'' are between 0-65535 and the ''set_source_rgb'' method from cairo are between 0-1, so we have to convert these values as well:
 
 
now, with cairo we should do something like this
 
  
 
  cr.set_source_rgb(0.762, 0.762, 0.762)
 
  cr.set_source_rgb(0.762, 0.762, 0.762)
Line 27: Line 25:
 
  cr.fill()
 
  cr.fill()
  
 
+
Note that the second attributo of ''draw_rectangle'' tells us about if the rectangle is filled or not. In this case is True, so we use ''cr.fill()'' in the new way but if we want just the outside lines of the rectangle we should use ''cr.stroke()''
 
 
gc.foreground = self.area.get_colormap().alloc_color(0, 0, 0)
 
self.area.window.draw_rectangle(gc, False, x, y, w, h)
 
  
 
= Code Snippets =
 
= Code Snippets =

Revision as of 09:17, 25 July 2012

This page is being performed while I'm porting Typing Turtle Activity to Gtk3.

There is a ticket with some useful information that I'm using on the porting and to keep tracking this port. Besides, this wiki page will be useful to write some code snippets about what are the difficulties that I'm having on the port and maybe can be useful for someone else.

I will take this guide as reference on the Gtk3 porting.

Port to Cairo

README: before to port this activity to GTK3, we should port it to Cairo as the first step and then move to GTK3.

Code Snippets

Draw a rectangle

To draw a rectangle we used to do:

gc = self.window.new_gc()
gc.foreground = self.area.get_colormap().alloc_color(50000, 50000, 50000)
self.area.window.draw_rectangle(gc, True, x, y, w, h)

The arguments for alloc_color are between 0-65535 and the set_source_rgb method from cairo are between 0-1, so we have to convert these values as well:

cr.set_source_rgb(0.762, 0.762, 0.762)
cr.rectangle(x, y, w, h)
cr.fill()

Note that the second attributo of draw_rectangle tells us about if the rectangle is filled or not. In this case is True, so we use cr.fill() in the new way but if we want just the outside lines of the rectangle we should use cr.stroke()

Code Snippets

Gtk.Style.fg_gc

gc = self.get_style().fg_gc[Gtk.StateType.NORMAL]

replaced by:

gc = self.get_style().fg[Gtk.StateType.NORMAL]


Gtk.DrawingArea

self.layout = self.create_pango_layout()
self.layout.set_text(self.title_original)

replaced by:

self.layout = self.create_pango_layout()
self.layout.set_text(self.title_original, len(self.title_original)

self.lessonbuffer = Gtk.TextBuffer.new(self.tagtable)
self.lessontext = Gtk.TextView.new_with_buffer(self.lessonbuffer)

Gtk.TextTag

instructions_tag = Gtk.TextTag('instructions')

replaced by:

instructions_tag = Gtk.TextTag.new('instructions')

Gdk.Keymap

entries = self.keymap.get_entries_for_keyval(keyval)

replaced by:

valid, entries = self.keymap.get_entries_for_keyval(keyval)

Every entry was a tuple of (keycode, group, level). Now, this is an object with those attributes.

Useful links