GTK プログラミング! ..
[2ch|▼Menu]
282:243
03/11/16 10:13 ttZTK75X
>>280
1.2には gtk_image_new_from_stock() ないと思うんですけど。

#include <gnome.h> 入れて、あとは
URLリンク(developer.gnome.org)
を見て適当にどうぞ。

283:login:Penguin
03/11/16 12:50 blYqkdPM
GTK+ FAQ 2003-11-05版 日本語訳
URLリンク(www.gnome.gr.jp)

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

さんきす!

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

285:280
03/11/17 18:26 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 aBzY07iI
>>285
-cはコンパイルするだけ。

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

URLリンク(www.gnome.gr.jp)
参照。

288:login:Penguin
03/11/18 22:39 /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 Wqf4YGJk
GtkScrollbar 使わずに GtkScrolledWindow 使う。


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


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

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

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

292:login:Penguin
03/11/24 19:03 ukNjiyv7
GTK+ FAQ 2003-11-20版 日本語訳
URLリンク(www.gnome.gr.jp)

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

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


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

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

295:login:Penguin
03/11/30 23:04 S9DI/WHa
>>294
URLリンク(developer.gnome.org)
URLリンク(www.gnome.gr.jp)

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


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


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

299:login:Penguin
03/12/01 01:23 D/d2pGGk
>>298
そりゃそうでしょう。gtk_main()ってメイン「ループ」だよ。
ここらへんが役に立てばいいのですけれど…。
URLリンク(www.gnome.gr.jp)

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

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

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

302:gnomeユーザー
03/12/01 23:19 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 RoaPDgRi
gnome_app_create_toolbar_with_data ()

304:login:Penguin
03/12/01 23:48 D/d2pGGk
>>302
gnomerが増えてうれしい限りです。
こちらはもう見ましたか?
URLリンク(www.gnome.gr.jp)

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

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

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

307:gnomeユーザー
03/12/02 01:05 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 qj4or6iA
>>301
ここですね。
URLリンク(www.kitanet.ne.jp)
わたしがやりたいのはソケットの待ちうけなので、ソケットディスクリプタに反応があったときに関数を呼び出すgdk_input_addのほうが適してるみたいです。
まず参考にして組んでみます。ありがとうございました。

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

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

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

310:login:Penguin
03/12/02 15:32 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 O3qA9IIV
一緒に渡したい値がいくつかあったので、textもまとめて一つの構造体にして
構造体のポインタを渡すことにより、無事にtextの中身を処理できるようになりました。

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

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

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

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


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


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

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

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

314:gnomeユーザー
03/12/03 23:30 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 OqkJIjUR
>>314
はあ?

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

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

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

すみませんでした。

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

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

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

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

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


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

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

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

324:login:Penguin
03/12/05 18:50 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 XPfatUb2
gtk と glib のデバッグ情報付きライブラリーをくっつけてみた。
pixbuf 読み込むための外部モジュールを読み込んでるあたりが、関係してる
ようだけど、俺のスキルでは読みきれません。

どなたか解説きぼん。

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



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

参考にしたサイト
URLリンク(www-6.ibm.com)

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

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

330:327
03/12/09 00:52 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);
としています。
URLリンク(member.nifty.ne.jp)
ここのテストコードのコピペでは動作しましたが、文字列格納部分だけこれに差し替えたところダメでした・・・

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

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


332:login:Penguin
03/12/09 01:28 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 0I2itgVb
ケコーン?(;´Д`)

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

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

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

336:login:Penguin
03/12/11 16:46 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 btGr7o25
どうできないか書いた方がいいんじゃない。
コンパイル通らんのか、反映されないだけなのかとか・・
それと、どういう目的でそういう値にしたいかも

338:336
03/12/13 12:37 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 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 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 t6DB0CFT
>>340
gtk1.2では
struct _GtkRequisition
{
gint16 width;
gint16 height;
};
でし。ソースみてけれ。



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

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

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

344:login:Penguin
03/12/20 15:53 GhCH1q1G
GTK+ FAQ 2003-11-24 版 日本語訳
URLリンク(www.gnome.gr.jp)

345:login:Penguin
04/01/12 15:15 TTcLcp55
GTK+ FAQ 2004-01-09 版 日本語版
URLリンク(www.gnome.gr.jp)

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

347:login:Penguin
04/01/22 18:28 KKqp1ICo
>>346
DUIね。
URLリンク(dui.sourceforge.net)


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

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

350:login:Penguin
04/01/25 16:47 X02pqnTw
GTK+ FAQ 2004-01-14 版 日本語版
URLリンク(www.gnome.gr.jp)

351:login:Penguin
04/01/25 17:00 KoO4Yggh
>>350
いつも乙。ChangeLogくらいつけてくれたらもっとうれしい人が増えると思われ。

URLリンク(mail.gnome.gr.jp)
前バージョンからの変更点は次のとおりです。

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 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 9amne98y
>>352
システムにja_JP.EUCというlocaleが存在しないからでは?
OSは何を使っている?

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

355:352
04/01/25 21:09 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 /R11UVAp
たしか BSD 系の OS は X11 の locale については XLocale が面倒見てたと思うので、
/usr/share/locale/* とはまた別になると思う。( Linux は glibc が全部やってる)

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

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

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

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

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

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

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


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

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

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

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


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

364:login:Penguin
04/01/30 00:14 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 Ribhh1SU
>>360
素の GObject 使うより、とりあえず gob 使ってみるとか。


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


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

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

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

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

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

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


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

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

371:login:Penguin
04/02/02 08:14 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 0Jt2V78i
エラーメッセージの通りじゃないの?
何に困ってるわけ?
# しかも "not command"って…

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

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

374:pao
04/02/04 18:33 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 6Frv3+5B
>>357
>ウィンドウからはみ出すような大きな画像をドラッグしてスクロールするように
自分も同じようなものを作ろうと思っていたので
まだこのスレを見ていてもしよければソースを見せてもらえないでしょうか?

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

377:login:Penguin
04/02/05 13:06 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 I9Rb8I9P
お陰様で余白の色が設定できました。
ありがとうございました。

379:login:Penguin
04/02/05 21:52 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 sPzuahHm
風博士作者によるGTK+に関するメモ
URLリンク(kazehakase.sourceforge.jp)

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

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

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

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


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

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

386:login:Penguin
04/02/07 17:20 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 Ei2GCPJI
>>386
ああ、思い出した。pangox backend消すって話があったわ。
freetype2+fontconfigを使うように書き直して突っ込めばいいんじゃない?

URLリンク(mail.gnome.org)

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

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

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

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

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

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

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


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

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

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


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

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


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

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

400:login:Penguin
04/02/17 23:24 ki2m0kcc
はっとく
URLリンク(www10.plala.or.jp)

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

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

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



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



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

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


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


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

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

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

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

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

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


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


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

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

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

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


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


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

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

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



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

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

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

418:login:Penguin
04/03/18 10:09 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 Jr1qezom
1つのラベルに複数行書くのはどうかと思うのだが…

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


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

gtk_label_set_justify(GTK_LABEL(label1), GTK_JUSTIFY_RIGHT);

ということ?

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

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

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


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

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


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

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

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

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

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

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

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

433:login:Penguin
04/03/28 00:37 ItaNUZEo
>>432
URLリンク(developer.gnome.org)


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

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


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


437:login:Penguin
04/03/28 19:39 JRuDttB9
>>436
前もどっかで書いたんだが、gtkmmに対するQtの有利な点て何?
独自のプリプロセッサ使ってる分汎用性低いし、STLとの相性も
gtkmmの方が良さそうな気が。

具体的にはオフィシャルFAQの
URLリンク(www.gtkmm.org)
URLリンク(www.gtkmm.org)
に対する反論が聞きたいです。

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

438:login:Penguin
04/03/28 20:09 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 JRuDttB9
>>438
なるほど、参考になったっす。

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

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

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

440:login:Penguin
04/03/28 22:31 2rXU3IHl
gtkmmがgtk+ほど使われない理由の一つは単純に入れるものが増えて
マンドラケってことじゃないかな。それはGARNOME使えや、ゴルァ!
とか言いたくもなるけど。

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

Inkscape
URLリンク(www.inkscape.org)
Gestalter
URLリンク(www.linotux.ch)
Passpartout
URLリンク(www.stacken.kth.se)

はgtkmmを使っている。


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

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

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


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

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

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

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

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

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

448:login:Penguin
04/04/09 09:22 E9wQ2At3
URLリンク(www10.plala.or.jp)


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

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

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

> Inkscape
> URLリンク(www.inkscape.org)

> はgtkmmを使っている。

ダウト。

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

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

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

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


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4040日前に更新/255 KB
担当:undef