diff options
Diffstat (limited to 'abacus_window.py')
-rw-r--r-- | abacus_window.py | 45 |
1 files changed, 15 insertions, 30 deletions
diff --git a/abacus_window.py b/abacus_window.py index b340a8f..b88a24e 100644 --- a/abacus_window.py +++ b/abacus_window.py @@ -33,9 +33,9 @@ COLORS = ('#FFFFFF', '#FF0000', '#88FF00', '#FF00FF', '#FFFF00', LABELS = ('#000000', '#FFFFFF', '#000000', '#FFFFFF', '#000000', '#000000', '#FFFFFF', '#FFFFFF', '#000000', '#000000') -import pygtk -pygtk.require('2.0') -import gtk +import gi +gi.require_version('Gtk', '3.0') +from gi.repository import Gtk, Gdk, GdkPixbuf from math import floor, ceil import locale @@ -97,7 +97,7 @@ readable-fractions/681534#681534 def _svg_str_to_pixbuf(svg_string): ''' Load pixbuf from SVG string ''' - pl = gtk.gdk.PixbufLoader('svg') + pl = GdkPixbuf.PixbufLoader.new_with_type('svg') pl.write(svg_string) pl.close() pixbuf = pl.get_pixbuf() @@ -645,19 +645,19 @@ class Abacus(): _logger.debug('bead colors %s %s', self.bead_colors[0], self.bead_colors[1]) - self.canvas.set_flags(gtk.CAN_FOCUS) - self.canvas.add_events(gtk.gdk.BUTTON_PRESS_MASK) - self.canvas.add_events(gtk.gdk.BUTTON_RELEASE_MASK) - self.canvas.add_events(gtk.gdk.POINTER_MOTION_MASK) - self.canvas.connect('expose-event', self._expose_cb) + self.canvas.set_can_focus(True) + self.canvas.add_events(Gdk.EventMask.BUTTON_PRESS_MASK) + self.canvas.add_events(Gdk.EventMask.BUTTON_RELEASE_MASK) + self.canvas.add_events(Gdk.EventMask.POINTER_MOTION_MASK) + self.canvas.connect('draw', self.__draw_cb) self.canvas.connect('button-press-event', self._button_press_cb) self.canvas.connect('button-release-event', self._button_release_cb) self.canvas.connect('motion-notify-event', self._mouse_move_cb) self.canvas.connect('key_press_event', self._keypress_cb) - self.width = gtk.gdk.screen_width() - self.height = gtk.gdk.screen_height() - GRID_CELL_SIZE + self.width = Gdk.Screen.width() + self.height = Gdk.Screen.height() - GRID_CELL_SIZE self.sprites = Sprites(self.canvas) - self.scale = 1.33 * gtk.gdk.screen_height() / 900.0 + self.scale = 1.33 * Gdk.Screen.height() / 900.0 self.dragpos = 0 self.press = None self.last = None @@ -800,7 +800,7 @@ class Abacus(): def _keypress_cb(self, area, event): ''' Keypress: moving the slides with the arrow keys ''' - k = gtk.gdk.keyval_name(event.keyval) + k = Gdk.keyval_name(event.keyval) if k in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'period', 'minus', 'Return', 'BackSpace', 'comma']: if self.last == self.mode.label_bar: @@ -855,28 +855,13 @@ class Abacus(): newnum = oldnum sprite.set_label(newnum + CURSOR) - def _expose_cb(self, win, event): - ''' Callback to handle window expose events ''' - self.do_expose_event(event) - return True - # Handle the expose-event by drawing - def do_expose_event(self, event): - - # Create the cairo context - cr = self.canvas.window.cairo_create() - - # Restrict Cairo to the exposed area; avoid extra work - cr.rectangle(event.area.x, event.area.y, - event.area.width, event.area.height) - cr.clip() - - # Refresh sprite list + def __draw_cb(self, canvas, cr): self.sprites.redraw_sprites(cr=cr) def _destroy_cb(self, win, event): ''' Callback to handle quit ''' - gtk.main_quit() + Gtk.main_quit() def generate_label(self, sum_only=False): ''' The complexity below is to make the label as simple as possible ''' |