GTK+プログラミング ..
[2ch|▼Menu]
90:login:Penguin
08/10/19 18:09:25 ZgmXTrMt.net
今、ruby-gtk2を使って簡単な画像ビューワを作っています。
デスクトップにフィットさせて表示(大きい場合は縮小表示)させたいのですが、
パネルとかウインドウマネージャの装飾を考慮して、画像を表示できる最大の
サイズを知りたい場合、どうしたら良さそうですか?
探してはいるものの、なかなか良さそうな手が見つからないです。


91:login:Penguin
08/10/19 19:54:56 3IMHrYAs.net
gtk2hsにトライしたが、一部関数が無くてダメでした。まあこれからか。
erlgtk使いの人とかどう?

92:login:Penguin
08/10/19 20:28:12 Su20jt3Y.net
>>90
ウィンドウを maximize した時にでるシグナルの中でウィンドウ
サイズを取得して、画像のサイズを拡大縮小とか。

これだと、ウィンドウが出てから画像が出るまで、間が空くか?


93:90
08/10/20 00:25:14 s5JT3EOQ.net
>>92
レスありがとうございます。
やっぱり、そういうちょっと強引な方法しかないんですかね。
せっかく教えてもらったんですが、ちらつきそうなので、できれば避けたいです。
今は、スクリーンサイズを取ってきて適当なサイズで妥協しています。

何かあっても良さそうなのになぁ。。。


94:login:Penguin
08/10/20 00:34:47 upSqhUNX.net
>>93
"expose-event"シグナルかな、rubyであるのかは分からないけど

95:login:Penguin
08/10/20 02:08:26 RwkYMDWR.net
>>90
昔SunのJDKのソースを読んでいたことがあるんだが、当時のJDKの実装では、
1) 使われているwindow managerを特定
2) 有名(あるいは標準的と言うべき)なwindow managerであれば、
  それぞれのwm固有の枠部分の装飾手段(Windowの重なり具合など)
  の知識を基に、今有るウィンドウの親を手繰ってwm由来部分を調査し
  wm由来部分のサイズを決定
3) 知らないwmは非サポートってことで適当に……
なんてことをしていた

ここ数年で提案されてない限り、良い方法はないと思われ

96:login:Penguin
08/10/20 05:08:18 mB1jem32.net
実際にmaximizeするしか知る方法はないだろう?
強引というならそれをやる前に知ろうとする方が強引のような。
それにGTK+はデフォでdouble-bufferedだから何も考えなくてもちらつきしない。

97:login:Penguin
08/10/20 07:37:12 DDLH0hrK.net
>>96
> 実際にmaximizeするしか知る方法はないだろう?
> 強引というならそれをやる前に知ろうとする方が強引のような。

同意。それ以外のやり方してるソフトなんてないのでは?

98:90
08/10/20 21:27:41 s5JT3EOQ.net
レスありがとうございます。

>>94
ごめんなさい、"expose-event"シグナルはrubyでもあるのですが、94さんの意図が
よく理解できませんでした。

>>95
詳しい情報ありがとうございます。
Sunの人でさえ、そういう実装をされているくらいだから、簡単な方法は無さそうですね。

>>96,97
そんなことを簡単に知ろうという方が間違いですかね。
ちなみに、ちらつくと書いたのは、実際maximizeしてからサイズを取ってくるとすると
画面に表示することは避けられず、一瞬maximizeしたウインドウが見えてしまうという
意味で書きました。
まだGTKのシグナルがどんなタイミングで発行されるのか、よく理解できていないので
誤解しているかも知れませんが。


99:94
08/10/20 23:02:02 upSqhUNX.net
>>98
すみません、>>90さんの要求を正しく理解していませんでした。

最大化できるサイズを求めるというのではなくて、あくまでアプリ側で必要な
サイズ(GtkRequisition)と、実際に獲得できたサイズ(GtkAllocation)
で実装するのはいかかでしょうか?

100:login:Penguin
08/10/21 02:53:13 5A1QOuH6.net
>>98
> まだGTKのシグナルがどんなタイミングで発行されるのか、よく理解できていないので
> 誤解しているかも知れませんが。

どう考えてもこれがガンだろ。呆れた。

101:90
08/10/21 23:21:31 rjo5j4+k.net
>>99
色々、考えて下さり、ありがとうございます。

>>100
まあ、そう言わんで下さい。

皆さんに教えて頂いたことをヒントに、時間が取れるときに
もっと勉強しようと思います。
レスをしてくれた方々、ありがとうございました。


102:login:Penguin
08/10/22 01:14:52 1Hw6zT+4.net
複数のファイルをユーザーに選択させ、そのファイルのパスをリストなり
配列なりで得たいと考えています。

調べてみたところ GtkFileChooserDialog は単一ファイル|ディレクトリ
にしか対応していないようなのですが、上記のような機能は自前で実装す
るしかないのでしょうか。

103:login:Penguin
08/10/22 01:40:40 TbaNGOlU.net
>>102
gtk_file_chooser_set_select_multiple()
gtk_file_chooser_get_filenames()
の組み合わせじゃ駄目なのかい?

104:login:Penguin
08/10/22 10:25:49 ApulL45s.net
>>103
ありがとうございます。完璧に私の調査不足でした。
教えていただいた方法でいけそうです。



105:login:Penguin
08/10/25 10:14:11 dTl3thQm.net
glade3の最新版にしたらいつの間にかGtkBuilder形式でも出力できるようになってたよ。
さすがにウィンドウ別に分けて出力はしてくれないけど。

106:login:Penguin
08/10/25 15:02:49 AakIN1gI.net
PyGTKでランチャー作ってます
ホットキーから呼び出すにはどうすれば
やはりgconf弄らないと無理なのでしょうか。

107:login:Penguin
08/10/25 17:13:44 zQTl7fNi.net
どのウィンドウがフォーカスされている状態でもキー操作で呼び出したいってこと?
そりゃXならウィンドウマネージャの仕事だ。

108:login:Penguin
08/10/25 17:58:26 AakIN1gI.net
>>107
そうです
どんな操作してるときもホットキーから呼び出したいので
PyGTK以外の言語は全く解らんのですがXLibあたりですかね
これさえ備えられればほぼ完成なんです
ありがとうございました。もう少し調べてみます

109:login:Penguin
08/10/25 18:06:09 e1TliF6D.net
>>108
それ俺も知りたい。分かったら教えてくれ。

110:login:Penguin
08/10/25 18:20:20 zQTl7fNi.net
>>108
ウィンドウマネージャにショートカットで任意のプログラムを呼び出すような
親切機能がついていればできる、なければ基本的にできない。

111:login:Penguin
08/10/25 21:12:08 UmyLPmdd.net
こんなんでどうよ

#!/usr/bin/python
import gtk, gobject
import Xlib, Xlib.display, Xlib.X, Xlib.XK

win = gtk.Window()
win.connect('destroy', gtk.main_quit)
win.show_all()

display = Xlib.display.Display()
root = display.screen().root 
root.grab_key(
        display.keysym_to_keycode(Xlib.XK.XK_a), # keycode
        Xlib.X.ShiftMask | Xlib.X.ControlMask,   # modifier
        True, Xlib.X.GrabModeAsync, Xlib.X.GrabModeAsync)
display.sync()
def check(*args):
    ev = display.next_event()
    if ev.type == Xlib.X.KeyPress:
        print (ev.detail, ev.state) # (keycode, modifier)
        win.present()
    return True
gobject.io_add_watch(display, gobject.IO_IN, check)

gtk.main()

112:login:Penguin
08/10/26 00:16:49 cuuCZE3q.net
>>109-110
自分が得た情報はもちろん共有しますよ
ウインドウマネージャってubuntuだとcompizでしたっけ?
WindowsだとpyHookなんてのがあって楽そうなんですが
>>111
走らせてみました
小さなウインドウは出ましたが、こちらではキーに反応しません
a, <shift>a, <ctrl>aはダメでした。他のキーですか?

個人的にはこの辺が怪しいと思っていたのですが
URLリンク(faq.pygtk.org)
URLリンク(manpages.ubuntu.com)
URLリンク(xjman.dsl.gr.jp)

PyGTKって日本語のドキュメントが少ないと思っていたけど
それ以前にドキュメントの絶対数が少ない気がしてきた

113:login:Penguin
08/10/26 00:20:34 dWWl1VvV.net
>112
xbindkeysのソースが参考になるかもね。
でもgdkとgtkだけで済ませたい気もする。

114:login:Penguin
08/10/26 01:05:43 w1SELDT+.net
>>112
<shift><ctrl>aです

115:login:Penguin
08/10/26 02:08:20 cuuCZE3q.net
>>113
これCですか?現時点では意味不明でした。
やはり最低でも2言語くらい習得しないと細かい所が弄れませんね。
>>114
それも試してみましたが何故が無反応でした。
さらに一週間くらい調べてみます。

116:login:Penguin
08/10/27 22:08:10 hjSX5CJk.net
glade3といえば日本語メッセージの翻訳が迷訳てんこもりで参った記憶しかないぞ。
ありゃGTK+プログラミングろくに理解してない奴が訳してるんだろうなあ。

117:login:Penguin
08/11/02 17:56:33 8LwLmm0R.net
出版界を見ると、GTK+よりもQtの方が元気があるように見えるんだけど、
ユーザ数ではどうなんだろう。日本でも最近出てる本はQtのだよね。

118:login:Penguin
08/11/02 18:07:31 f8W85vrO.net
出版ではQtだが、実際にはgtkのほうが人気がある。
ユーザ数でもおそらくgtkのほうが多い。
なぜQtの本のうほうが多いのかは謎。

gtkの本ってなんであんなに少ないんだろうか。

119:login:Penguin
08/11/03 12:00:13 zVTwcnmi.net
一つの指標として
gnome vs kde
URLリンク(www.google.co.jp)
gtk vs qt
URLリンク(www.google.co.jp)
ちなみにノルウェーではgnomeの人気が高いw

120:login:Penguin
08/11/03 12:19:36 f8RoxdRr.net
ネット上のドキュメントが充実してるからとか? 洋書も最近のはQtの
が多いよね。

日本GNOMEユーザー会とKDE ホームページ(日本KDEユーザ会)の
サイトを比べてみると、一見KDEの方が勢いがあるように見えるけど、
リンクのメンテがボロボロだな。

121:login:Penguin
08/11/03 12:24:19 f8RoxdRr.net
>>119
なんかKDE/Qtのが優勢な感じw

122:login:Penguin
08/11/03 13:56:17 7ydUuqhV.net
>>119
一部Quicktimeだったりしないか?
URLリンク(www.sophia-it.com)

123:login:Penguin
08/11/03 22:01:57 57+pbs2m.net
Ubuntu人気があるからgnomeのほうがユーザ多そうだけどな、実際どうなんだろな。
あと他言語のバインディングではgtkのほうが優勢な気がするんだがどうなんだろ。
QtHaskellとか使ってる人いる?俺はgtk2hs使ったけど使い物にならなかったよwww必要関数無くてwwww。


124:login:Penguin
08/11/03 22:39:37 iQkJfTcr.net
Ubuntu, Fedora, Debian, Vine(笑)とか標準ではたいがいgnomeだからね。
やっぱシェア(数)はやっぱgnomeが多いんじゃないの?

KDEはOpenSUSE, Mandriva(turbo)とか。
まぁ前出のgnomeトリはたいがいKDEの派生つーかブランチもあるし
入れ替えたって(共存させたって)いいんだけどね。


125:119
08/11/03 23:02:36 zVTwcnmi.net
>>122
一部ノーム(地名)だったりもするぜ

126:login:Penguin
08/11/03 23:40:33 CkL33X1G.net
ユーザーはともかく、クリエータはGTK(GNOME)の方が多いだろう
GTKがLGPLなのに対して、QtはGPLか最近のtool kit としては高額の
有償ライセンスかのいずれか
利用できる人間は、どうしても限られてくる

127:login:Penguin
08/12/17 15:27:32 KRTiKwTi.net
欲しいソフトがないから自分で作ろうと思う。
だが、どの言語もソースは読める程度、簡単な改造が出来る程度のレベルです。
だが、一からあのソフトを作りたい・・・。

そんな俺はどのようなGTK開発環境が良いとおもいますか?
今考えているのは、
Pygtk + grade の組み合わせです。
これを薦めるハッカーが多いのと、Pythonという言語がしっくりくるからです。

ほか、初心者におすすめのGTK開発環境がありましたら教えて下さい。

128:login:Penguin
08/12/17 18:01:23 lMmUsPdE.net
まあそのへんより簡単なのは無さそうだよね。自分はRubyが好きなので
Rubyで勉強してるけど。

129:vte
08/12/17 19:59:56 4+kAQRIa.net
vte-0.17.4 を ./configure && make && make install してみたのだけど, 画面端で漢字入力を始めると, 折り返しも延長もしてくれず, 入力文字が見えなくなる.

|                              ▽かんじに|

のように. でも次のようになってほしいのだけど,

|                               ▽かんじに|
|ぅりょく                                 |

とか. gtk-demo の text-widget の multiple views などはうまくいってます. .gtkrc-2.0 とかに何か設定が必要でしょうか?


130:login:Penguin
08/12/22 09:25:07 Z0zqkFax.net
>>127
GTKmm

131:login:Penguin
08/12/23 19:56:34 3l8ZCr+m.net
ところでpygtkって遅くね?
Core2Duoのマシンでボタンクリックしてからレスポンスが10秒後とかザラなんだが。
gtkmmとか生のgtkのほうがいいんじゃね?

132:login:Penguin
08/12/23 20:16:59 LQjeTU8C.net
gtkmmは地獄。

133:login:Penguin
08/12/23 21:14:13 2F34Up+Q.net
レスポンスが10秒後ってなんか間違えてるんじゃ

134:login:Penguin
08/12/23 21:25:44 ae4qT9Yd.net
PyGTK + glade3 の日本語チュートリアルのようなものありませんか?
この辺りが翻訳されているのですが、glade3では動きませんでした・・。

URLリンク(po3a.blogspot.com)
URLリンク(po3a.blogspot.com)

Rubyで勉強したほうが情報多い?

135:134
08/12/23 21:34:16 ae4qT9Yd.net
こちらのサンプルは PyGTK + glade3 動きました。
URLリンク(palepoli.skr.jp)

でもここから先が進めません。
PyGTK + glade3 で勉強になるサイトがあったら教えて下さい。
英語でもいいです。宜しくお願いします。

136:login:Penguin
08/12/24 06:59:19 aQCa49jr.net
pygtkのことは知らないんでよくわからないけど、これとかは?
URLリンク(www.micahcarrick.com)
これでだめなら、ウェブ全体からググれ。

ちなみにruby用の日本語チュートリアルはglade2使用。
URLリンク(ruby-gnome2.sourceforge.jp)

137:134
08/12/24 09:50:41 hiOOXDc5.net
>>136
ありがとうございます。
参考になりました。

138:login:Penguin
08/12/24 11:47:11 j0KWvBZ+.net
C++/GTKで書いたプログラムを
wxPythonで書き直したら
wxPythonで作った方がサクサク速く動いた orz


139:login:Penguin
08/12/24 14:47:02 gkyqeyAR.net
windows上か?

140:login:Penguin
08/12/24 15:36:14 EbVd5uRZ.net
PHP-GTKってどうよ?

141:login:Penguin
08/12/26 04:24:16 0/dGPTTl.net
そんなのあるのか。今度試してみよう。

142:login:Penguin
08/12/26 23:23:17 Z/96o+8l.net
いまさらかもしれないが時代は今CAIROだということに気づいた

URLリンク(journal.mycom.co.jp)

プラットフォームやハードウェアに依存せず精密な描画が可能になるらしい

CAIRO使えるのはGTK+2.10から上のver
誰か使ってる人いる?

143:login:Penguin
08/12/27 00:05:03 7rBKxqYP.net
時代を読み違えてるな。
ベクトルベースとか3DデスクトップとかVistaとともに沈んだよ。
PC肥大化狂騒曲は終わりだ。Qt4も総スカンだし

144:login:Penguin
08/12/27 06:06:34 B/jsjdnT.net
いやでも実際有名どころで使われてるわけだし

それに素のGTKのみで描画するより処理速度は速くなるし,
プラットフォーム間の互換性も高まると思う

別に肥大化してるわけじゃないしVistaや3Dデスクトップとはちょっと違うだろう

gtkがcairoをサポートしてまだ日も浅いしむしろ今からが勝負

145:login:Penguin
08/12/27 12:41:23 6Qaozst9.net
ふつーに使ってる。フォントの取り扱いがプラットフォーム中立にできればなおいいのだが。

146:login:Penguin
08/12/27 13:12:28 IS4Ugvd/.net
Cairo のフォント描画は Windows 上だとジャギが目立つ。Linux 上では問題無し。
何か設定がいるのかしら。

147:login:Penguin
08/12/27 20:23:11 B/jsjdnT.net
普通ベクトル・グラフィクスにジャギーは発生しない

なにか間違ってることは間違いない

148:login:Penguin
08/12/27 20:43:22 6XGFKeOe.net
>>144
速くなるって、なんかベンチの結果でもあんの?
skiaを用いているgoogle chromeのcanvasが爆速という話なら聞いたことがあるが

>>146
普通にcairoをコンパイルすると、Windowsではcairo-win32-font.cが使われる
これは普通にGDIを用いているので、普通のWindowsアプリのフォントの
レンダリングと全く同じ結果になる
一方LinuxではFreeTypeが使われる

149:login:Penguin
08/12/27 21:26:06 mPWXe8Aq.net
a

150:login:Penguin
08/12/27 22:20:00 B/jsjdnT.net
>>148
firefox2とfirefox3の速度比較は
確証を裏づけるものにはならないか?

一般的にラスター描画よりベクトル描画の方がデータ数が少なく、描画速度は速いと言われているし


ところでskiaて何?

151:login:Penguin
08/12/28 10:40:10 xJesvUS3.net
mexo
hanaxo

152:login:Penguin
08/12/28 11:37:59 5NoVhFnO.net
>>145-146
フォント描画にはPangoを使えばいいんじゃないの?


153:login:Penguin
08/12/29 18:19:47 qsmFI5vI.net
>>150
URLリンク(www.hyuki.com)

skiaは
google chrome skia
あたりでぐぐれ

154:login:Penguin
08/12/29 22:41:52 mdZmAujL.net
>>153
これはハードウェア実装のOpenGLによるベクタ描画と
ソフトウェア実装のcairoによるベクタ描画の実験結果だな...

ハードウェア実装だとプラットフォームやハードウェア環境の影響を受けるが
ソフトウェア実装より格段に速度を上げられる

だからこそcairoにもOpenGLによるハードウェアアクセラレーションのサポートがあるわけだが...

でもビデオカードやらのGPU性能依存というのは
それこそ3DデスクトップやらVistaやらのPC肥大化狂騒曲じゃないのか?

ハードウェア実装を否定してるわけじゃないが
これはアリなの?
そこのところどうなんよ?

155:login:Penguin
08/12/29 23:04:54 qsmFI5vI.net
>>154
んー
それを言うなら、GDIだってハードウェアアクセラレートされていて、
GDIがソフトウェアでエミュレートされるようになったWindows Vistaでは
実際描画が遅いのなんのと騒ぎになっていたわけだろ

cairoは、下のレイヤの上に乗っかって、アンチエイリアス描画を行うから、
一般的には下のプリミティブをそのまま用いるのではなく、
pixmapの上にソフトウェアレンダリングを行う形になる
だから結果は綺麗だが、それが高速化につながるという意見はさっぱりわからんね

皮をかぶせれば、ポータビリティは高まるかもしれんが、速くなるわけがないよ

個人的にちょっと試した限りでは、少なくともWindowsで普通にコンパイルした
cairoは、遅いといわれるGDI+よりもまだ遅いぐらいだ
同種の競合ソフトのaggと比べても、やはり遅いな

156:login:Penguin
08/12/30 02:24:04 chmi7ht1.net
cairoの下のレイヤって何?
cairoはGTK+/GDKやXlibの上にはない
そもそもpixmapのようなラスタデータ上にベクタデータを
ラスタライズしても綺麗な結果にはならない


Vistaが重い一番の理由はVistaのコアが4Gとかのせいじゃなかったか?

157:login:Penguin
08/12/30 03:17:23 xp1VmVKW.net
>>156
> cairoの下のレイヤって何?
> cairoはGTK+/GDKやXlibの上にはない

????
cairoは何らかのバックエンド(サーフェス)の上で描画を行うわけだが
一体何を言ってるんだ

> そもそもpixmapのようなラスタデータ上にベクタデータを
> ラスタライズしても綺麗な結果にはならない

ビットマップディスプレイに、ラスタデータ以外をどうやって描画するんだ?
ベクタグラフィックスだろうが3Dだろうが、ビットマップディスプレイに
描画するときは、*必ず*2Dラスタデータに落とす(=レンダリング)
しなければ、描画のしようがないのだが、そんなことも知らないのか?

レンダリングをソフトウェアで行うか、ハードウェアで行うかは
実装の問題だがな

158:login:Penguin
08/12/30 03:38:55 F99IYk+S.net
他の領域に落としたらそれが遅くなる原因だしな。
絵の処理なら、cpuから見えるメモリ領域のビットマップに転送が遅くなる原因のno1。
cairoは、その辺がすべてバックエンド任せでさらにメモリ上でいじるので、
普通に使うと遅いソフト(cpu)処理の部類に分類される。

てか、cairoの中身でも描画なんかは一切触れずに、cairo_surface_tで共通化とでしか使ってないと思うんだけどどう?

159:login:Penguin
09/01/04 04:31:10 OlEL3WLc.net
待てばcairoの日和あり

160:login:Penguin
09/01/04 09:09:03 Ls6s3Y+a.net
で?

161:login:Penguin
09/01/08 14:49:56 25IYEPJi.net
初めて拝見するが、
ここの良スレ度にびっくりした。

162:login:Penguin
09/01/11 10:45:28 G50GhRZF.net
「右」キーにアクションをバインドしたいんですが、どうすればできますか?
今は仕方なく
gtk_widget_add_accelerator (foo, "activate", accel_group,
GDK_Right, GDK_MODIFIER_MASK,
GTK_ACCEL_VISIBLE);
のようにしてますが、実際は GDK_MODIFIER_MASK 無しで「右」キーのみ
で作用するようにしたいんです。

163:login:Penguin
09/01/12 22:30:23 Ap11sUPz.net
ところでさ、なんでGtkTreeViewColumnに
gtk_tree_view_column_get_widthはあるのにgtk_tree_view_column_set_widthはないの?
なんでカラムの幅を非常にまわりくどい方法でセットする事しかできないんだろう。

164:login:Penguin
09/01/13 21:49:47 4aexh9M5.net
バカ除けのため

165:login:Penguin
09/01/14 06:35:18 ON4hZt79.net
>>164
なにそれww

166:login:Penguin
09/01/14 10:40:30 hbYm8nJe.net
>>163
他のコラムに対する影響を考えないといけないからでないの? 推測だけど

167:login:Penguin
09/01/19 07:00:18 Zkvelgln.net
どうすればtoolbarを縦に位置させることができますか?


168:login:Penguin
09/01/19 14:58:09 rA2FfI0+.net
ディスプレーをガタンとですね

169:login:Penguin
09/01/19 15:05:50 Zkvelgln.net
>>168
???

170:login:Penguin
09/01/20 05:28:26 N3/xwV6v.net
>>167
D&D

171:login:Penguin
09/01/20 07:38:29 eUZx4J2+.net
>>168
ワロタ

172:167
09/01/21 13:15:59 cRTwudVb.net
>>168
真面目に答えていただけませんか?

>>170
詳しく教えてください。


173:login:Penguin
09/01/21 16:47:39 oi/rQuGm.net
>>172
自分は真面目に調べたのか?

174:login:Penguin
09/01/21 22:48:05 zay9Vio9.net
>>167
まず言語は何でプログラミングしてるの?
個人的には盛り上がって欲しいスレではあるのだけれど。
CでガリガリGTKアプリ書いてる人あんまりいないのかな…

175:167
09/01/22 01:25:28 qMqmINP5.net
>>174
C でやってます。

176:login:Penguin
09/01/22 02:12:53 N/oI0lI0.net
>>175
set_orientationでvertical指定
詳しくはググれ



177:login:Penguin
09/01/23 07:41:44 Azeyn9TC.net
Objective-C使ってます

178:167
09/01/23 13:07:07 AEZO7GNu.net
toolbar を縦(vertical)に配置することには成功したのですが、
menubar を縦(vertical)に配置する方法が見つかりません。

// 例えば、menubar に対しては gtk_toolbar_set_orientation と同様の関数が存在しません。

どうすればできるでしょうか?


179:login:Penguin
09/01/24 17:41:53 j3OrWlaN.net
linuxデスクトップユーザーの特徴

@インストールしただけで選民思想
Aやっていることはwindowsと同じ。しかもめんどくさくなっただけ。
Bコマンド打ち込んでプロだと勘違い
C黙ってwindowsでも使ってろと間口を狭める
D素人がだのなんだのとwindowユーザーを馬鹿にする
Eカーネルいじればいいだろと無茶を要求
Flinux開発者とのずれを認識できていない
Gwineを使うくせにlinuxを再現しようとする動きがあるとたたく

       冫─'  ~  ̄´^-、
     /          丶
    /             ノ、
   /  /ヽ丿彡彡彡彡彡ヽヽ
   |  丿           ミ
   | 彡 ____  ____  ミ/
   ゝ_//|    |⌒|    |ヽゞ
   |tゝ  \__/_  \__/ | |    __________
   ヽノ    /\_/\   |ノ  /
    ゝ   /ヽ──‐ヽ /  /  linuxはめんどくさくて難しい分だけ、
     /|ヽ   ヽ─'   / <  自称プロが悦に浸るためのツールとして最高なんじゃないだろうかwww
    / |  \    ̄  /   \
   / ヽ    ‐-            ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄

180:167
09/02/01 07:28:50 lE4ur93H.net
お前等、なにも知らないんですね。

181:login:Penguin
09/02/02 10:47:56 IIH5qxfd.net
もともと閲覧者が少ないスレで
自分の欲しいタイミングで回答を得ようとしてるのが間違い

半年位待ってみろ

182:login:Penguin
09/02/02 11:13:18 6BkR0lwx.net
>>181
では、LinuxでGUIを作るにはどのライブラリを使うのでしょう?

183:login:Penguin
09/02/02 11:41:10 J5ctVuxx.net
* 女でLinux使ってる奴 -- スレリンク(linux板:355番)
355: login:Penguin [] 2009/01/19(月) 12:20:24 ID:Zkvelgln

私は女に一番受けのいいlinuxディストリビューションを知っている。


* Gnome vs KDE -- スレリンク(linux板:136番)
136: login:Penguin [] 2009/02/01(日) 11:19:51 ID:lE4ur93H

今 C の gtk+ 使ってアプリ書いてるけど、
血反吐でそうなぐらい面倒くさい。。。
だれかもっと使いやすいライブラリ作ってくれ。。。


* 女でLinux使ってる奴 -- スレリンク(linux板:417番)
417: login:Penguin [sage] 2009/02/01(日) 12:29:52 ID:lE4ur93H
>>416
発音は「テック」。
英語ができない日本人はなぜか「テフ」と言っている。
偽の発音を使い続けるのはそろそろ止めにしないか?

本当は「イケマン」と言うべきなのに、「イケメン」
と言う日本人。もうね、アホかと。


* 女でLinux使ってる奴 -- スレリンク(linux板:415番)
415: login:Penguin [sage] 2009/02/01(日) 11:05:18 ID:lE4ur93H
>>413
○ tex = テック
× tex = テフ

184:167
09/02/02 13:03:00 9NCOwk9m.net
>>183
変な事言ってるように仕向けたいんだろうけど、
lE4ur93Hは正当な事言ってんじゃん。

185:login:Penguin
09/02/02 20:46:11 2frQG7fR.net
ただの荒らしコピペに反応すんなよ
NG登録されて回答もらえなくても知らんぜ

186:login:Penguin
09/02/10 20:32:40 8DV6Um/n.net
ファイル選択ダイアログを、ターミナルから閉じたくて、
下の処理を入れたのですが、ダイアログを閉じた後、応答が無くなります。
(GUIでキャンセルボタンや×をクリックすると正常に閉じれる)
どうすれば、ターミナルから正しく閉じれるかを教えてください。

GtkWidget *filew = NULL;
void FileSelection::destroyFileSelection()
{
  status = false;
  gtk_widget_destroy(filew);
}

187:login:Penguin
09/03/29 11:33:55 JOkFFCq+.net
Windowsでは、自分以外のプロセスが管理しているウィンドウのハンドル(動作中のOS上で
ユニークな識別番号)を得ることができれば、そのウィンドウのサイズやデスクトップ上での
位置などを好きにいじくったりできるのですが、LinuxのGTK+(またはGNOMEもしくはX Window
System)にそのようなAPIのようなものはありますか?

188:187
09/03/29 11:38:55 JOkFFCq+.net
すみません、ageさせてください。

なにがやりたいかと言うと、特定の文字列をウィンドウタイトルに含むトップレベルの
ウィンドウに対して、デスクトップ上での表示位置やサイズを変更したりといったことです。

189:187
09/03/29 20:36:19 JOkFFCq+.net
自己レス

libwnckてのが関係ありそうだが、Rubyから使えるんだろうか。Pythonにはそのための
モジュールが既にあるみたいなんだけど。今Ubuntu起動できないからよくわからん。

190:login:Penguin
09/03/29 21:12:45 Afl3tAxS.net
>>187
wmctrl コマンドのソースでもみればいいんじゃね?

191:187
09/03/30 10:56:06 +ewzli1b.net
レスありがとうございます。こんなコマンドがあったんですね。自分の目的にはこれを
利用するだけで十分そうですが、ソース読むのも勉強になって面白そうですね。

結果的にスレ違いになってしまってすみません。

192:login:Penguin
09/04/23 11:32:24 rK6Swnpx.net
だれか clispからgtkを使う方法を教えてください


193:login:Penguin
09/07/10 07:43:15 jUacI/UD.net
VMwareがGtk産だったとは

194:login:Penguin
09/07/17 23:36:58 hHQTz6KG.net
本気で聞く
おまえらはどうやってGTK+勉強なさいましたか?

195:login:Penguin
09/07/18 13:41:00 MyXAq5ze.net
>>194
GTK+ソース付属のexamples+demosを動かして遊ぶ

GTK+ソース付属のtutorialを一通りこなす web: URLリンク(library.gnome.org)

doc/reference読み方を覚える

小さいアプリをsourceforgeとかfreshmeetで見つけてきて参考にする

irc.freenode.netの#gtk+とかメーリングリストで質問

196:login:Penguin
09/07/18 15:41:41 0IAjxnq5.net
難しそうですね
断念しました

ありがとうございませんでした

197:login:Penguin
09/07/18 18:31:08 NxC2oWbI.net
何をどう見たら難しそうなんだよ?
ゆとりか?
英語にびびるな!

サンプルソースなんてコピればコンパイルできる

WindowsでもLinuxでもCode::Blocks使えばそれほど
コンパイルできる開発環境の準備には手間取らない

198:login:Penguin
09/07/18 19:30:03 +ryPUP7D.net
ママが一から十まで教えてくれなきゃイヤなんじゃね

199:login:Penguin
09/07/18 20:00:15 ghQ1gSty.net
pygtkがいちばんやさしくてにょろにょろ

200:login:Penguin
09/07/18 20:39:03 0IAjxnq5.net
>>197
そうですね
サンプルソースをコピーして勉強したことにしようと思います

>>198
そうですね
パパじゃいやです

>>199
そうですね
数十年ぶりにしゃぶりたいです

>>195
俺、本気になります!真面目に勉強します!
ありがとうございました!!

201:login:Penguin
09/07/19 01:03:57 vKaqQMs4.net
携帯とか組みこみでGTK+を使っているものって何かある?
海外では結構あるみたいだけど、日本だと聞かないよな。

202:login:Penguin
09/07/24 16:52:07 99ViSCNs.net
>>201
書いてないだろ常考

203:login:Penguin
09/07/24 17:15:55 aH4gErtS.net
>>202は日本語に不自由な方?

204:login:Penguin
09/07/24 17:48:23 99ViSCNs.net
うん

205:login:Penguin
09/07/24 23:12:42 6YmCBCzn.net
GTKはもう少しで消滅する
googleの新しいソリューションに置換される

206:login:Penguin
09/07/25 04:36:37 00SH8Kn9.net
Chrome OS の事か?
確かにウィンドウシステムは時前のものを用意するらしいけど、
どうなんだろうね。そもそもソースが公開されるかどうかも怪しい。
それに、GTK+の培ってきた年月を一気に越えられるとも思えないし。


207:login:Penguin
09/07/25 05:18:20 corW1o/2.net
グーグルは基本Qtじゃないの。
でも今更ブラウザの下の層なんか関係ないはず。
HTML5 でアクティブデスクトップっていう懐かしいお話をもう一度やるんでしょ

208:login:Penguin
09/07/25 06:22:09 00SH8Kn9.net
まぁ、googleはWEBアプリが基本だから、そうなるのかね。
ただ、この事前の大袈裟なプロパガンダはMSに似てるなw


209:login:Penguin
09/07/25 09:19:09 wdRQEHVW.net
GTKスレはあるのにQTスレがないのはなんでだろう〜

210:login:Penguin
09/07/25 10:58:46 QoKls/xb.net
>>209
ム板にあるからじゃないか?

211:login:Penguin
09/07/25 11:39:56 IOPwPp1+.net
>>209
スレリンク(tech板)

どっちかと言うとQtの方が活発

212:login:Penguin
09/08/23 00:41:14 cXbPjTOU.net
初歩的な質問です。

Xを使わずにフレームバッファを使うGTK+アプリをリンクする際は、どのgtkライブラリをリンクすればいいのでしょうか?
Xを使う場合だと以下のようなリンクオプションになると思いますが、フレームバッファを使用する場合のリンクオプションを教えてください。
$ pkg-config gtk+-2.0 --libs
-lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0  


213:login:Penguin
09/08/23 01:17:03 oYmg5B0H.net
Xを使わずにフレームバッファを使うGTK+とやらはインストールしてあんの?

214:212
09/08/23 02:02:51 cXbPjTOU.net
debian上からaptitudeでlibgtk2.0とlibgtk2.0-dev関連のライブラリをインストールしてあります。


215:login:Penguin
09/08/23 06:49:16 Do4KpMOi.net
Xを使わないと動かんよ。
Gtk+はXLibの面倒臭さを軽減するためのライブラリに過ぎんのだから。
Windowsに移植する場合にもXLib相当のが要る

216:login:Penguin
09/08/23 09:20:44 WBxszhFm.net
>>214
それはX用のパッケージ。
フレームバッファ用のGTKはlibgtk-directfb-2.0-*だぞ。

>>215
知ったか乙

217:212
09/08/23 10:44:26 cXbPjTOU.net
>>216
そうなんですか!

以前ググったら下記サイトのフレーズが目に留まり、てっきりDirectFBじゃなくてもフレームバッファでも利用可能なのだと思ってました。 orz
URLリンク(armadillo.atmark-techno.com)
>GTK+
>GNOME アプリケーションでユーザインターフェースを構築するのに利用される基礎的なライブラリで,XWindow System 上で動作します(URLリンク(www.gtk.org)).フレー>ムバッファやDirectFB 上などでも動作するように設定することができます.

ご教示いただいたライブラリをインストールして確認してみます。


218:login:Penguin
09/08/29 19:05:24 7RbftsXX.net
libgrade+gtkmmをいじって遊んでいるのだけど
メインウィンドウからダイアログのようなウィンドウを開く
サンプルは何処かに有りませんでしょうか

219:login:Penguin
09/08/29 21:56:36 OBRUPUZc.net
>>218
gtkmm-demo を起動してみては?
結構いろんなサンプルがあるな > gtk-demo pygtk-demo gtkmm-demo


220:login:Penguin
09/08/30 01:00:57 XE+apBqt.net
>>219
libgladeを使っていない様です。

221:名無しさん@そうだ選挙に行こう
09/08/30 08:33:18 Czh9S0PJ.net
>>220
libgladeは使われなくなる方向だから、、、って思ったけど、
gtkmmだとBuilderを使ったサンプルが無いな。。。
おそらく、以下はチェックされていると思うけど、
URLリンク(gtkmm.org)
複数のwidget idを使っているサンプルは無いですね。。。
Gnome::Glade::Xml::create()して、get_widget()して、
signal処理してrun()する流れは同じだと思うけど、
丁度良いサンプルは見つからないな。。。

222:名無しさん@そうだ選挙に行こう
09/08/30 08:51:11 IHJ1WvuS.net
>>221
有難うございます。小汚い書き方で何とか表示だけはするようになりました(いろいろ問題が有るけど)
綺麗に書いてあるサンプルなど見ればもう少しましになるかと思ってたのです。
libgladeは使われなくなる方向なんですね。anjutaでデフォルトではく雛型がlibgladeだったので調べてました
今は何を使う方向なんでしょうか?

223:名無しさん@そうだ選挙に行こう
09/08/30 10:37:24 Czh9S0PJ.net
>>222
> libgladeは使われなくなる方向なんですね。anjutaでデフォルトではく雛型がlibgladeだったので調べてました
> 今は何を使う方向なんでしょうか?
Glade 3.6.7のglade-3を起動したら、プロジェクトのオプションってダイアログが開く。
そこには、プロジェクトのファイル形式でGtkBuilderとLibgladeを選択できる。
今後は、GtkBuilderがデフォルトになって、ファイル接尾子が.uiになる。

サンプルはgtk-demoのBuilderのソースを見るとわかると思う。
そして、gtkmmのサンプルが無いな〜って話。

URLリンク(live.gnome.org)
のUpcoming Deprecationsで非推奨になっているものは、消えゆく運命。

224:名無しさん@そうだ選挙に行こう
09/08/30 11:08:36 IHJ1WvuS.net
>>223
Debianのlennyを使っているのでAnjuta 2.4.2、Glade 3.4.5です・・・
GtkBuilderのサンプル探しの旅に出たいと思います。有り難うございます

225:login:Penguin
09/08/31 02:59:20 WV5KE7UC.net
glade も GtkBUilder もほとんど同じだから、リファレンスを見ながらで
書けると思うけど。


226:login:Penguin
09/08/31 14:47:43 4XJ92u20.net
GtkBUilderを使ったGtk::Drawingariaのサンプルを作ろうとしたんだけど
途端に分からず・・・
イベントとかどうやってつなげたらいいのだろう
イベント処理で書かないと無理だよね?

227:login:Penguin
09/09/01 01:49:35 o0MV2wSR.net
とりあえずこんな感じか。
(ちなみに C++ は main に限って return は不要。これ豆知識な)

int main(int argc, char** argv)
{
Gtk::Main kit(argc, argv);

AppWindow::Initialize(argc, argv);

Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file(AppWindow::GLADE_FILE_NAME);

AppWindow* app_window = 0;
builder->get_widget_derived(AppWindow::WINDOW_NAME, app_window);

kit.run(*app_window);
}


228:login:Penguin
09/09/01 01:51:56 o0MV2wSR.net
class AppWindow : public Gtk::Window
{
public:
static const char* GLADE_FILE_NAME;
static const char* WINDOW_NAME;

static void Initialize(int argc, char** argv);

AppWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder);
virtual ~AppWindow();

protected:
void on_quit_action_activated();

private:
const Glib::RefPtr<Gtk::Builder>& m_builder;

Glib::RefPtr<Gtk::Action> m_act_quit;
};


229:login:Penguin
09/09/01 01:58:01 o0MV2wSR.net
const char* AppWindow::GLADE_FILE_NAME = "app_window.glade";
const char* AppWindow::WINDOW_NAME = "window1";

void AppWindow::Initialize(int argc, char** argv)
{
// 初期化なんかをここで

// OpenGL の描画を独立して(別ウィンドウで)出来るようにしてみる
Glib::signal_idle().connect(sigc::bind(sigc::ptr_fun(PollEvent), DrawGL));
}

AppWindow::AppWindow(BaseObjectType* cobject, const Glib::RefPtr<Gtk::Builder>& builder)
: Gtk::Window(cobject), m_builder(builder)
{
m_act_quit = Glib::RefPtr<Gtk::Action>::cast_static(m_builder->get_object("action1"));

m_act_quit->signal_activate().connect(mem_fun(*this, &AppWindow::on_quit_action_activated));

move(0, 0);
resize(240, 720);
}

AppWindow::~AppWindow()
{
}

void AppWindow::on_quit_action_activated()
{
Gtk::Main::quit();
}


230:login:Penguin
09/09/01 02:02:59 o0MV2wSR.net
ただの Gtk::Window で悪いけど Gtk::Drawingaria でも大差ないはず。
app_window.glade は GtkBuilder 形式の xml ね。
大体こんな感じが典型的な処理だと思うよ。


231:login:Penguin
09/09/01 20:43:11 LcijR9gh.net
>>226
> イベントとかどうやってつなげたらいいのだろう
> イベント処理で書かないと無理だよね?
drawareaをeventboxの上に乗せないとダメじゃなかったっけ?
# と、テストもせずにカキコ

232:login:Penguin
09/09/01 20:45:43 azH81sw2.net
有難う、私が書いていたのと大分違うみたい
少しずつ見てみるよ

233:login:Penguin
09/09/02 01:45:20 XY5vbVWT.net
ちなみに AppWindow みたいに Gtk::Widget を継承している場合は、単に

class AppWindow : public Gtk::Window
{
public:
virtual void on_show()
{
cout << "表示された" << endl;
}
};

みたく仮想関数をオーバーライドするだけでいいんだけどね。

ただ、これもトップレベルのウィンドウのイベントしか反応できないから、
>>229 のコンストラクタみたく cast_static なんかでボタンとか取得して、
自分のメソッドを connect していくのが C++ っぽい書き方な気がする。


234:login:Penguin
09/09/02 13:02:19 Wp36mia7.net
>>227
コンパイルしてみたけどエラーで落ちてしまったよ

m_act_quit = Glib::RefPtr<Gtk::Action>::cast_static(m_builder->get_object("action1"));
これってどんな意味かな?

235:login:Penguin
09/09/02 18:54:23 Wp36mia7.net
結局こんな感じに書いてつながったけど、何かモヤモヤするよ
複雑になってくると小汚くなりそうだなー

builder_xml->get_widget( "drawingarea1", daria1 );
daria1->signal_button_press_event().connect( sigc::mem_fun( *this, &MyDialog::on_daria_press ) );
daria1->add_events( Gdk::BUTTON_PRESS_MASK );
daria1->signal_expose_event().connect( sigc::mem_fun( *this, &MyDialog::on_daria_expose_event ) );
daria1->add_events( Gdk::POINTER_MOTION_MASK );
daria1->signal_motion_notify_event().connect( sigc::mem_fun( *this, &MyDialog::on_daria_motion_notify_event ) );
daria1->signal_realize().connect( sigc::mem_fun( *this, &MyDialog::on_daria_realize ) );

236:login:Penguin
09/09/02 19:25:12 Wp36mia7.net
class MyDialog
{
Glib::RefPtr<Gtk::Builder> builder_xml;
Gtk::DrawingArea* daria1;

public:
MyDialog();
virtual ~MyDialog(){}
bool on_daria_press(GdkEventButton* event);
bool on_daria_expose_event( GdkEventExpose* event );
bool on_daria_motion_notify_event( GdkEventMotion* event );
void on_daria_realize();
};


237:login:Penguin
09/09/03 02:34:12 6mgKfH1n.net
>>234
> m_act_quit = Glib::RefPtr<Gtk::Action>::cast_static(m_builder->get_object("action1"));
> これってどんな意味かな?
これは GtkAction を取得するんだけど get_object は Glib::RefPtr<Glib::Object> を返す
からキャストが必要になるけど、ドキュメントには cast_static を使うようにって書いて
あるからこうしてる。

当然 app_window.glade に "action1" という名前の GtkAction がないと駄目だよ。
それで落ちてるんじゃない?

238:login:Penguin
09/09/03 02:38:43 6mgKfH1n.net
>>235
別にそんな小汚くはないと思うけど。大体そんなもんだよ。

239:login:Penguin
09/09/03 02:47:30 6mgKfH1n.net
>>236
MyDialog は Gtk::DrawingArea を継承してもいいかも。
それと on_* は protected の方がいいよ。


240:login:Penguin
09/09/03 12:32:06 jVnTHMiE.net
>>234
適当なGtk::WindowのGUIを作って読み込ませたんだけど
それがうまく行ってなかったのかもしれない
色々有難う

GtkBuilderを使わない方も少しいじってみるよ

241:login:Penguin
09/09/06 14:05:15 aXigLrxm.net
Gtk::SpinButtonを浮動小数点表示にする事は出きますでようか?

242:login:Penguin
09/09/14 13:21:24 kBmevVmP.net
cairommでバックバッファを使った描画はどうすれば良いのでしょうか?
save(),restore()は少し違うような気がして・・・

243:login:Penguin
09/09/15 17:55:42 1BtVuQj7.net
GTK+onDirectFBをインストールしようと思ってDirectFBのサイトに行こうとしたら
なぜか繋がらないんだけど誰か教えr・・・教えてください。

244:login:Penguin
09/09/15 17:56:26 1BtVuQj7.net
sageちまった

245:login:Penguin
09/09/15 17:59:06 1BtVuQj7.net
URLリンク(www.directfb.org)

URLも貼っておきます。
繋がらない、マジで誰か教えてください

246:login:Penguin
09/09/21 16:41:13 X29eYjZv.net
GtkGLextmm を使っている人はいますか?
実装具合とか、こっちのライブラリの方が良いよとかありましたら教えて頂きたいのです。
超初心者なのでMesaとかとの違いも分かりませんがGtk繋がりと言うことで宜しくお願いします。

247:login:Penguin
09/09/24 10:56:15 hMFgf6/j.net
独自処理のバッテリー残量表示のために
Ruby/Gtk2でGtk::StatusIconを使ってみたんですが、
tooltipは付けられても、どうもlabelを付けることができなさそうです。
通知領域にテキストないしはアイコン+テキストを表示したいのですが、
どんなクラスを使えばいいんでしょうか?
リファレンスを見た限りではちょっと見当が付きませんでした。
Gdk::Pixbufにテキストを動的に描画するのかな。

248:login:Penguin
09/09/24 11:11:57 hMFgf6/j.net
URLリンク(www.daa.com.au)
URLリンク(ruby-gnome2.sourceforge.jp)

どうもそのようですね。でも、もっと簡単にできないもんか……。

249:login:Penguin
09/09/25 18:17:32 WaiZYKyV.net
>>243-245
DirectFBのソースをDLしようとオフィシャルサイトを開こうとしたけど、まだサーバが落ちたままだね・・・
9/14頃から落ちてるっぽいからメンテナンスにしては長過ぎだよね。
もしかしてDirectFB終了フラグON?

250:login:Penguin
09/09/27 00:08:06 ng4uKqzS.net
>>249
今はつながってる。digしたら212.227.87.76だった。

251:login:Penguin
09/09/28 02:12:56 5e1BLaTK.net
GTK+2.18記念あげ

ウィンドウの管理すらGDKで行なうようになり、ちらつきを減少させたり
ウィンドウの変形やアニメーションを行なえるようになったり、別の
(Clutterのような)描画ライブラリの中に簡単に埋め込めるように
なったりしたようだ。

他にも、各プラットフォーム毎に実装していたウィンドウを管理するコード
を共通にする事ができるようだ。

WindowsやMacOSXでの動作が改善されたらいいなと。

252:login:Penguin
09/10/04 14:16:19 P8VQfdNh.net
gtkmmで複数のウィンドウを開くプログラムは作れますか?
イメージ的にはGIMPの様なコントロールが有って描画画面が有る感じ
gtk+を使えば出来るのかな?

253:252
09/10/05 12:16:45 yVAGOb64.net
やり方が分かったの報告(するまでもないのかな・・・)
Gtk::Windowを継承したクラスをインシタンス化して

hogehoge.show()

で表示されました。(バカみたいな話でお恥ずかしい)


254:login:Penguin
09/10/07 17:30:55 PMxweG2O.net
インシタンス><

255:login:Penguin
09/10/11 18:03:35 Sidlsc4E.net
Failure to compile 64 bit gtk on mac os
URLリンク(buffalothedestroyer.blogspot.com)
>Attempted to install gtk+-2.17.2 on my mac. Had to install:

URLリンク(www.nabble.com)

mac 環境だと gtk は使えないんだろうか…?


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

21日前に更新/287 KB
担当:undef