GTK プログラミング!!at LINUX
GTK プログラミング!! - 暇つぶし2ch415: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化が終わったら、それを題材にやろうかと思っています。

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

URLリンク(cxplorer.sourceforge.jp)

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

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

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

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

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

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

やってみた?

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

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

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

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

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

460:login:Penguin
04/04/18 13:25 V2Ifc6oG
>>435
"NO STARCH PRESS RELEASES THE OFFICIAL GNOME 2 DEVELOPER'S GUIDE"
URLリンク(www.gnomedesktop.org)

訳出キボンヌ。

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

462:login:Penguin
04/04/18 20:21 hFjMsHHm
URLリンク(www.nostarch.com)
によると

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 zLrJuv9t
(*^.^*)

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

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

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

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

467:465
04/05/04 07:40 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 gonpR3ix
        ああ、全角スペース使うんだったorz

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

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


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

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

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

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

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

473:login:Penguin
04/05/05 13:19 LzNkuX/q
GtkItemFactory を使って
URLリンク(www.kitanet.ne.jp)
に例示される方法でメニューを作成したのですが、
以下のようなメニューのコールバック関数

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 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 LzNkuX/q
>>474
根本的に無理なわけですか・・・。
deprecate の件もイタいですが、当面の互換性を優先して
細々と工夫して使っていきたいと思います。
ご回答ありがとうございました。

476:login:Penguin
04/05/13 04:33 d+lRJudN
g_strsplitでseparatorに0x01を指定したいんですが、
どうやって表記すれば良いのでしょう。

g_strsplit(in,0x01,-1)や(in,"^A",-1)では
warning: passing arg 2 of `g_strsplit'
makes pointer from integer without a cast
と怒られてしまいます。

477:login:Penguin
04/05/13 07:38 NPGa5jCl
>>476

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

だと思うのだが・・。

478:476
04/05/13 14:03 d+lRJudN
>>477
ありがとうございました。
ばっちりでした。

って言うかC言語を基本から勉強しないとだめっすね。


479:login:Penguin
04/05/13 22:36 gc1S+I63
くだらない質問ですいません。
垂直スケールウィジェットを作成すると、上が最小値で下が最大値になるのですが、
一般的な感覚って下が最小値で上が最大値ですよね?
逆にすることはできないのでしょうか?

480:login:Penguin
04/05/13 23:09 btwft/BK
gtk_range_set_inverted()あたりは試した?

481:479
04/05/13 23:20 QSU6qp6Q
>480
ありがとうございます。
絶対逆にする関数があるはずだと思っていたのですが、探し当てることができずにいました。
たすかりました。

482:login:Penguin
04/05/16 23:55 irWPIKTr
リファレンスマニュアルにはシグナルの一覧とコールバックの型なんかは書いて
あるけど、そのシグナルがどんな時に出るか書いてないみたいです。
名前からわかるのはいいのですが、そうでない場合にシグナルがどんな時に出るかを
調べるにはどうすればいいんでしょう?

今は、全てのコールバック関数を書いてみて試したり、ソース読んだりしてますが、
遠回りしてる気がするんです・・。


483:login:Penguin
04/05/20 14:27 76aPgkOx
本当にそうだと思う
チュートリアルのサンプルプログラムを見て覚えるしかないのかなぁ


484:login:Penguin
04/05/20 23:23 jcLcMA6y
本当に本当にそうだと思う。
いま、gtkを使い始めたがそう感じたよ。
と言いつつも俺の探し方が甘そうなのでsage

485:login:Penguin
04/05/20 23:29 6iu3BFuD
ならキミが調べた結果を本にまとめて売り出せばウハウハなんじゃねーの?

486:login:Penguin
04/05/21 21:48 L27/iJm2
>>482
わからんシグナルって例えば何?

487:login:Penguin
04/05/31 11:40 fLelOzr3
GTK+(Glade)でGUIアプリを作成しています。

作成したアプリのアイコンを設定したいのですがどうすれば良いのでしょうか?
また、アイコンのフォーマットは*.icoとかをそのまま使えますか?

488:login:Penguin
04/05/31 16:46 0eRi0Au3
質問です。

GTK+ 1.2をつかっていろいろ試しているところなのですが、
ScrolledWindowをつかうとマウスでぐりっとやるとウィンドウがスクロールしてくれます。
でも、PageUpとかPageDownなどキー操作ではスクロールしてくれません。
どうすればいいですか?
どの辺を調べれば良いかキーワードだけでも教えてください。
よろしくお願いします。

489:login:Penguin
04/05/31 17:23 l37/WI1m
>>488
GtkWidget の key_press_event でどう?

490:488
04/05/31 18:31 0eRi0Au3
>>489

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

出来の悪い子でホントにごめんなさい(つдT)


491:login:Penguin
04/05/31 19:47 xnMi74Da
>>490
GtkAdjustment

492:488
04/06/01 12:17 b9B2HGyQ
>>491

ありがとうございます。
調べてみます。

493:login:Penguin
04/06/01 14:51 sWrdsXk5
Gtkに関して教えてください。

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

window = gtk_window_new( GTK_WINDOW_TOPLEVEL );↓
gtk_widget_set_name( window, "window" );↓
gtk_widget_set_size_request( window, 480, 280 );↓


494:login:Penguin
04/06/01 15:51 vmS5jmyS
>>493
検索してみたらその本は第2版が出ているようなので、実は古い版だったりしませんか?
gtk_widget_set_size_request()は1.0→1.2で削除されたような覚えがあるので、
gtk_widget_set_usize(), gtk_widget_size_allocate()あたりで代用してみるとか。

495:login:Penguin
04/06/01 15:56 f2RT8NBI
>>493
URLリンク(developer.gnome.org)

のページ内でその関数を検索するがよろし


496:493
04/06/01 16:41 sWrdsXk5
>> 494, 495

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

495さんに教えて貰ったページを見ると、
私の英語力ではgtk_widget_set_usize()を止めて、
gtk_widget_set_size_request()に変更しろと
書いてあるように思うのですが・・・

497:login:Penguin
04/06/01 18:53 +dAqMRbG
>>493
gtk_widget_set_size_request() は gtk+-2.0 で新しくできた関数。

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

統一しる! 変なこだわりがないなら gtk2 に・

498:488
04/06/01 21:30 6DgPX5ay
>>491

先生!出来ました!!
gtk_scrolled_window_get_vadjustment と
gtk_adjustment_set_value
ですね。ありが㌧。

499:login:Penguin
04/06/02 11:16 Ph5YiCQq
>>487
tar xzvf 素酢-x.x.x.tar.gz
cd 素酢-x.x.x/src
grep icon *

いちおう。

500:login:Penguin
04/06/06 03:39 7NlghlPT
500get

501:login:Penguin
04/06/06 04:10 XtA0mCdQ
3日と16時間23分、誰も取ろうとしなかった500ゲトおめ(w

502:login:Penguin
04/06/06 10:31 YeSwYVrz
GtkComboで今何番目のリストが選択されているかを知るにはどうすれば良いのでしょうか?

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

となっていて、2個目が選択されている場合に「B」という文字ではなく、
「2」という数値を取得したいのです。

503:login:Penguin
04/06/06 11:38 prFiANc0
GList の中から文字列を検索するのはどうよ?

GList は要素を指定してその位置を返す関数があったような気がする。

504:502
04/06/08 14:03 PyaDVVHB
レス遅れてすいません。

教えて貰ったことを踏まえて、
色々調べたり悩んだりしたのですが、
結局力業で処理してしまいました。

505:login:Penguin
04/06/23 23:57 MDTSH8fN
しばらく反応がないのでage

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

URLリンク(mail.gnome.org)


506:login:Penguin
04/06/25 22:53 s+nmqGmL
GTK+/GDKによるLinuxアプリケーション開発 Eric Harlow著に載ってるソースコードって
どこからかダウンロード出来るのでしょうか?
記載されてるページへいってもNOT FOUNDなもんで、、、

507:login:Penguin
04/06/26 02:07 ot6kutpS
>>506
URLリンク(www.seshop.com) の左側 「関連リンク」の
サンプルダウンロードからダウンロード可能

508:login:Penguin
04/06/26 02:25 ot6kutpS
こっちが本家のようです。

URLリンク(www.informit.com)

の 0735700214.tar.gz

509:login:Penguin
04/06/26 03:04 uwUdg/T9
>>507,508
DLできました。
有り難うございました

510:login:Penguin
04/07/01 14:49 2+uzpSCS
GTK+ 2.0 チュートリアル 2003-01-24 版 日本語版
URLリンク(www.gnome.gr.jp)

511:login:Penguin
04/07/02 20:41 ruSxXmGR
Labelの色を指定するのはどうすれば良いのでしょうか?
リソースファイルではなくてプログラム中で変更したいのです。
同じラベルに対してokなら青errorなら赤みたいに。

512:login:Penguin
04/07/02 20:49 EdA1krgC
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL(label), "<span foreground='red'>red</span>");
では?


513:login:Penguin
04/07/02 21:07 NFwwiccW
>>511

URLリンク(www.gnome.gr.jp)

514:511
04/07/02 22:06 ruSxXmGR
>>512

おおお、こんなに早くレスがつくとは思いませんでした。
gtk_widget_set_colormapあたりかと思って悩んでました。
ありがとうございました。

515:login:Penguin
04/07/17 01:44 gxRBMExw
gtk_signal_connect(GTK_OBJECT(window), "key_press_event",
GTK_SIGNAL_FUNC(KeyPress), NULL);

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

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

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

516:515
04/07/17 01:45 gxRBMExw

余計な閉じ括弧がひとつありますが、書き込み時に間違えて入力してしまったものです。
気にしないでください。

517:515
04/07/17 02:05 gxRBMExw
自己解決しました。
お騒がせしました。

518:login:Penguin
04/07/20 21:04 mCNuObfQ
X11^^^^

519:login:Penguin
04/07/21 13:46 q4gHD8Am
質問です。

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


520:login:Penguin
04/07/22 16:23 y/5s047B
>>519

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

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

起動から終了までの間にウィジットを破棄したりしないなら gtk_widget_ref
は不要とか言うのは無謀かな?よくわかってないけど。

521:login:Penguin
04/07/31 10:39 MPOS1TDH
Window全体に影を付けたいのですがパッチとかないですか?


522:login:Penguin
04/08/06 15:14 IQdNzkhX
1はいずこ...


523:login:Penguin
04/08/25 15:55 j+IRN/yq
GtkGLExtの日本語マニュアルは無いのか…まぁ訳すけれど…
作者日本人だよな。なんか複雑。

524:login:Penguin
04/08/25 20:34 i4j2Wyy5
>>523
日本語だと解説やマニュアルどころか、情報自体がないな・・・。
どころか、英語でも状況はかわらなさそう・・・。

使ってる人いるのか?と思ってしまう。

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

URLリンク(gtkglext.sourceforge.net)
どーでもいーがサイトにあるlogo.cは、インストールした中のExampleの
ソースのままなので、Exampleの下からlogo.hとかを持ってこないと表示できない。

526:login:Penguin
04/08/29 01:43 I8sIe2mZ
Gtkのイベント(シグナル?)についてお聞きしたいのですが、
独自イベントを作ってgtkのメインループの中でハンドリングするには
どのようにコーディングすればよいのでしょうか?

よろしくお願いします。

527:login:Penguin
04/08/29 18:32 0ci6kHoF
スクロールバーが付いたテキスト入力の領域を作るにはどうすればいいのでしょ
うか?
scrolled_window = gtk_scrolled_window_new(NULL, NULL);
でscrolled_windowを作り,
text = gtk_text_new(NULL, NULL);
でテキストウィジェットを作り,
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), text);
としてみましたが,スクロールバーが一杯になっていて全くスクロールできません.
URLリンク(www.gnome.gr.jp)
こことかを見てみましたが,一行入力のテキストエントリしか書いてなかった
のでわかりませんでした.この方法ではできないのでしょうか?初歩的な質問
ですみません.


528:login:Penguin
04/08/29 20:56 3dMcPoCy
>>527

gtk_container_add (GTK_CONTAINER (scrolled_window), text);



529:527
04/08/29 23:43 0ci6kHoF
できました!ありがとうございます.


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

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

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

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

gtk_widget_show(window);
gtk_main();
return(0);
}

531:login:Penguin
04/09/02 21:27 B1qwsflf
>530
Xlibをインクルードしていないじゃないか。
それではメッセージは受け取れないな。

532:login:Penguin
04/09/02 22:24 Iz+TckRx
>>530
window でマウスのイベントを取ってどうするんだ、というのは置いといて・・。

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




533:MyDoom被害経験者(当時は深刻)
04/09/06 00:41 vttGuatR
GtkとKDE/Qtでは、どちらがGUI programmingを始め易いんでしょうか?
コード量の少なくて済む方を教えてください。

534:login:Penguin
04/09/06 00:48 yRhIRqUd
>>533
お手軽なほうがいいってんならTcl/Tkやっとけ。コード量少なくてすむぞ。(藁
それぞれのサンプルコード見てこっちが性に合ってるな、とか、KDEメインに使ってるからQtとかないのかね。
どっちにしたってGUIプログラミングする分にはコード書くし、量的に差があるったって鼻毛みたいなもんだよ。;-p

535:login:Penguin
04/09/06 02:35 mXXgruj5
CがいいかC++がいいかで選んだら?

536:login:Penguin
04/09/06 08:07 j+KxsIhK
>>533
この質問、やたらあちこちで見るな。

537:login:Penguin
04/09/06 12:41 fIwSWiYt
サポートしてる言語がやたら多いのはGtk+。
C++, Python, Ruby, Perl, Scheme, Tcl, PHP, Java, C#, OCaml, Haskell みたいに
実用一辺倒から Research Language までいろいろ。
ただ完成度やドキュメントの整備状況は言語でまちまち。

Qt はその仕組み上そういうバインディングが作りにくいそうな。数少ない
バインディングも Qt2 にしか対応して無いのが多い。

538:login:Penguin
04/09/06 14:20 mXXgruj5
Gtk+はバインディングが充実してるものの情報が少ない、ともいえる。
また、CがデフォなだけにC++でさえ情報が少ないっつーのが難点。

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

両方やってる感じでは、言語で選ぶならC++かPythonならQt、それ以外
ならGtk+ってのが妥当だと思う。もちろんツールキットにあわせて言語
を選ぶなら好きにしてくれってことだが。

539:login:Penguin
04/09/06 16:38 iCHw81Ws
あと、あまり気にしないとは思うがシェアウェア化とか商用にするのなら
Qtはライセンス購入が必要になる(QPL)
厳密にはGtkもGPLなのでオープンソースが義務付けられたり、色々あるんだが…
オレ的ルールを使用する会社等は「ライブラリの改変をしなければ使いたいホーダイ」という有様。

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

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

Qt:
コアな研究者
大企業

が使用している。

あと勘違いしている人が多かったんだけれど、
どちらも英語の読解力は必要(Linuxをやっていたら常識とは思うが)
Gtkを表面だけ理解するなら日本語のドキュメントだけで事足りる。
Qtは最初から英語のドキュメントとにらめっこすることになる…かもしれない。

540:login:Penguin
04/09/06 17:03 X3pm9qox
Gtk+ は LGPL なので商用ソフトウェアも開発可能ですが

541:login:Penguin
04/09/07 22:03 /BPz6lrP
ウインドウをクリックしたらそのウインドウサイズを取得したいのですがどうすればできますか?

542:login:Penguin
04/09/07 22:13 CyRP0Tn+
>>541
クリックで起動されたコールバックの中で gtk_window_get_size

543:login:Penguin
04/09/07 22:43 /BPz6lrP
>>542
さんきゅー。できました!

544:login:Penguin
04/09/07 23:54 4Dablgl8
Gtkにラッパーとかかませて、UNIX(LINUX)とC/C++でWin32のようなプログラミングできるようにした環境って
ないのかな。
(つまりCreateWindow~CALLBACK WNdProc~GetMessageのような流れで作る環境)

545:login:Penguin
04/09/08 00:46 k2AJ7vTU
gtkmmでは不満?

546:login:Penguin
04/09/08 01:11 mJ44H/or
マルチプラットフォームを考えてるならwxWidgetかな。

547:login:Penguin
04/09/08 03:30 U5iHDCUQ
>>544
そりゃあ、無いでしょ。Windows上ですら、制作者はWin32 APIを直に使って
アプリケーションを書きたいなんて思わないんだから。


548:login:Penguin
04/09/08 03:56 TMOl9BnE
>>546
UNIX USERの特集で興味が沸いたんだけど、
他に書籍か雑誌の資料で良いのないかな?

549:login:Penguin
04/09/08 11:27 ktyLyrud
>>548
とりあえずム板ののひょーんスレでも覗いてみたら?

550:login:Penguin
04/09/08 15:23 wSTR0Xhj
GTK2のプログラムをライブラリ化しようとしてautomakeやautoconfを使ってconfigureを作ろうと
したのですが、
gtk/gtk.h: そのようなファイルやディレクトリはありません
というエラーがでます。自分の手でMakefileを書いた時にはこんなエラーは起きなかったのですが
Makefile.amやconfigure.acに何か特別に書かなければならないことがあるのでしょうか?

551:550
04/09/08 17:39 wSTR0Xhj
自己レス
できた。三時間ぐらい調べるのにかかってしまった。。。

configure.acに
AM_PATH_GTK_2_0(2.0.0,, [AC_MSG_ERROR(Test for GTK failed.)])
とか書いてやると、ライブラリパスやらヘッダパスやらがGTK_CFLAGSやGTK_LIBSに定義される。
それをMakefile.amに
INCLUDES = @GTK_CFLAGS@
LIBADD = @GTK_LIBS@
と書けばOK。GTKの他にgtkglextとかを使いたいのなら/usr/share/aclocalにあるgtkglext.m4の
しょっぱなにあるコメント欄を見て、GTKと同じようにマクロを呼び出してMakefile.amにパスを書き込む。

552:login:Penguin
04/09/08 18:16 ROF7GWcX
>>549 さんきゅ。前の名前であったのね。
|【GUIライブラリ】wxWindowsでのひょーん
スレリンク(tech板)l200

553:login:Penguin
04/09/08 19:55 aC9UlW7m
PKG_CHECK_MODULES() もあり。

554:546
04/09/09 06:22 krUgg33f
>>548
wxWidgetsのソースをダウンロードすると、
たくさんのサンプルがついてるので、それが結構参考になると思います。
中には古いのがあったりするのですが、大よその概念はつかめると思います。
米AOLのインストーラーとかに使われてて、Windows/Linux/Mac OS Xでいけてるみたいなので、
商用レベルにはなっていると思います。

555:login:Penguin
04/09/11 22:08:37 2jzJ2iMt
華麗に555げっと。

556:login:Penguin
04/09/15 00:00:14 XXdKtByK
widget やシグナルのことを知りたくて、The Glib Object system っていう
チュートリアルを読んでるんですが、くじけそうです・・。

gtk のチュートリアルと Glib Object systemのチュートリアルの間を埋める
ようなレベルの説明って、どこかにないでしょうか?
以前、GTKハッキングレポート っていうそれっぽいページがあったと思ったんだ
けど、今探すとなくなってるみたいだし・・・。

557:煽りイカ
04/09/15 02:24:11 S7MStXnB
Gtk+はANSI-C言語、QtはC++言語でライブラリが用意されていると言う
解釈でよろしーでしょうか?
オブジェクト指向で開発する場合には、後者の方が使い易いんでしょーか?

GtkのマニュアルをPC上で読んでいたら目眩がしてきたので、KDEのように
本になって出てないでしょうか?あったら買いたいです。

558:login:Penguin
04/09/15 03:05:40 VtuDal+L
>>556
URLリンク(web.archive.org)
まぁ自前のWidgetというかオブジェクトを作るとかしない限りこういうことは知らなくても問題ないよ。

>>557
英語でよけりゃ
URLリンク(www.nostarch.com)
が網羅的でよさそうな気がする。amazon.co.jp でも買えるよ。洋書版オライリーを扱ってる本屋にも置いてあるかもしれない。
Gtk+の書籍って日本語英語問わずチュートリアル的な本がほとんどなので、リファレンス的
なものとなるとこれ以外の選択肢はない。

559:556
04/09/15 17:57:59 XXdKtByK
>>558
いいサイトをありがとん。

>まぁ自前のWidgetというかオブジェクトを作るとかし
人のプログラム見てて、まさにこれをしてたので調べてます。
気がつくと gobject のソースの中で遭難中。


560:煽りイカ
04/09/15 22:46:48 S7MStXnB
>558
有り難うございます。

561:login:Penguin
04/09/30 18:40:47 ZNjn4MmY
質問です。

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

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

どちらにしても、この状態をなくすにはどうすれば良いのですか。
教えてください。

562:login:Penguin
04/09/30 18:48:03 SmK1xNom
>>557
Qtはいいぞぉ。あそこまで洗練されたライブラリは
そうそうあるもんじゃない。

563:login:Penguin
04/09/30 20:38:08 e5kfAN1B
>>561
何もしなくてもそんな状態じゃないけど…

564:561
04/09/30 20:50:54 9AhHdXeZ
>>563

書き忘れていたんですが、1.2の話です。
2系だと平気なんですね、きっと。

565:login:Penguin
04/09/30 22:16:53 e5kfAN1B
>>564
ウィンドウウィジットの GTK_CAN_FOCUS フラグを落す。

バージョンによって違うとは…。


566:561
04/10/01 10:45:06 TSUAcXDI
>>565

だめですた。 orz
でも、ありがとうございました。
もうちと、自分で試してみます。

567:login:Penguin
04/10/01 20:39:26 HB0CGb7q
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
GTK_WIDGET_UNSET_FLAGS(window, GTK_CAN_FOCUS);


568:login:Penguin
04/10/02 19:02:32 vwpDQWM7
電光掲示板みたいに文字が流れる
プログラム作りたいんですが
参考になるソースしりません?
バージョンはGtk+2.2 です

569:364
04/10/02 23:52:42 lvcJFuth
「電光掲示板みたいに」が、ドットもそれらしく表現ということだと
GdkPixbufあたりをつかって自前で画像を描画することになるかと。
いったん文字をDrawableに描画してgdk_pixbuf_get_from_drawableで
イメージを取得するとか。

570:login:Penguin
04/10/03 00:02:22 px/BonVe
>>569
ありがとうございます。
さっそく、それらしいソースあさってみますね。
描画ソフト関係をあされば大丈夫かな?

571:login:Penguin
04/10/03 22:52:41 b13aFboP
質問お願いします。

テキストエントリを使って、文字列を取り込みたくて
const char *str = gtk_entry_get_text(entry);
wcahr_t wstr[100];
mbstowcs(wstr,str,100);
としたのですが、テキストエントリに"aaa"と入力して取り込むと正常に
wstrの中身が"aaa"となるのですが、"あああ"と入力して表示させると
文字化けが発生します。
mbstowcsの返り値を調べると-1になっているので正しく変換できてないと
思われるのですが。
もしかしたら、テキストエントリは2バイト文字は扱えないのですか?
どなたか教えてもらえないでしょうか。

572:login:Penguin
04/10/03 22:59:18 NMHtHT7k
setlocaleとか実行してるか?

573:571
04/10/03 23:22:17 b13aFboP
>>572
はい、setlocale(LC_ALL,"ja_JP.eucJP")とやっております。

574:login:Penguin
04/10/03 23:37:40 NMHtHT7k
gtk_entry_get_textの返り値はUTF-8ではないかと。
それをEUCモードのmbstowcsで実行するからエラーになると。

setlocaleでUTF-8を設定するか(これは他の関数で面倒なことになりそう)
g_locale_from_utf8でUTF-8からカレントロケールに文字列を変換するか。

575:571
04/10/04 00:04:10 5lyoB5Xl
>>574
なるほど、そういうことでしたか。
私の作っているプログラムではeuc形式のファイルからの文字列の
読み込みもやらなければならないので、後者の方でやってみます。
アドバイスありがとうございます。

576:login:Penguin
04/10/04 00:14:40 1mgqe0pP
>>571
char *str = gtk_entry_get_text(entry);
char *locale_str = g_locale_from_utf8(str);
wchar wstr[100];
wprintf("%s", wstr);
wbstowcs(wstr, str, 100);

strの中身はUTF-8 まんまなので
まずiconvなりglibの文字列変換関数(実質iconvのラッパ)で適当に変換する

577:login:Penguin
04/10/10 18:05:08 zn9N0S8U
GTK+ 2.4.11 Released

578:login:Penguin
04/10/13 08:07:25 0RBMkwen
GLib リファレンスマニュアル (2.4.7版)
URLリンク(www.gnome.gr.jp)

GObject リファレンスマニュアル (2.4.7版)
URLリンク(www.gnome.gr.jp)

579:login:Penguin
04/10/13 08:50:09 fnawd3gt
gtkはCで書かなきゃいかんのがめんどい

580:login:Penguin
04/10/13 09:10:05 EBUt+ZnU
>>579
pygtkでも使え

581:login:Penguin
04/10/13 10:32:39 fnawd3gt
C++がいい

582:login:Penguin
04/10/13 12:16:04 i0k9Byx8
GTK+ - Language Bindings
URLリンク(www.gtk.org)

583:login:Penguin
04/10/21 22:11:24 nRPw1OZd
ウィンドウのタイトルを右クリックするとメニューが出てくるように、
ウィンドウマネージャで設定されています。
この時、gtkで一部のウィンドウのメニューを違うメニューにしようと思ったのですが、
_GtkWindowにも_GdkWindowにも操作できるような要素が見当たりませんでした。
どなたかメニューを操作する方法をご存知の方いらっしゃいませんでしょうか・・・


584:login:Penguin
04/10/22 22:33:32 eUY5i1x7
ウィンドウタイトルの所で出るメニューは、作ってるアプリの管轄外だと
思うんだけど。違う?

585:login:Penguin
04/11/07 00:08:40 A8KZGfM+
ウィンドウタイトルないウィンドウマネージャもあるしね。
もし可能だったとしてもアプリケーションが操作すべき場所じゃないと思う。

586:login:Penguin
04/11/09 02:11:59 R4ut9ZNk
Tutorialみてbutton押すとlabelの表示が変わるぐらいは出来るようになったのですが、

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

みたいに処理に従ってlabelを書き換えるようなのは、
どうすればいいのでしょうか?上のだと、表示されるのはtest2だけで……。

587:login:Penguin
04/11/09 06:18:13 t6yHsCJv
>>586
#!/usr/bin/env python

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

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

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

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

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

gtk.main()


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



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

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

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

label = gtk.Label(str(count))

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

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

gtk.main()


590:login:Penguin
04/11/09 07:53:30 R4ut9ZNk
>>587
うっと、その例だと、

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

と二度続けてset_labelしたときに順次表示したいという気持ちで。

591:login:Penguin
04/11/09 08:33:34 t6yHsCJv
質問の意図が分かった。
おそらくmainループに制御が帰らないから中間のset_textは
反映されないのだと思う。
mainスレッドと別スレッドでset_textすればうまくいくのでは。
def callback(label):
# bigin mainとは別スレッド
global count
label.set_text(str(count))
count += 1
time.sleep(1)
label.set_text(str(count))
# end mainとは別スレッド

592:login:Penguin
04/11/09 08:41:42 Zkj7YPcz
>>590
何をしたいのかもっと具体的に書いた方がいいのでは?

593:login:Penguin
04/11/10 05:52:19 ppRcKd5W
>>590
これでどう?
別スレッドによる方法は、よした。こちらの方が簡単。
要は、set_textしたあとmain_iterationを必ず呼ぶ。
下のコード参照。


594:login:Penguin
04/11/10 05:52:58 ppRcKd5W
>>590
#!/usr/bin/env python

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

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

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

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

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

gtk.main()


595:login:Penguin
04/11/17 04:22:22 YsKYfmVj
gtk2-perlいじってみようと思うんですが、
gtk_hoge は Gtk2::hogeと言うので安直に
Gtk2::set_locale();
してみたら
Usage: Gtk2::set_locale(class)
と出る。とりあえず
Gtk2::set_locale('euc-jp');
してみると実行出来るが文字化けなおりまへん。
すみまへんが、どなたかぷりーず救いの手。

596:login:Penguin
04/11/17 07:45:19 iY7axWLS
>>595
URLリンク(www.gnome.gr.jp)

597:login:Penguin
04/11/17 09:53:38 YsKYfmVj
>>596ありがとん。
use utf8;
足してutf-8で書くだけでしたか。
けどこりゃ面倒だな。。。

598:login:Penguin
04/12/03 19:00:50 GiyN6pXi
GTK+ 2.4.14 Released

599:login:Penguin
04/12/04 18:37:51 6LgKh+yC
厨房な質問ですが教えてください。
テキストボックスに日本語入力できません。
日本語の文字列をコピペしても文字化けします。
gtk_set_locale(); の他に
setlocale(LC_ALL,"ja_JP.eucJP"); なども試してみましたが効果ありませんでした。
gtk+ 1.2 なら問題なく日本語が通るのですが、gtk+ 2.4では何か特別なことをする必要があるのでしょうか。
テキストエントリーなら普通に日本語入力できます。

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

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

FAQに違いないと思うのですが、どう調べても解決できません。
#メモ帳程度ならすぐできると思ったのですが、そんな甘いものではないのですね。

600:login:Penguin
04/12/04 18:59:58 VErRj59z
>>599
URLリンク(www.gnome.gr.jp)


601:599
04/12/04 21:48:41 6LgKh+yC
text = gtk_text_new(NULL, NULL);
ではなく、
text = gtk_text_view_new();
でやってみたら、日本語が使用できました。
gtk_text_new はもしかしてobsolete ?

>>600
参考になりました。(難解すぎてあまり理解できませんでしたが)

602:login:Penguin
04/12/04 22:01:56 9FhprA6L
マニュアル読みながらやってないのか? 1.2 から 2.0 になる時にけっこう
変わってるよ。

Warning

GtkText is deprecated and unsupported. It is known to be buggy. To use it, you must define the symbol GTK_ENABLE_BROKEN prior to including the GTK+ header files. Use GtkTextView instead.

603:login:Penguin
04/12/08 13:42:17 s2a0TgVZ
質問です。
画像ファイルを表示させたいのですが、pgm形式の出力の方法がわかりません。
xpmしか出力できないのでしょうか?

604:login:Penguin
04/12/08 17:44:12 RUzeNZBB
>>603
>xpmしか出力できないのでしょうか?
gdkpixbuf でたくさんのフォーマットに対応してるが、 pgm が対応してるか
どうかはしらん。

605:login:Penguin
04/12/09 01:42:01 8bxaruuu
GTKを使ったアプリケーションを作ってみたいと思っているんですが、
おすすめの入門書などはありますか?
当方、VisualStudio+C言語+Win32APIならたいていの物は作れる程度の知識ですが、
Linuxは初心者です(´・ω・`)ショボーン

>「GTK+・GDKによるLinuxアプリケーション開発」
近所にこんな本があるんですが、どんなもんでしょうか。

606:login:Penguin
04/12/09 02:28:34 9Rw7z+2N
最新のGTK+に対応してる本がよさげ。

607:login:Penguin
04/12/09 04:27:08 R51KLcmk
>>606
Gtk2に対応してる日本語本ってあるの?
あるなら折れも欲しい。

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

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

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

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

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

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

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

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

URLリンク(win2linux.sourceforge.jp)

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

宜しくお願いします。

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


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

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



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



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

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

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

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


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

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

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

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


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


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

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

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

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

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

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


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

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


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

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


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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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


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

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

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


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

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

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

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

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


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

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


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

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

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

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

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


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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);

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

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

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

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

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

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

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

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

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


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

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

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

質問内容

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

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

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

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

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

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

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

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

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

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


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

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


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

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



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

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

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

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

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

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

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

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

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

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

gchar* gtk_combo_box_get_active_text (GtkComboBox *combo_box);

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

環境:FreeBSD5.4 gtk+2.6.10

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

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

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

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

宜しくお願いします。

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

1 2 3 4 5 6 7 8 9
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890


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

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


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

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


因に SuSE 10.0 使ってます。


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

理屈はわからないけど

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

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

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

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


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

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

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


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

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

リファレンス嫁んorz


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

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

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


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

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

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


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

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

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

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


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

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


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


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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

よろしくお願いします

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

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


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


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

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

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

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

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


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

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


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


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

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


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

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

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


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

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

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

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



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

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

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


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

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

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

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


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