-
- 1
- 2010/04/09(金) 15:12:36
-
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。
本家
ttp://www.wxwidgets.org/
wxWindows日本語プロジェクト
ttp://wxwindowsjp.sourceforge.jp/
Cross-Platform Programming with wxWidgets
ttp://wxwidgets.info/
Let's wxWidgets
ttp://dot-gray.s33.xrea.com/
wxWindowsで始めるC++ GUIプログラミング
ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
ttp://0xcc.net/pub/uu-2004-08/
前スレ
【GUI】wxWidgets(旧wxWindows) その4【サイザー】
http://pc12.2ch.net/test/read.cgi/tech/1214657360/
-
- 95
- 2010/11/13(土) 11:25:39
-
>送信先がhttpならHostをwww.google.comに書き換えないといけないと思うんだが、俺間違ってる?
あってる
-
- 96
- 2010/11/13(土) 11:31:27
-
wxURL_NOHOST
-
- 97
- 2010/11/13(土) 11:34:21
-
これかな
http://yomi.mobi/read.cgi/pc8/pc8_tech_1097524712/515-
-
- 98
- 2010/11/13(土) 11:54:08
-
wxRIchTextCtrlの日本語インライン入力パッチありませんか?
-
- 99
- 2010/11/23(火) 18:39:00
-
おや規制明けてる。
>>98
もう解決してる気がするけど、OS毎で処理系が全く異なる上、
日本と中国と韓国くらいしか影響がないのでそんな便利なパッチはたぶん無い。
RichTextはわからんが、Win上のwxStyledTextCtrlと同じなら、
MSWWindowProcをオーバーライドして、
WM_IME_STARTCOMPOSITION、WM_IME_COMPOSITIONあたりを捕捉、
Caretの位置から自分で逐次IMEの位置情報を変更してやればいいと思う。
しかし上でwxURLの話もされてるけど、HTTP通信周りの処理、
結構ボロボロだなコレ。
そういう用途で使ってるユーザがほとんどいないんだろうが・・・。
-
- 100
- 2010/11/23(火) 19:22:29
-
UI以外の部分でwx使う意味ってあんまりないからじゃない?
-
- 101
- 2010/11/24(水) 19:51:50
-
そうか
-
- 102
- 2010/11/25(木) 23:22:37
-
もう誰か作ってるだろと探したけど
wxOnigurumaとか無かった。残念。
-
- 103
- 2010/11/26(金) 07:32:10
-
詳しい方ちょっと教えて下さい…。
ちょっと前からxchmというヘルプビューアを日本語表示できるようにしているのですが、
ShiftJIS->Unicodeの変換がうまくいきません。
一応wxString、wxMBConv、wxCSConv、wxEncodingConverterのリファレンスと
ヘッダにある関数の組み合わせは一通り試したつもりですが、変換されるはずが
変換されなかったり、Initに失敗したりと散々です。
結局g_convert関数(GLibのiconvラッパー)で逃げましたが、wxWidgetで
書かれているソースに突如異物混入みたいで非常に美しくありません。
動作はしたので後は趣味の問題ですが、なんとかならないでしょうか?
環境はDebian、wxWidgets 2.6.7.1です。
-
- 104
- 2010/11/26(金) 21:51:03
-
2.9のドザーな俺にはアドバイスはできんが、
この辺で問題視されてる「wxMBConv はいくつかのサブクラスを持っていて、
こいつらはことごとく wchar_t の内部表現が UCS であることを仮定してる。」
あたりが原因じゃないのか?
ttp://diary.imou.to/~AoiMoe/2004.09/middle.html#2004.09.13
-
- 105
- 2010/11/26(金) 23:29:00
-
>>104
早速感謝。
あー、そのページ、自分も見ました。
今ネット上にある日本語ページの中では一番内容が濃そうでしたね。
wxWidgetsが文字コード回りで大分無茶をしてるらしいことだけは判りました。
実際、文字コード変換には一旦wchar_t型を経由しないとならんのですけど、
charのSJIS->MB2WC->WC2MB
とかやると、SJISでもUTF8でもない謎コードになっちゃうんですよね。
ちなみに、前スレでもWin使いの方が全く同じ趣旨の質問されてましたけど、
結局やはりWinAPIでなんとかしたらしいですね。
やっぱり無理ですかねぇ…。
-
- 106
- 2010/11/27(土) 00:43:27
-
wchar_t の中身がUCS前提なのはこの場合問題じゃないだろ…
>>104 の言っているUnicodeって、具体的に何?wxはUnicodeビルドで、wxStringにしたいの?
SJISからwxStringにしたいのなら、 wxString s(sjis_string, wxCSConv('cp932')); を試した?
コード出さないで質問しても、エスパーじゃない限り回答できないよ。
-
- 107
- 2010/11/27(土) 02:06:26
-
>>106
あ、書き忘れてましたね、すいません。
入力はマルチバイト(char)のShiftJIS、欲しい出力はマルチバイト(char)のUTF-8で、
wxはDebian etchのものなのでUnicodeビルドです。
上のコードはもちろん試しました。
で、そこからどうすればchar型のUTF-8が得られるのか、もしくは別の方法を使うべき
なのかで悩んでいるのが現状です。
ちなみに、成功例はこちら
#include <glib.h>
char *utf8_str = g_convert(sjis_str, -1, "utf-8", "cp932", NULL, NULL, NULL);
で、これと同等のことをwxで行うにはどう書けばいいか?という質問です。
(この前後にwxベースのコードとやりとりするための処理が入るのですが、それが
また汚いので、できれば回避したいです…)
-
- 108
- 2010/11/27(土) 08:39:35
-
言い訳はいいから問題起こしてる例のコードだせよ
-
- 109
- 2010/11/27(土) 11:28:57
-
>>108
えー、失敗コードはもう全部消しちゃったんですよね…。
てか、ここまでの説明で判る方は判るし、判らん方はそこまででしょう。
この場合、頑張って失敗コード再現しても結果は後者だと思うので、No thank you.
-
- 110
- 2010/11/27(土) 11:41:57
-
エスパーのかたのみお答えください
-
- 111
- 2010/11/27(土) 13:14:50
-
便乗して質問してもいいかな?
wxMBConvとwxCSConvの違いって何?
ヘルプ見てもよくわからん…
-
- 114
- 107
- 2010/11/27(土) 15:03:23
-
http://ja.pastebin.ca/2003497
少なくともUbuntu 10.10では、wxCSConvでちゃんとcp932からUTF-8への変換ができたよ。
Debian etch とか古すぎて使う気にならないけど。
-
- 115
- 2010/11/27(土) 17:00:22
-
>>114
多謝!!
こっちでも試してみましたけど、できた!?ばかな!?
記憶を頼りに前回のコードと比較してみたら、違いが判りました。
OK: wxCSConv(wxT("cp932"))
NG: wxCSConv(wxFONTENCODING_CP932)
…こいつら違う意味なのかよ!?
ちなみに、後者だとSJISでもUTF-8でもないデータになりました。
で、wxWidgetsのソースを読んでみました。
wxCSConv::wxCSConv(const wxChar *charset)
{
...
m_encoding = wxFontMapperBase::GetEncodingFromName(charset);
}
wxCSConv::wxCSConv(wxFontEncoding encoding)
{
...
m_encoding = encoding;
}
で、wxFontMapperBase::GetEncodingFromName(wxT("cp932"))は87でした。
wxFontEncodingはenumなので、じゃあ87はなにかというと、
wx/fontenc.h: wxFONTENCODING_MAX, // highest enumerated encoding value
うん、意味が判らないんですが、これってwx使ってる方からしたら常識だったりしますか?
それと間違えてました、使ってるのはetchでなくlennyでした、スイマセン。
-
- 116
- 2010/11/27(土) 17:17:40
-
C++ の勉強からやり直せ
-
- 117
- 2010/11/27(土) 17:40:21
-
xchmのコード変更完了!
おかげさまで変更箇所が50行が4行になり、かなりすっきりしました。
相談に乗って頂いた方、大変有難うございました。
-
- 118
- 107
- 2010/11/27(土) 18:21:41
-
fmapbaseの中にwxFONTMAP_CP932のエンコーディング名として最初にWINDOWS-932という
文字列が登録されていて、iconv にはこの名前のエイリアスが登録されていないから iconv に
失敗する、、、んだけど、iconv_open に失敗したらWINDOWS-932の次のCP932が利用されるように
見える。なのに失敗してる。
深追いはしてないからどこでコケてるのか判らないけど、とりあえず wxCSConv にはエンコーディング名を
直接渡したほうが、その名前が直接 iconv に渡るから落とし穴が少なそう。
-
- 119
- 2010/11/27(土) 18:27:01
-
なるほど。ありがとう。
-
- 120
- 2010/11/27(土) 18:41:10
-
>>118
あー、そういうことでしたか、なるほど。
感謝!
-
- 121
- 106=114=118
- 2010/11/27(土) 20:54:49
-
名前を間違えて107にしてしまった。
>>117 xchm の修正って、本家にフィードバックする予定ありますか?
Linuxでもchmファイル読めたら便利そう。
-
- 122
- 2010/11/27(土) 22:36:15
-
>>121
フィードバックの予定は特に無いです。
というか本家、まだ生きてるんだろうか?
Ad-hocだけど、ここにパッチ貼っときます。
これでコンテンツと索引がちゃんと日本語で表示されるようになります。
検索の日本語対応は、ぱっと見かなり難しそうだったので保留中です。
むしろ誰かやって下さい…。
ちなみに、Linuxでchm読むだけでしたら他にもいくつかビューアがあるようですよ。
ご参考まで。
-
- 123
- 2010/11/27(土) 22:37:06
-
+diff -urN xchm-1.17.orig/src/bitfiddle.inl xchm-1.17/src/bitfiddle.inl
+--- xchm-1.17.orig/src/bitfiddle.inl 2010-11-27 17:21:37.000000000 +0900
++++ xchm-1.17/src/bitfiddle.inl 2010-11-27 18:00:13.000000000 +0900
+@@ -194,10 +194,10 @@
+ return wxEmptyString;
+
+ if(enc != wxFONTENCODING_SYSTEM) {
+- wxCSConv convFrom(wxFONTENCODING_ISO8859_1);
+- wxCSConv convTo(enc);
+-
+- return wxString(input.mb_str(convFrom), convTo);
++ if (enc == wxFONTENCODING_CP932)
++ return wxString(input.To8BitData(), wxCSConv(wxT("cp932")));
++ else
++ return wxString(input.To8BitData(), wxCSConv(enc));
+ }
+
+ return input;
-
- 124
- 2010/11/27(土) 22:39:25
-
+diff -urN xchm-1.17.orig/src/chmfile.cpp xchm-1.17/src/chmfile.cpp
+--- xchm-1.17.orig/src/chmfile.cpp 2010-11-27 17:21:37.000000000 +0900
++++ xchm-1.17/src/chmfile.cpp 2010-11-27 19:35:02.000000000 +0900
+@@ -1056,10 +1056,8 @@
+ #endif
+ topic = CURRENT_CHAR_STRING(combuf);
+ #if wxUSE_UNICODE
+- else {
+- wxCSConv cv(_enc);
+- topic = wxString((const char *)combuf, cv);
+- }
++ else
++ topic = translateEncoding(CURRENT_CHAR_STRING(combuf), _enc);
+ #endif
+ }
+
-
- 125
- 2010/12/01(水) 16:15:11
-
wxPythonでとあるチャットのクライアントを作っているのですが
wx.(Rich)TextCtrlでは打ち消し線は使えないのでしょうか?
-
- 126
- 2010/12/03(金) 00:13:26
-
>>125
wxFONTFLAG_STRIKETHROUGHを指定したフォントを適用してやるとかで
できるんじゃない?
-
- 127
- 2010/12/04(土) 15:45:14
-
ありがとうございます。
font = wx.FFont(8, wx.DEFAULT, wx.FONTFLAG_STRIKETHROUGH)
self.target.SetFont(font)
FONTFLAG_STRIKETHROUGHを指定してみたのですが、打ち消し線が表示されません。
-
- 128
- 2010/12/05(日) 00:26:59
-
wxWidgets2.8.xに実装されているウィジェットの表示サンプル一覧とかないですかね?
サンプルを実行してみないとどのように表示されるのか判らないのはかなり不便・・・('A`)
-
- 129
- 2010/12/05(日) 02:32:55
-
demosも一緒にインストール汁
-
- 130
- 2010/12/06(月) 23:39:23
-
>>127
ttp://trac.wxwidgets.org/ticket/9907
打ち消し線が有効化されるパッチ。
ただし2.9。
-
- 131
- 2010/12/25(土) 00:41:50
-
>>130
遅れましたが、ありがとうございます。
wxWidgets用のパッチのようなのですが、
wxPythonに適用させる方法がわかりません・・・
-
- 132
- 2011/01/01(土) 17:37:18
-
Androidに対応してくれないかなぁ・・・
-
- 133
- 2011/01/02(日) 03:08:38
-
AndroidやiPhoneもそうだけど、Mac対応(wxCocoa)もしっかりして欲しい。
このままじゃ何時まで経っても64bit化出来ない。
やっぱり企業の後ろ盾がないプロジェクトはきついかもね。
-
- 134
- 2011/01/15(土) 01:11:15
-
Qtは人気あるのに、こっちは盛り上がらないね。
-
- 135
- 2011/01/15(土) 01:25:48
-
QtはLGPLがヤダ
-
- 136
- 2011/01/15(土) 01:32:35
-
>>134
枯れてるからね
-
- 137
- 2011/01/15(土) 14:18:26
-
ほとんど同じ時期じゃね?
wx Initial release 1992
Qt Initial release 1992; 19 years ago
wxの敗因は、やっぱ製品として売り出してないからじゃね?
-
- 138
- 2011/01/15(土) 20:08:32
-
Android => Java, Google
gtk,Mono => Suse, Microsoft
Qt => Nokia, Google, Intel
wxwidget => ???
-
- 139
- 2011/01/15(土) 20:12:46
-
何の矢印だよ、それ。
-
- 140
- 2011/01/18(火) 00:04:15
-
wxRubyノート - ListCtrl を使ってサムネイル一覧を表示してみる - Alone Like a Rhinoceros Horn
ttp://d.hatena.ne.jp/h1mesuke/20100427/p1
のコードを動かしたいのですが日本語パスが使える状態で動かせません
Ruby 1.8.7+wxRuby 2.0.1
動作するけど日本語を含むパスが認識しない
(Ruby 1.8.xがUTF-8のパスを処理出来ないためっぽい
S-JISだと今度はwxRubyがパスを認識出来ない)
Ruby 1.9.2+wxRuby 2.0.1
Ruby 1.9.1+wxRuby 2.0.1(mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe)
Ruby 1.9.1+wxRuby 2.0.0(mingw32-ruby-1.9.1-wxruby-2.0.0-setup.exe)
RubyはUTF-8のパスを処理出来るけど
>@thumb_list.clear_all
のところで固まる
日本語パスが使える状態で動作させる方法があったら教えてください
よろしくお願いします
-
- 141
- 2011/01/18(火) 06:48:23
-
つttp://codepad.org/SaG84FKe
-
- 142
- 140
- 2011/01/23(日) 01:33:16
-
レスありがとう。ってPython!?Σ(゚Д゚)
わざわざ書き直してくれたのに申し訳ないけどRubyでコーディングしたいので・・・
とりあえずいじり回していたら思いついた案
1.Ruby 1.8系を使用。wxImage::load_streamを使う
ファイルの自動判別が出来ない
2.Ruby 1.8系を使用。Rubyのファイルパスを扱うメソッドをUTF-8に対応するように再定義
数が多くコーディング量が多い。デバッグも大変
3.RubyでwxPythonを使う
まだ実験していない。動いたとしても関連ライブラリのサイズがでかくなりそう?
どれもイマイチだ(´・ω・`)
-
- 143
- 2011/01/23(日) 03:01:42
-
Ruby知らんけど、単に文字コード変換するんじゃダメなの?
-
- 144
- 2011/01/23(日) 17:59:40
-
コントロールに画像使うとリソース食うから
サムネにはお勧めできない
-
- 145
- 2011/01/23(日) 19:23:43
-
GUIやるならPythonの方が良いと思うけどなぁ。
Windowsと日本語はもちろんだけど、>>140のBlog見てるとスレッド周りにも
問題あるみたいだし。
このページを共有する
おすすめワード