+class VerticalLabel(Gtk.DrawingArea):
+ """Label of vertical text (rotated -90°)."""
+
+ def __init__(self, text):
+ super().__init__()
+ self._text = text
+ self.set_draw_func(self.on_draw)
+
+ def on_draw(self, _, cairo_ctx, __, height):
+ """Create Pango Layout from ._text, rotate and re-size."""
+ layout = self.create_pango_layout(self._text)
+ text_width, text_height = layout.get_pixel_size()
+ cairo_ctx.translate(0, text_width + (height - text_width) / 2)
+ cairo_ctx.rotate(radians(-90))
+ PangoCairo.show_layout(cairo_ctx, layout)
+ self.set_size_request(text_height, text_width)
+
+