Vala は GObject を利用した C 言語のソースコードを生成する、セルフホスティングコンパイラを持つオブジェクト指向言語です。C# に似た構文を持ち、無名関数やシグナル、プロパティ、ジェネリクス、メモリ管理、例外処理、型推論、および、for-each など、C 言語にはない言語仕様を持っています。
Wikipedia より引用・編集
PyGObject で GUI サンプルを作りためていたので、Vala 用に書き直しています。Vala 用にダイアログのサンプルを作り直してビルドしたときに、ちょっと困った警告が出たので備忘録にしました。
本ブログ記事では下記の OS 環境で動作確認をしています。
Fedora 32 (Workstation Edition) | x86_64 |
PyGObject のダイアログのサンプルは下記のとおりです。
gtk_dialog.py
gtk_dialog.py の実行例
Vala でも(ちょっと手を抜いてはいますが)同じように記述できます。
gtk_dialog.vala
このコードを実行しようとすると、ビルド、実行はできるものの、下記のような警告が出ます。
$ ./gtk_dialog.vala --pkg gtk+-3.0 /tmp/gtk_dialog.vala.PPEXM0.c: 関数 ‘my_dialog_on_clicked’ 内: /tmp/gtk_dialog.vala.PPEXM0.c:134:2: 警告: ‘GtkStock’ は廃止されました [-Wdeprecated-declarations] 134 | _tmp0_ = (GtkDialog*) gtk_dialog_new_with_buttons ("ダイアログ", (GtkWindow*) self, GTK_DIALOG_MODAL, GTK_STOCK_OK, GTK_RESPONSE_OK, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, NULL, NULL); | ^~~~~~ /tmp/gtk_dialog.vala.PPEXM0.c:134:2: 警告: ‘GtkStock’ は廃止されました [-Wdeprecated-declarations] /tmp/gtk_dialog.vala.PPEXM0.c:137:9: 警告: assignment to ‘GtkBox *’ {aka ‘struct _GtkBox *’} from incompatible pointer type ‘GtkWidget *’ {aka ‘struct _GtkWidget *’} [-Wincompatible-pointer-types] 137 | _tmp1_ = gtk_dialog_get_content_area (dialog); | ^ $
gtk_dialog.vala の実行例
GtkStock は、メニューやツールバーなどで共通で使用する「開く」や「終了する」といったアイテムの ID を扱っています。しかし、参考サイト [1] によると、GTK 3.10 より Stock は廃止されたとあります。Fedora 32 で使用している GTK+ は 3.24 ですので、ずいぶん前から廃止されていることになりますが、PyGObject では警告が出なかったので気が付きませんでした。💦
Since GTK+ 3.10, stock items are deprecated. You should instead set up whatever labels and/or icons you need using normal widget API, rather than relying on GTK+ providing ready-made combinations of these.
今後のことを考えると、いつでも使えるやり方を確立したいので、代替案を探索しています。
参考サイト
にほんブログ村
0 件のコメント:
コメントを投稿