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

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を使ったやつだな。安定してるのかな?



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