GTK#のFileChooserDialogを統合ファイル/ URIダイアログとして使用できますか?http / https / ftp URIを「書き換える」(ローカルディレクトリの前に付ける)ことなく受け入れるようにしたいと思います。
http:// .... uriを設定LocalOnly=false
してfilechooser内のテキストボックスに貼り付けても、元のエントリを取得できません。ローカルディレクトリは常にテキストの前に付加されます。
GTK#のFileChooserDialogを統合ファイル/ URIダイアログとして使用できますか?http / https / ftp URIを「書き換える」(ローカルディレクトリの前に付ける)ことなく受け入れるようにしたいと思います。
http:// .... uriを設定LocalOnly=false
してfilechooser内のテキストボックスに貼り付けても、元のエントリを取得できません。ローカルディレクトリは常にテキストの前に付加されます。
結局のところ、解決策/ハックを見つけました(C#で):
private string _extractUri(Widget wi) {
if (wi is Entry)
return ((wi as Entry).Text);
else if (wi is Container) {
foreach (Widget w in (wi as Container).Children) {
string x = _extractUri(w);
if (x!=null)
return x;
}
}
return null;
}
それが常に安全かどうかはわかりませんが、標準のFileChooserDialogでは機能しました。標準のURI/ファイルの結果がマングルされている場合でも、入力フィールドから元の文字列を返します。
いろいろ調べましたが、無理だと思います。少なくとも、私がテストした直接のネイティブ C GTK+ API ではそうではありません。
私のテストでは、ダイアログに入力した http:// URI の先頭にローカル ディレクトリのパスが追加されるか、(null) 返されました。get_uri()
だけでなく、メソッドを呼び出しましたget_filename()
。
また、参考として、GIMPアプリケーションの [ファイル] メニューもざっと見てみました。ご存じのとおり、GIMP は GTK+ で G を提供しているため、ツールキットの使用方法に関するアイデアの参考として使用できる場合があります。GIMP は、ファイル選択ダイアログに入力された URI をサポートしようとはしません。代わりに、GtkEntry だけで簡単なダイアログを開く専用の[場所を開く] コマンドがあります。