GladeとGtkバージョン
gladeによるポトペタなGUI作成を導入したのですが、これにWindows版公式ビルド最新版より新しいバージョンのGTKが必要とのこと。===
debug: et_etaion_set_application_base_dir_from_execute_path()[126]: dir:'..'
critical: init_gtk_builder_()[2740]: Couldn't load document_new_dialog_builder file: ./resource/ui/document_new_dialog.glade: required gtk+ version 3.12, current version is 3.10
===
ビルド済みGTKライブラリの取得
officialの最新版は 3.10.4-20131202 までしか提供されていないので、unofficialなバイナリを使用することに。使い勝手の問題からofficialに近いパッケージを探して、https://twitter.com/niloufarjp/ 氏の配布してくださっている配布パッケージを、下記スクリプトで全解凍&フォルダ統合済みに再パッケージ。
https://github.com/MichinariNukazawa/vecterion_vge/blob/master/deploy/win/gtk_library/gtk_library_repackage.sh
loaders.cache, libpixbufloader-svg.dll
libpixbufloader-svg.dll を使うにあたって loaders.cache が無いから gdk-pixbuf-query-loaders.exeを呼び出して作れ、と親切なエラーメッセージなのでそれに従いファイルを作成。===
(vecterion_vge.exe:8124): GdkPixbuf-WARNING **: Cannot open pixbuf loader module file 'C:\Users\nuka\Documents\vecterion_vge-win64-17.07develop-11c2ada\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache': No such file or directory
This likely means that your installation is broken.
Try running the command
gdk-pixbuf-query-loaders > C:\Users\nuka\Documents\vecterion_vge-win64-17.07develop-11c2ada\lib\gdk-pixbuf-2.0\2.10.0\loaders.cache
to make things work again for the time being. ===
下の、古い設定ファイルをコピーしてきても動いたけれど、念のため生成版に置き換え。
===古い版
# GdkPixbuf Image Loader Modules file
# Automatically generated file, do not edit
# Created by gdk-pixbuf-query-loaders.exe from gdk-pixbuf-2.30.1
#
# LoaderDir = Z:\srv\win32builder\fixed_3104\build\win32/lib/gdk-pixbuf-2.0/2.10.0/loaders
#
"lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll"
"svg" 2 "gdk-pixbuf" "Scalable Vector Graphics" "LGPL"
"image/svg+xml" "image/svg" "image/svg-xml" "image/vnd.adobe.svg+xml" "text/xml-svg" "image/svg+xml-compressed" ""
"svg" "svgz" "svg.gz" ""
" <svg" "* " 100
" <!DOCTYPE svg" "* " 100
===
===生成版
# GdkPixbuf Image Loader Modules file
# Automatically generated file, do not edit
# Created by gdk-pixbuf-query-loaders.exe from gdk-pixbuf-2.36.6
#
# LoaderDir = C:\Users\nuka\Documents\vecterion_vge-win64-17.07develop-11c2ada/lib/gdk-pixbuf-2.0/2.10.0/loaders
#
"GDK_PIXBUF_TOPLEVEL/lib/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-svg.dll"
"svg" 6 "gdk-pixbuf" "Scalable Vector Graphics" "LGPL"
"image/svg+xml" "image/svg" "image/svg-xml" "image/vnd.adobe.svg+xml" "text/xml-svg" "image/svg+xml-compressed" ""
"svg" "svgz" "svg.gz" ""
" <svg" "* " 100
" <!DOCTYPE svg" "* " 100
===
足りないアイコンファイルの追加
===(vecterion_vge.exe:8156): Gtk-WARNING **: Could not find the icon 'window-minimize-symbolic-ltr'. The 'hicolor' theme
was not found either, perhaps you need to install it.
You can get a copy from:
http://icon-theme.freedesktop.org/releases
===
===
(vecterion_vge.exe:8156): Gtk-WARNING **: Could not load a pixbuf from /org/gtk/libgtk/icons/16x16/status/image-missing.png.
This may indicate that pixbuf loaders or the mime database could not be found.
===
今回の場合、 https://github.com/Beep6581/RawTherapee/issues/3046 に書いてあるキャッシュの更新はしなくても、上記警告まではとりあえず解決して消える。
===
(vecterion_vge.exe:6744): Gtk-WARNING **: Could not load a pixbuf from icon theme.
This may indicate that pixbuf loaders or the mime database could not be found.
**
===
===
**
Gtk:ERROR:gtkiconhelper.c:493:ensure_surface_for_gicon: assertion failed: (destination)
===
share/icons 以下のアイコンファイルが足りないだけなので、これをすべて配布パッケージに追加。
CSS font: monotype; の警告
===(vecterion_vge.exe:3652): Gtk-WARNING **: Theme parsing error: <data>:23:9: not a number
(vecterion_vge.exe:3652): Gtk-WARNING **: Theme parsing error: <data>:23:18: Using Pango syntax for the font: style property is deprecated; please use CSS syntax
===
CSS syntaxに合わせろとのことなので、font-familyに書き換えて解決。
===
626 >------->------->-------"GtkStatusbar {\n"¬
627 >------->------->-------" font-family: monospace;\n"¬
628 >------->------->-------"}\n"¬
===
CSS 'px'の警告
===
(vecterion_vge.exe:3652): Gtk-WARNING **: Theme parsing error: <data>:20:16: Not using units is deprecated. Assuming 'px'.
===
単位のつけ忘れだった。
===
629 >------->------->-------"GtkTextView {\n"¬
630 >------->------->-------" font-family: monospace;\n"¬
631 >------->------->-------" font-size: 12px;\n"¬
632 >------->------->-------"}\n"¬
===
.glade ダイアログ -rdynamic の警告
.gladeファイルによるUIを使用していると出る。===
(vecterion_vge.exe:7444): Gtk-WARNING **: Could not find signal handler 'cb_clicked_button_cancel_'. Did you compile with -rdynamic?
(vecterion_vge.exe:7444): Gtk-WARNING **: Could not find signal handler 'cb_clicked_button_ok_'. Did you compile with -rdynamic?
===
.gladeファイル読み込みの際に、 gtk_builder_connect_signals(); を呼んでいたが、OK,Cancelボタンの標準的なコールバック(gtk_dialog_run()から戻り値でACCEPT/その他が返ってくる)には必要なかったので、これを除去すると消えた。
ビルドオプションは今は追う必要がないので、追っていない。以下はメモ。
警告メッセージは `-dynamic`を付けろと言っているが、 実際は` -Wl,--export-dynamic`かもしれない。
ただし、これも、Windows版(mingw)では以下の警告が出た。
===
/usr/bin/x86_64-w64-mingw32-ld: warning: --export-dynamic is not supported for PE+ targets, did you mean --export-all-symbols?
===
gtk_file_chooser_dialog 呼び出し時のクラッシュ
gschemas.compiled が必要だった模様。dev版パッケージの内で、下記のような感じでコマンドを実行すると生成することができる。
(たぶん、 環境変数 GSETTINGS_SCHEMA_DIR の指定はいらない。)
```
bin\glib-compile-schemas.exe share\glib-2.0\schemas
```
同じパスに、この gschemas.compiled ファイルを配置すると解決。