GTK+プログラミング
複数のファイルをユーザーに選択させ、そのファイルのパスをリストなり
配列なりで得たいと考えています。
調べてみたところ GtkFileChooserDialog は単一ファイル|ディレクトリ
にしか対応していないようなのですが、上記のような機能は自前で実装す
るしかないのでしょうか。 >>102
gtk_file_chooser_set_select_multiple()
gtk_file_chooser_get_filenames()
の組み合わせじゃ駄目なのかい? >>103
ありがとうございます。完璧に私の調査不足でした。
教えていただいた方法でいけそうです。
glade3の最新版にしたらいつの間にかGtkBuilder形式でも出力できるようになってたよ。
さすがにウィンドウ別に分けて出力はしてくれないけど。 PyGTKでランチャー作ってます
ホットキーから呼び出すにはどうすれば
やはりgconf弄らないと無理なのでしょうか。 どのウィンドウがフォーカスされている状態でもキー操作で呼び出したいってこと?
そりゃXならウィンドウマネージャの仕事だ。 >>107
そうです
どんな操作してるときもホットキーから呼び出したいので
PyGTK以外の言語は全く解らんのですがXLibあたりですかね
これさえ備えられればほぼ完成なんです
ありがとうございました。もう少し調べてみます >>108
それ俺も知りたい。分かったら教えてくれ。 >>108
ウィンドウマネージャにショートカットで任意のプログラムを呼び出すような
親切機能がついていればできる、なければ基本的にできない。 こんなんでどうよ
#!/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() >>109-110
自分が得た情報はもちろん共有しますよ
ウインドウマネージャってubuntuだとcompizでしたっけ?
WindowsだとpyHookなんてのがあって楽そうなんですが
>>111
走らせてみました
小さなウインドウは出ましたが、こちらではキーに反応しません
a, <shift>a, <ctrl>aはダメでした。他のキーですか?
個人的にはこの辺が怪しいと思っていたのですが
ttp://faq.pygtk.org/index.py?req=show&file=faq23.009.htp
ttp://manpages.ubuntu.com/manpages/feisty/ja/man3/XGrabButton.html
ttp://xjman.dsl.gr.jp/X11R6/X11/CH12.html
PyGTKって日本語のドキュメントが少ないと思っていたけど
それ以前にドキュメントの絶対数が少ない気がしてきた >112
xbindkeysのソースが参考になるかもね。
でもgdkとgtkだけで済ませたい気もする。 >>113
これCですか?現時点では意味不明でした。
やはり最低でも2言語くらい習得しないと細かい所が弄れませんね。
>>114
それも試してみましたが何故が無反応でした。
さらに一週間くらい調べてみます。 glade3といえば日本語メッセージの翻訳が迷訳てんこもりで参った記憶しかないぞ。
ありゃGTK+プログラミングろくに理解してない奴が訳してるんだろうなあ。 出版界を見ると、GTK+よりもQtの方が元気があるように見えるんだけど、
ユーザ数ではどうなんだろう。日本でも最近出てる本はQtのだよね。 出版ではQtだが、実際にはgtkのほうが人気がある。
ユーザ数でもおそらくgtkのほうが多い。
なぜQtの本のうほうが多いのかは謎。
gtkの本ってなんであんなに少ないんだろうか。 一つの指標として
gnome vs kde
ttp://www.google.co.jp/trends?q=GNOME%2CKDE&ctab=0&geo=all&date=all&sort=0
gtk vs qt
ttp://www.google.co.jp/trends?q=gtk%2Cqt&ctab=0&geo=all&date=all&sort=0
ちなみにノルウェーではgnomeの人気が高いw ネット上のドキュメントが充実してるからとか? 洋書も最近のはQtの
が多いよね。
日本GNOMEユーザー会とKDE ホームページ(日本KDEユーザ会)の
サイトを比べてみると、一見KDEの方が勢いがあるように見えるけど、
リンクのメンテがボロボロだな。 Ubuntu人気があるからgnomeのほうがユーザ多そうだけどな、実際どうなんだろな。
あと他言語のバインディングではgtkのほうが優勢な気がするんだがどうなんだろ。
QtHaskellとか使ってる人いる?俺はgtk2hs使ったけど使い物にならなかったよwww必要関数無くてwwww。
Ubuntu, Fedora, Debian, Vine(笑)とか標準ではたいがいgnomeだからね。
やっぱシェア(数)はやっぱgnomeが多いんじゃないの?
KDEはOpenSUSE, Mandriva(turbo)とか。
まぁ前出のgnomeトリはたいがいKDEの派生つーかブランチもあるし
入れ替えたって(共存させたって)いいんだけどね。
ユーザーはともかく、クリエータはGTK(GNOME)の方が多いだろう
GTKがLGPLなのに対して、QtはGPLか最近のtool kit としては高額の
有償ライセンスかのいずれか
利用できる人間は、どうしても限られてくる 欲しいソフトがないから自分で作ろうと思う。
だが、どの言語もソースは読める程度、簡単な改造が出来る程度のレベルです。
だが、一からあのソフトを作りたい・・・。
そんな俺はどのようなGTK開発環境が良いとおもいますか?
今考えているのは、
Pygtk + grade の組み合わせです。
これを薦めるハッカーが多いのと、Pythonという言語がしっくりくるからです。
ほか、初心者におすすめのGTK開発環境がありましたら教えて下さい。 まあそのへんより簡単なのは無さそうだよね。自分はRubyが好きなので
Rubyで勉強してるけど。 vte-0.17.4 を ./configure && make && make install してみたのだけど, 画面端で漢字入力を始めると, 折り返しも延長もしてくれず, 入力文字が見えなくなる.
| ▽かんじに|
のように. でも次のようになってほしいのだけど,
| ▽かんじに|
|ぅりょく |
とか. gtk-demo の text-widget の multiple views などはうまくいってます. .gtkrc-2.0 とかに何か設定が必要でしょうか?
ところでpygtkって遅くね?
Core2Duoのマシンでボタンクリックしてからレスポンスが10秒後とかザラなんだが。
gtkmmとか生のgtkのほうがいいんじゃね? こちらのサンプルは PyGTK + glade3 動きました。
ttp://palepoli.skr.jp/content/python/window1.php
でもここから先が進めません。
PyGTK + glade3 で勉強になるサイトがあったら教えて下さい。
英語でもいいです。宜しくお願いします。 >>136
ありがとうございます。
参考になりました。 C++/GTKで書いたプログラムを
wxPythonで書き直したら
wxPythonで作った方がサクサク速く動いた orz
いまさらかもしれないが時代は今CAIROだということに気づいた
http://journal.mycom.co.jp/series/firefox/005/
プラットフォームやハードウェアに依存せず精密な描画が可能になるらしい
CAIRO使えるのはGTK+2.10から上のver
誰か使ってる人いる? 時代を読み違えてるな。
ベクトルベースとか3DデスクトップとかVistaとともに沈んだよ。
PC肥大化狂騒曲は終わりだ。Qt4も総スカンだし いやでも実際有名どころで使われてるわけだし
それに素のGTKのみで描画するより処理速度は速くなるし,
プラットフォーム間の互換性も高まると思う
別に肥大化してるわけじゃないしVistaや3Dデスクトップとはちょっと違うだろう
gtkがcairoをサポートしてまだ日も浅いしむしろ今からが勝負 ふつーに使ってる。フォントの取り扱いがプラットフォーム中立にできればなおいいのだが。 Cairo のフォント描画は Windows 上だとジャギが目立つ。Linux 上では問題無し。
何か設定がいるのかしら。 普通ベクトル・グラフィクスにジャギーは発生しない
なにか間違ってることは間違いない >>144
速くなるって、なんかベンチの結果でもあんの?
skiaを用いているgoogle chromeのcanvasが爆速という話なら聞いたことがあるが
>>146
普通にcairoをコンパイルすると、Windowsではcairo-win32-font.cが使われる
これは普通にGDIを用いているので、普通のWindowsアプリのフォントの
レンダリングと全く同じ結果になる
一方LinuxではFreeTypeが使われる >>148
firefox2とfirefox3の速度比較は
確証を裏づけるものにはならないか?
一般的にラスター描画よりベクトル描画の方がデータ数が少なく、描画速度は速いと言われているし
ところでskiaて何? >>145-146
フォント描画にはPangoを使えばいいんじゃないの?
>>150
ttp://www.hyuki.com/yukiwiki/wiki.cgi?VectorDrawing
skiaは
google chrome skia
あたりでぐぐれ >>153
これはハードウェア実装のOpenGLによるベクタ描画と
ソフトウェア実装のcairoによるベクタ描画の実験結果だな...
ハードウェア実装だとプラットフォームやハードウェア環境の影響を受けるが
ソフトウェア実装より格段に速度を上げられる
だからこそcairoにもOpenGLによるハードウェアアクセラレーションのサポートがあるわけだが...
でもビデオカードやらのGPU性能依存というのは
それこそ3DデスクトップやらVistaやらのPC肥大化狂騒曲じゃないのか?
ハードウェア実装を否定してるわけじゃないが
これはアリなの?
そこのところどうなんよ? >>154
んー
それを言うなら、GDIだってハードウェアアクセラレートされていて、
GDIがソフトウェアでエミュレートされるようになったWindows Vistaでは
実際描画が遅いのなんのと騒ぎになっていたわけだろ
cairoは、下のレイヤの上に乗っかって、アンチエイリアス描画を行うから、
一般的には下のプリミティブをそのまま用いるのではなく、
pixmapの上にソフトウェアレンダリングを行う形になる
だから結果は綺麗だが、それが高速化につながるという意見はさっぱりわからんね
皮をかぶせれば、ポータビリティは高まるかもしれんが、速くなるわけがないよ
個人的にちょっと試した限りでは、少なくともWindowsで普通にコンパイルした
cairoは、遅いといわれるGDI+よりもまだ遅いぐらいだ
同種の競合ソフトのaggと比べても、やはり遅いな cairoの下のレイヤって何?
cairoはGTK+/GDKやXlibの上にはない
そもそもpixmapのようなラスタデータ上にベクタデータを
ラスタライズしても綺麗な結果にはならない
Vistaが重い一番の理由はVistaのコアが4Gとかのせいじゃなかったか? >>156
> cairoの下のレイヤって何?
> cairoはGTK+/GDKやXlibの上にはない
????
cairoは何らかのバックエンド(サーフェス)の上で描画を行うわけだが
一体何を言ってるんだ
> そもそもpixmapのようなラスタデータ上にベクタデータを
> ラスタライズしても綺麗な結果にはならない
ビットマップディスプレイに、ラスタデータ以外をどうやって描画するんだ?
ベクタグラフィックスだろうが3Dだろうが、ビットマップディスプレイに
描画するときは、*必ず*2Dラスタデータに落とす(=レンダリング)
しなければ、描画のしようがないのだが、そんなことも知らないのか?
レンダリングをソフトウェアで行うか、ハードウェアで行うかは
実装の問題だがな 他の領域に落としたらそれが遅くなる原因だしな。
絵の処理なら、cpuから見えるメモリ領域のビットマップに転送が遅くなる原因のno1。
cairoは、その辺がすべてバックエンド任せでさらにメモリ上でいじるので、
普通に使うと遅いソフト(cpu)処理の部類に分類される。
てか、cairoの中身でも描画なんかは一切触れずに、cairo_surface_tで共通化とでしか使ってないと思うんだけどどう? 初めて拝見するが、
ここの良スレ度にびっくりした。 「右」キーにアクションをバインドしたいんですが、どうすればできますか?
今は仕方なく
gtk_widget_add_accelerator (foo, "activate", accel_group,
GDK_Right, GDK_MODIFIER_MASK,
GTK_ACCEL_VISIBLE);
のようにしてますが、実際は GDK_MODIFIER_MASK 無しで「右」キーのみ
で作用するようにしたいんです。 ところでさ、なんでGtkTreeViewColumnに
gtk_tree_view_column_get_widthはあるのにgtk_tree_view_column_set_widthはないの?
なんでカラムの幅を非常にまわりくどい方法でセットする事しかできないんだろう。 >>163
他のコラムに対する影響を考えないといけないからでないの? 推測だけど どうすればtoolbarを縦に位置させることができますか?
>>168
真面目に答えていただけませんか?
>>170
詳しく教えてください。
>>167
まず言語は何でプログラミングしてるの?
個人的には盛り上がって欲しいスレではあるのだけれど。
CでガリガリGTKアプリ書いてる人あんまりいないのかな… >>175
set_orientationでvertical指定
詳しくはググれ
toolbar を縦(vertical)に配置することには成功したのですが、
menubar を縦(vertical)に配置する方法が見つかりません。
// 例えば、menubar に対しては gtk_toolbar_set_orientation と同様の関数が存在しません。
どうすればできるでしょうか?
linuxデスクトップユーザーの特徴
@インストールしただけで選民思想
Aやっていることはwindowsと同じ。しかもめんどくさくなっただけ。
Bコマンド打ち込んでプロだと勘違い
C黙ってwindowsでも使ってろと間口を狭める
D素人がだのなんだのとwindowユーザーを馬鹿にする
Eカーネルいじればいいだろと無茶を要求
Flinux開発者とのずれを認識できていない
Gwineを使うくせにlinuxを再現しようとする動きがあるとたたく
冫─' ~  ̄´^-、
/ 丶
/ ノ、
/ /ヽ丿彡彡彡彡彡ヽヽ
| 丿 ミ
| 彡 ____ ____ ミ/
ゝ_//| |⌒| |ヽゞ
|tゝ \__/_ \__/ | | __________
ヽノ /\_/\ |ノ /
ゝ /ヽ───‐ヽ / / linuxはめんどくさくて難しい分だけ、
/|ヽ ヽ──' / < 自称プロが悦に浸るためのツールとして最高なんじゃないだろうかwww
/ | \  ̄ / \
/ ヽ ‐-  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ もともと閲覧者が少ないスレで
自分の欲しいタイミングで回答を得ようとしてるのが間違い
半年位待ってみろ >>181
では、LinuxでGUIを作るにはどのライブラリを使うのでしょう? * 女でLinux使ってる奴 -- http://pc11.2ch.net/test/read.cgi/linux/1224332593/355
355: login:Penguin [] 2009/01/19(月) 12:20:24 ID:Zkvelgln
私は女に一番受けのいいlinuxディストリビューションを知っている。
* Gnome vs KDE -- http://pc11.2ch.net/test/read.cgi/linux/1185851003/136
136: login:Penguin [] 2009/02/01(日) 11:19:51 ID:lE4ur93H
今 C の gtk+ 使ってアプリ書いてるけど、
血反吐でそうなぐらい面倒くさい。。。
だれかもっと使いやすいライブラリ作ってくれ。。。
* 女でLinux使ってる奴 -- http://pc11.2ch.net/test/read.cgi/linux/1224332593/417
417: login:Penguin [sage] 2009/02/01(日) 12:29:52 ID:lE4ur93H
>>416
発音は「テック」。
英語ができない日本人はなぜか「テフ」と言っている。
偽の発音を使い続けるのはそろそろ止めにしないか?
本当は「イケマン」と言うべきなのに、「イケメン」
と言う日本人。もうね、アホかと。
* 女でLinux使ってる奴 -- http://pc11.2ch.net/test/read.cgi/linux/1224332593/415
415: login:Penguin [sage] 2009/02/01(日) 11:05:18 ID:lE4ur93H
>>413
○ tex = テック
× tex = テフ >>183
変な事言ってるように仕向けたいんだろうけど、
lE4ur93Hは正当な事言ってんじゃん。 ただの荒らしコピペに反応すんなよ
NG登録されて回答もらえなくても知らんぜ ファイル選択ダイアログを、ターミナルから閉じたくて、
下の処理を入れたのですが、ダイアログを閉じた後、応答が無くなります。
(GUIでキャンセルボタンや×をクリックすると正常に閉じれる)
どうすれば、ターミナルから正しく閉じれるかを教えてください。
GtkWidget *filew = NULL;
void FileSelection::destroyFileSelection()
{
status = false;
gtk_widget_destroy(filew);
} Windowsでは、自分以外のプロセスが管理しているウィンドウのハンドル(動作中のOS上で
ユニークな識別番号)を得ることができれば、そのウィンドウのサイズやデスクトップ上での
位置などを好きにいじくったりできるのですが、LinuxのGTK+(またはGNOMEもしくはX Window
System)にそのようなAPIのようなものはありますか? すみません、ageさせてください。
なにがやりたいかと言うと、特定の文字列をウィンドウタイトルに含むトップレベルの
ウィンドウに対して、デスクトップ上での表示位置やサイズを変更したりといったことです。 自己レス
libwnckてのが関係ありそうだが、Rubyから使えるんだろうか。Pythonにはそのための
モジュールが既にあるみたいなんだけど。今Ubuntu起動できないからよくわからん。 >>187
wmctrl コマンドのソースでもみればいいんじゃね? レスありがとうございます。こんなコマンドがあったんですね。自分の目的にはこれを
利用するだけで十分そうですが、ソース読むのも勉強になって面白そうですね。
結果的にスレ違いになってしまってすみません。 だれか clispからgtkを使う方法を教えてください
本気で聞く
おまえらはどうやってGTK+勉強なさいましたか? >>194
GTK+ソース付属のexamples+demosを動かして遊ぶ
↓
GTK+ソース付属のtutorialを一通りこなす web: http://library.gnome.org/devel/gtk-tutorial/stable/
↓
doc/reference読み方を覚える
↓
小さいアプリをsourceforgeとかfreshmeetで見つけてきて参考にする
↓
irc.freenode.netの#gtk+とかメーリングリストで質問 難しそうですね
断念しました
ありがとうございませんでした 何をどう見たら難しそうなんだよ?
ゆとりか?
英語にびびるな!
サンプルソースなんてコピればコンパイルできる
WindowsでもLinuxでもCode::Blocks使えばそれほど
コンパイルできる開発環境の準備には手間取らない >>197
そうですね
サンプルソースをコピーして勉強したことにしようと思います
>>198
そうですね
パパじゃいやです
>>199
そうですね
数十年ぶりにしゃぶりたいです
>>195
俺、本気になります!真面目に勉強します!
ありがとうございました!! 携帯とか組みこみでGTK+を使っているものって何かある?
海外では結構あるみたいだけど、日本だと聞かないよな。