GtkVideo and GtkPicture

GTK4 には GtkVideo というものが追加された。
早速試してみよう、使えるなら Y901x をコレにしよう。

#!/usr/bin/env python3

import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gio

FILENAME = '[ヤマガラ] セミうめぇ.mp4'

class TestWindow(Gtk.ApplicationWindow):
    def __init__(self, app):
        Gtk.ApplicationWindow.__init__(self, application=app, title=FILENAME)
        #
        f = Gio.file_new_for_path(FILENAME)
        video = Gtk.Video(file=f)
        self.set_child(video)
        self.set_default_size(960, 540)
        self.present()

class TestApplication(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self, application_id='org.suzuki.address')

    def do_activate(self):
        TestWindow(self)

app = TestApplication()
app.run()

semiumee

なんとまあ、ボタン類やシークバーまで付属なのね。
しかもマウスオーバーで上に被さるオーバーレイタイプだぞ。
これを非表示にするプロパティは無いのか、なんじゃそりゃ。

それとなんというか、WPF の MediaElement みたいなものだね。
デコーダーを入れ Totem で再生できるメディアが再生可能。
動画の元サイズやアスペクト比情報をコイツから得ることはできない。
スマホの縦動画を回転してくれるみたいなことなんてしない。

ダメだこりゃ、使い物にならない。

せっかくなので GtkPicture も試してみる。

#!/usr/bin/env python3

import gi
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk, Gio

FILENAME = 'cbr01.jpg'

class TestWindow(Gtk.ApplicationWindow):
    def __init__(self, app):
        Gtk.ApplicationWindow.__init__(self, application=app, title=FILENAME)
        #
        f = Gio.file_new_for_path(FILENAME)
        pic = Gtk.Picture(file=f)
        self.set_child(pic)
        self.set_default_size(500, 300)
        self.present()

class TestApplication(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self, application_id='org.suzuki.burgman')

    def do_activate(self):
        TestWindow(self)

app = TestApplication()
app.run()

cbr

やはりスマホの縦写真を回転してくれない。
Nautilus のサムネイル等どんな環境でも縦に表示されるけどさ。
アレはアプリが Exif 情報を見て回転表示しているんだからね。

しかもコレら、回転表示させるプロパティすら無いのかよ。
スマホ全盛期にこんなウイジェットを出されてもなぁ、って感じ。