X



トップページLinux
926コメント335KB

GTK+プログラミング

0650login:Penguin
垢版 |
2011/06/02(木) 12:20:53.31ID:9ZkW8466
>>648
ありがとうございます
GtkAlignmentでもパディング変更できましたが
GtkTableのchildrenの中の該当ウィジェットを格納した
GtkTableChildのx/ypaddingを変更することでもできるようです
0652login:Penguin
垢版 |
2011/06/04(土) 06:32:58.20ID:DoiP0avE
スレッドA,BにおいてAからBを終了させるpthread_close()に相当する処理を行う方法がgtkには無い。
0653648
垢版 |
2011/06/04(土) 17:42:05.97ID:lYXnt5Pq
>>650
お役に立てずにすみません。GtkTableChildを使った方がスマートですね。

ところで、Gtk 2.0のリファレンスにGtkTableChildクラスの説明がみつからないのですが
どこにあるか教えていただけませんか?
Gtk 1.0のほうは見つけたのですが、Gtk 2.0の方では見つかりません
0654login:Penguin
垢版 |
2011/06/05(日) 12:08:13.55ID:2//sPV3W
公式の3.0のリファレンスにも無いですね
もしかして直接触っちゃだめなのかもと思ったけど
childrenにテーブルの中身がって書いてるしヘッダみろってことなのかも

ところで画面解像度の変更やテーマの変更の感知はどのイベントを
受け取ればいいのか教えてください
0655648
垢版 |
2011/06/06(月) 22:48:57.79ID:Rnm0L+uO
>>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

0656login:Penguin
垢版 |
2011/06/06(月) 23:39:42.74ID:X0ciCI4s
>>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);
0657login:Penguin
垢版 |
2011/06/09(木) 00:26:33.80ID:z+T6y5Hb
UbuntuLinuxを使っていると、
ラブハンドルになるスクロールバーとならないスクロールバーがあるんだけど違いはなんなの?
0658login:Penguin
垢版 |
2011/06/10(金) 23:26:43.28ID:PqNxIzez
>>656
私のほうでも試して見ましたが、
それでテーマ変更イベントの検出はできるようですね。
しかし、notify::styleイベントがgtkリファレンスに見つからないw
何のイベントなんだろう?

>>657
ラブハンドルになるアプリ名とならないアプリ名を書けば、
誰かが調べてくれるかも?
0661login:Penguin
垢版 |
2011/06/22(水) 01:11:00.53ID:c+3U0RiB
debhelpを日本語化するプロジェクトはもう立ち上がっているのでしょうか?
0663login:Penguin
垢版 |
2011/06/28(火) 00:26:26.50ID:eerWK6Uv
ttp://mugtug.com/sketchpad/
↑これ有名なHTML5のデモだけど、
ttp://blogs.gnome.org/alexl/2011/04/18/broadway-update-3/
GTK+3.2がリリースされれば、↑こんな感じに同じ事が出来るようにのか?
wktkが止まらない!
0664login:Penguin
垢版 |
2011/07/01(金) 01:05:56.23ID:GKt7GreK
cairoは死んでしまったのか…
Firefoxに見捨てられ更新もほとんど無い
0665login:Penguin
垢版 |
2011/07/01(金) 01:22:39.19ID:qaXNzYOT
>>664
gitのログ見たけど更新しまくってね?リリース見ても5月中にも
pycairoとかcairommとかバインディング関係が更新あるしcairo自体は既に成熟期だろ
それとIDが惜しい
0666login:Penguin
垢版 |
2011/07/03(日) 08:27:55.42ID:xZFICtED
ttp://lists.cairographics.org/archives/cairo-commit/2011-June/thread.html
↑ここ見て少なく感じた。半分近くはコードでないコミットだし。
0667login:Penguin
垢版 |
2011/08/01(月) 00:38:35.73ID:rgARQ4qL
GtkDrawingArea を自分で XCreateWindow して作りたい時ってどうすればいいか教えてください。
0668login:Penguin
垢版 |
2011/08/02(火) 00:30:46.57ID:px2Xwp7s
自己解決した。
Gdk.X11Screen.lookup_visual () とか使えば、自分で XCreateWindow () する必要とかなかった。
0669login:Penguin
垢版 |
2011/08/22(月) 09:44:31.31ID:56fggY27
GtkEntryCompletion のポップアップの最大高さ?を設定する方法おしえてくだしあ
http://up3.viploader.net/pc/src/vlpc008412.png
デフォだと↑みたいに画面の高さいっぱい一杯までスクロールバーがついたポップアップが表示されてしまいます
0670login:Penguin
垢版 |
2011/08/22(月) 12:32:55.24ID:GUjzssRW
そんなAPIは無いように見えるから
どうしても欲しければ自力でGtkEntryCompletion相当のコードを書くことになるのかなぁ
0671login:Penguin
垢版 |
2011/08/23(火) 10:55:05.34ID:fF4RpR06
>>670ありがとうございます。
_GtkEntryCompletionPrivate構造体の定義がわからないので諦めました
0672login:Penguin
垢版 |
2011/08/24(水) 18:38:06.52ID:CLJ7sudj
g_signal_connectでコールバック関数に渡せるデータって一つしかないですよね
でもどうしても複数のデータを渡したい時ってどうするんですか?

例えば,main関数内でエントリーが3つとボタンがあって,
ボタンを押したら3つのエントリーに入力されている文字列をg_printで出力する場合とか

初歩的な質問かもしれないけど,お願いします
0673login:Penguin
垢版 |
2011/08/24(水) 18:57:38.20ID:tAkTiKbP
>>672
構造体とか使って渡したいデータを1変数にまとめて、
コールバック関数にはその構造体のポインタ渡すのはどうかな
http://pastebin.com/UXyRbuJf
0674login:Penguin
垢版 |
2011/08/24(水) 19:04:11.50ID:CLJ7sudj
>>673
ありがとうございます

やっぱりそれしか無いですか...
なんで可変じゃなくてわざわざ一個だけなんだろうなあ
0675login:Penguin
垢版 |
2011/08/24(水) 19:10:25.09ID:tAkTiKbP
自分でラッパー書いて、可変引数版のg_signal_connectを自由につくってもいいのよ〜

一般的に複数引数渡すよりポインタ1個渡す方が効率的、と考えられてるんじゃないかな
普通は渡したいデータの型も文字列だけじゃないだろうし、Cだと型が予測できない可変引数を処理するのは面倒だと思う
0676login:Penguin
垢版 |
2011/08/24(水) 19:20:10.95ID:CLJ7sudj
>>675
調べてみると可変引数って色々問題あるんですね,知りませんでした
ラッパーって言葉も今知りました

勉強になります
0677login:Penguin
垢版 |
2011/08/24(水) 19:40:28.68ID:fAbet21j
>>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)でとれる名前を確認しながら扱う

三通り思いつきました、どうでしょうか?
0678login:Penguin
垢版 |
2011/08/25(木) 00:14:37.53ID:IvAnECIo
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箇所がエラーになってしまいます。
だれか解決してください。
0679login:Penguin
垢版 |
2011/08/25(木) 07:33:21.51ID:3JebkG67
3.0の方針として、直接メンバー変数にアクセスしない事になったんで、
それぞれ、set_window, get_window みたいなアクセサ経由に変更すればOK
0680login:Penguin
垢版 |
2011/08/25(木) 08:20:25.79ID:Yioj7fNN
>>678 下記サイト 中段 "GdkDrawable is gone" によると
「GTK+3において GdkDrawable,GdkPixmap,GdkImage は削除された。代わりに cairo_surface_t,GdkPixbuf を使え」
とあります。承知の上での質問でしたらすいません
http://developer.gnome.org/gtk3/3.1/ch25s02.html
0681login:Penguin
垢版 |
2011/08/25(木) 15:58:01.07ID:67oz2wuj
>>677
GHashTableを使うのが一番楽そうですね
参考になりました,ありがとうございました
0682login:Penguin
垢版 |
2011/08/26(金) 09:59:15.55ID:lIEWgrKL
dat復帰しろ
0683login:Penguin
垢版 |
2011/08/26(金) 18:45:59.14ID:miWeYAjd
>>679,680
どうやらgtk+3は描画の高レベル部分をcairoに置き換えたがってるようなので、
素直にgdkによる描画をcairoで書きなおすことにします。
0685login:Penguin
垢版 |
2011/08/30(火) 03:41:36.85ID:KLnazqo8
GTK+2で使用可能な2D plotterにはどんなものがありますか?

GTK+3にも移行できそうなものでオススメがありましたら教えてください
0686login:Penguin
垢版 |
2011/08/30(火) 10:24:20.53ID:5PScM+cr
あんたの言う「2D plotter」とは何なのかをもうちょっと調べなさいよ
「大判プリンター」で目的に合うならこちらを勧めるよ
どうしてもプロッターならその理由が判らないと始まらないし
GTK関係ない話にもなる
0687login:Penguin
垢版 |
2011/08/30(火) 10:55:15.61ID:9Gn96LUV
ベクトルDrawとかのライブラリの亊じゃね?
gnuplotとかmatplotとかそういうの。
わからい人にはグラフ書くライブラリって言ったほうがいいのかな?
0688login:Penguin
垢版 |
2011/08/30(火) 11:18:58.63ID:KLnazqo8
仰る通りライブラリのことです、GUIプログラミングのスレでの発言ですからね
それじゃ調べたものを書きますね
・plplot5.9.6
 古い環境を意識してるのか8-bit色制限?cairoが普通に扱えて且つPostScriptも吐けて好印象
 ただ関数群が使いにくい印象
・GtkExtra3.0.1(beta) の GtkPlot
 こちらはdemoを動かしただけですが若干もっさり描画?
 cairoすらwrappingしてるからからか?

他にあればそれも検討してその上で使うものを決定したいのです
0689login:Penguin
垢版 |
2011/08/31(水) 00:52:22.06ID:n3SEIKnI
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とかどうかな日本の人だよ名前から判断すると
0690login:Penguin
垢版 |
2011/08/31(水) 15:52:48.56ID:STiWeB5m
>>689
ありがとうございます。出来ればCで使えるGTK+のwidget又はcairo_tに描画できるものでお願いします。。
グラフの枠,軸ラベル,グラフ自身,凡例
これらを書ける関数が用意されてると嬉しいです。cairoでガリガリ書く奴はgnome-system-monitorを参考にして
書きましたが何か違うなと感じました、「もっと楽できるものあるだろう」と

Rって言語は初めて知りました。R-devel入れてみましたが GtkDrawingAreaやcairo_tに書く方法が判らず断念しました
pychartはpython使う時は使ってみようと思います
0691login:Penguin
垢版 |
2011/09/06(火) 20:57:43.09ID:JODXyz/L
gtk_image関連で、プログラム内でファイルを指定して画像を用意する関数はありますか?
gtk_image_new_form_fileなどのように起動するときに指定するのではなく
プログラム内で指定したいのです
0692login:Penguin
垢版 |
2011/09/06(火) 21:09:41.30ID:h7bDDi3V
get_image_set_from_file
0693login:Penguin
垢版 |
2011/09/06(火) 23:45:05.53ID:JODXyz/L
>>692
すみません、それの具体的な使い方を教えてもらえないでしょうか?
その後に続く()の中には何を入れればいいのでしょうか?
devhelpを見ましたが、書いてある通りに入れるとコンパイルエラーが出ます

gtkwidget *image;
image = gtk_image_set_from_file (GtkImage *image,
                    const gchar *filename);

↑の*filename のところにファイル名を入れるのでしょうか?例えばaaa.png等
*imageのところも何か入れるのでしょうか?
0694login:Penguin
垢版 |
2011/09/07(水) 00:10:39.05ID:OQwTGmux
gtk_image_new_from_fileでなんでだめなの
0695692
垢版 |
2011/09/07(水) 00:54:07.56ID:QF3RPTD4
>>693
get_ じゃなくて gtk_ ね。俺の書き間違い


ttp://wingtk.sourceforge.net/ishan/sliders.html
ページ内で gtk_image_set_from_file で検索して
0696login:Penguin
垢版 |
2011/09/07(水) 01:59:10.86ID:T6UTzAz+
>>693
gtk_image_set_from_file()使ってjpegでぱらぱら漫画作った
git clone git://git.pf.sourceforge.jp/gitroot/k/ke/kemeco/parapara_manga.git

いっしゅのモーションJPEGwww
0697login:Penguin
垢版 |
2011/09/07(水) 11:01:37.48ID:s/CIYWHm
>>696
何かの折にヘッダファイルとして使わせてもらいます
0698login:Penguin
垢版 |
2011/10/03(月) 10:40:33.28ID:DltdAdh6
>>696さんのリストを一部改変してボタンを押されたら次の画像を表示するというふうにしたいのですが
上手くいきません
ボタンのシグナルコネクトをflipという関数に接続したのですが
関数が反応してないようです
どうすればいいか教えてください
改変したリストです↓
http://www1.axfc.net/uploader/Sc/so/280374.c
0700login:Penguin
垢版 |
2011/10/04(火) 05:43:43.88ID:OMJjY+ZZ
>>700
ちょちょと換えてみたから見てみて
http://www1.axfc.net/uploader/Sc/so/280675.c
devhelpってヘルプビューア入れて GtkButtonの説明読むのおすすめ
「The "clicked" signal」 てとこにclickedシグナルハンドラのシグネチャが書いてあるよ
>>699が元々書いてたハンドラとシグネチャが一致してなかったみたい

それと初回クリック時の画像ファイルインデックスは0番じゃなくて1番にしといた
0701login:Penguin
垢版 |
2011/10/04(火) 05:45:48.43ID:OMJjY+ZZ
指示レス番まちがえたけど  訂正しねーよ!(我が家杉山)
0702login:Penguin
垢版 |
2011/10/04(火) 12:32:09.76ID:VseFFwAj
>>700
動きました、どうもすいません
0703login:Penguin
垢版 |
2011/10/04(火) 22:44:16.96ID:OMJjY+ZZ
謝る必要はこれっぽっちもないけど
「動けばいい」とかいう低い志は捨てようや
0704login:Penguin
垢版 |
2011/10/17(月) 00:11:29.94ID:OFrElfAX
ボタンを押されたときに、シグナルコネクト先を変更したいのですが
if elseで分岐させてみたのですが上手くいきません。(最初に通過した設定がそのまま残って変更出来ない)
ボタンを押されたら、シグナルコネクト先を変更するにはどうすればいいのでしょうか?
0705login:Penguin
垢版 |
2011/10/17(月) 03:57:34.59ID:jBv5AccH
>>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番目の案で記述しました。書き方はいろいろあります
0706login:Penguin
垢版 |
2011/10/17(月) 17:36:59.12ID:OFrElfAX
>>705
ご親切にありがとうございます
解読してみます
0707login:Penguin
垢版 |
2011/12/26(月) 12:41:35.30ID:Jg1bu6au
GTKとcarioとpangoの関係を教えて下さい
0708login:Penguin
垢版 |
2011/12/27(火) 02:22:40.60ID:4qSP4mDf
なんと、全部文字数が奇数です。
0711login:Penguin
垢版 |
2012/03/13(火) 23:30:30.92ID:XEqUJYrf
ぼくもつくろっと。
0714login:Penguin
垢版 |
2012/03/25(日) 09:54:04.27ID:1P7W2wf1
>>713
>どれだけ高速化されたかが気になる

cairoで何をしようとしてるの?
0715login:Penguin
垢版 |
2012/03/25(日) 18:58:57.29ID:3RGnGf+l
何をしようとしてるかが関係あるの?
0716login:Penguin
垢版 |
2012/03/25(日) 21:27:14.92ID:rI7Awxch
正直に白状するが、
glageのuser dataの使い方がわからないまま
実務で開発しちゃったりしてます。
0717login:Penguin
垢版 |
2012/03/25(日) 21:35:56.39ID:FgoOLGO6
あと、ラジオボタンとか、配列可して、コールバック関数を一つに
まとめる方法もわからないまま
一個一個書いてます。
とほほ
0718login:Penguin
垢版 |
2012/03/28(水) 08:35:06.02ID:ThQeaUjt
EmacsとかVisual Studioみたいなマルチストロークのキーバインドって
GTK+でできますか?
0719login:Penguin
垢版 |
2012/03/28(水) 11:02:58.95ID:he0UMBAC
GTK+はEmacsで使われています
0720login:Penguin
垢版 |
2012/03/28(水) 20:02:18.92ID:ThQeaUjt
GTK+はEmacsではキーイベントの処理に使われていません
0722login:Penguin
垢版 |
2012/03/29(木) 22:20:44.47ID:GJB1hQRo
cairoが高速化ってことはeclipseも早くなるのかね
0723login:Penguin
垢版 |
2012/03/29(木) 22:37:41.77ID:CN8scaWa
anjutaを使ってみたところ
gtk_signal_connectだと警告なしでコンパイルできるのに
g_signal_connectだと暗黙的関数宣言のエラーになるんですが
どうやったら直せるでしょうか?
0724login:Penguin
垢版 |
2012/04/02(月) 18:01:59.91ID:BFIgJvs2
どんな呼び方したのか書いてくれなきゃわからん
一番いい解決方法は DevhelpっていうGUIヘルプビューワ入れて g_signal_connectの説明読むこっちゃ
ver.も気にせずに例を書くとシグネチャ違うみたいだねそれが一番幸せになれる
0726login:Penguin
垢版 |
2012/04/15(日) 02:03:04.26ID:Z1/ZfeAU
threadやmutex関係もgtk_の方は廃止になって、g_の方のみになった。3。0あたりから
基本的な関数はglibに集約して、ツールキット的な関数のみgtk 3で担当するように住み分けされた
コンパイルの最中に廃止された関数と表示がでるソースは、いずれソースを書き換えないとビルド不能になる
ちなみに最も基本的なlibcでも現在開発ラインの最新版だとgetsが本当にソースから廃止されてるので、getsが使われてるソースをビルドできなくなってる
0727login:Penguin
垢版 |
2012/04/15(日) 08:43:51.29ID:khsJyTTq
ガチで使えないキット(GTK)
0729login:Penguin
垢版 |
2012/05/03(木) 19:08:20.54ID:2lAo9jqg
フォントサイズって10.5ptとか小数点で設定できる?
0730login:Penguin
垢版 |
2012/05/04(金) 06:17:57.12ID:phIzEGLj
フォントサイズの指定方法がわかってて
小数点の指定ができるかって疑問なら
やってみて自分で確認すりゃいいのに。
0731login:Penguin
垢版 |
2012/05/04(金) 11:44:12.10ID:LzE47Zaa
型がguintみたいだが
0733login:Penguin
垢版 |
2012/05/09(水) 14:47:56.27ID:M8lWcVDx
Gtk.TreeView.Selection.Mode = Gtk.SelectionMode.Multiple;
に変更すると得られるGtk.TreeIterがおかしくなってしまう
のですが、Multipleの時はSelection.GetSelectedは使えない
のでしょうか?
0734login:Penguin
垢版 |
2012/05/15(火) 22:46:57.21ID:PyXbSQll
Gtk.Label page_label = new Gtk.Label (title);
page_label.KeyReleaseEvent += delegate {
Console.WriteLine("!"); //←呼び出されない理由を説明してほしい!
};
0735login:Penguin
垢版 |
2012/05/16(水) 07:38:42.69ID:1Jlqt6RC
gtk_widget_set_events()
0736login:Penguin
垢版 |
2012/05/16(水) 21:45:01.79ID:oMuQxzgz
GTKは親切ではないなーと楽をしてきただけに思いますw

>>735
ありがとうございます
しかし、それらしいのが見つかりません
0737login:Penguin
垢版 |
2012/05/23(水) 21:46:04.65ID:jdgnkMvj
GTKのGUIは更新をサボる癖があるようですが
無理やり更新させる方法はないでしょうか?
0738login:Penguin
垢版 |
2012/05/23(水) 21:50:35.79ID:jdgnkMvj
更新するWidgetを間違えてた!
解決
0739login:Penguin
垢版 |
2012/06/08(金) 19:02:58.11ID:BmPo410Y
Gtk-CRITICAL **: IA__gtk_main_quit: assertion `main_loops != NULL' failed

メインループ内でGtk.Application.Quit ();を呼ぶなって事だろうけど
終了させる方法はないのでしょうか?
0741login:Penguin
垢版 |
2012/06/09(土) 03:50:44.00ID:xIQyunsc
gtk_main_quit()のソースコードを読めば解決。
0742login:Penguin
垢版 |
2012/06/10(日) 07:41:42.40ID:NypXeHdm
>>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で以前と同じ動作になるらしい
0743login:Penguin
垢版 |
2012/07/04(水) 15:28:28.70ID:RZglH82u
from gi.repository import Gtk
0744login:Penguin
垢版 |
2012/08/07(火) 21:52:39.08ID:4kcOLz8m
このスレ的にはGTKのものをそのまま叩くっていうのは危険なこと?
0747login:Penguin
垢版 |
2012/08/09(木) 09:21:30.12ID:n/9/m8Sd
え?ラッパーライブラリを介さず直接コールするって意味じゃないの?
レスを投稿する


ニューススポーツなんでも実況