62 lines
1.6 KiB
Python
Executable File
62 lines
1.6 KiB
Python
Executable File
#!/usr/bin/env -S GI_TYPELIB_PATH=${PWD}/build/gtk:${GI_TYPELIB_PATH} LD_PRELOAD=${LD_PRELOAD}:${PWD}/build/gtk/libgtk-4.so python3
|
|
|
|
import gi
|
|
|
|
gi.require_version('Gdk', '4.0')
|
|
gi.require_version('Gtk', '4.0')
|
|
|
|
from gi.repository import Gdk
|
|
from gi.repository import Gtk
|
|
from gi.repository import Graphene
|
|
|
|
|
|
class DemoWidget(Gtk.Widget):
|
|
|
|
__gtype_name__ = "DemoWidget"
|
|
|
|
def __init__(self):
|
|
super().__init__()
|
|
|
|
def do_measure(self, orientation, for_size: int):
|
|
# We need some space to draw
|
|
return 100, 200, -1, -1
|
|
|
|
def do_snapshot(self, snapshot):
|
|
# Draw four color squares
|
|
color = Gdk.RGBA()
|
|
rect = Graphene.Rect.alloc()
|
|
|
|
width = self.get_width() / 2
|
|
height = self.get_height() / 2
|
|
|
|
Gdk.RGBA.parse(color, "red")
|
|
rect.init(0, 0, width, height)
|
|
snapshot.append_color(color, rect)
|
|
|
|
Gdk.RGBA.parse(color, "green")
|
|
rect.init(width, 0, width, height)
|
|
snapshot.append_color(color, rect)
|
|
|
|
Gdk.RGBA.parse(color, "yellow")
|
|
rect.init(0, height, width, height)
|
|
snapshot.append_color(color, rect)
|
|
|
|
Gdk.RGBA.parse(color, "blue")
|
|
rect.init(width, height, width, height)
|
|
snapshot.append_color(color, rect)
|
|
|
|
def on_activate(app):
|
|
# Create a new window
|
|
win = Gtk.ApplicationWindow(application=app)
|
|
win.set_title("Squares")
|
|
icon = DemoWidget()
|
|
win.set_child(icon)
|
|
win.present()
|
|
|
|
# Create a new application
|
|
app = Gtk.Application(application_id='org.gtk.exampleapp')
|
|
app.connect('activate', on_activate)
|
|
|
|
# Run the application
|
|
app.run(None)
|