GTK+プログラミング
>>617 ありがとうございます でも、やっぱりwindowsだと面倒くさそうなのでLinuxでやることにしました そこでまた問題があるのですが (PDF注意) http://www.iim.cs.tut.ac.jp/ ~sugaya/books/GUI-ApplicationProgramming/files/GTK-book-chapter2.pdf ここに載っているサンプルプログラムをコンパイルしたら以下のエラーが出たのですがどうすればいいのでしょうか? package gtk+-2.0 was not found in the pkg-config search path. Perhaps you should add the directory containing `gtk+2.0.pc` to the PKG_CONFIG_PATH environment variable No package 'gtk+-2.0' found image-viewer.c:1:21: fatal error: gtk/gtk.h: そのようなファイルやディレクトリはありません compilation terminated. 環境はUbuntu11.04です >>618 ありがとうございます でも僕Python3をつかってるので・・・ >>619 どうすればいいのでしょうかって、どうすればいいのか自分で貼り付けてるじゃん。 Perhaps you should add the directory containing `gtk+2.0.pc` to the PKG_CONFIG_PATH environment variable あと質問のつもりなら、どのソースをどんな方法でコンパイルしたかくらいは書くべき。 >>620 すいません。以後気をつけます それとパスの通し方がわかりません・・・linuxはあまり触ったことがないので Linuxだと面倒臭くない、という理由だった人間がパスの通し方もわからんとか… 世の中なめてんのか? LinuxでGTK+プログラミングしようって人間が日本語でないとだめって… 世の中なんめてんのか? ごめん俺も英語ダメ 出来るだけ日本語の情報があるとうれしいw >>624 親のすねかじってるお前よりマシだよハゲ ,,,,,,,,,,,,,,,,,,,, /": : : : : : : : \ /-─-,,,_: : : : : : : : :\ / '''-,,,: : : : : : : :i /、 /: : : : : : : : i ________ r-、 ,,,,,,,,,,、 /: : : : : : : : : :i / L_, , 、 \: : : : : : : : :i / Yahoo!翻訳したら /●) (●> |: :__,=-、: / < 負けかなと思ってる l イ '- |:/ tbノノ \ l ,`-=-'\ `l ι';/ \ 英語がだめな24・男性 ヽトェ-ェェ-:) -r'  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ヾ=-' / / ____ヽ::::... / ::::| / ̄ ::::::::::::::l `──'''' :::| GTK以前にOSで躓いてるのか。 だったら分かってるだろうwinでやった方がいいんじゃないの? winはもっと分からないっていうなら仕方ないけど。 プログラミング系の英文を翻訳したらわけが分からなくなる 原文でわけが分からない方がましなくらいにね・・・ それとは別に ID:z2Mrc21j はもっと謙虚になるべき 下地が出来ていないし質問する場所が悪いし何を聞いたらいいか分かっていない気がする 何でパスを通したいのか分からないけど細かい質問はgoogle先生で検索してみるといいかも >>621 パスの通し方はGTKと全く関係ないLinuxの基礎の基礎なので、スレ違いです。 >>619 aptitude install libgtk2.0-dev gcc `pkg-config --cflags gtk+-2.0 --libs gtk+-2.0` image-viewer.c まあ、パスの通し方でからんでるアホも、 同レベルとみなした方が良さそうではあるがな それにしてもスレ違いの質問は認めちゃだめだろw グダグダになるぞw libgtk2.0-devをインストールしてなかったわ コンパイルできた >>634 1. パスの通し方でからんでるアホ 2. スレ違いのグダグダにからんでるアホ 3. >>637 このレス 同レベル。 Gentooを使うとみみっちい*-devパッケージなんかで 悩まされずにすむんだけどなあ HTML5バックエンドにはびびった。 これは、GTK+アプリがサーバーで動いていてクライアントでは<canvas>で 表示しているだけって事かな。 HTML5対応ツールキットとか沢山出てきそうだけど、やっぱりGTK+は最初から 完成度高いものが使えるから、かなりのアドバンテージになるはず。 インストールしなくてもWindows上でGTK+アプリが使える訳だから最高だな。 既存のGTK+アプリケーションを応用したクラウドサービスの予感 GTK+2で、Cairoを用いて一回の描画に非常に時間がかかるもの(例えばマンデルブローとか)を描画して、 GTKのDrawingAreaに表示するにはどうしたらいいんでしょうか? 直接DrawingAreaのGdkwindowにExposeイベント毎に描画するようにすると当然破綻します。 GTK+2だとCairoのSurfaceに描画してそれをPixbufにするというのもできない感じなので困ってます。 GdkPixmapに描画して、ウィンドウ再描画のときはそこから転送する。 むしろGTK+3でGdkPixmapがなくなって、オフスクリーンなpixmapを どうやって持つのか知りたい。 オフスクリーンなGdkWindowというのがあるらしいから それを作ってpixmapとして使えということなのだろうか。 >>642 ありがとうございます。 使ってる言語のバインディングが+2用なので仕方なく+2を使ってますが、今から使うアプリに GdkPixmapは使いたくないので、他に手段ないでしょうか? +2でも、CairoのSurfaceをGdkWindowにコピー?できるのが理想なんですが。 ちなみに、+3では http://developer.gnome.org/gtk3/stable/ch25s02.html#id1407324 によればCairoのSurface使えってことだと思います。 >>643 http://zetcode.com/tutorials/cairographicstutorial/cairoimages/ の「Blind down effect」でできるようですよ 簡単に要約すると 関数cairo_image_surface_createでオフスクリーンなsurfaceを作って、そこに落書きし、 eexposeイベント内で関数cairo_set_source_surfaceを呼び出して落書き結果をコピーするという方法だそうです >>644 ありがとうございます、それでやってみます。 GtkTableにアタッチしたウィジェットのパディングを変更したいんですが gtk_table_attach()を変更の度に呼んでも問題ないですか? それともパティングを手軽に変更できる手段って他にあるでしょうか。 >>647 GtkAlignmentでどうですか? 例えば、GtkButtonのパッディングを変更できるようにしたいなら、 button = gtk_button_new_with_label( "Button 2" ); align = gtk_alignment_new( 0, 0, 0, 0 ); gtk_container_add( GTK_CONTAINER( align ), button ); gtk_table_attach( GTK_TABLE( table ), align , 1, 2, 1, 2, GTK_SHRINK, GTK_SHRINK, 0, 0 ); でButtonを登録し、 gtk_alignment_set_padding( GTK_ALIGNMENT( align ), 5, 5, 10, 10 ); で調節します。 >>648 ありがとうございます GtkAlignmentでもパディング変更できましたが GtkTableのchildrenの中の該当ウィジェットを格納した GtkTableChildのx/ypaddingを変更することでもできるようです スレッドA,BにおいてAからBを終了させるpthread_close()に相当する処理を行う方法がgtkには無い。 >>650 お役に立てずにすみません。GtkTableChildを使った方がスマートですね。 ところで、Gtk 2.0のリファレンスにGtkTableChildクラスの説明がみつからないのですが どこにあるか教えていただけませんか? Gtk 1.0のほうは見つけたのですが、Gtk 2.0の方では見つかりません 公式の3.0のリファレンスにも無いですね もしかして直接触っちゃだめなのかもと思ったけど childrenにテーブルの中身がって書いてるしヘッダみろってことなのかも ところで画面解像度の変更やテーマの変更の感知はどのイベントを 受け取ればいいのか教えてください >>654 >>childrenにテーブルの中身がって書いてるしヘッダみろってことなのかも なるほど、そういうことなんですね。 ところで、解像度の変更イベント処理はGdkScreenのsize-changedイベントで処理できます 参考URLは http://www.gtkforums.com/viewtopic.php?p=3643 です。 それとテーマの変更イベントですが、すみませんが僕にはわかりませんでした。 下記のURLによると、テーマ変更時に変化するオブジェクトのイベントを すべて監視すればいいらしいのですが… http://www.gtkforums.com/viewtopic.php?f=3&t=3829&p=10165&hilit=theme+change+event#p10165 >>655 ありがとうございます テーマの方はこんな感じでできそうですね ちょっと試してみます https://garage.maemo.org/plugins/ggit/browse.php/?p=modest ;a=commitdiff;h=5879161f031517a16b4c516e90700b647cb62b1e + g_signal_connect (G_OBJECT (instance), "notify::style", G_CALLBACK (on_notify_style), (gpointer) instance); UbuntuLinuxを使っていると、 ラブハンドルになるスクロールバーとならないスクロールバーがあるんだけど違いはなんなの? >>656 私のほうでも試して見ましたが、 それでテーマ変更イベントの検出はできるようですね。 しかし、notify::styleイベントがgtkリファレンスに見つからないw 何のイベントなんだろう? >>657 ラブハンドルになるアプリ名とならないアプリ名を書けば、 誰かが調べてくれるかも? debhelpを日本語化するプロジェクトはもう立ち上がっているのでしょうか? ttp://mugtug.com/sketchpad/ ↑これ有名なHTML5のデモだけど、 ttp://blogs.gnome.org/alexl/2011/04/18/broadway-update-3/ GTK+3.2がリリースされれば、↑こんな感じに同じ事が出来るようにのか? wktkが止まらない! cairoは死んでしまったのか… Firefoxに見捨てられ更新もほとんど無い >>664 gitのログ見たけど更新しまくってね?リリース見ても5月中にも pycairoとかcairommとかバインディング関係が更新あるしcairo自体は既に成熟期だろ それとIDが惜しい ttp://lists.cairographics.org/archives/cairo-commit/2011-June/thread.html ↑ここ見て少なく感じた。半分近くはコードでないコミットだし。 GtkDrawingArea を自分で XCreateWindow して作りたい時ってどうすればいいか教えてください。 自己解決した。 Gdk.X11Screen.lookup_visual () とか使えば、自分で XCreateWindow () する必要とかなかった。 GtkEntryCompletion のポップアップの最大高さ?を設定する方法おしえてくだしあ http://up3.viploader.net/pc/src/vlpc008412.png デフォだと↑みたいに画面の高さいっぱい一杯までスクロールバーがついたポップアップが表示されてしまいます そんな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の使い方がわからないまま 実務で開発しちゃったりしてます。 あと、ラジオボタンとか、配列可して、コールバック関数を一つに まとめる方法もわからないまま 一個一個書いてます。 とほほ read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる