summaryrefslogtreecommitdiff
path: root/examples/squares.py
blob: 7e46c7f94ade16ca935ac04ece56b398c8930264 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/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)