トップページ⇒tech
1001コメント274KB

【GUI】wxWidgets(旧wxWindows) その2【サイザー】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。

本家
 http://www.wxwidgets.org/
wxWindows日本語プロジェクト
 http://wxwindowsjp.sourceforge.jp/
Let's wxWidgets
http://dot-gray.s33.xrea.com/
(*)準備中(*)
http://www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
http://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
 http://www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
 http://www.idg.co.jp/sw/back/200102/20010219_01_report.html
0159デフォルトの名無しさんNGNG
>>158
え? エクスプローラからJavaアプリにドラッグアンドドロップできるよ。
0160デフォルトの名無しさんNGNG
java が GUI バリバリだったとしても,
普段から java にしたいとは思わないのが難点.
普段使う道具としても使いやすければいいのに.
0161デフォルトの名無しさんNGNG
Swingが重いせいもあるけど、だったらSWTという選択肢もあるし。
やっぱりオープンソースでないのが痛いかな。gcj使うという手も
あるけど、Eclipseはそれでビルドできるみたいだけど、HotSpotVM
がないと性能的には辛いしね。
0162デフォルトの名無しさんNGNG
wxとgtk、windows上で配布する際のトータルサイズはどちらが大きい?
0163デフォルトの名無しさんNGNG
>>162
両方を比べたことないから判らないけど
wxのHelloWorldは VC6 でビルドすると 400KB 〜 500KB くらいだったよ
0164デフォルトの名無しさんNGNG
>>163
サンクスです。
gtk+の方はgtk,gdk,glib,gettext,iconv,zlib,atkやpangoといったdll一式が必要なので6MB強になりました。
0165デフォルトの名無しさんNGNG
>>164
gtkがwxwidgetsより優れている点なんてあるの?ないでしょ?
0166デフォルトの名無しさんNGNG
windows 上だと全くない。
0167救世主かけるNGNG
救世主かける様がお前達に助言を与えよう。http://kakeru.ifdef.jp/ 
0168デフォルトの名無しさんNGNG
google でたまたま見つけたページを貼っておきます
http://biolpc22.york.ac.uk/wx/wxhatch/wxMSW_Compiler_choice.html
0169デフォルトの名無しさんNGNG
まぁ、GTK+/GTK2はLinux専用と考えた方がよさそうだね。
0170デフォルトの名無しさんNGNG
PictBearSEが頓挫した今となってはGimpが期待の星なんだがなぁ……

……そうか。wxWidgetsベースでGimpを書き直せば(誰がするんじゃそんなことorz)
0171デフォルトの名無しさんNGNG
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Perl=ウンコ
wxWidgets >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Gtk+=ゴミ
0172デフォルトの名無しさんNGNG
 ○ パキュン パキュン                  ○
 /|√ wxWidgets >>>>>>> Gtk+    ⌒/ ) ハッ!
 Λ                          /)ζ

 ○
 /|√ wxWidgets >>>>>>>>>>>>>>>>>>>>>>>>>> Gtk+
 Λ                          _○√ ヒョイ
                           <<
0173デフォルトの名無しさんNGNG
Qt >= wx > GTK
0174デフォルトの名無しさんNGNG
>>169
Monoも今じゃManaged Windows Forms実装してるしね。X11をメイン
ターゲットにするけど、オマケでWindowsでもとりあえず動くという
程度のものを作るなら、いい選択肢かもしれない。
0175デフォルトの名無しさんNGNG
gtkがwindows上でwxに勝る点…て、テーマが使えるとか…ってそれは利点なのか…まあ使う人少ないし…
0176デフォルトの名無しさんNGNG
Windows 98/MEで多言語処理が若干有利になる程度?
0177デフォルトの名無しさんNGNG
gtk+ の方が作ってて気持ちがいい。

けど、wxWidgets の方がいろんな局面で何とかなる。

と、オモタ
0178デフォルトの名無しさんNGNG
2.6.0まだ〜?
0179デフォルトの名無しさんNGNG
wxMSW-wxMimeTypesManagerで.htmlに対するshell-openコマンドは取れるが、httpに対して取れないことに閉口した。
0180デフォルトの名無しさんNGNG
2.4系ではコンソールアプリケーションは作成不可?
0181デフォルトの名無しさんNGNG
wxBase is a library for programming non-GUI (console) applications
using the base wxWidgets functionality.
http://www.wxwidgets.org/dl_base.htm
0182デフォルトの名無しさんNGNG
>>181
遅くなりましたがありがとうございます。
全然関係のないところを調べてました(゜д゜)
0183デフォルトの名無しさんNGNG
wxRadioButtonをwxRB_SINGLEでいくつか作ったところ
排他にしかなりません。
どうすれば独立にOn/Offできるでしょうか。
もしくは、いくつかのbit statusを表示したいときに
どんな方法をとればいいのでしょうか。
0184デフォルトの名無しさんNGNG
自己解決してしまいました。
wxRB_GROUPを使ってそのつど新しいグループであるとすればできました。
0185デフォルトの名無しさんNGNG
なんでチェックボックスを使わないんだろう?
0186デフォルトの名無しさんNGNG
なんでラジオボタンを使うんだろう
0187デフォルトの名無しさんNGNG
ラジオボタンを使ったインターネットラジオのアプリケーションはあるのだろうか?
0188デフォルトの名無しさんNGNG
なんでラジオボタンつて言ふのだらう
0189デフォルトの名無しさんNGNG
>>188
動作が昔のラジオのボタンそのものだから。
若いやつにはイメージできない・・。
0190デフォルトの名無しさんNGNG
うろ覚えだけど
上に白い四角のスイッチが並んでて、一個押すとへっこんでカチッというんだけど
そのとき他のが戻るの。多分これが選局ボタン。はしっこにある赤いのが電源ボタン。

0191デフォルトの名無しさんNGNG
ちょっと前まではカーラジオで現役だったんだが
0192デフォルトの名無しさんNGNG
なんだ選択ボタンのことか
0193デフォルトの名無しさんNGNG
へぇ〜
0194デフォルトの名無しさんNGNG
GUIのラジオボタンは押すとどれかがへっこんで他が戻るというより、
ちっこいポチが移動するようにしか見えん罠。
0195デフォルトの名無しさんNGNG
2.6はいつごろになるとか書いてある?
0196デフォルトの名無しさんNGNG
>>195
1/4/2005 (2005/4/1)
http://www.wxwidgets.org/roadmap.htm
0197デフォルトの名無しさんNGNG
ありがとう。ちょっと先か。
0198デフォルトの名無しさんNGNG
Thread::Thread(){
  mutex = new wxMutex;
  condition = new wxCondition(*mutex);
}
Thread::Entry(){
  while(!TestDestroy){
    mutex->Lock();
    condition->Wait();
    iroironakoto();
  }
}
Dlg::OnButton(){
  wxMutexLocker lock(*mutex);
  condition->Signal();
}

で、2回目のボタンでデッドロックしてしまいます。
どこにUnlock()を入れるべきなのでしょうか。
Wait()がunlockしてくれるみたいなことが書いてあるので
lock/unlockの回数は合っていると思うんですけど。
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx71.htm#wxcondition
0199デフォルトの名無しさんNGNG
>>198
> Wait()がunlockしてくれるみたいなことが書いてあるので

どこにそう書いてあるって?

> lock/unlockの回数は合っていると思うんですけど。

辻褄合わせですませるんじゃなくてmutex/conditionの使い方くらいは
マルチスレッドの基礎だから教養として勉強した方がいいよ。
0200デフォルトの名無しさんNGNG
サンプルのコメントのところに書いてあるのか。スマソ。
0201デフォルトの名無しさんNGNG
でもこのコメントはミスリーディングで、
Wait()がブロックするときのことしか言ってないことに注意。

条件変数というものは、一般に、mutexを獲得して復帰するもんだ。
でないと複数のスレッドが同時に突入するのを防げないだろ。
0202198NGNG
回答ありがとうございました。
まだよくわかりません。
0203デフォルトの名無しさんNGNG
排他制御まわりのコードは、人から聞いて試行錯誤してても、
時間ばかりかかって得るものはないと思う。
きちんと教科書を読んで理解した上で書かないと。
0204デフォルトの名無しさんNGNG
マルチスレッドとかネットワークとか、
ちゃんと勉強して書くべきことなのに
適当な検索だけでわかったつもりになる奴多いよね……。
0205198NGNG
んもー、なんでそこまでいわれなあかんねん
0206198NGNG
この場合のmutexは要らないのかな?
Signal()してる場所もWait()してる場所もそれぞれ一箇所だし
Wait()してないときのSignal()は捨てたいし。
wxConditionをconstructするためだけに要る。

そうだそういうことにしよう。
お騒がせでした。
0207デフォルトの名無しさんNGNG
わかったつもりにすらならずに強行する奴までいるのか……。
0208198NGNG
わかってないのはあんただろ。
問題読み取れてないのバレバレ。
プップクプーだ。
0209デフォルトの名無しさんNGNG
並行プログラミングでは、実際に動かしてみても正しいかどうかの判断がつかないから
試行錯誤なしで初めから論理的に正しいコードを書くのが重要になるんですよ。

wxのドキュメントは、posixないしwin32スレッドの知識があるのが前提で書かれているようですね。
http://www.opengroup.org/onlinepubs/007908799/xsh/pthread_cond_timedwait.html
こことか読めば、wxCondition::Wait()がsignalを得て関数から戻るときに、
mutexを再び獲得する、というのがわかると思う。
つまり
Thread::Entry(){
  mutex->Lock();
  while(!TestDestroy){
    condition->Wait();
    iroironakoto();
  }
}
と書かなければいけない。

wxのドキュメントにもmustと書かれているとおり、mutexを獲得せずにwxCondition::Wait()を呼出すのは未定義の動作を引き起こします。
OnButton()の方のmutex lockは省略可能ですが。
0210198NGNG
親切なお方、ありがとうございました。
よく読んでみます。
もう一人のお方、暴言を吐いてすみませんでした。
おやすみなさい。
0211デフォルトの名無しさんNGNG
>>209
スレッドをアルゴリズム的に表現するにはどうすれば良いですか?
0212デフォルトの名無しさんNGNG
wxWidgetsの、メソッド名が大文字で始まる命名規約がどうにも馴染めないんだけど、自分だけかな。
0213デフォルトの名無しさんNGNG
>212
WindowsでAPI叩いたり、MFC使ってた椰子には抵抗ないと思う。
JavaとかGTKな人たちは面食らうだろうな。Qtはどうだったっけ……
0214デフォルトの名無しさんNGNG
物によって流儀はあるんだから色々なツールキット使ってれば今更だと思うんだけど。
むしろ自分で書いたメソッドとの区別が自然につくのでわかりやすかったり。
0215デフォルトの名無しさんNGNG
GTK+
gtk_foo_do_something(GTK_FOO(widget), args);

wxWidgets
widget->DoSomething(arg);

Qt
widget->doSomething(args);
0216デフォルトの名無しさんNGNG
wxWidgetsのデザインが古いというわけではないが、
"モダン"な言語やライブラリの命名規約で、メソッドの先頭が大文字なやつは他にない。
0217デフォルトの名無しさんNGNG
やっぱQtが綺麗だな。
これで有料じゃなければ。
0218デフォルトの名無しさんNGNG
いいものは金になる。
わるいものはただでくれてやれ。
0219デフォルトの名無しさんNGNG
見当違いのレス付けてる変なやつがいるな。
0220デフォルトの名無しさんNGNG
小文字

中文字

大文字
0221デフォルトの名無しさんNGNG
中文字ってなんだ? ふりむかないことか?
0222デフォルトの名無しさんNGNG
gethostbyaddr
get_host_by_addr
get-host-by-addr
getHostByAddr
GetHostByAddr
Get_Host_By_Addr
GETHOSTBYADDR
0223デフォルトの名無しさんNGNG
コーディングスタイルのスレでやってくれ。
0224デフォルトの名無しさんNGNG
g3t_H0st_bY_aDdR
0225デフォルトの名無しさんNGNG
Fedora Core 3で使おうかと思ったらgtk-configが無いと怒られました。
gtk-configを使用するには、libgtk1.2やそれと依存関係にあるいくつかを
インストールする必要がありそうです。

Fedora Core 3でコンパイルしている人はどうしましたか?
うまい解決方法は?
0226デフォルトの名無しさんNGNG
2.5.3使う
0227225NGNG
いや〜ん、2.4.2でどうしているのか教えてよ。
2.5.3はこなれてなくて、別の問題がでるんだよぉ。
0228デフォルトの名無しさんNGNG
2.5.3の問題とやらをフィックスする方が生産的だと思うぞ。
まずはCVS HEADをとってきて試す。
0229デフォルトの名無しさんNGNG
gtk1.2入れればOKと自分で書いているのに。
0230225NGNG
お前らって本当に使えねぇな。ったくよぉ。

CVS上の最新は試してないけど、2.5.3のスナップショットでもgtk-configを使ってるじゃん。
いくつかのrpmを手で入れちゃったり変な事をして強引にやっちゃった。

ネット上で探したら
yum install gettext-devel gtk+-devel curl-devel libgd-devel
だけで解決するような気もする。もう知らん。
0231デフォルトの名無しさんNGNG
>>230
gtk-configはヘッダファイルを見つけたりライブラリのリンクに使うものだから
gtk+-develが正解。つーか、初歩的な話じゃないか。
0232デフォルトの名無しさんNGNG
230はアタマ悪いなぁw
0233デフォルトの名無しさんNGNG
>>230って本当に頭悪いなあ。ったくよぉ。
0234デフォルトの名無しさんNGNG
頭が悪いというか、要領が悪いな。
gtk-config rpmをキーワードにググれば済んだ話で。
0235デフォルトの名無しさんNGNG
2.5.3で--enable-gtk --with-gtk2だったらpkg-config gtk+-2.0するはずでは。
0236デフォルトの名無しさんNGNG
>>225
libgtk無しにwxWidets使うの?motif?
0237デフォルトの名無しさんNGNG
つーかFedoraだとrpmになってるべ。CoreかExtrasかどっちか忘れたけど。
0238デフォルトの名無しさんNGNG
LaTeXソース取り込みの件でWJP-devにポストしたんですが,反応なしだよ.
翻訳プロジェクトの人たちはもう飽きて解散したのかな?
0239デフォルトの名無しさんNGNG
>>238
心配だねぇ。俺も結構楽しみにしてたんだけど。
別に反応がないならいいんじゃない?ていうか、やってください。TEXにしとけば使いやすいし。
238さんが動けばプロジェクトが活発になって他の人も反応するかもしれないし。
よろしくたのむよ。俺は期待してる。
0240デフォルトの名無しさんNGNG
WX_2_5_3 の docs の下を import して作業をはじめました.
とはいえ結局プロジェクト管理者ではないので,新しく手伝って
くれる人がいてもコミッタに登録できません...このまま何の動きもなかったら,
別プロジェクト (wxwidgetsjp) でも立てて拠点を移すかもしれません.
0241デフォルトの名無しさんNGNG
あそっか。だよなぁ。
まぁいま動いてるってことはおまえさんが一番偉いわけで。裁量してくれれば俺たちはなにも言うことないと思うよ。
0242デフォルトの名無しさんNGNG
いや、やっぱり文句言うと思う。だって2ちゃんねらだもん。
0243デフォルトの名無しさんNGNG
くそー。2.6.0が1月4日だと思ってたら4月1日じゃねーか。ウンコー
0244のNGNG
>240
すまん。必要ならメンバー追加するよ。
https://sourceforge.jp/users/nowake
でメールちょうだい。




0245デフォルトの名無しさんNGNG
管理者権限もらいました.お騒がせしました.
しばらくしたら,TeX版の方の翻訳作業のやり方を考えて提案します.
よろしく.
0246デフォルトの名無しさんNGNG
wiki で誰でも更新できるようになったら、翻訳プロジェクトも進むと思うんだけども。
SourceForge って無理なの?
0247デフォルトの名無しさんNGNG
sfのほかのプロジェクトにWikiが設置されているので可能。
0248デフォルトの名無しさんNGNG
Wikiを設置するのは容易だが、翻訳プロジェクトを進めるのは難しい。
日本語ドキュメントにpriority置いてる人は少ないからな。
0249デフォルトの名無しさんNGNG
Amayaが9.0でwxWidgetsベースになった模様。つーか、まだやってたのか。
http://www.w3.org/Amaya/
0250デフォルトの名無しさんNGNG
今のやり方だと、気になる一文だけ修正したいときにマンドクセになるので、
できたら Wiki がホスィです。
0251デフォルトの名無しさんNGNG
ためしにAmaya 9.0をWinXP(Luna)で使ってみた。
いつの間にかタブブラウザになっていたのには驚いた。

コントロールは基本的にクラシックスタイルで描画されるが
一部のスクロールバーだけLunaスタイルで描画される。
これはAmayaのつくりが甘いから?
wxって全部Lunaで描画させることもできるよね?
0252デフォルトの名無しさんNGNG
>>250 が管理も請け負ってくれるなら設置してもいいんじゃない?
0253デフォルトの名無しさんNGNG
そんじゃイラネ
0254デフォルトの名無しさんNGNG
>>252
「管理」って具体的に何するの?
0255デフォルトの名無しさんNGNG
あるバージョンの日本語訳ドキュメントのリリースをゴールだと設定すれば
それまでの道程に横たわる、翻訳そのもの以外の全ての作業が「管理」じゃないかな。
既存の文書をフォーマット変換してWikiにつっこむところから始まり、
たとえば修正を日々監視して、SPAMがあれば取り除き、おかしいと思われる修正があれば
検討項目としてあげ、最後にフリーズしてリリース用にフォーマット変換。
Wikiのアップグレードやトラブル対処等のメンテナンスも必要だ。
0256デフォルトの名無しさんNGNG
>たとえば修正を日々監視して、
何故特定個人が行う必要があるのか。
>SPAMがあれば取り除き、
何故特定個人が行う必要があるのか。
>おかしいと思われる修正があれば検討項目としてあげ、
何故特定個人が行う必要があるのか。
>最後にフリーズしてリリース用にフォーマット変換。
何に変換するのか。

wikiは誰でも編集ができるってことを知らないんだな。
0257デフォルトの名無しさんNGNG
編集権を譲渡できるというのは、責任を委譲できることとイコールではないのだよ。
0258デフォルトの名無しさんNGNG
まあ、誰かがWikiを仕立ててくれたならば、暇なときに出来るだけ弄るよ。漏れは。
多少品質が悪くても、何も進展が無いよりはましと思うし。
ただ長期的には、複数の半名無しでどれだけ衝突無く編集出来るかって問題はあるのかもしれんけど、
それはある程度人が集まった場合の話d(ry
■ このスレッドは過去ログ倉庫に格納されています