GTK+プログラミング
そんなAPIは無いように見えるから
どうしても欲しければ自力でGtkEntryCompletion相当のコードを書くことになるのかなぁ >>670ありがとうございます。
_GtkEntryCompletionPrivate構造体の定義がわからないので諦めました
g_signal_connectでコールバック関数に渡せるデータって一つしかないですよね
でもどうしても複数のデータを渡したい時ってどうするんですか?
例えば,main関数内でエントリーが3つとボタンがあって,
ボタンを押したら3つのエントリーに入力されている文字列をg_printで出力する場合とか
初歩的な質問かもしれないけど,お願いします
>>672
構造体とか使って渡したいデータを1変数にまとめて、
コールバック関数にはその構造体のポインタ渡すのはどうかな
http://pastebin.com/UXyRbuJf >>673
ありがとうございます
やっぱりそれしか無いですか...
なんで可変じゃなくてわざわざ一個だけなんだろうなあ 自分でラッパー書いて、可変引数版のg_signal_connectを自由につくってもいいのよ〜
一般的に複数引数渡すよりポインタ1個渡す方が効率的、と考えられてるんじゃないかな
普通は渡したいデータの型も文字列だけじゃないだろうし、Cだと型が予測できない可変引数を処理するのは面倒だと思う >>675
調べてみると可変引数って色々問題あるんですね,知りませんでした
ラッパーって言葉も今知りました
勉強になります >>672
・そのEntry3つをGHashTable につっこんどいて それをコールバックの引数にする
・そもそもGtkBuilderオブジェクトでつくったUIなら それをcbの引数にする
GTK_ENTRY (gtk_builder_get_object (builder, "ボタンの変数名")) で取れる
・前もってそれぞれのEntryにgtk_widget_set_name(entry,"しきべつめい")しといて
gtk_container_get_children (GTK_CONTAINER (window)) で取れる GList をcbの引数にする
cb関数側でg_list_nth_data つかって先頭からアクセス、gtk_widget_get_name(entry)でとれる名前を確認しながら扱う
三通り思いつきました、どうでしょうか? 2.0用コードを3.0でコンパイルしたら、gdk_pixuf_render_to_drawable()で問題発生しました。
main(){
gtk_init(NULL,NULL);
GdkPixbuf* pixbuf;
GtkWidget* image;
gdk_pixbuf_render_to_drawable(
pixbuf,
image->window,
image->style->fg_gc[GTK_STATE_NORMAL],
0, 0, 0, 0,
100,
200,
GDK_RGB_DITHER_NONE, 0, 0
);
}
gtk+-3,0でコンパイルすると、image->window, image->style, GDK_RGB_DITHER_NONE、の3箇所がエラーになってしまいます。
だれか解決してください。 3.0の方針として、直接メンバー変数にアクセスしない事になったんで、
それぞれ、set_window, get_window みたいなアクセサ経由に変更すればOK >>678 下記サイト 中段 "GdkDrawable is gone" によると
「GTK+3において GdkDrawable,GdkPixmap,GdkImage は削除された。代わりに cairo_surface_t,GdkPixbuf を使え」
とあります。承知の上での質問でしたらすいません
http://developer.gnome.org/gtk3/3.1/ch25s02.html >>677
GHashTableを使うのが一番楽そうですね
参考になりました,ありがとうございました
>>679,680
どうやらgtk+3は描画の高レベル部分をcairoに置き換えたがってるようなので、
素直にgdkによる描画をcairoで書きなおすことにします。 GTK+2で使用可能な2D plotterにはどんなものがありますか?
GTK+3にも移行できそうなものでオススメがありましたら教えてください あんたの言う「2D plotter」とは何なのかをもうちょっと調べなさいよ
「大判プリンター」で目的に合うならこちらを勧めるよ
どうしてもプロッターならその理由が判らないと始まらないし
GTK関係ない話にもなる ベクトルDrawとかのライブラリの亊じゃね?
gnuplotとかmatplotとかそういうの。
わからい人にはグラフ書くライブラリって言ったほうがいいのかな? 仰る通りライブラリのことです、GUIプログラミングのスレでの発言ですからね
それじゃ調べたものを書きますね
・plplot5.9.6
古い環境を意識してるのか8-bit色制限?cairoが普通に扱えて且つPostScriptも吐けて好印象
ただ関数群が使いにくい印象
・GtkExtra3.0.1(beta) の GtkPlot
こちらはdemoを動かしただけですが若干もっさり描画?
cairoすらwrappingしてるからからか?
他にあればそれも検討してその上で使うものを決定したいのです http://stackoverflow.com/questions/915940/python-plotting-libraries
http://wiki.python.org/moin/NumericAndScientific/Plottinghttp://wiki.python.org/moin/NumericAndScientific/Plotting
最近だとRとか使ってるイメージはあるけど
この辺昔からあるからね。どうしてもラッパーライブラリは多くなっちゃうよね
Q: Does pychart support Windows?
Yes. But you need to install Python and Ghostscript beforehand.
pychartとかどうかな日本の人だよ名前から判断すると >>689
ありがとうございます。出来ればCで使えるGTK+のwidget又はcairo_tに描画できるものでお願いします。。
グラフの枠,軸ラベル,グラフ自身,凡例
これらを書ける関数が用意されてると嬉しいです。cairoでガリガリ書く奴はgnome-system-monitorを参考にして
書きましたが何か違うなと感じました、「もっと楽できるものあるだろう」と
Rって言語は初めて知りました。R-devel入れてみましたが GtkDrawingAreaやcairo_tに書く方法が判らず断念しました
pychartはpython使う時は使ってみようと思います gtk_image関連で、プログラム内でファイルを指定して画像を用意する関数はありますか?
gtk_image_new_form_fileなどのように起動するときに指定するのではなく
プログラム内で指定したいのです >>692
すみません、それの具体的な使い方を教えてもらえないでしょうか?
その後に続く()の中には何を入れればいいのでしょうか?
devhelpを見ましたが、書いてある通りに入れるとコンパイルエラーが出ます
gtkwidget *image;
image = gtk_image_set_from_file (GtkImage *image,
const gchar *filename);
↑の*filename のところにファイル名を入れるのでしょうか?例えばaaa.png等
*imageのところも何か入れるのでしょうか? gtk_image_new_from_fileでなんでだめなの >>693
get_ じゃなくて gtk_ ね。俺の書き間違い
ttp://wingtk.sourceforge.net/ishan/sliders.html
ページ内で gtk_image_set_from_file で検索して >>693
gtk_image_set_from_file()使ってjpegでぱらぱら漫画作った
git clone git://git.pf.sourceforge.jp/gitroot/k/ke/kemeco/parapara_manga.git
いっしゅのモーションJPEGwww >>696
何かの折にヘッダファイルとして使わせてもらいます >>696さんのリストを一部改変してボタンを押されたら次の画像を表示するというふうにしたいのですが
上手くいきません
ボタンのシグナルコネクトをflipという関数に接続したのですが
関数が反応してないようです
どうすればいいか教えてください
改変したリストです↓
http://www1.axfc.net/uploader/Sc/so/280374.c すいません、元のリストをアップしてしまいました
正しくはこちらです(ファイル名をimage2.cに変えました)
http://www1.axfc.net/uploader/Sc/so/280375.c >>700
ちょちょと換えてみたから見てみて
http://www1.axfc.net/uploader/Sc/so/280675.c
devhelpってヘルプビューア入れて GtkButtonの説明読むのおすすめ
「The "clicked" signal」 てとこにclickedシグナルハンドラのシグネチャが書いてあるよ
>>699が元々書いてたハンドラとシグネチャが一致してなかったみたい
それと初回クリック時の画像ファイルインデックスは0番じゃなくて1番にしといた 指示レス番まちがえたけど 訂正しねーよ!(我が家杉山) 謝る必要はこれっぽっちもないけど
「動けばいい」とかいう低い志は捨てようや ボタンを押されたときに、シグナルコネクト先を変更したいのですが
if elseで分岐させてみたのですが上手くいきません。(最初に通過した設定がそのまま残って変更出来ない)
ボタンを押されたら、シグナルコネクト先を変更するにはどうすればいいのでしょうか? >>704
> if elseで分岐させてみたのですが上手くいきません。(最初に通過した設定がそのまま残って変更出来ない)
コード見ていないので確かなことは言えませんが、
g_signal_handler_disconnect()とg_signal_connect()を使えばきっと出来ますよ(やってみたら出来た)
code snippestでも貼ってくれたらアドバイスもできたかと思いますが情報が不足していましたので
「ボタンを押されたら、シグナルコネクト先を変更する」というサンプルを書いてみました。ので参照みて下さい
http://www1.axfc.net/uploader/Sc/so/284339.c
main関数内とハンドラ内で共用する変数についての渡し方は
・g_object_set_data()を利用して渡す方法
・g_signal_connect()の最後の引数にGHashTableを指定して渡す方法
・大域変数として宣言しておく方法(この程度の場合は悪手かな?)
の3通り思いつきましたが1番目の案で記述しました。書き方はいろいろあります >>705
ご親切にありがとうございます
解読してみます GTKとcarioとpangoの関係を教えて下さい http://cairographics.org/
http://cairographics.org/news/cairo-1.11.4/
ぬぉ!死んだと思っていたcairoに新バージョンのニュースが!
FirefoxはLinux版も自前のOpenGLレンダラーに移行しつつあるから、
今更4倍速くなったって言っても悲しいけど、GTK+は間違いなくかなり速くなりそうだ。 http://cairographics.org/news/cairo-1.12.0/
cairo-1.12.0がリリースされた。18ヶ月ぶりのメジャーバージョンアップらしい。
個人的にはGTK+の描画がどれだけ高速化されたかが気になるな。
>>713
>どれだけ高速化されたかが気になる
cairoで何をしようとしてるの? 正直に白状するが、
glageのuser dataの使い方がわからないまま
実務で開発しちゃったりしてます。 あと、ラジオボタンとか、配列可して、コールバック関数を一つに
まとめる方法もわからないまま
一個一個書いてます。
とほほ
EmacsとかVisual Studioみたいなマルチストロークのキーバインドって
GTK+でできますか? GTK+はEmacsではキーイベントの処理に使われていません cairoが高速化ってことはeclipseも早くなるのかね anjutaを使ってみたところ
gtk_signal_connectだと警告なしでコンパイルできるのに
g_signal_connectだと暗黙的関数宣言のエラーになるんですが
どうやったら直せるでしょうか? どんな呼び方したのか書いてくれなきゃわからん
一番いい解決方法は DevhelpっていうGUIヘルプビューワ入れて g_signal_connectの説明読むこっちゃ
ver.も気にせずに例を書くとシグネチャ違うみたいだねそれが一番幸せになれる よく確認してみたところエラーになるのはgtk_signal_connectのほうで
GTK3.0で使われなくなっていて代わりにg_signal_connectを使えと書いてありました
http://developer.gnome.org/gtk/stable/gtk-Signals.html#gtk-signal-connect threadやmutex関係もgtk_の方は廃止になって、g_の方のみになった。3。0あたりから
基本的な関数はglibに集約して、ツールキット的な関数のみgtk 3で担当するように住み分けされた
コンパイルの最中に廃止された関数と表示がでるソースは、いずれソースを書き換えないとビルド不能になる
ちなみに最も基本的なlibcでも現在開発ラインの最新版だとgetsが本当にソースから廃止されてるので、getsが使われてるソースをビルドできなくなってる
フォントサイズって10.5ptとか小数点で設定できる?
フォントサイズの指定方法がわかってて
小数点の指定ができるかって疑問なら
やってみて自分で確認すりゃいいのに。 Gtk.TreeView.Selection.Mode = Gtk.SelectionMode.Multiple;
に変更すると得られるGtk.TreeIterがおかしくなってしまう
のですが、Multipleの時はSelection.GetSelectedは使えない
のでしょうか? Gtk.Label page_label = new Gtk.Label (title);
page_label.KeyReleaseEvent += delegate {
Console.WriteLine("!"); //←呼び出されない理由を説明してほしい!
}; GTKは親切ではないなーと楽をしてきただけに思いますw
>>735
ありがとうございます
しかし、それらしいのが見つかりません GTKのGUIは更新をサボる癖があるようですが
無理やり更新させる方法はないでしょうか? Gtk-CRITICAL **: IA__gtk_main_quit: assertion `main_loops != NULL' failed
メインループ内でGtk.Application.Quit ();を呼ぶなって事だろうけど
終了させる方法はないのでしょうか? gtk_main_quit()のソースコードを読めば解決。 >>739
launcher みたいの作ろうとしてるんだろうか…
いまいちどういうことなのか判らないんだけど
logメッセージを抑制したいなら glib 2.32から
http://www.mail-archive.com/geany-devel@uvena.de/msg06039.html
G_LOG_LEVEL_CRITICAL
log level for critical messages, see g_critical(). This level is also
used for messages produced by g_return_if_fail() and g_return_val_if_fail().
ある程度デフォルトだと出力されなくなるみたい
onにするときは環境変数G_MESSAGES_DEBUG=allで以前と同じ動作になるらしい from gi.repository import Gtk このスレ的にはGTKのものをそのまま叩くっていうのは危険なこと? え?ラッパーライブラリを介さず直接コールするって意味じゃないの? UbuntuでPyGTKを利用してアプリケーションを作っているのですが、一部パーミッションが与えられていないファイルへの書き込みを行いたいと考えております。
Ubuntu Software Centerからアプリケーションをインストールしようとすると、Authenticateというポップアップが出てきてパスワードを入力するとsudoの様にアプリケーションのインストールができますが、これはどのように実現しているのでしょうか?
自分でも書き込めるようにパーミッションを変更していることを前提にしているのですが、変更方法を知らない人や、一々変更した後にアプリケーションを起動するのが煩わしい人向けに、アプリケーションからsudoのようなことができないかと考えております。 >>751
pyは使えないのですが、この話はGTKのスレの質問でしょうかね?
Cだったらstatとchmod使うところじゃないかと。 >>751
もしかして:gksu
$ sudo command
のかわりに
$ gksu command
ってやると
GUIでパスワード聞かれる 口下手な>>753は、gksuを参考にlibgksuを使えと言いたいんだな?
libgksuのpythonバインディングもあるから安心だって言いたいんだよな? 質問させてください。
gtkmm2.4ベースでプログラムをいじっているのですが、画面操作せずにGtk::Dialogを閉じる方法が分かりません
Dialog作成→threadで特定の処理を開始→処理終了→※Dialogを閉じる(画面操作せずに)
と言う流れをプログレス表示などをして処理したいのですがrunした後にresponseをしてもhideしてもDialogが消えません
根本的に分かっていないのでしょうが・・・上記のような処理をするにはどうしたら良いのでしょうか? こう書く方法ないかな?
public class Window :Gtk.Window{
} vala優秀そうだね
でもwindowsでも使いまわしたいのでmonoから外れたくない >>760
valaはwindowsでも普通に使える。 Gtk::Dialogはon_delete_eventを呼ばないのですか?
処理が途中の場合とかにダイアログを閉じるのを中止したいのですが、何処で中止させたらいいのやら ちょっとチャレンジしてみることにしました
FreeBasic導入したら、GTK+とCairoが入っていたので。
ネットとサンプルを参考にしながら、
ちょこちょこと弄ってみます。
お手軽に描写の綺麗なプログラムが書けるってことは素晴らしい。 結局add_buttonで追加したボタンを使うのではなく、アクションエリアに普通のボタンを追加し、
connectしたメソッドで処理チェックを行なった後にresponseでIDを投げる事で一応動きは出来たみたいです。
もっと簡単な方法はないですか? ちょっとスレチになるかもなんですけど、GTK使われたアプリをWindowsで自動操作したいのですが
WM_LBUTTONDOWNなどで座標を直接指定でやってるんですけどMenuBar以外が反応してくれないです
どうすればいいでしょうか? Macで日本語入力が可能になりそう!Windows爆死www Linux憤死wwwwwwwwwwwwwwwww
http://engawa.2ch.net/test/read.cgi/poverty/1368116873/ FreeWnn スレッドより:
http://toro.2ch.net/test/read.cgi/unix/1084551838/l50
457 :名無しさん@お腹いっぱい。:2012/07/05(木) NY:AN:NY.AN
gtk2アプリにkinput2で入力する場合に、kinput2のステータス表示の「[あ]」が
真っ黒になってしまう問題の解決法の俺様メモ。
gtk2のソースの、modules/input/gtkimcontextxim.cの
on_status_window_expose_event()関数が変更されたのが原因。
これを、gtk+-2.21.5(以前)のソースのgtkimcontextxim.cに戻せば桶。
modules/input以下のサブディレクトリだけmakeして、
できたim-xim.soだけ置き換えればよい。
ソースにバグありとみた。 http://www.tarnyko.net/en/
ここでWindows版のBroadway実行環境を配布してたから試してみたけど
遅くて使いものにならん…
asm.jsは良い感じなんで、GTK+アプリをそのままasm.jsにコンパイルして
ブラウザで実行出来るようにしてくれたら最高だがな。 同一アプリ上で、IconViewからFrameとかImageへDrag & Dropって
可能なんでしょうか・・・。
そんな感じのサンプルをご存知でしたら教えてくださいm(_ _)m すみません、>>769は出来るようになりました。
drop側の設定に問題がありました。
ところで、Imageから別のImageへのDrag & Dropは可能なんでしょうか。
Dragしても、IconViewの時のようにカーソルが変化しません・・・。