GTK プログラミング!!at LINUX
GTK プログラミング!! - 暇つぶし2ch607:login:Penguin
04/12/09 04:27:08 R51KLcmk
>>606
Gtk2に対応してる日本語本ってあるの?
あるなら折れも欲しい。

>>605
CとWin32APIを好き勝手できるのなら
URLリンク(www.gnome.gr.jp)
ここを一通り見てみるのもそう苦じゃないと思う。
GTK+以外のところ、つくりたいものの根っこの処理なんかは
システムコールとか解説してる本を一読しておく必要があると思うが、
そういう本はわりと見掛ける。
ガンガレ!

608:603
04/12/09 12:34:15 wvxh3lvA
>>604
ありがとうございました。おかげで解決できました。

609:login:Penguin
04/12/09 23:37:09 8bxaruuu
>>606
>>607
ありがとうございます。参考にします(´・∀・`)

610:login:Penguin
04/12/17 15:43:49 +/93qx7Y
gtk+ 2.6.0

611:login:Penguin
05/01/10 02:06:52 W1Pzi+ZV
ショートカットとして "Shift+Ctrl+a" というキーを割り当てるには
どうすればよいでしょうか?

gtk_widget_add_accelerator の第5引数に
GDK_SHIFT_MASK|GDK_CONTROL_MASK
というように指定しても、コンパイルで
invalid conversion from `int' to `GdkModifierType'
と怒られてしまいます。

612:login:Penguin
05/01/10 03:15:43 lP2Bwze9
URLリンク(equis.ya.com)

613:login:Penguin
05/01/28 21:39:23 fhQu+EL0
 Linux上でGtk+2アプリケーションのWindows実行形式(*.exe)を構築する方法を
まとめてみますた。

URLリンク(win2linux.sourceforge.jp)

614:login:Penguin
05/01/31 14:32:47 nk2PSUal
>>613
おおっ!
build-cross.shを試してみようと思うのですがこれってPREFIX変えれば
rootにならなくても動きます?


615:614
05/01/31 16:16:04 nk2PSUal
>>614
>build-cross.shを試してみようと思うのですがこれってPREFIX変えればrootにならなくても動きます?
自己レス.できました.

>>613
いいっすね.スクリプトもページも勉強になりました.
感謝!


616:login:Penguin
05/01/31 21:21:11 rpwtgdcM
613ですが、libxml2とlibxsltについては、もう少し、入れ方に工夫が必要そうです。自分で
*.pcをでっちあげるというのも手かもしれませんが。ということで要研究です。

617:login:Penguin
05/02/24 14:05:33 opcJ4VYg
>>11
> こんくらいの英語がわからんよーじゃLinuxは使えんよ。

Linuxのドキュメントは英文のなかでも難解な部類に属すると思われ

618:login:Penguin
05/02/26 01:35:42 ioiQR6vn
日付の書式設定をgettextizeしようと思って、
日付の書式をstrftimeに渡す前に g_locale_from_utf8 で
utf8な文字列に変換してから渡してるんだけど、
何故か g_locale_from_utf8 が0x0な値しか返してくれません。

こんな感じの処理がしたいんだけど、
1.const で _("%B %Y") と書式を指定
2.po には "%B %Y年" と記述
3.g_locale_from_utf8 で文字コードを変換
4.strftime の format に上記を指定して日付をゲト

もしかし po で変換されて帰ってくる文字コードってutf8固定じゃないのかな??

619:login:Penguin
05/02/26 13:17:05 Rle58e5G
panedの素婦りったのサイズの取得方法をご存じの方、ご教示ください。

620:login:Penguin
05/02/28 19:03:23 QS7g1csz
>>618
bind_textdomain_codeset() で UTF-8 を指定していますか?
デフォルトでは locale encoding で返ってきます。

621:618
05/02/28 22:17:53 IaK5xt0q
>>620
ソースを見たら、bind_textdomain_codeset(EPN, "UTF-8"); となっていました。

色々試してみた結果、一旦「poに日本語訳の無い書式」を選んでおいて、
その後に「日本語訳の有る書式」に切替えると、一旦は正常に反映されるんだけど、
アプリを終了して再起動しようとすると SEGV を起こしてしまいます。

一旦は正常に動作することから、const で記述した文字列を gettextize している部分で、
メモリの確保が上手くいってないような気がしてきました。

どうやって確認したら良いんだろう…。

622:login:Penguin
05/03/01 03:22:58 4G9qSY/D
>g_locale_from_utf8 で
>utf8な文字列に変換してから渡してるんだけど、

g_locale*_to*_utf8じゃないと「utf8な文字列に変換」はできねえんでねえかい

623:618
05/03/01 19:23:49 4zQ3kAWS
>>622
ごめん。書き間違った。
(誤)g_locale_from_utf8 で
(正)g_locale_to_utf8 で

ちゃんと書くと、最初に g_locale_from_utf8 でカレントロケールに変換してから、
strftime に渡してやって、結果を g_locale_to_utf8 で再度変換してから
label を作ってます。

624:login:Penguin
05/03/03 02:17:43 g8vCaa7b
gtk でウインドウの x ボタンを押しても閉じないようなウインドウを
作るにはどうしたらいいですか?

625:login:Penguin
05/03/03 18:04:13 Gfb84io7
>>624
"delete_event" の callback 関数で TRUE を返すようにする。

626:login:Penguin
05/03/03 20:39:00 g8vCaa7b
>>625
サンクス!

627:618
05/03/03 21:48:02 Fxm/rLTz
>>623
自己レスです。

MLで聞いたら、_()マクロの代わりにN_()マクロを使えと教わりました。

結局、const 中の メッセージを const char *msg = { N_("hoege")}; に変更しておいて、
あと sprintf(str,"I am %s",msg); を
sprintf(str,"I am ");
strcat(str,_(msg));
とすればOKだった。

全然GTKに関係無かっただよ。スマソ。

628:login:Penguin
05/03/14 14:58:26 YLJBAcu4
すいません。 
Gdkのgdk_draw_polygonとかの関数で描画する図形の色を
半透明にして表示する事ってできますか?

当方FedoraCore3のGtk2.0で作成中なのですが
やり方がわからずはまっているところです。
アルファ値の設定ってどっかでできますかね???

宜しくお願いします。

629:login:Penguin
05/03/14 15:32:30 bODZhmWq
gtk2 でプログラミングしてます。
ボタンやラベルの色を個別二変更できなくて困ってます。
方法をおしえてーーーー!
それとフォントの変更も個別にできないんです。


630:login:Penguin
05/03/14 23:49:50 9KHOi9Md
>>628
libgnomecanvas使ったほうがいいかもしれない

631:login:Penguin
05/03/21 12:28:53 HsH5YBrh



632:login:Penguin
05/03/21 12:30:23 uGHm3JkC



633:再描画
05/03/24 21:33:44 K5TJHYPW
こんばんは、質問いいですか。
gtkとpthreadを使ってプログラムを作ってます。
メインスレッドはgtk_main()に行ってて、
作成されたスレッドの方でWidgetに変更を加えます。
(GTK_LABELの文字を変えたりとか)

ところが、変更した時には直ぐに結果が表れません。
マウスポインタがボタンの上に行ったり、他のソフトを起動したりすると
変更されるのですが、放置しておくとそのままーでいてます。

強制的に再描画してみようと思ってWidgetいじった後に
system("xrefresh");
してみたら思った通りに動いてくれました。

でも普通は何か別のそれ用の関数を使うんですよね。
何を使えばいいんでしょうか。


634:login:Penguin
05/03/24 21:55:49 w4FsQjjW
gdk_flush() してみるとか

635:login:Penguin
05/03/24 21:58:19 /mf/WXIK
>>633
それはスレッドにする必要があるからそうしてるのか?
gtk_main()に突入したら戻ってこないという理由だけで
スレッド化しているなら、スレッド化せずに
gtk_add_timeout使ってコールバックルーチンのほうで描画するとか。

636:再描画
05/03/24 22:05:36 K5TJHYPW
>>634
例のxrefreshしている行を
gdk_flush();
で置き換えてみました。
んー、うまくいきません。ごめん。

今、xrefreshのソースを見てみようとxfree86のソースを落としてます。
ナローバンドなので作業は明日になりそう(T-T)


637:再描画
05/03/24 22:10:39 K5TJHYPW
>>635
ちょっとtimeout使ってみて何か上手く行かなかったから
thread使ってみたんですが、
考えてみればスレッドにする程のもんでもないかも。
もう少しtimeoutで粘ってみる。
繰り返す必要が無いならidle_addの方でもいいのかな。


638:login:Penguin
05/03/24 22:32:33 ir5d0pxX
>>633
URLリンク(developer.gnome.org)

これじゃダメ?
gtk-thread.cを試したらラベルの書き換えできてるようだけど。

639:再描画
05/03/25 00:26:27 i+2vihm2
timeoutで書き直した。成功!!
と思ったら、ボタン(処理を中止するボタンつけてるの)が押せなくなってるっ!
ボタン押しを処理するべきものがお忙し中になっちゃうのかな。

折角情報いただいたのでthreadの方ももう少し粘ってみる。
なんかスレッドっていろいろあるのね。
gdk_flushを手がかりにあちこち読んでみた。
g_thread_init(NULL); を入れたら上手く行った。あれ? flushなくても大丈夫だ。

・・・なんか私、凄く馬鹿だったかも。

>>638
読んでみます。ありがとう。


640:再描画
05/03/25 00:56:18 i+2vihm2
少し訂正。

[誤] g_thread_init(NULL); を入れたら上手く行った。
[正] g_thread_init(NULL); をgtk_main(); の前に入れたら上手く行った。


641:再描画
05/03/27 20:09:54 +oexgFcZ
>>638 のページ、参考になりました。
GUIと関係ない部分での同期処理と複数のスレッドから再描画する時の
同期処理(Widgetをとりあわない様にする事)は別だったんだなぁ。

とりあえず完成しました。ありがとう!!


642:再描画
05/05/01 10:24:56 RRZjWKpR
Linuxでのプログラミング学習です。
こんな問題をいきなり授業で出題されました。
まだほとんど何もやってないので、さっぱり
意味が分かりません。分かる方がいらっしゃるなら、
回答の方教えてはいただけませんか?



f(x)=xの2乗-xy-yの2乗 について
x=-0.423 y=1 の時の値を(小数点第4位までの表示)
で求めなさい。ただし、変数x,yの値はscanf文で
入力させてください。

643:login:Penguin
05/05/01 10:31:25 ua7T6e16
>>642
板違い

644:再描画
05/05/01 10:34:34 RRZjWKpR
どこに行けばいいですか?
先ほども別の板で言われてしまいました。

645:login:Penguin
05/05/01 10:54:47 fDqSGSeJ
本屋さん

646:login:Penguin
05/05/01 11:25:35 ZutXiTEl
>>642
scanfてーからにはC言語だと思うが、プログラミングを習得する気も学習能力もないみたいなので
プログラム板の宿題丸投げスレをお薦めする。
スレリンク(tech板)

647:再描画
05/05/01 11:57:32 RRZjWKpR
ありがとうございます

648:glade勉強中
05/05/02 06:24:53 3JWzQ4cI
gladeを使用時して、コールバック関数にユーザデータとして
widgetを渡す方法を教えてください。よろしくお願いします。

現状生成されるコード: interface.c
g_signal_connect ((gpointer) button1, "clicked",
G_CALLBACK (on_button1_clicked),
NULL);

生成したいコード: interface.c
g_signal_connect ((gpointer) button1, "clicked",
G_CALLBACK (on_button1_clicked),
GTK_OBJECT (entry1));

やりたいことは、ボタンが押されたときにentry1の内容を操作することです。
mainから操作するという方法もあるのですが・・・

649:login:Penguin
05/05/02 18:23:05 PZ6xqLwA
button1 のプロパティウィンドウ出して、シグナルのところに書くだけでは?

glade はウィジットの表示見本程度にしか使ってないから、違うかも…

650:login:Penguin
05/05/04 22:53:32 6VJhx7bu
同じく勉強中ですが、
ソースのg_signal_connect()の最後のNULLを手動で書き換えるしかなさそうです。

プロパティ窓の"シグナル"の中には、g_signal_connect()のdata引数に当たる部分を
指定する欄は(バージョン2.10.0の時点で)ありませんし、
entry1を"オブジェクト"のところに書くと
g_signal_connect_swapped ((gpointer) button1, "clicked",
G_CALLBACK (on_button1_clicked),
GTK_OBJECT (entry1));
が生成されてしまいます。

651:再描画
05/05/07 00:09:31 fZ/PdFpz
>>642
何でその名で書き込みますか。
何の罠ですか。
私は>>633の「再描画」です。
同一人物に思われるじゃなかですか。勘弁してくださいよ、もう。


652:login:Penguin
05/05/07 09:25:01 wZZgaFg6
カブるのいやならトリップつけとけ。

653:login:Penguin
05/05/07 12:29:43 FaaicVGA
コテハンでもないのに、いちいちトリップ付けられるのうざい。


654:login:Penguin
05/05/07 23:39:55 lWepT/vx
えー、gladeの話に戻すとするか。

私も g_signal_connect()の最後は手動で書き換え。
>>648 の例だと NULLを単純に entry1にするかな。

interface.cは最初にgladeが生成したのから随分変更するので
ある程度コード書きが進行してからまたgladeに頼りたい時は、
別の所にコードを出力しておいて両interface.cをdiffして
ちまちま書き換えてる。


655:login:Penguin
05/05/08 00:01:51 cuTcQAVH
とりあえずのものであれば、
シグナルハンドラ(on_button1_clicked())内で
lookup_widget()を使ってentry1を取得するのもありかと。

656:login:Penguin
05/05/08 11:08:08 yrqPYh5d
もしlibgladeを使うのなら、gladeが生成するXMLファイルから
glade_xml_get_widget()でentry1を取得すればOK。
(もしくは一度glade_xml_get_widget()で取得したentry1を
glade_xml_signal_connect_data()のuser_dataとして渡す)

gladeファイルを何度も変更すると、Cソースをその都度出力してdiffを・・・と
手間がかかってしまうので、楽ができます。

657:glade勉強中
05/05/08 23:25:53 YB00BN6K
648のwidgetを渡す件ですが、
gladeが、生成する support.h 内の関数 lookup_widgetを用いて、
コールバック関数を内でwidgetを検索して取得することができました。
GtkWidget *entry = lookup_widget(GTK_WIDGET(button), "entry1");
gtk_entry_set_text (GTK_ENTRY(entry), dirname);

658:login:Penguin
05/05/28 11:21:51 o6s+/jnw
GTKについて勉強中なのですが、
HTMLのTABLEタグのような表を作成するにはどうするのが一番いいのですか。
GtkTableのうえに複数のGtkEntryを配置するのが普通?


659:login:Penguin
05/05/28 19:05:54 ALWgONN6
表示するだけ…じゃないよな
スプレッドシートっぽいのがやりたいときは専用のウィジェットがあったはず
URLリンク(gtkextra.sourceforge.net)

660:GTK初心者
05/05/29 16:11:34 8OqUCAcQ
gint mainと
int mainの
違いを教えて下さい。


661:login:Penguin
05/05/29 16:32:38 BEeLFlJy
sizeof(int)はマシンによって違うけどsizeof(gint)はどのマシンでも同じになる
が、mainをgintにすべきかと聞かれると…微妙

662:login:Penguin
05/05/29 18:20:24 8OqUCAcQ
ボタンをクリックして
そのボタンを押した数をウィンドウ上に表示させる
プログラムを教えて下さい。

663:login:Penguin
05/05/29 18:52:06 sBgcA4li
>>661
gint main()にしたらダメでしょ。
gintがint以外に置き換えられる場合はwarningになるんだから。

664:login:Penguin
05/05/29 20:08:11 y1WOFjTT
>>662

どこまでできていて、どこで詰まってるのか?


665:662
05/05/29 20:33:21 8OqUCAcQ
>>664
callback関数の
gpointer data
をどうしたらよいかわかりません。

666:login:Penguin
05/05/29 22:41:47 y1WOFjTT
>>665
ラベルに表示するならボタンのコールバックを
g_signal_connect(button, "clicked", G_CALLBACK(clicked_cb), label)
とかしといて
コールバック側で
label = GTK_LABEL(user_data)
とか受けとけばどう?


667:662
05/05/29 23:13:36 8OqUCAcQ
>>666
m(__)m
ありがとうございます。
やってみます。

668:login:Penguin
05/05/30 20:14:27 EDgWxmRU
>>659
まさに、こんなのを探していました。
ありがとう。
ダウンロードして試してみます。


669:login:Penguin
05/06/22 21:07:00 xe7y7k0v
昨日からgtk勉強してるのですがわからないことがあるので教えてください
1つのグループのラジオボタンを3つ作って、それをA,B,Cとします。
次に一つ普通のボタンを作って、
Aを選択中にこのボタンを押したらA関数が、B選択中はB関数が実行される・・
というプログラムを作りたいのですが、どのように考えればよいのでしょうか??

670:login:Penguin
05/06/22 21:16:32 qMKsIvq9
>>669
普通のボタンが押された時に呼ばれるコールバック中で、どのラジオボタンが
選択されてるか判定して・・・・、gtk の話でない気がするがどの辺がわからんのよ?

671:login:Penguin
05/06/22 21:34:03 xe7y7k0v
>>670
コールバック中に判定する方法がわかりません

自分でいうのもなんですが、基本がわかってないと思います。

672:login:Penguin
05/06/22 21:54:13 qMKsIvq9
user_data でもグローバル変数でも好きなので、
状態をいれた変数かボタンを渡す。

673:669
05/06/22 22:04:18 xe7y7k0v
もう少し考えてがんばってみます
参考書なしで、ネットで調べてやってるんですが
やはり参考書は買ったほうがいいですかね?

674:login:Penguin
05/06/22 22:10:13 qMKsIvq9
いい本ないから・・
ネットで gtk2 のチュートリアル見るのがいいと思う。

675:669
05/06/22 22:19:39 xe7y7k0v
>>674
そうですか・・・
さっきの問題は解決しました

Aを押したらint NUM=1、BならばNUM=2として
普通のボタンを押した関数のなかでNUMが1ならばA関数・・・

というようなのでいちおうできました
もっと高度なテクとかあるのかもしれませんが。。。
ありがとうございました

676:login:Penguin
05/06/23 01:50:52 jw4l769e
GTK+をいじり始めて間もない初心者なんですが少しお聞きしたいことがあります。
ビデオキャプチャプログラムのようなものを作っていて、キャプチャした画像を
pixbufに突っ込んでリモートのXクライアントで表示する場合、リアルタイム(30fps)での
表示がキツイです。画像データを圧縮して転送するオプションみたいなものはありませんでしたでしょうか?

677:login:Penguin
05/06/23 02:58:12 jw4l769e
説明が足りてない気がするので補足。
GTKはver1.2です。リモートではない場合、描画は2ms程度で終りますが、
リモート(LAN内)では30ms前後かかり、他の処理を含めるとリアルタイム表示(33ms)は
微妙に無理といった感じです。
画像は320x240、24bitRGB、毎秒30枚と考えると、無圧縮では最低でも7MB/sもの
帯域が必要な計算になります。圧縮できるようなことをどこかで見た気がするのですが
気のせいでしょうか??改めて探してみたのですが見つかりません。

678:login:Penguin
05/06/23 20:12:38 MHRUW0Sb
gtk 関係ないんじゃないの?
7MB/s ってことは RGB 生データ?それならなおさら gtk 関係ない気がするが。


679:676,677
05/06/25 21:14:27 O58VWF1R
>>678
7MB/sは生データですよ。30msってのはキャプチャにかかる時間を除いた、
表示(ネットワーク転送含む)するのにかかる時間ですので少なくとも
X関連であることは間違いないです。
自マシンで表示する場合はわずか2ms程度で表示できることからも明らかです。

680:login:Penguin
05/06/26 00:23:14 bkhj+VqI
textviewで選択範囲の指定はどうすればよいのでしょうか? 選択範囲の取得の方は

gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);

で、出来るようですが。ちなみにやりたい事はある地点1から地点2までの範囲の文字列をクリップボードに記憶する事です。

681:login:Penguin
05/07/05 04:57:38 0YaxXABQ
gtk2.0 C言語にてプログラムを作っているのですが行き詰まってしまいました。
メニュー専用の関数を作り、トップレベルウィンドウのウィジットを渡してメニューを生成しているのですが、
その関数の中でメニューのあるアイテムが押されたときのコールバックとして、リストのアイテムやラベルの文字列等を
変更したいと思っています。
ラベルやリストなどのウィジットの取得方法がわからないのですがいい関数ありませんでしょうか?
ご教授よろしくお願いします。

682:login:Penguin
05/07/05 05:09:08 0YaxXABQ
訂正です
トップレベルウィンドウのウィジットを渡して

メインで宣言したメニューバーウィジットのポインタを渡して

ウィンドウのウィジットはlookup_widgetやget_widget関数が使えないか
試したときの名残でした。

683:login:Penguin
05/07/15 04:16:09 pWVHLMqz
 

684:login:Penguin
05/07/19 23:31:34 Kq6OqZbu
2.6からGtkMessageDialogは2行で書くことを強要するようになったのか・・・orz

685:login:Penguin
05/08/14 11:45:43 hCW5GrPA
GTK+-2.8.0 release age

686:login:Penguin
05/08/14 22:13:25 k5rVKxDc
>>685
描画にcairoを使ったやつだな。安定してるのかな?


687:login:Penguin
05/08/14 22:23:45 i3voTSGN
>>686
さあ。CairoもGLIBもPangoもうまくいったんだけど、
GTKのmakeが途中で失敗して試せず…

688:687
05/08/15 15:49:57 w6RYEsxj
できた。
>>686
安定してるとはおもうよ。今のところ怪しい挙動はしてないし。
あと、ColorChooserがきれい(;´Д`)。

689:login:Penguin
05/08/21 12:44:35 K7D1YFrD
現在、Redhat9.0でX-Windowのプログラミングを
行っています。

質問内容

マインスレッドから子スレッドを生成しました。
子スレッドの中のfor()文でミリ秒単位(もしくは、それ以下)
のデュレイ(sleep()の処理)を入れたいのですが、
実現方法がわからない状況です。

C言語の関数かX-Windowの関数で実現
方法をご存知の方がいましたら、アドバイス
お願いします。

690:login:Penguin
05/08/21 13:38:31 HFufZyw/
usleep()

691:login:Penguin
05/08/21 13:48:07 K7D1YFrD
>>690

有難う御座います。
usleep()確認致しました!

昨日から悩んでましたが、これで解決しました。
感謝感謝 <(_ _)>(本当に有難う御座います。)

692:login:Penguin
05/08/24 15:36:40 ONHXEom6
Gtk 1.2で質問です。
CListのある行が表示領域の中か外かはわかるんですが、
その行が表示領域より上なのか下なのかを判別する方法はありますか?

693:login:Penguin
05/08/24 15:45:04 UhWJrWdj
>>692
もう1.2は捨てろや。

694:login:Penguin
05/08/24 16:27:17 ONHXEom6
1.2で不可能なら乗り換えますので…

695:login:Penguin
05/08/24 18:34:08 I9lXJq9H
>>692
先頭からなめていけばできるんじゃないか?
と CList を全然使ったことないオレが言ってみる。


696:login:Penguin
05/08/25 00:07:52 hGqCOotH
みんなエディタどうしてる? Emacs?
KDevelopとかEclipseとか統合環境ってやっぱ便利かな?

697:login:Penguin
05/08/25 01:16:12 fP3EQi3h
>>694
CListは2.x以降では使うべきでないウィジェットなので、調べるだけ無駄。


698:login:Penguin
05/09/01 19:10:40 q3rS4hWe
GTK2.0のプログラミングを始めるにあたって、
「ここ見て勉強しる!」っていうWebはありますか?

699:login:Penguin
05/09/01 21:26:59 rC80u0pE
本家のチュートリアルを流し読んだら、
・チュートリアル
・API リファレンス(gtk,glib)
・ソース
・ソースに付いてるサンプルコード(gtk-demo が特にいい)
の4つを何時でも読めるようにローカルのハードディスクに入れて、後は実戦。



700:login:Penguin
05/09/01 21:37:27 l0ibWz2e
>>699
本家のチュートリアルが、既に腐ってるという問題がw

701:login:Penguin
05/09/06 18:45:02 dEt8CCEg
ソースを読めば理解しあえる
それが本物のプログラマーだ

702:login:Penguin
05/09/06 23:46:36 P14C2zmG
>>701
幻想だ。ほかのやつが書いたソース読んでもむかつくだけ。

703:login:Penguin
05/09/07 00:48:45 Ow0LlqqK
半年前に自分が書いたコードが全然理解できません。

704:login:Penguin
05/09/20 00:43:03 W0eobZlU
>>703
ちゃんとコメント書いとけ

705:login:Penguin
05/09/20 00:55:32 txdQkjKa
そこで文芸的プログラミングですよ

706:login:Penguin
05/09/20 18:01:07 Vs5i3O4n
gtk+-1.2.10 って最近の gtk+-2.x より重くて不安定なの?

707:login:Penguin
05/09/21 15:17:22 rr1Fmfwx
1.2.10のほうが軽いけど、機能的にかなり劣るしクラッシュを起こすような
大きな不具合もいろいろ存在する。

708:login:Penguin
05/09/26 18:08:58 DNEXEhTN
★~彼方の願い星~★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くなって、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回ってますが、これは本当です!!
これが本物の、初代HAPPYメールです♪

709:login:Penguin
05/10/03 03:44:59 CJIUV5JW
質問です。
GtkComboBox (=ドロップダウンリスト)の

gchar* gtk_combo_box_get_active_text (GtkComboBox *combo_box);

が返す文字列って、GtkComboBox が内部で持っている文字列のポインタそのものなんでしょうか。
だとしたら、文字列の中身をいじっちゃいけないですよね。
もし、新たに別なコピーを作って渡してくれているとしたら、使い終わったときに g_free()
してあげるべきだと思うんですけど、どっちなんでしょう。

環境:FreeBSD5.4 gtk+2.6.10

710:login:Penguin
05/10/03 04:06:14 ddKsBqfZ
>>709
Returns : a newly allocated string containing the currently active text.
だから、コピーが返ってくる。
GTK+ではコピーでない文字列が返ってくる関数は返り値の型として
G_CONST_RETURN gchar *を使っていると思ってよい。

711:login:Penguin
05/10/20 00:48:02 gcr1pUQn
現在、SUSELINUX10.0を使っています。これからGTK+でプログラミングを始めようと
考えているのですが、初心者レベルの参考書かWEBページを教えていただけませんか?。

C言語は理解できるのですが、GTKのコンパイルの仕方とか全くわからない者です。

やりたいことは、ベクトルデータを読み込んで、ウィンドウ上に線や円を描きたいのです。

宜しくお願いします。

712:login:Penguin
05/10/20 01:56:33 uIaqifFq
>>711
URLリンク(www.google.co.jp)

713:login:Penguin
05/10/20 02:28:11 gcr1pUQn
>>712

昔、アテナウィジェットでプログラムを組んだことがあるので、理解ははやいです。
ありがとうございました。

714:login:Penguin
05/10/25 10:18:40 5uMbs+gQ
GtkButtonを使ったボタンを通常より立体的にしたいのですが、
リソースを設定するだけで可能なのでしょうか。

715:login:Penguin
05/10/25 13:25:22 IfftLXnr
GTKはリソース使いません。

716:login:Penguin
05/10/25 13:45:08 6LKQFPf8
>>715
.gtkrcはリソースファイルって言わないの?

717:login:Penguin
05/10/25 14:02:11 5uMbs+gQ
>>715
Reference Manual に Resource File の章があるんですけど。

718:login:Penguin
05/10/25 17:22:31 m1tx75Sl
gtk+-2.0をインストールしたいのですがうまくいきません。

pkageconfig,glib,atkをmakeしたあと
pangoをコンパイルしたのですが
fontconfigがないとのエラーが出ました。

fontconfigをダウンロードしたのですが、以下のようなエラーが出て
コンパイル出来ません。
どうすればいいのか、アドバイスをお願いします。

../fontconfig/fcfreetype.h:27 から include されたファイル中,
../src/fcint.h:39 から,
fc-lang.c:25 から:
/usr/local/include/freetype2/freetype/freetype.h:20:2: #error "`ft2build.h' hasn't been included yet!"
/usr/local/include/freetype2/freetype/freetype.h:21:2: #error "Please always use macros to include FreeType header files."
/usr/local/include/freetype2/freetype/freetype.h:22:2: #error "Example:"
/usr/local/include/freetype2/freetype/freetype.h:23:2: #error " #include <ft2build.h>"
/usr/local/include/freetype2/freetype/freetype.h:24:2: #error " #include FT_FREETYPE_H"
make[2]: *** [fc-lang.o] エラー 1
make[2]: Leaving directory `/usr/local/src/fontconfig-2.2.0/fc-lang'
make[1]: *** [all-recursive] エラー 1
make[1]: Leaving directory `/usr/local/src/fontconfig-2.2.0'
make: *** [all-recursive-am] エラー 2


719:login:Penguin
05/10/25 18:47:16 cgJQeaf4
freetype2インストールしてある?

720:login:Penguin
05/10/25 22:24:06 j8mKOjPp
コンパイルエラーの意味がわからないなら、
rpmとかdebとかのをインスコしろよ

721:login:Penguin
05/10/26 00:25:02 0UU6o7oS
Geany is a text editor using the GTK2 toolkit with basic features of an IDE.
URLリンク(geany.uvena.de)

722:login:Penguin
05/10/26 01:50:52 fACOIYn1
java-gnomeとかgnoclとかいじってる奴っておらん?
もうちょっと盛り上がれこのスレ。

723:login:Penguin
05/10/26 10:45:30 J1h3yCQS
>>718
URLリンク(www.kde.gr.jp)
要するに該当ファイル中の
#include <freetype/freetype.h>

#include <ft2build.h>
#include FT_FREETYPE_H
に直せばよい。

724:login:Penguin
05/10/26 20:04:52 7wGr95kq
>>722
java-gnome vs gtk#とかおもしろそう。

725:login:Penguin
05/11/26 16:49:49 QuE9fj5+
GTK+2.0以降 で GDK Imlib を使う方法はないもんでしょうか。

726:login:Penguin
05/11/29 01:33:56 NZ7bfDmC
UIManagerでMenuToolButtonを扱うにはどうすればいいのでしょうか?

727:login:Penguin
05/12/05 17:09:52 yTnWD7jY
GtkTextViewで質問があります。

ウィンドウにメニューバーとテキストビューをのせています。
横スクロールバーはなくし、長文を折り返して表示させたいのですが、
ウィンドウが勝手に広がってしまいます。
また、ウィンドウを狭くしようとしても、狭くできません。(マウス操作で)


728:login:Penguin
05/12/05 18:04:47 BtGpeGNp
>>727
gtk_text_view_set_wrap_mode()

729:login:Penguin
05/12/07 12:30:25 /q9zEwb5
>>728
レスありがとう。
ワードラップ効かすと折り返しが妙なとこでされちゃうので、NONEにしてます。

具体的には、空白9つのあとに数字を記述した行と連続した文字の行で、表示位置がズレてしまうので。

1 2 3 4 5 6 7 8 9
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890


730:login:Penguin
05/12/07 12:37:34 /q9zEwb5
>>729

1 2 3 4 5 6 7 8 9
ありゃ、先頭に空白いれたつもりが...


それからGtkTextViewのかわりにVTE を使って、どうように表示できるようにしてみたのですが、
表示自体はうまくいけそうだったのですが、ウィンドウのリサイズで内容を書き換えてくれないし、
なにやら Gdk-CRITICAL が出力されてます。

[vte:xxxxx]: Gdk-CRITICAL **: gdk_gc_get_colormap: assertion `GDK_IS_GC (gc)' failed


因に SuSE 10.0 使ってます。


731:login:Penguin
05/12/07 13:32:02 uBfmckMe
>>727
以前、狭くできなくて悩んだ時は textview に gtk_widget_set_size_request で
適当なサイズを入れて狭くできるようになった。

理屈はわからないけど

732:login:Penguin
05/12/07 17:02:44 /q9zEwb5
>>731

ご教授いただきましたように、
gtk_widget_set_size_request (GTK_TEXT_VIEW(text), 100, 75);
と一行、適当(値も適用)に入れてみました。
確かにウィンドウのリサイズができるようになりました。

ただ、折り返して表示してくれないのでorz。

今は、VTEで作業してます。


733:login:Penguin
05/12/07 17:20:33 gfGZYrS3
>>732
お前が折り返しをしないように設定してるからだろ。ちっとは頭を使え

734:login:Penguin
05/12/07 17:38:00 /q9zEwb5
>>733
ワード・ラップとは、ある単語が一行で完了しない場合に、(単語の区切りを意識して) 強制的にその単語を次の行に移動して表示する機能をいいます。

単語の区切りを無視してくれるようにはできないですよねぇ...


735:login:Penguin
05/12/07 18:02:40 gfGZYrS3
>>734
GTK_WRAP_CHAR
リファレンス嫁

736:login:Penguin
05/12/08 10:11:26 NkHarRL9
>>735
GTK_WRAP_CHAR にもしたが、へんなとこで改行されてしまうんだけれど...

リファレンス嫁んorz


737:login:Penguin
06/01/28 06:10:36 y31wlGaX
URLリンク(pcmanfm.sourceforge.net)

738:login:Penguin
06/01/28 13:29:29 amWZrwNv
>>736
ここでゴチャゴチャ訊いてるより自前でやってしまう方が早いと思うが

739:login:Penguin
06/02/08 12:18:47 EWHkI7FI
コマンドライン引数で `-' を渡したいんですが、gtk_init() で `-' は取り除
かれるみたいですね。
なんか回避方法とかありますか?
やっぱ gtk_init() の前で一旦引数をパーズするしかない?


740:login:Penguin
06/02/08 20:36:38 CYm40DFq
慣習としては -- をおいてオプションと引数を区別するんじゃないか。
GTKが対応してるかどうかは知らんけど。

741:login:Penguin
06/02/08 23:26:08 EWHkI7FI
>>740
うーん、オプションとして `-' を渡したかったんですけどね。`-file -' で
標準入力からデータを読む、みたいな。とりあえず gtk_init() の前で捕捉す
ることで逃げました。

ちなみに `--' には対応してるみたい。試してみたら `--' の後の `-' は
gtk_init() を通過してきた。


742:login:Penguin
06/02/19 15:58:57 P101Qt/X
シグナルの発行ってどうやるの?

743:login:Penguin
06/02/20 13:14:52 OBEFgOmS
g_signal_emit()

744:login:Penguin
06/02/21 01:18:20 OjKUo/jf
コールバック関数の中でブロッキングする処理があるんですが
ウインドウ上のボタンを押されたらキャンセルさせたいです。

でもコールバック関数がブロッキングしてたらgtk_main()に返らない
のでキャンセルボタンには反応できないんでしょうか?
解決方法をご存じの方がいらっしゃいましたら教えてください。


745:login:Penguin
06/02/22 00:35:56 DgPvEyu9
>>744
よくわからんが、長時間かかる処理をキャンセルできるようにしたいということか?

gtk と関係ないがスレッドとかどうよ?


746:744
06/02/22 22:32:46 s0bZ0aZZ
うーん、スレッドでもいいんだけど割り込み処理みたいなこと
できないかなぁーと思いまして。。


747:login:Penguin
06/02/23 14:41:15 9eTddDoJ
適当な間隔で
while (gtk_events_pending())
gtk_main_iteration();
を呼んで一時的にイベントループを回してやると、スレッドを使わなくてもUIの処理ができるようになる。
システムコールなんかで長時間ブロックするような場合には使えないけど。

748:login:Penguin
06/02/23 22:16:58 HDaCfi3a
>>743
サンキスト

749:login:Penguin
06/04/06 09:06:33 xwiqVJCG
すいません、どうしてもわからなかったのですが…

gtk_label_set_markup() で '<' と '>' を表示する方法がわかりません。
タグの開始(終わり)と判断されてしまうようです。
すいません、よろしくお願いいたします。

750:login:Penguin
06/04/06 13:56:52 lK+xfIyV
>>749
以下の様にしたらちゃんとイタリックで「<test>」と表示されるみたいだけど、
駄目すか。

m = g_markup_printf_escaped ("<span style=\"italic\">%s</span>", "<test>");
gtk_label_set_markup (GTK_LABEL(label), m);
g_free (m);


751:749
06/04/07 00:53:52 064lZiFe
>>750
ありがとうございました、行けました。

752:login:Penguin
06/04/08 16:50:28 qD5vNEHv
GTKアプリケーションでウィンドウを分割しているウィジット(マウス操作でレイアウトの棒を左右に動かせる)を見掛けたのですが
あれは何と言うウィジットなのでしょうか。

ウィジットの名前が分からないと調べようもないので教えてください

753:login:Penguin
06/04/08 17:07:07 et4vCTR5
多分 GtkHPaned っていうやつだと思う
Glade(2.12.1)だと右から2番め下から2番めにあるやつ

754:login:Penguin
06/04/09 00:12:12 lWv/4qoU
>>753

ありがとうございました。

そのウィジットで出てきました

755:login:Penguin
06/04/26 18:09:37 k4vlbIwh
gtkで画面をすぐに更新させるにはどうしたらいいでしょうか。
swapBufferやflushのようなカンジの関数があるかと
思ったんですが、見付かりませんでした。

756:login:Penguin
06/04/26 23:15:06 aZu1U6v6
GdkFlush って無かったっけ?

757:login:Penguin
06/05/02 08:17:35 UqKVJP00
関数名長いよ!ヽ(`Д´)ノ ウワァァァン

758:login:Penguin
06/05/02 08:57:43 e/deB1lW
ああ、C言語だからな。

759:login:Penguin
06/05/09 07:32:53 reS9af81
GtkComboBox で質問です…。

GtkComboBox の signal で "changed" が発行された時と同じような感じで
コールバックを呼びたいのですが、
選択されたアイテムが前のと同じでも呼べるようにするにはどうすればよいでしょうか…
識者の方、お願いいたします。

760:login:Penguin
06/05/21 23:50:35 wP3kA47Z
Gtk初心者です

get_wigetを使ってウィジェットから値を取り出したのですが,
undefined reference to `get_widget`
というエラーメッセージが出ます

何か解決する方法はあるでしょうか?
また,代替手段などありましたら教えて下さい

761:login:Penguin
06/05/22 00:15:02 lYbn8Pcy
>>760
文が変

762:760
06/05/22 00:36:55 cF96P9p7
失礼しました.訂正します

> get_wigetを使ってウィジェットから値を取り出したのですが,
ウィジェットから値を取り出すために,get_widgetを使って
ウィジェットを取得したいのですが,

> undefined reference to `get_widget`
> というエラーメッセージが出ます
>
> 何か解決する方法はあるでしょうか?
> また,代替手段などありましたら教えて下さい

よろしくお願いします

763:login:Penguin
06/05/22 10:15:59 DWYo0BTY
>>760
私はsupport関数を使わないからよく分からないけど、
gtk+-1.x用のgladeでは get_widget だった関数が 2.0 では lookup_widget に
なってるっぽい。
こんなんあった。↓
URLリンク(lists.ximian.com)

glade使ってるんだよね? glade使ってないのにgladeで準備された関数を
使っているという話じゃないよね?


764:760
06/05/22 21:47:05 cF96P9p7
>>763
ありがとうございます


> glade使ってるんだよね? glade使ってないのにgladeで準備された関数を
使っているという話じゃないよね?
はい.glade使ってます.
でも,lookup_widget以外を使って同じような関数って,皆さんどのようにしているんでしょうか?
それから,GTKを学習する上で参考になるHPなどありましたら,
教えて下さい

765:763
06/05/23 00:10:16 gEQHRwr8
>>760
GTKを簡単かつ体系的に教えてくれるHPは無いかもなぁ。
GTK自体が簡単なもんじゃないし、変化もしていくからね。
私が参考にしているのはGNOMEのプログラミング関係のドキュメント類。
それとGTK+とかglibのソース。
それと、gtk-demoというコマンドはとても参考になります。

gladeのsupport関数を使わない方法は、
モジュール的構造も考えなきゃならない少し大規模なプログラミングを
するとなると、自然にそうなる気がする。これは言語(C言語とか)を
じっくり体系的に勉強する必要があると思う。そうすると自然に見えてくるかな。
変数のスコープ(通用範囲)に大きく関わります。

簡単に言うと、widgetのアドレスさえどこかに覚えておけばいいので、
必要なものを構造体にしてそれを関数の引数として渡せばいい。
あるいはGUI部分だけ1ファイルにしてその中の最初でstatic変数として定義とか。
この場合はwidgetからの値の取得とかwidgetの書き換えとかはこの1ファイル中で
行って、他の部分にはwidgetのアドレスは必要ない状態にするといいかな。

ちなみに、lookup_widgetを使わない場合はinterface.cの
GLADE_HOOKUP_OBJECT とかのマクロ部分は必要なくなります。


766:login:Penguin
06/05/24 10:41:45 zKYF/EzE
gtk+-2.6 をつかってるんですが、
GtkRadioButtonで、group内のすべての radio buttonを
inactiveにする方法ってあります?

gtk_toggle_button_set_active(radio_button, FALSE) だと
activeになっているものを inactive にしてくれないみたいなんですが。


767:login:Penguin
06/05/24 15:19:22 Yn9YRiJ9
>>766
必ず一つだけが active になってるのが radio button なので、できない。


768:login:Penguin
06/05/25 02:56:23 VlZmec8+
>>767 そうみたいですね... newしたときから activeになってるみたいだし。
どれも選択されていない RadioButtonって需要ないのかしらん。

素直に GtkToggleButtonに signal組み合わせて作ります。


769:login:Penguin
06/06/02 00:28:01 hcRTarUB
gtk_button_new_from_stockはgtk_buttonと名が付くのに何で
GtkWidgetを返しやがりますか

770:login:Penguin
06/06/02 02:04:06 N+GTRApa
gtk_hogehoge_new は GtkWidget *を返すって conventionじゃないの?
そのほうが gtk_widget_showとかに渡すときも面倒じゃないし。

gtk_hogehoge_do_something の第1引数は たいてい GtkHogehoge だから
その場合は面倒だけど。
OOPLでやればそんな面倒はないんだけどね。


771:login:Penguin
06/06/08 02:09:17 +cYFIqs+
質問です。
GTK のメインループで使っている GMainContext は g_main_context_default () で
取れますか?

実は main_context = g_main_context_default ();
して、この main_context を他のライブラリに使用しようとしたら(ライブラリの初期化に必要)
「FreeBSD ではうまく動く、しかし Windows ではうまく動かない」
という現象に出くわしました。
なにせ main context も loop も理解していないので…。
どなたかお教えくださいませ.............

772:login:Penguin
06/06/08 03:26:47 DJniGV22
gtk_widget_destroyと g_object_unrefってどう使い分けるんでしょう?

ほかからも参照されている可能性を考えると g_object_unref() を
使うべきの気がするんだけど、だとすると gtk_widget_destroy() が
ある意味がわからない...



773:login:Penguin
06/06/11 20:12:39 J6bQThTU
gtk_window_set_title(window,"ゲイツ砲作動");

774:login:Penguin
06/06/14 01:55:53 t+ofgOcF
glibとかgtkのドキュメントでman形式のものってありますか?
--enable-manとかやってみたけど、よくわかりません。
どこかへのポインタでもいいですので、教えていただけませんか。

775:login:Penguin
06/06/14 13:34:14 iviE8HFQ
つ/usr/share/gtk-doc


776:login:Penguin
06/06/25 01:13:32 FTDnSR/k
>>772
閉じるボタンに繋げる合などだけ destroy で、他は unref でいいと思う。
ほかから参照されているときに destroy しても
使いものにならなくなるだけで問題はない。

destroy メソッドを実行すると初回のみ destroy シグナルが発行される。
参照がまだあれば、object は回収されずに残る。
unref メソッドの場合、最後の参照だった場合のみ destroy finalize の順に
実行されて、object が回収される。

似たような質問がここに
URLリンク(mail.gnome.org)

GtkObject の終了処理について
URLリンク(developer.gnome.org)

777:login:Penguin
06/06/26 11:40:10 M7qvCUGx
OpenLDev
URLリンク(www.openldev.org)

これよさげ

778:login:Penguin
06/07/03 22:12:38 pWv0Yxym
GTK+ 2.10.0とGLib 2.12.0のリリースアナウンスメントをwww.gtk.orgで発見
でもリリースノートとtarballは、まだなのね…

779:login:Penguin
06/07/06 20:30:35 xw7f/fG0
Gtk使えねぇええええ
TreeModel超糞。

780:longhon
06/07/17 23:28:47 BTBgIeR8
いまGtkをまなんでexcelみたいな表を作ろうと考えたのですが、
tree view list を使ってできるというところまではわかったのですが、
日本語のチュートリアルはなく、原本のリファレンスを見るものの
さっぱりな状態です。ちょっと教えていただけないでしょうか?
クレクレ君ですみません。

781:login:Penguin
06/07/18 00:17:21 KWhoRQuP
Linuxならgtk-demoでサンプルが見れるぜい

782:longhon
06/07/18 00:56:09 P7E0MH5b
おーdemoのバージョンってどうやってしらべるんだろ?

783:login:Penguin
06/07/18 01:07:07 lOzLf0iO
表作るなら>>659みたいなのもあるらしい。
俺はListStore程度で済む事しかやらん(やれん)から使った事ないけど。
あとリファレンスはruby-gtkのが割と日本語化されてて初めは楽。

784:login:Penguin
06/07/18 06:48:40 TIhQa3Ub
jpegイメージを表示するプログラムはどれくらいかんたんにできますか?

785:longhon
06/07/18 16:17:54 P7E0MH5b
そのListstoreがわからないーーー

786:login:Penguin
06/07/18 16:37:02 CMZdz4SS
英語で良いならURLリンク(scentric.net)があるな。

787:login:Penguin
06/07/18 19:37:56 Af6G0/qF
>>784
#!/usr/local/bin/perl
use Gtk2 '-init';
$win = new Gtk2::Window->new(GTK_WINDOW_TOPLEVEL);
$img = new Gtk2::Image->new;
$win->signal_connect("delete_event", \&qu, undef);
$win->add($img);
$img->set_from_file("hoge.jpg");
$win->show_all;
Gtk2->main;
exit;
sub qu { Gtk2->main_quit; }

788:longhon
06/07/21 00:43:24 6uqESCNY
ソートとeditが同時に出来ないーー
static void add_columns(GtkTreeView *treeview)
{
GtkCellRenderer *renderer;
GtkTreeViewColumn *column;
GtkTreeModel *model = gtk_tree_view_get_model(treeview);

/* column for date */
renderer = gtk_cell_renderer_text_new();
column = gtk_tree_view_get_column(treeview, COLUMN_DAY);
//column = gtk_tree_view_column_new_with_attributes("Daisuke", renderer, "text",COLUMN_DAY, NULL);
g_signal_connect(renderer, "edited", G_CALLBACK(cell_edited), model);
g_object_set_data(G_OBJECT(renderer), "column", (gint *)COLUMN_DAY);
gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(treeview), -1, "Date", renderer, "text", COLUMN_DAY, "editable", COLUMN_EDITABLE, NULL);

gtk_tree_view_column_set_sort_column_id(column, COLUMN_DAY);
gtk_tree_view_append_column(treeview, column);
以下略

789:longhon
06/07/21 02:15:17 6uqESCNY
訂正 "Daisuke" -> Date
デバックの張ってしまった

790:login:Penguin
06/07/22 22:44:27 ePUeuv0L
リストの更新ってどうしりゃいいんだ?

791:login:Penguin
06/07/23 03:07:35 amAZ2PT+
>>790
リストって何のリストだお

792:login:Penguin
06/07/23 05:14:23 x3i4d7lC
GTKのスレで質問するのは適切ではないかもしれないのですが、
リアルタイムに描画を更新するプログラムでVSYNCを取得するって
どうすればいいのですか?
簡単なアニメーションを表示させたくて、ウィンドウシステムや
ウィジェットなどはなんでもいいのですが、普通はどのようにVSYNCを
取得するものなのでしょうか?
ウィンドウシステムごとに固有の方法が用意されている?
それともカードのレジスタかなんかから直接とってくるのでしょうか?
(それともVSYNCなんて取る必要はない?)

描画関係に関してはまるっきり素人なもので…

793:login:Penguin
06/07/23 05:59:52 9cNKicFy
無理無理

794:login:Penguin
06/07/23 08:32:45 h2mLkene
>>792
DRM_IOCTL_WAIT_VBLANK で検索してみ


795:login:Penguin
06/07/23 11:29:11 x3i4d7lC
>>794
ありがとうございました!

調べてるときに、割り込みでVBLANKがとれない場合
単にVBLANKの周期で処理を行うようなpatchがあったりしたのですが
こういったことも有効なものなのでしょうか?
(何か根本的に勘違いしてる、私?)

796:login:Penguin
06/07/24 20:55:51 OZvD/B1G
意味ないんじゃないのそれ。
単に周期を合わせるのだと、運がよければvsyncに合うけど、
運が悪ければ書き換えの最前線が常に画面上になるんじゃないのかな。


797:login:Penguin
06/07/25 20:47:07 ObYp5Z0J
無理無理

798:login:Penguin
06/07/25 22:07:19 ANae/VXn
gtkでほにゃららウィザードみたいな感じで画面全体を
遷移させたいのですが、どうすればいいか教えてください。

やっぱり神様windowがパネルごとshow/hide?


799:login:Penguin
06/07/26 03:03:30 nO5MsZXX
gtk_window_fullscreen
URLリンク(developer.gnome.org)

?

800:login:Penguin
06/07/28 16:03:10 gdBL/xGV
ドルイド使えん?

URLリンク(developer.gnome.org)
って、全画面にはならんのかな.


801:login:Penguin
06/08/01 00:31:39 L0TWKid5
おまいらやっぱCで書いてる?

802:login:Penguin
06/08/03 17:59:03 Pbm1StqY
Haskellで。

803:login:Penguin
06/08/03 21:08:21 PrqlXciu
#include <gtk/gtk.h>

がダメで

`pkg-config --cflags --libs gtk+-2.0`

だと大丈夫なのはどういう意味があるのでしょうか。
windows.h のように普通にincludeできないと違和感を感じてしまうのですが…

804:login:Penguin
06/08/03 21:25:07 3S1RLjXN
何がどうダメなのさ

805:login:Penguin
06/08/03 21:26:34 ONA5Yror
pkg-config --cflags --libs gtk+-2.0
を実行したらすぐわかるような

806:login:Penguin
06/08/03 23:21:48 k7FfsSEw
gtk を試しはじめてネット上で検索とかしまくってるんだけど、
検索すればするほど日本ではあまり使われてないような…。

みんな何作ってるの?公開とかしてる?

807:login:Penguin
06/08/03 23:29:07 B7tJQEHQ
>>806
本が結構売られているよ。

GTK+で有名なのはGIMPかな。っていうかこれのために作られたのがGTK+・・・

808:login:Penguin
06/08/04 02:18:59 1ByfcMbI
>>806
JDでスレ検索

809:login:Penguin
06/08/04 16:25:35 QDVDuP06
GTK+-2.0の日本語の本ってある??>>806
結局、公式 gnome 開発者ガイド使ってるけど、これも突っ込み甘い..
URLリンク(www.amazon.co.jp)


810:login:Penguin
06/08/12 23:07:37 gUx2Zo6A
APIのレファレンスマニュアルのページ読むと必ずハングするんですが、
なんか意地悪してるんでしょうか。

811:login:Penguin
06/09/01 22:01:53 9hBp2t2i
>>810
GTKベースのソフトで読まないとハングするよ。

812:login:Penguin
06/09/02 09:14:33 4priHuM5
読むのに使ってるソフトのスレで訊くべきじゃないの

813:login:Penguin
06/09/03 22:39:48 tLDrWzmC
GtkMenuToolButtonをGtkUIManagerで簡単に作る方法は?
UIのXMLとGtkActionEntryで一元的に管理したいんだが。

814:login:Penguin
06/09/21 07:39:24 5S0sHSq3
すいません、質問です。

Windows で半角英字には Arial 10 を、日本語には MS PGothic 10 をと言うように、
別々にフォントを rc ファイルで指定したいのですが、無理ですか…?

font_name="Arial 10,MS PGothic 10"

は試したのですが、ダメでした…。

815:login:Penguin
06/09/22 05:29:30 oc0o+F4Y
>>814
GNOME使ってるなら
gconf-editorで
/desktop/gnome/interface/font_name
Arial, MS PGothic 10

816:814
06/09/22 07:13:17 shCBdU/U
>>815
ありがとうございます。GNOME は使っていません。
単体なソフトなもので…。
もう少しいじってみます。

817:login:Penguin
06/09/23 02:53:42 DBZDIlnA
>>816
試してないけど、
GtkSettingsで
"gtk-font-name"というプロパティを
Arial, MS PGothic 10
に設定したらできるかも

818:814
06/09/23 09:00:47 oVJ5FxNJ
>>817
ありがとうございます。
試してみたのですが、だめでした…。
実は後で気がついたのですが、
font_name="Arial, MS PGothic 10"
は FreeBSD でうまく行って、Windows ではうまく行かないことが分かりました。
日本語は GTK デフォルトのフォントになってしまうようです。
(firefox とか thunderbird とかと同じ)
よく分からないのですが、放置しておきます。とほほ…。

819:814
06/09/26 09:24:06 G1FxsBCP
一応自己解決しました。
font_name="Arial,MS PGothic 10" ですが、コンマの後にスペースがあると、
Windows ではダメなようです。(FreeBSD では OK ですが)
なんかちょっと悲しい。

820:login:Penguin
06/10/06 23:35:59 s7TA8Fbc
>>819
遅レスだがメモメモ…

821:login:Penguin
06/10/26 22:56:28 gIte4gPi
ちょいと質問なんですが、gtk_label_get()の第二引数って、取得したテキストを指すポインタのポインタの領域をmalloc等で領域確保する必要はないんですか?

char *s;

GTK_LABEL(label),&s);

として、sをg_mallocしてg_freeしたら、なんか実行時にエラーが出ました。
知ってる人いたら教えてください。

822:login:Penguin
06/10/26 23:16:38 /n9s8yCa
>821
>It does not make a copy of this string so you must not write to it.
なので下手にいじってはいけない。多分constと思っていい。
あとそれdeprecated。

823:821
06/10/26 23:48:57 gIte4gPi
>822
ありがとうございました。(コードが一部抜けてました。)

gtk_label_get(GTK_LABEL(label),&s);

とした場合、sがconst扱いになるということですね?
あと、deprecatedというのは、gtk_label_get()の使用は推奨されてないということでしょうか?
ならば、ラベルの名前を取得する方法は、どうすればよいでしょうか?

824:login:Penguin
06/10/26 23:54:02 1m0EYGYM
>>823
gtk_label_get_text() or gtk_label_get_label()

825:821
06/10/27 00:36:56 l81dNlg+
>824
ありがとうございました。

826:login:Penguin
06/11/02 00:27:19 83qYmDpR
GtkWindow のサイズをマウスを使って変更したときに、
マウスボタンを離すまでシグナルが発生しないようにしたいんですけど
GTK+のチュートリアル読んでもさっぱり・・・
どなたか手がかりを下さいませんか。

今のままだとサイズ変更の途中で再描画されてしまってマズー

827:login:Penguin
06/11/04 03:13:31 oVt1SXTf
どちらかっていうと Window Managerの設定じゃないの?
と、思い付きを書いてみる。


828:login:Penguin
06/11/04 07:40:52 wQVg/xG3
g_signal_handler_blockとg_signal_handler_unblock
だったと思う

829:login:Penguin
06/11/04 20:06:13 taceIu9P
>>827
私もそう思った。
opaqueとかoutlineとかいう名称でいろんなWMで設定できる項目だと思う。
ソフトの方でその動作を組み込むこともできなくはないんだろうけど。


830:826
06/11/05 22:06:22 rcTSwJgs
提案ありがとうございます。WMですか。
Windowsでやってるのでその辺の設定がちょっと。
g_signal_handler_block あたりで何とかチャレンジしてみます。

831:login:Penguin
06/11/08 09:48:14 CnqaUpTW
画面のプロパティ→デザイン→効果→
「ドラッグ中にウィンドウの内容を表示する」をoff

Windows XPの場合。


832:826
06/11/12 11:01:10 bAXTQ/Hd
結局、Eventboxとgtk_widget_size_request使って実装しますた。
ボタンイベントの座標を取得して、
Eventboxの右下の部分だけに反応するようにいじりました。
これだとリサイズ中の枠とかは出ないのが難点ですけど。

831さんの方法が一番スマートだとは思いますw
皆さんありがとん。

833:login:Penguin
06/11/17 00:05:19 LQk3CfzK
質問ですが、gtk_main_quit()した後って、作ったウィジェットとかが確保していたメモリは全てフリーされるのでしょうか?
さらに、GDKのウィジェット(GdkPixmapとか)も開放されるのでしょうか?

834:login:Penguin
06/11/24 14:25:27 7Nf7BP84
おい、お前ら JCL切ってパンチカードでFORTRANプログラムやってた漏れが来ましたよ。

GLib, GObject, Pango, ATK, GdkPixbuf, GDK について取り合えず概要を教えやがれ。



835:login:Penguin
06/11/24 14:32:58 I7rtRk4j
消えろカス

836:login:Penguin
06/11/24 15:05:31 7Nf7BP84
Linux遣ってる香具師って人間性に問題ある奴が多いんだよな。

そんなことはない!835見たいな奴は俺も嫌いだ!って香具師がいるなら834にレス寄越せや。


837:login:Penguin
06/11/24 16:34:59 N0elR/SA
そっか 835みたいなのがデフォルトなのか。


838:login:Penguin
06/11/24 18:24:29 YADT00jb
プログラミングやる気があるならググレよ

839:login:Penguin
06/12/04 21:52:48 739N7ZVz
>>838
ググったらここにたどり着いたんだろ。
他にGTK+関係の掲示板ってあるのか?

840:login:Penguin
06/12/05 15:51:35 Zc3lkiGA
少なくともGTKでぐぐった結果の質問とは思えないな。

841:login:Penguin
06/12/09 02:26:24 t58tuYkG
質問させてください。
DebianでGTK+を使ったプログラムをコンパイルする際に、必要となる
パッケージを教えていただけないでしょうか?

842:841
06/12/09 02:49:19 t58tuYkG
libgtk2.0-devをインストールしたらコンパイルできました。
お騒がせしました。

843:login:Penguin
06/12/22 16:34:29 WGodCSmn BE:91837692-2BP(1002)
ごめんなさい。質問です。
glade2.12 + libglademm-2.4 + gtkmm-2.4でGUIアプリ作成しています。

glade上で作成したカスタムダイアログ(名前 = dialog_add)を、
メインウィンドウ上のボタン押下でモーダル表示させたいです。

ダイアログのプロパティは
初期「表示可否」は 「いいえ」
「モーダル」を「はい」
にしています。

Gtk::Dialog* dialog_add = 0;
m_refGlade->get_widget("dialog_add", dialog_add);
dialog_add->run();

として表示させたいのですが、
表示されるダイアログがタイトルバーが付いていないし、「キャンセル」や「OK」
ボタンを押しても反応してくれません。

何かやり方が間違っているのでしょうか?
glade使わないカスタムダイアログの作成方法の参考ページはあったのですが、
glade使用した例は見付かりませんでした・・・。

どなたかご教授ください。

844:login:Penguin
06/12/23 03:24:31 kVWxGBD4
gtk_dialog_runの使い方とか使用例をもっとよく調べるといいよ

845:login:Penguin
06/12/25 00:04:10 m4WzEBN4
とりあえず
gtklab.sourceforge.jp
で、初歩の初歩は分かった。
次はフォントの選択方法を知りたいという人間は
何見ればいいすか。

846:login:Penguin
06/12/25 22:06:24 j/37M/hz
URLリンク(www.gtk.org) の GTK+-2.0 Tutorial か API Reference じゃない?
フォントの選択方法ってなんだろう?
ダイアログなら GtkFontSelectionDialog があるけど。

847:login:Penguin
06/12/26 14:37:34 715StEwX
フォントの扱いを飲み込むためにもPango眺めとくのは必須だろ。

848:login:Penguin
06/12/26 16:35:39 SUHLiAKP
プログラミングじゃ無いんだけど
gtkrcの情報交換してるとこは何処?
engineによって書式も様々なんで

849:login:Penguin
06/12/30 00:11:53 AKdqp1vp
SUSE 9.2でリソースファイルで色設定しても反映されません。
同じソースとリソースファイルでSUSE10.2で実行すると反映されます。
また、SUSE10.2でもボタンのラベルに色がつくのですが、
ボタンそのものに色が付きません。
この辺詳しいHPとかありませんかね?

850:login:Penguin
07/01/11 13:58:24 fD42ZP3M
X/Toolkit(?)のXtAppAddInput()というモジュールと同等の機能を持つ
GTKのモジュールってありますか?

開発言語はC言語です。
う~ん、探しても見つけられなかった。探し方が悪いのかな・・・?


851:login:Penguin
07/01/11 14:28:22 SmIH3fhc
>>850
XtAppAddInput()がどういうものか説明すればいいのに。
そういうききかただとX/Toolkit(?)とGTKの両方を知っている人しか答えられないでしょ。


852:850
07/01/11 14:34:57 fD42ZP3M
>>851
その通りですね。

XtAppAddInput()は指定したファイルディスクリプタの状態が
変化(Read、Write、Exe可能になった等)した場合に登録したコールバック関数を
呼び出すというものです。

select()にコールバック関数呼び出し機能を追加した感じのモジュールです。


853:login:Penguin
07/01/11 15:11:36 SmIH3fhc
>>852
こういうの?
URLリンク(www.gtk.org)
日本語訳:URLリンク(www.gnome.gr.jp)
Exe可能ってのはないけど…。

854:850
07/01/12 18:37:22 xAKQOOb4
>>853
ありがとうございます
gdk_input_add()で、できそうですね。


855:login:Penguin
07/01/12 19:52:55 diKM4N2h
glib の Main Event Loop あたりを使うんじゃないかと思うんだが…。


856:login:Penguin
07/02/01 18:51:51 oa7P0Xiu
GTK+でテキスト文字(漢字)をgtk_label()で描画するときに、
フォントのサイズで位置調整したいんですが、幅を取得する関数ってないんでしょうか?
gdkでフォントセットをロードして描画する時は、gdk_text_width()が使えるんですが。。
gtkだけで簡単に済ませたいので。

よろしくお願いします。

857:login:Penguin
07/02/03 08:37:48 yTpUnzEZ
gtk+2.0でボタンwidgetとlabel widgetを 生成・消去(destroy)を繰り返し
て走らせておくと徐々にメモリを食いつぶしているようにみえるんですが…
そう言うのを確認した人いますか? もし居たら対策は?

858:login:Penguin
07/02/05 21:07:30 YgSmvrHE BE:102858252-2BP(0)
>>857
memprof とか valgrind 使って本当にメモリリークしてるか確かめてみて

859:login:Penguin
07/02/05 21:39:19 4W+LgzvZ
>>857
やってみたけどシステムモニター眺めてわかる程のリークはしてないように見えるが。

#include <gtk/gtk.h>
int
main(int argc, char *argv[])
{
gint i;
GtkWidget *box;

gtk_init(&argc, &argv);
box = gtk_vbox_new(FALSE, 0);

for(i = 0; i<1000000; i++){
GtkWidget *label = gtk_label_new("label");
GtkWidget *button = gtk_button_new();
gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0);
gtk_widget_destroy(GTK_WIDGET(label));
gtk_widget_destroy(GTK_WIDGET(button));
}
return 0;
}


860:login:Penguin
07/02/05 23:38:43 jQ+mHrDJ
デストローイ忘れしてるだけなんじゃねーの

861:login:Penguin
07/02/06 05:25:55 goDIpkB2
単にキャッシュなだけじゃないの?(参考: URLリンク(www.gtk.org))
俺も前に気になった事があるけど「食い潰す」まで行く事は無いし
最終的には解放されるからもう気にしてない。


862:login:Penguin
07/02/08 03:13:47 678pSSYu
>>857
URLリンク(developer.gnome.org)
の 1.5 とか。これは俺も最近まで知らなんだ…。

863:login:Penguin
07/02/10 07:26:44 3Xia/9JA
チュートリアルのrulers.cを改造して、ウインドウサイズを変更したときにルーラの目盛りも
更新するようにしたいんだけど、drawing_areaはサイズを取得出来ない・・・よね?
かといってgtk_window_get_size(window, w,h);だと全体の窓サイズになってしまうし
どうすればいいですか。

864:login:Penguin
07/02/10 09:06:07 cB1+Mmyj
>>863
drawing_area の configure-event 見ればいんじゃね?

865:login:Penguin
07/02/10 18:25:05 3Xia/9JA
朝からずっと調べ続けて今ようやくわかった・・・。
expose_event で GdkEventExpose から area を参照するのね。

866:login:Penguin
07/02/14 09:42:58 BwmsCoUm
ファイラのようなファイルの mime タイプに応じたアイコンが並んでいるリストを作りたいんですが、
どうしたらいいんでしょうか。

手がかりだけでもかまわないので、ご教授お願いします。


867:login:Penguin
07/02/15 02:32:20 l0yfSnwW
GtkIconViewを使えって話じゃないのかな? ファイラってのがよくわからんが。
(Windowsの explorerはいつも「詳細」にして使ってるんで)。
mime-typeに応じたアイコンを取得したいってのなら、知らん。

まず、やりたいことを分割して曖昧じゃない日本語で箇条書きにして、
必要度、依存関係を書いて提示しろ。
できればこんなところに質問しないか。


868:login:Penguin
07/02/16 17:15:53 zsLloLAV
Explorerを詳細表示にして使ったところで、ファイル名の左側に
拡張子に応じたアイコンが表示されてるじゃん。

869:login:Penguin
07/02/17 15:44:53 fKE+Jy3+
たとえば、firefox で実装されているように、

* あるアプリケーションがすでに実行されていた場合は新しくタブでドキュメントを開く
* そうでなければ、新しいウインドウでドキュメントを開く

という動作を実行するのには、どういう仕掛けを使うのが一般的なのでしょうか?

870:login:Penguin
07/02/17 16:43:58 KR0sG7u1 BE:253234144-2BP(0)
>>869
1. プログラムを起動したときに別のインスタンスがいないかどうか確認
2. インスタンスがいたときにはそいつにメッセージ(Firefoxの場合ドキュメントのURLかな)を渡して自分自身は終了
ってことでいいかな?結局多重起動のチェックとプロセス間通信がやれればいいのね。
SylpheedではUNIXドメインソケットで1,2をやってるみたい。
Gtk+周辺のテクノロジで固めたいならD-BUSを使ってもいいかも

871:login:Penguin
07/02/17 18:22:53 CMTL+Fmk
>>870は同じホストしか考えないプログラムの場合の一般論であって、
Xの場合はとるべき手段が違ってくる。
netscapeはXプロパティ経由で通信するので、同じスクリーンにウィンドウが
開いていればプロセス自体は別のマシンでも通信できる。
firefoxも同じ。

GDK/GTK+にXプロパティなんかのラッパーがあるかどうかは知らない。

それで見付からないなら諦めるもよしプロセスを起動するもよし、で
起動するのならば、通常のプログラム同様データファイルの一貫性保護
などを目的としてロックファイルなどによる多重起動チェックをやればいい。

872:login:Penguin
07/02/19 23:16:35 5FZGim03
>>869

とりあえずこれ読んでみたら?
GTK+だけで実装しているっぽい。

URLリンク(gtklab.sourceforge.jp)

873:login:Penguin
07/02/20 08:11:40 ONtjkv3E
ウィンドウを作らないとチェックできないのがちょっと嫌かも。
あと既に動いてるプロセスがサスペンドされたりしてたら
それが復活するまで判定が終了しないんじゃね。

874:login:Penguin
07/02/22 15:48:43 jpFFYqu/
GTK 1.2から2.0に切り替えたら、XTestライブラリが使えなくなっちゃたんですが。
linkでエラーになります。(Undefined reference `XTestQueryExtension`)
知ってる方いましたらお願いします。
ディストリ Vine4.0
gtk2-2.4.13

分からないので、XTestをやめてXSendEvent()とかを使って書き直してます。

875:login:Penguin
07/02/22 18:24:28 ARkHAdB3
単に-lXtstをGTKがリンクしなくなっただけでは。

876:login:Penguin
07/02/23 09:24:50 Toss6a7K
>>875
うまくlink出来ました。ありがとうございました。

877:login:Penguin
07/02/24 17:34:31 M/6/J6Qq
gtk1のソースをgtk2に変更するツールはありますか?

878:login:Penguin
07/02/24 17:40:30 R3/FZlN8
なんでも「ツール」と呼べば済むと思ってるんじゃねーぞ。
そういう奴が女性を産む機械だとか抜かすんだ。

879:login:Penguin
07/02/24 18:49:12 M/6/J6Qq
gtk1のソースをgtk2に変更するスクリプトはありますか?

880:login:Penguin
07/02/24 20:15:03 tree4KTM
スクリプトキディおつ

えーと、あれだ。ない。

881:login:Penguin
07/02/24 20:31:22 Z7G0MF3p
>>878を女性を産む、機械と読んでエロゲーとか思ったのはおれだけじゃないはずwwwwwww

882:login:Penguin
07/02/25 16:21:18 jPY2U1RH
あるウィジットの大きさを一定以上に広がらないようにしたいのですが、どうするのが正解ですか?

883:login:Penguin
07/02/25 20:12:20 xIfK6WPJ
いつもGladeで設定しちゃってる。

884:login:Penguin
07/02/26 18:41:50 pt8OB6ru
前から思ってたんだが、なんでみんなlibglade使わないの?
便利なのに……

885:login:Penguin
07/02/26 19:58:31 uj4cgUSY
ライブラリ依存がどんどん激しくなるよね。
C++なんか使ってたら、hohogemmなんてリンクするものがどんどん増えていく。
ああいうの一つにまとめて標準で入れておいてくれたらもっと楽なんだけどなあ。

886:login:Penguin
07/03/03 08:59:18 iO4b+0oy
Windows での話しなのですが、GtkTextView を作った時に同時に日本語入力を
オンにすることってできますか?
input method 関係を探したんですが、どうも見つからなくて…

887:login:Penguin
07/03/04 07:57:59 gI/IeUsG
それってGTK側でやる仕事なのかなぁ。
ちょろっと調べただけだけど、ImmGetConversionStatus()でIMEの状態を調べて
keybd_event()でVK_KANJIじゃない?win32apiの範疇だと思うけどな。

888:login:Penguin
07/03/05 13:11:27 n32uogVx
>>887
どうもありがとうございます。
考えてみれば Windows の API でやるのが正しいですね。
書き込みして気づきました。
ありがとうございました。

889:886
07/03/06 02:47:16 rlQdCBer
GTK とは関係なくなってしまいましたが、
URLリンク(www.cam.hi-ho.ne.jp)
に書いてありました。ここの SetInputMethodOpenStatus() がそのまま使えました。
お手数おかけしました。

890:login:Penguin
07/03/11 10:56:27 bVyF8jVB
>889
そこにあるコードは著作物なのだが。

891:login:Penguin
07/03/11 22:40:07 RO7bywIf
>>890
これを見るとrpmコマンド叩くにも>>889のリンク先に許可を求めないといけなくなるんだよね。
著作物だし。

892:login:Penguin
07/03/12 09:27:43 slT8Ay77
gtk_window_new() でwindow生成後に、最小化してwindowを隠すにはどうすればいいんでしょうか?
教えてください m(_ _)m

893:login:Penguin
07/03/12 12:04:53 WX8P/QrK
gtk_window_iconify()
てかマニュアルぐらい読め

894:login:Penguin
07/03/12 15:37:48 slT8Ay77
>>893
ありがとうございます。m(_ _)m

895:886
07/03/14 00:53:00 LNXDqswG
>> 890
結局必要なのは ImmSetOpenStatus() ぐらいなものなので、

#include <gdk/gdkwin32.h>

void
ImmSetStatus(GtkWidget *widget, ImmStatus status)
{
HWND hWnd = (HWND) GDK_WINDOW_HWND(widget->window);
HIMC hIMC = ImmGetContext(hWnd);

/* Set IMMM status */
ImmSetOpenStatus(hIMC, (status == IMM_ON));

/* Release context */
ImmReleaseContext(hWnd, hIMC);
}

ってしたよーん。ってほとんど GTK と関係ないっすね。

896:login:Penguin
07/03/19 02:53:53 IBwC1/nU
せっかくGTK使ってるのにプラットフォーム依存にしてしまうの?

897:login:Penguin
07/03/20 00:43:22 SW3xr29J
MinGWでgtkを勉強してるんですが、プログラムを実行するときに、
syntax error near unexpected token `main('
と出てきて、
プログラムが強制終了してしまうんですが、誰か対処法を知っていたら教えて下さい。
コンパイルは一応通ってるとは思うんですけど・・・・・。

898:login:Penguin
07/03/20 02:09:03 pOTrHDbj
とりあえずソースを晒すといいかも

899:login:Penguin
07/03/20 04:42:36 yYm494xv
GTK以前に hello worldとかを compile & 実行できているかが気になる。

900:login:Penguin
07/03/20 16:13:54 SW3xr29J
>>898
エラーがで出てたのは、このウィジェットだけを配置する
プログラムなんですが、
#include <gtk/gtk.h>

int main(int argc,
char *argv[])
{
GtkWidget *window;
GtkWidget *button1;
GtkWidget *button2;
GtkWidget *button3;
GtkWidget *button4;
GtkWidget *button5;
GtkWidget *table;

gtk_init (&argc, &argv);

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
table = gtk_table_new(10,10,FALSE);

gtk_container_add(GTK_CONTAINER(window),table);

button1 = gtk_button_new_with_label("BTN1");
button2 = gtk_button_new_with_label("BTN2");
button3 = gtk_button_new_with_label("BTN3");
button4 = gtk_button_new_with_label("BTN4");
button5 = gtk_button_new_with_label("BTN5");
//前半



901:login:Penguin
07/03/20 16:15:20 SW3xr29J
//後半
button1 = gtk_button_new_with_label("BTN1");
button2 = gtk_button_new_with_label("BTN2");
button3 = gtk_button_new_with_label("BTN3");
button4 = gtk_button_new_with_label("BTN4");
button5 = gtk_button_new_with_label("BTN5");

gtk_table_attach_defaults(GTK_TABLE(table),button1,0,2,0,10);
gtk_table_attach_defaults(GTK_TABLE(table),button2,2,4,0,10);
gtk_table_attach_defaults(GTK_TABLE(table),button3,4,6,0,1 );
gtk_table_attach_defaults(GTK_TABLE(table),button4,6,8,1,2 );
gtk_table_attach_defaults(GTK_TABLE(table),button3,8,10,2,3);

gtk_widget_show_all (window);

      gtk_main ();

return 0;
}




902:login:Penguin
07/03/20 16:16:54 SW3xr29J
>>899
不安になってやってみたら「hello, world」も同じエラーがでてきてできませんでした..orz。

#include<stdio.h>

int main() {
printf("hello, world");
return 0;
}

gtk+ チュートリアルのへろーわーるどは実行できるんですけど、
プログラムが終わると同じエラーがでてきます。
ぐぐったら、文字コードが関係してるらしいんですが、どれでやってもダメでした。
LINUXでやれっていうことなんですかね............。

903:login:Penguin
07/03/20 16:56:26 u2b4TE2D
mingwをインストールしなおせ

904:login:Penguin
07/03/21 03:54:17 Ay+CzKM3
>>872
今更だけど、URLリンク(gtklab.sourceforge.jp) の方法だけど
Win ではうまくいかなかった。
なので普通に Win API を使うしかなかった。

>>902
俺は URLリンク(gladewin32.sourceforge.net) の GTK ライブラリ使ってるけど、
問題なかったよ。

905:login:Penguin
07/03/21 15:08:14 mdl7DVyg
>>897
syntax error near unexpected token `main('

これは実行時ではなくてコンパイル時のエラーメッセージではないのか。

906:login:Penguin
07/03/21 15:33:43 h4G4UgJx
あのね、ここはLinux板でしてね
win32-portのことならム板にスレがあるからそっちに行ってほしいんだ

907:login:Penguin
07/03/21 15:44:01 OzGdWDRq
>>904
WindowsではWindowsのAPIを使うのが正解かもね。
その文書を書いた人が公開しているプログラムでもそうしてるみたい。
URLリンク(cvs.sourceforge.jp)

908:login:Penguin
07/03/22 06:20:18 nC3vS/QI
>>906
ム板には無いような気がするなぁ。
マイナーGUITKを「紹介するだけ」のスレはあるようだけど。
見落としてる?

909:login:Penguin
07/03/22 08:16:50 P6YXu+FN
>>908
GTKやめて、FOX Toolkitで作るといいよ

910:login:Penguin
07/03/22 11:05:43 nC3vS/QI
>>909
突然、何?
なにかが気に障ったなら謝るよ。ゴメンナ。

911:login:Penguin
07/03/22 17:19:08 NVYlVu8k
>>904
>>906が言ってるのはここの事では。

Gtkプログラミング on Windows!!!
スレリンク(tech板)

912:login:Penguin
07/03/22 18:01:50 oCFS6K5y
>>900

int main(int argc,
char *argv[])

gint main(gint argc,gchar *argv[])に変えてみろ


913:login:Penguin
07/03/29 16:50:34 dC+/1rKX
GTKのwidgetにMozillaをのっけてアプリケーションを作った人いますか?
不具合とかあったら教えてください!

914:login:Penguin
07/04/01 02:44:59 RjtNty3y
すいません、質問させてください。文字を90度回転させるにはどうしたらいいですか?

915:login:Penguin
07/04/03 01:42:21 99UCu54W
ついに、自前の C++ マーシャラーを作成して、シグナルにコネクトできるようになったぜ!
こんな感じ。

class Test
{
public:
Test() : dummy(123) { }

void hello (GtkWidget *widget, gpointer data);

private:
int dummy;
};

void
Test::hello (GtkWidget *widget, gpointer data)
{
g_print ("Hello World C++ %d\n", dummy);
}

g_signal_connect_cc (button1, "clicked", &test, &Test::hello, 0);

これで、button1をクリックすると、

Hello World C++ 123

と出力される。v(^O^)v
素の GTK+ を使いつつ C++ でプログラム出来るのはかなりおいしい。


916:login:Penguin
07/04/03 05:09:44 EaZCa4Le
>>914
GTKをインストールした時についてくる gtk-demo で、
Rotated Text というのがあるので、それを見たらいいと思う。
gtk-demoでソースも見れるよ。

917:login:Penguin
07/04/03 19:04:41 YnFjw9iH
>>915
あ、それよさげ。
全体としてはC++でコーディングしたいけど、GTK+周りは初心者なので
素のCでやりたいと思ってた。gtkmmとか使うのも考えたけど、本家(?)の
GTK+の方が情報揃ってそうだったし。

918:915
07/04/04 03:16:21 4cUWSG/i
こんな時間になったけど、めげずにカキコ。

GTK+ が他のツールキットと違うのは、コールバック関数を呼び出す際に、
引数をスタックに積まないで、ヒープに型情報と共に保存して、
シグナルに登録されたマーシャラーを呼び出す。

呼び出されたマーシャラーは、データを取り出して、コールバック関数に
合った方法で引数に変換して、コールバック関数を呼び出す。

というところまで分かったんで、だったら、C++ のメソッドを呼び出せる
ように出来るんじゃないかと思ったのがきっかけ。
gtkmm を使いたくないのが一番の理由だけどw

とりあえず、これからブログを開設するんでwwwそっちに載せるつもり。

919:914
07/04/04 20:46:07 fydXVgVP
>>916
情報ありがとうございますm(_;_)m
gdkのpangoインターフェースというのがあるんですね。
(でも2.6からみたいなので拙の2.4ではだめかも…)

920:login:Penguin
07/04/12 18:45:31 AmiOQVwy
textviewについて質問です
表示行数を増やしたときに、その新しい行が見えるように、一番下までスクロールすることにしました。
text_buffer_insertして
end_iterにscroll_to_iterしています。
しかし、これを実行しても、最後の行までスクロールされません
最後のカーソルがひとつあるだけの行と、その上の行が見えません(つまり、こちらの意図より2行うえにずれてる)
もちろん、スクロールバーも、下がちょびっと残っていて、一番したまでぴったり動きません

テキストビューを一番下までスクロールする方法を教えてください


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch