トップページlinux
983コメント346KB

GTK プログラミング!!

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001login:PenguinNGNG
俺の様な厨房プログラマーをある程度使えるようにまで育成して、和製糞ソフトを
大量量産するのが目的のスレッドです。
とりあえずGNOMEプログラミング(小学館)を買ってきました。
これから読んでみます。
0002login:PenguinNGNG
1マンセー
0003login:PenguinNGNG
1カッケー
0004login:PenguinNGNG
>>1
書評スレを救って下さい
http://cocoa.2ch.net/test/read.cgi?bbs=linux&key=993342954&ls=100
0005login:PenguinNGNG
1サイコー
0006 NGNG
やっぱリナックスユーザーって閉鎖的だよな・・・
WinやまだMacのほうがマシだな。
始めてきた正直な感想
0007login:PenguinNGNG
>>6
いや。べつに。
0008login:PenguinNGNG
1の読書感想独白スレだもん
読み終るの待ってるの
0009login:PenguinNGNG
>>1 anjuta付属のエディタのm17nしてください
00101NGNG
>>8
ちがうつーの!
俺やその他の厨房プログラマーもどき達が、わいわいプログラミングして、
それを見たスーパーハカーが「ヴァカ、ここはこうするんだよ 厨房氏ね」
とアドバイスをくれるスレッドだ!

>>9
厨房だから意味判らん。

>>4
この手の本に付き物のサンプルプログラムがほとんど本には載ってない。
CD-ROMに付属のGNOME Helloを見ろだってさ。
全体的に広く浅くで詳しく載ってないから、どっちかって言うと判りにくいかな。

GTKプログラミングで検索してみた。
http://web.kyoto-inet.or.jp/people/jeanne/linux/gtk-prog01.html
http://www.pat.iis.toyama-u.ac.jp/~negishi/gtk_man.html
http://www.sm.rim.or.jp/~shishido/gtkinst.html
http://www.ueda.info.waseda.ac.jp/~igarashi/ruby/api-ja/gtk-index.html
http://www2.pos.to/~rero2/tips/tips.html
http://yun.cup.com/gtkp2.html
0011login:PenguinNGNG
gnomeのサイトからドキュメントをダウンロードしたら?

http://developer.gnome.org/doc/tutorials/

英語がわからんから却下ってか?
こんくらいの英語がわからんよーじゃLinuxは使えんよ。
00121NGNG
>>11
うむ、全く判らん。
だけど、サンクス。
英語は分からんけど、ソースは読めそうだ。

とりあえず、GNOMEプログラミングについてたサンプルをコンパイルしてみる。
./configure
make
make install
でインストール出来たけど、サンプルなんだからインストールなんかしなくてもいいんだがなあ
でも、無事に起動できた!
メニューにツールバーまでついてるYO!

よし、それじゃあ俺はウィンドウだけ表示するのを作ってみるかと
GNOMEプログラミングを読みながら、viでぽちぽち打ち込んで
gcc test.c
するとライブラリが無いぞとエラー
ライブラリなんてどこにあるのか知らないぞ!

GNOMEプログラミングを読み返してみると
gnome-configとかいうツールを使うようだ。
gcc `gnome-config --cflags --libs gnome` test.c -o test
でコンパイルオッケー!
だったらいいんだけど、VERSION、PACKAGEなどの変数が見つからん
とエラー。
んん、GNOMEプログラミングにはそう書いてるんだが、おかしいなーと
>>11のサイトのソースを読むとVERSION、PACKAGEなんて変数は出てこない。
よーし、>>11の方を真似してみるか!

続く
0013 NGNG
やっぱりLinuxユーザーは選民思想ばっかだな。
それでWinをつぶそうってか?
英語がわからんよーじゃ使えないOSなんて日本のエンドユーザーに広まる分けないだろ?
だからこーゆースレッドでどーゆーもんかをわかりやすく進めていけば初心者もきてくれるんだ。
それをえらそーな>>11みたいな選民野郎がダメにする・・・
0014login:PenguinNGNG
1ニッポンイチー
0015login:PenguinNGNG
11はエンドユーザーではなくLinuxで開発する場合のことを言っているのでは?
最近はエンドユーザーなら英語が読めなくてもそれなりに使えるけど
開発者としてはまだまだ厳しいと思う。特にGTK開発者は数少ないだろうし。
Linuxは英語が使えないとだめとか、Linuxユーザーは選民思想ばっかとか
決めつけるのが好きだね。
0016login:PenguinNGNG
別に英語は読めたほうがいいとは思うが11の下の2行は明らかに蛇足
0017login:PenguinNGNG
スレが荒れるから、もうその話は止めた方がいい。
せっかく1がやる気になってるんだから。
0018login:PenguinNGNG
GladeでつくるGTK+プログラミング
みたいな本の方が簡単なんじゃないの?
ってGNOME〜 の方は見てないけど
00199NGNG
>>18
>GladeでつくるGTK+プログラミング
たしか訳本でgettextとか国際化についてはふれられていなかった鴨。

>>1
> Anjuta is a versatile IDE for C and C++,
> written for GTK/GNOME.
http://anjuta.sourceforge.net
002011NGNG
うーん、叩かれた。
>>11
ちょっと言いすぎたかな、すまん。
Linuxプログラミングに関する書籍がまったく手に入らなかった頃、
インターネットでダウンロードした英語のドキュメントに
四苦八苦した経験があるもんだからちょっとぐちっちゃっただけ。
許してちょ。
0021login:PenguinNGNG
英語が読めないと苦労するのはLinuxプログラミングに限らないよ。
Windowsプログラミングだって英語が読めないと苦労する。
11 を叩いたり、まして「選民思想」なんて言ってるのはモノを知らないやつらじゃないのか?
0022login:PenguinNGNG
意味不明な翻訳より原文というのはあるね。
0023login:PenguinNGNG
古い翻訳より原文というのもあるね。
00241NGNG
みんな、一緒にやろう!
経験者は低レベルすぎて呆れてるだろうが、こんなのもいいかもYO!

>>12で問題だったPACKAGE、VERSION変数についてはMakefileから
渡すパラメータのようだ(いまいち不明)
gccで直接コンパイルしていたからダメだったみたい。
で、
#define PACKAGE "test"
#define VERSION "1"
として再度コンパイル。

今度はGTK+の関数が見つからないってエラーが出てきたー(泣)
ライブラリがリンクされていないようだけど、うちのGNOMEが1.2だから
問題なのか?
しかし、サンプルプログラムはちゃんと動いていたからそれはないはず・・・。

これについて延々と悩んだが、gnome-configのオプションgnomeを
gnomeuiに変えて

gcc `gnome-config --cflags --libs gnomeui` test.c -o test

とコンパイルする事で解決!
無事に起動したYO!
自力じゃないけど、俺の初めてのGTK+プログラムが完成!

GNOMEプログラミングを読むと、gnome-configのオプションgnomeui、
gnomeについては詳しく書いてない・・・。
gnomeライブラリを使用しているソースをコンパイルする場合はgnome、
libgnomeuiライブラリを使用しているのをコンパイルするときはgnomeui
を指定するらしい。
わけわかんねー!!

>>18-19
サンキュ
今度本屋に見に行ってみるよ。
0025login:PenguinNGNG
glibc 2.1とglibc 2.2の共存はできませんか?
0026>>1NGNG
厨とは思えないほど前向きな上にやる気のある奴だ。みんなのお手本として
頑張ってくれ。応援する。

ただし英語はやっぱ出来るようになろうな。就職してから思い知るよ。
選民意識とか喚いてる奴はそういう負け組だから相手にしちゃだめ。
0027login:PenguinNGNG
やっぱ基礎から攻める? >1
glib -> gdk -> gtk
00289NGNG
>>27
手っ取り早くgnomeアプリを組んでみたほうが達成感が高いと思います。
必要に応じてローレベルに降りていくということでよいのでは
00291NGNG
>>25
俺にはわかんないけど、どこかのページで共存できるって書いてあったような
気がする。
Vine2.1.5にgaleonを入れようとした時に試してみたけど、俺には無理だった。

>>26
俺はリアル厨房じゃないよ。
社会人だけど心と行動が厨房なんだYO!
やっぱり英語は出来た方がいいよね。
もっと勉強してれば良かった。

>>27-28
うん、とりあえず何かを作ってみる事にする。
まずはテキストビューアにしよう!

ここにテキストエディタの作り方があるので、それを参考というか
そのまんまぱくって作ってみる事にした。
http://web.kyoto-inet.or.jp/people/jeanne/linux/gtk-prog02.html#editor

>>24で作ったウィンドウを開くプログラムを書き換えてエディタにする
事にしたけど、

/*text ウィジットを作って window 上におく。*/
text = gtk_text_new(NULL,NULL);
gtk_container_add(GTK_CONTAINER(window),text);
この部分を追加してコンパイルして実行するとgtk_textは追加できないぞ、
とエラー表示。
どうやらgtk_window_newとgtk_app_newは同じウィンドウを作る関数でも
中身は違うみたい。
何か部品を追加する時にはgtk_window_newじゃないとダメみたいだ。
そこでgtk_window_newに入れ替えてコンパイル実行すると、
おお、エディタになってる!!

>>11のサイトでgtk_textを探してみた。
http://developer.gnome.org/doc/API/gtk/gtktext.html
gtk_text_insertという関数を使ってみる事にする。
gdk_fontやgdk_colorについては判らないので、NULLにして
gtk_text_insert(GTK_TEXT(text),NULL,NULL,NULL,"test text",9)
としてみた。
ちゃんと表示された!

テキストビューアなので、
gtk_text_set_editable(GTK_TEXT(text),FALSE)
にする。コンパイル実行。
エディットできない。
大成功!
みんなもやろう!
0030freebsdNGNG
クソスレにつき削除依頼済
0031login:PenguinNGNG
>1
きみ頭よさそうなんで大丈夫だとは思うけど、ノイズは無視して頑張ってね。

きみに影響されて、をれも GLUI を勉強することにしました。
0032login:PenguinNGNG
まともなスレをあげます
0033login:PenguinNGNG
そーいえばこの板にはギコ猫アプレットを作ってる人もいたな 頑張ってね
0034login:PenguinNGNG
ある程度基礎が分かったら、
あとはgladeでサクサクデス。
0035login:PenguinNGNG
              /■\
             (´∀`∩ 誰かこないかな?hoge! hoge!
             (つ  ノ
          ((  ( ヽノ  ))
              し(_)
0036login:PenguinNGNG
               / \
             (´∀`∩ どうみてもやっぱりhage! hage!
             (つ  ノ
          ((  ( ヽノ  ))
              し(_)
0037login:PenguinNGNG
intiとgtk--はどう違うんだ?
00381NGNG
やっとLinuxとWindowsマシン両方同時にネットに繋げられるようになった・・・。
鬱だ氏濃。
00391NGNG
gnomeとgnomeuiについて書いてあるページを見つけた。
http://developer.gnome.org/doc/API/api-status.html
明日gladeと本を探して来よう。
英語ばっかり見てるとしんどい。
0040入ります なっち( ● ´ ー ` ● ) NGNG
出ます なっち( ● ´ ー ` ● )
0041login:PenguinNGNG
QTのがカコイイ
0042login:Penguin01/09/30 07:55ID:d7JcX47M
0043login:Penguin01/10/13 12:01ID:wNh.nQZ.
 
004401/10/17 23:05ID:1zYpbN2Z
gladeで作ったウイジェットのバックグラウンドにピックすマップをはりたのですが
だれか教えてくださいお願いします。
0045login:Penguin01/10/20 13:24ID:OcfV46Zh
LinuxJapanのGTKプログラミングくだらないんですけど。
書いてる人がモロ初心者ってのがまるわかりだね
もっと高度な技が知りたいんだがな
0046login:Penguin01/10/20 16:52ID:sKfJP4vD
自分で習得せい
0047エディタ作るよ01/11/09 17:06ID:Wh+81om3
随分埋もれているスレですが、本格的にGTKに取り組もうと思うので引きageました。
僕はLinuxを始めてまだ2ヶ月という初心者ですが、あまり良いエディタが無いので
cursesを使ってコンソール上で動くものを作っていました。
しかしずっとWindowsを使ってきた自分にはやはりX上で使いたいので、
これからXのプログラミングを勉強したいと思っています。
僕はGNOMEを主に使っているのでGTKでプログラミングをしようと思っています。
0048エディタ作るよ01/11/09 17:14ID:Wh+81om3
ところがいきなりつまっているんですよねぇ。
日本語変換サーバに接続するにはどうやったらいいのでしょうか?
変換途中の文字列を表示したりする方法がわかりません。どなたか教えて下さい。
0049login:Penguin01/11/09 17:20ID:sxIsRJw7
>>47
viやemacsがお気に召さないようでしたら、
gedit http://gedit.sourceforge.net/
Dedit http://dice.debian.gr.jp/dtools/
はどうでしょうか?
0050エディタ作るよ01/11/09 17:30ID:Wh+81om3
geditは今使っていますが、やはりいろいろ不満があるので自分で作ろうと思うのです。
geditはプラグインで拡張できるみたいですが、それでも限界がありますでしょうし。
僕が最終的に作りたいのは単なるエディタじゃなくて、
プログラミングの総合開発環境なんです。
通常プログラムを組もうとすると、ソースをいくつものファイルに分割しますよね?
ところが大規模なものになってくるとたくさんになってわけがわからなくなる。
そこでツリー状に表示して視覚的にファイルの連携が分かるようにしたいのです。
具体的にはVisualStudioのような感じになります。
こうなるとやはり既存のエディタでは対処できないものですから。
0051login:Penguin01/11/09 17:37ID:AHRgFOVE
>>50
参考になるかな?
http://gtkeditor.sourceforge.net/
0052エディタ作ってやる!!01/11/09 17:40ID:Wh+81om3
やはりソースコードを読むのがてっとり早いようですね。
参考にさせていただきます。
0053login:Penguin01/11/09 17:43ID:UHjJxhYN
gtkじゃないけどkylix入れて作った方が早いぞ
0054login:Penguin01/11/09 20:23ID:x4vrKCqJ
>>50
emacsならそーいう機能もありそうだな。使ってないから知らないが。
0055login:Penguin01/11/10 04:04ID:d5xkrrlz
>>11
あのさ、日本語訳さぁ、あるから。
展開済
http://toba.yanagi.gifu-u.ac.jp/~fukai/soft2/gtk_tut_ja/html/gtk_tut_ja.html

tgz 展開前
http://www.interq.or.jp/earth/inachi/gtk/gtk--/tutorial/tutorial_ja.tar.gz
0056login:Penguin01/11/11 19:09ID:Ehv7JjaS
>>50
古い雑誌ですが、ISBN4-8222-2305-1
「日経BP パソコンベストムック」1999年4月30日発行
という雑誌に、同じようなことを考えて、
AutomakeのGUIフロントエンドを作成している人がいます。
Makefile.amの内容を調べると、
プロジェクトのディレクトリ階層や、ヘッダファイル、
依存関係が分かるので、それをgtkListでリスト表示するものです。

emacsでMakefile.amの内容を利用するlispを書こうとしている人も
いるようです。どこでみたのか忘れてしまいましたが。

Autotoolでプロジェクト管理するといいのかもしれません。
0057login:Penguin01/11/12 20:41ID:nwFhGe7L
>>48
普通にやったら変換中の文字列は表示されていると思うが?
とりあえず、一番簡単なソースを書いておく。
from ISBN4-7741-0789-1 P.85より。一部変更。
#include <gtk/gtk.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
GtkWidget *window, *text;
gtk_set_locale ();
gtk_init(&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_signal_connect (GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
text = gtk_text_new (NULL, NULL);
gtk_container_add (GTK_CONTAINER(window), text);
gtk_text_set_editable (GTK_TEXT(text), TRUE);
gtk_widget_show (text);
gtk_widget_show (window);
gtk_main ();
return EXIT_SUCCESS;
}
0058login:Penguin02/01/08 18:57ID:u+t8IVl0
一時の気ままな情熱?
もう冷めちゃったのか? >all

思いコンダラ〜♪
もう一度奮い立て!
0059スレを最後まで使い切る会02/01/09 02:38ID:X9daWS+z
Qt&KDEでKDevelop使って作ればいいYO!
KDevelopはGtk+も使えちゃったりするらしいが。
0060名無しさん@Emacs2102/01/09 04:03ID:1Lr0/gEB
まじめに誰かanjutaのエディタm17nしてくれー。

いちいち間違えたに違いない英語でコメント書くの
疲れた。

成功すればKylixなんか不要になるような...

おまえがやれ、ってのはなしだYO!
0061login:Penguin02/01/09 22:23ID:3VMMyjI/
anjutaは使えるIDEなの?他にIDEはないの?
0062login:Penguin02/01/09 23:01ID:uRF3TBC8
>>59
Kdevelopって使いやすいの?
Visual Studioとか仕事で使うけど、どうしてもGradeのほうが
使えると思ってしまう。
Visual StudioのLinux版よりGradeのWindows版が欲しいな
そうすればかなり楽できるのに(^.^)
0063login:Penguin02/01/10 00:20ID:3FZlj9zd
>>62
Gladeのtypoだろ?
漏れはKDevelopの方がスキだけどな。
しかも、Visual Studioはもっとスキだ。
Linux使うようになってからもVisual Studioのコード補完機能だけは譲れずに、
Visual StudioだけのためにWindows起動することもある。
ま、KDevelopはあからさまにVisual Studioのクローンだから
Glade好きには合わないかもな。
KDevelop3.0ではコード補完が実装されるべく、現在奮闘中なのでそれに期待するよ。
0064login:Penguin02/01/10 00:29ID:fjjH265S
>>63
>KDevelop3.0ではコード補完が実装されるべく、現在奮闘中なのでそれに期待するよ。

いいこと聞いた。
それって漏れみたいなLinuxでプログラミング始めようかなって層にはとっつきやすそう
に感じるのだけど。
トーシロも期待して待ってよかですか?
0065login:Penguin02/01/10 00:47ID:3FZlj9zd
>>64
いいんじゃないの?
漏れも大いに期待してるし。
emacsもいいけど、コード補完ができるのってかなり魅力的だしな。
正直、コード補完さえできればどんなエディタだっていいよ。

ただ、まだ開発段階であんまりうまくいってないみたいよ。
Qtのsignal/slot機構があるから既存のParserではダメらしい。
コード補完ができるようになるのはもう少し先の話かも。
00666402/01/10 00:56ID:fjjH265S
なるほどサンクス。
いろいろ調べてみます。
0067名無しさん@Emacs2102/01/12 22:48ID:qnsysu3Y
Visual Studioとはちょっと違いますがanjutaは関数のパラメータ
表示はできます。

あと、EmacsでJDE使えばまあコード補完にほぼいっしょのことは
できます。

GNOME使ってるのでKDEのことは知りませんがKDevelopはなんか
よさげですなー。
0068login:Penguin02/01/27 19:48ID:HLJxu36x
空揚げ
0069login:Penguin02/01/27 19:49ID:5ITICSPO
>>68
うまい!
0070login:Penguin02/03/06 19:36ID:AZIsXcCu
0071login:Penguin02/03/11 00:28ID:FmLWb+7S
GTK、2.0がstableでリリース?

http://www.gtk.org/download/
0072login:Penguin02/03/11 00:30ID:FmLWb+7S
ageわすれ
0073login:Penguin02/03/29 11:10ID:F0DgSbr9
愛あるage
007402/03/30 07:03ID:DuAItk01
神の声「うまー」
0075login:Penguin02/03/31 01:34ID:NpQA8gR5
gtkはデザインがダサいからキライ
0076login:Penguin02/03/31 02:03ID:TkOBS2wq
>>75
どういう意味の「デザイン」?
0077login:Penguin02/03/31 15:16ID:NpQA8gR5
>>76
ごめんプログラム板でその単語は注意するべきだった
単に見た目の話(w

低レベルでスマソsage
0078login:Penguin02/03/31 15:22ID:NpQA8gR5
ちなみに
テーマで変更できるのは知ってるけどディフォルトのデザインが
ださいしカスタム作るの面倒だから

気にする人あんまり多くないのかもしれないけどね
0079login:Penguin02/07/13 05:58ID:q2+XoCQE
保守sage
0080login:Penguin02/07/31 20:50ID:SAMq0uYI
さらに保全sage
0081login:Penguin 02/08/01 16:14ID:ZgkCZ7ws
g_threadの使い方がわからん。
g_thread_init()は必須ですか?
というか、Gtk+でスレッドやるならGlibのスレッドのほうがいいのですか?
pthreadですか?教えてください。
0082login:Penguin02/08/08 00:16ID:VbBFNw1l
gtk で作ったプログラムって Xt の Widget と共存出来ないんでしょうか?
Qt には(昔いじった記憶では)Xt の Widget を埋め込むサンプルが確かあったの
ですが、gtk は web を探しても見付からないです。
どなたかご存知の方がいらっしゃいましたら教えて下さい。
00838202/08/08 00:37ID:VbBFNw1l
一応mozillaの中に gtkxtbin なるものを発見はしたんですが、
View Source しても殆ど使われていないらしくって使い方が良く分かりませぬ…
0084login:Penguin02/08/08 02:04ID:75koLqWb
system("startx");
0085login:Penguin02/09/24 02:57ID:zHWB0hgh
C++になれていると、Gtk+の継承はかなりめんどい気がしてくるな。
そもそもCでオブジェクト指向やろうって発想がすごいが・・・
というわけでGtkmmもやり始めたんだけど、どっちがいいのかねえ。
0086login:Penguin02/09/29 02:48ID:eHgtOed6
GTKもっとみんなに使ってほしいからageる
0087login:Penguin02/09/29 02:54ID:eHgtOed6
継承をする場合(独自のウィジェットを書く場合)、
ウィジェットの構造体はクラスにしても良いようだ。
Gtk+の継承は構造体の最初のフィールドをGtkWidgetにすることにより
キャスティングの多用でそれっぽいことができるようになっているが、
これはclass hoge:public GtkWidget と書いてC++による
「本物の」継承をさせてもうまくいくことがわかった。
最初のフィールドが同じなんだから当然といえば当然だが。
0088login:Penguin02/09/29 02:58ID:eHgtOed6
オーバーライドはxxx_class_init()のような関数内で行える。
肝心のメンバ関数は次のように書けば良い。

static void xxx_init(GtkXXX *newwidget)
{
  GTK_WIDGET_SET_FLAGS(newwidget, GTK_CAN_FOCUS);
  newwidget->Init();
  }void GtkXXX::Init(){

  //ここからインスタンス固有フィールド
  //わざわざキャスティングしなくてもメンバ変数がそのまま書ける
}
0089login:Penguin02/09/29 03:05ID:eHgtOed6
Gtkmmは、標準では入ってないディストリがほとんどなので使うのをためらってしまう。
Gtk+のバージョン2も同様。まだ使う気にはなれない。
1.2.xのみでC++のオブジェクト指向がほぼそのまま使えることがわかったため
自分としてはかなり使いたくなってきた。というわけでスレをあげてみた。
0090login:Penguin02/09/29 15:59ID:4p6DQ8aZ
OOPやりたいんなら素直にC++使えばいいじゃん。
Cで無理にOOPやろうとするところが解せない。
0091login:Penguin02/09/29 16:20ID:fE3HHMZQ
で、C++ 使うんなら素直に Qt 使えばいいじゃん。
となる罠。
0092login:Penguin02/09/29 22:53ID:3o1IzYa7
C++は言語仕様がfatすぎてどうも...
Cくらいのシンプルさがちょうどいいナリ。

GTKの設計思想はイイとこ突いてると思う。
0093スレタイ02/09/29 23:39ID:w4WxNaS7
s/GTK/GTK+/
0094login:Penguin02/09/30 00:17ID:OLKvT8Xh
>>92
そっかなぁ?
GTK+みたいにでかくなるとCではちょっと持て余し気味じゃない?
Qtはかなりスマートだと思うけど。
0095login:Penguin02/09/30 01:19ID:BdR/p6Dn
Qtは、mocを使うのがイマイチ気に入らん。
GTK+は日付バージョンの時代から使ってるのでなんとなく今も使ってる。
0096login:Penguin02/09/30 01:20ID:B0DOm7W8
ruby/gtkでバイナリまで作れたらいいのに…
0097login:Penguin02/09/30 01:28ID:gFORtcVB
GCode
http://gcode.sourceforge.net/

GCode is a GTK+ C++ Object Development Environment for
the GTK+ 2.0 library.
だそうな。

0098おむこさん志望 ◆GqCwfDSA 02/09/30 02:10ID:R33exTlJ
m17n.orgで多言語処理ライブラリを作ってるらすぃ
http://www.ipa.go.jp/NBP/13nendo/reports/infotech/m17nlib/m17nlib.pdf
現物を見たことがないので理解が間違っとるかもしれんが、これが本当にGtk+に
組み込まれたらUnicodeに頼らないCSIなm17n環境が実現できるってこと?

誰か詳しいひとはフォローおながいしまつ。
0099login:Penguin02/11/11 20:56ID:gMGsLKZV
GTK+もあまり使われてないんですかね・・・
0100login:Penguin02/11/11 21:42ID:vgJymunl
GCode の名前がIntiに変わった模様。
しっかし gtkmm とどっちを使うべきか迷うよな。
こーゆーあんま違わない分岐は正直困る。
全然違うんなら「選択出来て良い」と言えなくもないけどさぁ。
0101login:Penguin02/11/11 23:03ID:d9jtMLp4
>>95 moc が嫌いっていうけど、じゃあ libsigc はいいの?
0102login:Penguin02/11/12 01:02ID:XwN1vX/q
>>91

gtk--
と書いてみるテスト
0103仕様書無しさん02/11/28 21:01ID:efkqpcj6
とりあえず、参考のためのURLを貼っておきます。
がんばれ!>1さん。(そういえば、最近見ないな)
Gtk+関係
ttp://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja.html
ttp://www.gnome.gr.jp/docs/gtk+-1.2.x-refs/gtk/
ttp://www.gnome.gr.jp/docs/gtk%2Bfaq.20020824.html
Imlib関係
ttp://docsrv.caldera.com:8457/en/ImlibRef/
画像ビューアを作っちゃおう
ttp://www.geocities.co.jp/SiliconValley-Cupertino/4084/Cprogram/viewer2/
0104仕様書無しさん02/12/03 12:58ID:htGqbcIp
ここ、あんまり人が来ないみたいだから…。
とりあえず、自分用のメモ。
Gtk+プログラムをコンパイル/リンクするためには。
gcc `gtk-config --cflags` -c file名 ←コンパイル
gcc `gtk-config --libs` file名 ←リンク
0105仕様書無しさん02/12/03 14:00ID:htGqbcIp
Imlibを使用した場合のコンパイル/リンク方法
gcc `imlib-config --cflags` -c file名 ←コンパイル
gcc `imlib-config --libs` file名 ←リンク

0106login:Penguin02/12/03 18:41ID:an39zP9M
gtk-2.0 以降だったら
pkg-config にしる!
0107仕様書無しさん02/12/03 19:46ID:htGqbcIp
>106 thx! ここ、見ている方がいるんですね。
>104 はgtk-1.xに摘要っと。
gtk-2.0 以降だったら
gcc `pkg-config --cflags gtk+-2.0` -c file名 ←コンパイル
gcc `pkg-config --libs gtk+-2.0` file名 ←リンク
0108login:Penguin02/12/05 19:46ID:lirUEjaW
>> 103
Larseさんとこは外しちゃ駄目でしょう。
ttp://larse-gtk.hp.infoseek.co.jp/gtk.html
0109仕様書無しさん02/12/06 12:34ID:5SAieeJI
>108 thx!
>107の続き
[1] makeファイルとは
Makefileというのは、ソースファイルから実行可能ファイルを
作成する手順を記述したものです。実際に、ソースファイルか
ら実行可能ファイルを作成するためにはmakeコマンド(MS社
のコンパイラ系ではnmakeコマンド)を実行します。
0110仕様書無しさん02/12/06 12:36ID:5SAieeJI
>109の続き
コマンドの実行によって、オブジェクトファイルとソースファ
イルの比較が行われます。もし、ソースファイルの方が新しけ
ればコンパイルが行われます。そうでなければ、何もしません。
makeファイルを作成する事により、ソースファイルと実行
可能ファイルの関係および保守・管理を容易にすることができ
るようになります。
コマンドの形式は
make −f makeファイル名
となります。ただし、makeファイルの名前がmakefileであ
るときは、上記コマンドの−f以下は省略可能です。
0111おむこさん志望 ◆QtGqCwfDSA 02/12/06 17:21ID:aWU0cpft
Gtk+ の話じゃないじゃん(w
gcc, make, gdb, gprof などの使いかたを一通りさらっと見るなら
http://www.amazon.co.jp/exec/obidos/ASIN/4900900206/qid=1039162770/sr=1-5/ref=sr_1_2_5/249-2045410-9958747
がいいよ
0112login:Penguin02/12/06 18:28ID:5wmq/hiL
>>111 今だとちょっと古いかも。

GNUツールなら
ttp://www.sra.co.jp/public/sra/product/wingnut/
とか
ttp://www.sra.co.jp/public/sra/product/wingnut/gnu-links.html
のリンク先とかだと日本語対応になっているよ。
読み易いとは限らんけどね。
0113名無しさん@XEmacs02/12/06 18:33ID:+MeggbtK
GTK+ Programming するなら automake、autoconf 使いましょう!!
簡単な使い方の説明がたしか Larse さんのところ(>>108参照)にあったよね?
0114login:Penguin02/12/06 18:56ID:5wmq/hiL
>>113
> GTK+ Programming するなら automake、autoconf 使いましょう!!
最近バージョンアップが激しいので、できればam-1.5 ac-2.13を使いませう。
今日、ac-2.57 am-1.7.2まであがりますた。ほとんどの.m4ファイルが
撃沈されますた。
0115login:Penguin02/12/06 22:23ID:m6HOswTF
automakeとかautoconfとか、書式がちょっと変態的だと思う。いや、使ってるけどさ。
0116login:Penguin02/12/06 22:34ID:5wmq/hiL
>>115
確かに、confgure.in(ac)のマクロとシェルスクリプトの混在状態は
変態的だね。Makefile.amはまだマトモだけどさ。
自分でhoge.m4を作っておいてconfigure.inはほとんどマクロだけに
するとかしたほうがいいのかな?何とかすっきりさせたいんだけどね。

UNIX板のすれは死んでいる状態だけど、やっぱりすれ違いかな?
0117login:Penguin02/12/06 23:06ID:m6HOswTF
>116

bin_PROGRAMS=hoge

hoge_SOURCES= main.c

みたいなMakefile.amの書き方も俺は気持ち悪いと思うんだけど、そこらへん
はどう思う?
なんで区切が_なんだよ。未だになじめない。

そろそろスレ違いっぽくなってきてるような気がするので最後にGTK情報を。
GTK+ 2.1.3がリリースされてる。
0118冗談だよ02/12/06 23:20ID:5wmq/hiL
>>117
> なんで区切が_なんだよ。未だになじめない。
GTK+の関数やマクロは、ほとんど _ がデリミタになっているから気にしない。
0119login:Penguin02/12/06 23:30ID:m6HOswTF
>>118

GTK+の関数とかは、向こうが用意してくれてるじゃん。自分が定義したhogeが
hoge_SOURCESみたいな感じで_でつながってる!って感じがなんか気持ちわるい
んだ。
そう、俺の中では_は完全に区切ってる感じじゃなくて、区切りつつもつなが
ってる感じなんよ。ここらへんの感覚は、やっぱり人によって違うんだろうなぁ。
0120login:Penguin02/12/06 23:39ID:5wmq/hiL
名前のところを見て欲しいが、、、>>119
確かに SOURCES プライマリは気に入らないですね。
それ以外はインストールされるディレクトリ名と割り切ってしまえば、
そんなでもないですけど。
# 他にも例外あったっけ?

0121login:Penguin02/12/07 00:17ID:yjJ1LM9Y
>>120

とりあえず、hoge_LDADDってのがあるね。hoge_LDADD = @GTK_LIBS@みたい
な感じで使う。

まぁ、定型的に使う分には、割切ってしまえばそんなに気にはならないと
いえば、そうなんですけどね。
012212002/12/07 10:07ID:Of8FLFRv
ということでまとめ、am-1.7環境でMakefile.amで変態的なプライマリは、
SOURCES AR LIBADD LDADD LDFLAGS LINK CCASFLAGS CFLAGS CPPFLAGS
CXXFLAGS FFLAGS GCJFLAGS LFAGS OBJCFLAGS RFLAGS YFLAGS DEPENDENCIES
SHORTNAME
に決定されました。結構いっぱいありますね。
0123login:Penguin02/12/07 20:20ID:yjJ1LM9Y
120さん乙ー
0124login:Penguin02/12/10 17:16ID:m9e/PYr1
良スレage
0125login:Penguin02/12/23 19:31ID:1cqFxvzz
GTK+2.2 リリースage。

ところで、みなさんはGTK+1.2とGTK+2.x、どっちを使ってますか?またその理由は?

ちなみに俺はGTK+2.xの方を使ってます。1.2より速いし、immoduleとか
アンチエイリアスとか、いろいろ新機能があるから。
0126名無しさん@Emacs02/12/23 19:54ID:Mt+k38km
僕もGTK+2.xですね。
とりあえず新しいの使っておこうって感じです。
0127名無しさん@カラアゲうまうま02/12/23 20:11ID:HupxKL2U
いまだ1.2.xのまま。
自分でつくったやつが動くのかどうか検証するのがめんどい。

# そんなことじゃだめなんだけどなー。
0128(^v^)-66602/12/26 12:41ID:5tM+3DZe
オレも1.2.xのまま。
特に、理由はないです。Gtk+2.xに変えてもいいけど…。

イマ、ちょっと忙しいんで、年明けにでも…。
0129login:Penguin03/01/03 20:55ID:WNlDvEUU
保守
0130IP記録実験03/01/08 22:04ID:1aQvEFST
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0131login:Penguin03/01/09 01:27ID:5dI2J0HT
>>375
偽者だから
0132login:Penguin03/01/09 01:41ID:5dI2J0HT
さて、そろそろ読むべきレスがなくなって
記念カキコで1000目指す頃合ですか。
0133IP記録実験03/01/09 02:05ID:NCBslnNH
IP記録実験
http://qb.2ch.net/test/read.cgi/accuse/1042013605/

1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。

27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?

38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。

73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0134login:Penguin03/01/09 02:11ID:X6ogbEfM
>>584
ポイズン
0135login:Penguin03/01/09 02:45ID:oeq9HIxH
>>50
タイプミス
スマソ
0136login:Penguin03/01/09 03:29ID:z58+fY32
90 名前:心得をよく読みましょう 本日のレス 投稿日:03/01/08 17:30 Xc+fqEec
>1
>どうやら管理人

>qbサーバ
ってなんですか?


97 名前:●ITAN.IBM ◆GQITAN.IBM 本日のレス 投稿日:03/01/08 17:31 A4oVmFaH
>>90
批判要望、削除議論、削除整理、削除要請


98 名前:心得をよく読みましょう 本日のレス 投稿日:03/01/08 17:31 TzeruebF
>>90
qb.2ch.netで始まるアドレスの鯖。


とありましたな。スマソ
他の鯖はIPとってないの?
0137山崎渉03/01/15 11:29ID:wo7m90to
(^^)
0138質問君03/01/17 21:51ID:Gw5Q2kTa
お力をお貸し下さい!
gtk_timeout_addで画面の再描画を設定しています.
しかし,別の関数内でwhile(1)の無限ループを使うと,画面の再描画ができません.
どうしても無限ループが必要なのですが,どのようにすればよいのでしょう?
お力をお貸し下さい!
0139山崎歩03/01/17 22:20ID:tQv9kuDJ
>>138 おまえが永遠にソースを書き続ければよろしい。
0140login:Penguin03/01/17 22:49ID:wyXs27gT
>>138
スレッド使えば?
0141login:Penguin03/01/19 05:15ID:LdWFg6+q
>>138
あなたの望むそのものズバリの解答ではないかもしれないけど、

while( g_main_iteration(FALSE) )
/* do nothing */;

で強制的にメインループを回せます。
よって再描画が必要なときはただちに行われます。
参考までに。
0142login:Penguin03/01/22 11:49ID:VGBhRJXh
Gtkmmの参考書って出てないんですか?
0143login:Penguin03/01/22 23:47ID:2URUk/vJ
Gtkmmを使いたいなら、まずただのGtkをやること。
オブジェクト指向の知識があれば、すぐ移行できる。
0144login:Penguin03/01/22 23:49ID:2URUk/vJ
Gtk2で開発している人はあまりいないのかな?
自分が思うに、Gtkは1.2.xでも相当洗練されていて、十分な機能を備えているんじゃないだろうか。
0145login:Penguin03/01/23 02:34ID:DVnX67iq
>>144
Pango だけでも十分 1.2.x から 2.x に移行する動機付けには十分過ぎると思うんだけどなぁ。
2.1 からは Xft2/fontconfig 対応で OpenType フォントも使えるようになったし。

あと、個人的に Gtk+ 1.2の GtkPaned Widget は大キライ。仕切りの下にあんなつまみつけた
センスが分からん。
0146login:Penguin03/03/06 12:49ID:ucaHnoqM
scheme で gtk やりたいぞ age.
和製糞ソフト作るようなヤツでもわかる日本語ドキュメント見せろ,または書け.
guile-gtk 希望.

え?w3m cgi? GUI じゃないだろ?便利だけど.
0147login:Penguin03/03/06 13:53ID:fSTp04vi
>>146
(・∀・)つ gauche-gtk ツカエ!
http://www.shiro.dreamhost.com/scheme/gauche/index-j.html
http://www.shiro.dreamhost.com/scheme/gauche/packages-j.html
014814603/03/07 12:46ID:5F6JJ4cf
>>147
Gauche-gtk に同梱されている gtk-tutorial の hello, world! か.
でもこれだけじゃあ和製糞ソフトが量産されるとは思えないな.

gtk2 って何?
まだ 1.2 使ってるんだけど,これから gtk プログラムを作るなら 2.x の方がいいの?
多国語の扱いがマシになったとか書いてあるところがあったけど.
簡単な方を教えてクレクレ はぁと.
0149login:Penguin03/03/07 13:19ID:E7ysupB/
1ユーザとしては

アンチエイリアシングで、表示が綺麗なgtk2を使って欲しい、、
0150山崎渉03/03/13 16:51ID:52vAtNh8
(^^)
0151login:Penguin03/03/18 10:45ID:FeF5+SYV
gtk ver 1.2を使っているが、どうすればwidgetの中味を強制的に再描画させら
れる?計算結果をすぐに反映したい時など、ウィンドウ操作によって
expose_eventが発生するのを待たずに再描画したいケースが有るはず。例えば
ボタンをクリックした時にGtkDrawingAreaオブジェクトを再描画させるとすると

GtkDrawingArea* area;

int main(int argc, char** argv)
{
(中略)

// GtkDrawingAreaオブジェクトを作成

area = gtk_drawing_area_new():

// expose_eventのコールバック関数を指定

gtk_signal_connect(GTK_OBJECT(drawingarea1), "expose_event",
GTK_SIGNAL_FUNC(on_drawingarea1_expose_event), NULL);

// GtkButtonオブジェクトを作成

GtkButton* button = gtk_button_new_with_label("Draw now");

// clickedイベントのコールバック関数を指定

gtk_signal_connect(GTK_WIDGET(button), "clicked", GTK_SIGNAL_FUNC(click_event_handler));

(略)

}
(続く)
0152login:Penguin03/03/18 10:45ID:FeF5+SYV
(続き)
// drawing areaの中味を描画する

gboolean expose_event_handler(GtkWidget* widget, GdkEventExpose* event, gpointer arg)
{
GdkWindow* window;
GdkGC* gc = gdk_gc_new(window = event->window); // グラフィックコンテクストを取得する

// 描画コード

gdk_gc_unref(gc);
return FALSE;
}

// ボタンがクリックされた時の処理

void click_event_handler(GtkWidget* widget, gpointer arg)
{
gboolean return_val;

// areaの再描画を要求

困ったのはここから。click_event_handlerの中でareaに対してexpose_eventを発行すれば再描画されると踏んだが、関数
gtk_signal_emit_by_name()の呼び出しで第3引数以下にどんなパラメー
タを渡せば良いのやら(続く)。
0153login:Penguin03/03/18 10:48ID:FeF5+SYV
(続き)
以下は今までに洩れが試したこと
1.expose_event_handlerにargだけを渡す

gtk_signal_emit_by_name(
GTK_OBJECT(area), // areaに対して
"expose_event", // expose_eventを発行する
NULL, // expose_event_handlerの第3引数argに渡す値
&return_val); // expose_event_handlerの戻り値を格納する変数へのポインタ

コールバック関数expose_event_handlerは第2引数にGdkEventExpose*を
取るが、ここでexpose_eventを発行すると指定している以上、
GdkEventExpose*は自動的に渡されると予想して第2引数eventに渡す値は
指定しなかった。結果はこのコードを実行するとsegmentation faultが
発生して失敗。

2.GdkEventExposeオブジェクトを生成する

GdkEvent* event = gdk_event_new(GDK_EXPOSE); // GdkEventExposeオブジェクトを生成する
gtk_signal_emit_by_name(
GTK_OBJECT(area), // areaに対して
"expose_event", // expose_eventを発行する
event, // expose_event_handlerの第2引数eventに渡す値
NULL, // expose_event_handlerの第3引数argに渡す値
&return_val); // expose_event_handlerの戻り値を格納する変数へのポインタ
gdk_event_free(event); // eventに割り当てられていたリソースを解放する

結果はgdk_event_newがundefined referenceとなってコンパイル不能。

誰か手がかりをキボンヌ。
0154login:Penguin03/03/18 12:23ID:LjoIsUnh
>153
ウィジェットを再表示するだけなら単に gtk_widget_draw() 使えば
いいんじゃないのかな。
0155151-15303/03/18 12:53ID:FeF5+SYV
>>154
サンクス。ついでにgtk_widget_で始まる関数の一覧表調べたら今ではgtk_widget_queue_drawを使うことを推奨しているみたいだね。おまけに、描画
領域を背景色で塗り潰す方法も発見。結局上記のコードはこうなった。

// drawing areaの中味を描画する

gboolean expose_event_handler(GtkWidget* widget, GdkEventExpose* event, gpointer arg)
{
GdkWindow* window;
GdkGC* gc = gdk_gc_new(window = event->window); // グラフィックコンテクストを取得する

gdk_window_clear(window); // 背景色で塗り潰す

// 描画コード

gdk_gc_unref(gc);
return FALSE;
}

// ボタンがクリックされた時の処理

void click_event_handler(GtkWidget* widget, gpointer arg)
{
gtk_widget_queue_draw(GTK_WIDGET(area));
}
0156login:Penguin03/03/22 23:09ID:XBKip/9C
GTKアプリを、Xの起動時に立ち上げると、
日本語が一部消えるんだけど・・・。
なぜ?
0157相互リンク03/04/14 14:01ID:nee9/l5h
GTK+/Glade/gtkmm
http://pc2.2ch.net/test/read.cgi/tech/1050024677/l50
0158login:Penguin03/04/14 20:31ID:Rvr2v4eQ
>>156
化けるんじゃなくて?
化けるのはAAを掛けてるライブラリのせいなのでAAを切るとよいかも。
015915603/04/14 22:58ID:Y/KrP1DD
>158
化けてはいません。
なんか、X起動直後に、初めて描画したときだけWidget単位で消えます。(ちゃんと出るのもある)
でも、『あああaaaあああ』みたいのだと『   aaa   』ってアルファベットだけ出る。
 しかも、最小化とかすると、元に戻したときちゃんと出る。
 上の別のウィンドウを重ねたりしても。

 今は仕方ないから、プログラム中でxrefreshを呼び出して、むりやり再描画してるけど。
 タイムアウトでの割り込みをかけたりしてるから、美しくないんだよな。
0160login:Penguin03/04/16 18:42ID:p/eHtb4s
Gtk2(というかGdk/Pango)で、文字を任意の深さのPixmapに
(実際表示されているウィンドゥの深さ,Visualとは切り離して)
描画できる方法はないですか?

いったん描画したあとでgdk_drawable_get_imageで取り込み
プログラム内部で利用しようと考えています。

内部で使用するため、ハードにかかわらず一定の深さの
データがいいわけで、表示しているWindowとは無関係のPixmapに
描画できる方法をさがしています。

ただ単にPixmapを作成してgdk_draw_layout_with_colorsで
描画すると、カラーマップの設定が必要と怒られます。
カラーマップを設定しようとしたのですが、そのためには
Visual構造体を設定することが必要です。
自分で勝手に値を設定してそれをgdk_colormap_newに渡すと
落ちてしまうようですし...なんか方法はあるのでしょうか
016116003/04/16 18:48ID:p/eHtb4s
pixmap=gdk_pixmap_new(drawable,xsize,ysize);
visual.type=GDK_VISUAL_STATIC_GRAY;
visual.depth=1;
visual.colormap_size=1;
visual.bits_per_rgb=1;
visual.red_mask=1;
visual.red_shift=1;
visual.red_prec=1;
visual.green_mask=2;
visual.green_shift=2;
visual.green_prec=1;
visual.blue_mask=4;
visual.blue_shift=3;
visual.blue_prec=1;
colmap2=gdk_colormap_new(&visual,TRUE); ←ここで落ちる
gdk_drawable_set_colormap(pixmap,colmap2);

pangocontext=gtk_widget_get_pango_context(widget);
pangolayout=pango_layout_new(pangocontext);
pangofontdesc=pango_font_description_new();
pango_font_description_set_family(pangofontdesc,"monospace");
pango_layout_set_font_description(pangolayout,pangofontdesc);
pango_layout_set_text(pangolayout,"TEST",4);

gdk_draw_layout_with_colors(pixmap,gc,0,0,pangolayout,gdkcol,NULL);
getimg=gdk_drawable_get_image(pixmap,0,0,xsize,ysize);

/* getimg->mem の内容をプログラムで使用する */
016216003/04/16 18:53ID:p/eHtb4s
大切なとこ間違えてたスマソ
× pixmap=gdk_pixmap_new(drawable,xsize,ysize);
○ pixmap=gdk_pixmap_new(drawable,xsize,ysize,8); /*深さ固定*/
0163login:Penguin03/04/16 20:10ID:lo8mJ2VY
gtk2ってUTF8で渡さないと文字書いてくれないですよね。
で教えて欲しいのですが、EUC-JPからUTF8に変換するには
普通 iconv を使うものなのですか? それとも mbstowcs とかでもOK?

とりあえず今は iconv 使って表示できてるけどムダなのかな。
0164login:Penguin03/04/16 20:27ID:f73hW52k
mbstowcs は wchar_t が UTF-8 であることを仮定しちゃうことになるので
使っちゃだめ。
iconv() の wrapper である g_iconv 系の関数か、g_locale_to_utf8() を使う。
前者は変換元の文字コードを明示的に指定したい場合。
後者は「locale の文字コード」から変換したい時。gconvert.h を参照のこと。

016516003/04/17 01:22ID:LaltSFnA
PangoとXftを組み合わせればなんとかなりそうという気がしたが
...どうやって使うのだろうか

XCreatePixmapでPixmap作成(Xは使いたくなかったが...)
XftDrawCreateAlphaでXftDraw作成
XftDrawColormapでカラーマップ作成
pango_xft_get_font_mapでPangoFontMap作成
pango_font_description_newでPangoFontDescription作成、必要な値をセット
pango_font_map_load_fontでフォント読み込み
script_engine_listでpangoエンジンIDを取得←このあたりよくわからん
script_engine_loadでロード
PangoEngineShape(←これはどうやって取得するのか...)で
文字列からPangoGlyphStringに変換
pango_xft_renderで文字列描画
XGetSubImageでイメージ取得、でいいのかな?
0166山崎渉03/04/17 11:49ID:KRn99/cy
(^^)
0167login:Penguin03/04/19 23:58ID:OPO/Nk6v
保全age
0168山崎渉03/04/20 05:47ID:X64WTq1+
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0169login:Penguin03/04/22 18:53ID:f6Aef7e/
>>164
> mbstowcs は wchar_t が UTF-8 であることを仮定しちゃうことになるので
> 使っちゃだめ。

どんなlibcをつかってんだ(w
UTF-8っつーのは最大6byteのマルチバイトなcharacter encoding schemeだそ。
union wchar_t{
uint64_t wc;
char utf8[8]; /* 先頭2byteおまけ */
} wchar_t;
みたいな実装にはお目にかかったことが無いけど?
# wchar_tがUCS2だったりUCS4だったりする実装は山ほど在るが。

>>163に答えるなら、内部エンコードを仮定云々は関係なしに
「mb/wcはコード変換機能ではない」だろうよ。
017016003/04/22 23:43ID:N17I9atm
(pangoを使って配列に文字描画結果を格納する)
gdk-pixbufを使って解決しますた
ウィンドゥと同じ深さのpixmapを用意して
そこに文字を描画して
gdk-pixbufにとりこむ
gdk-pixbufはハードにかかわらずRGB24bitで操作できる

pixmap=gdk_pixmap_new(window,xsize,ysize,-1);
pixbuf=gdk_pixbuf_new(GDK_COLORSPACE_RGB,TRUE,8,xsize,ysize);

pangocontext=gtk_widget_get_pango_context(widget);
pangolayout=pango_layout_new(pangocontext);
pangofontdesc=pango_font_description_new();
pango_font_description_set_family(pangofontdesc,"monospace");
pango_layout_set_font_description(pangolayout,pangofontdesc);
pango_layout_set_text(pangolayout,"TEST",4);

gdk_draw_layout_with_colors(pixmap,gc,0,0,pangolayout,gdkcol,NULL);
gdk_pixbuf_get_from_drawable(pixbuf,pixmap,NULL,0,0,xsize,ysize);
017116003/04/22 23:49ID:N17I9atm
↑これで配列に取り込まれるので
gchar *pos;
pos=gdk_pixbuf_get_pixels(pixbuf)+x*4+y*gdk_pixbuf_get_rowstride(pixbuf);
で、R:pos[0], G:pos[1], B:pos[2], A:pos[3]で(x,y)の値が取得可能。

XmbDrawStringとXGetSubImageでもできないことはないが、pangoに
こだわったのは、(プログラム操作する側をふくめて)フォントの
扱いが簡単になり、統一がとれるため。

ただ、アンチエイリアスフォントはこの方法できれいにとれるが
2値(ビットマップ)にしたいばあいがきれいにとれない....
017216403/04/26 03:02ID:d+JpEtZU
>>169
あ、UCS4 だ。UTF-8 じゃねぇや..ボケてた。
>「mb/wcはコード変換機能ではない」だろうよ。
が言いたかったことです。wchar_t の実装がどうなってるかを
仮定するな、ってことで。
0173login:Penguin03/04/29 04:55ID:TV50G8uM
Gtk でスプラインとかベジェとか、曲線を描きたいのですが、サンプルとか無い
でしょうか。Gtk 単体では難しそうなので、他のライブラリも必要かなと思うの
ですが。作りたいのは Flash みたいな Vector Animation です。
0174login:Penguin03/04/29 15:26ID:37fqnSLQ
DPS (Display PostScript)を使用するのがいいんじゃない?
使ったことないけど(^^;
http://www.xfree86.org/4.2.0/dps.html
0175login:Penguin03/04/29 18:48ID:LuljFrkZ
>>173
http://www.gyve.org/
はもうダメぽなので
http://sodipodi.sourceforge.net/
とか参考にどうよ、かなり萎えるTopだが。
0176login:Penguin03/04/29 21:12ID:dHsFcWW5
>>175
スクリーンショットがひどぃ...
0177login:Penguin03/04/29 22:05ID:ER/8FD9H
>>175
gyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
0178login:Penguin03/04/29 22:35ID:/4ZC/4OS
>175
ワラタ、腹筋硬直するぐらい
0179login:Penguin03/04/29 22:36ID:AjRnLWEG
参った・・・
0180login:Penguin03/04/29 22:39ID:clC6rFXj
精神的ブラクラ
http://sodipodi.sourceforge.net/index.php3?section=gallery/ain
0181login:Penguin03/04/29 22:40ID:OyAr9ioi
>174-175
ありがとうございます。
guppi や gtkextra も見てみましたが、GtkGLExt で OpenGL を使ってみようかな
と考えています。
0182login:Penguin03/04/29 22:49ID:/4ZC/4OS
>180
svgでここまで書かれると凄いものがあるな
0183login:Penguin03/04/30 05:22ID:+Nekyn/i
>>173
使ったことはないのだが、GNOMEならlibartを使うのが王道っぽい。
0184login:Penguin03/04/30 13:31ID:Cq88QVNL
gyk+インスコ難い
0185login:Penguin03/04/30 22:31ID:frxRUIpZ
>183
これかなり良いですね。ちょっと試してみます。ありがとうございました。
0186login:Penguin03/05/01 03:56ID:BcJCA4M8
ほー、levien さんって GhostScript のメンテナーさんなんだ。なるへそ。
libart って gnome 無くても使えるみたいだね。fresco にも使われてる。
0187login:Penguin03/05/01 04:22ID:v9irLuOR
>>164

wchar_tをUnicodeと見なすのは悪だというのは、ダメハッカーの寝言。
このアプリではwchar_tはUnicodeに限定すると、宣言すればいいだけのこと。
どうせ、g_locale_to_utf8()も内部ではmbstowcs()呼んでるよ。
まあ、その場合でもglibの関数を使うべきだが、それはUTF-8仮定とか
が理由ではない。

>>173
ベジエなんて自分で書けるだろ。ほれ。
double x = (1-t)*(1-t)*p0.x + 2*t*(1-t)*p1.x + t*t*p2.x;
double y = (1-t)*(1-t)*p0.y + 2*t*(1-t)*p1.y + t*t*p2.y;
0<=t<=1な。

>>183の言うとおり、libartでもベジエをドローできる。
libartだとアンチエイリアスの機能もあるのでありがたくはある。


0188login:Penguin03/05/01 16:22ID:N64qTJQU
>>187 ソース読めない香具師ハケーン
glibは文字コード変換はiconvでやってますが何か?

g_convert_to_utf8 -> g_convert -> g_covert_with_iconv -> g_iconv -> iconv

MS-Win32のバヤイMultiByteToWideCharを使ってるがこいつは非POSIX関数だしな。
変換結果がUCS2(プッ16bitかよ)だと保証がある。
一旦MBCSからUCS2に変換して自前でUCS2->utf8変換書いた方が楽かもしれん。
あんまり褒められたコードとは思えんがな。

ちなみにSUSv4ではwchar_t is opaque objectと書いてありますが何か?

__UNICODE__とか__MBCS__とか__、C99の__STDC_ISO10646__を宣言するのは勝手だが、
MS-Win32のMSBC用バイナリ for Win9x/Me とUNICODE用バイナリ for NT/2k/XP のように
互換性の無いものになる & サポートしないplatformがあることは覚悟しとけ。

018918803/05/01 16:27ID:N64qTJQU
補足、Win32の場合__UNICODE__と__MBCS__で
リンクされる関数が別になるだけまだまし。
__STDC_ISO10646__の場合は同一インタフェースになるからな。
どこでブっ壊れるか判ったもんじゃない。

まあNetBSDのsys/cdefs.h内の__RENAMEマクロのような仕組みを使うとか
ldに細工するとかで、別シンボルを呼び分ける仕組みがlibcに用意されれば
Win32並に安全にはなる。
0190山崎渉03/05/22 02:04ID:p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
0191login:Penguin03/06/01 21:11ID:Mv7aj8Tw
Ruby-Gtk+-2には、Ruby-GTK+-1.2のときにあったCListは無いよね?
CListと同じことを別の方法でするには、なんかいい方法ありますか?
0192動画直リン03/06/01 21:13ID:+qVihZQ+
http://homepage.mac.com/hitomi18/
019316003/06/01 22:02ID:JkScEVpY
>>191
Gtk2ではCListのかわりに
GtkTreeViewを使うことになっている。

C言語での話になるが、GtkListStoreをつくってそのなかに
表のデータをほうりこんでやり、
別にGtkTreeViewヴィジェットを作成して
gtk_tree_view_column_new_with_attributesで表示上の列と
データ上の列を対応づけ(アトリビュートの"text"に何列目の値を
表示するかを指定する)
gtk_tree_view_set_modelで、先に用意したGtkTreeViewrと
GtkListStoreを対応づける

おそらくRuby-Gtkでも同じようにできると思われ
0194login:Penguin03/06/02 05:57ID:l0w8IOx1
で、何作るの?
何つかってもそれは個人の自由だから良いが
目的があるのと無いのでは習得速度に雲泥の差がある。
最低限のライブラリの使い方を覚えたらさっさgladeでも使って
組んだ方が良いよ。
目的が無いとすぐ飽きるし飽きると忘れる、結局無駄な時間を過ごした事になる。
ある程度長い時間使ってないとモノにならない。
見た目にしろlibgtk自体いしろ結局”ガワ”でしかないのだから
ちゃんと日本語化されてるなら後は中身に心血を注ごう。

cだからめんどくさそうとか言う奴はgtk,gdk,glibのチュートリアルをだいたい
どんな事ができるかざっと眺める位にして後はgladeつかえ。
019519103/06/02 20:31ID:H7/+JInF
>>193=160
Ruby-GNOME2のソースについてたサンプルに、GtkTreeViewもありました。
どうやら、説明してくれた通りのようです。
ありがとうございました

>>194
MPlayerのフロントエンドを作ろうかと...
飽きないように、まったり作ろうと思ってます。

glade使ってますよ。便利ですね、あれは。
頭の中でゴチャゴチャ考えるのがいかに非効率的かわかります(^^;
0196login:Penguin03/06/05 00:27ID:NeWdmQAa
>>195
mplayerのフロントエンドなら2つ3つあるみたいだけどそれとどういう差別化をす
んの?
俺としてはフロントエンドによる速度低下を使い勝手が上回るような奴を希望。
0197login:Penguin03/06/08 11:46ID:h1K8ATYr
GTKで何か作りたいけどWinみたいにGUI主体じゃないから
作りたいものがない・・・
こういうツールが欲しいとかなんかないですか?
0198login:Penguin03/06/08 12:18ID:NVYlBdnZ
>>197
家計簿ほすぃ
019919703/06/08 17:11ID:h1K8ATYr
家計簿ですか、、Linuxで家計簿付ける人っているのだろうか。(^^;
需要があるかどうかわかりませんが勉強かねてそれらしいの作ってみます。
0200login:Penguin03/06/08 18:19ID:TUPg9XW4
>>199
>>198じゃないけどモノによっては期待する。
今OOo使って家計簿つけてるんだけど、なんかイマイチ。
機能を絞り込んだ「一人暮らしの男のための家計簿」みたいな感じだと俺は使うと思う。
020119703/06/08 21:38ID:NVYlBdnZ
>>199
>>200の「一人暮らしの男のための家計簿」ようなやつがほしい。

#さらに完成度が高まると、主婦層を狙ったキラーアプリにもなる!
0202login:Penguin03/06/13 15:25ID:bpko5Clf
aunjuta って内蔵エディタ以外のエディタ指定できますか?
なんか、そういう設定項目が見つかりません。
020319703/06/14 07:43ID:aLrsfyXo
>>200
OOoみて公開するの躊躇ったんですが、せっかく作ったので公開します。(^^;
# めちゃくちゃシンプルな家計簿ですが…。
http://gtk2ch.hp.infoseek.co.jp/

UNIXプログラムは今回が初めて&一週間そこらで作ったのでヘタレなのはご勘弁ください。。
# あぁなんか叩かれそうだ…。
0204login:Penguin03/06/16 23:41ID:qOFJTntY
見れん >>203
0205login:Penguin03/06/17 00:48ID:rQFVPuSz
ぢつは>>203がアクセスできるうちに手にいれたのだが
src/menu.cpp:40: invalid conversion from `void*' to `gchar*'
src/menu.cpp:40: invalid conversion from `void*' to `void (*)()'
っていうのが9回くらい出た後に

src/menu.cpp: function 内の `void print_hello(void*, unsigned int,
GtkWidget*)':
src/menu.cpp:63: invalid conversion from `void*' to `GdkEvent*'
となってコンパイルできない。

gcc-3.2.2-5
gtk2-2.2.1-4
glib2-2.2.1-1

直してからカキコしようかとも思ったが、
あまりカキコせずにいるのもなんかなーと思ったので一応。
0206login:Penguin03/06/30 20:36ID:yw9J/DOE
197どこ逝った
0207login:Penguin03/07/01 00:52ID:NjIY7kth
    age       テモ      イイ?
  ∧_∧     ∧_∧   ∧_∧ 
 ( ・∀・ ∩   ( ・∀・)  (  ・∀)
⊂    ノ  ⊂ ⊂  )  (  (_`つ
 ,(__つ    < < <   > 〉\ \
  し'      (_(_)  (__) (__)
0208login:Penguin03/07/10 02:20ID:h0xkhYEg
どなたか助けて下さい。

gtkhtmlの、src/gtkhtml.cの2670行目くらいにある

gtk_html_im_preedit_changed_cb (GtkIMContext *context, GtkHTML *html){
g_warning ("preedit changed callback: implement me");
}
をちゃんと実装したいのです。(このメソッドは現在CVSから取ってきた
物でも実装されてません)
目的は、evolutionで日本語メールを書く時に、XIM(or IIIMF)経由で入力すると
確定前の変換中の文字が見えないのを直したいのです。

http://docs.linux.cz/gtk/gtkimcontext.html#GTK-IM-CONTEXT-GET-PREEDIT-STRING
ここらへん見ながらいろいろいじったのですが、CもGTKも全く分らないため、
私には手が出せそうにありません。
よろしくお願いします。
0209login:Penguin03/07/10 11:29ID:cUIBJ5ZH
>>208
「いろいろいじった」のなら手は出せてるという事。
そんなに心配せず、勇気を持ってhackしれ。

俺はそっち専門じゃないので力になれないがとりあえず、
ちゃんと未確定文字が見えてる非gtkhtmlのアプリのソースを
漁るとか、im-module関係のプロダクトのソースをのぞくとか。

あるいは、gnome-devel at gnome.gr.jpあたりで「格闘してます」
ていう話を出せば、助け舟出してくれる人もいるかも。
0210login:Penguin03/07/12 10:58ID:5xq0Wvrh
GTKもWideStudioも見た目がダサダサなんですが、もう少しマシなのありませんか?
ソースあるんだから自分でいじれ とかは無しでお願いします
0211login:Penguin03/07/12 14:06ID:CNiFHab+
具体的にどの部分か書かないと意味分かんねーぞゴルァ。
けどツールキットとして見た目がダサい、ってことなら
GTKのテーマ使えば変え放題だと思うんだけど。
0212login:Penguin03/07/12 14:52ID:4FR+yimT
言いたいのは>>75-78と同様のことでした
Windows標準色に慣れきってるので随分違和感があるんだよなぁ・・・テーマ書くのめんどくさいし
0213login:Penguin03/07/12 15:07ID:2HSyDTV2
>>212
すごいな。
自分が慣れてないものは「ダサい」とみなしてしまうのか。

これでも入れとけ。
http://themes.freshmeat.net/projects/trueblue/
021421103/07/12 15:08ID:CNiFHab+
>>212
そんなあなたにGTK-Wimp。
ttp://gtk-wimp.sourceforge.net/
それ以外でも、Win9x風味のならデフォルトで入ってるよね。

気に入らなきゃ
ttp://themes.freshmeat.net/
にでも行ってらっしゃい。

ってすげースレ違いの予感。
0215login:Penguin03/07/12 15:09ID:CNiFHab+
>>213
>>214
擦れ違い…
0216login:Penguin03/07/12 15:12ID:3e213sQq
俺はダイアログでESC押した時とかEnter押した時なんかの挙動のほうが気になるんだけど。
変更可能?ESCで閉じたりとか
0217login:Penguin03/07/12 15:23ID:CNiFHab+
少なくともGDKレベルでやれば何とかなる気もすます。
ていうかバグ臭いかなそれ。
0218login:Penguin03/07/14 02:43ID:5XjH4O4S
age
0219山崎 渉03/07/15 11:17ID:doz396Fq

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0220login:Penguin03/07/15 12:05ID:Fo16Kpwc
(・∀・)renice!
0221login:Penguin03/07/17 20:37ID:qoyTZeYl
で、GtkGLExt使ってるヤシっている?
0222login:Penguin03/07/18 00:28ID:NwO1ORPE
GTKって、タブ移動の概念ってある?
なんかこういうダイアログって、
http://gtk-wimp.sourceforge.net/screenshots/gfx/gtk.gif
タブコントロール(タブ移動とは別の)に移動できないんだけど。
0223login:Penguin03/07/19 02:39ID:E7P2kjzI
/* 初めて書いたGTK2アプリを記念カキコ */

#include<gtk/gtk.h>

int main (int argc, char** argv)
{
GtkWidget *window;
GtkWidget *calendar;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);

calendar = gtk_calendar_new();
gtk_container_add(GTK_CONTAINER(window), calendar);

gtk_widget_show_all(window);
gtk_main();
return 0;
}
0224login:Penguin03/07/19 14:08ID:zaPj7Dgy
>>223
ひねりなしかよ。
0225login:Penguin03/07/23 11:46ID:ZPPlsMW8
(・∀・)renice!
0226login:Penguin03/07/24 06:52ID:fVjg/qZ7
>>223はその後
gtk_window_set_title(GTK_WINDOW(window), "gcal");
を加えたに12signal
0227login:Penguin03/07/27 11:44ID:Aq2rr+SO
(・∀・)renice!
0228login:Penguin03/07/30 12:13ID:cPdgkLk2
(・∀・)renice!
0229ぼるじょあ ◆yBEncckFOU 03/08/02 05:03ID:+QUfMouI
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
0230login:Penguin03/08/02 10:26ID:2rmp9gin
(・∀・)renice!
0231login:Penguin03/08/08 11:54ID:mg5o8ebS
(・∀・)renice!
0232login:Penguin03/08/08 13:14ID:9dXoYmRI
(・∀・)
0233login:Penguin03/08/13 12:31ID:pfCYHBFY
(・∀・)renice!
0234山崎 渉03/08/15 22:50ID:dil3w4kp
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0235login:Penguin03/08/15 23:48ID:GfNK1qbf
(・∀・)renice!
0236login:Penguin03/08/16 18:54ID:1hd43OWj
もしかして、gtk1.2 で Button4,5(ホイール)の
GDK_BUTTON_PRESSイベントって配送されない?
0237login:Penguin03/08/17 07:22ID:MkQ6Z6x8
質問。
ItemFactory のアクセラレーターキーの指定で、
ファンクションキーの場合はどう表記すればいいですか?
0238login:Penguin03/08/19 09:54ID:ocMYGtK+
IDがGtK+なので祈念化旗鼓
0239login:Penguin03/08/25 09:48ID:+hXUD3jL
(・∀・)renice!
0240login:Penguin03/08/28 18:06ID:r/AujdJz
gtk+2ってかなり重くない?
gtk+1は再描画一瞬で終わるのにgtk+2は描画してるの見えるし。
何が悪いんだろ。utf8? xft?
0241login:Penguin03/08/28 18:29ID:HlBh46Kn
メニューバーをクリックするとメニューが出てくる(ファイルとか編集とか)
同じ場所をもう一度クリックするとメニューが引っ込む・・・

はずなんだけど
Linuxのアプリって出したメニューが引っ込まないような気がする
引っ込むようにはできないの?
0242login:Penguin03/08/28 18:34ID:5x7m3sUW
gtk2を使ってちょ。
0243login:Penguin03/08/29 16:34ID:9qGUa9Nr
初心者です。どうしても気になるけれど
どこにも解説がない事があります。

なぜ
GtkButton *button = gtk_button_new();
じゃなくて
GtkWidget *button = gtk_button_new();
なのですか?
0244login:Penguin03/08/29 18:52ID:F8jx8uO3
gtk_button_new()が GtkWidget* を返すからだろ。
024524303/08/29 23:13ID:9qGUa9Nr
つまりは、なぜに
GtkButton *gtk_button_new(void);
でないか、ということをお聞きしたいのです。
0246login:Penguin03/08/30 00:40ID:npfy9qpx
鷲のしょーもない理解でよければ...

GtkButtonヴィジェットは、ボタンとしての側面以外にも
「ラベルとかをはりつけて表示する(Container)」とか
「シグナルを発生する」(まぁボタンとしての性質だが、ボタンに限らない)
とかもある。

そこで、生成するときはGtkWidgetで生成しておき、必要に応じて
キャスト(GTK_BUTTON()とか)して使う。

ボタンの性質(押されているか)を扱うときはGTK_BUTTONでキャストするし
コンテナの性質(ほかのヴィジェットを貼り付ける)を扱うときは
GTK_CONTAINERでキャストすることで
それぞれの型のヴィジェットとして扱うことができる。
0247login:Penguin03/08/30 10:44ID:aGRYNy0z
>>243
なぜなら、オブジェクト指向に則っているから。
0248login:Penguin03/08/30 11:19ID:ooQKA+zG
>>247
オブジェクト指向なら new くらい継承してくれってことじゃないのか?
024924303/09/01 01:17ID:uanR/ozZ
>>246
解説どうもです。
そこらへんの使い方は分かってるつもりなんですが、
「そこで」の部分の理由がよく分かないんです。
普段は、ButtonはButtonとして定義して、CONTAINERとして使いたい
ときはそうキャストすればいいのではないかと思ったので。

>>247,248
すまん、よく分からない。(Eiffel本読書中の身です)
0250login:Penguin03/09/01 03:10ID:6aY0iPSh
javaやc++と違ってcでオブジェクト指向を実現しているgtk+では
アップキャストでも明示的にキャスト用マクロが必要となる。

GtkWidget* を引数にとる関数を使う頻度の方が GtkButton* を引数にとる関数を使う頻度より多いから
最初から GtkWidget* を返した方が後々のキャスト量が減ってプログラム記述の冗長さが減る
025124303/09/01 12:57ID:uanR/ozZ
>>250
なるほど、頻度の問題なんですね。
どうもありがとうございました。
0252login:Penguin03/09/01 20:35ID:2b6fGses
素朴な質問です。

gtk2でオリジナルwidgetを書いています。
親widgetでハンドルされていないイベントを追加する必要に迫られました。
(例:GDK_POINTER_MOTION_MASK)
ただし、realizeイベント・ハンドラはオーバーライドしていません。
皆さんならどうしますか?

1. realizeをオーバーライドして、GdkWindowAttr構造体event_maskメンバで指定する。
2. GInstanceInitFuncハンドラ内でgtk_widget_add_events()を呼び出して追加する。
3. それ以外。
0253login:Penguin03/09/06 17:30ID:E4nfQMs/
(・∀・)renice!
0254login:Penguin03/09/20 19:40ID:63iWcr2P
(・∀・)renice!
0255login:Penguin03/09/22 23:08ID:vXbOU9AM
VRMLオブジェクト(CG)をファイル選択widgetから選択し、
ウインドウwidgetに表示出力させたいと思っているのですが、
VRMLオブジェクトを出力出来る様なwidgetは存在するのでしょうか?
もし知っている方いらっしゃいましたら、ご助言宜しくお願いします。
0256login:Penguin03/09/23 00:04ID:C61XdUyB
>>255
"VRMLオブジェクトを"直接表示できるものは知らないが、
VRMLの表示部分は自分で作成するのであるというのなら、2通りの方法が

1.線や塗りつぶしが主体の場合
widget=gtk_drawing_area_new() で表示領域を確保
barwidget[trk]->window をDrawableとしてgdk_draw_rectangleなどの
Gdk描画系関数を実行
Xのプログラミングに近く、色の扱いが面倒だし、再表示のたびに線とかを
描き直さなければならない(DrawableとしてPixmapを使えばいいが)

2.イメージを表示する場合
pixbuf=gdk_pixbuf_new(...);
widget=gtk_image_new_from_pixbuf(pixbuf);
なんかでpixbuf描画領域を確保。描画操作はpixbufに対して行う。
pixbufは1ピクセルにつきR,G,B(,A)1バイトずつのVRAMのイメージ。
色はRGB要素を指定するだけでいいが、線を引くにもどの座標に
点を打つかは計算してやらないといけない。

1,2の合わせ技として、gdk_pixbufの内容をDrawableに描く関数
(gdk_draw_rgb_image等)もあるので必要に応じて使う。
0257login:Penguin03/09/23 17:39ID:CXvOrUVV
>>252
超遅レスだけど、余計なコ−ド書かない2でいいのでは。
realizeを書くケ−スは、realizeが実装されていない抽象クラス(GtkWidgetとかGtkContainer)から直に派生する時ぐらいじゃないかな。
025825703/09/23 17:53ID:CXvOrUVV
あ−実装されてないっていうのはgdk_window_newを呼んでないって意味でつ
0259login:Penguin03/09/25 17:05ID:FN6PNMc8
(・∀・)renice!
0260login:Penguin03/10/01 17:51ID:OtB8zaps
gtktreeview上にリストのデータを表示してる時に、複数行を選択した状態で
右クリックしてメニューを表示させたいのですがどうすればいいんでしょう?

複数行の選択まではできてますが、そこで右でも左でもクリックすると複数
行の選択がクリックした行だけの選択にかわってしまいます。
0261login:Penguin03/10/11 23:17ID:5hfILiTB
初歩的な質問ですいません。
cygwinでGTKを使用したいため、 様々なホームページを参照した結果GTK2.0をインストールしました。
サンプルソースのインクルードの指定が
#include "gtk/gtk.h"
となっているのですが、今回、インストールした結果、
次のようなディレクトリ構造であった為、以下の記載に変更しました。
gtk-2.0/gtk/gtk.h
これでgcc test.cを実行したところ
gtk.hでincludeされている他のヘッダーファイルが参照できず、
たくさんエラーが出ました。
そこで、元々のサンプルのインクルードの記載に戻し、
gtkディレクトリを一つ上にコピーしたのですが、同様の結果でした。
すいませんが、解決方法をご教授下さい。
<サンプルソース>
#include <gtk/gtk.h>
int main(int argc, char* argv[]){
GtkWidget* window;
GtkWidget* label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
label = gtk_label_new("Hello World.");
gtk_container_add(GTK_CONTAINER(window), label);
gtk_widget_show_all(window);
gtk_main();
return 0;}
0262login:Penguin03/10/11 23:44ID:kUFRMD7K
cygwinのことは知らないけど、コンパイルのオプションに-Iでインクルード
ファイルのありかを教えるんじゃないの?
というか pkg-config --cflags --libs gtk+-2.0 で全部勝手にやってくれる。
ドキュメントのコンパイルのあたりよんでよ。
0263login:Penguin03/10/13 16:46ID:Y2TizDoa
GTK使うなら、1.2系を使えよ!
0264login:Penguin03/10/13 19:55ID:Y2TizDoa
1.2なら俺がいろいろ教えてやるぞ
0265login:Penguin03/10/13 20:55ID:ebIrzkRx
1.2って削除の方向に向かってるんですか?
0266login:Penguin03/10/13 21:24ID:8ZoDmGS+
>>263
理由は?
0267login:Penguin03/10/14 23:23ID:6azmQS+6
初心者です。
GTKでxpmを表示することができたのですが、
xpmデータの上に、さらにxpmデータを好きな位置に
描画することってできますか?
すいません、教えて下さい。
0268login:Penguin03/10/15 00:58ID:FhH2bw4j
>>267
gdk_pixbuf_new_from_file で、ファイルからGdkPixbufをそれぞれ取得
gdk_pixbuf_render_to_drawable で、GdkPixbufをGdkDrawableに重ねうち
GdkDrawable(pixmap)はgdk_pixmap_newで作成しておく...(1)
(1)で作成したpixmapをgtk_drawing_area_newで取得したwidget->windowに
exposeシグナル発生のつど転送(gdk_draw_drawable)

で、いけると思う。

GdkまわりはXの知識がないと難しいかも
026926703/10/18 01:50ID:+faUZTm8
>>268
ありがとうございます
0270login:Penguin03/10/24 19:11ID:FhYActk9
age
0271login:Penguin03/10/26 16:31ID:khx8YbTs
GTK1.2+のいろいろなホームページを見たのですが、
理解できないので教えて頂けないでしょうか。
xmp、テキストなどにウィジェットにフォーカスって当てることできますでしょうか?
できるようでしたらどのような方法でしたら良いか教えて下さい。
0272login:Penguin03/10/26 17:21ID:XFblFRSC
gtk_container_set_focus_childとか?
0273login:Penguin03/10/26 18:43ID:Cf18t0yU
>>271

イベントボックスの中にGtkLabelとか入れればできる。
FAQだから、ぐぐれ。
0274login:Penguin03/10/28 00:46ID:n92YYpRn
>>272
>>273

271です。
レス頂いてすいません。
チャレンジしてみます。
0275login:Penguin03/10/31 18:42ID:IOboVxUJ
gtk+ではじめるXプログラミングなる本を読みながら、Gtkに入門してみました。

今、テキストエディタらしきものを作ってみようと思っています。
テキストウィジェットの横幅を半角80文字固定にしたいのですが、方法が
わかりません。

また、半角80文字目で自動的に\nを挿入する方法も出来れば教えて下さい。
0276login:Penguin03/10/31 19:00ID:XMwowiCK
>>275
glade で雛形を作って、生成されたソースコードを読む手もあるなぁ
0277login:Penguin03/11/01 06:11ID:hDKdsiea
>>275
gdk で文字幅もらってそこからウィンドウサイズを決めるとか。

gtk つかうなら 2.* の方がよくないかい? text ウィジット
も textview にかわってるようだし。
0278login:Penguin03/11/05 01:14ID:a2IzLU73
ge
0279login:Penguin03/11/10 23:36ID:SWl6gM2L
AGE
0280login:Penguin03/11/16 02:05ID:RQO5eIp4
すみません。
直接Gtkと関係ないのかもしれませんが、Gnome標準アイコン(CD-ROM)等を
表示させるにはどうすればよいのでしょうか?

Gladeの吐き出したソースを元に、以下のプログラムを作成してみましたが、ダメでした。

なお、事情によりGTK1.2でプログラミングを行っています。よろしくお願いします。

#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
GtkWidget *window1;
GtkWidget *image1;

gtk_init(&argc,&argv);

window1 = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window1), ("window1"));

image1 = gtk_image_new_from_stock ("gtk-go-up", GTK_ICON_SIZE_LARGE_TOOLBAR);
gtk_widget_show (image1);
gtk_container_add (GTK_CONTAINER (window1), image1);

gtk_main();

return 0;
}
0281login:Penguin03/11/16 09:25ID:rEMWU24N
gtk_widget_show (window1);
いれれ
028224303/11/16 10:13ID:ttZTK75X
>>280
1.2には gtk_image_new_from_stock() ないと思うんですけど。

#include <gnome.h> 入れて、あとは
http://developer.gnome.org/doc/API/libgnomeui/gnomestock.html
を見て適当にどうぞ。
0283login:Penguin03/11/16 12:50ID:blYqkdPM
GTK+ FAQ 2003-11-05版 日本語訳
http://www.gnome.gr.jp/docs/gtk+faq.20031105.html
028428003/11/16 13:24ID:RQO5eIp4
>>281-283

さんきす!

ちょっと今日は時間がないので、明日辺り再チャレンジしてみます!
028528003/11/17 18:26ID:YrxAFWBK
#include <gnome.h>

すると、ヘッダファイルが見つからないとエラーが出てしまいます。
これは、Gtkの時同様にコンパイルオプションが必要に違いない!

と思って、ググって見ました。それを参考に

$gcc -c -main.c `gtk-config --cflags` `gtk-config --libs` `gnome-config --cflags --libs gnomeui`

として、コンパイルしてみたのですが
gcc: -lgtk: リンクが完了しなかったのでリンカの入力ファイルは使われませんでした
等のエラーが出てしまいコンパイルできません。


ちょっと、Gtkからお話ずれてしまいますがどの様にコンパイルすればいいのでしょうか?
なお、gnome-config --cflags --libs gnomeuiを直接実行するところちゃんと
値が帰ってきました。
0286login:Penguin03/11/17 18:34ID:aBzY07iI
>>285
-cはコンパイルするだけ。
0287login:Penguin03/11/17 21:41ID:pT6iG3D7
>>285
gtk-config --foo …はいらない。 gnome-configだけで十分。
ていうか「ちょっと」って、コンパイラオプションの基本中の基本すら
他人に解説させて、「だいぶ」話がずれてるよ…。

http://www.gnome.gr.jp/docs/gnome-libs-tutorial/building-gnome-apps.html
参照。
0288login:Penguin03/11/18 22:39ID:/SRrudRK
いきなり質問から入ってすみません。
今、GTKを使っているのですが、リストボックスにスクロールバーをつける方法
がわかりません。私が買った本やサイトなどをみてもテキストにスクロールバーを
つける方法しかありません。
hscroll=gtk_hscrollbar_new(GTK_TEXT(text)->hadj);
この(GTK_TEXT(text)をGTK_LIST(listbox)変えればいいなんて安直にやってみた
のですが当然のごとくstructure has nomember named 'hadj'といわれました。
リストボックスには別のメンバが用意されているのですか?それとも根本的にに間
違っているのでしょうか?どなたかご教授おねがいします><
0289login:Penguin03/11/19 00:59ID:Wqf4YGJk
GtkScrollbar 使わずに GtkScrolledWindow 使う。
0290login:Penguin03/11/19 04:20ID:yn0Z9dim
>>289
GtkScrolledWindowとctreeでやりたかったことができました!
listboxはGtkScrolledWindowでやってもエラー?が、、きっと何かまちがって
たんですね。。
ありがとうございました!
029128003/11/21 01:45ID:S7n3MU64
>>287

お世話になりました。ウィンドウをGtk Window型(?)からGNOME_APP型
に変更して、無事ツールバーを実装する事が出来ました。

Linuxのプログラミング自体が初めてで、基礎的な質問をしてすみませんでした(^^;
0292login:Penguin03/11/24 19:03ID:ukNjiyv7
GTK+ FAQ 2003-11-20版 日本語訳
http://www.gnome.gr.jp/docs/gtk+faq.20031120.html
0293login:Penguin03/11/25 04:09ID:C+TQgfqW
gtk_widget_show(dialog);
func();
gtk_widget_destroy(dialog);

として、func()を実行中は「実行中、、、」みたいなダイアログを表示させて
おきたいのですが、うまくいきません。


実際に動かしてみると、func()は処理されるのですがdialogが表示されません。
正しくは、どうするべきでしょうか?
0294login:Penguin03/11/30 22:37ID:ufz1QKFT
gtk2.xを勉強したいんだが
どっかいいサイトないかな?
0295login:Penguin03/11/30 23:04ID:S9DI/WHa
>>294
http://developer.gnome.org/doc/
http://www.gnome.gr.jp/docs/
0296login:Penguin03/11/30 23:22ID:Qt3q37KD
たった二つ上のレスぐらい見ろよ・・・
0297login:Penguin03/11/30 23:42ID:tKo4rvDp
>>293
func の後で gtk_main() で、
func の終了時に gtk_main_quit() をよぶ。
0298login:Penguin03/12/01 01:16ID:2vS05X6T
>>293の質問と似てるけれど、ソケット通信の待ち受けにwhile+selectを使おうと思いましたがどこに記述すればよいのかわかりません。
gtk_main()の上に書くと作ったwidgetが表示されず、下に書くとどうやらgtk_main_quit()が呼ばれたあとに実行されてしまいました。
0299login:Penguin03/12/01 01:23ID:D/d2pGGk
>>298
そりゃそうでしょう。gtk_main()ってメイン「ループ」だよ。
ここらへんが役に立てばいいのですけれど…。
http://www.gnome.gr.jp/docs/gtk+-1.2.x-refs/gtk/gtk-general.html#GTK-TIMEOUT-ADD
030029803/12/01 03:12ID:2vS05X6T
>>299さんのヒントでググって、
i = gtk_timeout_add (時間, (GtkFunction)関数, 引数) ;
gtk_main ();
gtk_timeout_remove(i) ;

てな具合にしたら動いたみたいです。どうもありがとうございました。
0301login:Penguin03/12/01 04:32ID:rp3RKVAH
>>300
gdk_input_addの方が良いと思うんだが、どうよ?
0302gnomeユーザー03/12/01 23:19ID:kfK4dpcc
このスレを呼んで、gnome.hを使うようになった者です。

設定ファイルの読み込みから、ツールバーの作成まで容易に出来る様に
なり、かなり重宝しています。

さて、そこで質問なのですがツールバーから呼び出されるコールバック関数に
引数を渡したい場合はどうすればよいですか?

static GnomeUIInfo toolbar[] = {
GNOMEUIINFO_ITEM_STOCK("メール送信","send mail.",
send_mail(*text),
GNOME_STOCK_PIXMAP_MAIL_SND),
GNOMEUIINFO_END
};

void send_mail(GtkWidget *text)
{
この関数で、テキストウィジェット*text内の文字列
を処理
}

int main(...){
...
GtkWidget *text;
...
}


知っていれば簡単な事の様な気もするのですが…。
宜しくお願いします。
0303login:Penguin03/12/01 23:47ID:RoaPDgRi
gnome_app_create_toolbar_with_data ()
0304login:Penguin03/12/01 23:48ID:D/d2pGGk
>>302
gnomerが増えてうれしい限りです。
こちらはもう見ましたか?
http://www.gnome.gr.jp/docs/gnome-libs-tutorial/
0305login:Penguin03/12/01 23:52ID:D/d2pGGk
>>301
む、自分はそれ知らなかったっす。
どんな風に良いんでしょう?
0306gnomeユーザー03/12/02 00:08ID:V7ZgsjLM
>>303,304

ありがとうございました。
with_data()
で試して見ます。
0307gnomeユーザー03/12/02 01:05ID:V7ZgsjLM
出来の悪い子でごめんなさい(つдT)
gnome_config_set()あたりはサンプルソースが載っていてわかりやすかったのですが・・・。

>>304のページを読んで見ましたが、わかりません。
「コールバック関数の data フィールドに引き渡される拡張パラメータを引数として呼び出して下さい。」

とあるので、
void test(GtkWidget *widget,gpointer data)
{/*textウィジェットの文字数を調べてみる*/
printf("length=%d\n",gtk_text_get_length(GTK_TEXT(data)));
}

static GnomeUIInfo toolbar[] = {
GNOMEUIINFO_ITEM_STOCK("てすと","test",
test,
GNOME_STOCK_PIXMAP_MAIL_SND),

GNOMEUIINFO_END
};

int main(int argc,char *argv[])
{
GtkWidget *window,*text;
gnome_app_create_toolbar_with_data (GNOME_APP (window), toolbar,text);
...
}

としましたが、うまく動いてくれません。なんか意味を取り違えて、勘違い
してるんだとは思うんですが。
0308login:Penguin03/12/02 03:33ID:qj4or6iA
>>301
ここですね。
http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja-17.html
わたしがやりたいのはソケットの待ちうけなので、ソケットディスクリプタに反応があったときに関数を呼び出すgdk_input_addのほうが適してるみたいです。
まず参考にして組んでみます。ありがとうございました。
0309gnomeユーザー03/12/02 15:23ID:V7ZgsjLM
>>307

ちなみに
gnome_app_create_toolbar_with_data (GNOME_APP (window), toolbar,(gpointer)"test");

として、コールバックで呼び出すと"test"と表示する事が出来るのでWidgetの送り方がおかしいんだとは思うんですが…。
0310login:Penguin03/12/02 15:32ID:Rv4Kirv7
gnome のライブラリ使ったことないけど
printf("length=%d\n",gtk_text_get_length(GTK_TEXT((GtkWidget *)data)));
とか。

void test(GtkWidget *widget,gpointer data)
この widget って text じゃないのか?これまた、全く知らんのだが
0311gnomeユーザー03/12/03 20:30ID:O3qA9IIV
一緒に渡したい値がいくつかあったので、textもまとめて一つの構造体にして
構造体のポインタを渡すことにより、無事にtextの中身を処理できるようになりました。

ありがとうございました。
0312gnomeユーザー03/12/03 23:03ID:O3qA9IIV
たびたびすみません。

GTKは<varargs.h>と干渉してしまうのでしょうか?
正常に動作していたプログラムに、gtk/gtk.hをインクルードすると
プログラムが動作しなくなります。(インクルード文以外は一切変更なし)

>>va_start(args);
の部分で
マクロ "va_start" は引数を 2 要求しますが、1 個しか与えられていません
と、gccがエラーを吐き出してしまいます。該当行をコメントアウトすると
コンパイルはできますが、やはりセグメントエラーで実行できません。


何か解決策はないでしょうか?
0313login:Penguin03/12/03 23:19ID:X38Jttep
>>312
うーん、もうちょっとご自分で調べられないもんでしょか。

なぜにそんな古めかしいものを使うのでしょうか。
いにしえのANSI C(C89)から<stdarg.h>が推奨です。
そっちではva_startマクロの引数は二つです。

どのような理由があるか知りませんが、ANSI Cを前提に
書かれているGTKとそれ以前とのコードの組み合わせは、
無理が出ても仕方がないように思われます。
0314gnomeユーザー03/12/03 23:30ID:O3qA9IIV
ちなみに、ソースの概略はこんな感じです。

int pac(va_alist)
va_dcl
{
va_list args;
va_start(args);
}

int main(){
...
va(pac,"test\n")
...
}
0315login:Penguin03/12/04 00:09ID:OqkJIjUR
>>314
はあ?
0316gnomeユーザー03/12/04 01:48ID:qZ2UE2k7
すみません(^^;
とりあえず、自己解決しました。

古めかしいヘッダファイルだったんですね(^^;
varargs.h gtkでググったんですけど、有力な手がかりがなくて。

なぜこのヘッダファイルなのかといいますと、参考文献に載っている
ルーチンを使ってgnomeアプリを作っていましてその文献に載っている
通りにやっている為です。

すみませんでした。
0317login:Penguin03/12/04 04:34ID:yhHCplv3
>>316
はあ?なんでstdargs.h使わんの?
0318login:Penguin03/12/05 00:38ID:G4+zQR3e
下のプログラムをプロファイラ(memprof)で見てみると func で確保した
ものがリークしてると出るんです。pixbuf しかないし、ポイントし続けてる
つもりなんですが、どこがいけないのでしょう?
#include <gtk/gtk.h>
GdkPixbuf *func(void)
{
GdkPixbuf *pixbuf;
pixbuf=gdk_pixbuf_new_from_file("file.xpm",NULL);
return pixbuf;
}
int main (int argc, char *argv[])
{
GdkPixbuf *pixbuf;
gtk_init (&argc, &argv);
pixbuf=func();
gtk_main ();
return 0;
}
0319login:Penguin03/12/05 00:48ID:G4+zQR3e
ちなみに、元のプログラムからいろいろ省いたのが上ので、元の
プログラムでは、pixbuf の表示はできてます。
それと、gdk_pixbuf_new_from_file は何箇所か使ってるんですが、
2回目以降はリークがでません。
0320login:Penguin03/12/05 11:02ID:jnR1QCBC
>>318
自分はgdk-pixbuf使った事無いんで自信はないですが、
使い終わったらunref()するのでは。
0321login:Penguin03/12/05 14:22ID:G4+zQR3e
>>320
func や main に g_object_unref をいれてみましたが、相変わらずです。

上のプログラムでは pixbuf を使ってないですが、元のでは頻繁に利用する
ツリー表示のアイコンとしてつかってるので、プログラム終了まで
解放する必要がないと思ってるんですが・・。
0322login:Penguin03/12/05 16:27ID:10rca9Ek
>>320
gdk_pixbuf_unref(pixbuf); は?

リファレンスマニュアル読んでないだろ。
0323login:Penguin03/12/05 18:07ID:jnR1QCBC
>>322
GTK2以降のリファレンスマニュアル読んでないだろ。
0324login:Penguin03/12/05 18:50ID:G4+zQR3e
Warning
gdk_pixbuf_unref is deprecated and should not be used in newly-written code. Use g_object_unref().

>>322
gtk2 なので上記のとおりなんです。
032531803/12/07 00:50ID:XPfatUb2
gtk と glib のデバッグ情報付きライブラリーをくっつけてみた。
pixbuf 読み込むための外部モジュールを読み込んでるあたりが、関係してる
ようだけど、俺のスキルでは読みきれません。

どなたか解説きぼん。
0326login:Penguin03/12/07 12:25ID:TQPhdBR3
他のメモリプロファイラを試してみる

0327login:Penguin03/12/09 00:21ID:9M8YybjC
GListを使ってコンボボックスのリストを作成しています。
しかし実行してみると、空行ばかりリストに登録されていて文字列が表示されません。ここで2日足踏み中_| ̄|○
list_server = g_list_append(list_server, "tmp");
のように直接文字列入れると表示されるのですが、文字列変数を入れるとダメぽ。助けて・・・

参考にしたサイト
http://www-6.ibm.com/jp/developerworks/linux/000811/j_glib.html
032831803/12/09 00:40ID:PATSnh0H
>>326
mpatrol 試した。
memprof 以上に unfreed があると指摘されまくり。
同じプログラムなのに・・。
mpatrol がよくわかってないのでもちっと修行してみやす。
0329login:Penguin03/12/09 00:44ID:0I2itgVb
>>327
まずテストコード書いて試してみよう。そんでだめなら、そのテストコードをここで
晒してみれば、きっと誰か答えてくれるよ。
033032703/12/09 00:52ID:9M8YybjC
static GList *
Load_servlist(GList *list_server)
{
FILE *fp ;
char tmp[256] ;
memset(tmp, '\0', sizeof(tmp)) ;
if((fp = fopen("servlist.lst", "r")) == NULL){
printf("serverlist not found\n") ;
exit(0) ;
}
while(1){
if(fgets(tmp, sizeof(tmp), fp) == NULL)//ファイルの終わり
break ;
if(tmp[1] == '\n')//空行を飛ばす
continue ;
tmp[strlen(tmp)-2] = '\0' ;//改行を削除
list_server = g_list_append(list_server, tmp);//リストに追加
printf("add list:%s\n", tmp) ; //ここではちゃんとファイルから読んだ文字列が表示されてる
memset(tmp, '\0', sizeof(tmp)) ;
}
fclose(fp) ;
return list_server ;
}
このあとに
gtk_combo_set_popdown_strings(GTK_COMBO(combo_server), list_server) ;//リストを登録
gtk_widget_show (combo_server);
としています。
http://member.nifty.ne.jp/jago/gtk/gtk05.htm
ここのテストコードのコピペでは動作しましたが、文字列格納部分だけこれに差し替えたところダメでした・・・
0331login:Penguin03/12/09 01:19ID:PATSnh0H
>>330
全ての要素が同じものを指してるからそうなる。

GList に追加する文字列は、それぞれにメモリーが割り当てられてる必要が
ある。g_strdup(tmp) した結果を g_list_append したらどう?
0332login:Penguin03/12/09 01:28ID:0I2itgVb
>>330
g_list_appendしても、list_serverには文字列がappendされるわけじゃなくて、
tmpへのポインタがappendされるだけ。で、その後ご丁寧にmemsetで'\0'
を代入してるから、中身が消えちゃうと。

だから、g_list_append(list_server, g_strdup(tmp));に変更すればちゃんと
動くはず。

 それと、この件とは関係ないけど、fgetsは文字列の終端にちゃんと
'\0'を代入してくれるので、memsetは不要だよ。
033333203/12/09 01:29ID:0I2itgVb
ケコーン?(;´Д`)
033432703/12/09 01:35ID:9M8YybjC
>>331さん御指摘のとおり
list_server = g_list_append(list_server, g_strdup(tmp));
としたら出来ました。ありがとうございます。

早く漏れも質問に答えられるくらいになりたい(;´Д`)
033532703/12/09 01:39ID:9M8YybjC
>>332
ありがとうございます&漏れのためにケコーンおめ(*´Д`)
リスト追加のあとのmemsetも消すことにします。
0336login:Penguin03/12/11 16:46ID:GOm24c4o
ちょっとお聞きしたいことがあります。
僕が使っている環境では、G_MAXINTは2147483647でlong型の最大値になっているのですが、
gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area),G_MAXINT,height);
というような使い方ができません。int型の最大値の32767までしか指定できません。
これ以上大きな数を指定することは仕様上できないのでしょうか?
初心者で質問がわかりづらいかもしれませんがよろしくお願いします。
0337login:Penguin03/12/12 23:45ID:btGr7o25
どうできないか書いた方がいいんじゃない。
コンパイル通らんのか、反映されないだけなのかとか・・
それと、どういう目的でそういう値にしたいかも
033833603/12/13 12:37ID:6GbNE/xa
コンパイルは通ります。drawing_areaをgtk_window_new(GTK_WINDOW_TOPLEVEL)で作ったウィンドウに入れて
gtk_widget_set_usizeで最小サイズを設定しているのですが、上のようにgtk_drawing_area_sizeを実行すると設定
した最小サイズになってします。
目的は、グラフを拡大したいということです。横軸を時間軸として、その横軸を長くすることでグラフを拡大しようと
しています。(なんか伝わりづらいなぁ)
0339login:Penguin03/12/13 23:25ID:8QtS2odM
>>338
「なんか伝わりづらい」と感じたら、もうちょっと
文章を校正してから投稿しませう。

まず、G_MAXINTはlongではなく、intの最大値になっているはず。
自分の手元にあるGTK1.2と2.0のヘッダではどちらも、
#define G_MAXINT INT_MAX
#define G_MAXLONG LONG_MAX
となっています。

次に、windowの中にdrawing_areaが入っている、という構造は
理解されていますか?前者のサイズが後者より小さければ、
当然親である前者のサイズ指定が優先になります。

あるいはそういうことではないなら、コードを出した方が早いのでは。

(2.0ではdeprecatedな関数名が出ているので、GTKのバージョンは
1.2だと思いますけど、まずそれが書いてあった方がよかったかも。)
034033803/12/15 16:12ID:ewsDweDI
レスが遅くなってすみません。
まず、gtkのバージョンは1.2です。

自分で考えてみたのですが、僕の環境ではINT_MAXが2147483647に設定されているので
G_MAXINTも2147483647に設定されているが、本来はintの最大値は32767。
だから、G_MAXINTも本来は32767なはず。

つまり、
gtk_drawing_area_size (GtkDrawingArea *darea,
gint width,
gint height);
のwidthとheightは0〜32767までしか指定できない。

ということでしょうか?
0341login:Penguin03/12/15 20:28ID:t6DB0CFT
>>340
gtk1.2では
struct _GtkRequisition
{
gint16 width;
gint16 height;
};
でし。ソースみてけれ。

034233603/12/16 17:34ID:677jpJGz
>>341
やっぱりそうなんですか。わざわざ答えてくださって、ありがとうございます。
32767より大きくすることは無理みたいですね。
0343login:Penguin03/12/17 16:04ID:qUoRXvI8
>>342
明示的な制限があろうがあるまいが、そんなでかい座標系を安直に扱かってま
ともに動くか不安、ってのが普通の感覚では。
正規化して数千ぐらいには収まるようには出来ないの?

そもそも何をやりたいのか書いた方がもっと建設的な議論が出来そうだけど。
0344login:Penguin03/12/20 15:53ID:GhCH1q1G
GTK+ FAQ 2003-11-24 版 日本語訳
http://www.gnome.gr.jp/docs/gtk+faq.20031124.html
0345login:Penguin04/01/12 15:15ID:TTcLcp55
GTK+ FAQ 2004-01-09 版 日本語版
http://www.gnome.gr.jp/docs/gtk+faq.20040109.html
0346login:Penguin04/01/15 06:51ID:IzHB4VVw
D使おうよ
0347login:Penguin04/01/22 18:28ID:KKqp1ICo
>>346
DUIね。
ttp://dui.sourceforge.net/
0348login:Penguin04/01/24 22:36ID:GyINHokb
GTK 勉強しようと思うんですが、1.2 と 2.0 って、どっちのコードの方が
単純なものになりますか?2.0 になってやれることが多くなった反面、複雑な
手続きを踏む必要ができたとか、コードが整理されてシンプルかつ軽くなった
とかの情報をいただけるとさいわいです。
0349login:Penguin04/01/25 03:13ID:1SBJ9zXH
今さら1.2は覚えるだけ無駄なので2.0系にすべし。
少なくとも公式のドキュメントは2.0系の方が充実しているしね。
0350login:Penguin04/01/25 16:47ID:X02pqnTw
GTK+ FAQ 2004-01-14 版 日本語版
http://www.gnome.gr.jp/docs/gtk+faq.20040114.html
0351login:Penguin04/01/25 17:00ID:KoO4Yggh
>>350
いつも乙。ChangeLogくらいつけてくれたらもっとうれしい人が増えると思われ。

http://mail.gnome.gr.jp/ml/gnome-translation/200401/msg00050.html
前バージョンからの変更点は次のとおりです。

4.7
autoconf,automake のバージョン更新
サンプル configure.in 修正

5.6
そのまま 2.x 用に移行

5.5
サンプルコード修正

5.7
タイポ修正
>gtk_widget_get_parent()関連の追記

5.8
そのまま 2.x 用に移行

5.9
サンプルコード修正
0352login:Penguin04/01/25 20:35ID:uE3bT0rU
gtk+ をコンパイルするときに
./configure --with-locale=ja_JP.EUC
とすると日本語表示OKなのですが、
./configure --with-locale=ja_JP.eucJP
とすると日本語表示NGになってしまいます。

ja_JP.EUC と ja_JP.eucJP の違いは何でしょうか?
ja_JP.eucJPだと不可な理由は何でしょうか?
0353login:Penguin04/01/25 20:52ID:9amne98y
>>352
システムにja_JP.EUCというlocaleが存在しないからでは?
OSは何を使っている?
0354login:Penguin04/01/25 20:55ID:9amne98y
>>353
間違えた。s/ja_JP.EUC/ja_JP.eucJPね。_| ̄|◯
035535204/01/25 21:09ID:uE3bT0rU
>>353
OSはMacOSXです。

$ ls /usr/share/locale/ja*
ja ja_JP ja_JP.SJIS ja_JP.UTF-8 ja_JP.eucJP

となるので ja_JP.eucJPは存在します。
環境変数は
$ export LANG=ja_JP.eucJP
としています。
0356login:Penguin04/01/25 23:41ID:/R11UVAp
たしか BSD 系の OS は X11 の locale については XLocale が面倒見てたと思うので、
/usr/share/locale/* とはまた別になると思う。( Linux は glibc が全部やってる)

この周りの話は限りなくシステム依存なので Mac 板で聞いたほうがきっと早い。
0357login:Penguin04/01/26 15:01ID:KEkReNS8
gtk2 を使って画像表示のアプリを作ってるんですがカーネルのバージョンによって
動作速度がひどく変わります。

ウィンドウからはみ出すような大きな画像をドラッグしてスクロールするように
しているのですが、カーネル2.4 だとサクサク動くのに 2.6 だとマウスの動きに
かなり遅れて画像がついてきます。

2.6 でも軽く動くように変えたいんだけど、何か気をつけるところでも
あるんでしょうか?
0358login:Penguin04/01/26 15:05ID:Wuwgl5VW
漠然としすぎてて、わかんねーよ(w
0359login:Penguin04/01/26 15:08ID:KEkReNS8
マウスまわりの処理で、カーネルが変わって気をつける点があるのかな
ってことです。
0360login:Penguin04/01/27 17:15ID:hqPkLSFb
みんな、GObject とか使ってる?
チュートリアルとか読んでみたんだけど、使い方が良く分からん...。
0361login:Penguin04/01/27 21:34ID:xBBLI74B
357 だけど解決した。

psmouse のサンプリングレートと解像度をモジュールのオプションとして
指定したらなおった。
0362login:Penguin04/01/28 21:57ID:s3WOXzt9
windowにfixedを貼り付けました。
windowにexposeシグナルのハンドラをconnectしました。
そのシグナルハンドラに制御が飛んできません。
fixedを除いてだったら渡ってきます。
また、同じハンドラをfixedにconnectすると渡ってきてくれます。

こういうものなのでしょか。
fixed貼ってあっても、あくまでもwindowにシグナル受け取って欲しいものなのですが。
0363login:Penguin04/01/29 12:38ID:5f0Q1I1K
Pangoで文字の重ね打ちがやりたいんですが面倒?
0364login:Penguin04/01/30 00:14ID:haUKggm8
gtk_widget_get_pango_contextとpango_layout_newで
PangoLayoutを取得して
pango_layout_set_textでテキストをセット
gdk_draw_layout_with_colorsでGdkDrawableに描画することができる。

ただしアンチエイリアスされる状態で下手に重ねうちすると
文字がどんどん太りがちになるので注意

(文字をすでに打った上から重ねうちすると、すでに表示されている
文字とさらにアルファブレンディングすることになる。
白地に黒文字を表示する場合、これをくりかえすと重なった部分が
どうしても黒にどんどん近づいてしまう)
0365login:Penguin04/01/30 01:48ID:Ribhh1SU
>>360
素の GObject 使うより、とりあえず gob 使ってみるとか。
036636004/01/30 09:25ID:xXVlWb2I
>>365
gob 知らなかった.。・.。・(ノД`).。・.。・ありがとう
0367login:Penguin04/02/01 02:24ID:qULg2Z/Y
>>364
3Q

> ただしアンチエイリアスされる状態で下手に重ねうちすると
> 文字がどんどん太りがちになるので注意

そういえばGimpの文字ツールのプレビュー画面でそういう現象が
発生してるような気が。
036836404/02/01 02:44ID:PLV4gnHt
単に色を変えるとかなら確実に(文字を描く前の)
背景を再描画すればよいが
Boldとか、影つきとか出したいのであれば
自分でアルファ値を計算するのが確実かも。

すると描画する前にどこかの(描画エリア以外の)メモリに
文字のアルファ値を取得しなければならず、これがけっこう面倒。
一回(GdkPixmapなどの)Drawableに描画したあと、その値を
gdk_pixbuf_get_from_drawableで配列に取得して計算、なんてやったな。
もっとうまい方法があるのかもしれんが。
0369pao04/02/02 00:05ID:lpWaJ20M
RedHat Linux7.3でgtk1.2を使っているのですが、
drawing areaにconnectしたコールバック関数が呼ばれず困っています。
connectしたイベントは
・キープレス
・ボタンプレス、リリース
・ポインタ移動
です。念の為、イベントマスクも設定しているのですが。
他に、必要な処理があるのでしょうか?
どうしたら、呼ばれる様になるのでしょうか?
よろしくお願いします。
0370login:Penguin04/02/02 00:37ID:i0H3LwnL
gtk のソースにウィジットの使用例が付いてるから見てみたらどう?
初めて使うウィジットの時には結構役にたつぞ。

ついでに、新しくプログラムを組むなら gtk2 のほうがよくないかい?
0371login:Penguin04/02/02 08:14ID:X88/BAtu
質問スレで解答がなかったので質問させて貰います.
gladeでのC++のソースコードの書きだしかたがわかりません。
オプションのコンパイル言語でC++をチェックして、書き出そうとしても
エラーがでます。C++を書き出すにはどうすればよいのですか?

エラーメッセージは
Error running glade-- to generate the C++ source code.
Check that you have glade-- installed and that it is in your PATH.
Then try running 'glade-- <project_file.glade>' in a terminal.
とでてきました。
バージョンはGlade 1.1.3でRedhat9.0をつかっています

glade--をインストールすればいいんでしょうか?
ターミナルでエラーメッセージのコマンドを打つとnot commandでした.
gtk+をC++でコンパイルする方法でも構いませんので,どなたか教えてください
0372login:Penguin04/02/02 10:53ID:0Jt2V78i
エラーメッセージの通りじゃないの?
何に困ってるわけ?
# しかも "not command"って…
0373pao04/02/03 09:55ID:GjS2l5dh
サンプルソース参考にしてみます。
gtk-1.2は、仕事上の制約なんです。

アドバイス、ありがとうございました。
0374pao04/02/04 18:33ID:SKoM61X0
テキストwidgetの文字の余白部分に色を設定したいのですが、
この部分の指定方法がわからず困っています。
とりあえず、以下の様にrcファイルで指定してみたのですが、
ダメでした。
どのwidgetクラス(GtkTextの部分)の何(bg,fgの部分)になるのでしょうか?
ご存知の方、いらっしゃいましたら、教えて下さい。
よろしくお願い致します。

style "text"
{
bg[NORMAL] = { 0, 0, 0 }
fg[NORMAL] = { 0, 0, 0 }
}
widget_class "*GtkText*" style "text"
0375login:Penguin04/02/05 00:11ID:6Frv3+5B
>>357
>ウィンドウからはみ出すような大きな画像をドラッグしてスクロールするように
自分も同じようなものを作ろうと思っていたので
まだこのスレを見ていてもしよければソースを見せてもらえないでしょうか?
0376login:Penguin04/02/05 00:22ID:gRe+faI+
>>375
gqview のソースでも見てみたら?
ちょうどそんな感じの操作方法だと思う。
0377login:Penguin04/02/05 13:06ID:SoJ3gS8K
>>374
style "text"
{
base[NORMAL] = "#000000"
base[ACTIVE] = "#151519"
base[INSENSITIVE] = "#181818"
base[PRELIGHT] = "#151618"
base[SELECTED] = "#252629"
}
class "GtkText" style "text"
0378pao04/02/05 20:15ID:I9Rb8I9P
お陰様で余白の色が設定できました。
ありがとうございました。
0379login:Penguin04/02/05 21:52ID:IbsAdnep
gtk_entry_new_with_max_lengthと
gtk_entry_select_region
を使っているのですが、
GDK-Error X server lost
というエラーがしばしば出るですが、
何かご存知の方、いらっしゃいますか。
RedHat7.2を使用しています。
0380login:Penguin04/02/06 15:35ID:sPzuahHm
風博士作者によるGTK+に関するメモ
http://kazehakase.sourceforge.jp/cgi-bin/hiki/hiki.cgi?GTK%2B%A4%CB%B4%D8%A4%B9%A4%EB%A5%E1%A5%E2
0381login:Penguin04/02/06 22:15ID:zjBuw81z
pangoのcvs版、modules/indic/myanmar-xが消えとるじゃん。
なんでじゃ(゚д゚)ポルァ
0382login:Penguin04/02/06 22:25ID:nS4IRly3
そら中国に消されたんでしょ
0383login:Penguin04/02/07 09:06ID:0FnXzrqf
>>381

ビルマ(綴り知らね)になってたり?
0384login:Penguin04/02/07 09:21ID:LRRhMtVA
>>383
つづりは Burmese なんだけどやっぱりサポートされて無さげ。(`皿´)キシャー
0385login:Penguin04/02/07 15:47ID:/BrXzTXu
>>381
ChangeLogには目を通した?
0386login:Penguin04/02/07 17:20ID:LRRhMtVA
modules/Attic の中のログだけ見てた。removed/deprecated とそっけなく書かれてた。
ChangeLog 見てみたけど myanmar-x モジュールのことは書いてなかった。
このモジュールが呼び出す主要な関数である pango_x_apply_ligatures() についても
さりげなくあぼーんされてた。(´・ω・`)ショボン

Sat Aug 2 14:10:31 2003 Owen Taylor <otaylor at redhat.com>

* pango/pangox.c (pango_x_apply_ligatures): Make a noop,
remove associated code.
0387login:Penguin04/02/10 15:04ID:Ei2GCPJI
>>386
ああ、思い出した。pangox backend消すって話があったわ。
freetype2+fontconfigを使うように書き直して突っ込めばいいんじゃない?

ttp://mail.gnome.org/archives/gtk-i18n-list/2003-April/msg00020.html
0388login:Penguin04/02/11 09:40ID:d5X1Hh57
age
0389login:Penguin04/02/16 14:10ID:qOO4+Jst
GTK+やる奴はgtkmmから始めときな. OOPはOOPLでやるのが一番.
gtkmmやる奴はRuby/gtkから始めときな.よけいなこと気にしなくていい動的言語が一番.
0390login:Penguin04/02/16 17:05ID:iudeGd8p
>>389
さんせ〜。Redhatだかどこかの誰かが、「Cはライブラリ作るための言語」って言い切ってたっけ。
これからGTK始める人は、どんどん(Cじゃない)高級言語でGTKアプリ作ってって欲しい。

ところで「『よけいなこと気にしなくていい』動的言語」って、変数型のお話?
0391login:Penguin04/02/16 18:47ID:juVw0kFu
>>389 >>390
勉強のつもりでボタン一個だけ貼り付けたウインドウを作った。
シグナルやイベントもなんとなく解った。
v1.2 チュートリアルを見たらウィジェットのボックスやテーブルは書いてあるけど
ボタンを任意の位置に複数貼り付けるのはどうすればよいの?
javaのようにパネルを貼り付けてそのパネルにボタンを配置すればよいの?
gtkmmはGTKのウイジットをクラスとしてラッパーしたものらしいけど、何処にあるの?
rpm -qa | grep gtkでも出てこない
おいらはgtkmmを使いたい
gtkmmの使い方を説明したものはないの?
gtk-tutorial.20021027.tar.gを見るしかないの?

あぁーー   謎だらけ
0392login:Penguin04/02/16 19:05ID:oCxJzKi5
>>391
- 今から始めるなら1.xじゃなくて2.xを使ったほうがいいよ
- 任意の位置への貼り付けはGtkFixedとかGtkLayoutとかそれらの入れ子とか
- あとはgoogle先生に
0393login:Penguin04/02/16 19:52ID:juVw0kFu
google先生はなんて優しいんだ
gtkmm2というrpmみっけ
2.x使って遊んでみる
0394login:Penguin04/02/16 21:18ID:juVw0kFu
インストールしょうとしたら
libsigc-1.2.so.5
libsigc++-devel
が必要といわれ、google先生は教えてくれません
誰か愛の手を差し伸べてください
0395login:Penguin04/02/16 21:34ID:juVw0kFu
解決しました。
0396login:Penguin04/02/16 22:21ID:+Ig7jOcp
>>390
それOwenのセリフ。
その割にはOwenアプリは(KanjiPadとかMemprofとか)Cで書かれて
いるものばっかりだけど(w

まあアプリに関しては自分の好きな言語を使えばいいんじゃない。
0397login:Penguin04/02/17 11:30ID:r1qIPww0
Gtkの button widget の relief 部分の幅を削る方法は
ありませんか?

gtk_container_set_border_width()というのを見つけたのですが
これだと buttonの外側の余白しか変わりません。
0398login:Penguin04/02/17 21:39ID:LrLm6Jz+
使ったことないけど、プロパティにあるreliefって、関係なし?
0399login:Penguin04/02/17 21:53ID:1y8cj++7
(・∀・)relief!!
0400login:Penguin04/02/17 23:24ID:ki2m0kcc
はっとく
http://www10.plala.or.jp/always/develop/
0401login:Penguin04/02/17 23:39ID:YPxA1wly
>>397
gtk_button_set_relief()は試しました?
040239704/02/18 08:46ID:0LoZKQD9
gtk_button_set_relief()は、reliefの形を変えるもので
幅を削ることはできません。
(NORMALでもHALFでもNONEでも relief が同じ幅を占有します)

やっぱこれはできないぽいですねぇ。う〜む。

0403login:Penguin04/02/18 10:50ID:p31sw5gF
GtkButtonのdefault_borderプロパティがREADオンリーなので無理でしょう。
やるならGtkImageかなんかをボタンにするとか。

0404login:Penguin04/02/21 01:02ID:iveKWUuZ
GtkPixmap()で生成したウィジェットをgtk_widget_show()で画像を表示。
その画像の上にgdk_draw_rectangle()で描画した矩形を表示させたいのですが、
どうしても、Pixmapの配下に矩形が表示されてしまいます。
すいません、教えて下さい。
0405login:Penguin04/02/23 21:50ID:lo6TfN7B
どうゆうこと?
もちっと詳しく
できればソースつけて
0406login:Penguin04/02/23 22:06ID:wKxG00oc
スミマセン
藍よりも青し のダンレボゲーム知りませんか?
0407login:Penguin04/03/01 22:12ID:w44UF/9x
どこか、gdk_window_set_back_pixmapをparent_relativeをTRUEで使用した場合の
いいサンプルってありませんでしょうか。
サンプルを書いて使ってみているものの、対象のGdkWindowをclearすると、
真っ黒にしかならなくて困っています。
#一応、parent_relativeがFALSEの時は、あらかじめ作ったGdkPixmapでGdkWindowの
#背景にpixmapを描画してくれるのですが...

#リファレンスを読む限りでは、parent_relativeがTRUEでgdk_window_set_back_pixmapを
#使うと、Etermみたいな(疑似)透過ウィンドウができるって思ったんだけど、違うのかな?
0408login:Penguin04/03/05 21:04ID:+LD8Xma7
チュートリアルに書いてあったプログラムをコンパイルしても、
実行ファイルのサイズは、せいぜい数十kbにしかなりません。
しかし、glade でウィンドウにメニューとテキストだけ貼ったものを、
autogen.sh でコンパイルすると、それぞれの .c に対し 200kb
以上の .o ができて実行ファイルも 500 kb を越えてしまいます。

automake/autoconf がらみでコンパイルオプションが長々としているのが
原因だと思うのですが、このリンクの無駄を省く方法をご存知ないでしょうか?
0409login:Penguin04/03/05 21:59ID:3OhPvv7U
>>408
デバッグオプション外してみたら?
またはstrip -g してみるとか。

ちなみに、チュートリアルのプログラムに-g(デバッグ)オプション付けて
コンパイルするとどれぐらいの大きさになります?
既に付けてたら無視してね。
0410login:Penguin04/03/05 23:52ID:+LD8Xma7
>>409
strip -g で小さくなりました!早速デバッグオプションまわりについて調べてみたいと
思います。

ちなみにチュートリアルの helloworld に -g オプションを付けてみたところ
14533 -> 164785 となりました。
0411login:Penguin04/03/06 08:47ID:T+WnXI9F
>>410
それならmakeはそのままで、インストールするときは
make install-stripでインストールすれば、多分stripされるよ。
0412質問04/03/07 00:54ID:3z3kajPi
gtkとopneglを併用したアプリを作ろうと思い、gtkglareaに
手を出してみたのですが、ドキュメントがなくて困っています。

gtkglareaはgtkと共存できるglutの代替ライブラリだと思うのですが、
glutとgtkglareaの各関数の対応表みたいなものはどこかのサイトに
あるのでしょうか。

特にすぐ知りたいのはglutTimerFuncです。
041341204/03/07 04:10ID:3z3kajPi
一通り.hを読んでみましたが、基本的に初期化についての関数しか用意されていない
みたいですね。
0414login:Penguin04/03/07 16:22ID:qODY7BL6
>>412
Gtk+ 1.2か?Gtk+2以降はGtkGLExtを使うべし。
041541204/03/10 06:04ID:XpgJ0nF/
>>414
情報ありがとうございます。

Gtk+2なのでGtkGLExtを使ってみることにします。

gtkglareaでglutTimerFuncの代わりにg_timeout_addを使い
簡単なアニメーションを作るまでやってみたのですが...

0416login:Penguin04/03/16 21:55ID:IRXVaMIp
絵が書いてある GdkPixmap の一部に、別の絵を張り付けようとしてます。
その時、もとの絵が透けて見えるようにしたいのですが、どのようにすれば
いいんでしょう?

gdk_pixbuf_render_to_drawable_alpha なんかが使えるのかと思ったら
alpha_mode : Ignored とか obsolete とか書いてあり、違うようですし・・。
0417login:Penguin04/03/17 23:13ID:+5aLOVRA
gtk+2.4揚げ
0418login:Penguin04/03/18 10:09ID:XRV/eX8E
label1 = gtk_label_new("111111\n22222222\n33333333");
gtk_misc_set_padding(GTK_MISC(label1), 20, 0);
とかすると

111111
22222222
33333333

になるんだけど

11111
2222222
3333333

のように1行目のみpaddingする方法無いですか?
できれば1.2で…
0419login:Penguin04/03/18 20:39ID:Jr1qezom
1つのラベルに複数行書くのはどうかと思うのだが…
0420login:Penguin04/03/19 09:40ID:keCgvMYR
え、まじですか。そういう事だったんですか。しょぼーん。
0421login:Penguin04/03/19 16:57ID:iSGoHu86
>>418

gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_RIGHT);

ということ?
0422login:Penguin04/03/21 08:38ID:YeGS8vgU
gtkmm(gtkmmに無ければgtk2, gtk)でデータベースに接続するにはどうすればよいのでしょうか
ドキュメントを見てもそのような物は無さげです。
よろしくです。
0423login:Penguin04/03/21 09:44ID:EQKLTR4/
>>422
データベースへの接続とgtkとは関係ない。
0424login:Penguin04/03/21 10:06ID:YeGS8vgU
考えてみればそうですね
データベース側で提供されているライブラリを使うのですね
PHP見たいな感覚で、もしかしたら用意されているのかなぁ
と思ってしまいました
0425login:Penguin04/03/21 13:41ID:jZhqbKqZ
>>424
スレ違い気味だけど、GNOME-DB Projectでlibgdaというライブラリを
メンテナンスしてるので、それ使うといいかも。ただC++ bindingsは
良さげなものがなさそう。libgdammは古いのしか見当たらないし、
Intiにはまだ入っていないし。
0426login:Penguin04/03/21 13:53ID:jZhqbKqZ
そういえば、IntiのViewCVS見てみたけど、Inti-sourceviewと
Inti-GLが見当たらない(汗
0427login:Penguin04/03/21 18:08ID:YeGS8vgU
>>425
ありがとうございます。
libgda見たけど英語の壁が(T_T)、使い方もわからねぇ
データベース側で提供されているAPI使ってみます。
042841604/03/22 23:36ID:t6oDHj5H
自己解決した。
pixbuf はアルファチャンネル持てました。
0429login:Penguin04/03/25 21:50ID:JRhACcYQ
このスレみてる神さま、GTK2のぶあつい本をかいてください。おながいします。

というか、誰か執筆してるの?
0430login:Penguin04/03/27 01:01ID:/QE+KWFL
このスレみてる神さま、Gtkmm2の本もかいてください。おながいします。
0431login:Penguin04/03/27 11:39ID:8IBM4CMs
>>429,430
GGADで十分じゃん?
0432login:Penguin04/03/27 23:05ID:ikpVq0kX
>>431
GGADて何ですかいのぅ
検索かけても、よう解らん
0433login:Penguin04/03/28 00:37ID:ItaNUZEo
>>432
http://developer.gnome.org/doc/GGAD/ggad.html
0434login:Penguin04/03/28 01:44ID:OsOSJi7C
ありがとう
でも、C++が好きなので・・・
gtkmmは思いっきりC++してる。
英語のチュートリアルと格闘中、少しずつ解って来た
0435login:Penguin04/03/28 01:58ID:2rXU3IHl
GGADはGNOMEが1.0だったか1.2の頃のものなので内容が古すぎなのが難点。
0436ヽ(´ー`)ノ ◆.ogCuANUcE 04/03/28 18:21ID:p248nSiU
C++ 好きなら Qt の方が……(ゴホンゴホン
0437login:Penguin04/03/28 19:39ID:JRuDttB9
>>436
前もどっかで書いたんだが、gtkmmに対するQtの有利な点て何?
独自のプリプロセッサ使ってる分汎用性低いし、STLとの相性も
gtkmmの方が良さそうな気が。

具体的にはオフィシャルFAQの
http://www.gtkmm.org/gtkmm2/docs/FAQ/html/index.html#id2432168
http://www.gtkmm.org/gtkmm2/docs/FAQ/html/index.html#id2432591
に対する反論が聞きたいです。

# 前に書いたときは、両方に通じてる人が少ないのか、反応なしだったなぁ。
0438login:Penguin04/03/28 20:09ID:fUDrTxoN
>>437
Qt好き(というかgtkmmは触ったことない)なだけで別に有利と思って使ってるわけではない。
あくまで個人的な意見だけど。例えば
>so that Qt classes can not be used easily with non-Qt classes.
については他のライブラリと組み合わせたとしても、Qtで組むのはMVCな構造ならViewの部分だから
View(Qt)がModelの(C++な)クラスを使うことはあっても逆はないから特に気にならない。

>In Qt, Containers and Layouts are separate classes, and child widgets must be added to both.
というのもレイアウトにはQtDesigner使えるしあまり関係ない気がする。

逆にgtk+なアプリでgtkmm使ってる例の方が少ないと思うんだけどどうしてなんだろう。
ライセンス的にもGPL至上主義者以外にとっては有利なはずなんだけど。

とか言いつつちょっとgtkmm使ってみようかとは思ってるんだけど。
(素のgtk+はやる気が起きない...)
0439login:Penguin04/03/28 21:27ID:JRuDttB9
>>438
なるほど、参考になったっす。

GTK使ってて直にC使う人が多いのは、まー惰性というか、文化ってやつじゃないでしょうか。UNIX環境では一番メジャーな言語でしょうから。

自分も、gtkmm使ってC++でやった方が効率的にできるんではないかと推測するんですが…
# C++自体に下手に深入りしなければ :-p
gtkmmを使ってる比較的メジャーなプロジェクトってないですかね。自分は寡聞にして存じません。

これも前どっかで書いたけど、Owenが以前言った(らしい)とおり、C以外の言語で開発したメジャーなGTKアプリがどんどん出てきて欲しいです。
0440login:Penguin04/03/28 22:31ID:2rXU3IHl
gtkmmがgtk+ほど使われない理由の一つは単純に入れるものが増えて
マンドラケってことじゃないかな。それはGARNOME使えや、ゴルァ!
とか言いたくもなるけど。

しかしながら、GNOMEでもオフィスものになるとC++で書かれる傾向
が強くなってるような気がする。AbiWordのように素のgtk+を使って
いるものもあるけど

Inkscape
http://www.inkscape.org/
Gestalter
http://www.linotux.ch/gestalter/
Passpartout
http://www.stacken.kth.se/project/pptout/

はgtkmmを使っている。
0441login:Penguin04/03/29 10:07ID:VUEcUgl7
C MAGAZINEの2002年11月にQtの記事が出ていたので
Qtを覚えてみようかと思ったけれど
プログラムやライセンスなどに制約がありそうなのでgtkmm2にした

gtkmm2はあまり使われていないのですね
日本語で解説したホームページが一件だけで悲しい。
ウイジットの大まかな解説だけでもあればだいぶ違うのに
英語のチュートリアルはなかなか大変
0442login:Penguin04/04/05 19:15ID:y/kEmNyL
おたずねします。
Glib::ustringをstd::stringやchar*に変換するにはどうしたらいいのでしょうか
教えてください。
0443login:Penguin04/04/05 22:28ID:y/kEmNyL
age
0444login:Penguin04/04/06 00:03ID:GZxyDVkQ
自己解決しました
const char* Glib::ustring::c_str ( ) const
というのを見逃してました。
0445login:Penguin04/04/06 21:32ID:gcfhfboL
GTK#って日本語通る?
0446login:Penguin04/04/06 22:08ID:qtjhbKpC
ここ見にきてる人ってどんなアプリ作ってるの?

google で検索してみても gtk でアプリ作ってるっていう日本語のサイト
はあまりない気がするし・・。古いの多いし・・。
0447login:Penguin04/04/07 01:30ID:fxxNRgLA
>>446
今、新しいgtkmm2で作ってる
0448login:Penguin04/04/09 09:22ID:E9wQ2At3
http://www10.plala.or.jp/always/develop/
0449login:Penguin04/04/09 10:32ID:Y4el8t2X
>448

ネタ的に古かったので削除していたのだが、一応、復活させときました。
0450login:Penguin04/04/09 12:34ID:MWyF42lQ
>>440
> gtkmmがgtk+ほど使われない理由の一つは単純に入れるものが増えて
> マンドラケってことじゃないかな。それはGARNOME使えや、ゴルァ!
> とか言いたくもなるけど。
GARNOMEっつーか、distroでパッケージ用意してもらうほうが先な気がする。
まぁGNOME Platform Bindingsに少し期待。

> Inkscape
> http://www.inkscape.org/

> はgtkmmを使っている。

ダウト。
0451login:Penguin04/04/09 13:53ID:lHXUAkbr
最初に手を出したのは、ファイルマネージャだった。
結局たいしたものにならず、音楽ファイル選択アプリと化してる・・。

>>448
gtk2化。期待してます。
0452login:Penguin04/04/09 14:30ID:Y4el8t2X
>>451

CxplorerのGtk2化が終わったら、それを題材にやろうかと思っています。
0453login:Penguin04/04/11 01:42ID:F5VYGb6q
GtkTreeViewについてはまった点を書いておきます。

http://cxplorer.sourceforge.jp/pukiwiki/index?%5B%5BPorting%2FGtkTreeView%2F%C3%ED%B0%D5%BB%F6%B9%E0%5D%5D

gImageViewのソースに助けられました。
0454login:Penguin04/04/13 00:48ID:Fj29gwyS
gtk_file_selection_new で出てくるセレクタに g_locale_to_utf8 って噛ませられるの?
日本語ファイル名が使えないのをなんとかしたいんだけど。
0455login:Penguin04/04/13 08:08ID:l2SC64Ga
fedra (UTF8環境)で、何もしなくても表示・選択できてます
0456login:Penguin04/04/13 21:03ID:Fj29gwyS
>>455
それはシステム自体でファイル名にも UTF-8 使ってるからだと思います。
従来の EUC-JP な環境用になんとかしたいんですが、やはりアプリ側では
なんともならないのでしょうか?
0457login:Penguin04/04/13 21:35ID:BLXcmJM7
>>454

エラーメッセージに出てるように、環境変数 $G_BROKEN_FILENAMES を指定すると
日本語の表示はできてるようだけど、他への影響あるのかな?

やってみた?
0458login:Penguin04/04/13 22:18ID:Fj29gwyS
>>457
できますた!アリガトン
0459login:Penguin04/04/16 16:40ID:ZlX2qNUE
外部アプリケーションからGTKアプリケーションに対して
あるトリガを与えてやり、それを受けたGTKアプリが
自分の表示内容を変更ということをしたいのですが
どうすれば良いでしょうか?

具体的には、あるデバイスの状態を監視する常駐アプリがあって
デバイス状態が変化したら、そのアプリが複数のGTKアプリに作用し
内容を変更させたいです。
また、複数のGTKアプリ達に同期をとらせるという意味もあります。

linuxのシグナルを使っても良いかと思ったのですが
GTKアプリの処理中に割り込まれて、内部状態を更新してしまったら
めちゃくちゃになりそうで躊躇しています。

どなたかお知恵をお貸し下さい。
よろしくお願いします。
0460login:Penguin04/04/18 13:25ID:V2Ifc6oG
>>435
"NO STARCH PRESS RELEASES THE OFFICIAL GNOME 2 DEVELOPER'S GUIDE"
http://www.gnomedesktop.org/article.php?sid=1753

訳出キボンヌ。
0461login:Penguin04/04/18 19:03ID:sSYSAFlA
>>460
GNOME2 がそろそろ広まってきたので、GNOME foundation でデベロッパー向けの
本を作るわ。という話。まずは英語版で、GLib や GTK、および GNOME の API
にるいてのものになるらしい。 ヽ(´ー`)ノワーイ
0462login:Penguin04/04/18 20:21ID:hFjMsHHm
http://www.nostarch.com/gnome_toc.htm
によると

Chapter 1: GLib
Chapter 2: GObject
Chapter 3: GTK+
Chapter 4: The GNOME Libraries
Chapter 5: Glade and libglade
Chapter 6: Additional Software Development Tools
Chapter 7: GConf
Chapter 8: GnomeVFS
Chapter 9: Where to Go from Here
Appendix A

らしい。Bonoboが独立した章がないのがちと気になるが、GNOME Platform
に関しては一通り網羅しているのではないかと思われる。
0463login:Penguin04/04/29 00:23ID:zLrJuv9t
(*^.^*)
0464login:Penguin04/04/29 13:25ID:AQIokWzV
Linux上でWindowsバイナリをコンパイル出来ませんか?
0465login:Penguin04/05/03 21:07ID:M0W8aY3U
関数 g_strdup_printf などは「必要なくなりしだい解放してください」と
指示されているのですが、自作関数中で その値を return で返したいときは
どのようにしたらよいのでしょうか?
0466login:Penguin04/05/03 22:08ID:8XBp00PD
>>465

returnをもらった側で処置するべし。
046746504/05/04 07:40ID:gonpR3ix
>>466
ありがとうございます。さっそく、組み込んでみようと思い、以下のように
してみましたが、これで大丈夫でしょうか?
よろしければ添削お願いします。m(_ _)m


/* g_strdup_printf の返り値を返す関数(失敗時は NULL を返す) */
gchar *use_g_strdup_inside(void);

void hoge_callback(StructData *struct)
{
if (struct->filename != NULL)
g_free(struct->filename);
struct->filename = use_g_strdup_inside();
}

gint main_process(foo bar)
{
StructData *struct = g_malloc(sizeof(StructData));
(略:struct の参照渡し)
gtk_main();

g_free(struct); /* これで struct->filename も一括解放? */
return 0;
}
0468login:Penguin04/05/04 07:42ID:gonpR3ix
        ああ、全角スペース使うんだったorz
0469login:Penguin04/05/04 10:11ID:3Qvo40ij
>>467
いわゆるC FAQの7.23と7.24を読んだら?
(ちなみにglibのソースをみたらg_freeは標準のfreeをよんでるだけですた)

ついでに 1.30も読んだ方がいいかも
0470login:Penguin04/05/04 10:47ID:g8hk2YfL
>>467
g_free(struct)でstruct->filenameのポインタは解放されるが、そのポインタの指し示す先までは解放してくれない。なので

g_free(struct->filename);
g_free(struct)
という手順を踏む必要がある。
047146704/05/04 11:57ID:gonpR3ix
>>469-470
ご回答ありがとうございます。

C FAQ 勉強になりました。さっそく struct の宣言の次で
  struct->filename = NULL;
と初期化するようにしておきます。
0472login:Penguin04/05/04 13:36ID:A/bfn0Zs
どうせならglibのソースも読んでみるといいかも。
0473login:Penguin04/05/05 13:19ID:LzNkuX/q
GtkItemFactory を使って
http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja-13.html#ss13.4
に例示される方法でメニューを作成したのですが、
以下のようなメニューのコールバック関数

callback_example(gpointer data, guint action, GtkWidget *widget)

を作り、その中で gtk_widget_get_toplevel(widget) をしても、
メニューを含包しているトップレベル・ウィンドウを返してくれません。
また、gtk_widget_class_path(widget, NULL, &path, NULL) でつながりを調べると、
例の中にある menubar では、GtkWindow.GtkVBox.GtkMenuBar となりますが、
上記コールバック関数では、GtkWindow.GtkMenu.GtkImageMenuItem となり
思ったとおりに継承(?)していないようであることがわかりました。

そこで、これら2つのウィジェットを
GtkWindow.GtkVBox.GtkMenuBar.GtkMenu.GtkImageMenuItem
のような感じに接続することはできないでしょうか?よろしくお願いします。
0474login:Penguin04/05/05 14:13ID:AJVBY2RD
>>473
クリックした時に出てくるメニュー部分って、メニューバーやその親とは
直接関係のない独立したウィンドウになるので、無理と思われ。

なので、callbackには別の方法で情報を与えることになるでしょう。
例えば、gtk_item_factory_create_items()の最後の引数として与えた
ポインタが(例ではNULLになっている)、callback関数の最初の引数
dataとして得られます。使ったはことないけれど、
gtk_item_factory_create_items()の代わりに、メニューのアイテムの
数だけgtk_item_factory_create_item()を使えば、メニューアイテム
ごとにcallback引数を変えられるかもしれない。

が、一番の問題は、GtkItemFactoryがGTK+-2.4ではdeprecateされ
てしまっていることかもなー。
0475login:Penguin04/05/05 17:48ID:LzNkuX/q
>>474
根本的に無理なわけですか・・・。
deprecate の件もイタいですが、当面の互換性を優先して
細々と工夫して使っていきたいと思います。
ご回答ありがとうございました。
0476login:Penguin04/05/13 04:33ID:d+lRJudN
g_strsplitでseparatorに0x01を指定したいんですが、
どうやって表記すれば良いのでしょう。

g_strsplit(in,0x01,-1)や(in,"^A",-1)では
warning: passing arg 2 of `g_strsplit'
makes pointer from integer without a cast
と怒られてしまいます。
0477login:Penguin04/05/13 07:38ID:NPGa5jCl
>>476

g_strsplit(in,"\1",-1)

だと思うのだが・・。
047847604/05/13 14:03ID:d+lRJudN
>>477
ありがとうございました。
ばっちりでした。

って言うかC言語を基本から勉強しないとだめっすね。
0479login:Penguin04/05/13 22:36ID:gc1S+I63
くだらない質問ですいません。
垂直スケールウィジェットを作成すると、上が最小値で下が最大値になるのですが、
一般的な感覚って下が最小値で上が最大値ですよね?
逆にすることはできないのでしょうか?
0480login:Penguin04/05/13 23:09ID:btwft/BK
gtk_range_set_inverted()あたりは試した?
048147904/05/13 23:20ID:QSU6qp6Q
>480
ありがとうございます。
絶対逆にする関数があるはずだと思っていたのですが、探し当てることができずにいました。
たすかりました。
0482login:Penguin04/05/16 23:55ID:irWPIKTr
リファレンスマニュアルにはシグナルの一覧とコールバックの型なんかは書いて
あるけど、そのシグナルがどんな時に出るか書いてないみたいです。
名前からわかるのはいいのですが、そうでない場合にシグナルがどんな時に出るかを
調べるにはどうすればいいんでしょう?

今は、全てのコールバック関数を書いてみて試したり、ソース読んだりしてますが、
遠回りしてる気がするんです・・。
0483login:Penguin04/05/20 14:27ID:76aPgkOx
本当にそうだと思う
チュートリアルのサンプルプログラムを見て覚えるしかないのかなぁ
0484login:Penguin04/05/20 23:23ID:jcLcMA6y
本当に本当にそうだと思う。
いま、gtkを使い始めたがそう感じたよ。
と言いつつも俺の探し方が甘そうなのでsage
0485login:Penguin04/05/20 23:29ID:6iu3BFuD
ならキミが調べた結果を本にまとめて売り出せばウハウハなんじゃねーの?
0486login:Penguin04/05/21 21:48ID:L27/iJm2
>>482
わからんシグナルって例えば何?
0487login:Penguin04/05/31 11:40ID:fLelOzr3
GTK+(Glade)でGUIアプリを作成しています。

作成したアプリのアイコンを設定したいのですがどうすれば良いのでしょうか?
また、アイコンのフォーマットは*.icoとかをそのまま使えますか?
0488login:Penguin04/05/31 16:46ID:0eRi0Au3
質問です。

GTK+ 1.2をつかっていろいろ試しているところなのですが、
ScrolledWindowをつかうとマウスでぐりっとやるとウィンドウがスクロールしてくれます。
でも、PageUpとかPageDownなどキー操作ではスクロールしてくれません。
どうすればいいですか?
どの辺を調べれば良いかキーワードだけでも教えてください。
よろしくお願いします。
0489login:Penguin04/05/31 17:23ID:l37/WI1m
>>488
GtkWidget の key_press_event でどう?
049048804/05/31 18:31ID:0eRi0Au3
>>489

お返事ありがとうございます。
そして、舌足らずでごめんなさい。
key_press_eventを使うというのは分かるのですが、
そのハンドラの中に何を書いて良いか分からないんです。
ScrolledWindowの関数の中に上にスクロールするとか
そういうの無いみたいなので…

出来の悪い子でホントにごめんなさい(つдT)
0491login:Penguin04/05/31 19:47ID:xnMi74Da
>>490
GtkAdjustment
049248804/06/01 12:17ID:b9B2HGyQ
>>491

ありがとうございます。
調べてみます。
0493login:Penguin04/06/01 14:51ID:sWrdsXk5
Gtkに関して教えてください。

「GTK+入門 基礎から〜」を購入して勉強しているのですが、
下記のプログラムで「gtk_widget_set_size_request」を
実行しようとすると「undefind referenec to 'gtk_widget_set_size_request」
とエラーが表示されてしまいます。
コメントアウトすればエラーは出ません。
gtk/gtk.hもインクルードしてありますし何が悪いのかさっぱり分かりません。

window = gtk_window_new( GTK_WINDOW_TOPLEVEL );↓
gtk_widget_set_name( window, "window" );↓
gtk_widget_set_size_request( window, 480, 280 );↓
0494login:Penguin04/06/01 15:51ID:vmS5jmyS
>>493
検索してみたらその本は第2版が出ているようなので、実は古い版だったりしませんか?
gtk_widget_set_size_request()は1.0→1.2で削除されたような覚えがあるので、
gtk_widget_set_usize(), gtk_widget_size_allocate()あたりで代用してみるとか。
0495login:Penguin04/06/01 15:56ID:f2RT8NBI
>>493
http://developer.gnome.org/doc/API/2.0/gtk/gtk-changes-2-0.html

のページ内でその関数を検索するがよろし
049649304/06/01 16:41ID:sWrdsXk5
>> 494, 495

有り難うございます。
gtk_widget_set_size_request()→gtk_widget_set_usize()にしたらエラーは出なくなりました。

495さんに教えて貰ったページを見ると、
私の英語力ではgtk_widget_set_usize()を止めて、
gtk_widget_set_size_request()に変更しろと
書いてあるように思うのですが・・・
0497login:Penguin04/06/01 18:53ID:+dAqMRbG
>>493
gtk_widget_set_size_request() は gtk+-2.0 で新しくできた関数。

gtk2 のリファレンスを見ながら、gtk1 を使ってプログラム
してると思われる・・・。

統一しる! 変なこだわりがないなら gtk2 に・
049848804/06/01 21:30ID:6DgPX5ay
>>491

先生!出来ました!!
gtk_scrolled_window_get_vadjustment と
gtk_adjustment_set_value
ですね。ありがd。
0499login:Penguin04/06/02 11:16ID:Ph5YiCQq
>>487
tar xzvf 素酢-x.x.x.tar.gz
cd 素酢-x.x.x/src
grep icon *

いちおう。
0500login:Penguin04/06/06 03:39ID:7NlghlPT
500get
0501login:Penguin04/06/06 04:10ID:XtA0mCdQ
3日と16時間23分、誰も取ろうとしなかった500ゲトおめ(w
0502login:Penguin04/06/06 10:31ID:YeSwYVrz
GtkComboで今何番目のリストが選択されているかを知るにはどうすれば良いのでしょうか?

1個目→A
2個目→B
3個目→C

となっていて、2個目が選択されている場合に「B」という文字ではなく、
「2」という数値を取得したいのです。
0503login:Penguin04/06/06 11:38ID:prFiANc0
GList の中から文字列を検索するのはどうよ?

GList は要素を指定してその位置を返す関数があったような気がする。
050450204/06/08 14:03ID:PyaDVVHB
レス遅れてすいません。

教えて貰ったことを踏まえて、
色々調べたり悩んだりしたのですが、
結局力業で処理してしまいました。
0505login:Penguin04/06/23 23:57ID:MDTSH8fN
しばらく反応がないのでage

で、質問ですが、mngのgdk-pixbuf loaderって、どこかにあります?
ぐぐって見ると、去年のgtk-develでmng loaderの話が出ているのですが、
libmng方で問題があるとかいう発言以降、何の動きもないみたいです。

http://mail.gnome.org/archives/gtk-devel-list/2003-June/msg00070.html
0506login:Penguin04/06/25 22:53ID:s+nmqGmL
GTK+/GDKによるLinuxアプリケーション開発 Eric Harlow著に載ってるソースコードって
どこからかダウンロード出来るのでしょうか?
記載されてるページへいってもNOT FOUNDなもんで、、、
0507login:Penguin04/06/26 02:07ID:ot6kutpS
>>506
ttp://www.seshop.com/detail.asp?pid=696 の左側 「関連リンク」の
サンプルダウンロードからダウンロード可能
0508login:Penguin04/06/26 02:25ID:ot6kutpS
こっちが本家のようです。

ttp://www.informit.com/title/0735700214#

の 0735700214.tar.gz
0509login:Penguin04/06/26 03:04ID:uwUdg/T9
>>507,508
DLできました。
有り難うございました
0510login:Penguin04/07/01 14:49ID:2+uzpSCS
GTK+ 2.0 チュートリアル 2003-01-24 版 日本語版
http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
0511login:Penguin04/07/02 20:41ID:ruSxXmGR
Labelの色を指定するのはどうすれば良いのでしょうか?
リソースファイルではなくてプログラム中で変更したいのです。
同じラベルに対してokなら青errorなら赤みたいに。
0512login:Penguin04/07/02 20:49ID:EdA1krgC
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL(label), "<span foreground='red'>red</span>");
では?
0513login:Penguin04/07/02 21:07ID:NFwwiccW
>>511

http://www.gnome.gr.jp/docs/gtk+faq.20040114.html#AEN811
051451104/07/02 22:06ID:ruSxXmGR
>>512

おおお、こんなに早くレスがつくとは思いませんでした。
gtk_widget_set_colormapあたりかと思って悩んでました。
ありがとうございました。
0515login:Penguin04/07/17 01:44ID:gxRBMExw
gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
GTK_SIGNAL_FUNC(KeyPress), NULL);

でコールバック関数を登録し、

static void KeyPress(GdkEventKey *event)
{
g_print("%x\n",event->keyval);
}
}

これで押されたキーを判別しようと思ったのですが
実行結果はどのキーを押しても 0 と表示されてしまいます。
何か使い方が間違っているのでしょうか?
それとも、仕様ですか?
051651504/07/17 01:45ID:gxRBMExw

余計な閉じ括弧がひとつありますが、書き込み時に間違えて入力してしまったものです。
気にしないでください。
051751504/07/17 02:05ID:gxRBMExw
自己解決しました。
お騒がせしました。
0518login:Penguin04/07/20 21:04ID:mCNuObfQ
X11^^^^
0519login:Penguin04/07/21 13:46ID:q4gHD8Am
質問です。

gtk_widget_refってどういう目的で使うのでしょうか。
glade使うとwidgetをcreateした後に必ずついてくるんですが
gtk_widget_refを使わないでcreateするだけだと
何かまずいことが起こるんでしょうか。
0520login:Penguin04/07/22 16:23ID:y/5s047B
>>519

>glade使うとwidgetをcreateした後に必ずついてくるんですが
>gtk_widget_refを使わないでcreateするだけだと
>何かまずいことが起こるんでしょうか。

glade 使うと gtk_object_set_data_full してるからgtk_widget_ref
は、おいといたほうが良いと思う。

起動から終了までの間にウィジットを破棄したりしないなら gtk_widget_ref
は不要とか言うのは無謀かな?よくわかってないけど。
0521login:Penguin04/07/31 10:39ID:MPOS1TDH
Window全体に影を付けたいのですがパッチとかないですか?
0522login:Penguin04/08/06 15:14ID:IQdNzkhX
1はいずこ...
0523login:Penguin04/08/25 15:55ID:j+IRN/yq
GtkGLExtの日本語マニュアルは無いのか…まぁ訳すけれど…
作者日本人だよな。なんか複雑。
0524login:Penguin04/08/25 20:34ID:i4j2Wyy5
>>523
日本語だと解説やマニュアルどころか、情報自体がないな・・・。
どころか、英語でも状況はかわらなさそう・・・。

使ってる人いるのか?と思ってしまう。
0525Exampleに数時間気づかなかった人(1/20)04/08/26 13:56ID:9NdnJg9X
>>524
http://mail.gnome.org/archives/gtkglext-list/index.html
あちらの国でのメーリングリストを見ると大して人気があるようには見えない。
評価用の2画面同時表示とかサンプルのようなソースの疑問点?の質問が多いね。

http://gtkglext.sourceforge.net/
どーでもいーがサイトにあるlogo.cは、インストールした中のExampleの
ソースのままなので、Exampleの下からlogo.hとかを持ってこないと表示できない。
0526login:Penguin04/08/29 01:43ID:I8sIe2mZ
Gtkのイベント(シグナル?)についてお聞きしたいのですが、
独自イベントを作ってgtkのメインループの中でハンドリングするには
どのようにコーディングすればよいのでしょうか?

よろしくお願いします。
0527login:Penguin04/08/29 18:32ID:0ci6kHoF
スクロールバーが付いたテキスト入力の領域を作るにはどうすればいいのでしょ
うか?
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
でscrolled_windowを作り,
text = gtk_text_new(NULL, NULL);
でテキストウィジェットを作り,
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), text);
としてみましたが,スクロールバーが一杯になっていて全くスクロールできません.
http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
こことかを見てみましたが,一行入力のテキストエントリしか書いてなかった
のでわかりませんでした.この方法ではできないのでしょうか?初歩的な質問
ですみません.
0528login:Penguin04/08/29 20:56ID:3dMcPoCy
>>527

gtk_container_add (GTK_CONTAINER (scrolled_window), text);

052952704/08/29 23:43ID:0ci6kHoF
できました!ありがとうございます.
0530login:Penguin04/09/02 19:50ID:UwBORxvn
windowをマウスで左クリックしたら「クリックしたよ!」というメッセージを出すプログラムを
書こうと思い、eventの中からマウスで左クリックしたeventを取り出して標準出力するつもり
のプログラムを書いたのですが、意図した通りに動いてくれません。おそらくイベントハンドラ
のところがおかしいのでしょうが、どのように書けばよいでしょうか?
---------
#include<gtk/gtk.h>
#include<stdio.h>

static gboolean click_event(GtkWidget *widget, GdkEventButton *event,
gpointer data){
if(event->type==GDK_BUTTON_PRESS &&
event->button==1){
g_print("Mouse clicked! \n");
}
return FALSE;
}

int main(int argc,char *argv[]){
GtkWidget *window;
gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(G_OBJECT(window), "event",
G_CALLBACK(click_event), NULL);

gtk_widget_show(window);
gtk_main();
return(0);
}
0531login:Penguin04/09/02 21:27ID:B1qwsflf
>530
Xlibをインクルードしていないじゃないか。
それではメッセージは受け取れないな。
0532login:Penguin04/09/02 22:24ID:Iz+TckRx
>>530
window でマウスのイベントを取ってどうするんだ、というのは置いといて・・。

window のイベントマスクを設定する。


0533MyDoom被害経験者(当時は深刻)04/09/06 00:41ID:vttGuatR
GtkとKDE/Qtでは、どちらがGUI programmingを始め易いんでしょうか?
コード量の少なくて済む方を教えてください。
0534login:Penguin04/09/06 00:48ID:yRhIRqUd
>>533
お手軽なほうがいいってんならTcl/Tkやっとけ。コード量少なくてすむぞ。(藁
それぞれのサンプルコード見てこっちが性に合ってるな、とか、KDEメインに使ってるからQtとかないのかね。
どっちにしたってGUIプログラミングする分にはコード書くし、量的に差があるったって鼻毛みたいなもんだよ。;-p
0535login:Penguin04/09/06 02:35ID:mXXgruj5
CがいいかC++がいいかで選んだら?
0536login:Penguin04/09/06 08:07ID:j+KxsIhK
>>533
この質問、やたらあちこちで見るな。
0537login:Penguin04/09/06 12:41ID:fIwSWiYt
サポートしてる言語がやたら多いのはGtk+。
C++, Python, Ruby, Perl, Scheme, Tcl, PHP, Java, C#, OCaml, Haskell みたいに
実用一辺倒から Research Language までいろいろ。
ただ完成度やドキュメントの整備状況は言語でまちまち。

Qt はその仕組み上そういうバインディングが作りにくいそうな。数少ない
バインディングも Qt2 にしか対応して無いのが多い。
0538login:Penguin04/09/06 14:20ID:mXXgruj5
Gtk+はバインディングが充実してるものの情報が少ない、ともいえる。
また、CがデフォなだけにC++でさえ情報が少ないっつーのが難点。

Qtのバインディングで実用レベルなのはPythonくらいだが、これは結構
情報も多くしっかりしてる。

両方やってる感じでは、言語で選ぶならC++かPythonならQt、それ以外
ならGtk+ってのが妥当だと思う。もちろんツールキットにあわせて言語
を選ぶなら好きにしてくれってことだが。
0539login:Penguin04/09/06 16:38ID:iCHw81Ws
あと、あまり気にしないとは思うがシェアウェア化とか商用にするのなら
Qtはライセンス購入が必要になる(QPL)
厳密にはGtkもGPLなのでオープンソースが義務付けられたり、色々あるんだが…
オレ的ルールを使用する会社等は「ライブラリの改変をしなければ使いたいホーダイ」という有様。

何の為に勉強しているかは知らないが、オレの勝手なイメージでは

Gtk:
オープンソースしていいクリエーター
一般的な研究者
小中企業

Qt:
コアな研究者
大企業

が使用している。

あと勘違いしている人が多かったんだけれど、
どちらも英語の読解力は必要(Linuxをやっていたら常識とは思うが)
Gtkを表面だけ理解するなら日本語のドキュメントだけで事足りる。
Qtは最初から英語のドキュメントとにらめっこすることになる…かもしれない。
0540login:Penguin04/09/06 17:03ID:X3pm9qox
Gtk+ は LGPL なので商用ソフトウェアも開発可能ですが
0541login:Penguin04/09/07 22:03ID:/BPz6lrP
ウインドウをクリックしたらそのウインドウサイズを取得したいのですがどうすればできますか?
0542login:Penguin04/09/07 22:13ID:CyRP0Tn+
>>541
クリックで起動されたコールバックの中で gtk_window_get_size
0543login:Penguin04/09/07 22:43ID:/BPz6lrP
>>542
さんきゅー。できました!
0544login:Penguin04/09/07 23:54ID:4Dablgl8
Gtkにラッパーとかかませて、UNIX(LINUX)とC/C++でWin32のようなプログラミングできるようにした環境って
ないのかな。
(つまりCreateWindow〜CALLBACK WNdProc〜GetMessageのような流れで作る環境)
0545login:Penguin04/09/08 00:46ID:k2AJ7vTU
gtkmmでは不満?
0546login:Penguin04/09/08 01:11ID:mJ44H/or
マルチプラットフォームを考えてるならwxWidgetかな。
0547login:Penguin04/09/08 03:30ID:U5iHDCUQ
>>544
そりゃあ、無いでしょ。Windows上ですら、制作者はWin32 APIを直に使って
アプリケーションを書きたいなんて思わないんだから。
0548login:Penguin04/09/08 03:56ID:TMOl9BnE
>>546
UNIX USERの特集で興味が沸いたんだけど、
他に書籍か雑誌の資料で良いのないかな?
0549login:Penguin04/09/08 11:27ID:ktyLyrud
>>548
とりあえずム板ののひょーんスレでも覗いてみたら?
0550login:Penguin04/09/08 15:23ID:wSTR0Xhj
GTK2のプログラムをライブラリ化しようとしてautomakeやautoconfを使ってconfigureを作ろうと
したのですが、
gtk/gtk.h: そのようなファイルやディレクトリはありません
というエラーがでます。自分の手でMakefileを書いた時にはこんなエラーは起きなかったのですが
Makefile.amやconfigure.acに何か特別に書かなければならないことがあるのでしょうか?
055155004/09/08 17:39ID:wSTR0Xhj
自己レス
できた。三時間ぐらい調べるのにかかってしまった。。。

configure.acに
AM_PATH_GTK_2_0(2.0.0,, [AC_MSG_ERROR(Test for GTK failed.)])
とか書いてやると、ライブラリパスやらヘッダパスやらがGTK_CFLAGSやGTK_LIBSに定義される。
それをMakefile.amに
INCLUDES = @GTK_CFLAGS@
LIBADD = @GTK_LIBS@
と書けばOK。GTKの他にgtkglextとかを使いたいのなら/usr/share/aclocalにあるgtkglext.m4の
しょっぱなにあるコメント欄を見て、GTKと同じようにマクロを呼び出してMakefile.amにパスを書き込む。
0552login:Penguin04/09/08 18:16ID:ROF7GWcX
>>549 さんきゅ。前の名前であったのね。
|【GUIライブラリ】wxWindowsでのひょーん
http://pc5.2ch.net/test/read.cgi/tech/1052186697/l200
0553login:Penguin04/09/08 19:55ID:aC9UlW7m
PKG_CHECK_MODULES() もあり。
055454604/09/09 06:22ID:krUgg33f
>>548
wxWidgetsのソースをダウンロードすると、
たくさんのサンプルがついてるので、それが結構参考になると思います。
中には古いのがあったりするのですが、大よその概念はつかめると思います。
米AOLのインストーラーとかに使われてて、Windows/Linux/Mac OS Xでいけてるみたいなので、
商用レベルにはなっていると思います。
0555login:Penguin04/09/11 22:08:37ID:2jzJ2iMt
華麗に555げっと。
0556login:Penguin04/09/15 00:00:14ID:XXdKtByK
widget やシグナルのことを知りたくて、The Glib Object system っていう
チュートリアルを読んでるんですが、くじけそうです・・。

gtk のチュートリアルと Glib Object systemのチュートリアルの間を埋める
ようなレベルの説明って、どこかにないでしょうか?
以前、GTKハッキングレポート っていうそれっぽいページがあったと思ったんだ
けど、今探すとなくなってるみたいだし・・・。
0557煽りイカ04/09/15 02:24:11ID:S7MStXnB
Gtk+はANSI-C言語、QtはC++言語でライブラリが用意されていると言う
解釈でよろしーでしょうか?
オブジェクト指向で開発する場合には、後者の方が使い易いんでしょーか?

GtkのマニュアルをPC上で読んでいたら目眩がしてきたので、KDEのように
本になって出てないでしょうか?あったら買いたいです。
0558login:Penguin04/09/15 03:05:40ID:VtuDal+L
>>556
http://web.archive.org/web/20040114094302/ghr.shalab.phys.waseda.ac.jp/ghr/gtk_hacking_report.html
まぁ自前のWidgetというかオブジェクトを作るとかしない限りこういうことは知らなくても問題ないよ。

>>557
英語でよけりゃ
http://www.nostarch.com/frameset.php?startat=gnome_foundation
が網羅的でよさそうな気がする。amazon.co.jp でも買えるよ。洋書版オライリーを扱ってる本屋にも置いてあるかもしれない。
Gtk+の書籍って日本語英語問わずチュートリアル的な本がほとんどなので、リファレンス的
なものとなるとこれ以外の選択肢はない。
055955604/09/15 17:57:59ID:XXdKtByK
>>558
いいサイトをありがとん。

>まぁ自前のWidgetというかオブジェクトを作るとかし
人のプログラム見てて、まさにこれをしてたので調べてます。
気がつくと gobject のソースの中で遭難中。
0560煽りイカ04/09/15 22:46:48ID:S7MStXnB
>558
有り難うございます。
0561login:Penguin04/09/30 18:40:47ID:ZNjn4MmY
質問です。

必ずウィンドウ上の何れかのウィジェットがフォーカスを持っているようにしたいのですが
どうすれば良いか分かりません。

例えば、1つのボタンを貼り付けただけのウィンドウを作ったとします。
これを実行してタブを押すと、そのたびにボタンがフォーカスを得たり失ったりします。
ボタンがフォーカスを持っていないときはいったい誰がフォーカスを持っているのでしょうか?
あるいは誰も持っていない状態というのがある?

どちらにしても、この状態をなくすにはどうすれば良いのですか。
教えてください。
0562login:Penguin04/09/30 18:48:03ID:SmK1xNom
>>557
Qtはいいぞぉ。あそこまで洗練されたライブラリは
そうそうあるもんじゃない。
0563login:Penguin04/09/30 20:38:08ID:e5kfAN1B
>>561
何もしなくてもそんな状態じゃないけど…
056456104/09/30 20:50:54ID:9AhHdXeZ
>>563

書き忘れていたんですが、1.2の話です。
2系だと平気なんですね、きっと。
0565login:Penguin04/09/30 22:16:53ID:e5kfAN1B
>>564
ウィンドウウィジットの GTK_CAN_FOCUS フラグを落す。

バージョンによって違うとは…。
056656104/10/01 10:45:06ID:TSUAcXDI
>>565

だめですた。 orz
でも、ありがとうございました。
もうちと、自分で試してみます。
0567login:Penguin04/10/01 20:39:26ID:HB0CGb7q
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GTK_WIDGET_UNSET_FLAGS(window, GTK_CAN_FOCUS);
0568login:Penguin04/10/02 19:02:32ID:vwpDQWM7
電光掲示板みたいに文字が流れる
プログラム作りたいんですが
参考になるソースしりません?
バージョンはGtk+2.2 です
056936404/10/02 23:52:42ID:lvcJFuth
「電光掲示板みたいに」が、ドットもそれらしく表現ということだと
GdkPixbufあたりをつかって自前で画像を描画することになるかと。
いったん文字をDrawableに描画してgdk_pixbuf_get_from_drawableで
イメージを取得するとか。
0570login:Penguin04/10/03 00:02:22ID:px/BonVe
>>569
ありがとうございます。
さっそく、それらしいソースあさってみますね。
描画ソフト関係をあされば大丈夫かな?
0571login:Penguin04/10/03 22:52:41ID:b13aFboP
質問お願いします。

テキストエントリを使って、文字列を取り込みたくて
const char *str = gtk_entry_get_text(entry);
wcahr_t wstr[100];
mbstowcs(wstr,str,100);
としたのですが、テキストエントリに"aaa"と入力して取り込むと正常に
wstrの中身が"aaa"となるのですが、"あああ"と入力して表示させると
文字化けが発生します。
mbstowcsの返り値を調べると-1になっているので正しく変換できてないと
思われるのですが。
もしかしたら、テキストエントリは2バイト文字は扱えないのですか?
どなたか教えてもらえないでしょうか。
0572login:Penguin04/10/03 22:59:18ID:NMHtHT7k
setlocaleとか実行してるか?
057357104/10/03 23:22:17ID:b13aFboP
>>572
はい、setlocale(LC_ALL,"ja_JP.eucJP")とやっております。
0574login:Penguin04/10/03 23:37:40ID:NMHtHT7k
gtk_entry_get_textの返り値はUTF-8ではないかと。
それをEUCモードのmbstowcsで実行するからエラーになると。

setlocaleでUTF-8を設定するか(これは他の関数で面倒なことになりそう)
g_locale_from_utf8でUTF-8からカレントロケールに文字列を変換するか。
057557104/10/04 00:04:10ID:5lyoB5Xl
>>574
なるほど、そういうことでしたか。
私の作っているプログラムではeuc形式のファイルからの文字列の
読み込みもやらなければならないので、後者の方でやってみます。
アドバイスありがとうございます。
0576login:Penguin04/10/04 00:14:40ID:1mgqe0pP
>>571
char *str = gtk_entry_get_text(entry);
char *locale_str = g_locale_from_utf8(str);
wchar wstr[100];
wprintf("%s", wstr);
wbstowcs(wstr, str, 100);

strの中身はUTF-8 まんまなので
まずiconvなりglibの文字列変換関数(実質iconvのラッパ)で適当に変換する
0577login:Penguin04/10/10 18:05:08ID:zn9N0S8U
GTK+ 2.4.11 Released
0578login:Penguin04/10/13 08:07:25ID:0RBMkwen
GLib リファレンスマニュアル (2.4.7版)
http://www.gnome.gr.jp/docs/glib-2.4.x-refs/glib/

GObject リファレンスマニュアル (2.4.7版)
http://www.gnome.gr.jp/docs/glib-2.4.x-refs/gobject/
0579login:Penguin04/10/13 08:50:09ID:fnawd3gt
gtkはCで書かなきゃいかんのがめんどい
0580login:Penguin04/10/13 09:10:05ID:EBUt+ZnU
>>579
pygtkでも使え
0581login:Penguin04/10/13 10:32:39ID:fnawd3gt
C++がいい
0582login:Penguin04/10/13 12:16:04ID:i0k9Byx8
GTK+ - Language Bindings
http://www.gtk.org/bindings.html
0583login:Penguin04/10/21 22:11:24ID:nRPw1OZd
ウィンドウのタイトルを右クリックするとメニューが出てくるように、
ウィンドウマネージャで設定されています。
この時、gtkで一部のウィンドウのメニューを違うメニューにしようと思ったのですが、
_GtkWindowにも_GdkWindowにも操作できるような要素が見当たりませんでした。
どなたかメニューを操作する方法をご存知の方いらっしゃいませんでしょうか・・・
0584login:Penguin04/10/22 22:33:32ID:eUY5i1x7
ウィンドウタイトルの所で出るメニューは、作ってるアプリの管轄外だと
思うんだけど。違う?
0585login:Penguin04/11/07 00:08:40ID:A8KZGfM+
ウィンドウタイトルないウィンドウマネージャもあるしね。
もし可能だったとしてもアプリケーションが操作すべき場所じゃないと思う。
0586login:Penguin04/11/09 02:11:59ID:R4ut9ZNk
Tutorialみてbutton押すとlabelの表示が変わるぐらいは出来るようになったのですが、

gtk_label_set_text(GTK_LABEL(label), "test1");
sleep(1);
gtk_label_set_text(GTK_LABEL(label), "test2");

みたいに処理に従ってlabelを書き換えるようなのは、
どうすればいいのでしょうか?上のだと、表示されるのはtest2だけで……。
0587login:Penguin04/11/09 06:18:13ID:t6yHsCJv
>>586
#!/usr/bin/env python

import pygtk; pygtk.require('2.0')
import gtk, gobject

count = 0
def greet(widget): print 'Hello!'
def deal_timeout(button):
global count
count += 1
button.set_label(str(count))
print button
if count < 10:
return True
else:
return False

button = gtk.Button(str(count))
button.connect('clicked', greet)

#timer = gtk.timeout_add(1000, deal_timeout, button)
timer = gobject.timeout_add(1000, deal_timeout, button)

window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
window.set_border_width(10)
window.add(button)
window.show_all()

gtk.main()
0588login:Penguin04/11/09 07:49:39ID:t6yHsCJv
>>586
>どうすればいいのでしょうか?上のだと、表示されるのはtest2だけで……。
Windowがマップ(show)されるまで、Labelは表示されないよ。
set_textてコールバックのなかでやってる?

0589login:Penguin04/11/09 07:50:30ID:t6yHsCJv
>>586
ごめん、ボタンラベルではなくだだのラベルを書き換えだね。
それから、pygtkで済まん。
#!/usr/bin/env python

import pygtk; pygtk.require('2.0')
import gtk, gobject

count = 0
def deal_timeout(label):
  global count
  count += 1
  label.set_text(str(count))
  if count < 10:
    return True
  else:
    return False

label = gtk.Label(str(count))

window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
window.set_border_width(10)
window.add(label)
window.show_all()

#timer = gtk.timeout_add(1000, deal_timeout, label)
timer = gobject.timeout_add(1000, deal_timeout, label)

gtk.main()
0590login:Penguin04/11/09 07:53:30ID:R4ut9ZNk
>>587
うっと、その例だと、

count += 1
button.set_label(str(count))
print button
count += 1
button.set_label(str(count))
print button

と二度続けてset_labelしたときに順次表示したいという気持ちで。
0591login:Penguin04/11/09 08:33:34ID:t6yHsCJv
質問の意図が分かった。
おそらくmainループに制御が帰らないから中間のset_textは
反映されないのだと思う。
mainスレッドと別スレッドでset_textすればうまくいくのでは。
def callback(label):
# bigin mainとは別スレッド
global count
label.set_text(str(count))
count += 1
time.sleep(1)
label.set_text(str(count))
# end mainとは別スレッド
0592login:Penguin04/11/09 08:41:42ID:Zkj7YPcz
>>590
何をしたいのかもっと具体的に書いた方がいいのでは?
0593login:Penguin04/11/10 05:52:19ID:ppRcKd5W
>>590
これでどう?
別スレッドによる方法は、よした。こちらの方が簡単。
要は、set_textしたあとmain_iterationを必ず呼ぶ。
下のコード参照。
0594login:Penguin04/11/10 05:52:58ID:ppRcKd5W
>>590
#!/usr/bin/env python

import pygtk; pygtk.require('2.0')
import gtk, gobject, time

def callback(button, label):
  button.set_sensitive(False)
  for i in range(100):
    time.sleep(i%5+1)
    label.set_text(str(i))
    while gtk.events_pending():
      gtk.main_iteration()
  button.set_sensitive(True)

label = gtk.Label('-')
button = gtk.Button('Go')

vbox = gtk.VBox(spacing = 5)
vbox.pack_start(label)
vbox.pack_start(button)

window = gtk.Window()
window.connect('destroy', lambda w: gtk.main_quit())
button.connect('clicked', callback, label)
window.set_border_width(10)
window.add(vbox)
window.show_all()

gtk.main()
0595login:Penguin04/11/17 04:22:22ID:YsKYfmVj
gtk2-perlいじってみようと思うんですが、
gtk_hoge は Gtk2::hogeと言うので安直に
Gtk2::set_locale();
してみたら
Usage: Gtk2::set_locale(class)
と出る。とりあえず
Gtk2::set_locale('euc-jp');
してみると実行出来るが文字化けなおりまへん。
すみまへんが、どなたかぷりーず救いの手。
0596login:Penguin04/11/17 07:45:19ID:iY7axWLS
>>595
http://www.gnome.gr.jp/docs/porting-apps-GNOME-2.0/ar01s10.html
0597login:Penguin04/11/17 09:53:38ID:YsKYfmVj
>>596ありがとん。
use utf8;
足してutf-8で書くだけでしたか。
けどこりゃ面倒だな。。。
0598login:Penguin04/12/03 19:00:50ID:GiyN6pXi
GTK+ 2.4.14 Released
0599login:Penguin04/12/04 18:37:51ID:6LgKh+yC
厨房な質問ですが教えてください。
テキストボックスに日本語入力できません。
日本語の文字列をコピペしても文字化けします。
gtk_set_locale(); の他に
setlocale(LC_ALL,"ja_JP.eucJP"); なども試してみましたが効果ありませんでした。
gtk+ 1.2 なら問題なく日本語が通るのですが、gtk+ 2.4では何か特別なことをする必要があるのでしょうか。
テキストエントリーなら普通に日本語入力できます。

GtkWidget *text; //文字化けする
text = gtk_text_new(NULL, NULL);
gtk_text_set_editable(text, TRUE);

GtkWidget *entry; //文字化けしない
entry = gtk_entry_new();
gtk_editable_set_editable(entry, TRUE);

FAQに違いないと思うのですが、どう調べても解決できません。
#メモ帳程度ならすぐできると思ったのですが、そんな甘いものではないのですね。
0600login:Penguin04/12/04 18:59:58ID:VErRj59z
>>599
http://www.gnome.gr.jp/docs/porting-apps-GNOME-2.0/ar01s10.html
060159904/12/04 21:48:41ID:6LgKh+yC
text = gtk_text_new(NULL, NULL);
ではなく、
text = gtk_text_view_new();
でやってみたら、日本語が使用できました。
gtk_text_new はもしかしてobsolete ?

>>600
参考になりました。(難解すぎてあまり理解できませんでしたが)
0602login:Penguin04/12/04 22:01:56ID:9FhprA6L
マニュアル読みながらやってないのか? 1.2 から 2.0 になる時にけっこう
変わってるよ。

Warning

GtkText is deprecated and unsupported. It is known to be buggy. To use it, you must define the symbol GTK_ENABLE_BROKEN prior to including the GTK+ header files. Use GtkTextView instead.
0603login:Penguin04/12/08 13:42:17ID:s2a0TgVZ
質問です。
画像ファイルを表示させたいのですが、pgm形式の出力の方法がわかりません。
xpmしか出力できないのでしょうか?
0604login:Penguin04/12/08 17:44:12ID:RUzeNZBB
>>603
>xpmしか出力できないのでしょうか?
gdkpixbuf でたくさんのフォーマットに対応してるが、 pgm が対応してるか
どうかはしらん。
0605login:Penguin04/12/09 01:42:01ID:8bxaruuu
GTKを使ったアプリケーションを作ってみたいと思っているんですが、
おすすめの入門書などはありますか?
当方、VisualStudio+C言語+Win32APIならたいていの物は作れる程度の知識ですが、
Linuxは初心者です(´・ω・`)ショボーン

>「GTK+・GDKによるLinuxアプリケーション開発」
近所にこんな本があるんですが、どんなもんでしょうか。
0606login:Penguin04/12/09 02:28:34ID:9Rw7z+2N
最新のGTK+に対応してる本がよさげ。
0607login:Penguin04/12/09 04:27:08ID:R51KLcmk
>>606
Gtk2に対応してる日本語本ってあるの?
あるなら折れも欲しい。

>>605
CとWin32APIを好き勝手できるのなら
http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/gtk-tut.html
ここを一通り見てみるのもそう苦じゃないと思う。
GTK+以外のところ、つくりたいものの根っこの処理なんかは
システムコールとか解説してる本を一読しておく必要があると思うが、
そういう本はわりと見掛ける。
ガンガレ!
060860304/12/09 12:34:15ID:wvxh3lvA
>>604
ありがとうございました。おかげで解決できました。
0609login:Penguin04/12/09 23:37:09ID:8bxaruuu
>>606
>>607
ありがとうございます。参考にします(´・∀・`)
0610login:Penguin04/12/17 15:43:49ID:+/93qx7Y
gtk+ 2.6.0
0611login:Penguin05/01/10 02:06:52ID:W1Pzi+ZV
ショートカットとして "Shift+Ctrl+a" というキーを割り当てるには
どうすればよいでしょうか?

gtk_widget_add_accelerator の第5引数に
GDK_SHIFT_MASK|GDK_CONTROL_MASK
というように指定しても、コンパイルで
invalid conversion from `int' to `GdkModifierType'
と怒られてしまいます。
0612login:Penguin05/01/10 03:15:43ID:lP2Bwze9
http://equis.ya.com/coletassoft/non_pb/linux_pie/imagepages/image8.html
0613login:Penguin05/01/28 21:39:23ID:fhQu+EL0
 Linux上でGtk+2アプリケーションのWindows実行形式(*.exe)を構築する方法を
まとめてみますた。

http://win2linux.sourceforge.jp/pukiwiki/index?%5B%5BInfo%2F%A5%AF%A5%ED%A5%B9%A5%D3%A5%EB%A5%C9%B4%C4%B6%AD%A4%CE%B9%BD%C3%DB%5D%5D
0614login:Penguin05/01/31 14:32:47ID:nk2PSUal
>>613
おおっ!
build-cross.shを試してみようと思うのですがこれってPREFIX変えれば
rootにならなくても動きます?
061561405/01/31 16:16:04ID:nk2PSUal
>>614
>build-cross.shを試してみようと思うのですがこれってPREFIX変えればrootにならなくても動きます?
自己レス.できました.

>>613
いいっすね.スクリプトもページも勉強になりました.
感謝!
0616login:Penguin05/01/31 21:21:11ID:rpwtgdcM
613ですが、libxml2とlibxsltについては、もう少し、入れ方に工夫が必要そうです。自分で
*.pcをでっちあげるというのも手かもしれませんが。ということで要研究です。
0617login:Penguin05/02/24 14:05:33ID:opcJ4VYg
>>11
> こんくらいの英語がわからんよーじゃLinuxは使えんよ。

Linuxのドキュメントは英文のなかでも難解な部類に属すると思われ
0618login:Penguin05/02/26 01:35:42ID: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固定じゃないのかな??
0619login:Penguin05/02/26 13:17:05ID:Rle58e5G
panedの素婦りったのサイズの取得方法をご存じの方、ご教示ください。
0620login:Penguin05/02/28 19:03:23ID:QS7g1csz
>>618
bind_textdomain_codeset() で UTF-8 を指定していますか?
デフォルトでは locale encoding で返ってきます。
062161805/02/28 22:17:53ID:IaK5xt0q
>>620
ソースを見たら、bind_textdomain_codeset(EPN, "UTF-8"); となっていました。

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

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

どうやって確認したら良いんだろう…。
0622login:Penguin05/03/01 03:22:58ID:4G9qSY/D
>g_locale_from_utf8 で
>utf8な文字列に変換してから渡してるんだけど、

g_locale*_to*_utf8じゃないと「utf8な文字列に変換」はできねえんでねえかい
062361805/03/01 19:23:49ID:4zQ3kAWS
>>622
ごめん。書き間違った。
(誤)g_locale_from_utf8 で
(正)g_locale_to_utf8 で

ちゃんと書くと、最初に g_locale_from_utf8 でカレントロケールに変換してから、
strftime に渡してやって、結果を g_locale_to_utf8 で再度変換してから
label を作ってます。
0624login:Penguin05/03/03 02:17:43ID:g8vCaa7b
gtk でウインドウの x ボタンを押しても閉じないようなウインドウを
作るにはどうしたらいいですか?
0625login:Penguin05/03/03 18:04:13ID:Gfb84io7
>>624
"delete_event" の callback 関数で TRUE を返すようにする。
0626login:Penguin05/03/03 20:39:00ID:g8vCaa7b
>>625
サンクス!
062761805/03/03 21:48:02ID: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に関係無かっただよ。スマソ。
0628login:Penguin05/03/14 14:58:26ID:YLJBAcu4
すいません。 
Gdkのgdk_draw_polygonとかの関数で描画する図形の色を
半透明にして表示する事ってできますか?

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

宜しくお願いします。
0629login:Penguin05/03/14 15:32:30ID:bODZhmWq
gtk2 でプログラミングしてます。
ボタンやラベルの色を個別二変更できなくて困ってます。
方法をおしえてーーーー!
それとフォントの変更も個別にできないんです。
0630login:Penguin05/03/14 23:49:50ID:9KHOi9Md
>>628
libgnomecanvas使ったほうがいいかもしれない
0631login:Penguin2005/03/21(月) 12:28:53ID:HsH5YBrh

0632login:Penguin2005/03/21(月) 12:30:23ID:uGHm3JkC

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

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

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

でも普通は何か別のそれ用の関数を使うんですよね。
何を使えばいいんでしょうか。
0634login:Penguin2005/03/24(木) 21:55:49ID:w4FsQjjW
gdk_flush() してみるとか
0635login:Penguin2005/03/24(木) 21:58:19ID:/mf/WXIK
>>633
それはスレッドにする必要があるからそうしてるのか?
gtk_main()に突入したら戻ってこないという理由だけで
スレッド化しているなら、スレッド化せずに
gtk_add_timeout使ってコールバックルーチンのほうで描画するとか。
0636再描画2005/03/24(木) 22:05:36ID:K5TJHYPW
>>634
例のxrefreshしている行を
gdk_flush();
で置き換えてみました。
んー、うまくいきません。ごめん。

今、xrefreshのソースを見てみようとxfree86のソースを落としてます。
ナローバンドなので作業は明日になりそう(T-T)
0637再描画2005/03/24(木) 22:10:39ID:K5TJHYPW
>>635
ちょっとtimeout使ってみて何か上手く行かなかったから
thread使ってみたんですが、
考えてみればスレッドにする程のもんでもないかも。
もう少しtimeoutで粘ってみる。
繰り返す必要が無いならidle_addの方でもいいのかな。
0638login:Penguin2005/03/24(木) 22:32:33ID:ir5d0pxX
>>633
http://developer.gnome.org/doc/API/2.0/gdk/gdk-Threads.html

これじゃダメ?
gtk-thread.cを試したらラベルの書き換えできてるようだけど。
0639再描画2005/03/25(金) 00:26:27ID:i+2vihm2
timeoutで書き直した。成功!!
と思ったら、ボタン(処理を中止するボタンつけてるの)が押せなくなってるっ!
ボタン押しを処理するべきものがお忙し中になっちゃうのかな。

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

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

>>638
読んでみます。ありがとう。
0640再描画2005/03/25(金) 00:56:18ID:i+2vihm2
少し訂正。

[誤] g_thread_init(NULL); を入れたら上手く行った。
[正] g_thread_init(NULL); をgtk_main(); の前に入れたら上手く行った。
0641再描画2005/03/27(日) 20:09:54ID:+oexgFcZ
>>638 のページ、参考になりました。
GUIと関係ない部分での同期処理と複数のスレッドから再描画する時の
同期処理(Widgetをとりあわない様にする事)は別だったんだなぁ。

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



f(x)=xの2乗-xy-yの2乗 について
x=-0.423 y=1 の時の値を(小数点第4位までの表示)
で求めなさい。ただし、変数x,yの値はscanf文で
入力させてください。
0643login:Penguin2005/05/01(日) 10:31:25ID:ua7T6e16
>>642
板違い
0644再描画2005/05/01(日) 10:34:34ID:RRZjWKpR
どこに行けばいいですか?
先ほども別の板で言われてしまいました。
0645login:Penguin2005/05/01(日) 10:54:47ID:fDqSGSeJ
本屋さん
0646login:Penguin2005/05/01(日) 11:25:35ID:ZutXiTEl
>>642
scanfてーからにはC言語だと思うが、プログラミングを習得する気も学習能力もないみたいなので
プログラム板の宿題丸投げスレをお薦めする。
ttp://pc8.2ch.net/test/read.cgi/tech/1113811213/
0647再描画2005/05/01(日) 11:57:32ID:RRZjWKpR
ありがとうございます
0648glade勉強中2005/05/02(月) 06:24:53ID: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から操作するという方法もあるのですが・・・
0649login:Penguin2005/05/02(月) 18:23:05ID:PZ6xqLwA
button1 のプロパティウィンドウ出して、シグナルのところに書くだけでは?

glade はウィジットの表示見本程度にしか使ってないから、違うかも…
0650login:Penguin2005/05/04(水) 22:53:32ID: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));
が生成されてしまいます。
0651再描画2005/05/07(土) 00:09:31ID:fZ/PdFpz
>>642
何でその名で書き込みますか。
何の罠ですか。
私は>>633の「再描画」です。
同一人物に思われるじゃなかですか。勘弁してくださいよ、もう。
0652login:Penguin2005/05/07(土) 09:25:01ID:wZZgaFg6
カブるのいやならトリップつけとけ。
0653login:Penguin2005/05/07(土) 12:29:43ID:FaaicVGA
コテハンでもないのに、いちいちトリップ付けられるのうざい。
0654login:Penguin2005/05/07(土) 23:39:55ID:lWepT/vx
えー、gladeの話に戻すとするか。

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

interface.cは最初にgladeが生成したのから随分変更するので
ある程度コード書きが進行してからまたgladeに頼りたい時は、
別の所にコードを出力しておいて両interface.cをdiffして
ちまちま書き換えてる。
0655login:Penguin2005/05/08(日) 00:01:51ID:cuTcQAVH
とりあえずのものであれば、
シグナルハンドラ(on_button1_clicked())内で
lookup_widget()を使ってentry1を取得するのもありかと。
0656login:Penguin2005/05/08(日) 11:08:08ID: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を・・・と
手間がかかってしまうので、楽ができます。
0657glade勉強中2005/05/08(日) 23:25:53ID: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);
0658login:Penguin2005/05/28(土) 11:21:51ID:o6s+/jnw
GTKについて勉強中なのですが、
HTMLのTABLEタグのような表を作成するにはどうするのが一番いいのですか。
GtkTableのうえに複数のGtkEntryを配置するのが普通?
0659login:Penguin2005/05/28(土) 19:05:54ID:ALWgONN6
表示するだけ…じゃないよな
スプレッドシートっぽいのがやりたいときは専用のウィジェットがあったはず
ttp://gtkextra.sourceforge.net/
0660GTK初心者2005/05/29(日) 16:11:34ID:8OqUCAcQ
gint mainと
int mainの
違いを教えて下さい。
0661login:Penguin2005/05/29(日) 16:32:38ID:BEeLFlJy
sizeof(int)はマシンによって違うけどsizeof(gint)はどのマシンでも同じになる
が、mainをgintにすべきかと聞かれると…微妙
0662login:Penguin2005/05/29(日) 18:20:24ID:8OqUCAcQ
ボタンをクリックして
そのボタンを押した数をウィンドウ上に表示させる
プログラムを教えて下さい。
0663login:Penguin2005/05/29(日) 18:52:06ID:sBgcA4li
>>661
gint main()にしたらダメでしょ。
gintがint以外に置き換えられる場合はwarningになるんだから。
0664login:Penguin2005/05/29(日) 20:08:11ID:y1WOFjTT
>>662

どこまでできていて、どこで詰まってるのか?
06656622005/05/29(日) 20:33:21ID:8OqUCAcQ
>>664
callback関数の
gpointer data
をどうしたらよいかわかりません。
0666login:Penguin2005/05/29(日) 22:41:47ID:y1WOFjTT
>>665
ラベルに表示するならボタンのコールバックを
g_signal_connect(button, "clicked", G_CALLBACK(clicked_cb), label)
とかしといて
コールバック側で
label = GTK_LABEL(user_data)
とか受けとけばどう?
06676622005/05/29(日) 23:13:36ID:8OqUCAcQ
>>666
m(__)m
ありがとうございます。
やってみます。
0668login:Penguin2005/05/30(月) 20:14:27ID:EDgWxmRU
>>659
まさに、こんなのを探していました。
ありがとう。
ダウンロードして試してみます。
0669login:Penguin2005/06/22(水) 21:07:00ID:xe7y7k0v
昨日からgtk勉強してるのですがわからないことがあるので教えてください
1つのグループのラジオボタンを3つ作って、それをA,B,Cとします。
次に一つ普通のボタンを作って、
Aを選択中にこのボタンを押したらA関数が、B選択中はB関数が実行される・・
というプログラムを作りたいのですが、どのように考えればよいのでしょうか??
0670login:Penguin2005/06/22(水) 21:16:32ID:qMKsIvq9
>>669
普通のボタンが押された時に呼ばれるコールバック中で、どのラジオボタンが
選択されてるか判定して・・・・、gtk の話でない気がするがどの辺がわからんのよ?
0671login:Penguin2005/06/22(水) 21:34:03ID:xe7y7k0v
>>670
コールバック中に判定する方法がわかりません

自分でいうのもなんですが、基本がわかってないと思います。
0672login:Penguin2005/06/22(水) 21:54:13ID:qMKsIvq9
user_data でもグローバル変数でも好きなので、
状態をいれた変数かボタンを渡す。
06736692005/06/22(水) 22:04:18ID:xe7y7k0v
もう少し考えてがんばってみます
参考書なしで、ネットで調べてやってるんですが
やはり参考書は買ったほうがいいですかね?
0674login:Penguin2005/06/22(水) 22:10:13ID:qMKsIvq9
いい本ないから・・
ネットで gtk2 のチュートリアル見るのがいいと思う。
06756692005/06/22(水) 22:19:39ID:xe7y7k0v
>>674
そうですか・・・
さっきの問題は解決しました

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

というようなのでいちおうできました
もっと高度なテクとかあるのかもしれませんが。。。
ありがとうございました
0676login:Penguin2005/06/23(木) 01:50:52ID:jw4l769e
GTK+をいじり始めて間もない初心者なんですが少しお聞きしたいことがあります。
ビデオキャプチャプログラムのようなものを作っていて、キャプチャした画像を
pixbufに突っ込んでリモートのXクライアントで表示する場合、リアルタイム(30fps)での
表示がキツイです。画像データを圧縮して転送するオプションみたいなものはありませんでしたでしょうか?
0677login:Penguin2005/06/23(木) 02:58:12ID:jw4l769e
説明が足りてない気がするので補足。
GTKはver1.2です。リモートではない場合、描画は2ms程度で終りますが、
リモート(LAN内)では30ms前後かかり、他の処理を含めるとリアルタイム表示(33ms)は
微妙に無理といった感じです。
画像は320x240、24bitRGB、毎秒30枚と考えると、無圧縮では最低でも7MB/sもの
帯域が必要な計算になります。圧縮できるようなことをどこかで見た気がするのですが
気のせいでしょうか??改めて探してみたのですが見つかりません。
0678login:Penguin2005/06/23(木) 20:12:38ID:MHRUW0Sb
gtk 関係ないんじゃないの?
7MB/s ってことは RGB 生データ?それならなおさら gtk 関係ない気がするが。
0679676,6772005/06/25(土) 21:14:27ID:O58VWF1R
>>678
7MB/sは生データですよ。30msってのはキャプチャにかかる時間を除いた、
表示(ネットワーク転送含む)するのにかかる時間ですので少なくとも
X関連であることは間違いないです。
自マシンで表示する場合はわずか2ms程度で表示できることからも明らかです。
0680login:Penguin2005/06/26(日) 00:23:14ID:bkhj+VqI
textviewで選択範囲の指定はどうすればよいのでしょうか? 選択範囲の取得の方は

gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);

で、出来るようですが。ちなみにやりたい事はある地点1から地点2までの範囲の文字列をクリップボードに記憶する事です。
0681login:Penguin2005/07/05(火) 04:57:38ID:0YaxXABQ
gtk2.0 C言語にてプログラムを作っているのですが行き詰まってしまいました。
メニュー専用の関数を作り、トップレベルウィンドウのウィジットを渡してメニューを生成しているのですが、
その関数の中でメニューのあるアイテムが押されたときのコールバックとして、リストのアイテムやラベルの文字列等を
変更したいと思っています。
ラベルやリストなどのウィジットの取得方法がわからないのですがいい関数ありませんでしょうか?
ご教授よろしくお願いします。
0682login:Penguin2005/07/05(火) 05:09:08ID:0YaxXABQ
訂正です
トップレベルウィンドウのウィジットを渡して

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

ウィンドウのウィジットはlookup_widgetやget_widget関数が使えないか
試したときの名残でした。
0683login:Penguin2005/07/15(金) 04:16:09ID:pWVHLMqz
 
0684login:Penguin2005/07/19(火) 23:31:34ID:Kq6OqZbu
2.6からGtkMessageDialogは2行で書くことを強要するようになったのか・・・orz
0685login:Penguin2005/08/14(日) 11:45:43ID:hCW5GrPA
GTK+-2.8.0 release age
0686login:Penguin2005/08/14(日) 22:13:25ID:k5rVKxDc
>>685
描画にcairoを使ったやつだな。安定してるのかな?
0687login:Penguin2005/08/14(日) 22:23:45ID:i3voTSGN
>>686
さあ。CairoもGLIBもPangoもうまくいったんだけど、
GTKのmakeが途中で失敗して試せず…
06886872005/08/15(月) 15:49:57ID:w6RYEsxj
できた。
>>686
安定してるとはおもうよ。今のところ怪しい挙動はしてないし。
あと、ColorChooserがきれい(;´Д`)。
0689login:Penguin2005/08/21(日) 12:44:35ID:K7D1YFrD
現在、Redhat9.0でX-Windowのプログラミングを
行っています。

質問内容

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

C言語の関数かX-Windowの関数で実現
方法をご存知の方がいましたら、アドバイス
お願いします。
0690login:Penguin2005/08/21(日) 13:38:31ID:HFufZyw/
usleep()
0691login:Penguin2005/08/21(日) 13:48:07ID:K7D1YFrD
>>690

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

昨日から悩んでましたが、これで解決しました。
感謝感謝 <(_ _)>(本当に有難う御座います。)
0692login:Penguin2005/08/24(水) 15:36:40ID:ONHXEom6
Gtk 1.2で質問です。
CListのある行が表示領域の中か外かはわかるんですが、
その行が表示領域より上なのか下なのかを判別する方法はありますか?
0693login:Penguin2005/08/24(水) 15:45:04ID:UhWJrWdj
>>692
もう1.2は捨てろや。
0694login:Penguin2005/08/24(水) 16:27:17ID:ONHXEom6
1.2で不可能なら乗り換えますので…
0695login:Penguin2005/08/24(水) 18:34:08ID:I9lXJq9H
>>692
先頭からなめていけばできるんじゃないか?
と CList を全然使ったことないオレが言ってみる。
0696login:Penguin2005/08/25(木) 00:07:52ID:hGqCOotH
みんなエディタどうしてる? Emacs?
KDevelopとかEclipseとか統合環境ってやっぱ便利かな?
0697login:Penguin2005/08/25(木) 01:16:12ID:fP3EQi3h
>>694
CListは2.x以降では使うべきでないウィジェットなので、調べるだけ無駄。
0698login:Penguin2005/09/01(木) 19:10:40ID:q3rS4hWe
GTK2.0のプログラミングを始めるにあたって、
「ここ見て勉強しる!」っていうWebはありますか?
0699login:Penguin2005/09/01(木) 21:26:59ID:rC80u0pE
本家のチュートリアルを流し読んだら、
・チュートリアル
・API リファレンス(gtk,glib)
・ソース
・ソースに付いてるサンプルコード(gtk-demo が特にいい)
の4つを何時でも読めるようにローカルのハードディスクに入れて、後は実戦。

0700login:Penguin2005/09/01(木) 21:37:27ID:l0ibWz2e
>>699
本家のチュートリアルが、既に腐ってるという問題がw
0701login:Penguin2005/09/06(火) 18:45:02ID:dEt8CCEg
ソースを読めば理解しあえる
それが本物のプログラマーだ
0702login:Penguin2005/09/06(火) 23:46:36ID:P14C2zmG
>>701
幻想だ。ほかのやつが書いたソース読んでもむかつくだけ。
0703login:Penguin2005/09/07(水) 00:48:45ID:Ow0LlqqK
半年前に自分が書いたコードが全然理解できません。
0704login:Penguin2005/09/20(火) 00:43:03ID:W0eobZlU
>>703
ちゃんとコメント書いとけ
0705login:Penguin2005/09/20(火) 00:55:32ID:txdQkjKa
そこで文芸的プログラミングですよ
0706login:Penguin2005/09/20(火) 18:01:07ID:Vs5i3O4n
gtk+-1.2.10 って最近の gtk+-2.x より重くて不安定なの?
0707login:Penguin2005/09/21(水) 15:17:22ID:rr1Fmfwx
1.2.10のほうが軽いけど、機能的にかなり劣るしクラッシュを起こすような
大きな不具合もいろいろ存在する。
0708login:Penguin2005/09/26(月) 18:08:58ID:DNEXEhTN
★〜彼方の願い星〜★
このレスを見た人は、超ラッキーな人♪
でも、このレスを見ただけじゃ何も起らないよ。
効果を実感したいなら、このレスを5回違うスレにレスしてね♪
だぁい好きなあの人に告られたり、
成績がどんどん良くなって、先生に褒められちゃったり...。
次々とHAPPYな事が訪れます♪
此の頃変なのがいっぱい回ってますが、これは本当です!!
これが本物の、初代HAPPYメールです♪
0709login:Penguin2005/10/03(月) 03:44:59ID:CJIUV5JW
質問です。
GtkComboBox (=ドロップダウンリスト)の

gchar* gtk_combo_box_get_active_text (GtkComboBox *combo_box);

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

環境:FreeBSD5.4 gtk+2.6.10
0710login:Penguin2005/10/03(月) 04:06:14ID:ddKsBqfZ
>>709
Returns : a newly allocated string containing the currently active text.
だから、コピーが返ってくる。
GTK+ではコピーでない文字列が返ってくる関数は返り値の型として
G_CONST_RETURN gchar *を使っていると思ってよい。
0711login:Penguin2005/10/20(木) 00:48:02ID:gcr1pUQn
現在、SUSELINUX10.0を使っています。これからGTK+でプログラミングを始めようと
考えているのですが、初心者レベルの参考書かWEBページを教えていただけませんか?。

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

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

宜しくお願いします。
0712login:Penguin2005/10/20(木) 01:56:33ID:uIaqifFq
>>711
http://www.google.co.jp/search?hl=ja&q=gtk+%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=
0713login:Penguin2005/10/20(木) 02:28:11ID:gcr1pUQn
>>712

昔、アテナウィジェットでプログラムを組んだことがあるので、理解ははやいです。
ありがとうございました。
0714login:Penguin2005/10/25(火) 10:18:40ID:5uMbs+gQ
GtkButtonを使ったボタンを通常より立体的にしたいのですが、
リソースを設定するだけで可能なのでしょうか。
0715login:Penguin2005/10/25(火) 13:25:22ID:IfftLXnr
GTKはリソース使いません。
0716login:Penguin2005/10/25(火) 13:45:08ID:6LKQFPf8
>>715
.gtkrcはリソースファイルって言わないの?
0717login:Penguin2005/10/25(火) 14:02:11ID:5uMbs+gQ
>>715
Reference Manual に Resource File の章があるんですけど。
0718login:Penguin2005/10/25(火) 17:22:31ID: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
0719login:Penguin2005/10/25(火) 18:47:16ID:cgJQeaf4
freetype2インストールしてある?
0720login:Penguin2005/10/25(火) 22:24:06ID:j8mKOjPp
コンパイルエラーの意味がわからないなら、
rpmとかdebとかのをインスコしろよ
0721login:Penguin2005/10/26(水) 00:25:02ID:0UU6o7oS
Geany is a text editor using the GTK2 toolkit with basic features of an IDE.
http://geany.uvena.de/
0722login:Penguin2005/10/26(水) 01:50:52ID:fACOIYn1
java-gnomeとかgnoclとかいじってる奴っておらん?
もうちょっと盛り上がれこのスレ。
0723login:Penguin2005/10/26(水) 10:45:30ID:J1h3yCQS
>>718
ttp://www.kde.gr.jp/ml/Kuser/msg04076.html
要するに該当ファイル中の
#include <freetype/freetype.h>

#include <ft2build.h>
#include FT_FREETYPE_H
に直せばよい。
0724login:Penguin2005/10/26(水) 20:04:52ID:7wGr95kq
>>722
java-gnome vs gtk#とかおもしろそう。
0725login:Penguin2005/11/26(土) 16:49:49ID:QuE9fj5+
GTK+2.0以降 で GDK Imlib を使う方法はないもんでしょうか。
0726login:Penguin2005/11/29(火) 01:33:56ID:NZ7bfDmC
UIManagerでMenuToolButtonを扱うにはどうすればいいのでしょうか?
0727login:Penguin2005/12/05(月) 17:09:52ID:yTnWD7jY
GtkTextViewで質問があります。

ウィンドウにメニューバーとテキストビューをのせています。
横スクロールバーはなくし、長文を折り返して表示させたいのですが、
ウィンドウが勝手に広がってしまいます。
また、ウィンドウを狭くしようとしても、狭くできません。(マウス操作で)
0728login:Penguin2005/12/05(月) 18:04:47ID:BtGpeGNp
>>727
gtk_text_view_set_wrap_mode()
0729login:Penguin2005/12/07(水) 12:30:25ID:/q9zEwb5
>>728
レスありがとう。
ワードラップ効かすと折り返しが妙なとこでされちゃうので、NONEにしてます。

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

1 2 3 4 5 6 7 8 9
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
0730login:Penguin2005/12/07(水) 12:37:34ID:/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 使ってます。
0731login:Penguin2005/12/07(水) 13:32:02ID:uBfmckMe
>>727
以前、狭くできなくて悩んだ時は textview に gtk_widget_set_size_request で
適当なサイズを入れて狭くできるようになった。

理屈はわからないけど
0732login:Penguin2005/12/07(水) 17:02:44ID:/q9zEwb5
>>731

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

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

今は、VTEで作業してます。
0733login:Penguin2005/12/07(水) 17:20:33ID:gfGZYrS3
>>732
お前が折り返しをしないように設定してるからだろ。ちっとは頭を使え
0734login:Penguin2005/12/07(水) 17:38:00ID:/q9zEwb5
>>733
ワード・ラップとは、ある単語が一行で完了しない場合に、(単語の区切りを意識して) 強制的にその単語を次の行に移動して表示する機能をいいます。

単語の区切りを無視してくれるようにはできないですよねぇ...
0735login:Penguin2005/12/07(水) 18:02:40ID:gfGZYrS3
>>734
GTK_WRAP_CHAR
リファレンス嫁
0736login:Penguin2005/12/08(木) 10:11:26ID:NkHarRL9
>>735
GTK_WRAP_CHAR にもしたが、へんなとこで改行されてしまうんだけれど...

リファレンス嫁んorz
0737login:Penguin2006/01/28(土) 06:10:36ID:y31wlGaX
http://pcmanfm.sourceforge.net/
0738login:Penguin2006/01/28(土) 13:29:29ID:amWZrwNv
>>736
ここでゴチャゴチャ訊いてるより自前でやってしまう方が早いと思うが
0739login:Penguin2006/02/08(水) 12:18:47ID:EWHkI7FI
コマンドライン引数で `-' を渡したいんですが、gtk_init() で `-' は取り除
かれるみたいですね。
なんか回避方法とかありますか?
やっぱ gtk_init() の前で一旦引数をパーズするしかない?
0740login:Penguin2006/02/08(水) 20:36:38ID:CYm40DFq
慣習としては -- をおいてオプションと引数を区別するんじゃないか。
GTKが対応してるかどうかは知らんけど。
0741login:Penguin2006/02/08(水) 23:26:08ID:EWHkI7FI
>>740
うーん、オプションとして `-' を渡したかったんですけどね。`-file -' で
標準入力からデータを読む、みたいな。とりあえず gtk_init() の前で捕捉す
ることで逃げました。

ちなみに `--' には対応してるみたい。試してみたら `--' の後の `-' は
gtk_init() を通過してきた。
0742login:Penguin2006/02/19(日) 15:58:57ID:P101Qt/X
シグナルの発行ってどうやるの?
0743login:Penguin2006/02/20(月) 13:14:52ID:OBEFgOmS
g_signal_emit()
0744login:Penguin2006/02/21(火) 01:18:20ID:OjKUo/jf
コールバック関数の中でブロッキングする処理があるんですが
ウインドウ上のボタンを押されたらキャンセルさせたいです。

でもコールバック関数がブロッキングしてたらgtk_main()に返らない
のでキャンセルボタンには反応できないんでしょうか?
解決方法をご存じの方がいらっしゃいましたら教えてください。
0745login:Penguin2006/02/22(水) 00:35:56ID:DgPvEyu9
>>744
よくわからんが、長時間かかる処理をキャンセルできるようにしたいということか?

gtk と関係ないがスレッドとかどうよ?
07467442006/02/22(水) 22:32:46ID:s0bZ0aZZ
うーん、スレッドでもいいんだけど割り込み処理みたいなこと
できないかなぁーと思いまして。。
0747login:Penguin2006/02/23(木) 14:41:15ID:9eTddDoJ
適当な間隔で
while (gtk_events_pending())
gtk_main_iteration();
を呼んで一時的にイベントループを回してやると、スレッドを使わなくてもUIの処理ができるようになる。
システムコールなんかで長時間ブロックするような場合には使えないけど。
0748login:Penguin2006/02/23(木) 22:16:58ID:HDaCfi3a
>>743
サンキスト
0749login:Penguin2006/04/06(木) 09:06:33ID:xwiqVJCG
すいません、どうしてもわからなかったのですが…

gtk_label_set_markup() で '<' と '>' を表示する方法がわかりません。
タグの開始(終わり)と判断されてしまうようです。
すいません、よろしくお願いいたします。
0750login:Penguin2006/04/06(木) 13:56:52ID: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);
07517492006/04/07(金) 00:53:52ID:064lZiFe
>>750
ありがとうございました、行けました。
0752login:Penguin2006/04/08(土) 16:50:28ID:qD5vNEHv
GTKアプリケーションでウィンドウを分割しているウィジット(マウス操作でレイアウトの棒を左右に動かせる)を見掛けたのですが
あれは何と言うウィジットなのでしょうか。

ウィジットの名前が分からないと調べようもないので教えてください
0753login:Penguin2006/04/08(土) 17:07:07ID:et4vCTR5
多分 GtkHPaned っていうやつだと思う
Glade(2.12.1)だと右から2番め下から2番めにあるやつ
0754login:Penguin2006/04/09(日) 00:12:12ID:lWv/4qoU
>>753

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

そのウィジットで出てきました
0755login:Penguin2006/04/26(水) 18:09:37ID:k4vlbIwh
gtkで画面をすぐに更新させるにはどうしたらいいでしょうか。
swapBufferやflushのようなカンジの関数があるかと
思ったんですが、見付かりませんでした。
0756login:Penguin2006/04/26(水) 23:15:06ID:aZu1U6v6
GdkFlush って無かったっけ?
0757login:Penguin2006/05/02(火) 08:17:35ID:UqKVJP00
関数名長いよ!ヽ(`Д´)ノ ウワァァァン
0758login:Penguin2006/05/02(火) 08:57:43ID:e/deB1lW
ああ、C言語だからな。
0759login:Penguin2006/05/09(火) 07:32:53ID:reS9af81
GtkComboBox で質問です…。

GtkComboBox の signal で "changed" が発行された時と同じような感じで
コールバックを呼びたいのですが、
選択されたアイテムが前のと同じでも呼べるようにするにはどうすればよいでしょうか…
識者の方、お願いいたします。
0760login:Penguin2006/05/21(日) 23:50:35ID:wP3kA47Z
Gtk初心者です

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

何か解決する方法はあるでしょうか?
また,代替手段などありましたら教えて下さい
0761login:Penguin2006/05/22(月) 00:15:02ID:lYbn8Pcy
>>760
文が変
07627602006/05/22(月) 00:36:55ID:cF96P9p7
失礼しました.訂正します

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

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

よろしくお願いします
0763login:Penguin2006/05/22(月) 10:15:59ID:DWYo0BTY
>>760
私はsupport関数を使わないからよく分からないけど、
gtk+-1.x用のgladeでは get_widget だった関数が 2.0 では lookup_widget に
なってるっぽい。
こんなんあった。↓
ttp://lists.ximian.com/pipermail/glade-users/2003-October/001603.html

glade使ってるんだよね? glade使ってないのにgladeで準備された関数を
使っているという話じゃないよね?
07647602006/05/22(月) 21:47:05ID:cF96P9p7
>>763
ありがとうございます


> glade使ってるんだよね? glade使ってないのにgladeで準備された関数を
使っているという話じゃないよね?
はい.glade使ってます.
でも,lookup_widget以外を使って同じような関数って,皆さんどのようにしているんでしょうか?
それから,GTKを学習する上で参考になるHPなどありましたら,
教えて下さい
07657632006/05/23(火) 00:10:16ID: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 とかのマクロ部分は必要なくなります。
0766login:Penguin2006/05/24(水) 10:41:45ID:zKYF/EzE
gtk+-2.6 をつかってるんですが、
GtkRadioButtonで、group内のすべての radio buttonを
inactiveにする方法ってあります?

gtk_toggle_button_set_active(radio_button, FALSE) だと
activeになっているものを inactive にしてくれないみたいなんですが。
0767login:Penguin2006/05/24(水) 15:19:22ID:Yn9YRiJ9
>>766
必ず一つだけが active になってるのが radio button なので、できない。
0768login:Penguin2006/05/25(木) 02:56:23ID:VlZmec8+
>>767 そうみたいですね... newしたときから activeになってるみたいだし。
どれも選択されていない RadioButtonって需要ないのかしらん。

素直に GtkToggleButtonに signal組み合わせて作ります。
0769login:Penguin2006/06/02(金) 00:28:01ID:hcRTarUB
gtk_button_new_from_stockはgtk_buttonと名が付くのに何で
GtkWidgetを返しやがりますか
0770login:Penguin2006/06/02(金) 02:04:06ID:N+GTRApa
gtk_hogehoge_new は GtkWidget *を返すって conventionじゃないの?
そのほうが gtk_widget_showとかに渡すときも面倒じゃないし。

gtk_hogehoge_do_something の第1引数は たいてい GtkHogehoge だから
その場合は面倒だけど。
OOPLでやればそんな面倒はないんだけどね。
0771login:Penguin2006/06/08(木) 02:09:17ID:+cYFIqs+
質問です。
GTK のメインループで使っている GMainContext は g_main_context_default () で
取れますか?

実は main_context = g_main_context_default ();
して、この main_context を他のライブラリに使用しようとしたら(ライブラリの初期化に必要)
「FreeBSD ではうまく動く、しかし Windows ではうまく動かない」
という現象に出くわしました。
なにせ main context も loop も理解していないので…。
どなたかお教えくださいませ.............
0772login:Penguin2006/06/08(木) 03:26:47ID:DJniGV22
gtk_widget_destroyと g_object_unrefってどう使い分けるんでしょう?

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

0773login:Penguin2006/06/11(日) 20:12:39ID:J6bQThTU
gtk_window_set_title(window,"ゲイツ砲作動");
0774login:Penguin2006/06/14(水) 01:55:53ID:t+ofgOcF
glibとかgtkのドキュメントでman形式のものってありますか?
--enable-manとかやってみたけど、よくわかりません。
どこかへのポインタでもいいですので、教えていただけませんか。
0775login:Penguin2006/06/14(水) 13:34:14ID:iviE8HFQ
つ/usr/share/gtk-doc
0776login:Penguin2006/06/25(日) 01:13:32ID:FTDnSR/k
>>772
閉じるボタンに繋げる合などだけ destroy で、他は unref でいいと思う。
ほかから参照されているときに destroy しても
使いものにならなくなるだけで問題はない。

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

似たような質問がここに
http://mail.gnome.org/archives/gtk-list/2001-August/msg00105.html

GtkObject の終了処理について
http://developer.gnome.org/doc/GGAD/sec-finalization.html
0777login:Penguin2006/06/26(月) 11:40:10ID:M7qvCUGx
OpenLDev
ttp://www.openldev.org/

これよさげ
0778login:Penguin2006/07/03(月) 22:12:38ID:pWv0Yxym
GTK+ 2.10.0とGLib 2.12.0のリリースアナウンスメントをwww.gtk.orgで発見
でもリリースノートとtarballは、まだなのね…
0779login:Penguin2006/07/06(木) 20:30:35ID:xw7f/fG0
Gtk使えねぇええええ
TreeModel超糞。
0780longhon2006/07/17(月) 23:28:47ID:BTBgIeR8
いまGtkをまなんでexcelみたいな表を作ろうと考えたのですが、
tree view list を使ってできるというところまではわかったのですが、
日本語のチュートリアルはなく、原本のリファレンスを見るものの
さっぱりな状態です。ちょっと教えていただけないでしょうか?
クレクレ君ですみません。
0781login:Penguin2006/07/18(火) 00:17:21ID:KWhoRQuP
Linuxならgtk-demoでサンプルが見れるぜい
0782longhon2006/07/18(火) 00:56:09ID:P7E0MH5b
おーdemoのバージョンってどうやってしらべるんだろ?
0783login:Penguin2006/07/18(火) 01:07:07ID:lOzLf0iO
表作るなら>>659みたいなのもあるらしい。
俺はListStore程度で済む事しかやらん(やれん)から使った事ないけど。
あとリファレンスはruby-gtkのが割と日本語化されてて初めは楽。
0784login:Penguin2006/07/18(火) 06:48:40ID:TIhQa3Ub
jpegイメージを表示するプログラムはどれくらいかんたんにできますか?
0785longhon2006/07/18(火) 16:17:54ID:P7E0MH5b
そのListstoreがわからないーーー
0786login:Penguin2006/07/18(火) 16:37:02ID:CMZdz4SS
英語で良いならttp://scentric.net/tutorial/があるな。
0787login:Penguin2006/07/18(火) 19:37:56ID: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; }
0788longhon2006/07/21(金) 00:43:24ID: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);
以下略
0789longhon2006/07/21(金) 02:15:17ID:6uqESCNY
訂正 "Daisuke" -> Date
デバックの張ってしまった
0790login:Penguin2006/07/22(土) 22:44:27ID:ePUeuv0L
リストの更新ってどうしりゃいいんだ?
0791login:Penguin2006/07/23(日) 03:07:35ID:amAZ2PT+
>>790
リストって何のリストだお
0792login:Penguin2006/07/23(日) 05:14:23ID:x3i4d7lC
GTKのスレで質問するのは適切ではないかもしれないのですが、
リアルタイムに描画を更新するプログラムでVSYNCを取得するって
どうすればいいのですか?
簡単なアニメーションを表示させたくて、ウィンドウシステムや
ウィジェットなどはなんでもいいのですが、普通はどのようにVSYNCを
取得するものなのでしょうか?
ウィンドウシステムごとに固有の方法が用意されている?
それともカードのレジスタかなんかから直接とってくるのでしょうか?
(それともVSYNCなんて取る必要はない?)

描画関係に関してはまるっきり素人なもので…
0793login:Penguin2006/07/23(日) 05:59:52ID:9cNKicFy
無理無理
0794login:Penguin2006/07/23(日) 08:32:45ID:h2mLkene
>>792
DRM_IOCTL_WAIT_VBLANK で検索してみ
0795login:Penguin2006/07/23(日) 11:29:11ID:x3i4d7lC
>>794
ありがとうございました!

調べてるときに、割り込みでVBLANKがとれない場合
単にVBLANKの周期で処理を行うようなpatchがあったりしたのですが
こういったことも有効なものなのでしょうか?
(何か根本的に勘違いしてる、私?)
0796login:Penguin2006/07/24(月) 20:55:51ID:OZvD/B1G
意味ないんじゃないのそれ。
単に周期を合わせるのだと、運がよければvsyncに合うけど、
運が悪ければ書き換えの最前線が常に画面上になるんじゃないのかな。
0797login:Penguin2006/07/25(火) 20:47:07ID:ObYp5Z0J
無理無理
0798login:Penguin2006/07/25(火) 22:07:19ID:ANae/VXn
gtkでほにゃららウィザードみたいな感じで画面全体を
遷移させたいのですが、どうすればいいか教えてください。

やっぱり神様windowがパネルごとshow/hide?
0799login:Penguin2006/07/26(水) 03:03:30ID:nO5MsZXX
gtk_window_fullscreen
ttp://developer.gnome.org/doc/API/2.0/gtk/GtkWindow.html

?
0800login:Penguin2006/07/28(金) 16:03:10ID:gdBL/xGV
ドルイド使えん?

http://developer.gnome.org/doc/API/2.0/libgnomeui/GnomeDruid.html
って、全画面にはならんのかな.
0801login:Penguin2006/08/01(火) 00:31:39ID:L0TWKid5
おまいらやっぱCで書いてる?
0802login:Penguin2006/08/03(木) 17:59:03ID:Pbm1StqY
Haskellで。
0803login:Penguin2006/08/03(木) 21:08:21ID:PrqlXciu
#include <gtk/gtk.h>

がダメで

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

だと大丈夫なのはどういう意味があるのでしょうか。
windows.h のように普通にincludeできないと違和感を感じてしまうのですが…
0804login:Penguin2006/08/03(木) 21:25:07ID:3S1RLjXN
何がどうダメなのさ
0805login:Penguin2006/08/03(木) 21:26:34ID:ONA5Yror
pkg-config --cflags --libs gtk+-2.0
を実行したらすぐわかるような
0806login:Penguin2006/08/03(木) 23:21:48ID:k7FfsSEw
gtk を試しはじめてネット上で検索とかしまくってるんだけど、
検索すればするほど日本ではあまり使われてないような…。

みんな何作ってるの?公開とかしてる?
0807login:Penguin2006/08/03(木) 23:29:07ID:B7tJQEHQ
>>806
本が結構売られているよ。

GTK+で有名なのはGIMPかな。っていうかこれのために作られたのがGTK+・・・
0808login:Penguin2006/08/04(金) 02:18:59ID:1ByfcMbI
>>806
JDでスレ検索
0809login:Penguin2006/08/04(金) 16:25:35ID:QDVDuP06
GTK+-2.0の日本語の本ってある??>>806
結局、公式 gnome 開発者ガイド使ってるけど、これも突っ込み甘い..
http://www.amazon.co.jp/gp/product/1593270305/250-5057288-9394607?v=glance&n=52033011&s=english-books
0810login:Penguin2006/08/12(土) 23:07:37ID:gUx2Zo6A
APIのレファレンスマニュアルのページ読むと必ずハングするんですが、
なんか意地悪してるんでしょうか。
0811login:Penguin2006/09/01(金) 22:01:53ID:9hBp2t2i
>>810
GTKベースのソフトで読まないとハングするよ。
0812login:Penguin2006/09/02(土) 09:14:33ID:4priHuM5
読むのに使ってるソフトのスレで訊くべきじゃないの
0813login:Penguin2006/09/03(日) 22:39:48ID:tLDrWzmC
GtkMenuToolButtonをGtkUIManagerで簡単に作る方法は?
UIのXMLとGtkActionEntryで一元的に管理したいんだが。
0814login:Penguin2006/09/21(木) 07:39:24ID:5S0sHSq3
すいません、質問です。

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

font_name="Arial 10,MS PGothic 10"

は試したのですが、ダメでした…。
0815login:Penguin2006/09/22(金) 05:29:30ID:oc0o+F4Y
>>814
GNOME使ってるなら
gconf-editorで
/desktop/gnome/interface/font_name
Arial, MS PGothic 10
08168142006/09/22(金) 07:13:17ID:shCBdU/U
>>815
ありがとうございます。GNOME は使っていません。
単体なソフトなもので…。
もう少しいじってみます。
0817login:Penguin2006/09/23(土) 02:53:42ID:DBZDIlnA
>>816
試してないけど、
GtkSettingsで
"gtk-font-name"というプロパティを
Arial, MS PGothic 10
に設定したらできるかも
08188142006/09/23(土) 09:00:47ID:oVJ5FxNJ
>>817
ありがとうございます。
試してみたのですが、だめでした…。
実は後で気がついたのですが、
font_name="Arial, MS PGothic 10"
は FreeBSD でうまく行って、Windows ではうまく行かないことが分かりました。
日本語は GTK デフォルトのフォントになってしまうようです。
(firefox とか thunderbird とかと同じ)
よく分からないのですが、放置しておきます。とほほ…。
08198142006/09/26(火) 09:24:06ID:G1FxsBCP
一応自己解決しました。
font_name="Arial,MS PGothic 10" ですが、コンマの後にスペースがあると、
Windows ではダメなようです。(FreeBSD では OK ですが)
なんかちょっと悲しい。
0820login:Penguin2006/10/06(金) 23:35:59ID:s7TA8Fbc
>>819
遅レスだがメモメモ…
0821login:Penguin2006/10/26(木) 22:56:28ID:gIte4gPi
ちょいと質問なんですが、gtk_label_get()の第二引数って、取得したテキストを指すポインタのポインタの領域をmalloc等で領域確保する必要はないんですか?

char *s;

GTK_LABEL(label),&s);

として、sをg_mallocしてg_freeしたら、なんか実行時にエラーが出ました。
知ってる人いたら教えてください。
0822login:Penguin2006/10/26(木) 23:16:38ID:/n9s8yCa
>821
>It does not make a copy of this string so you must not write to it.
なので下手にいじってはいけない。多分constと思っていい。
あとそれdeprecated。
08238212006/10/26(木) 23:48:57ID:gIte4gPi
>822
ありがとうございました。(コードが一部抜けてました。)

gtk_label_get(GTK_LABEL(label),&s);

とした場合、sがconst扱いになるということですね?
あと、deprecatedというのは、gtk_label_get()の使用は推奨されてないということでしょうか?
ならば、ラベルの名前を取得する方法は、どうすればよいでしょうか?
0824login:Penguin2006/10/26(木) 23:54:02ID:1m0EYGYM
>>823
gtk_label_get_text() or gtk_label_get_label()
08258212006/10/27(金) 00:36:56ID:l81dNlg+
>824
ありがとうございました。
0826login:Penguin2006/11/02(木) 00:27:19ID:83qYmDpR
GtkWindow のサイズをマウスを使って変更したときに、
マウスボタンを離すまでシグナルが発生しないようにしたいんですけど
GTK+のチュートリアル読んでもさっぱり・・・
どなたか手がかりを下さいませんか。

今のままだとサイズ変更の途中で再描画されてしまってマズー
0827login:Penguin2006/11/04(土) 03:13:31ID:oVt1SXTf
どちらかっていうと Window Managerの設定じゃないの?
と、思い付きを書いてみる。
0828login:Penguin2006/11/04(土) 07:40:52ID:wQVg/xG3
g_signal_handler_blockとg_signal_handler_unblock
だったと思う
0829login:Penguin2006/11/04(土) 20:06:13ID:taceIu9P
>>827
私もそう思った。
opaqueとかoutlineとかいう名称でいろんなWMで設定できる項目だと思う。
ソフトの方でその動作を組み込むこともできなくはないんだろうけど。
08308262006/11/05(日) 22:06:22ID:rcTSwJgs
提案ありがとうございます。WMですか。
Windowsでやってるのでその辺の設定がちょっと。
g_signal_handler_block あたりで何とかチャレンジしてみます。
0831login:Penguin2006/11/08(水) 09:48:14ID:CnqaUpTW
画面のプロパティ→デザイン→効果→
「ドラッグ中にウィンドウの内容を表示する」をoff

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

831さんの方法が一番スマートだとは思いますw
皆さんありがとん。
0833login:Penguin2006/11/17(金) 00:05:19ID:LQk3CfzK
質問ですが、gtk_main_quit()した後って、作ったウィジェットとかが確保していたメモリは全てフリーされるのでしょうか?
さらに、GDKのウィジェット(GdkPixmapとか)も開放されるのでしょうか?
0834login:Penguin2006/11/24(金) 14:25:27ID:7Nf7BP84
おい、お前ら JCL切ってパンチカードでFORTRANプログラムやってた漏れが来ましたよ。

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

0835login:Penguin2006/11/24(金) 14:32:58ID:I7rtRk4j
消えろカス
0836login:Penguin2006/11/24(金) 15:05:31ID:7Nf7BP84
Linux遣ってる香具師って人間性に問題ある奴が多いんだよな。

そんなことはない!835見たいな奴は俺も嫌いだ!って香具師がいるなら834にレス寄越せや。
0837login:Penguin2006/11/24(金) 16:34:59ID:N0elR/SA
そっか 835みたいなのがデフォルトなのか。
0838login:Penguin2006/11/24(金) 18:24:29ID:YADT00jb
プログラミングやる気があるならググレよ
0839login:Penguin2006/12/04(月) 21:52:48ID:739N7ZVz
>>838
ググったらここにたどり着いたんだろ。
他にGTK+関係の掲示板ってあるのか?
0840login:Penguin2006/12/05(火) 15:51:35ID:Zc3lkiGA
少なくともGTKでぐぐった結果の質問とは思えないな。
0841login:Penguin2006/12/09(土) 02:26:24ID:t58tuYkG
質問させてください。
DebianでGTK+を使ったプログラムをコンパイルする際に、必要となる
パッケージを教えていただけないでしょうか?
08428412006/12/09(土) 02:49:19ID:t58tuYkG
libgtk2.0-devをインストールしたらコンパイルできました。
お騒がせしました。
0843login:Penguin2006/12/22(金) 16:34:29ID:WGodCSmn?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使用した例は見付かりませんでした・・・。

どなたかご教授ください。
0844login:Penguin2006/12/23(土) 03:24:31ID:kVWxGBD4
gtk_dialog_runの使い方とか使用例をもっとよく調べるといいよ
0845login:Penguin2006/12/25(月) 00:04:10ID:m4WzEBN4
とりあえず
gtklab.sourceforge.jp
で、初歩の初歩は分かった。
次はフォントの選択方法を知りたいという人間は
何見ればいいすか。
0846login:Penguin2006/12/25(月) 22:06:24ID:j/37M/hz
ttp://www.gtk.org/ の GTK+-2.0 Tutorial か API Reference じゃない?
フォントの選択方法ってなんだろう?
ダイアログなら GtkFontSelectionDialog があるけど。
0847login:Penguin2006/12/26(火) 14:37:34ID:715StEwX
フォントの扱いを飲み込むためにもPango眺めとくのは必須だろ。
0848login:Penguin2006/12/26(火) 16:35:39ID:SUHLiAKP
プログラミングじゃ無いんだけど
gtkrcの情報交換してるとこは何処?
engineによって書式も様々なんで
0849login:Penguin2006/12/30(土) 00:11:53ID:AKdqp1vp
SUSE 9.2でリソースファイルで色設定しても反映されません。
同じソースとリソースファイルでSUSE10.2で実行すると反映されます。
また、SUSE10.2でもボタンのラベルに色がつくのですが、
ボタンそのものに色が付きません。
この辺詳しいHPとかありませんかね?
0850login:Penguin2007/01/11(木) 13:58:24ID:fD42ZP3M
X/Toolkit(?)のXtAppAddInput()というモジュールと同等の機能を持つ
GTKのモジュールってありますか?

開発言語はC言語です。
う〜ん、探しても見つけられなかった。探し方が悪いのかな・・・?
0851login:Penguin2007/01/11(木) 14:28:22ID:SmIH3fhc
>>850
XtAppAddInput()がどういうものか説明すればいいのに。
そういうききかただとX/Toolkit(?)とGTKの両方を知っている人しか答えられないでしょ。
08528502007/01/11(木) 14:34:57ID:fD42ZP3M
>>851
その通りですね。

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

select()にコールバック関数呼び出し機能を追加した感じのモジュールです。
0853login:Penguin2007/01/11(木) 15:11:36ID:SmIH3fhc
>>852
こういうの?
http://www.gtk.org/tutorial/x1772.html
日本語訳:http://www.gnome.gr.jp/docs/gtk+-2.0.x-tut/sec-monitoringio.html
Exe可能ってのはないけど…。
08548502007/01/12(金) 18:37:22ID:xAKQOOb4
>>853
ありがとうございます
gdk_input_add()で、できそうですね。
0855login:Penguin2007/01/12(金) 19:52:55ID:diKM4N2h
glib の Main Event Loop あたりを使うんじゃないかと思うんだが…。
0856login:Penguin2007/02/01(木) 18:51:51ID:oa7P0Xiu
GTK+でテキスト文字(漢字)をgtk_label()で描画するときに、
フォントのサイズで位置調整したいんですが、幅を取得する関数ってないんでしょうか?
gdkでフォントセットをロードして描画する時は、gdk_text_width()が使えるんですが。。
gtkだけで簡単に済ませたいので。

よろしくお願いします。
0857login:Penguin2007/02/03(土) 08:37:48ID:yTpUnzEZ
gtk+2.0でボタンwidgetとlabel widgetを 生成・消去(destroy)を繰り返し
て走らせておくと徐々にメモリを食いつぶしているようにみえるんですが…
そう言うのを確認した人いますか? もし居たら対策は?
0858login:Penguin2007/02/05(月) 21:07:30ID:YgSmvrHE?2BP(0)
>>857
memprof とか valgrind 使って本当にメモリリークしてるか確かめてみて
0859login:Penguin2007/02/05(月) 21:39:19ID: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;
}
0860login:Penguin2007/02/05(月) 23:38:43ID:jQ+mHrDJ
デストローイ忘れしてるだけなんじゃねーの
0861login:Penguin2007/02/06(火) 05:25:55ID:goDIpkB2
単にキャッシュなだけじゃないの?(参考: ttp://www.gtk.org/faq/#AEN703)
俺も前に気になった事があるけど「食い潰す」まで行く事は無いし
最終的には解放されるからもう気にしてない。
0862login:Penguin2007/02/08(木) 03:13:47ID:678pSSYu
>>857
http://developer.gnome.org/doc/API/2.0/gtk/gtk-question-index.html
の 1.5 とか。これは俺も最近まで知らなんだ…。
0863login:Penguin2007/02/10(土) 07:26:44ID:3Xia/9JA
チュートリアルのrulers.cを改造して、ウインドウサイズを変更したときにルーラの目盛りも
更新するようにしたいんだけど、drawing_areaはサイズを取得出来ない・・・よね?
かといってgtk_window_get_size(window, w,h);だと全体の窓サイズになってしまうし
どうすればいいですか。
0864login:Penguin2007/02/10(土) 09:06:07ID:cB1+Mmyj
>>863
drawing_area の configure-event 見ればいんじゃね?
0865login:Penguin2007/02/10(土) 18:25:05ID:3Xia/9JA
朝からずっと調べ続けて今ようやくわかった・・・。
expose_event で GdkEventExpose から area を参照するのね。
0866login:Penguin2007/02/14(水) 09:42:58ID:BwmsCoUm
ファイラのようなファイルの mime タイプに応じたアイコンが並んでいるリストを作りたいんですが、
どうしたらいいんでしょうか。

手がかりだけでもかまわないので、ご教授お願いします。
0867login:Penguin2007/02/15(木) 02:32:20ID:l0yfSnwW
GtkIconViewを使えって話じゃないのかな? ファイラってのがよくわからんが。
(Windowsの explorerはいつも「詳細」にして使ってるんで)。
mime-typeに応じたアイコンを取得したいってのなら、知らん。

まず、やりたいことを分割して曖昧じゃない日本語で箇条書きにして、
必要度、依存関係を書いて提示しろ。
できればこんなところに質問しないか。
0868login:Penguin2007/02/16(金) 17:15:53ID:zsLloLAV
Explorerを詳細表示にして使ったところで、ファイル名の左側に
拡張子に応じたアイコンが表示されてるじゃん。
0869login:Penguin2007/02/17(土) 15:44:53ID:fKE+Jy3+
たとえば、firefox で実装されているように、

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

という動作を実行するのには、どういう仕掛けを使うのが一般的なのでしょうか?
0870login:Penguin2007/02/17(土) 16:43:58ID:KR0sG7u1?2BP(0)
>>869
1. プログラムを起動したときに別のインスタンスがいないかどうか確認
2. インスタンスがいたときにはそいつにメッセージ(Firefoxの場合ドキュメントのURLかな)を渡して自分自身は終了
ってことでいいかな?結局多重起動のチェックとプロセス間通信がやれればいいのね。
SylpheedではUNIXドメインソケットで1,2をやってるみたい。
Gtk+周辺のテクノロジで固めたいならD-BUSを使ってもいいかも
0871login:Penguin2007/02/17(土) 18:22:53ID:CMTL+Fmk
>>870は同じホストしか考えないプログラムの場合の一般論であって、
Xの場合はとるべき手段が違ってくる。
netscapeはXプロパティ経由で通信するので、同じスクリーンにウィンドウが
開いていればプロセス自体は別のマシンでも通信できる。
firefoxも同じ。

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

それで見付からないなら諦めるもよしプロセスを起動するもよし、で
起動するのならば、通常のプログラム同様データファイルの一貫性保護
などを目的としてロックファイルなどによる多重起動チェックをやればいい。
0872login:Penguin2007/02/19(月) 23:16:35ID:5FZGim03
>>869

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

http://gtklab.sourceforge.jp/gtkwin/gtkwin10.txt
0873login:Penguin2007/02/20(火) 08:11:40ID:ONtjkv3E
ウィンドウを作らないとチェックできないのがちょっと嫌かも。
あと既に動いてるプロセスがサスペンドされたりしてたら
それが復活するまで判定が終了しないんじゃね。
0874login:Penguin2007/02/22(木) 15:48:43ID:jpFFYqu/
GTK 1.2から2.0に切り替えたら、XTestライブラリが使えなくなっちゃたんですが。
linkでエラーになります。(Undefined reference `XTestQueryExtension`)
知ってる方いましたらお願いします。
ディストリ Vine4.0
gtk2-2.4.13

分からないので、XTestをやめてXSendEvent()とかを使って書き直してます。
0875login:Penguin2007/02/22(木) 18:24:28ID:ARkHAdB3
単に-lXtstをGTKがリンクしなくなっただけでは。
0876login:Penguin2007/02/23(金) 09:24:50ID:Toss6a7K
>>875
うまくlink出来ました。ありがとうございました。
0877login:Penguin2007/02/24(土) 17:34:31ID:M/6/J6Qq
gtk1のソースをgtk2に変更するツールはありますか?
0878login:Penguin2007/02/24(土) 17:40:30ID:R3/FZlN8
なんでも「ツール」と呼べば済むと思ってるんじゃねーぞ。
そういう奴が女性を産む機械だとか抜かすんだ。
0879login:Penguin2007/02/24(土) 18:49:12ID:M/6/J6Qq
gtk1のソースをgtk2に変更するスクリプトはありますか?
0880login:Penguin2007/02/24(土) 20:15:03ID:tree4KTM
スクリプトキディおつ

えーと、あれだ。ない。
0881login:Penguin2007/02/24(土) 20:31:22ID:Z7G0MF3p
>>878を女性を産む、機械と読んでエロゲーとか思ったのはおれだけじゃないはずwwwwwww
0882login:Penguin2007/02/25(日) 16:21:18ID:jPY2U1RH
あるウィジットの大きさを一定以上に広がらないようにしたいのですが、どうするのが正解ですか?
0883login:Penguin2007/02/25(日) 20:12:20ID:xIfK6WPJ
いつもGladeで設定しちゃってる。
0884login:Penguin2007/02/26(月) 18:41:50ID:pt8OB6ru
前から思ってたんだが、なんでみんなlibglade使わないの?
便利なのに……
0885login:Penguin2007/02/26(月) 19:58:31ID:uj4cgUSY
ライブラリ依存がどんどん激しくなるよね。
C++なんか使ってたら、hohogemmなんてリンクするものがどんどん増えていく。
ああいうの一つにまとめて標準で入れておいてくれたらもっと楽なんだけどなあ。
0886login:Penguin2007/03/03(土) 08:59:18ID:iO4b+0oy
Windows での話しなのですが、GtkTextView を作った時に同時に日本語入力を
オンにすることってできますか?
input method 関係を探したんですが、どうも見つからなくて…
0887login:Penguin2007/03/04(日) 07:57:59ID:gI/IeUsG
それってGTK側でやる仕事なのかなぁ。
ちょろっと調べただけだけど、ImmGetConversionStatus()でIMEの状態を調べて
keybd_event()でVK_KANJIじゃない?win32apiの範疇だと思うけどな。
0888login:Penguin2007/03/05(月) 13:11:27ID:n32uogVx
>>887
どうもありがとうございます。
考えてみれば Windows の API でやるのが正しいですね。
書き込みして気づきました。
ありがとうございました。
08898862007/03/06(火) 02:47:16ID:rlQdCBer
GTK とは関係なくなってしまいましたが、
http://www.cam.hi-ho.ne.jp/oishi/tips.html#ime
に書いてありました。ここの SetInputMethodOpenStatus() がそのまま使えました。
お手数おかけしました。
0890login:Penguin2007/03/11(日) 10:56:27ID:bVyF8jVB
>889
そこにあるコードは著作物なのだが。
0891login:Penguin2007/03/11(日) 22:40:07ID:RO7bywIf
>>890
これを見るとrpmコマンド叩くにも>>889のリンク先に許可を求めないといけなくなるんだよね。
著作物だし。
0892login:Penguin2007/03/12(月) 09:27:43ID:slT8Ay77
gtk_window_new() でwindow生成後に、最小化してwindowを隠すにはどうすればいいんでしょうか?
教えてください m(_ _)m
0893login:Penguin2007/03/12(月) 12:04:53ID:WX8P/QrK
gtk_window_iconify()
てかマニュアルぐらい読め
0894login:Penguin2007/03/12(月) 15:37:48ID:slT8Ay77
>>893
ありがとうございます。m(_ _)m
08958862007/03/14(水) 00:53:00ID: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 と関係ないっすね。
0896login:Penguin2007/03/19(月) 02:53:53ID:IBwC1/nU
せっかくGTK使ってるのにプラットフォーム依存にしてしまうの?
0897login:Penguin2007/03/20(火) 00:43:22ID:SW3xr29J
MinGWでgtkを勉強してるんですが、プログラムを実行するときに、
syntax error near unexpected token `main('
と出てきて、
プログラムが強制終了してしまうんですが、誰か対処法を知っていたら教えて下さい。
コンパイルは一応通ってるとは思うんですけど・・・・・。
0898login:Penguin2007/03/20(火) 02:09:03ID:pOTrHDbj
とりあえずソースを晒すといいかも
0899login:Penguin2007/03/20(火) 04:42:36ID:yYm494xv
GTK以前に hello worldとかを compile & 実行できているかが気になる。
0900login:Penguin2007/03/20(火) 16:13:54ID: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");
//前半

0901login:Penguin2007/03/20(火) 16:15:20ID: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;
}


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

#include<stdio.h>

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

gtk+ チュートリアルのへろーわーるどは実行できるんですけど、
プログラムが終わると同じエラーがでてきます。
ぐぐったら、文字コードが関係してるらしいんですが、どれでやってもダメでした。
LINUXでやれっていうことなんですかね............。
0903login:Penguin2007/03/20(火) 16:56:26ID:u2b4TE2D
mingwをインストールしなおせ
0904login:Penguin2007/03/21(水) 03:54:17ID:Ay+CzKM3
>>872
今更だけど、http://gtklab.sourceforge.jp/gtkwin/gtkwin10.txt の方法だけど
Win ではうまくいかなかった。
なので普通に Win API を使うしかなかった。

>>902
俺は http://gladewin32.sourceforge.net/modules/news/ の GTK ライブラリ使ってるけど、
問題なかったよ。
0905login:Penguin2007/03/21(水) 15:08:14ID:mdl7DVyg
>>897
syntax error near unexpected token `main('

これは実行時ではなくてコンパイル時のエラーメッセージではないのか。
0906login:Penguin2007/03/21(水) 15:33:43ID:h4G4UgJx
あのね、ここはLinux板でしてね
win32-portのことならム板にスレがあるからそっちに行ってほしいんだ
0907login:Penguin2007/03/21(水) 15:44:01ID:OzGdWDRq
>>904
WindowsではWindowsのAPIを使うのが正解かもね。
その文書を書いた人が公開しているプログラムでもそうしてるみたい。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/vmaid/vmaid/orz/orzcomm.c?view=markup
0908login:Penguin2007/03/22(木) 06:20:18ID:nC3vS/QI
>>906
ム板には無いような気がするなぁ。
マイナーGUITKを「紹介するだけ」のスレはあるようだけど。
見落としてる?
0909login:Penguin2007/03/22(木) 08:16:50ID:P6YXu+FN
>>908
GTKやめて、FOX Toolkitで作るといいよ
0910login:Penguin2007/03/22(木) 11:05:43ID:nC3vS/QI
>>909
突然、何?
なにかが気に障ったなら謝るよ。ゴメンナ。
0911login:Penguin2007/03/22(木) 17:19:08ID:NVYlVu8k
>>904
>>906が言ってるのはここの事では。

Gtkプログラミング on Windows!!!
ttp://pc11.2ch.net/test/read.cgi/tech/1147024203/
0912login:Penguin2007/03/22(木) 18:01:50ID:oCFS6K5y
>>900

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

gint main(gint argc,gchar *argv[])に変えてみろ
0913login:Penguin2007/03/29(木) 16:50:34ID:dC+/1rKX
GTKのwidgetにMozillaをのっけてアプリケーションを作った人いますか?
不具合とかあったら教えてください!
0914login:Penguin2007/04/01(日) 02:44:59ID:RjtNty3y
すいません、質問させてください。文字を90度回転させるにはどうしたらいいですか?
0915login:Penguin2007/04/03(火) 01:42:21ID: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++ でプログラム出来るのはかなりおいしい。
0916login:Penguin2007/04/03(火) 05:09:44ID:EaZCa4Le
>>914
GTKをインストールした時についてくる gtk-demo で、
Rotated Text というのがあるので、それを見たらいいと思う。
gtk-demoでソースも見れるよ。
0917login:Penguin2007/04/03(火) 19:04:41ID:YnFjw9iH
>>915
あ、それよさげ。
全体としてはC++でコーディングしたいけど、GTK+周りは初心者なので
素のCでやりたいと思ってた。gtkmmとか使うのも考えたけど、本家(?)の
GTK+の方が情報揃ってそうだったし。
09189152007/04/04(水) 03:16:21ID:4cUWSG/i
こんな時間になったけど、めげずにカキコ。

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

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

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

とりあえず、これからブログを開設するんでwwwそっちに載せるつもり。
09199142007/04/04(水) 20:46:07ID:fydXVgVP
>>916
情報ありがとうございますm(_;_)m
gdkのpangoインターフェースというのがあるんですね。
(でも2.6からみたいなので拙の2.4ではだめかも…)
0920login:Penguin2007/04/12(木) 18:45:31ID:AmiOQVwy
textviewについて質問です
表示行数を増やしたときに、その新しい行が見えるように、一番下までスクロールすることにしました。
text_buffer_insertして
end_iterにscroll_to_iterしています。
しかし、これを実行しても、最後の行までスクロールされません
最後のカーソルがひとつあるだけの行と、その上の行が見えません(つまり、こちらの意図より2行うえにずれてる)
もちろん、スクロールバーも、下がちょびっと残っていて、一番したまでぴったり動きません

テキストビューを一番下までスクロールする方法を教えてください
0921login:Penguin2007/04/14(土) 01:37:52ID:TAHUlZrg
>>920
mark = gtk_text_buffer_get_mark (buffer, "end");
gtk_text_buffer_get_iter_at_mark (buffer, &iter, mark);
gtk_text_view_scroll_mark_onscreen (textview, mark);

してるかな?
詳しくは gtk-demo を。
0922login:Penguin2007/04/14(土) 02:26:16ID:u3nv9R0d
ありがとうございます!
markはよくわからなかったのでスルーしてました。 試してみます!
09239152007/04/15(日) 01:36:33ID:RFcvtVMo
http://programming-note.cocolog-nifty.com/

ここに、C++マーシャラーを掲載したよ。
0924login:Penguin2007/05/12(土) 01:23:32ID:HqqA3cGX
質問です。
GtkFrameなど、newに引数を取るようなウィジェットを継承するときは、
新しいnewはどのように書けばいいんでしょうか?
0925login:Penguin2007/05/12(土) 03:03:33ID:v9Q/2Q3p
同じように引数を取るようなコンストラクタを書けばいいと思うんだけども。
GtkAspectFrameがGtkFrameを継承してるから見てみては。
0926login:Penguin2007/05/12(土) 08:21:18ID:ZZxk7l9/
gtk_hogehoge_new() は継承されないから、べつに
prototypeを合わせる必要はないんじゃない?
0927login:Penguin2007/06/02(土) 21:18:55ID:bimAco1K
glade2を使ってGUIアプリを作ってみているんですが、
たとえばTextViewのシグナルをkey_press_eventなんかは
簡単に追加できますが、TextView.TextBufferのchangedなど
を使いたい場合はgladeからは追加できないものなんでしょうか?

そういうことをする場合はglade使わないほうが簡単?
0928login:Penguin2007/06/06(水) 10:27:04ID:iwwiMgqU
おざなりだけど、できないんじゃないの。
glade2は Viewをいじくるもので、modelの面倒まではみてらんないんじゃ。

0929login:Penguin2007/06/10(日) 20:21:37ID:fDdbsDID
GtkTreeViewのノードを移動させたいんですが、moveメソッドでは
同レベル内での上下しかできませんよね?
レベルの上げ下げを含む移動を行う場合は、移動したい先に
appendして内容をコピー、元を削除、とするしかないんでしょうか?
子ノードも一緒に追随するように動かしたいんでそうすると再帰書いたりとか
随分面倒になりますが、もっとスマートな方法はないものでしょうか?
ちなみにmodelにはTreeStoreを使っています。
0930login:Penguin2007/06/10(日) 23:41:19ID:yRMF1Vs7
>>913
gtkembedmozならよく使う。
0931login:Penguin2007/06/26(火) 08:48:31ID:4KV92bDj
どなたか御教授願います。
CListを使ってリスト表示していたときは列の文字位置を
justity center とか left で指定出来たのですが
treeview を使った場合はどうするんでしょうか?
renderer で何か指定してやるんでしょうか?
0932login:Penguin2007/06/26(火) 12:01:35ID:lnurqiIG
>>931
GtkCellRenderer の xalign プロパティーを g_object_set() でいじる
0933login:Penguin2007/06/27(水) 03:15:48ID:LSQxDGDV
>>931
GtkCellRendererText の "alignment" と "align-set" だと思う。
試してないけど。
0934login:Penguin2007/06/27(水) 08:12:39ID:YmGO7LQp
ありがとうございます。
御教授いただいたあたりを勉強してみます
0935login:Penguin2007/07/05(木) 10:15:47ID:kun0TV+S
詳しい方、ご教授お願いします。

自作のソフトキーボードを作ろうかと考えております。
GTKを使って、ダミーのキーイベントを送信
(例えば、画面上の何かのボタンを押したら、KeyPressのシグナルを発行する)
ようなことはできますでしょうか?
0936login:Penguin2007/07/05(木) 11:37:22ID:38dWjLx5
>>935
GdkEvent あたりだね、確か…
http://www.gtk.org/tutorial/x2312.html#AEN2393
とか参考になるかな。
でもソフトキーボードとして他のアプリにする場合は、
X なら何だったけ、Xkb 関係だったけ、そういうのをいじった方が速いんじゃないかと思う。
0937login:Penguin2007/07/05(木) 12:09:06ID:kun0TV+S
>>936

ありがとうございます。
参考にしてみようと思います。

>X なら何だったけ、Xkb 関係だったけ、そういうのをいじった方が速いんじゃないかと思う。
説明が前後しましたが、もともと背景として、DirectFB上でうごかしたいなーというのがあり
GKTでのプログラミングに踏み切りました。

最終的にはIMを使って日本語入力まで行きたいのですが、壁は高そうですね・・・。
0938login:Penguin2007/07/06(金) 01:51:00ID:Vt7J2m8C
>>935
ttp://www.gnu.org/software/gtkeyboard/
0939login:Penguin2007/07/06(金) 13:34:08ID:Aq2iplBC
>>938
ありがとうございます。

このソースを参考にしたところ、どうもイベントはXlibのXSendEventで送るっぽいですね。

うーんXに依存しちゃうと、DirectFBで動かない気が・・・。
別の方法を考えるかなぁ・・・。
0940login:Penguin2007/07/06(金) 22:41:29ID:d5hv1Ayr
そういう部分は下のレイヤで書くべきであって、そこまで
ツールキットにクロスプラットフォームを期待するのは変じゃね?
必要な部分だけ分離して書けばいいじゃん。
まあGTK+以外勉強したくないんですよぼくちゃん!ということかも知れんけど。
0941login:Penguin2007/07/07(土) 01:38:57ID:UpK3eAgU
gdk_event_send_client_message とか g_signal_emit あたりでできないかな?
0942login:Penguin2007/07/07(土) 08:26:19ID:ODUs5t+B
software keyboardを、hardware keyboard emulator
(XEventや GdkEvent を発生するもの) って考えると、
使いにくいものになりそうな。

それよりも文字を入力したなら、GtkTextViewとかにひっつけて
必要なときに文字列を入れ替える、とかの方が
contextとかを持ってこられるし、結構楽にできそうな気がする。

もちろん応用によるが。
0943login:Penguin2007/07/10(火) 02:01:16ID:coxuw40G
ちょっと話がずれるけど、昔悩んでようやく分かったこと。
TextView で Enter を押したら、改行を入れずにこちらの都合の処理をする(例えばメッセンジャーなどでメッセージ送信)。
もちろん
g_signal_connect(G_OBJECT(text_view), "key_press_event",....
するんだけど、IM のことを考えると IM の変換決定を優先させないといけない。
これをするにはコールバック関数で
if (gtk_im_context_filter_keypress(text_view->im_context, event)) {
text_view->need_im_reset = TRUE;
return TRUE;
}
をしないといけない。でないと変換決定される前に自分の処理をしてしまう。
(変換途中の文字が TextView に入力されてない)
ちなみにg_signal_connect_afterだと改行が先に処理されてしまう。
と言う訳で参考までに…。
09449432007/07/10(火) 02:09:39ID:coxuw40G
あ、ちなみに IM の種類(あとウィンドウマネージャの種類?)によってはなくても大丈夫なものもあったよ。
FreeBSD + anthy-scim はなくても OK だった。
FreeBSD + canna-kinput2 は必要だった。
Windows XP + IME は必要だった。
0945login:Penguin2007/07/11(水) 01:02:44ID:ZGF39K7c
みなさんプロファイラってどれを使用していますか?

自分はSystemTap+valgrind+oprofile+PAPI-Cです。
09469352007/07/11(水) 09:10:38ID:zmQzup1l
みなさま、さまざまなアドバイスありがとうございます。

どうやら、GObjectもしくはGDKあたりでもイベントの作成はできそうですね。
その辺を中心に調べてみます。
(マニュアルが少ないんですよね・・・。本屋にGTK/GDKの本を買いにいったら絶版って言われました・・・)

942さんがおっしゃっている応用も検討して、CONTEXT回りもちょっと調べてみようと思います。

なかなか前途多難ですね・・・。

ありがとうございました。
09479422007/07/11(水) 09:49:44ID:4FYTLsLl
Contextっていっているのは technical termじゃなくて、一般的な文脈 (その GtkTextViewが何を欲しがってるか( JIS-X0208 or 英字 or 数字) とか) って意味だよ。
何を software keyboardの trigger にするつもりかわからないけど、keypress_eventでその triggerは hookできるよねえ、多分。
0948login:Penguin2007/07/17(火) 00:39:35ID:ggD7PVJi
Gtk-2.12からgladeが取り込まれてGtkBuilderになる
んだってさ。で、問題はいまのgladeファイルと
互換性がなくなるそうだ。まあ、変換スクリプトが
あるらしいけどねえ。。。。
0949login:Penguin2007/07/17(火) 21:49:24ID:48/g7xwB
libgladeは取り込まれるの?
0950login:Penguin2007/07/19(木) 17:49:54ID:PTohJ0Ez
じゃなくてまた新しいライブラリになるらすい。
XMLそのまま持つのは気持ち悪いなあ。ふだんはインタプリタで読めるけど
リリース時にはコンパイルできるようにならんかな。もしかして今でもできる?
0951login:Penguin2007/07/20(金) 00:51:08ID:QknMinfB
ああ、ソースにXML書いて読み込めばいいのか。
0952login:Penguin2007/07/20(金) 13:59:42ID:aHUZDQEh
薮から棒に質問ですがEcllipseでGTKを使いたいと思ってます。
下のソースで#include <gtk/gtk.h> が上手く行かないので
test.h と言うヘッダを作って下に示すような変更で使おうとしています。
gtk.hの中身
#include <gdk/gdk.h>
#include <gtk/gtkaboutdialog.h>
等をtest.hで
#include <gtk-2.0/gdk/gdk.h>
#include <gtk-2.0/gtk/gtkaboutdialog.h>
に変更

それでも上手く行かないので何か妙案か、あるいはそのままのソースで
コンパイルできる方法を探しています。なおソースは7年前の
ターボlinuxではコンパイルでき、小さな窓が出ました。
「GTKではじめるXプログラミング」竹田 英二著 1999年

長すぎるためソースは分けて投稿します。
0953login:Penguin2007/07/20(金) 14:01:17ID:aHUZDQEh
<続き>ここより下はソース
#include "test.h"
void hello(GtkWidget *, gpointer);

void hello(GtkWidget *widget, gpointer data)
{
printf("Hello World!\n");
gtk_main_quit();
return;
}

int main (int argc, char *argv[])
GtkWidget *window;
GtkWidget *button;

gtk_init(&argc, &argv);

window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(gtk_main_quit), NULL);
gtk_widget_show(window);

button = gtk_button_new_with_label("Hello World!");
gtk_signal_connect(GTK_OBJECT(button), "clicked",
GTK_SIGNAL_FUNC(hello), NULL);
gtk_container_add(GTK_CONTAINER(window), button);
gtk_widget_show(button);
gtk_main();
return 0;
}
0954login:Penguin2007/07/20(金) 14:31:13ID:idJMOqjO
べつにソースが悪いわけじゃないでしょ。
コマンドラインでコンパイルはできるの?
自分の予想はEclipseのCコンパイルとリンカのオプションを設定していないだけだと思われ。

ところで、余談なんだけど、最近"gtk_signal_connect"ってあんまり使わないの?
"g_signal_connect"に置き換わったっていううわさをちらほら・・・。
0955login:Penguin2007/07/20(金) 14:51:20ID:9y1RmEbL
Eclipseは分からんが、CCに渡すINCLUDE_PATHを適切に設定すべし。
0956login:Penguin2007/07/20(金) 15:13:06ID:PciI18EZ
「うまくいかない」って書いて、エスパーしてもらおうとするやつに答える気にはならん。
いや、だいたいエスパーできるんだけど。

>>956
http://developer.gnome.org/doc/API/2.0/gtk/gtk-Signals.html#id2752575
gtk_signal_connect is deprecated and should not be used in newly-written code. Use g_signal_connect() instead.

その点から言うと、その本は捨てて Gtk2.x の tutorial を読むべきだな。

0957login:Penguin2007/07/20(金) 20:18:00ID:QknMinfB
>>952
Eclipse+CDTだけど
#include <gtk/gtk.h>
でコンパイルできたし、うまく動いた。

gtkmmのページだけど、CDTの設定はこれで参考にならんか。
http://www.cin.ufpe.br/~cinlug/wiki/index.php/Programando_com_GTKmm_no_Eclipse
0958login:Penguin2007/07/21(土) 02:13:46ID:7DbMvWwA
gtk_signal_connect はまだ一応使えるよ。
っていうか、俺のコード gtk_signal_connect と g_signal_connect が混在しているし。
>>952
何がうまく行かないのかちゃんと説明しないと。
0959login:Penguin2007/07/21(土) 09:59:35ID:rQXGvrby
シグナル取り扱いがglibでサポートする枠組みに入ったから、
gtk_signal_connectはそれへのラッパーになった。
0960login:Penguin2007/07/21(土) 12:33:03ID:E0FaCFcF
すいませんLinuxにおけるVisualC++って
どんなのがあるのでしょうか?
KylixがあるみたいですがC/C++ですと何なんでしょうか
それとDirectXみたいな環境はありますでしょうか?
要するにWindowsに負けるとも劣らないゲーム開発環境って
Linuxにあるのでしょうか?
0961login:Penguin2007/07/21(土) 12:36:45ID:E0FaCFcF
と思ってたら違うスレを発見してしまいましたので退散します
http://pc11.2ch.net/test/read.cgi/linux/1039282447/l50
0962login:Penguin2007/07/25(水) 01:35:09ID:IdZVHHSy
GTKで印刷、印刷関連の設定などをおこなう関数や
簡単なサンプルはありますでしょうか。

0963login:Penguin2007/07/25(水) 02:25:15ID:er03377w
>>962
ttp://developer.gnome.org/doc/API/2.0/gtk/Printing.html
ttp://www.gnome.org/~alexl/presentations/guadec2006-printing.pdf
0964login:Penguin2007/07/26(木) 22:50:38ID:gY6/ctOk
gtk_window_set_geometry_hints()って関数の説明ってどこかに書いてありませんか?
検索したけど見付からず・・・。
0965login:Penguin2007/07/26(木) 23:29:29ID:f7wwr2jD
>>964
ttp://developer.gnome.org/doc/API/2.0/gtk/GtkWindow.html#gtk-window-set-geometry-hints
0966login:Penguin2007/07/27(金) 00:38:13ID:iZH3Jn55
gtkmmプログラミング
http://book.geocities.jp/gtkmm_ja/docs/tutorial/html/index.html
09679522007/07/28(土) 10:45:13ID:l28gEhCG
お礼が遅くなりましたがレスありがとうございます。

ソースを提示しているのであとはコンパイルできる方が
いるかどうかを知りたかったものですから。
できる方がいれば自分の環境設定が悪いと言う結論になるので
環境設定をどうするかその方向で考えようとしてました。

>>954
>コマンドラインでコンパイルはできるの?
v1.2の頃にあった「gtk-config」が見付からないないので
コマンドラインでコンパイルは現状では難しい状態です。

>>955
>Eclipseは分からんが、CCに渡すINCLUDE_PATHを適切に設定すべし。
それ以外にも問題が有るようでして。

>>956
>その点から言うと、その本は捨てて Gtk2.x の tutorial を読むべきだな。
えぇ確かに。

>>957
ドイツ語も苦手ですが図が参考になり、かなり進展がありました。
まずはgtkmmがインストールしてから再度試行錯誤します。

>>958
>何がうまく行かないのかちゃんと説明しないと。
どのあたりで不都合が生じているのか手探りの状態でしたので、
明確に説明できなくて申し訳ありませんでした。
0968login:Penguin2007/07/28(土) 12:04:43ID:9yljOsMv
「どのあたりで不具合」を書けなんていってない。
「どういう不具合」かを書くんだ。詳細に。

0969login:Penguin2007/07/28(土) 13:57:09ID:l28gEhCG
>>968
ファイルが無いとコンパイラ(プリプロッセサ)に言われたヘッダを
インクルードした後にビルドするとコンソールに下のような出力があります。
最初のエラー3個までを示します。××××の部分は伏字としてさせて下さい。

make -k all
Building file: ../××××070727_01.cpp
Invoking: GCC C++ Compiler
g++ -I/usr/include/glib-2.0 -I/usr/include/gtk-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/atk-1.0
-I/usr/include/firefox-1.5.0.12/system_wrappers -I/usr/lib64/gtk-2.0/include
-O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"××××070727_01.d" -MT"××××070727_01.d" -o"××××070727_01.o" "../××××070727_01.cpp"
/usr/include/glib-2.0/glib/gtypes.h:41: error: expected constructor, destructor, or type conversion before ‘typedef’
/usr/include/glib-2.0/glib/gtypes.h:90: error: expected initializer before ‘*’ token
/usr/include/glib-2.0/glib/gtypes.h:396: error: ‘G_END_DECLS’ does not name a type

ちなみに /usr/include/glib-2.0/glib/gtypes.hのLINE41は↓です。
typedef char gchar;

‘typedef’の前にconstructor, destructor, or type conversion
があって当然と言っているようですが、なぜ?と言う思いがあります。
0970login:Penguin2007/07/28(土) 14:04:57ID:l28gEhCG
連投失礼します。環境を明示してませんでしたので。

「64bit版Fedora core6」でEclipse+CDTです。
0971login:Penguin2007/07/28(土) 14:53:53ID:6PVkzuMP
>>952
手作業でGTK+のヘッダを入れたりする代わりにpkg-configつかえ。
gtk1.2でいうgtk-configのかわりだ。
あと、GTK本家サイトのAPIドキュメントかdevhelpを常に確認できるようにしとけ。
0972login:Penguin2007/07/28(土) 16:25:03ID:5YbSo8uc
急がば回れ。
eclipse も cdt も捨てて、チュートリアルの HelloWorld ウィンドウの表示からやれ
0973login:Penguin2007/07/28(土) 17:06:51ID:l28gEhCG
>>971
えぇ、そうします。

>>972
単にコンソールへの出力であれば既にできていますが
チュートリアルも最初から見てみます。
0974名無しさん@そうだ選挙に行こう2007/07/29(日) 02:02:07ID:EgyXknh4
親window生成 → vbox(コンテナー)生成 → ボタン生成(vboxに乗っける) → pixmap生成、シグナルハンドラ生成(ボタンに対して)

を作った場合、windowは残してコンテナーのvboxをdestroyすると、↑のpixmapやhandlerは自動的にdestroyされるんでしょうか?
objectが残ってメモリーリークの原因になったりしないでしょうか?
0975名無しさん@そうだ選挙に行こう2007/07/29(日) 06:15:03ID:e4ZCzUx8
destroyが呼ばれたかどうか確認すりゃいいじゃん。
きっと、974のレスより少ないタイプ数で確認できる。
0976login:Penguin2007/07/31(火) 00:34:59ID:Vn+dLbOm
>>974
普通は親(vbox)が死ねば、子供もみな殺させる(destroy)はず。
g_object_ref()してれば、生き残るけど。
0977login:Penguin2007/07/31(火) 00:35:42ID:Vn+dLbOm
>殺させる
殺される、ね。
0978login:Penguin2007/07/31(火) 08:01:49ID:Vn+dLbOm
ちょっと気がついたけど、pixmap って GdkPixmap のこと?
GdkPixmap を作って GtkImage にしてボタンに乗せるんだったら、
GdkPixmap は destroy されないなあ。
GtkImage は destroy されるけど。
0979login:Penguin2007/08/02(木) 20:09:36ID:rzbwdMnR
三つのボタンがあって、どのボタンを押したかによってラベルの内容を変えたいとき、
みなさんはどのようなデータをコールバック関数に渡していますか?
少なくとも
・どのボタンが押されたか
・変えたいラベルのポインタ
の二つはコールバック先に渡す必要があると思うのですけれど、その方法が
お聞きしたいです。
私は構造体をつくってその中にラベルへのポインタとボタンのIDを入れているのですが、
もう少しスマートな方法がないかと思ったので。
0980login:Penguin2007/08/02(木) 21:23:52ID:rwWI2Ob8
どっちか片方でいいんじゃないの?
0981login:Penguin2007/08/03(金) 02:50:59ID:OKxRun+P
変えたいラベルってのは gchar* じゃなくて GtkLabelのことか。
つまり、文字列を変えたいだけじゃなくて、変える対象も
ボタンによってちがうってことか。

あまり綺麗じゃないが g_object_set_data() で GtkButtonに
そういう情報を結びつけとく手もあるな。
これだと userdataはいらん。

0982login:Penguin2007/08/03(金) 09:27:55ID:fsigxYhY
>>981
なるほど、そういう方法があったのですね。試してみたいと思います。
あと変えたいラベルはGtkLabelなのですが、変える対象は全て同じラベルです。ひとつのラベル対して
複数のボタンからアクセスが来たとき、ということが言いたかったのですが、この場合は何かうまいやり方
でもあったのでしょうか。グローバル変数でLabelのアドレスを渡しておくのが楽だとは思うのですが、それ以外で。
0983login:Penguin2007/08/04(土) 01:49:19ID:pce6ReAC
同じ親を持つウィジェットなら、glade2が作るsupport.cのlookup_widgetを参考にしてアドレスを取得すれば良いんじゃない?
そうでないときはg_object_set_data使う位しか思いつかないな。
レス数が950を超えています。1000を超えると書き込みができなくなります。