GtkDialog のボタンをメッセージが長くても幅いっぱいに広げる方法が解った。
action_area って実は GtkButtonBox だった。
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk dlg = Gtk.Dialog() dlg.vbox.pack_start(Gtk.Label(label='a'*50, visible=True), False, False, 30) dlg.add_button('_OK', Gtk.ResponseType.CLOSE) dlg.add_button('_Cancel', Gtk.ResponseType.CLOSE) # Expand area = dlg.get_action_area() area.props.layout_style = Gtk.ButtonBoxStyle.EXPAND dlg.run() dlg.destroy()
それだけだったのか。。。。。
ついでに解った。
use-header-bar property を 1 にすれば buttons が headerbar になる。
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk dlg = Gtk.Dialog(use_header_bar=1) dlg.vbox.pack_start(Gtk.Label(label='Titlebar Buttons', visible=True), False, False, 30) dlg.add_button('SUZUKI', Gtk.ResponseType.CLOSE) dlg.add_button('MotorCycle', Gtk.ResponseType.CLOSE) dlg.add_button('Cool', Gtk.ResponseType.CLOSE) dlg.run() dlg.destroy()
そうだったのか。。。。。
それとタイトルバーを消す方法なんだが。
非表示の GtkTitleBar をセットすればとりあえず消すことはできると解った。
でも角が丸くならない、色々試したけど上手くいかない。
で思いついた、GtkMessageDialog のボタンを使わず add_button すればよくね?
#!/usr/bin/env python3 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk dlg = Gtk.MessageDialog(text='SUZUKI MotorCycle is Bery Cool!', visible=True) dlg.add_button('_OK', Gtk.ResponseType.CLOSE) dlg.add_button('_Yes', Gtk.ResponseType.CLOSE) dlg.add_button('_Agree', Gtk.ResponseType.CLOSE) dlg.run() dlg.destroy()
何故今迄気が付かなかったんだ。。。。。
てか、統一感を出そうとするなら GtkMessageDialog 継承が一番じゃん。
そんなこんなで我がアプリは結局コレに書き換え。
prev のファイル名表示を追加しようと思ったけどゴチャゴチャするのでヤメ。
Comipoli 0.4.1 公開、本サイト更新のお知らせは久々だな。
ところで、この件でソースコードを見てやろうって思ったんだが。
gtk/gtkmessagedialog.c at master ? GNOME/gtk ? GitHub
gtk_widget_add_css_class という関数を見つけたんだけど。
GtkWidget: GTK 4 Reference Manual
コレって GTK4 からの関数なんですけど。
え、もしかして次の GNOME から GTK4 なんですか?