GTK+ Integration¶
If you are building a Gtk application, you might want to have a look at the code inside the
frontend
package. It contains a sample Gtk+ app to embed the emulator.
Rendering¶
A renderer for Gtk.DrawingArea
is available, using software rendering. A hardware accelerated
renderer is planned.
To use it:
import cairo
from gi.repository import Gtk
from desmume.emulator import DeSmuME
from desmume.frontend.gtk_drawing_area_desmume import AbstractRenderer
emu = DeSmuME()
renderer = AbstractRenderer.impl(emu)
renderer.init()
# Example signal handlers:
def on_wDrawScreen_main_draw_event(self, widget: Gtk.DrawingArea, ctx: cairo.Context, *args):
return renderer.screen(screen_width, screen_height, ctx, 1)
def on_wDrawScreen_main_configure_event(self, widget: Gtk.DrawingArea, *args):
renderer.reshape(widget, 0)
return True
def on_wDrawScreen_sub_draw_event(self, widget: Gtk.DrawingArea, ctx: cairo.Context, *args):
return renderer.screen(screen_width, screen_height, ctx, 1)
def on_wDrawScreen_sub_configure_event(self, widget: Gtk.DrawingArea, *args):
renderer.reshape(widget, 1)
return True