コード例 #1
0
ファイル: mainwindow.py プロジェクト: ceronman/pybotlearn
class MainWindow(GladeWindow):
    glade_file = os.path.join("gui", "pybotlearn.glade")

    def __init__(self):
        super(MainWindow, self).__init__()
        self.canvas = Canvas()
        self.canvas.connect("key-press-event", self.on_key)
        self.robot = self.canvas.robot
        execution.robot = self.robot
        self.canvas_sw.add(self.canvas)
        self.console = PythonConsole(execution.namespace)
        self.main_paned.pack2(self.console)
        self.show_all()

        self.canvas.get_hadjustment().connect("value-changed", self.on_scroll)
        self.canvas.get_vadjustment().connect("value-changed", self.on_scroll)

    def on_up(self, *args):
        self.console.eval("move_up()", True)

    def on_down(self, *args):
        self.console.eval("move_down()", True)

    def on_right(self, *args):
        self.console.eval("move_right()", True)

    def on_left(self, *args):
        self.console.eval("move_left()", True)

    def on_key(self, sender, event):
        if event.keyval == gtk.keysyms.Up:
            self.on_up()
            return True
        elif event.keyval == gtk.keysyms.Down:
            self.on_down()
            return True
        elif event.keyval == gtk.keysyms.Left:
            self.on_left()
            return True
        elif event.keyval == gtk.keysyms.Right:
            self.on_right()
            return True

    def on_say(self, button):
        text = self.say_textview.get_buffer()
        text = text.get_text(text.get_start_iter(), text.get_end_iter())
        self.console.eval("say(%s)" % repr(text), True)

    def on_scroll(self, *args):
        scroll_x = self.canvas.get_hadjustment()
        scroll_y = self.canvas.get_vadjustment()

        robot_x = self.robot.get_pixel_x()
        robot_y = self.robot.get_pixel_y()

        self.hruler.set_range(scroll_x.value, scroll_x.value + scroll_x.page_size, robot_x, self.canvas.width)
        self.vruler.set_range(scroll_y.value, scroll_y.value + scroll_y.page_size, robot_y, self.canvas.height)
コード例 #2
0
ファイル: recognizer.py プロジェクト: erikhazzard/hwr
    def _create_canvas(self, canvas_name):
        canvas = Canvas()
        canvas.set_size_request(self.DEFAULT_CANVAS_WIDTH, self.DEFAULT_CANVAS_WIDTH)

        canvas.connect("button-press-event", self._on_canvas_button_press, canvas_name)

        canvas.connect("drawing-stopped", self._on_canvas_drawing_stopped, canvas_name)

        canvas.connect("stroke-added", self._on_canvas_stroke_added, canvas_name)

        setattr(self, canvas_name, canvas)

        frame = gtk.Frame()
        frame.add(canvas)

        setattr(self, canvas_name + "_frame", frame)
コード例 #3
0
ファイル: recognizer.py プロジェクト: 2050utopia/hwr
    def _create_canvas(self, canvas_name):
        canvas = Canvas()
        canvas.set_size_request(self.DEFAULT_CANVAS_WIDTH,
                                self.DEFAULT_CANVAS_WIDTH)

        canvas.connect("button-press-event",
                       self._on_canvas_button_press,
                       canvas_name)

        canvas.connect("drawing-stopped",
                       self._on_canvas_drawing_stopped,
                       canvas_name)

        canvas.connect("stroke-added",
                       self._on_canvas_stroke_added,
                       canvas_name)

        setattr(self, canvas_name, canvas)

        frame = gtk.Frame()
        frame.add(canvas)

        setattr(self, canvas_name + "_frame", frame)
コード例 #4
0
class Mastermind(activity.Activity):

    def __init__(self, handle):
        activity.Activity.__init__(self, handle)

        self.canvas = Canvas()
        self.canvas.connect("data-changed", self._data_changed_cb)
        self.canvas.connect("win", self._win_cb)
        self.canvas.connect("lose", self._lose_cb)
        self.set_canvas(self.canvas)

        self.make_toolbar()
        self.read_file()

        self.show_all()

    def make_toolbar(self):
        def make_separator(expand=True):
            separator = Gtk.SeparatorToolItem()
            separator.props.draw = not expand
            separator.set_expand(expand)
            return separator

        toolbarbox = ToolbarBox()
        self.set_toolbar_box(toolbarbox)

        toolbar = toolbarbox.toolbar
        toolbar.insert(ActivityToolbarButton(self), -1)
        toolbar.insert(make_separator(False), -1)

        self.restart_button = ToolButton(icon_name="system-restart")
        self.restart_button.set_tooltip(_("Restart"))
        self.restart_button.props.accelerator = '<Ctrl>N'
        self.restart_button.connect("clicked", self._restart_cb)
        toolbar.insert(self.restart_button, -1)

        self.ok_button = ToolButton(icon_name="dialog-ok")
        self.ok_button.set_tooltip(_("Ok"))
        self.ok_button.set_sensitive(False)
        self.ok_button.props.accelerator = "Return"
        self.ok_button.connect("clicked", self._ok_cb)
        toolbar.insert(self.ok_button, -1)

        item = Gtk.ToolItem()
        toolbar.insert(item, -1)

        self.label = Gtk.Label()
        self.label.modify_font(Pango.FontDescription("Bold"))
        item.add(self.label)

        toolbar.insert(make_separator(True), -1)

        helpbutton = HelpButton()
        helpbutton.add_section(_("Instructions:"))
        helpbutton.add_paragraph(_("Place colors to the last played row."), image="instructions1.png")
        helpbutton.add_paragraph(_("When you complete a row, click on 'Ok button'."), image="instructions2.png")
        helpbutton.add_paragraph(_("Next to the row will appear black and white circles."), image="instructions3.png")
        helpbutton.add_paragraph(_("A black circle means you matched a peg and you placed it correctly."))
        helpbutton.add_paragraph(_("A white circle means you matched a peg and you wrong placed it."))
        helpbutton.add_paragraph(_("The goal is match all pegs in the correct place."))
        toolbar.insert(helpbutton, -1)

        stop_button = StopButton(self)
        toolbar.insert(stop_button, -1)

        toolbar.show_all()

    def read_file(self):
        if "level" in list(self.metadata.keys()):
            data = {
                "level": int(self.metadata["level"]),
                "correct": [int(x) for x in eval(self.metadata["correct"])],
                "balls": {}
            }

            balls = eval(self.metadata["balls"])
            for key in balls:
                x = int(key)
                data["balls"][x] = []

                for value in balls[key]:
                    y = int(value)
                    data["balls"][x].append(y)

            current = []
            for x in range(0, 4):
                current.append(data["balls"][x][data["level"]])

            self.ok_button.set_sensitive(not BallType.NULL in current)
            self.canvas.set_game_data(data)

    def write_file(self, path):
        data = self.canvas.get_game_data()
        self.metadata["level"] = str(data["level"]).encode('utf-8')
        self.metadata["correct"] = str(data["correct"]).encode('utf-8')
        self.metadata["balls"] = str(data["balls"]).encode('utf-8')

    def _ok_cb(self, button):
        self.canvas.end_turn()

    def _restart_cb(self, button):
        self.canvas.reset()
        self.label.set_text("")

    def _data_changed_cb(self, canvas, data):
        self.ok_button.set_sensitive(not BallType.NULL in data)

    def _win_cb(self, canvas):
        self.ok_button.set_sensitive(False)

        self.label.set_text("You win")

    def _lose_cb(self, canvas):
        self.ok_button.set_sensitive(False)

        self.label.set_text("You lost")
コード例 #5
0
class Mastermind(activity.Activity):
    def __init__(self, handle):
        activity.Activity.__init__(self, handle)

        self.canvas = Canvas(False)
        self.canvas.connect("data-changed", self._data_changed_cb)
        self.canvas.connect("win", self._win_cb)
        self.canvas.connect("lose", self._lose_cb)
        self.set_canvas(self.canvas)

        self.make_toolbar()
        self.read_file()

        self.easy_button.connect("toggled", self._difficulty_changed,
                                 Difficulty.EASY)
        self.medium_button.connect("toggled", self._difficulty_changed,
                                   Difficulty.MEDIUM)
        self.advanced_button.connect("toggled", self._difficulty_changed,
                                     Difficulty.ADVANCED)
        self.expert_button.connect("toggled", self._difficulty_changed,
                                   Difficulty.EXPERT)

        self.show_all()

    def make_toolbar(self):
        def make_separator(expand=True):
            separator = Gtk.SeparatorToolItem()
            separator.props.draw = not expand
            separator.set_expand(expand)
            return separator

        toolbarbox = ToolbarBox()
        self.set_toolbar_box(toolbarbox)

        toolbar = toolbarbox.toolbar
        toolbar.insert(ActivityToolbarButton(self), -1)
        toolbar.insert(make_separator(False), -1)

        self.restart_button = ToolButton(icon_name="system-restart")
        self.restart_button.set_tooltip(_("Restart"))
        self.restart_button.props.accelerator = '<Ctrl>N'
        self.restart_button.connect("clicked", self._restart_cb)
        toolbar.insert(self.restart_button, -1)

        self.ok_button = ToolButton(icon_name="dialog-ok")
        self.ok_button.set_tooltip(_("Ok"))
        self.ok_button.set_sensitive(False)
        self.ok_button.props.accelerator = "Return"
        self.ok_button.connect("clicked", self._ok_cb)
        toolbar.insert(self.ok_button, -1)

        toolbar.insert(make_separator(False), -1)

        button = ToolButton(icon_name="emblem-favorite")
        button.set_tooltip(_("Difficulty"))
        toolbar.insert(button, -1)

        palette = button.get_palette()
        palette_box = Gtk.VBox()
        palette.set_content(palette_box)

        self.easy_button = Gtk.RadioButton(_("Easy"))
        palette_box.pack_start(self.easy_button, False, False, 0)

        self.medium_button = Gtk.RadioButton(_("Medium"),
                                             group=self.easy_button)
        palette_box.pack_start(self.medium_button, False, False, 0)

        self.advanced_button = Gtk.RadioButton(_("Advanced"),
                                               group=self.easy_button)
        palette_box.pack_start(self.advanced_button, False, False, 0)

        self.expert_button = Gtk.RadioButton(_("Expert"),
                                             group=self.easy_button)
        palette_box.pack_start(self.expert_button, False, False, 0)

        palette_box.show_all()

        item = Gtk.ToolItem()
        toolbar.insert(item, -1)

        self.label = Gtk.Label()
        self.label.modify_font(Pango.FontDescription("Bold"))
        item.add(self.label)

        toolbar.insert(make_separator(True), -1)

        helpbutton = HelpButton()
        helpbutton.add_section(_("Instructions:"))
        helpbutton.add_paragraph(_("Place colors to the last played row."),
                                 image="instructions1.png")
        helpbutton.add_paragraph(
            _("When you complete a row, click on 'Ok button'."),
            image="instructions2.png")
        helpbutton.add_paragraph(
            _("Next to the row will appear black and white circles."),
            image="instructions3.png")
        helpbutton.add_paragraph(
            _("A black circle means you matched a peg and you placed it correctly."
              ))
        helpbutton.add_paragraph(
            _("A white circle means you matched a peg and you wrong placed it."
              ))
        helpbutton.add_paragraph(
            _("The goal is match all pegs in the correct place."))
        toolbar.insert(helpbutton, -1)

        stop_button = StopButton(self)
        toolbar.insert(stop_button, -1)

        toolbar.show_all()

    def read_file(self):
        if "level" in self.metadata.keys():
            data = {
                "level": int(self.metadata["level"]),
                "difficulty": int(self.metadata["difficulty"]),
                "correct": [int(x) for x in eval(self.metadata["correct"])],
                "balls": {}
            }

            balls = eval(self.metadata["balls"])
            for key in balls:
                x = int(key)
                data["balls"][x] = []

                for value in balls[key]:
                    y = int(value)
                    data["balls"][x].append(y)

            current = []
            for x in range(0, get_columns_for_difficulty(data["difficulty"])):
                current.append(data["balls"][x][data["level"]])

            self.ok_button.set_sensitive(not BallType.NULL in current)

        else:
            data = {
                "level": 0,
                "difficulty": Difficulty.MEDIUM,
                "correct": None,
                "balls": {}
            }

            columns = get_columns_for_difficulty(data["difficulty"])

            for x in range(0, columns):
                data["balls"][x] = [BallType.NULL] * 10

            self.ok_button.set_sensitive(False)

        if data["difficulty"] == Difficulty.EASY:
            self.easy_button.set_active(True)

        elif data["difficulty"] == Difficulty.MEDIUM:
            self.medium_button.set_active(True)

        elif data["difficulty"] == Difficulty.ADVANCED:
            self.advanced_button.set_active(True)

        elif data["difficulty"] == Difficulty.EXPERT:
            self.expert_button.set_active(True)

        self.canvas.set_game_data(data)

    def write_file(self, path):
        data = self.canvas.get_game_data()
        self.metadata["level"] = data["level"]
        self.metadata["difficulty"] = data["difficulty"]
        self.metadata["correct"] = data["correct"]
        self.metadata["balls"] = data["balls"]

    def _ok_cb(self, button):
        self.canvas.end_turn()

    def _restart_cb(self, button):
        self.canvas.reset()
        self.label.set_text("")

    def _data_changed_cb(self, canvas, data):
        self.ok_button.set_sensitive(not BallType.NULL in data)

    def _win_cb(self, canvas):
        self.ok_button.set_sensitive(False)
        self.label.set_text("You win")

    def _lose_cb(self, canvas):
        self.ok_button.set_sensitive(False)
        self.label.set_text("You lost")

    def _difficulty_changed(self, button, difficulty):
        if button.get_active():
            self.canvas.set_difficulty(difficulty)
コード例 #6
0
class Window:
    def __init__(self):
        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.connect("delete-event", self.delete_event_cb)
        self.window.connect("destroy", self.destroy_cb)
        self.window.set_border_width(0)
        self.window.set_size_request(800, 600)
        self.window.show()

        self.canvas = Canvas()
        self.canvas.set_background((0, 0, 0))
        self.canvas.set_foreground((0, 0, 0))
        self.canvas.set_flags(gtk.HAS_FOCUS | gtk.CAN_FOCUS)
        self.canvas.grab_focus()

        self.layer1 = CanvasLayer()
        self.layer2 = CanvasLayer()
        self.canvas.append(self.layer1)
        self.canvas.append(self.layer2)
        self.canvas.show()
        self.window.add(self.canvas)

        for n in xrange(100):
            o = CanvasRect(self.layer1, 100, 100, 200, 200, filled=True)
            o.scale(random(), random(), random(), random())
            o.move(randrange(1000), randrange(1000))
            o.connect('button-press-event', self.button_press_event_cb)
            o.connect('motion-notify-event', self.motion_notify_event_cb)
            o.connect('button-release-event', self.button_release_event_cb)

        for n in xrange(100):
            g = CanvasGroup(self.layer2, fg=(0, 0, 1))
            o = CanvasLine(g, 0, 0, 100, 100)
            print(dir(o))
            o = CanvasRect(g,
                           0,
                           100,
                           100,
                           200,
                           filled=True,
                           fg=(0.5, 0.3, 0.4),
                           bg=(1, 0.3, 0.4))
            o = CanvasOval(g, 0, 200, 100, 300, fg=(0.5, 1, 0.3))
            o = CanvasArc(g, 0, 300, 100, 400, start=0, extent=180)
            o = CanvasText(g, 0, 400, text='Hello')
            o = CanvasLine(g, 100, 0, 200, 100)
            o = CanvasRect(g, 100, 100, 200, 200, filled=True, outline=True)
            o = CanvasOval(g, 100, 200, 200, 300, filled=True)
            o = CanvasArc(g,
                          100,
                          300,
                          200,
                          400,
                          start=90,
                          extent=270,
                          filled=True)
            o = CanvasText(g, 100, 400, text='World')
            g.scale(random(), random(), random(), random())
            g.move(randrange(1000), randrange(1000))
            g.connect('button-press-event', self.button_press_event_cb)
            g.connect('motion-notify-event', self.motion_notify_event_cb)
            g.connect('button-release-event', self.button_release_event_cb)


#        o = CanvasImage(self.layer1, 0, 0, filename='image2.jpeg')
#        o.connect('button-press-event', self.button_press_event_cb)
#        o.connect('motion-notify-event', self.motion_notify_event_cb)
#        o.connect('button-release-event', self.button_release_event_cb)

#        o = CanvasImage(self.layer1, 100, 100, filename='image1.png')
#        o.connect('button-press-event', self.button_press_event_cb)
#        o.connect('motion-notify-event', self.motion_notify_event_cb)
#        o.connect('button-release-event', self.button_release_event_cb)

#        o = CanvasFunc(self.layer1, target=self.canvas_func1, args=(), kw={})

        self.canvas_button = None
        self.item = None
        self.item_prev_x = None
        self.item_prev_y = None
        self.item_button = None

        self.window.connect('key-press-event', self.window_key_press_event_cb)
        self.window.connect('key-release-event',
                            self.window_key_release_event_cb)
        self.canvas.connect('button-press-event',
                            self.canvas_button_press_event_cb)
        self.canvas.connect('motion-notify-event',
                            self.canvas_motion_notify_event_cb)
        self.canvas.connect('button-release-event',
                            self.canvas_button_release_event_cb)
        self.canvas.connect('scroll-event', self.canvas_scroll_event_cb)

    def delete_event_cb(self, widget, event, data=None):
        return False

    def destroy_cb(self, widget, data=None):
        gtk.main_quit()

    def main(self):
        gtk.main()

    def button_press_event_cb(self, widget, item, event):
        self.item = item
        self.item_prev_x = event.x
        self.item_prev_y = event.y
        self.item_button = event.button

    def motion_notify_event_cb(self, widget, item, event):
        if self.item_button == 1:
            dx = event.x - self.item_prev_x
            dy = event.y - self.item_prev_y
            self.item.move(dx, dy)
            self.item_prev_x = event.x
            self.item_prev_y = event.y

    def button_release_event_cb(self, widget, item, signal_id):
        self.item_button = None

    def canvas_button_press_event_cb(self, widget, event):
        self.canvas_button = event.button
        if self.canvas_button == 2:
            self.canvas_prev_x = event.x
            self.canvas_prev_y = event.y

    def canvas_motion_notify_event_cb(self, widget, event):
        if self.canvas_button == 2:
            dx = event.x - self.canvas_prev_x
            dy = event.y - self.canvas_prev_y
            self.canvas.move_all(dx, dy)
            self.canvas_prev_x = event.x
            self.canvas_prev_y = event.y

    def canvas_button_release_event_cb(self, widget, signal_id):
        self.canvas_button = None

    def canvas_scroll_event_cb(self, widget, event):
        if event.direction == gtk.gdk.SCROLL_UP:
            self.canvas.scale_all(event.x, event.y, 1.2, 1.2)
        elif event.direction == gtk.gdk.SCROLL_DOWN:
            self.canvas.scale_all(event.x, event.y, 1 / 1.2, 1 / 1.2)

    def window_key_press_event_cb(self, widget, event):
        print widget, event

    def window_key_release_event_cb(self, widget, event):
        print widget, event

    def canvas_func1(self, *args, **kw):
        self.canvas.draw_image(0, 0, xs=1.0, ys=1.0, filename='image2.jpeg')
        self.canvas.draw_line(0, 0, 100, 100)
        self.canvas.draw_rect(0, 100, 100, 200)
        self.canvas.draw_oval(0, 200, 100, 300)
        self.canvas.draw_arc(0, 300, 100, 400)
        self.canvas.draw_text(0, 400, "Hello World")
コード例 #7
0
ファイル: example.py プロジェクト: arnew/dxf2gcode
class Window:
	def __init__(self):
		self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
		self.window.connect("delete-event", self.delete_event_cb)
		self.window.connect("destroy", self.destroy_cb)
		self.window.set_border_width(0)
		self.window.set_size_request(800, 600)
		self.window.show()
		
		self.canvas = Canvas()
		self.canvas.set_background((0,0,0))
		self.canvas.set_foreground((0,0,0))
		self.canvas.set_flags(gtk.HAS_FOCUS|gtk.CAN_FOCUS)
		self.canvas.grab_focus()
		
		self.layer1 = CanvasLayer()
		self.layer2 = CanvasLayer()
		self.canvas.append(self.layer1)
		self.canvas.append(self.layer2)
		self.canvas.show()
		self.window.add(self.canvas)
		
		for n in xrange(100):
			o = CanvasRect(self.layer1, 100, 100, 200, 200, filled=True)
			o.scale(random(), random(), random(), random())
			o.move(randrange(1000), randrange(1000))
			o.connect('button-press-event', self.button_press_event_cb)
			o.connect('motion-notify-event', self.motion_notify_event_cb)
			o.connect('button-release-event', self.button_release_event_cb)
		
		for n in xrange(100):
			g = CanvasGroup(self.layer2, fg=(0,0,1))
			o = CanvasLine(g, 0, 0, 100, 100)
			print(dir(o))
			o = CanvasRect(g, 0, 100, 100, 200, filled=True, fg=(0.5, 0.3,0.4),bg=(1, 0.3,0.4))
			o = CanvasOval(g, 0, 200, 100, 300, fg=(0.5, 1,0.3))
			o = CanvasArc(g, 0, 300, 100, 400, start=0, extent=180)
			o = CanvasText(g, 0, 400, text='Hello')
			o = CanvasLine(g, 100, 0, 200, 100)
			o = CanvasRect(g, 100, 100, 200, 200, filled=True, outline=True)
			o = CanvasOval(g, 100, 200, 200, 300, filled=True)
			o = CanvasArc(g, 100, 300, 200, 400, start=90, extent=270, filled=True)
			o = CanvasText(g, 100, 400, text='World')
			g.scale(random(), random(), random(), random())
			g.move(randrange(1000), randrange(1000))
			g.connect('button-press-event', self.button_press_event_cb)
			g.connect('motion-notify-event', self.motion_notify_event_cb)
			g.connect('button-release-event', self.button_release_event_cb)
		
#		o = CanvasImage(self.layer1, 0, 0, filename='image2.jpeg')
#		o.connect('button-press-event', self.button_press_event_cb)
#		o.connect('motion-notify-event', self.motion_notify_event_cb)
#		o.connect('button-release-event', self.button_release_event_cb)
		
#		o = CanvasImage(self.layer1, 100, 100, filename='image1.png')
#		o.connect('button-press-event', self.button_press_event_cb)
#		o.connect('motion-notify-event', self.motion_notify_event_cb)
#		o.connect('button-release-event', self.button_release_event_cb)
		
#		o = CanvasFunc(self.layer1, target=self.canvas_func1, args=(), kw={})
		
		self.canvas_button = None
		self.item = None
		self.item_prev_x = None
		self.item_prev_y = None
		self.item_button = None
		
		self.window.connect('key-press-event', self.window_key_press_event_cb)
		self.window.connect('key-release-event', self.window_key_release_event_cb)
		self.canvas.connect('button-press-event', self.canvas_button_press_event_cb)
		self.canvas.connect('motion-notify-event', self.canvas_motion_notify_event_cb)
		self.canvas.connect('button-release-event', self.canvas_button_release_event_cb)
		self.canvas.connect('scroll-event', self.canvas_scroll_event_cb)
		
	def delete_event_cb(self, widget, event, data=None):
		return False

	def destroy_cb(self, widget, data=None):
		gtk.main_quit()
	
	def main(self):
		gtk.main()
	
	def button_press_event_cb(self, widget, item, event):
		self.item = item
		self.item_prev_x = event.x
		self.item_prev_y = event.y
		self.item_button = event.button
		
	def motion_notify_event_cb(self, widget, item, event):
		if self.item_button == 1:
			dx = event.x - self.item_prev_x
			dy = event.y - self.item_prev_y
			self.item.move(dx, dy)
			self.item_prev_x = event.x
			self.item_prev_y = event.y
	
	def button_release_event_cb(self, widget, item, signal_id):
		self.item_button = None
	
	def canvas_button_press_event_cb(self, widget, event):
		self.canvas_button = event.button
		if self.canvas_button == 2:
			self.canvas_prev_x = event.x
			self.canvas_prev_y = event.y
	
	def canvas_motion_notify_event_cb(self, widget, event):
		if self.canvas_button == 2:
			dx = event.x - self.canvas_prev_x
			dy = event.y - self.canvas_prev_y
			self.canvas.move_all(dx, dy)
			self.canvas_prev_x = event.x
			self.canvas_prev_y = event.y
		
	def canvas_button_release_event_cb(self, widget, signal_id):
		self.canvas_button = None
	
	def canvas_scroll_event_cb(self, widget, event):
		if event.direction == gtk.gdk.SCROLL_UP:
			self.canvas.scale_all(event.x, event.y, 1.2, 1.2)
		elif event.direction == gtk.gdk.SCROLL_DOWN:
			self.canvas.scale_all(event.x, event.y, 1/1.2, 1/1.2)
	
	def window_key_press_event_cb(self, widget, event):
		print widget, event
	
	def window_key_release_event_cb(self, widget, event):
		print widget, event
	
	def canvas_func1(self, *args, **kw):
		self.canvas.draw_image(0, 0, xs=1.0, ys=1.0, filename='image2.jpeg')
		self.canvas.draw_line(0, 0, 100, 100)
		self.canvas.draw_rect(0, 100, 100, 200)
		self.canvas.draw_oval(0, 200, 100, 300)
		self.canvas.draw_arc(0, 300, 100, 400)
		self.canvas.draw_text(0, 400, "Hello World")