hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

EBWin4.7 公開!~ドッキングウインドウ、単語帳~

予告していたEBWin4のドッキングウインドウ対応が実用レベルに達したので、先行公開することにした。

EB series support page

 合わせて以前から気になっていた問題点にいろいろ対応したので、過去最大のアップデートになった。

ドッキングウインドウ、タブモード

検索結果、ブックマーク、本文などのウインドウを、画面の上下左右に自由にドッキングできる。
タブモードでは辞書毎に本文ウインドウが開くので、タブで切り替えて参照したり、タイル上に配置して、辞書毎に語釈の違いを読み比べたりできる。

押しピンを外すと自動開閉モードになる。下のスクリーンショットでは、右端にドッキングした複合検索がAutoHide状態になっている。「複合検索」のタブをクリックするとパネルが開く。

f:id:hishida:20190519083645p:plain

EPWING系辞書(PDIC,StarDict,MDict,ユーザ辞書)のブックマーク対応

内部的な事情で、これまでのEBシリーズではブックマークに登録できる辞書はEPWING系だけで、PDIC、StarDict、MDict、ユーザ辞書をブックマークに登録できなかった。今回やっと全ての辞書の種類でブックマークに登録できるようになった。
EBWin4以外のプラットフォームの対応だが、ソースの共通化が進んでいるEBPocket for Android はすぐに対応できると思う。Mac版とiOS版は対応に時間がかかる見込みである。

単語帳

今回のもう一つの目玉だが、外部の単語帳を読み込んで検索できるようになった。

f:id:hishida:20190528181441p:plain

単語帳に読み込んだ語を選択すると、現在選択された辞書で検索を行う(串刺し検索も可)。
見本の単語帳として、次のテキストデータを配布ファイルに同梱している。

www.newgeneralservicelist.org


本当は単語の学習にはAnkiなどのほうが向いていると思うが、辞書を引いてみたい場合もあると思うので、実験的に導入してみた。

 

EBWin4 のドッキングウインドウ化を実験中

KWIC Finderのリニューアルで導入したドッキングウィンドウがなかなか便利なので、EBWin4にも導入してみることにした。
C#Windows Form のドッキングウィンドウのライブラリには、DockPanel Suiteを使用している。

DockPanel Suite - The .NET WinForms Docking Library

ドッキングウィンドウ化したEBWin4の画面例。

f:id:hishida:20190519083645p:plain

検索結果、ブックマーク、検索履歴、複合検索パネル、辞書本文を独自のペインとして画面上の好きなところに配置できる。
辞書本文はタブ形式で表示することもできるし、タイル形式で配置することもできる。

次の画面では、辞書本文はタブ形式表示で、複合検索パネルと検索結果を並べて表示している例。

f:id:hishida:20190519083709p:plain

手元ではほぼ動いているが、大型のアップデートなのでまだ一ヶ月くらいはテスト期間をおいてから公開したい。

こういう便利なライブラリが簡単に見つかるのがC#のいいところだ。EBMacも同様の複数辞書表示をしてほしいという要望が過去にあったが、Mac版の実装はたぶん無理だと思う。

Android 1.6用のEBPocket for Androidの公開

IS01やIS02などの古いAndroid1.6用のEBPocketがGoogle Playから落とせなくなっているという報告をいただいたので、Android1.6用の最終のEBPocket 1.15.0を公開することにしました。

下記HPからダウンロードし、実機に転送してファイルブラウザでタップするとインストールされます。

EBPocket for Android

読書尚友 夜間モード

macOS Mojave でダークモードが搭載され、他OSでも流行りそうな気配である。

AndroidではAndroid N Developer Preview(初期版)では夜間モードがあったが、実際の製品では搭載が見送られた。だがスマートフォンの場合はバッテリの持ちが長くなるメリットがあるため、将来的に標準搭載されると思う。Twitterのようにアプリレベルで夜間モードを搭載しているものもある。

実はSupport Library の AppCompat 23.2.0 以降、DayNight テーマが導入されており、アプリレベルでの実装が簡単になった

qiita.com

ということで読書尚友にも夜間モードを実装してみた。

f:id:hishida:20190206163531j:plain

f:id:hishida:20190206163543j:plain

f:id:hishida:20190206163555j:plain

f:id:hishida:20190206163606j:plain

読書画面の背景色はこれまでもカスタマイズできたが、すべての画面のパーツの背景色をダークモードに切り替えられるのがミソである。

 

実装方法

ActivityのテーマのベースにTheme.AppCompat.DayNightを使用します。

styles.xml

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>

<style name="AppTheme.ActionBar">
<item name="windowActionBar">true</item>
<item name="windowNoTitle">false</item>
</style>

</resources>

 

 

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#303F9F</color>
<color name="colorAccent">#FF4081</color>
<color name="textColorPrimary">#FFFFFF</color>

</resources>

 

 

AndroidManifest.xml

<activity android:name="MainActivity"

android:label="@string/app_name"              android:theme="@style/AppTheme.ActionBar" >

</activity>

 

 アプリでは、OnCreateの先頭で夜間モードを設定します。

MainActivity.java

public void onCreate(Bundle savedInstanceState) { public void onCreate(Bundle savedInstanceState) {

if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {  AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO);
}
super.onCreate(savedInstanceState);
.....

 

 

AppCompatDelegate.MODE_NIGHT_AUTO 自動切替
AppCompatDelegate.MODE_NIGHT_NO 夜間モードオフ
AppCompatDelegate.MODE_NIGHT_YES 夜間モードオン
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM システムに依存

 自動切替を実験したところ、22:00に夜間モードに切り替わるようだ。

 

読書尚友 ファイラーの強化

読書尚友の改良の続き。ローカルファイルのファイラを強化し、複数ファイルを選択してコピー、移動、削除等ができるようになった。これでファイラとしては最低限の機能が揃ったと思う。

f:id:hishida:20190206163339j:plain

 まだ課題があるとすれば本棚の改良ぐらいだろうか。

読書尚友 小改良

読書尚友の小改良を続けている。

読み上げの速度と音程の調整

標準の読み上げ速度は日本語だと遅すぎ、英語だと速すぎに感じるので、速度を調整できるようにした。

f:id:hishida:20190206192326j:plain

共著や翻訳者がいる場合の作者一覧の改良

翻訳の場合は著者と翻訳者があるので、作者一覧でそれぞれの一覧が表示できるようにした。

f:id:hishida:20190206192339j:plain



 

読書尚友からの外部辞書検索

Androidの開発環境をMacからWindowsに移行したのを機に、読書尚友の開発をボチボチ再開しようと考えている。

まず手始めに、外部辞書検索ボタンを設けてEBPoketを起動できるようにした。

 

f:id:hishida:20181227182436j:plain

これまでも共有→アプリケーションでEBPocketを選択すれば検索ができたが、2ステップ必要なのと、EBPocketを終了して戻る場合も、戻るボタンを4回押す必要があった。

辞書検索ボタンで起動した場合、直接検索結果画面が開き、戻るボタン一回で画面を終了して戻ることができる。これで辞書引きが苦でなくなった。

f:id:hishida:20181227182450j:plain

本当はポップアップウインドーが開く形にしたかったが、それはまた次の機会にしたい。

EBPocketのAndroid6.0以降での障害について

なお、EBPocketをAndroid6.0以降の環境で初めてインストールするときに、異常終了するケースがあることが判明したので、対応した。今回Windows上にエミュレータ環境を作ったことがきっかけで表面化し、気づくことができた。

Android6.0以降ではストレージに書き込みを行うアプリはパーミッションを与えなくてはならないが、パーミッションを与える前に辞書ディレクトリを生成しようとしていたことが原因だった。