5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

GTK プログラミング!!

1 :login:Penguin:2001/07/22(日) 22:31
俺の様な厨房プログラマーをある程度使えるようにまで育成して、和製糞ソフトを
大量量産するのが目的のスレッドです。
とりあえずGNOMEプログラミング(小学館)を買ってきました。
これから読んでみます。

2 :login:Penguin:2001/07/22(日) 22:33
1マンセー

3 :login:Penguin:2001/07/22(日) 23:17
1カッケー

4 :login:Penguin:2001/07/22(日) 23:30
>>1
書評スレを救って下さい
http://cocoa.2ch.net/test/read.cgi?bbs=linux&key=993342954&ls=100

5 :login:Penguin:2001/07/23(月) 00:51
1サイコー

6 : :2001/07/23(月) 08:30
やっぱリナックスユーザーって閉鎖的だよな・・・
WinやまだMacのほうがマシだな。
始めてきた正直な感想

7 :login:Penguin:2001/07/23(月) 08:31
>>6
いや。べつに。

8 :login:Penguin:2001/07/23(月) 08:42
1の読書感想独白スレだもん
読み終るの待ってるの

9 :login:Penguin:2001/07/23(月) 12:13
>>1 anjuta付属のエディタのm17nしてください

10 :1:2001/07/23(月) 19:38
>>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

11 :login:Penguin:2001/07/23(月) 20:38
gnomeのサイトからドキュメントをダウンロードしたら?

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

英語がわからんから却下ってか?
こんくらいの英語がわからんよーじゃLinuxは使えんよ。

12 :1:2001/07/23(月) 22:06
>>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の方を真似してみるか!

続く

13 : :2001/07/23(月) 22:06
やっぱりLinuxユーザーは選民思想ばっかだな。
それでWinをつぶそうってか?
英語がわからんよーじゃ使えないOSなんて日本のエンドユーザーに広まる分けないだろ?
だからこーゆースレッドでどーゆーもんかをわかりやすく進めていけば初心者もきてくれるんだ。
それをえらそーな>>11みたいな選民野郎がダメにする・・・

14 :login:Penguin:2001/07/23(月) 22:15
1ニッポンイチー

15 :login:Penguin:2001/07/23(月) 22:25
11はエンドユーザーではなくLinuxで開発する場合のことを言っているのでは?
最近はエンドユーザーなら英語が読めなくてもそれなりに使えるけど
開発者としてはまだまだ厳しいと思う。特にGTK開発者は数少ないだろうし。
Linuxは英語が使えないとだめとか、Linuxユーザーは選民思想ばっかとか
決めつけるのが好きだね。

16 :login:Penguin:2001/07/23(月) 23:53
別に英語は読めたほうがいいとは思うが11の下の2行は明らかに蛇足

17 :login:Penguin:2001/07/24(火) 00:04
スレが荒れるから、もうその話は止めた方がいい。
せっかく1がやる気になってるんだから。

18 :login:Penguin:2001/07/24(火) 00:12
GladeでつくるGTK+プログラミング
みたいな本の方が簡単なんじゃないの?
ってGNOME〜 の方は見てないけど

19 :9:2001/07/24(火) 01:08
>>18
>GladeでつくるGTK+プログラミング
たしか訳本でgettextとか国際化についてはふれられていなかった鴨。

>>1
> Anjuta is a versatile IDE for C and C++,
> written for GTK/GNOME.
http://anjuta.sourceforge.net

20 :11:2001/07/24(火) 03:50
うーん、叩かれた。
>>11
ちょっと言いすぎたかな、すまん。
Linuxプログラミングに関する書籍がまったく手に入らなかった頃、
インターネットでダウンロードした英語のドキュメントに
四苦八苦した経験があるもんだからちょっとぐちっちゃっただけ。
許してちょ。

21 :login:Penguin:2001/07/24(火) 12:53
英語が読めないと苦労するのはLinuxプログラミングに限らないよ。
Windowsプログラミングだって英語が読めないと苦労する。
11 を叩いたり、まして「選民思想」なんて言ってるのはモノを知らないやつらじゃないのか?

22 :login:Penguin:2001/07/24(火) 13:41
意味不明な翻訳より原文というのはあるね。

23 :login:Penguin:2001/07/24(火) 15:32
古い翻訳より原文というのもあるね。

24 :1:2001/07/24(火) 22:12
みんな、一緒にやろう!
経験者は低レベルすぎて呆れてるだろうが、こんなのもいいかも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
サンキュ
今度本屋に見に行ってみるよ。

25 :login:Penguin:2001/07/25(水) 16:03
glibc 2.1とglibc 2.2の共存はできませんか?

26 :>>1:2001/07/25(水) 16:12
厨とは思えないほど前向きな上にやる気のある奴だ。みんなのお手本として
頑張ってくれ。応援する。

ただし英語はやっぱ出来るようになろうな。就職してから思い知るよ。
選民意識とか喚いてる奴はそういう負け組だから相手にしちゃだめ。

27 :login:Penguin:2001/07/25(水) 16:19
やっぱ基礎から攻める? >1
glib -> gdk -> gtk

28 :9:2001/07/25(水) 20:57
>>27
手っ取り早くgnomeアプリを組んでみたほうが達成感が高いと思います。
必要に応じてローレベルに降りていくということでよいのでは

29 :1:2001/07/25(水) 22:10
>>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)
にする。コンパイル実行。
エディットできない。
大成功!
みんなもやろう!

30 :freebsd:2001/07/25(水) 22:48
クソスレにつき削除依頼済

31 :login:Penguin:2001/07/25(水) 23:16
>1
きみ頭よさそうなんで大丈夫だとは思うけど、ノイズは無視して頑張ってね。

きみに影響されて、をれも GLUI を勉強することにしました。

32 :login:Penguin:2001/07/25(水) 23:21
まともなスレをあげます

33 :login:Penguin:2001/07/25(水) 23:29
そーいえばこの板にはギコ猫アプレットを作ってる人もいたな 頑張ってね

34 :login:Penguin:2001/07/26(木) 01:40
ある程度基礎が分かったら、
あとはgladeでサクサクデス。

35 :login:Penguin:2001/07/26(木) 11:39
              /■\
             (´∀`∩ 誰かこないかな?hoge! hoge!
             (つ  ノ
          ((  ( ヽノ  ))
              し(_)

36 :login:Penguin:2001/07/26(木) 12:40
               / \
             (´∀`∩ どうみてもやっぱりhage! hage!
             (つ  ノ
          ((  ( ヽノ  ))
              し(_)

37 :login:Penguin:2001/07/26(木) 17:47
intiとgtk--はどう違うんだ?

38 :1:2001/07/27(金) 00:49
やっとLinuxとWindowsマシン両方同時にネットに繋げられるようになった・・・。
鬱だ氏濃。

39 :1:2001/07/27(金) 22:12
gnomeとgnomeuiについて書いてあるページを見つけた。
http://developer.gnome.org/doc/API/api-status.html
明日gladeと本を探して来よう。
英語ばっかり見てるとしんどい。

40 :入ります なっち( ● ´ ー ` ● ) :2001/08/09(木) 00:26
出ます なっち( ● ´ ー ` ● )

41 :login:Penguin:2001/08/09(木) 00:54
QTのがカコイイ

42 :login:Penguin:01/09/30 07:55 ID:d7JcX47M


43 :login:Penguin:01/10/13 12:01 ID:wNh.nQZ.
 

44 ::01/10/17 23:05 ID:1zYpbN2Z
gladeで作ったウイジェットのバックグラウンドにピックすマップをはりたのですが
だれか教えてくださいお願いします。

45 :login:Penguin:01/10/20 13:24 ID:OcfV46Zh
LinuxJapanのGTKプログラミングくだらないんですけど。
書いてる人がモロ初心者ってのがまるわかりだね
もっと高度な技が知りたいんだがな

46 :login:Penguin:01/10/20 16:52 ID:sKfJP4vD
自分で習得せい

47 :エディタ作るよ:01/11/09 17:06 ID:Wh+81om3
随分埋もれているスレですが、本格的にGTKに取り組もうと思うので引きageました。
僕はLinuxを始めてまだ2ヶ月という初心者ですが、あまり良いエディタが無いので
cursesを使ってコンソール上で動くものを作っていました。
しかしずっとWindowsを使ってきた自分にはやはりX上で使いたいので、
これからXのプログラミングを勉強したいと思っています。
僕はGNOMEを主に使っているのでGTKでプログラミングをしようと思っています。

48 :エディタ作るよ:01/11/09 17:14 ID:Wh+81om3
ところがいきなりつまっているんですよねぇ。
日本語変換サーバに接続するにはどうやったらいいのでしょうか?
変換途中の文字列を表示したりする方法がわかりません。どなたか教えて下さい。

49 :login:Penguin:01/11/09 17:20 ID:sxIsRJw7
>>47
viやemacsがお気に召さないようでしたら、
gedit http://gedit.sourceforge.net/
Dedit http://dice.debian.gr.jp/dtools/
はどうでしょうか?

50 :エディタ作るよ:01/11/09 17:30 ID:Wh+81om3
geditは今使っていますが、やはりいろいろ不満があるので自分で作ろうと思うのです。
geditはプラグインで拡張できるみたいですが、それでも限界がありますでしょうし。
僕が最終的に作りたいのは単なるエディタじゃなくて、
プログラミングの総合開発環境なんです。
通常プログラムを組もうとすると、ソースをいくつものファイルに分割しますよね?
ところが大規模なものになってくるとたくさんになってわけがわからなくなる。
そこでツリー状に表示して視覚的にファイルの連携が分かるようにしたいのです。
具体的にはVisualStudioのような感じになります。
こうなるとやはり既存のエディタでは対処できないものですから。

51 :login:Penguin:01/11/09 17:37 ID:AHRgFOVE
>>50
参考になるかな?
http://gtkeditor.sourceforge.net/

52 :エディタ作ってやる!!:01/11/09 17:40 ID:Wh+81om3
やはりソースコードを読むのがてっとり早いようですね。
参考にさせていただきます。

53 :login:Penguin:01/11/09 17:43 ID:UHjJxhYN
gtkじゃないけどkylix入れて作った方が早いぞ

54 :login:Penguin:01/11/09 20:23 ID:x4vrKCqJ
>>50
emacsならそーいう機能もありそうだな。使ってないから知らないが。

55 :login:Penguin:01/11/10 04:04 ID: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

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

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

Autotoolでプロジェクト管理するといいのかもしれません。

57 :login:Penguin:01/11/12 20:41 ID: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;
}

58 :login:Penguin:02/01/08 18:57 ID:u+t8IVl0
一時の気ままな情熱?
もう冷めちゃったのか? >all

思いコンダラ〜♪
もう一度奮い立て!

59 :スレを最後まで使い切る会:02/01/09 02:38 ID:X9daWS+z
Qt&KDEでKDevelop使って作ればいいYO!
KDevelopはGtk+も使えちゃったりするらしいが。

60 :名無しさん@Emacs21:02/01/09 04:03 ID:1Lr0/gEB
まじめに誰かanjutaのエディタm17nしてくれー。

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

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

おまえがやれ、ってのはなしだYO!

61 :login:Penguin:02/01/09 22:23 ID:3VMMyjI/
anjutaは使えるIDEなの?他にIDEはないの?

62 :login:Penguin:02/01/09 23:01 ID:uRF3TBC8
>>59
Kdevelopって使いやすいの?
Visual Studioとか仕事で使うけど、どうしてもGradeのほうが
使えると思ってしまう。
Visual StudioのLinux版よりGradeのWindows版が欲しいな
そうすればかなり楽できるのに(^.^)

63 :login:Penguin:02/01/10 00:20 ID:3FZlj9zd
>>62
Gladeのtypoだろ?
漏れはKDevelopの方がスキだけどな。
しかも、Visual Studioはもっとスキだ。
Linux使うようになってからもVisual Studioのコード補完機能だけは譲れずに、
Visual StudioだけのためにWindows起動することもある。
ま、KDevelopはあからさまにVisual Studioのクローンだから
Glade好きには合わないかもな。
KDevelop3.0ではコード補完が実装されるべく、現在奮闘中なのでそれに期待するよ。

64 :login:Penguin:02/01/10 00:29 ID:fjjH265S
>>63
>KDevelop3.0ではコード補完が実装されるべく、現在奮闘中なのでそれに期待するよ。

いいこと聞いた。
それって漏れみたいなLinuxでプログラミング始めようかなって層にはとっつきやすそう
に感じるのだけど。
トーシロも期待して待ってよかですか?

65 :login:Penguin:02/01/10 00:47 ID:3FZlj9zd
>>64
いいんじゃないの?
漏れも大いに期待してるし。
emacsもいいけど、コード補完ができるのってかなり魅力的だしな。
正直、コード補完さえできればどんなエディタだっていいよ。

ただ、まだ開発段階であんまりうまくいってないみたいよ。
Qtのsignal/slot機構があるから既存のParserではダメらしい。
コード補完ができるようになるのはもう少し先の話かも。

66 :64:02/01/10 00:56 ID:fjjH265S
なるほどサンクス。
いろいろ調べてみます。

67 :名無しさん@Emacs21:02/01/12 22:48 ID:qnsysu3Y
Visual Studioとはちょっと違いますがanjutaは関数のパラメータ
表示はできます。

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

GNOME使ってるのでKDEのことは知りませんがKDevelopはなんか
よさげですなー。

68 :login:Penguin:02/01/27 19:48 ID:HLJxu36x
空揚げ

69 :login:Penguin:02/01/27 19:49 ID:5ITICSPO
>>68
うまい!

70 :login:Penguin:02/03/06 19:36 ID:AZIsXcCu


71 :login:Penguin:02/03/11 00:28 ID:FmLWb+7S
GTK、2.0がstableでリリース?

http://www.gtk.org/download/

72 :login:Penguin:02/03/11 00:30 ID:FmLWb+7S
ageわすれ

73 :login:Penguin:02/03/29 11:10 ID:F0DgSbr9
愛あるage

74 ::02/03/30 07:03 ID:DuAItk01
神の声「うまー」

75 :login:Penguin:02/03/31 01:34 ID:NpQA8gR5
gtkはデザインがダサいからキライ

76 :login:Penguin:02/03/31 02:03 ID:TkOBS2wq
>>75
どういう意味の「デザイン」?

77 :login:Penguin:02/03/31 15:16 ID:NpQA8gR5
>>76
ごめんプログラム板でその単語は注意するべきだった
単に見た目の話(w

低レベルでスマソsage

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

気にする人あんまり多くないのかもしれないけどね

79 :login:Penguin:02/07/13 05:58 ID:q2+XoCQE
保守sage

80 :login:Penguin:02/07/31 20:50 ID:SAMq0uYI
さらに保全sage

81 :login:Penguin :02/08/01 16:14 ID:ZgkCZ7ws
g_threadの使い方がわからん。
g_thread_init()は必須ですか?
というか、Gtk+でスレッドやるならGlibのスレッドのほうがいいのですか?
pthreadですか?教えてください。

82 :login:Penguin:02/08/08 00:16 ID:VbBFNw1l
gtk で作ったプログラムって Xt の Widget と共存出来ないんでしょうか?
Qt には(昔いじった記憶では)Xt の Widget を埋め込むサンプルが確かあったの
ですが、gtk は web を探しても見付からないです。
どなたかご存知の方がいらっしゃいましたら教えて下さい。

83 :82:02/08/08 00:37 ID:VbBFNw1l
一応mozillaの中に gtkxtbin なるものを発見はしたんですが、
View Source しても殆ど使われていないらしくって使い方が良く分かりませぬ…

84 :login:Penguin:02/08/08 02:04 ID:75koLqWb
system("startx");

85 :login:Penguin:02/09/24 02:57 ID:zHWB0hgh
C++になれていると、Gtk+の継承はかなりめんどい気がしてくるな。
そもそもCでオブジェクト指向やろうって発想がすごいが・・・
というわけでGtkmmもやり始めたんだけど、どっちがいいのかねえ。

86 :login:Penguin:02/09/29 02:48 ID:eHgtOed6
GTKもっとみんなに使ってほしいからageる

87 :login:Penguin:02/09/29 02:54 ID:eHgtOed6
継承をする場合(独自のウィジェットを書く場合)、
ウィジェットの構造体はクラスにしても良いようだ。
Gtk+の継承は構造体の最初のフィールドをGtkWidgetにすることにより
キャスティングの多用でそれっぽいことができるようになっているが、
これはclass hoge:public GtkWidget と書いてC++による
「本物の」継承をさせてもうまくいくことがわかった。
最初のフィールドが同じなんだから当然といえば当然だが。

88 :login:Penguin:02/09/29 02:58 ID:eHgtOed6
オーバーライドはxxx_class_init()のような関数内で行える。
肝心のメンバ関数は次のように書けば良い。

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

  //ここからインスタンス固有フィールド
  //わざわざキャスティングしなくてもメンバ変数がそのまま書ける
}

89 :login:Penguin:02/09/29 03:05 ID:eHgtOed6
Gtkmmは、標準では入ってないディストリがほとんどなので使うのをためらってしまう。
Gtk+のバージョン2も同様。まだ使う気にはなれない。
1.2.xのみでC++のオブジェクト指向がほぼそのまま使えることがわかったため
自分としてはかなり使いたくなってきた。というわけでスレをあげてみた。

90 :login:Penguin:02/09/29 15:59 ID:4p6DQ8aZ
OOPやりたいんなら素直にC++使えばいいじゃん。
Cで無理にOOPやろうとするところが解せない。

91 :login:Penguin:02/09/29 16:20 ID:fE3HHMZQ
で、C++ 使うんなら素直に Qt 使えばいいじゃん。
となる罠。

92 :login:Penguin:02/09/29 22:53 ID:3o1IzYa7
C++は言語仕様がfatすぎてどうも...
Cくらいのシンプルさがちょうどいいナリ。

GTKの設計思想はイイとこ突いてると思う。


93 :スレタイ:02/09/29 23:39 ID:w4WxNaS7
s/GTK/GTK+/


94 :login:Penguin:02/09/30 00:17 ID:OLKvT8Xh
>>92
そっかなぁ?
GTK+みたいにでかくなるとCではちょっと持て余し気味じゃない?
Qtはかなりスマートだと思うけど。

95 :login:Penguin:02/09/30 01:19 ID:BdR/p6Dn
Qtは、mocを使うのがイマイチ気に入らん。
GTK+は日付バージョンの時代から使ってるのでなんとなく今も使ってる。

96 :login:Penguin:02/09/30 01:20 ID:B0DOm7W8
ruby/gtkでバイナリまで作れたらいいのに…

97 :login:Penguin:02/09/30 01:28 ID:gFORtcVB
GCode
http://gcode.sourceforge.net/

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



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

誰か詳しいひとはフォローおながいしまつ。

99 :login:Penguin:02/11/11 20:56 ID:gMGsLKZV
GTK+もあまり使われてないんですかね・・・

100 :login:Penguin:02/11/11 21:42 ID:vgJymunl
GCode の名前がIntiに変わった模様。
しっかし gtkmm とどっちを使うべきか迷うよな。
こーゆーあんま違わない分岐は正直困る。
全然違うんなら「選択出来て良い」と言えなくもないけどさぁ。

101 :login:Penguin:02/11/11 23:03 ID:d9jtMLp4
>>95 moc が嫌いっていうけど、じゃあ libsigc はいいの?

102 :login:Penguin:02/11/12 01:02 ID:XwN1vX/q
>>91

gtk--
と書いてみるテスト

103 :仕様書無しさん:02/11/28 21:01 ID: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/

104 :仕様書無しさん:02/12/03 12:58 ID:htGqbcIp
ここ、あんまり人が来ないみたいだから…。
とりあえず、自分用のメモ。
Gtk+プログラムをコンパイル/リンクするためには。
gcc `gtk-config --cflags` -c file名 ←コンパイル
gcc `gtk-config --libs` file名 ←リンク

105 :仕様書無しさん:02/12/03 14:00 ID:htGqbcIp
Imlibを使用した場合のコンパイル/リンク方法
gcc `imlib-config --cflags` -c file名 ←コンパイル
gcc `imlib-config --libs` file名 ←リンク



106 :login:Penguin:02/12/03 18:41 ID:an39zP9M
gtk-2.0 以降だったら
pkg-config にしる!

107 :仕様書無しさん:02/12/03 19:46 ID: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名 ←リンク


108 :login:Penguin:02/12/05 19:46 ID:lirUEjaW
>> 103
Larseさんとこは外しちゃ駄目でしょう。
ttp://larse-gtk.hp.infoseek.co.jp/gtk.html


109 :仕様書無しさん:02/12/06 12:34 ID:5SAieeJI
>108 thx!
>107の続き
[1] makeファイルとは
Makefileというのは、ソースファイルから実行可能ファイルを
作成する手順を記述したものです。実際に、ソースファイルか
ら実行可能ファイルを作成するためにはmakeコマンド(MS社
のコンパイラ系ではnmakeコマンド)を実行します。

110 :仕様書無しさん:02/12/06 12:36 ID:5SAieeJI
>109の続き
コマンドの実行によって、オブジェクトファイルとソースファ
イルの比較が行われます。もし、ソースファイルの方が新しけ
ればコンパイルが行われます。そうでなければ、何もしません。
makeファイルを作成する事により、ソースファイルと実行
可能ファイルの関係および保守・管理を容易にすることができ
るようになります。
コマンドの形式は
make −f makeファイル名
となります。ただし、makeファイルの名前がmakefileであ
るときは、上記コマンドの−f以下は省略可能です。


111 :おむこさん志望 ◆QtGqCwfDSA :02/12/06 17:21 ID: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
がいいよ

112 :login:Penguin:02/12/06 18:28 ID: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
のリンク先とかだと日本語対応になっているよ。
読み易いとは限らんけどね。

113 :名無しさん@XEmacs:02/12/06 18:33 ID:+MeggbtK
GTK+ Programming するなら automake、autoconf 使いましょう!!
簡単な使い方の説明がたしか Larse さんのところ(>>108参照)にあったよね?

114 :login:Penguin:02/12/06 18:56 ID:5wmq/hiL
>>113
> GTK+ Programming するなら automake、autoconf 使いましょう!!
最近バージョンアップが激しいので、できればam-1.5 ac-2.13を使いませう。
今日、ac-2.57 am-1.7.2まであがりますた。ほとんどの.m4ファイルが
撃沈されますた。


115 :login:Penguin:02/12/06 22:23 ID:m6HOswTF
automakeとかautoconfとか、書式がちょっと変態的だと思う。いや、使ってるけどさ。

116 :login:Penguin:02/12/06 22:34 ID:5wmq/hiL
>>115
確かに、confgure.in(ac)のマクロとシェルスクリプトの混在状態は
変態的だね。Makefile.amはまだマトモだけどさ。
自分でhoge.m4を作っておいてconfigure.inはほとんどマクロだけに
するとかしたほうがいいのかな?何とかすっきりさせたいんだけどね。

UNIX板のすれは死んでいる状態だけど、やっぱりすれ違いかな?


117 :login:Penguin:02/12/06 23:06 ID:m6HOswTF
>116

bin_PROGRAMS=hoge

hoge_SOURCES= main.c

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

そろそろスレ違いっぽくなってきてるような気がするので最後にGTK情報を。
GTK+ 2.1.3がリリースされてる。

118 :冗談だよ:02/12/06 23:20 ID:5wmq/hiL
>>117
> なんで区切が_なんだよ。未だになじめない。
GTK+の関数やマクロは、ほとんど _ がデリミタになっているから気にしない。


119 :login:Penguin:02/12/06 23:30 ID:m6HOswTF
>>118

GTK+の関数とかは、向こうが用意してくれてるじゃん。自分が定義したhogeが
hoge_SOURCESみたいな感じで_でつながってる!って感じがなんか気持ちわるい
んだ。
そう、俺の中では_は完全に区切ってる感じじゃなくて、区切りつつもつなが
ってる感じなんよ。ここらへんの感覚は、やっぱり人によって違うんだろうなぁ。

120 :login:Penguin:02/12/06 23:39 ID:5wmq/hiL
名前のところを見て欲しいが、、、>>119
確かに SOURCES プライマリは気に入らないですね。
それ以外はインストールされるディレクトリ名と割り切ってしまえば、
そんなでもないですけど。
# 他にも例外あったっけ?



121 :login:Penguin:02/12/07 00:17 ID:yjJ1LM9Y
>>120

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

まぁ、定型的に使う分には、割切ってしまえばそんなに気にはならないと
いえば、そうなんですけどね。

122 :120:02/12/07 10:07 ID:Of8FLFRv
ということでまとめ、am-1.7環境でMakefile.amで変態的なプライマリは、
SOURCES AR LIBADD LDADD LDFLAGS LINK CCASFLAGS CFLAGS CPPFLAGS
CXXFLAGS FFLAGS GCJFLAGS LFAGS OBJCFLAGS RFLAGS YFLAGS DEPENDENCIES
SHORTNAME
に決定されました。結構いっぱいありますね。


123 :login:Penguin:02/12/07 20:20 ID:yjJ1LM9Y
120さん乙ー

124 :login:Penguin:02/12/10 17:16 ID:m9e/PYr1
良スレage

125 :login:Penguin:02/12/23 19:31 ID:1cqFxvzz
GTK+2.2 リリースage。

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

ちなみに俺はGTK+2.xの方を使ってます。1.2より速いし、immoduleとか
アンチエイリアスとか、いろいろ新機能があるから。

126 :名無しさん@Emacs:02/12/23 19:54 ID:Mt+k38km
僕もGTK+2.xですね。
とりあえず新しいの使っておこうって感じです。

127 :名無しさん@カラアゲうまうま:02/12/23 20:11 ID:HupxKL2U
いまだ1.2.xのまま。
自分でつくったやつが動くのかどうか検証するのがめんどい。

# そんなことじゃだめなんだけどなー。

128 :(^v^)-666:02/12/26 12:41 ID:5tM+3DZe
オレも1.2.xのまま。
特に、理由はないです。Gtk+2.xに変えてもいいけど…。

イマ、ちょっと忙しいんで、年明けにでも…。

129 :login:Penguin:03/01/03 20:55 ID:WNlDvEUU
保守

130 :IP記録実験:03/01/08 22:04 ID: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を提出することがある。

131 :login:Penguin:03/01/09 01:27 ID:5dI2J0HT
>>375
偽者だから

132 :login:Penguin:03/01/09 01:41 ID:5dI2J0HT
さて、そろそろ読むべきレスがなくなって
記念カキコで1000目指す頃合ですか。

133 :IP記録実験:03/01/09 02:05 ID: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を提出することがある。

134 :login:Penguin:03/01/09 02:11 ID:X6ogbEfM
>>584
ポイズン

135 :login:Penguin:03/01/09 02:45 ID:oeq9HIxH
>>50
タイプミス
スマソ

136 :login:Penguin:03/01/09 03:29 ID: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とってないの?

137 :山崎渉:03/01/15 11:29 ID:wo7m90to
(^^)

138 :質問君:03/01/17 21:51 ID:Gw5Q2kTa
お力をお貸し下さい!
gtk_timeout_addで画面の再描画を設定しています.
しかし,別の関数内でwhile(1)の無限ループを使うと,画面の再描画ができません.
どうしても無限ループが必要なのですが,どのようにすればよいのでしょう?
お力をお貸し下さい!

139 :山崎歩:03/01/17 22:20 ID:tQv9kuDJ
>>138 おまえが永遠にソースを書き続ければよろしい。

140 :login:Penguin:03/01/17 22:49 ID:wyXs27gT
>>138
スレッド使えば?

141 :login:Penguin:03/01/19 05:15 ID:LdWFg6+q
>>138
あなたの望むそのものズバリの解答ではないかもしれないけど、

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

で強制的にメインループを回せます。
よって再描画が必要なときはただちに行われます。
参考までに。

142 :login:Penguin:03/01/22 11:49 ID:VGBhRJXh
Gtkmmの参考書って出てないんですか?

143 :login:Penguin:03/01/22 23:47 ID:2URUk/vJ
Gtkmmを使いたいなら、まずただのGtkをやること。
オブジェクト指向の知識があれば、すぐ移行できる。

144 :login:Penguin:03/01/22 23:49 ID:2URUk/vJ
Gtk2で開発している人はあまりいないのかな?
自分が思うに、Gtkは1.2.xでも相当洗練されていて、十分な機能を備えているんじゃないだろうか。


145 :login:Penguin:03/01/23 02:34 ID:DVnX67iq
>>144
Pango だけでも十分 1.2.x から 2.x に移行する動機付けには十分過ぎると思うんだけどなぁ。
2.1 からは Xft2/fontconfig 対応で OpenType フォントも使えるようになったし。

あと、個人的に Gtk+ 1.2の GtkPaned Widget は大キライ。仕切りの下にあんなつまみつけた
センスが分からん。


146 :login:Penguin:03/03/06 12:49 ID:ucaHnoqM
scheme で gtk やりたいぞ age.
和製糞ソフト作るようなヤツでもわかる日本語ドキュメント見せろ,または書け.
guile-gtk 希望.

え?w3m cgi? GUI じゃないだろ?便利だけど.

147 :login:Penguin:03/03/06 13:53 ID:fSTp04vi
>>146
(・∀・)つ gauche-gtk ツカエ!
http://www.shiro.dreamhost.com/scheme/gauche/index-j.html
http://www.shiro.dreamhost.com/scheme/gauche/packages-j.html


148 :146:03/03/07 12:46 ID:5F6JJ4cf
>>147
Gauche-gtk に同梱されている gtk-tutorial の hello, world! か.
でもこれだけじゃあ和製糞ソフトが量産されるとは思えないな.

gtk2 って何?
まだ 1.2 使ってるんだけど,これから gtk プログラムを作るなら 2.x の方がいいの?
多国語の扱いがマシになったとか書いてあるところがあったけど.
簡単な方を教えてクレクレ はぁと.

149 :login:Penguin:03/03/07 13:19 ID:E7ysupB/
1ユーザとしては

アンチエイリアシングで、表示が綺麗なgtk2を使って欲しい、、

150 :山崎渉:03/03/13 16:51 ID:52vAtNh8
(^^)

151 :login:Penguin:03/03/18 10:45 ID: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));

(略)

}
(続く)

152 :login:Penguin:03/03/18 10:45 ID: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引数以下にどんなパラメー
タを渡せば良いのやら(続く)。


153 :login:Penguin:03/03/18 10:48 ID: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となってコンパイル不能。

誰か手がかりをキボンヌ。

154 :login:Penguin:03/03/18 12:23 ID:LjoIsUnh
>153
ウィジェットを再表示するだけなら単に gtk_widget_draw() 使えば
いいんじゃないのかな。

155 :151-153:03/03/18 12:53 ID: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));
}


156 :login:Penguin:03/03/22 23:09 ID:XBKip/9C
GTKアプリを、Xの起動時に立ち上げると、
日本語が一部消えるんだけど・・・。
なぜ?


157 :相互リンク:03/04/14 14:01 ID:nee9/l5h
GTK+/Glade/gtkmm
http://pc2.2ch.net/test/read.cgi/tech/1050024677/l50

158 :login:Penguin:03/04/14 20:31 ID:Rvr2v4eQ
>>156
化けるんじゃなくて?
化けるのはAAを掛けてるライブラリのせいなのでAAを切るとよいかも。

159 :156:03/04/14 22:58 ID:Y/KrP1DD
>158
化けてはいません。
なんか、X起動直後に、初めて描画したときだけWidget単位で消えます。(ちゃんと出るのもある)
でも、『あああaaaあああ』みたいのだと『   aaa   』ってアルファベットだけ出る。
 しかも、最小化とかすると、元に戻したときちゃんと出る。
 上の別のウィンドウを重ねたりしても。

 今は仕方ないから、プログラム中でxrefreshを呼び出して、むりやり再描画してるけど。
 タイムアウトでの割り込みをかけたりしてるから、美しくないんだよな。


160 :login:Penguin:03/04/16 18:42 ID:p/eHtb4s
Gtk2(というかGdk/Pango)で、文字を任意の深さのPixmapに
(実際表示されているウィンドゥの深さ,Visualとは切り離して)
描画できる方法はないですか?

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

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

ただ単にPixmapを作成してgdk_draw_layout_with_colorsで
描画すると、カラーマップの設定が必要と怒られます。
カラーマップを設定しようとしたのですが、そのためには
Visual構造体を設定することが必要です。
自分で勝手に値を設定してそれをgdk_colormap_newに渡すと
落ちてしまうようですし...なんか方法はあるのでしょうか

161 :160:03/04/16 18:48 ID: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 の内容をプログラムで使用する */

162 :160:03/04/16 18:53 ID:p/eHtb4s
大切なとこ間違えてたスマソ
× pixmap=gdk_pixmap_new(drawable,xsize,ysize);
○ pixmap=gdk_pixmap_new(drawable,xsize,ysize,8); /*深さ固定*/

163 :login:Penguin:03/04/16 20:10 ID:lo8mJ2VY
gtk2ってUTF8で渡さないと文字書いてくれないですよね。
で教えて欲しいのですが、EUC-JPからUTF8に変換するには
普通 iconv を使うものなのですか? それとも mbstowcs とかでもOK?

とりあえず今は iconv 使って表示できてるけどムダなのかな。


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



165 :160:03/04/17 01:22 ID: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でイメージ取得、でいいのかな?

166 :山崎渉:03/04/17 11:49 ID:KRn99/cy
(^^)

167 :login:Penguin:03/04/19 23:58 ID:OPO/Nk6v
保全age

168 :山崎渉:03/04/20 05:47 ID:X64WTq1+
   ∧_∧
  (  ^^ )< ぬるぽ(^^)

169 :login:Penguin:03/04/22 18:53 ID: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はコード変換機能ではない」だろうよ。


170 :160:03/04/22 23:43 ID: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);

171 :160:03/04/22 23:49 ID: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値(ビットマップ)にしたいばあいがきれいにとれない....

172 :164:03/04/26 03:02 ID:d+JpEtZU
>>169
あ、UCS4 だ。UTF-8 じゃねぇや..ボケてた。
>「mb/wcはコード変換機能ではない」だろうよ。
が言いたかったことです。wchar_t の実装がどうなってるかを
仮定するな、ってことで。

173 :login:Penguin:03/04/29 04:55 ID:TV50G8uM
Gtk でスプラインとかベジェとか、曲線を描きたいのですが、サンプルとか無い
でしょうか。Gtk 単体では難しそうなので、他のライブラリも必要かなと思うの
ですが。作りたいのは Flash みたいな Vector Animation です。

174 :login:Penguin:03/04/29 15:26 ID:37fqnSLQ
DPS (Display PostScript)を使用するのがいいんじゃない?
使ったことないけど(^^;
http://www.xfree86.org/4.2.0/dps.html

175 :login:Penguin:03/04/29 18:48 ID:LuljFrkZ
>>173
http://www.gyve.org/
はもうダメぽなので
http://sodipodi.sourceforge.net/
とか参考にどうよ、かなり萎えるTopだが。

176 :login:Penguin:03/04/29 21:12 ID:dHsFcWW5
>>175
スクリーンショットがひどぃ...

177 :login:Penguin:03/04/29 22:05 ID:ER/8FD9H
>>175
gyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

178 :login:Penguin:03/04/29 22:35 ID:/4ZC/4OS
>175
ワラタ、腹筋硬直するぐらい

179 :login:Penguin:03/04/29 22:36 ID:AjRnLWEG
参った・・・

180 :login:Penguin:03/04/29 22:39 ID:clC6rFXj
精神的ブラクラ
http://sodipodi.sourceforge.net/index.php3?section=gallery/ain

181 :login:Penguin:03/04/29 22:40 ID:OyAr9ioi
>174-175
ありがとうございます。
guppi や gtkextra も見てみましたが、GtkGLExt で OpenGL を使ってみようかな
と考えています。

182 :login:Penguin:03/04/29 22:49 ID:/4ZC/4OS
>180
svgでここまで書かれると凄いものがあるな

183 :login:Penguin:03/04/30 05:22 ID:+Nekyn/i
>>173
使ったことはないのだが、GNOMEならlibartを使うのが王道っぽい。

184 :login:Penguin:03/04/30 13:31 ID:Cq88QVNL
gyk+インスコ難い

185 :login:Penguin:03/04/30 22:31 ID:frxRUIpZ
>183
これかなり良いですね。ちょっと試してみます。ありがとうございました。

186 :login:Penguin:03/05/01 03:56 ID:BcJCA4M8
ほー、levien さんって GhostScript のメンテナーさんなんだ。なるへそ。
libart って gnome 無くても使えるみたいだね。fresco にも使われてる。

187 :login:Penguin:03/05/01 04:22 ID: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だとアンチエイリアスの機能もあるのでありがたくはある。




188 :login:Penguin:03/05/01 16:22 ID: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があることは覚悟しとけ。



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

まあNetBSDのsys/cdefs.h内の__RENAMEマクロのような仕組みを使うとか
ldに細工するとかで、別シンボルを呼び分ける仕組みがlibcに用意されれば
Win32並に安全にはなる。


190 :山崎渉:03/05/22 02:04 ID:p4opmoqv
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

191 :login:Penguin:03/06/01 21:11 ID:Mv7aj8Tw
Ruby-Gtk+-2には、Ruby-GTK+-1.2のときにあったCListは無いよね?
CListと同じことを別の方法でするには、なんかいい方法ありますか?

192 :動画直リン:03/06/01 21:13 ID:+qVihZQ+
http://homepage.mac.com/hitomi18/

193 :160:03/06/01 22:02 ID: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でも同じようにできると思われ

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

cだからめんどくさそうとか言う奴はgtk,gdk,glibのチュートリアルをだいたい
どんな事ができるかざっと眺める位にして後はgladeつかえ。


195 :191:03/06/02 20:31 ID:H7/+JInF
>>193=160
Ruby-GNOME2のソースについてたサンプルに、GtkTreeViewもありました。
どうやら、説明してくれた通りのようです。
ありがとうございました

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

glade使ってますよ。便利ですね、あれは。
頭の中でゴチャゴチャ考えるのがいかに非効率的かわかります(^^;

196 :login:Penguin:03/06/05 00:27 ID:NeWdmQAa
>>195
mplayerのフロントエンドなら2つ3つあるみたいだけどそれとどういう差別化をす
んの?
俺としてはフロントエンドによる速度低下を使い勝手が上回るような奴を希望。

197 :login:Penguin:03/06/08 11:46 ID:h1K8ATYr
GTKで何か作りたいけどWinみたいにGUI主体じゃないから
作りたいものがない・・・
こういうツールが欲しいとかなんかないですか?

198 :login:Penguin:03/06/08 12:18 ID:NVYlBdnZ
>>197
家計簿ほすぃ

199 :197:03/06/08 17:11 ID:h1K8ATYr
家計簿ですか、、Linuxで家計簿付ける人っているのだろうか。(^^;
需要があるかどうかわかりませんが勉強かねてそれらしいの作ってみます。

200 :login:Penguin:03/06/08 18:19 ID:TUPg9XW4
>>199
>>198じゃないけどモノによっては期待する。
今OOo使って家計簿つけてるんだけど、なんかイマイチ。
機能を絞り込んだ「一人暮らしの男のための家計簿」みたいな感じだと俺は使うと思う。

201 :197:03/06/08 21:38 ID:NVYlBdnZ
>>199
>>200の「一人暮らしの男のための家計簿」ようなやつがほしい。

#さらに完成度が高まると、主婦層を狙ったキラーアプリにもなる!

202 :login:Penguin:03/06/13 15:25 ID:bpko5Clf
aunjuta って内蔵エディタ以外のエディタ指定できますか?
なんか、そういう設定項目が見つかりません。


203 :197:03/06/14 07:43 ID:aLrsfyXo
>>200
OOoみて公開するの躊躇ったんですが、せっかく作ったので公開します。(^^;
# めちゃくちゃシンプルな家計簿ですが…。
http://gtk2ch.hp.infoseek.co.jp/

UNIXプログラムは今回が初めて&一週間そこらで作ったのでヘタレなのはご勘弁ください。。
# あぁなんか叩かれそうだ…。


204 :login:Penguin:03/06/16 23:41 ID:qOFJTntY
見れん >>203

205 :login:Penguin:03/06/17 00:48 ID: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

直してからカキコしようかとも思ったが、
あまりカキコせずにいるのもなんかなーと思ったので一応。

206 :login:Penguin:03/06/30 20:36 ID:yw9J/DOE
197どこ逝った

207 :login:Penguin:03/07/01 00:52 ID:NjIY7kth
    age       テモ      イイ?
  ∧_∧     ∧_∧   ∧_∧ 
 ( ・∀・ ∩   ( ・∀・)  (  ・∀)
⊂    ノ  ⊂ ⊂  )  (  (_`つ
 ,(__つ    < < <   > 〉\ \
  し'      (_(_)  (__) (__)

208 :login:Penguin:03/07/10 02:20 ID: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も全く分らないため、
私には手が出せそうにありません。
よろしくお願いします。

209 :login:Penguin:03/07/10 11:29 ID:cUIBJ5ZH
>>208
「いろいろいじった」のなら手は出せてるという事。
そんなに心配せず、勇気を持ってhackしれ。

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

あるいは、gnome-devel at gnome.gr.jpあたりで「格闘してます」
ていう話を出せば、助け舟出してくれる人もいるかも。

210 :login:Penguin:03/07/12 10:58 ID:5xq0Wvrh
GTKもWideStudioも見た目がダサダサなんですが、もう少しマシなのありませんか?
ソースあるんだから自分でいじれ とかは無しでお願いします

211 :login:Penguin:03/07/12 14:06 ID:CNiFHab+
具体的にどの部分か書かないと意味分かんねーぞゴルァ。
けどツールキットとして見た目がダサい、ってことなら
GTKのテーマ使えば変え放題だと思うんだけど。

212 :login:Penguin:03/07/12 14:52 ID:4FR+yimT
言いたいのは>>75-78と同様のことでした
Windows標準色に慣れきってるので随分違和感があるんだよなぁ・・・テーマ書くのめんどくさいし

213 :login:Penguin:03/07/12 15:07 ID:2HSyDTV2
>>212
すごいな。
自分が慣れてないものは「ダサい」とみなしてしまうのか。

これでも入れとけ。
http://themes.freshmeat.net/projects/trueblue/

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

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

ってすげースレ違いの予感。

215 :login:Penguin:03/07/12 15:09 ID:CNiFHab+
>>213
>>214
擦れ違い…

216 :login:Penguin:03/07/12 15:12 ID:3e213sQq
俺はダイアログでESC押した時とかEnter押した時なんかの挙動のほうが気になるんだけど。
変更可能?ESCで閉じたりとか

217 :login:Penguin:03/07/12 15:23 ID:CNiFHab+
少なくともGDKレベルでやれば何とかなる気もすます。
ていうかバグ臭いかなそれ。

218 :login:Penguin:03/07/14 02:43 ID:5XjH4O4S
age

219 :山崎 渉:03/07/15 11:17 ID:doz396Fq

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

220 :login:Penguin:03/07/15 12:05 ID:Fo16Kpwc
(・∀・)renice!

221 :login:Penguin:03/07/17 20:37 ID:qoyTZeYl
で、GtkGLExt使ってるヤシっている?

222 :login:Penguin:03/07/18 00:28 ID:NwO1ORPE
GTKって、タブ移動の概念ってある?
なんかこういうダイアログって、
http://gtk-wimp.sourceforge.net/screenshots/gfx/gtk.gif
タブコントロール(タブ移動とは別の)に移動できないんだけど。

223 :login:Penguin:03/07/19 02:39 ID: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;
}

224 :login:Penguin:03/07/19 14:08 ID:zaPj7Dgy
>>223
ひねりなしかよ。

225 :login:Penguin:03/07/23 11:46 ID:ZPPlsMW8
(・∀・)renice!

226 :login:Penguin:03/07/24 06:52 ID:fVjg/qZ7
>>223はその後
gtk_window_set_title(GTK_WINDOW(window), "gcal");
を加えたに12signal

227 :login:Penguin:03/07/27 11:44 ID:Aq2rr+SO
(・∀・)renice!

228 :login:Penguin:03/07/30 12:13 ID:cPdgkLk2
(・∀・)renice!

229 :ぼるじょあ ◆yBEncckFOU :03/08/02 05:03 ID:+QUfMouI
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ

230 :login:Penguin:03/08/02 10:26 ID:2rmp9gin
(・∀・)renice!

231 :login:Penguin:03/08/08 11:54 ID:mg5o8ebS
(・∀・)renice!

232 :login:Penguin:03/08/08 13:14 ID:9dXoYmRI
(・∀・)

233 :login:Penguin:03/08/13 12:31 ID:pfCYHBFY
(・∀・)renice!

234 :山崎 渉:03/08/15 22:50 ID:dil3w4kp
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン

235 :login:Penguin:03/08/15 23:48 ID:GfNK1qbf
(・∀・)renice!

236 :login:Penguin:03/08/16 18:54 ID:1hd43OWj
もしかして、gtk1.2 で Button4,5(ホイール)の
GDK_BUTTON_PRESSイベントって配送されない?

237 :login:Penguin:03/08/17 07:22 ID:MkQ6Z6x8
質問。
ItemFactory のアクセラレーターキーの指定で、
ファンクションキーの場合はどう表記すればいいですか?

238 :login:Penguin:03/08/19 09:54 ID:ocMYGtK+
IDがGtK+なので祈念化旗鼓

239 :login:Penguin:03/08/25 09:48 ID:+hXUD3jL
(・∀・)renice!

240 :login:Penguin:03/08/28 18:06 ID:r/AujdJz
gtk+2ってかなり重くない?
gtk+1は再描画一瞬で終わるのにgtk+2は描画してるの見えるし。
何が悪いんだろ。utf8? xft?


241 :login:Penguin:03/08/28 18:29 ID:HlBh46Kn
メニューバーをクリックするとメニューが出てくる(ファイルとか編集とか)
同じ場所をもう一度クリックするとメニューが引っ込む・・・

はずなんだけど
Linuxのアプリって出したメニューが引っ込まないような気がする
引っ込むようにはできないの?

242 :login:Penguin:03/08/28 18:34 ID:5x7m3sUW
gtk2を使ってちょ。

243 :login:Penguin:03/08/29 16:34 ID:9qGUa9Nr
初心者です。どうしても気になるけれど
どこにも解説がない事があります。

なぜ
GtkButton *button = gtk_button_new();
じゃなくて
GtkWidget *button = gtk_button_new();
なのですか?

244 :login:Penguin:03/08/29 18:52 ID:F8jx8uO3
gtk_button_new()が GtkWidget* を返すからだろ。

245 :243:03/08/29 23:13 ID:9qGUa9Nr
つまりは、なぜに
GtkButton *gtk_button_new(void);
でないか、ということをお聞きしたいのです。

246 :login:Penguin:03/08/30 00:40 ID:npfy9qpx
鷲のしょーもない理解でよければ...

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

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

ボタンの性質(押されているか)を扱うときはGTK_BUTTONでキャストするし
コンテナの性質(ほかのヴィジェットを貼り付ける)を扱うときは
GTK_CONTAINERでキャストすることで
それぞれの型のヴィジェットとして扱うことができる。

247 :login:Penguin:03/08/30 10:44 ID:aGRYNy0z
>>243
なぜなら、オブジェクト指向に則っているから。

248 :login:Penguin:03/08/30 11:19 ID:ooQKA+zG
>>247
オブジェクト指向なら new くらい継承してくれってことじゃないのか?

249 :243:03/09/01 01:17 ID:uanR/ozZ
>>246
解説どうもです。
そこらへんの使い方は分かってるつもりなんですが、
「そこで」の部分の理由がよく分かないんです。
普段は、ButtonはButtonとして定義して、CONTAINERとして使いたい
ときはそうキャストすればいいのではないかと思ったので。

>>247,248
すまん、よく分からない。(Eiffel本読書中の身です)

250 :login:Penguin:03/09/01 03:10 ID:6aY0iPSh
javaやc++と違ってcでオブジェクト指向を実現しているgtk+では
アップキャストでも明示的にキャスト用マクロが必要となる。

GtkWidget* を引数にとる関数を使う頻度の方が GtkButton* を引数にとる関数を使う頻度より多いから
最初から GtkWidget* を返した方が後々のキャスト量が減ってプログラム記述の冗長さが減る

251 :243:03/09/01 12:57 ID:uanR/ozZ
>>250
なるほど、頻度の問題なんですね。
どうもありがとうございました。

252 :login:Penguin:03/09/01 20:35 ID:2b6fGses
素朴な質問です。

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

1. realizeをオーバーライドして、GdkWindowAttr構造体event_maskメンバで指定する。
2. GInstanceInitFuncハンドラ内でgtk_widget_add_events()を呼び出して追加する。
3. それ以外。

253 :login:Penguin:03/09/06 17:30 ID:E4nfQMs/
(・∀・)renice!

254 :login:Penguin:03/09/20 19:40 ID:63iWcr2P
(・∀・)renice!

255 :login:Penguin:03/09/22 23:08 ID:vXbOU9AM
VRMLオブジェクト(CG)をファイル選択widgetから選択し、
ウインドウwidgetに表示出力させたいと思っているのですが、
VRMLオブジェクトを出力出来る様なwidgetは存在するのでしょうか?
もし知っている方いらっしゃいましたら、ご助言宜しくお願いします。

256 :login:Penguin:03/09/23 00:04 ID: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等)もあるので必要に応じて使う。

257 :login:Penguin:03/09/23 17:39 ID:CXvOrUVV
>>252
超遅レスだけど、余計なコ−ド書かない2でいいのでは。
realizeを書くケ−スは、realizeが実装されていない抽象クラス(GtkWidgetとかGtkContainer)から直に派生する時ぐらいじゃないかな。

258 :257:03/09/23 17:53 ID:CXvOrUVV
あ−実装されてないっていうのはgdk_window_newを呼んでないって意味でつ

259 :login:Penguin:03/09/25 17:05 ID:FN6PNMc8
(・∀・)renice!

260 :login:Penguin:03/10/01 17:51 ID:OtB8zaps
gtktreeview上にリストのデータを表示してる時に、複数行を選択した状態で
右クリックしてメニューを表示させたいのですがどうすればいいんでしょう?

複数行の選択まではできてますが、そこで右でも左でもクリックすると複数
行の選択がクリックした行だけの選択にかわってしまいます。


261 :login:Penguin:03/10/11 23:17 ID: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;}


262 :login:Penguin:03/10/11 23:44 ID:kUFRMD7K
cygwinのことは知らないけど、コンパイルのオプションに-Iでインクルード
ファイルのありかを教えるんじゃないの?
というか pkg-config --cflags --libs gtk+-2.0 で全部勝手にやってくれる。
ドキュメントのコンパイルのあたりよんでよ。

263 :login:Penguin:03/10/13 16:46 ID:Y2TizDoa
GTK使うなら、1.2系を使えよ!

264 :login:Penguin:03/10/13 19:55 ID:Y2TizDoa
1.2なら俺がいろいろ教えてやるぞ

265 :login:Penguin:03/10/13 20:55 ID:ebIrzkRx
1.2って削除の方向に向かってるんですか?

266 :login:Penguin:03/10/13 21:24 ID:8ZoDmGS+
>>263
理由は?

267 :login:Penguin:03/10/14 23:23 ID:6azmQS+6
初心者です。
GTKでxpmを表示することができたのですが、
xpmデータの上に、さらにxpmデータを好きな位置に
描画することってできますか?
すいません、教えて下さい。

268 :login:Penguin:03/10/15 00:58 ID: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の知識がないと難しいかも

269 :267:03/10/18 01:50 ID:+faUZTm8
>>268
ありがとうございます

270 :login:Penguin:03/10/24 19:11 ID:FhYActk9
age

271 :login:Penguin:03/10/26 16:31 ID:khx8YbTs
GTK1.2+のいろいろなホームページを見たのですが、
理解できないので教えて頂けないでしょうか。
xmp、テキストなどにウィジェットにフォーカスって当てることできますでしょうか?
できるようでしたらどのような方法でしたら良いか教えて下さい。


272 :login:Penguin:03/10/26 17:21 ID:XFblFRSC
gtk_container_set_focus_childとか?

273 :login:Penguin:03/10/26 18:43 ID:Cf18t0yU
>>271

イベントボックスの中にGtkLabelとか入れればできる。
FAQだから、ぐぐれ。

274 :login:Penguin:03/10/28 00:46 ID:n92YYpRn
>>272
>>273

271です。
レス頂いてすいません。
チャレンジしてみます。

275 :login:Penguin:03/10/31 18:42 ID:IOboVxUJ
gtk+ではじめるXプログラミングなる本を読みながら、Gtkに入門してみました。

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

また、半角80文字目で自動的に\nを挿入する方法も出来れば教えて下さい。

276 :login:Penguin:03/10/31 19:00 ID:XMwowiCK
>>275
glade で雛形を作って、生成されたソースコードを読む手もあるなぁ

277 :login:Penguin:03/11/01 06:11 ID:hDKdsiea
>>275
gdk で文字幅もらってそこからウィンドウサイズを決めるとか。

gtk つかうなら 2.* の方がよくないかい? text ウィジット
も textview にかわってるようだし。

278 :login:Penguin:03/11/05 01:14 ID:a2IzLU73
ge

279 :login:Penguin:03/11/10 23:36 ID:SWl6gM2L
AGE

280 :login:Penguin:03/11/16 02:05 ID: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;
}

281 :login:Penguin:03/11/16 09:25 ID:rEMWU24N
gtk_widget_show (window1);
いれれ

282 :243:03/11/16 10:13 ID:ttZTK75X
>>280
1.2には gtk_image_new_from_stock() ないと思うんですけど。

#include <gnome.h> 入れて、あとは
http://developer.gnome.org/doc/API/libgnomeui/gnomestock.html
を見て適当にどうぞ。

283 :login:Penguin:03/11/16 12:50 ID:blYqkdPM
GTK+ FAQ 2003-11-05版 日本語訳
http://www.gnome.gr.jp/docs/gtk+faq.20031105.html

284 :280:03/11/16 13:24 ID:RQO5eIp4
>>281-283

さんきす!

ちょっと今日は時間がないので、明日辺り再チャレンジしてみます!

285 :280:03/11/17 18:26 ID: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を直接実行するところちゃんと
値が帰ってきました。


286 :login:Penguin:03/11/17 18:34 ID:aBzY07iI
>>285
-cはコンパイルするだけ。

287 :login:Penguin:03/11/17 21:41 ID:pT6iG3D7
>>285
gtk-config --foo …はいらない。 gnome-configだけで十分。
ていうか「ちょっと」って、コンパイラオプションの基本中の基本すら
他人に解説させて、「だいぶ」話がずれてるよ…。

http://www.gnome.gr.jp/docs/gnome-libs-tutorial/building-gnome-apps.html
参照。

288 :login:Penguin:03/11/18 22:39 ID:/SRrudRK
いきなり質問から入ってすみません。
今、GTKを使っているのですが、リストボックスにスクロールバーをつける方法
がわかりません。私が買った本やサイトなどをみてもテキストにスクロールバーを
つける方法しかありません。
hscroll=gtk_hscrollbar_new(GTK_TEXT(text)->hadj);
この(GTK_TEXT(text)をGTK_LIST(listbox)変えればいいなんて安直にやってみた
のですが当然のごとくstructure has nomember named 'hadj'といわれました。
リストボックスには別のメンバが用意されているのですか?それとも根本的にに間
違っているのでしょうか?どなたかご教授おねがいします><

289 :login:Penguin:03/11/19 00:59 ID:Wqf4YGJk
GtkScrollbar 使わずに GtkScrolledWindow 使う。


290 :login:Penguin:03/11/19 04:20 ID:yn0Z9dim
>>289
GtkScrolledWindowとctreeでやりたかったことができました!
listboxはGtkScrolledWindowでやってもエラー?が、、きっと何かまちがって
たんですね。。
ありがとうございました!


291 :280:03/11/21 01:45 ID:S7n3MU64
>>287

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

Linuxのプログラミング自体が初めてで、基礎的な質問をしてすみませんでした(^^;

292 :login:Penguin:03/11/24 19:03 ID:ukNjiyv7
GTK+ FAQ 2003-11-20版 日本語訳
http://www.gnome.gr.jp/docs/gtk+faq.20031120.html

293 :login:Penguin:03/11/25 04:09 ID:C+TQgfqW
gtk_widget_show(dialog);
func();
gtk_widget_destroy(dialog);

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


実際に動かしてみると、func()は処理されるのですがdialogが表示されません。
正しくは、どうするべきでしょうか?

294 :login:Penguin:03/11/30 22:37 ID:ufz1QKFT
gtk2.xを勉強したいんだが
どっかいいサイトないかな?

295 :login:Penguin:03/11/30 23:04 ID:S9DI/WHa
>>294
http://developer.gnome.org/doc/
http://www.gnome.gr.jp/docs/

296 :login:Penguin:03/11/30 23:22 ID:Qt3q37KD
たった二つ上のレスぐらい見ろよ・・・


297 :login:Penguin:03/11/30 23:42 ID:tKo4rvDp
>>293
func の後で gtk_main() で、
func の終了時に gtk_main_quit() をよぶ。


298 :login:Penguin:03/12/01 01:16 ID:2vS05X6T
>>293の質問と似てるけれど、ソケット通信の待ち受けにwhile+selectを使おうと思いましたがどこに記述すればよいのかわかりません。
gtk_main()の上に書くと作ったwidgetが表示されず、下に書くとどうやらgtk_main_quit()が呼ばれたあとに実行されてしまいました。

299 :login:Penguin:03/12/01 01:23 ID:D/d2pGGk
>>298
そりゃそうでしょう。gtk_main()ってメイン「ループ」だよ。
ここらへんが役に立てばいいのですけれど…。
http://www.gnome.gr.jp/docs/gtk+-1.2.x-refs/gtk/gtk-general.html#GTK-TIMEOUT-ADD

300 :298:03/12/01 03:12 ID:2vS05X6T
>>299さんのヒントでググって、
i = gtk_timeout_add (時間, (GtkFunction)関数, 引数) ;
gtk_main ();
gtk_timeout_remove(i) ;

てな具合にしたら動いたみたいです。どうもありがとうございました。

301 :login:Penguin:03/12/01 04:32 ID:rp3RKVAH
>>300
gdk_input_addの方が良いと思うんだが、どうよ?

302 :gnomeユーザー:03/12/01 23:19 ID: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;
...
}


知っていれば簡単な事の様な気もするのですが…。
宜しくお願いします。

303 :login:Penguin:03/12/01 23:47 ID:RoaPDgRi
gnome_app_create_toolbar_with_data ()

304 :login:Penguin:03/12/01 23:48 ID:D/d2pGGk
>>302
gnomerが増えてうれしい限りです。
こちらはもう見ましたか?
http://www.gnome.gr.jp/docs/gnome-libs-tutorial/

305 :login:Penguin:03/12/01 23:52 ID:D/d2pGGk
>>301
む、自分はそれ知らなかったっす。
どんな風に良いんでしょう?

306 :gnomeユーザー:03/12/02 00:08 ID:V7ZgsjLM
>>303,304

ありがとうございました。
with_data()
で試して見ます。

307 :gnomeユーザー:03/12/02 01:05 ID: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);
...
}

としましたが、うまく動いてくれません。なんか意味を取り違えて、勘違い
してるんだとは思うんですが。

308 :login:Penguin:03/12/02 03:33 ID:qj4or6iA
>>301
ここですね。
http://www.kitanet.ne.jp/~asler/linux/gtk/ja/gtk_tut_ja-17.html
わたしがやりたいのはソケットの待ちうけなので、ソケットディスクリプタに反応があったときに関数を呼び出すgdk_input_addのほうが適してるみたいです。
まず参考にして組んでみます。ありがとうございました。

309 :gnomeユーザー:03/12/02 15:23 ID:V7ZgsjLM
>>307

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

として、コールバックで呼び出すと"test"と表示する事が出来るのでWidgetの送り方がおかしいんだとは思うんですが…。

310 :login:Penguin:03/12/02 15:32 ID:Rv4Kirv7
gnome のライブラリ使ったことないけど
printf("length=%d\n",gtk_text_get_length(GTK_TEXT((GtkWidget *)data)));
とか。

void test(GtkWidget *widget,gpointer data)
この widget って text じゃないのか?これまた、全く知らんのだが

311 :gnomeユーザー:03/12/03 20:30 ID:O3qA9IIV
一緒に渡したい値がいくつかあったので、textもまとめて一つの構造体にして
構造体のポインタを渡すことにより、無事にtextの中身を処理できるようになりました。

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

312 :gnomeユーザー:03/12/03 23:03 ID:O3qA9IIV
たびたびすみません。

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

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


何か解決策はないでしょうか?


313 :login:Penguin:03/12/03 23:19 ID:X38Jttep
>>312
うーん、もうちょっとご自分で調べられないもんでしょか。

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

どのような理由があるか知りませんが、ANSI Cを前提に
書かれているGTKとそれ以前とのコードの組み合わせは、
無理が出ても仕方がないように思われます。

314 :gnomeユーザー:03/12/03 23:30 ID:O3qA9IIV
ちなみに、ソースの概略はこんな感じです。

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

int main(){
...
va(pac,"test\n")
...
}


315 :login:Penguin:03/12/04 00:09 ID:OqkJIjUR
>>314
はあ?

316 :gnomeユーザー:03/12/04 01:48 ID:qZ2UE2k7
すみません(^^;
とりあえず、自己解決しました。

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

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

すみませんでした。

317 :login:Penguin:03/12/04 04:34 ID:yhHCplv3
>>316
はあ?なんでstdargs.h使わんの?

318 :login:Penguin:03/12/05 00:38 ID: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;
}


319 :login:Penguin:03/12/05 00:48 ID:G4+zQR3e
ちなみに、元のプログラムからいろいろ省いたのが上ので、元の
プログラムでは、pixbuf の表示はできてます。
それと、gdk_pixbuf_new_from_file は何箇所か使ってるんですが、
2回目以降はリークがでません。

320 :login:Penguin:03/12/05 11:02 ID:jnR1QCBC
>>318
自分はgdk-pixbuf使った事無いんで自信はないですが、
使い終わったらunref()するのでは。

321 :login:Penguin:03/12/05 14:22 ID:G4+zQR3e
>>320
func や main に g_object_unref をいれてみましたが、相変わらずです。

上のプログラムでは pixbuf を使ってないですが、元のでは頻繁に利用する
ツリー表示のアイコンとしてつかってるので、プログラム終了まで
解放する必要がないと思ってるんですが・・。


322 :login:Penguin:03/12/05 16:27 ID:10rca9Ek
>>320
gdk_pixbuf_unref(pixbuf); は?

リファレンスマニュアル読んでないだろ。

323 :login:Penguin:03/12/05 18:07 ID:jnR1QCBC
>>322
GTK2以降のリファレンスマニュアル読んでないだろ。

324 :login:Penguin:03/12/05 18:50 ID:G4+zQR3e
Warning
gdk_pixbuf_unref is deprecated and should not be used in newly-written code. Use g_object_unref().

>>322
gtk2 なので上記のとおりなんです。

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

どなたか解説きぼん。

326 :login:Penguin:03/12/07 12:25 ID:TQPhdBR3
他のメモリプロファイラを試してみる



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

参考にしたサイト
http://www-6.ibm.com/jp/developerworks/linux/000811/j_glib.html

328 :318:03/12/09 00:40 ID:PATSnh0H
>>326
mpatrol 試した。
memprof 以上に unfreed があると指摘されまくり。
同じプログラムなのに・・。
mpatrol がよくわかってないのでもちっと修行してみやす。

329 :login:Penguin:03/12/09 00:44 ID:0I2itgVb
>>327
まずテストコード書いて試してみよう。そんでだめなら、そのテストコードをここで
晒してみれば、きっと誰か答えてくれるよ。

330 :327:03/12/09 00:52 ID: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
ここのテストコードのコピペでは動作しましたが、文字列格納部分だけこれに差し替えたところダメでした・・・

331 :login:Penguin:03/12/09 01:19 ID:PATSnh0H
>>330
全ての要素が同じものを指してるからそうなる。

GList に追加する文字列は、それぞれにメモリーが割り当てられてる必要が
ある。g_strdup(tmp) した結果を g_list_append したらどう?


332 :login:Penguin:03/12/09 01:28 ID:0I2itgVb
>>330
g_list_appendしても、list_serverには文字列がappendされるわけじゃなくて、
tmpへのポインタがappendされるだけ。で、その後ご丁寧にmemsetで'\0'
を代入してるから、中身が消えちゃうと。

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

 それと、この件とは関係ないけど、fgetsは文字列の終端にちゃんと
'\0'を代入してくれるので、memsetは不要だよ。

333 :332:03/12/09 01:29 ID:0I2itgVb
ケコーン?(;´Д`)

334 :327:03/12/09 01:35 ID:9M8YybjC
>>331さん御指摘のとおり
list_server = g_list_append(list_server, g_strdup(tmp));
としたら出来ました。ありがとうございます。

早く漏れも質問に答えられるくらいになりたい(;´Д`)

335 :327:03/12/09 01:39 ID:9M8YybjC
>>332
ありがとうございます&漏れのためにケコーンおめ(*´Д`)
リスト追加のあとのmemsetも消すことにします。

336 :login:Penguin:03/12/11 16:46 ID:GOm24c4o
ちょっとお聞きしたいことがあります。
僕が使っている環境では、G_MAXINTは2147483647でlong型の最大値になっているのですが、
gtk_drawing_area_size(GTK_DRAWING_AREA(drawing_area),G_MAXINT,height);
というような使い方ができません。int型の最大値の32767までしか指定できません。
これ以上大きな数を指定することは仕様上できないのでしょうか?
初心者で質問がわかりづらいかもしれませんがよろしくお願いします。

337 :login:Penguin:03/12/12 23:45 ID:btGr7o25
どうできないか書いた方がいいんじゃない。
コンパイル通らんのか、反映されないだけなのかとか・・
それと、どういう目的でそういう値にしたいかも

338 :336:03/12/13 12:37 ID:6GbNE/xa
コンパイルは通ります。drawing_areaをgtk_window_new(GTK_WINDOW_TOPLEVEL)で作ったウィンドウに入れて
gtk_widget_set_usizeで最小サイズを設定しているのですが、上のようにgtk_drawing_area_sizeを実行すると設定
した最小サイズになってします。
目的は、グラフを拡大したいということです。横軸を時間軸として、その横軸を長くすることでグラフを拡大しようと
しています。(なんか伝わりづらいなぁ)

339 :login:Penguin:03/12/13 23:25 ID: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だと思いますけど、まずそれが書いてあった方がよかったかも。)

340 :338:03/12/15 16:12 ID: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までしか指定できない。

ということでしょうか?

341 :login:Penguin:03/12/15 20:28 ID:t6DB0CFT
>>340
gtk1.2では
struct _GtkRequisition
{
gint16 width;
gint16 height;
};
でし。ソースみてけれ。



342 :336:03/12/16 17:34 ID:677jpJGz
>>341
やっぱりそうなんですか。わざわざ答えてくださって、ありがとうございます。
32767より大きくすることは無理みたいですね。

343 :login:Penguin:03/12/17 16:04 ID:qUoRXvI8
>>342
明示的な制限があろうがあるまいが、そんなでかい座標系を安直に扱かってま
ともに動くか不安、ってのが普通の感覚では。
正規化して数千ぐらいには収まるようには出来ないの?

そもそも何をやりたいのか書いた方がもっと建設的な議論が出来そうだけど。

344 :login:Penguin:03/12/20 15:53 ID:GhCH1q1G
GTK+ FAQ 2003-11-24 版 日本語訳
http://www.gnome.gr.jp/docs/gtk+faq.20031124.html

345 :login:Penguin:04/01/12 15:15 ID:TTcLcp55
GTK+ FAQ 2004-01-09 版 日本語版
http://www.gnome.gr.jp/docs/gtk+faq.20040109.html

346 :login:Penguin:04/01/15 06:51 ID:IzHB4VVw
D使おうよ

347 :login:Penguin:04/01/22 18:28 ID:KKqp1ICo
>>346
DUIね。
ttp://dui.sourceforge.net/


348 :login:Penguin:04/01/24 22:36 ID:GyINHokb
GTK 勉強しようと思うんですが、1.2 と 2.0 って、どっちのコードの方が
単純なものになりますか?2.0 になってやれることが多くなった反面、複雑な
手続きを踏む必要ができたとか、コードが整理されてシンプルかつ軽くなった
とかの情報をいただけるとさいわいです。

349 :login:Penguin:04/01/25 03:13 ID:1SBJ9zXH
今さら1.2は覚えるだけ無駄なので2.0系にすべし。
少なくとも公式のドキュメントは2.0系の方が充実しているしね。

350 :login:Penguin:04/01/25 16:47 ID:X02pqnTw
GTK+ FAQ 2004-01-14 版 日本語版
http://www.gnome.gr.jp/docs/gtk+faq.20040114.html

351 :login:Penguin:04/01/25 17:00 ID: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
サンプルコード修正


352 :login:Penguin:04/01/25 20:35 ID: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だと不可な理由は何でしょうか?


353 :login:Penguin:04/01/25 20:52 ID:9amne98y
>>352
システムにja_JP.EUCというlocaleが存在しないからでは?
OSは何を使っている?

354 :login:Penguin:04/01/25 20:55 ID:9amne98y
>>353
間違えた。s/ja_JP.EUC/ja_JP.eucJPね。_| ̄|◯

355 :352:04/01/25 21:09 ID: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
としています。

356 :login:Penguin:04/01/25 23:41 ID:/R11UVAp
たしか BSD 系の OS は X11 の locale については XLocale が面倒見てたと思うので、
/usr/share/locale/* とはまた別になると思う。( Linux は glibc が全部やってる)

この周りの話は限りなくシステム依存なので Mac 板で聞いたほうがきっと早い。

357 :login:Penguin:04/01/26 15:01 ID:KEkReNS8
gtk2 を使って画像表示のアプリを作ってるんですがカーネルのバージョンによって
動作速度がひどく変わります。

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

2.6 でも軽く動くように変えたいんだけど、何か気をつけるところでも
あるんでしょうか?

358 :login:Penguin:04/01/26 15:05 ID:Wuwgl5VW
漠然としすぎてて、わかんねーよ(w

359 :login:Penguin:04/01/26 15:08 ID:KEkReNS8
マウスまわりの処理で、カーネルが変わって気をつける点があるのかな
ってことです。

360 :login:Penguin:04/01/27 17:15 ID:hqPkLSFb
みんな、GObject とか使ってる?
チュートリアルとか読んでみたんだけど、使い方が良く分からん...。


361 :login:Penguin:04/01/27 21:34 ID:xBBLI74B
357 だけど解決した。

psmouse のサンプリングレートと解像度をモジュールのオプションとして
指定したらなおった。

362 :login:Penguin:04/01/28 21:57 ID:s3WOXzt9
windowにfixedを貼り付けました。
windowにexposeシグナルのハンドラをconnectしました。
そのシグナルハンドラに制御が飛んできません。
fixedを除いてだったら渡ってきます。
また、同じハンドラをfixedにconnectすると渡ってきてくれます。

こういうものなのでしょか。
fixed貼ってあっても、あくまでもwindowにシグナル受け取って欲しいものなのですが。


363 :login:Penguin:04/01/29 12:38 ID:5f0Q1I1K
Pangoで文字の重ね打ちがやりたいんですが面倒?

364 :login:Penguin:04/01/30 00:14 ID:haUKggm8
gtk_widget_get_pango_contextとpango_layout_newで
PangoLayoutを取得して
pango_layout_set_textでテキストをセット
gdk_draw_layout_with_colorsでGdkDrawableに描画することができる。

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

(文字をすでに打った上から重ねうちすると、すでに表示されている
文字とさらにアルファブレンディングすることになる。
白地に黒文字を表示する場合、これをくりかえすと重なった部分が
どうしても黒にどんどん近づいてしまう)

365 :login:Penguin:04/01/30 01:48 ID:Ribhh1SU
>>360
素の GObject 使うより、とりあえず gob 使ってみるとか。


366 :360:04/01/30 09:25 ID:xXVlWb2I
>>365
gob 知らなかった.。・.。・(ノД`).。・.。・ありがとう


367 :login:Penguin:04/02/01 02:24 ID:qULg2Z/Y
>>364
3Q

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

そういえばGimpの文字ツールのプレビュー画面でそういう現象が
発生してるような気が。

368 :364:04/02/01 02:44 ID:PLV4gnHt
単に色を変えるとかなら確実に(文字を描く前の)
背景を再描画すればよいが
Boldとか、影つきとか出したいのであれば
自分でアルファ値を計算するのが確実かも。

すると描画する前にどこかの(描画エリア以外の)メモリに
文字のアルファ値を取得しなければならず、これがけっこう面倒。
一回(GdkPixmapなどの)Drawableに描画したあと、その値を
gdk_pixbuf_get_from_drawableで配列に取得して計算、なんてやったな。
もっとうまい方法があるのかもしれんが。

369 :pao:04/02/02 00:05 ID:lpWaJ20M
RedHat Linux7.3でgtk1.2を使っているのですが、
drawing areaにconnectしたコールバック関数が呼ばれず困っています。
connectしたイベントは
・キープレス
・ボタンプレス、リリース
・ポインタ移動
です。念の為、イベントマスクも設定しているのですが。
他に、必要な処理があるのでしょうか?
どうしたら、呼ばれる様になるのでしょうか?
よろしくお願いします。


370 :login:Penguin:04/02/02 00:37 ID:i0H3LwnL
gtk のソースにウィジットの使用例が付いてるから見てみたらどう?
初めて使うウィジットの時には結構役にたつぞ。

ついでに、新しくプログラムを組むなら gtk2 のほうがよくないかい?

371 :login:Penguin:04/02/02 08:14 ID: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++でコンパイルする方法でも構いませんので,どなたか教えてください

372 :login:Penguin:04/02/02 10:53 ID:0Jt2V78i
エラーメッセージの通りじゃないの?
何に困ってるわけ?
# しかも "not command"って…

373 :pao:04/02/03 09:55 ID:GjS2l5dh
サンプルソース参考にしてみます。
gtk-1.2は、仕事上の制約なんです。

アドバイス、ありがとうございました。

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

style "text"
{
bg[NORMAL] = { 0, 0, 0 }
fg[NORMAL] = { 0, 0, 0 }
}
widget_class "*GtkText*" style "text"

375 :login:Penguin:04/02/05 00:11 ID:6Frv3+5B
>>357
>ウィンドウからはみ出すような大きな画像をドラッグしてスクロールするように
自分も同じようなものを作ろうと思っていたので
まだこのスレを見ていてもしよければソースを見せてもらえないでしょうか?

376 :login:Penguin:04/02/05 00:22 ID:gRe+faI+
>>375
gqview のソースでも見てみたら?
ちょうどそんな感じの操作方法だと思う。

377 :login:Penguin:04/02/05 13:06 ID:SoJ3gS8K
>>374
style "text"
{
base[NORMAL] = "#000000"
base[ACTIVE] = "#151519"
base[INSENSITIVE] = "#181818"
base[PRELIGHT] = "#151618"
base[SELECTED] = "#252629"
}
class "GtkText" style "text"

378 :pao:04/02/05 20:15 ID:I9Rb8I9P
お陰様で余白の色が設定できました。
ありがとうございました。

379 :login:Penguin:04/02/05 21:52 ID:IbsAdnep
gtk_entry_new_with_max_lengthと
gtk_entry_select_region
を使っているのですが、
GDK-Error X server lost
というエラーがしばしば出るですが、
何かご存知の方、いらっしゃいますか。
RedHat7.2を使用しています。

380 :login:Penguin:04/02/06 15:35 ID: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

381 :login:Penguin:04/02/06 22:15 ID:zjBuw81z
pangoのcvs版、modules/indic/myanmar-xが消えとるじゃん。
なんでじゃ(゚д゚)ポルァ

382 :login:Penguin:04/02/06 22:25 ID:nS4IRly3
そら中国に消されたんでしょ

383 :login:Penguin:04/02/07 09:06 ID:0FnXzrqf
>>381

ビルマ(綴り知らね)になってたり?


384 :login:Penguin:04/02/07 09:21 ID:LRRhMtVA
>>383
つづりは Burmese なんだけどやっぱりサポートされて無さげ。(`皿´)キシャー

385 :login:Penguin:04/02/07 15:47 ID:/BrXzTXu
>>381
ChangeLogには目を通した?

386 :login:Penguin:04/02/07 17:20 ID: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.

387 :login:Penguin:04/02/10 15:04 ID:Ei2GCPJI
>>386
ああ、思い出した。pangox backend消すって話があったわ。
freetype2+fontconfigを使うように書き直して突っ込めばいいんじゃない?

ttp://mail.gnome.org/archives/gtk-i18n-list/2003-April/msg00020.html

388 :login:Penguin:04/02/11 09:40 ID:d5X1Hh57
age

389 :login:Penguin:04/02/16 14:10 ID:qOO4+Jst
GTK+やる奴はgtkmmから始めときな. OOPはOOPLでやるのが一番.
gtkmmやる奴はRuby/gtkから始めときな.よけいなこと気にしなくていい動的言語が一番.

390 :login:Penguin:04/02/16 17:05 ID:iudeGd8p
>>389
さんせ〜。Redhatだかどこかの誰かが、「Cはライブラリ作るための言語」って言い切ってたっけ。
これからGTK始める人は、どんどん(Cじゃない)高級言語でGTKアプリ作ってって欲しい。

ところで「『よけいなこと気にしなくていい』動的言語」って、変数型のお話?

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

あぁーー   謎だらけ


392 :login:Penguin:04/02/16 19:05 ID:oCxJzKi5
>>391
- 今から始めるなら1.xじゃなくて2.xを使ったほうがいいよ
- 任意の位置への貼り付けはGtkFixedとかGtkLayoutとかそれらの入れ子とか
- あとはgoogle先生に

393 :login:Penguin:04/02/16 19:52 ID:juVw0kFu
google先生はなんて優しいんだ
gtkmm2というrpmみっけ
2.x使って遊んでみる

394 :login:Penguin:04/02/16 21:18 ID:juVw0kFu
インストールしょうとしたら
libsigc-1.2.so.5
libsigc++-devel
が必要といわれ、google先生は教えてくれません
誰か愛の手を差し伸べてください


395 :login:Penguin:04/02/16 21:34 ID:juVw0kFu
解決しました。

396 :login:Penguin:04/02/16 22:21 ID:+Ig7jOcp
>>390
それOwenのセリフ。
その割にはOwenアプリは(KanjiPadとかMemprofとか)Cで書かれて
いるものばっかりだけど(w

まあアプリに関しては自分の好きな言語を使えばいいんじゃない。


397 :login:Penguin:04/02/17 11:30 ID:r1qIPww0
Gtkの button widget の relief 部分の幅を削る方法は
ありませんか?

gtk_container_set_border_width()というのを見つけたのですが
これだと buttonの外側の余白しか変わりません。


398 :login:Penguin:04/02/17 21:39 ID:LrLm6Jz+
使ったことないけど、プロパティにあるreliefって、関係なし?

399 :login:Penguin:04/02/17 21:53 ID:1y8cj++7
(・∀・)relief!!

400 :login:Penguin:04/02/17 23:24 ID:ki2m0kcc
はっとく
http://www10.plala.or.jp/always/develop/

401 :login:Penguin:04/02/17 23:39 ID:YPxA1wly
>>397
gtk_button_set_relief()は試しました?

402 :397:04/02/18 08:46 ID:0LoZKQD9
gtk_button_set_relief()は、reliefの形を変えるもので
幅を削ることはできません。
(NORMALでもHALFでもNONEでも relief が同じ幅を占有します)

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



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



404 :login:Penguin:04/02/21 01:02 ID:iveKWUuZ
GtkPixmap()で生成したウィジェットをgtk_widget_show()で画像を表示。
その画像の上にgdk_draw_rectangle()で描画した矩形を表示させたいのですが、
どうしても、Pixmapの配下に矩形が表示されてしまいます。
すいません、教えて下さい。

405 :login:Penguin:04/02/23 21:50 ID:lo6TfN7B
どうゆうこと?
もちっと詳しく
できればソースつけて


406 :login:Penguin:04/02/23 22:06 ID:wKxG00oc
スミマセン
藍よりも青し のダンレボゲーム知りませんか?


407 :login:Penguin:04/03/01 22:12 ID: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みたいな(疑似)透過ウィンドウができるって思ったんだけど、違うのかな?


408 :login:Penguin:04/03/05 21:04 ID:+LD8Xma7
チュートリアルに書いてあったプログラムをコンパイルしても、
実行ファイルのサイズは、せいぜい数十kbにしかなりません。
しかし、glade でウィンドウにメニューとテキストだけ貼ったものを、
autogen.sh でコンパイルすると、それぞれの .c に対し 200kb
以上の .o ができて実行ファイルも 500 kb を越えてしまいます。

automake/autoconf がらみでコンパイルオプションが長々としているのが
原因だと思うのですが、このリンクの無駄を省く方法をご存知ないでしょうか?

409 :login:Penguin:04/03/05 21:59 ID:3OhPvv7U
>>408
デバッグオプション外してみたら?
またはstrip -g してみるとか。

ちなみに、チュートリアルのプログラムに-g(デバッグ)オプション付けて
コンパイルするとどれぐらいの大きさになります?
既に付けてたら無視してね。

410 :login:Penguin:04/03/05 23:52 ID:+LD8Xma7
>>409
strip -g で小さくなりました!早速デバッグオプションまわりについて調べてみたいと
思います。

ちなみにチュートリアルの helloworld に -g オプションを付けてみたところ
14533 -> 164785 となりました。


411 :login:Penguin:04/03/06 08:47 ID:T+WnXI9F
>>410
それならmakeはそのままで、インストールするときは
make install-stripでインストールすれば、多分stripされるよ。


412 :質問:04/03/07 00:54 ID:3z3kajPi
gtkとopneglを併用したアプリを作ろうと思い、gtkglareaに
手を出してみたのですが、ドキュメントがなくて困っています。

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

特にすぐ知りたいのはglutTimerFuncです。

413 :412:04/03/07 04:10 ID:3z3kajPi
一通り.hを読んでみましたが、基本的に初期化についての関数しか用意されていない
みたいですね。


414 :login:Penguin:04/03/07 16:22 ID:qODY7BL6
>>412
Gtk+ 1.2か?Gtk+2以降はGtkGLExtを使うべし。


415 :412:04/03/10 06:04 ID:XpgJ0nF/
>>414
情報ありがとうございます。

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

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



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

gdk_pixbuf_render_to_drawable_alpha なんかが使えるのかと思ったら
alpha_mode : Ignored とか obsolete とか書いてあり、違うようですし・・。

417 :login:Penguin:04/03/17 23:13 ID:+5aLOVRA
gtk+2.4揚げ

418 :login:Penguin:04/03/18 10:09 ID: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で…


419 :login:Penguin:04/03/18 20:39 ID:Jr1qezom
1つのラベルに複数行書くのはどうかと思うのだが…

420 :login:Penguin:04/03/19 09:40 ID:keCgvMYR
え、まじですか。そういう事だったんですか。しょぼーん。


421 :login:Penguin:04/03/19 16:57 ID:iSGoHu86
>>418

gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_RIGHT);

ということ?

422 :login:Penguin:04/03/21 08:38 ID:YeGS8vgU
gtkmm(gtkmmに無ければgtk2, gtk)でデータベースに接続するにはどうすればよいのでしょうか
ドキュメントを見てもそのような物は無さげです。
よろしくです。

423 :login:Penguin:04/03/21 09:44 ID:EQKLTR4/
>>422
データベースへの接続とgtkとは関係ない。

424 :login:Penguin:04/03/21 10:06 ID:YeGS8vgU
考えてみればそうですね
データベース側で提供されているライブラリを使うのですね
PHP見たいな感覚で、もしかしたら用意されているのかなぁ
と思ってしまいました


425 :login:Penguin:04/03/21 13:41 ID:jZhqbKqZ
>>424
スレ違い気味だけど、GNOME-DB Projectでlibgdaというライブラリを
メンテナンスしてるので、それ使うといいかも。ただC++ bindingsは
良さげなものがなさそう。libgdammは古いのしか見当たらないし、
Intiにはまだ入っていないし。

426 :login:Penguin:04/03/21 13:53 ID:jZhqbKqZ
そういえば、IntiのViewCVS見てみたけど、Inti-sourceviewと
Inti-GLが見当たらない(汗


427 :login:Penguin:04/03/21 18:08 ID:YeGS8vgU
>>425
ありがとうございます。
libgda見たけど英語の壁が(T_T)、使い方もわからねぇ
データベース側で提供されているAPI使ってみます。

428 :416:04/03/22 23:36 ID:t6oDHj5H
自己解決した。
pixbuf はアルファチャンネル持てました。

429 :login:Penguin:04/03/25 21:50 ID:JRhACcYQ
このスレみてる神さま、GTK2のぶあつい本をかいてください。おながいします。

というか、誰か執筆してるの?

430 :login:Penguin:04/03/27 01:01 ID:/QE+KWFL
このスレみてる神さま、Gtkmm2の本もかいてください。おながいします。

431 :login:Penguin:04/03/27 11:39 ID:8IBM4CMs
>>429,430
GGADで十分じゃん?

432 :login:Penguin:04/03/27 23:05 ID:ikpVq0kX
>>431
GGADて何ですかいのぅ
検索かけても、よう解らん

433 :login:Penguin:04/03/28 00:37 ID:ItaNUZEo
>>432
http://developer.gnome.org/doc/GGAD/ggad.html


434 :login:Penguin:04/03/28 01:44 ID:OsOSJi7C
ありがとう
でも、C++が好きなので・・・
gtkmmは思いっきりC++してる。
英語のチュートリアルと格闘中、少しずつ解って来た

435 :login:Penguin:04/03/28 01:58 ID:2rXU3IHl
GGADはGNOMEが1.0だったか1.2の頃のものなので内容が古すぎなのが難点。


436 :ヽ(´ー`)ノ ◆.ogCuANUcE :04/03/28 18:21 ID:p248nSiU
C++ 好きなら Qt の方が……(ゴホンゴホン


437 :login:Penguin:04/03/28 19:39 ID: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
に対する反論が聞きたいです。

# 前に書いたときは、両方に通じてる人が少ないのか、反応なしだったなぁ。

438 :login:Penguin:04/03/28 20:09 ID: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+はやる気が起きない...)


439 :login:Penguin:04/03/28 21:27 ID:JRuDttB9
>>438
なるほど、参考になったっす。

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

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

これも前どっかで書いたけど、Owenが以前言った(らしい)とおり、C以外の言語で開発したメジャーなGTKアプリがどんどん出てきて欲しいです。

440 :login:Penguin:04/03/28 22:31 ID: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を使っている。


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

gtkmm2はあまり使われていないのですね
日本語で解説したホームページが一件だけで悲しい。
ウイジットの大まかな解説だけでもあればだいぶ違うのに
英語のチュートリアルはなかなか大変

442 :login:Penguin:04/04/05 19:15 ID:y/kEmNyL
おたずねします。
Glib::ustringをstd::stringやchar*に変換するにはどうしたらいいのでしょうか
教えてください。


443 :login:Penguin:04/04/05 22:28 ID:y/kEmNyL
age

444 :login:Penguin:04/04/06 00:03 ID:GZxyDVkQ
自己解決しました
const char* Glib::ustring::c_str ( ) const
というのを見逃してました。

445 :login:Penguin:04/04/06 21:32 ID:gcfhfboL
GTK#って日本語通る?

446 :login:Penguin:04/04/06 22:08 ID:qtjhbKpC
ここ見にきてる人ってどんなアプリ作ってるの?

google で検索してみても gtk でアプリ作ってるっていう日本語のサイト
はあまりない気がするし・・。古いの多いし・・。

447 :login:Penguin:04/04/07 01:30 ID:fxxNRgLA
>>446
今、新しいgtkmm2で作ってる

448 :login:Penguin:04/04/09 09:22 ID:E9wQ2At3
http://www10.plala.or.jp/always/develop/


449 :login:Penguin:04/04/09 10:32 ID:Y4el8t2X
>448

ネタ的に古かったので削除していたのだが、一応、復活させときました。

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

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

> はgtkmmを使っている。

ダウト。

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

>>448
gtk2化。期待してます。

452 :login:Penguin:04/04/09 14:30 ID:Y4el8t2X
>>451

CxplorerのGtk2化が終わったら、それを題材にやろうかと思っています。

453 :login:Penguin:04/04/11 01:42 ID:F5VYGb6q
GtkTreeViewについてはまった点を書いておきます。

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

gImageViewのソースに助けられました。

454 :login:Penguin:04/04/13 00:48 ID:Fj29gwyS
gtk_file_selection_new で出てくるセレクタに g_locale_to_utf8 って噛ませられるの?
日本語ファイル名が使えないのをなんとかしたいんだけど。

455 :login:Penguin:04/04/13 08:08 ID:l2SC64Ga
fedra (UTF8環境)で、何もしなくても表示・選択できてます

456 :login:Penguin:04/04/13 21:03 ID:Fj29gwyS
>>455
それはシステム自体でファイル名にも UTF-8 使ってるからだと思います。
従来の EUC-JP な環境用になんとかしたいんですが、やはりアプリ側では
なんともならないのでしょうか?

457 :login:Penguin:04/04/13 21:35 ID:BLXcmJM7
>>454

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

やってみた?

458 :login:Penguin:04/04/13 22:18 ID:Fj29gwyS
>>457
できますた!アリガトン

459 :login:Penguin:04/04/16 16:40 ID:ZlX2qNUE
外部アプリケーションからGTKアプリケーションに対して
あるトリガを与えてやり、それを受けたGTKアプリが
自分の表示内容を変更ということをしたいのですが
どうすれば良いでしょうか?

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

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

どなたかお知恵をお貸し下さい。
よろしくお願いします。

460 :login:Penguin:04/04/18 13:25 ID:V2Ifc6oG
>>435
"NO STARCH PRESS RELEASES THE OFFICIAL GNOME 2 DEVELOPER'S GUIDE"
http://www.gnomedesktop.org/article.php?sid=1753

訳出キボンヌ。

461 :login:Penguin:04/04/18 19:03 ID:sSYSAFlA
>>460
GNOME2 がそろそろ広まってきたので、GNOME foundation でデベロッパー向けの
本を作るわ。という話。まずは英語版で、GLib や GTK、および GNOME の API
にるいてのものになるらしい。 ヽ(´ー`)ノワーイ

462 :login:Penguin:04/04/18 20:21 ID: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
に関しては一通り網羅しているのではないかと思われる。

463 :login:Penguin:04/04/29 00:23 ID:zLrJuv9t
(*^.^*)

464 :login:Penguin:04/04/29 13:25 ID:AQIokWzV
Linux上でWindowsバイナリをコンパイル出来ませんか?

465 :login:Penguin:04/05/03 21:07 ID:M0W8aY3U
関数 g_strdup_printf などは「必要なくなりしだい解放してください」と
指示されているのですが、自作関数中で その値を return で返したいときは
どのようにしたらよいのでしょうか?

466 :login:Penguin:04/05/03 22:08 ID:8XBp00PD
>>465

returnをもらった側で処置するべし。

467 :465:04/05/04 07:40 ID: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;
}


468 :login:Penguin:04/05/04 07:42 ID:gonpR3ix
        ああ、全角スペース使うんだったorz

469 :login:Penguin:04/05/04 10:11 ID:3Qvo40ij
>>467
いわゆるC FAQの7.23と7.24を読んだら?
(ちなみにglibのソースをみたらg_freeは標準のfreeをよんでるだけですた)

ついでに 1.30も読んだ方がいいかも


470 :login:Penguin:04/05/04 10:47 ID:g8hk2YfL
>>467
g_free(struct)でstruct->filenameのポインタは解放されるが、そのポインタの指し示す先までは解放してくれない。なので

g_free(struct->filename);
g_free(struct)
という手順を踏む必要がある。

471 :467:04/05/04 11:57 ID:gonpR3ix
>>469-470
ご回答ありがとうございます。

C FAQ 勉強になりました。さっそく struct の宣言の次で
  struct->filename = NULL;
と初期化するようにしておきます。

472 :login:Penguin:04/05/04 13:36 ID:A/bfn0Zs
どうせならglibのソースも読んでみるといいかも。

473 :login:Penguin:04/05/05 13:19 ID: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
のような感じに接続することはできないでしょうか?よろしくお願いします。

474 :login:Penguin:04/05/05 14:13 ID: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され
てしまっていることかもなー。

475 :login:Penguin:04/05/05 17:48 ID:LzNkuX/q
>>474
根本的に無理なわけですか・・・。
deprecate の件もイタいですが、当面の互換性を優先して
細々と工夫して使っていきたいと思います。
ご回答ありがとうございました。

136 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)