- changed title to 修正案:キャラクター情報ダイアログをCWに近づける
- edited description
修正案:キャラクター情報ダイアログをCWに近づける
現状で依然目立つCWと異なる部分の一つとしてキャラクター情報ダイアログがあります。
これを近づけたいと思ってcharainfo.py
を見ていたのですが、現在の実装はwx.Notebookのスタイルbottomで簡易実装しているので
CWに合わせるにはボタンのイベントで変わるように丸々書き直すしかないっぽいです。
それで自分にはまだ身に余りますし多分長月さんも手を付けたくないと思うのですが、現状はあまりにも不格好すぎると思うのでWx.AuiNotebookと小スペースを使うことを考えました。 これ(中央)を暫定的にで構わないので取り入れていただくことはできないでしょうか。 (ついでですがクラシックスキンはアイテムが道具となっているようですのでこれも修正したいです。)
Comments (32)
-
reporter -
repo owner AuiNotebook
には高解像度での問題は無いかな?と思って手許で試しましたがそんなことは無いようでした。私としては変更に異存はありませんので、Pull Requestをくださればマージします。アイテムについてですが、これだけ半角カタカナ4文字である事を問題視して私が「道具」に変えたのではなかったかと思います。半角カタカナは経験則として避けたいですし、フォントによっては幅が他のタブと異なる問題も出ます。
ただ、Unicodeの採用で経験則は成り立たなくなっていますし、幅の問題も些細といえば些細です。どうしてもアイテムがよいという方がいらっしゃればそうしてしまっても構いません。個人的には、漢字2文字で揃っていた方が美しい(し幅も揃えやすい)と思うのですが。
-
reporter ありがとうございます。
大体終わったのですが、
self.notebook = wx.aui.AuiNotebook
にするとdef OnClickLeftBtn
のwin.draw(True)
でなぜかAttributeError: 'Window' object has no attribute 'draw'
が出てしまうので難航しています…。 (win.Refresh()
に置き換えるとエラーは出なくなるが解説と経歴が更新されない)・技能カード/アイテムカード/召喚獣カードはどうすべきでしょうか? というのもそれにあたる文字列がskin.xmlにないっぽいです。 調べたところ、各バリアントだとこれらは以下のように書き換わっています。
SFバリアント 召喚獣カードが特殊 カード 学園バリアント 召喚獣カードが守護霊カード 大江戸バリアント 各カードが技能絵札 道具絵札 召喚獣絵札 現代Ⅰ型&妖魔バリアント 変更無し
個人的には問題を顕在化させてしまうので表示するのは完全な実装時まで保留でいいかと思うのですが、 学バリの守護霊などは重要なディティールに見えますので 一応スキンの自動生成時には読むようにして備えておいた方がいいんじゃないかと思う次第です。
Classicスキンは、自分は公式準拠的なものととらえて使用・紹介してきたので 種族要素をオフにするのと同様の理由で思想の混入は極力排した方がいいと考えていましたが、 公式準拠以外のコンセプトがあるのでしたら明確化すればそれはそれで構わないと思います。 (ゲームオーバー画面で「タイトルに戻る」選択肢が追加されているなどもありますし)
-
repo owner 各サブパネルからは
CharaInfo
本体のdraw
を呼び出しているのですが、その時にself.Parent
を使って親コントロールをたどる事でCharaInfo
に到達するように現状ではなっています。これは本質的によくない設計です。コントロールの階層構造が変化するだけで破綻するからです。
AuiNotebook
は普通のNotebook
と異なる内部構造を持っているので、現実に破綻してしまったのだと思います。これを期に、各パネルに対して
CharaInfo
自身のインスタンスを渡すようにして、それを通してdraw
を呼び出すようにした方がよいでしょう。問題に気づいていながら今まで手入れしなかったのも問題なのですが。そ、そこの所は、私が設計したわけじゃないし……
技能カード/アイテムカード/召喚獣カード
省略された部分にピンポイントで独自の文字列があるものですねぇ……。読むようにしました。文字列リソース
"skillcard"
・"itemcard"
・"beastcard"
を使用してください。既存のpull request #1617の存在を忘れてて統合しちゃった……。これくらいは
hg push -f
して分割するまでもないと思うのでマージはサウンドフォントの件より後回しにさせてください。 -
reporter 構造が変わっているといっても
Print win
を行うとPanel6個とwx.aui.AuiTabCtrlがありますし、解説と経歴以外はrefreshで上手く更新されるのでそれで通したくて一日悩んでいたのですが、解説と経歴では多分チラつき対策かなんかだと思うのですが、draw→if update→_init_view()と一手順増やしてupdateが渡された時だけ更新するようにしてるんですね。なのでその手順を飛ばして、_init_view()をそのままOnPaintにコピペしたら上手くいきました。でもこれ消しちゃ不味いですよね? この場合winからDescPanelとHistoryPanelに
update
を渡すのってどうやって書けばいいんでしょうか…。 -
repo owner _init_view()
は表示情報を作成するメソッドです。再描画のたびに情報を作り直すのは無駄なので、アップデートが必要なときだけ呼び出されるようになっています。その手順を飛ばすのは明らかに得策ではありません。self.notebook.GetChildren()
でどんなリストが出てくるかはself.notebook
の型と構造次第です。wx.Notebook
では偶然パネルのリストが取れていたようですが、AuiNotebook
では違うようなので、自前でパネルのリストを作る必要があります。 -
reporter for win in self.notebook.GetChildren() :
後にPrint win
するとコマンドプロンプトに以下が出てくるので リストは取れてると思うのですが、違うのでしょうか?<cw.dialog.charainfo.DescPanel; proxy of <Swig Object of type 'wxScrolledWindow*' at 0x5538688> > <wx.aui.AuiTabCtrl; proxy of <Swig Object of type 'wxAuiTabCtrl *' at 0x2daee50> > <cw.dialog.charainfo.HistoryPanel; proxy of <Swig Object of type 'wxScrolledWindow *' at 0x2bf3c28> > <cw.dialog.charainfo.EditPanel; proxy of <Swig Object of type 'wxPanel *' at 0x59db170> > <cw.dialog.charainfo.SkillPanel; proxy of <Swig Object of type 'wxPanel *' at 0x2faad38> > <cw.dialog.charainfo.ItemPanel; proxy of <Swig Object of type 'wxPanel *' at 0x5420dd8> > <cw.dialog.charainfo.BeastPanel; proxy of <Swig Object of type 'wxPanel *' at 0x4519278> >
-
repo owner 確かに子コントロールの中に各パネルが含まれていますが、
wx.aui.AuiTabCtrl
も含まれており、それにはdraw
は無いのでエラーが起こります。isinstance
やhasattr
などで無理やり対象外のコントロールを除外してしまう事もできますが、それよりはプログラマの手できちんと整理したリストを作ってそれを対象に処理したほうが真っ当ですし、将来的に問題になりにくいです。 -
reporter ああ…! 一つでもないとエラーが出るんですね。
ありがとうございます、延々出てくるAttributeエラーの謎が氷解しました。
-
reporter pull request #1621
おかげさまで完成できました。おおむね野望通りできて満足です!
CWのグレー背景は一行で簡単に合わせられますが、やってみて暗すぎたので保留しました。 将来的にはスキンオプションにできるといいかなぁと思います。
-
reporter - changed status to resolved
結局タイトルパネルを独立して作ったので表示させないわけにはいかず、 SFバリアント、学園バリアント、大江戸バリアントを使用されている方でタイトル表示が気になる場合、スキンを作り直すか手動での追加が必要です。
お手数おかけします。
-
repo owner その問題はせめて
ChangeLog.txt
に書いといた方がよさそうですね。そういえば更新の中に入ってなかったので今から入れておきます。 -
repo owner pull request #1624
ChangeLog.txt
の更新です。 -
「解説」タイトル部分が追加されたことで、MSフォントでは確かにCWに近い外見になったと思いますが、フォントを変更していると解説文の位置ずれが顕著になってしまいます。
これがどうにも気持ち悪いです。位置ずれの解決か、「解説」タイトル部分の非表示を希望します。
というか、「解説」タイトル部分の非表示を強く希望します。私はCWの頃からずっと、これはいらないバーツだと思っていました。
-
reporter - changed status to open
上が「正式名称」、下のタブは「略称」というUIデザインはCWとして守るべきものだと思います。
しかし元々のPyの実装がそうなっていたので、タイトルパネル非表示オプションをつけるのであれば、自分は問題ありません。
(多分簡単ですし、自分が蒔いた種なので自分の方で作業すべきと思いますが、その場合はオプション関数名を長月さんの方で決めて頂けると助かります)
-
repo owner pull request #1631
どうも元々位置計算がずれていたようなので手入れしました。これでどうでしょうか。これでもずれるようなら、フォント設定を教えていただけると助かります。
タイトル部分は、私も長年いらないと思っていたのですが、バリアントでテキストが書き換えられていてデザインの一部になっているという指摘は真っ当だと思えました。「表示されるのが許せない」というほど強く思われているのでしたら、一人そう思っているなら他にもいると考えられますし、オプション化も考えます。
-
cardwirthpy_20161106c.zip
で確認したところ、依然としてずれたままです。昨日のSSと寸分違いません。フォントはY.Oz BoxのMogaMinB(MogaMincho Bold)を使っています。同シリーズ内の等幅フォントはすべてずれます。また、Noto FontのNoto Sans Mono CJK JPも同様にずれます。他に日本語等幅フォントをインストールしていないので、これ以外は検証できません。
>オプションの追加
一晩置いて考えましたが、UIの変更に対する不満はユーザーの慣れによって概ね解決できます。些細な表示をカスタマイズするオプションを増やすことは、なるべくしてほしくありません。
私がこの非表示を望んだのは、改悪(主観による評価です)を感じて悲嘆したからですが、以前を知らなければどうも思わなかったはずです。解説タイトル非表示オプションは新規ユーザーにとってはほとんど無用のオプションで、既存ユーザにとっても必須ではなく、またこの改変を理由にPyの継続利用をやめるというほどの悪化ではありません。
ただ、この改変によって背景画像の位置がやや下に寄ってしまっているので、そこは修正していただきたいです。Pyのほうが僅かに高さが小さいのに、背景画像はより下に位置しています。
-
reporter 継続利用をやめるといっても、そもそも他のエンジンではすべて表示されており、 フォントのカスタマイズ機能もないので選択肢はないようにみえます。 (あるにはありますが、それならそちらのフォントをMS明朝幅に改造してもよいでしょうし)
多分BWで想定されていた表示が崩れたのがお怒りの原因かと思いますし、 自分の立場でも成果物のインフラが易々と揺らぐことは許容できません。 (1.20-1.50やバリアントから移行する人にとってもそれは同じと考えるからこそ、このような優先度の低い仕様合わせをしているわけですが) やはり通常のオプションで不満なら、スキンのオプションにしたらいいのではと思います。 スキンの方の高度なオプションは別段GUIに表示させきる必要もないはずです。
とりあえず自分の作業した縦の部分で数ピクセルズレていたので直しているのですが、CWのウインドウの横幅302、解説のフォントMS明朝13に対して、Pyは横幅デフォルト300よりMS明朝14で「―」を*20+20したサイズの方が大きければそちらを適用するという感じになっているようです。
MS明朝13の「―」*20=260 MS明朝14の「―」*20=300
なので+ 20によってMS明朝にしていてもCWより横幅がデフォルトで18大きくなっています。多分+20は要らないんじゃないでしょうか?
どうでもいい話ですが、1.28と1.50でlevelの位置がずれているようです。(1.50は極端に右に寄ってるので多分移植時のバグ)
-
いえ、私の嘆きはBloodWirthをはじめとする私の成果物に無関係です。ですので、なおさら優先するよしはありません。
ユーザーの慣れによって概ね解決できるというのは、ユーザー(私)がかつてを忘れて今に慣れればいいということです。
-
reporter わかりました。とはいえ今回はこちらしたことで嘆くような結果になってしまってすいません…。
pull request #1632
どんなフォントでも大体真ん中にくるようになったと思うのですが、 どうもCWと比較すると解説の行間に余裕がなさすぎるようです。(色んなところに分散しててよくわからない…)
-
repo owner pull request #1633
フォントの正体さえ分かれば対応は簡単なので、私の方でもpull request #1632の上に解説文がずれないように手入れしました。たぶんこれでよくなっていると思います。
CWではひょっとして解説を行ごとに分けて固定行高で描画しているんでしょうか?
-
reporter 解説を行ごとに分けて固定行高で描画
あー!クーポンがそういう形式ですしそういう可能性もあるかもですね
-
repo owner 上記Pull Requestをマージしました。
とりあえずこれで横の位置ずれは直っていると思います。
-
ありがとうございます。ソースからの実行で試してみましたが、Moba/Moboフォントでは概ね治っています。
高解像度でスクロールバーが表示される場合にずれます。また、高解像度ではスクロールバーがなくともわずかにずれが感じられます。
私が常用しているフォントではありませんが、Noto Sans Mono CJK JPでは表示の乱れが悪化しています。
-
reporter スクロールの有無でずれるのはCWもかと思います。というより比較するとCWの方が僅かにズレているのですが、 こっちの方が綺麗だし流石にそこまで合わせる必要はないかと思います。
デフォフォント以外でそこまで神経質に求めるなら 当初の
(self.GetClientSize()[0] - dc.GetMultiLineTextExtent(self.text)[0])/2
、13pixelで合わせる方が使えるフォントは増えるはずです(Pフォントでもこれはこれで)が、自分としては現在でも許容ラインです。 -
reporter https://bitbucket.org/akkw/cardwirthpy-reboot/downloads/CWPyakktest.zip
上記の比較用に初ビルドしてみました。 (アルバムの情報バグは直っていません)
-
repo owner self.text
の幅を計算に使うのはいけません、というのは、実際に表示される解説テキストの幅はキャラクターによって様々だからです。テキストの内容によって左側の位置が大幅に変わってしまいます。またしてもずれていた原因ですが、おそらく計算した時点と実際に表示された時点で表示領域の幅が変化していたせいです。pull request #1634で対処しましたのでレビューをお願いします。
スクロールバーが絡むと話はさらにややこしくなります。スクロールバーの幅を取得するAPIはwxにはありません。Windows APIを叩く必要がありますが、そこまでするべきかとなると正直言って疑問です。
-
ありがとうございます。左右のズレは見られなくなりましたので、承認しました。
行高の違いによる縦方向の表示差異は残っていますが、左右でずれないのならUIとして問題視する必要はないと思います。
スクロールバーについては、前回試した時点では、x1でずれないのに拡大時にのみずれていたので、スクロールバーの幅分のずれがあるのとないのと、どちらが正しい状態なのかわからないので言及していました。今回、拡大状態によらずスクロールバーの幅分ずれているので、違和感はありません。
-
reporter - changed status to resolved
ではクローズします。
三者三様に譲れない点があったということで…お疲れ様でした。
-
reporter すいません、一点見落としがありました。
解説パネルで「背景の透かし」を
csize
で計算しているためself.csize
で作っている他のページと位置がズレているようです。どちらに合わせるかですが
csize
だとスクロールの有無で変動するので元の通り解説initでself.csize
を作る方が良いかと思います。 -
reporter また「# カード画像の後ろにある羽みたいなの」の高さは現在cw.wins(50)になっていますが52が適正位置のようです。 2pixelぐらいいいかとも思っていたのですが、ぴったり顔画像に当てはめる素材が出てきた場合どうせ求められると思いますし、すでにBloodWirthが影響が出そうな規格外で作られているので心苦しいのですが、将来の被害を考えるとここで合わせておいた方が良さそうです。
-
repo owner pull request #1635
手入れして問題が出るような事も無いようですし、レビュープロセスは省略してしまいます。いざ問題が出たらお伝え下さい。
- Log in to comment