CustomScript

ページ

2021年1月29日金曜日

画像ビューアー 「NeeView」38.3 更新しました

  • .NET Framework 4.8
  • WPF
画像ビューアー NeeView を 38.3 に更新しました。
不具合修正のみとなります。

38.3

(2021-01-29)

修正

  • PDFのレンダリング解像度不具合修正
  • タスクバーが上や左にあるときのウィンドウ座標復元に関する不具合修正
  • 本棚等で項目を複数選択した時に不自然なスクロールをすることがある不具合修正
  • 「ウィンドウサイズ調整」が正常に機能しないことがある不具合修正
  • スクリプト:パネルリスト項目を選択したときのフォーカスがキーボードフォーカスと一致しないことがある不具合修正
  • スクリプト:ShowInputDialog命令のEnterキー入力がメインウィンドウに影響してしまう不具合修正
  • スクリプトコンソール:exit命令でアプリが不正終了する不具合修正
  • スクリプトコンソール:オブジェクト表示で不正終了することがある不具合修正

変更

  • 「ウィンドウサイズ調整」はウィンドウ状態が通常の場合のみ機能するように変更
  • スクリプトコンソール:オブジェクト表示でネストされたプロパティは省略表示するように変更

166 件のコメント:

  1. いつもお世話になっております。
    既読ラベルについての機能追加のご相談なのですが,ある閾値(5ページや10ページなど)以上読み進めた場合にのみ既読ラベルを付与することは可能でしょうか?
    表紙を見ただけの物と読み進めた物を区別するのが目的です。
    よろしくお願いします。

    返信削除
    返信
    1. 設定の「履歴」ページの「履歴が記録されるページ操作回数」がこれに該当します。お試しください。

      削除
    2. すみません見逃してました。
      ありがとうございます。

      削除
  2. いつもお世話になっています。
    下記 URL で 38.2 のバグについて書き込んだ者ですが、再現できなかったと仰っていた2つ目のバグも含め全て修正されておりましたことを報告いたします。ありがとうございました。

    https://yokuarunanika.blogspot.com/2021/01/neeview382.html?showComment=1611051249873#c6060821770919661501

    ついでといっては恐縮ですが、以下のコマンドの追加をよろしければご検討ください。
    - 無効な履歴の削除
    履歴パネルのメニュー項目にある機能ですが、スクリプトで利用できれば有難く思います。

    返信削除
    返信
    1. ご要望ありがとうございます。
      実装を検討いたします。

      削除
  3. お世話になります。マウスカーソルがスライダーの上にある時に、マウスホイール操作をすると、自分で設定した動作を行ってくれないみたいです。

    返信削除
    返信
    1. 現状では、パネルやスライダー等のコントロール上でのマウス操作はコントロールに対する専用操作になるため、仕様となります。

      削除
  4. こんにちは。キーボード操作メインで閲覧しているのですが、本棚について質問があります。
    本棚パネルにて、キーボードの左右キーでファイルを移動する動作を無効化するような設定はありますか?

    というのも、本棚の表示方法が一覧・バナー・コンテンツ・サムネイル(1列)の場合、左右キーの操作は常に既定のコマンドであるページ移動(前のページに戻る/次のページに進む)なのですが、
    サムネイル表示でなおかつ複数列表示している場合、左右キーはまずファイルの移動が優先され、それ以上の移動できない場合にコマンドのページ操作に移行するため、ページ移動に必要なキー操作が増るためです。

    サムネイル複数列表示の際も、上下キーはファイル移動・左右キーはコマンド操作のページ移動だと楽なのですが…

    返信削除
    返信
    1. リスト選択コントロールの標準動作となります。現状では設定できません。

      > サムネイル複数列表示の際も、上下キーはファイル移動・左右キーはコマンド操作のページ移動だと楽なのですが…

      フォーカスがメインビューに合っているときにご要望の動作になると思います。フォーカスを移動するにはメインビューをクリックするか「メインビューにフォーカスを移す」コマンドを使います。

      > サムネイル表示でなおかつ複数列表示している場合、左右キーはまずファイルの移動が優先され、それ以上の移動できない場合にコマンドのページ操作に移行するため、

      こちらの挙動は問題があるため、サムネイル表示での方向キー操作をメインビュー操作に伝播させない修正を予定しています。

      削除
    2. ありがとうございます。フォーカスを移すを使ってみます!

      削除
  5. いつも便利に使わせていただいております。
    早速なのですが、一つご要望がございます。
    以下の条件でNeeViewを使用するとメニューのファイルの表示スケールが崩れてしまいます

    ・4Kモニターでスケーリングを150%に設定
    ・タイトルバーを表示しない
    ・NeeViewウィンドウを最大化

    これでメニューバーの【ファイル(F)】を開くとアップスケーリングされずにドロップダウンリストが小さく表示されてしまいます
    参考画像>https://i.imgur.com/nsy812N.png

    他のメニュー項目(表示、画像、移動、等)は正常に表示されます

    NeeViewウィンドウを縮小したりタイトルバーを表示させると正常に表示されます。
    参考画像>https://i.imgur.com/n2pS5AS.png

    お手空きの時にご確認いただけましたら幸いです

    返信削除
    返信
    1. ご報告ありがとうございます。
      ディスプレイ1:100%、ディスプレイ2:150%のマルチモニターでディスプレイ2で最大化したところ現象を確認できました。
      対策を検討いたします。

      削除
  6. こんにちは。
    いつも便利に利用させてもらっています。

    以前にこちらのblogのコメント欄で、Win7環境におけるサムネイルのポップアップ表示について相談させていただいた者です。
    その節はどうもありがとうございました。
    http://yokuarunanika.blogspot.com/2020/03/neeview362.html?showComment=1587385047764#c8901679867981395922


    あれからご連絡を差し上げないままだいぶ経ってしまいましたが、新たな情報と追加の相談になります。

    件のWin7機で生成されたサムネイルキャッシュ(Cache.db)の中身をのぞいてみたところ、問題のサムネイルは画素密度情報(「水平方向の解像度」及び「垂直方向の解像度」のプロパティ)が異常値(96ppi以外の値)になっていることがわかりました。
    そして、NeeViewではその情報を参照してポップアップサイズを変化させている(ように見える)こともわかりました。
    一方、なぜサムネイルの画素密度情報が異常値になってしまうのかについてはよくわかりませんでした。(おそらく何らかの環境要因なのだとは思いますが...)

    つきましては、もしよろしければ下記いずれかの対策をご検討いただけないでしょうか。
    a) NeeViewのサムネイル生成処理において画素密度情報を強制的(?)に96ppiに書き換える
    b) NeeViewのポップアップ表示処理において画素密度情報を無視する(96ppi相当、或いはモニタのスケーリングに応じた値で処理する)

    この問題にハマる人はそれほど多くない気がしているので、優先度は低くてかまいません。


    --
    以下、参考情報です

    問題の根源と思われる症状:
    Cache.dbに格納されるサムネイルの画素密度情報(ppi)が96ppi以外の値になる

    症状の再現環境:
    手元のWin7環境のみ(手元のWin10環境では確認した限りどんな画像のサムネイルでも96ppi固定となる)

    症状解決の見込み:
    いまのところなし(原因不明)

    画素密度情報の確認手順:
    1) SQLite管理ツール(DB Browser for SQLite - https://github.com/sqlitebrowser/sqlitebrowser)でCache.dbを開いて、thumbsテーブルの当該レコードのValueデータをファイルとして出力
    2) 出力したファイルのプロパティダイアログの詳細タグに表示される「水平方向解像度」「垂直方向解像度」を確認

    画素密度情報の異常傾向:
    ・オリジナルの画像に画素密度情報が設定されている場合 -> オリジナルの情報が引き継がれる
    ・オリジナルの画像に画素密度情報が設定されていない場合 -> 法則は不明だが96ppiではない値になる

    ポップアップサイズへの影響:
    ・NeeViewのポップアップサイズは96ppiからの偏差量に反比例する(偏差量が負数の場合はポップアップサイズが大きくなる)
    ・偏差量が極端な負数になる場合はポップアップの幅がモニタ幅全域に拡大するが、なぜか高さには一定の制限がある模様
    ・異常値を含むCache.dbさえ読み込めば、他の環境でもテスト可能(cache.dbを正常に生成できる環境でもポップアップサイズに影響が出る)

    テスト用ファイル(対策bの確認用):
    http://whitecats.dip.jp/up/download/1613385858/attach/1613385858.zip
    (pass:nv)

    返信削除
    返信
    1. ご報告ありがとうございます。
      調査、対応を検討いたします。

      削除
    2. Canary0217 でサプネイルポップアプをピクセルサイズで表示するように対策しました。
      もしよろしければご確認下さい。

      削除
    3. お返事ありがとうございます。
      ポップアップサイズが画素密度情報に影響されなくなったことが確認できました。

      ご対応ありがとうございました!

      削除
  7. 大変便利なソフトいつも利用させて頂いてます。
    2つ要望があるのですが
    ・ファイルをD&Dしたときに、neeviewをアクティブウインドウにしたい
    ・複数書庫をD&Dしたときに、プレイリストを作成して表紙を選んで閲覧する従来の方式と、すべて読みこんで前後のブック移動でシームレスに閲覧できるように選択式にできないでしょうか?
    (わかりにくかったらすみません。Mangameeyaというソフトがあるのですが、それと同様に動作するようにしたいという意味です)
    お忙しいところすみませんが、よろしくお願いします。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  8. 「パネル自動表示判定のエリア幅」絡みでいくつか気になった挙動(Canary版含む)がありますので報告します。
    ご確認、ご検討頂けるとありがたいです。


    1) [Canary0217] - サイドパネルが非表示であっても、サイドパネルが表示されていた領域にポインタがある場合は「サイドパネル上でのメニューバーの自動表示判定のエリア幅」の値が適用されているようです。
    サイドパネル上にポインタがある場合にだけ「サイドパネル上での...」を適用させることは可能でしょうか。

    2) [Canary0217] - 現在の項目名から自明ではありますが、「サイドパネル上でのメニューバーの自動表示判定のエリア幅」は上端側(メニューバー)だけが対象で、下端側(フィルムストリップ)は対象外のようです。
    リスト項目を一覧表示モードにしている場合等「パネル自動表示判定のエリア幅」の設定値によっては下端付近の要素をクリックできなくなる可能性を排除するために、項目名を修正した上で下端側もケアできないでしょうか。

    3) [正式版 及び Cnary0217] - ポインタが(同一の)パネル(フィルムストリップ含む)上にあっても、下記すべての条件が成立中にパネル上の要素のコンテキストメニューが閉じられると、同タイミングでパネルも自動で隠れてしまうようです。
    同タイミングでパネル表示を維持させる(隠さない)ことは可能でしょうか。

    条件:
    ・パネルを自動的に隠す設定にしている
    ・ポインタ位置が「パネル自動表示判定のエリア幅」を超えている


    ※「パネル自動表示判定のエリア幅」関連した下記課題[#846]についてもあわせてご検討いただけるとありがたいです。
    (要望者本人です^^)
    http://yokuarunanika.blogspot.com/2020/05/neeview370.html?showComment=1591433609890#c6016105344507997925
    https://bitbucket.org/neelabo/neeview/issues/846

    返信削除
    返信
    1. ご報告ありがとうございます。対応を検討いたします。

      3)についてのみ現象を確認できませんでした。
      こちらでの確認手順は以下の通りです。ほかに情報があればご連絡いただけると助かります。
      1. パネルを自動的に隠す設定にして本棚パネルの項目を右クリックしてコンテキストメニューを開く
      2. マウスカーソルをメインビュー中央に移動、ESCキーでコンテキスメニューを閉じる
      3. コンテキストメニューが閉じたあと、(自動パネルを隠すまでの時間)遅延して本棚パネルが閉じるのを確認、同時に閉じる現象を確認できず

      削除
    2. お返事ありがとうございます。

      わかりにくくてすいません。。。
      本件3)は「マウスポインタが同一のパネル上にある状態が継続している」にも関わらずパネルが隠れてしまう症状を指したものです。
      つまり、ご連絡いただいた手順の「2.マウスカーソルをメインビュー中央に移動」をすると本件の再現条件から外れてしまいます。
      また、自動非表示の遅延時間を0秒にした場合の症状であることをお伝えできていませんでしたので、改めて前提条件と再現手順を下記に記載します。


      前提条件:
      ・パネル(フィルムストリップ含む:以後省略)を自動的に隠す設定にしておく
      ・自動非表示パネルを隠すまでの時間 を 0秒 に設定
      ・パネル自動表示判定のエリア幅 を パネル幅よりも小さい値 に設定

      再現手順:
      1) パネルのコンテキストメニューを表示する
      2) マウスポインタがコンテキストメニューを表示したパネルと同じパネル上にあることを確認
      3) マウスポインタが「パネル自動表示判定のエリア幅」を超えた位置にあることを確認
      4) 2)3) を満たしていることを確認しつつ「同一パネル上の要素(コンテキストメニューキャンセル操作)」又は「コンテキストメニュー上の要素」をクリック
      5) コンテキストメニューが消えたタイミングでパネルも隠れてしまう


      ちなみに、自動非表示パネルを隠すまでの時間 を 0.001秒(1ms) 程度に設定しておけば使用感に影響なく本件回避可能であることに気が付きましたので、あわせてお伝えしておきます。

      削除
    3. 詳細な情報ありがとうございます。
      現象を確認しました。対策を検討します。

      削除
    4. Canary0226にて、本件1)及び3)が解決していること確認しました!
      ありがとうございました!

      削除
  9. 継続的なバージョンアップ、不具合修正ありがとうございます。
    大変感謝しています。特に要望はないのですが、感謝の言葉だけ伝えられればと存じます。

    返信削除
    返信
    1. ご利用ありがとうございます^^

      削除
  10. フィルタ(検索)によって本棚のリストが更新された際にカーソル位置がリセット(リストの先頭項目にフォーカス)されることに起因して、
    フィルタ後のブック移動コマンドが不自然な挙動になるケースがあります。
    下記の条件を満たす場合は、下記いずれかの対策をご検討いただけないでしょうか。


    条件:
    フィルタ後のリストに現在開いているブックが含まれる場合

    不自然な挙動:
    リスト中に現在開いているブック(オレンジ色でマークされた項目)が含まれているにも関わらず、
    「前のブック」には移動できず、「次のブック」がリスト先頭の次のブックになる

    対策:
    A. ブック移動コマンドの基準となるブックを「カーソル位置」から「現在開いているブック」にする
    B. カーソル位置を「現在開いているブック」にする

    返信削除
    返信
    1. ご報告ありがとうございます。
      対策を検討します。

      削除
  11. いつも使わせていただいております。ありがとうございます。
    要望なのですが、起動オプションに開くページの指定を追加、スクリプトのコマンドのLoadAsでファイルの読み込み完了まで待つようにできるか読み込み完了を待つようなコマンドの追加を検討していただけると嬉しいです。
    よろしくお願いいたします。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  12. 最近使わせて頂いております。質問と要望なのですが、
    ・マウススクロールで画像の上下する際、前や次のページに移動するのですが、
     基本移動はクリックのみで、スクロールでは移動しない様なオプションはあるのでしょうか?
    ・画像のサイズを入力した高さや幅に調整する機能の実装は可能でしょうか?
    宜しく御願い致します。

    返信削除
    返信
    1. > 基本移動はクリックのみで、スクロールでは移動しない様なオプションはあるのでしょうか?
      設定の「コマンド設定」でショートカットを編集します。2つの方法があります。
      方法1:「スクロール+前のページに移動」というようなコマンドがあるので、これをダブルクリックしてショートカットからWheelUp/Downを削除します。
      方法2:コマンド設定ページの右下の「初期化」ボタンですべてのコマンドを初期化するのですが、ここで「クリックでのページ送り優先設定」を選択して初期化します。

      > 画像のサイズを入力した高さや幅に調整する機能の実装は可能でしょうか?
      エフェクトパネル(サイドバーの風車マーク)の「サイズ指定」で画像サイズを指定し、かつナビゲーターパネルでストレッチを「オリジナルサイズ」にすることで指定したサイズで画像が表示されます。

      削除
    2. 返信有難う御座います。
      ご指定の設定で希望の動作を確認できました。

      削除
  13. お世話になっております。ナビゲーターのストレッチメニューの「規定スケール」トグルのオンオフをマウスのショートカットに割り当てられると個人的に大変便利なので将来的に実装していただけるとありがたいです。

    返信削除
    返信
    1. ご要望ありがとうございます。実装を検討します。

      ちなみに、現状でもスクリプトでコマンド化は可能です。保存される設定はこの方法でだいたいコマンド化できます。以下はスクリプトのサンプルになります。
      https://bitbucket.org/neelabo/neeview.scriptsamples/src/master/Scripts/ToggleIsBaseScaleEnabled.nvjs

      削除
  14. 要望です
    軽い、便利、自由度高い最強のビューワとしていつも使わせてもらってます。
    ありがとうございます。

    Hamanaというビューワのライブラリ機能の互換機能が欲しいです。
    簡単に説明すると、
    複数のそれぞれ異なった書庫内の画像や、フォルダの画像を任意の順番で連続して閲覧できる機能です。
    また、.hflという平のアドレスが記載されたファイルを作れるので
    複数のライブラリも管理できます。
    .hfl(保存ファイル)の読み書き編集管理もできたらさらに便利です。

    大量の書庫の中から気に入った画像があればいちいちまとめ直さないでもライブラリに保存すれば、
    バラバラの書庫内の複数の好きな画像を1冊の本のように好きな順番に閲覧・管理できるのでとても便利な機能なのですが、
    Hamana以外では見たことがありません。

    よかったらneeviewでもぜひ採用してほしいです。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討いたします。

      現状ですとプレイリストがそれに近い機能となりますが、編集機能がなく登録順での画像表示に対応してません。

      削除
    2. 横から失礼します。

      私はNeeViewのページマーク機能を活用しています。
      ページマークパネルのメニューに[ブックとして開く]という項目があって、ここをクリックするとページマークに登録されたページをブックのように閲覧できるようになります。
      そのブックは pagemark:\ という特殊なパスとして定義されていて、ブックマークしておくこともできます。

      現状では下記のつらみがありますが、最後の項目だけは起動オプションで設定ファイルの場所を指定することで無理やり回避できます。
      (設定や履歴を他のセットと共有するためにはpagemark.json以外をハードリンクにする等の工夫が必要になってきますが...)


      ・複数のフォルダ/アーカイブへアクセスすることになるのでブックとして開かれるまでに若干のディレイが生じる
      ・名前/日付/サイズ/シャッフル順にソートできるだけで、ページの自由な並び替えはできない
      ・複数のセットを切り替えることはできない

      削除
    3. レスポンスありがとうございます。補足です。
      私がマニュアル上で見つけられなかったようでプレイリスト機能に付いては見落としてました・・・。
      ご指摘ありがとうございます。

      neeviewのプレイリスト機能に当てはめると、

      ・特定の書庫(xxx.zip)を閲覧時にページリストから任意のページ(001.jpg等)を任意の.nvplsへ任意の順番で記録できる。
        →ページリストから右クリックで追加、画像閲覧中に特定のキー(F3等)ジェスチャーで追加
      ・.nvpls閲覧時、画像を見ながら不要な項目をリストからのみ削除できる
        →ページリストから右クリックでリスト削除、画像閲覧中に特定のキー(F4等)ジェスチャーで削除
      ・.nvpls閲覧時、ページリストからリストの順番を任意に変更・保存できる
        →リストに登録されたファイルをページリストから単選択、複数選択して"上へ"、"下へ"、"ドラッグ"などでリスト順を編集できる
      ・.nvpls閲覧時、その順でソート可能

      という感じでしょうか。


      要望と言うには少しポイントがずれるかもしれないんですがもう一点。
      リストをフォルダや書庫のように扱えるneeviewと
      リスト(.hfl)を一覧のデータとして一時的に読み込ませるhamanaでは
      リストの扱いが異なるのでneeviewでは実装が叶うかわからないのですが、
      hamanaライブラリ機能で地味に便利だったのは、
      書庫A内のB.jpgを含むリストCを読み込ませているときに、
      直接書庫Aを閲覧すると、ファイル一覧でリストCに含まれる項目であるB.JPGが着色されていて
      もとの書庫Aを閲覧しながらそのままリストCに追加削除が可能だったところがあります。

      neeviewでもプレイリストを作成するときに、
      書庫Aを閲覧しながらページ4,5,1,2の順に追加、(閲覧しながら気に入った画像でF3を押すなどしてリスト追加)
      書庫Bに移動しページ11,2,5,3の順に追加すると言った具合にリストを作成し保存。
      書庫Aの5ページをリストから消したければ、リスト閲覧時または書庫Aからでも削除できるといった
      流れが実現できれば重畳に思っているのですが、
      プレイリスト機能に手をくわれられる時はご一考いただけると嬉しいです。

      削除
  15. いつも素晴らしいソフトを利用させていただいております!
    NEEVIEWはコミックの閲覧だけではなく、写真などのビューワーとしても使わせていただいてます。
    ここでひとつ要望があるのですが 並び順に「タグ」を追加してはもらえないでしょうか?
    ご検討よろしくお願いいたします。

    返信削除
    返信
    1. ご要望ありがとうございます。
      タグとは画像ファイルに埋め込まれているもののことですね。対応を検討いたします。

      削除
  16. はじめまして。
    以前より便利に利用させていただいておりました。
    久々にアップデートさせていただいたところ(37.1->38.3)、
    本棚とページリストを同時に使用することができなくなっていました。
    (38へのバージョンアップ時にフローティングとドッキング機能で代替されたと理解しました)
     
    本棚とページリストを並べて配置させる機能を復活させていただくことは難しいでしょうか。
    もしくはフォルダツリーとページリストが同時に表示できれば大変ありがたいです。
     
    削除された機能についてこのようなことを申し上げるのは失礼かと思いますが、
    ご検討のほどよろしくお願いいたします。

    返信削除
    返信
    1. サイドバーのページリストアイコンを本棚パネルにドラッグしてみて下さい。
      パネル同士を接合(ドッキング)できるため、以前と同じレイアウトで使用できると思います。

      削除
    2. 早々にご回答いただきありがとうございました。
      ご指定の通り操作したところ、以前と同じレイアウトにすることができました。
      大変助かりました。
      よく確認せずに書き込みをしてしまい申し訳ありません。
      今後とも便利に使用させていただきます。
      よろしくお願いいたします。

      削除
    3. 横入すみません

      上の要望中に出てきたフォルダツリーとページリストという組み合わせが欲しいです

      フォルダに画像直置きした状態、例えば
      a-b-画像
      c-画像
      こういう配置の場合に

      本棚ですとaフォルダを開くときは「サブフォルダに移動」
      b,cフォルダを開くときは「開く」と操作を分けないといけないですが

      ページリストならフォルダをページにしておけばどの階層でも「ブックを開く」一択で済み使いやすいので
      ページリストに直接ツリーリストを表示して使いたいです

      削除
  17. いつもNeeViewを利用させていただいております。

    背景機能でひとつ要望があるのですが、
    表示している画像を乗算で背景画像に重ねて表示したいです。
    (画像の白い部分を透過したい)

    和紙などの優しい色のテクスチャに重ねて表示することで、
    目の疲労をすこしでも軽減できればと思います。
    適当に休憩すれば済む話ですが・・・

    何卒ご検討いただければ幸いです。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  18. とっても便利ですありがとうございます

    外部アプリ設定で要望なのですが
    実行パスを指定できないでしょうか?
    プログラム起動時に実行パスにある設定ファイルを読み込むアプリを登録したいのですが
    現状NeeViewのフォルダが外部アプリ実行パスになっているようなので

    あと
    ページリストに対して「選択しているブックを開く」「上に移動」をコマンド設定からショートカット登録ってできないでしょうか
    それともこういうのはスクリプトからするものなのでしょうか?
    スクリプトマニュアルのページリストパネルとコマンド一覧はさっと見たのですがみつからなかったので

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。

      > プログラム起動時に実行パスにある設定ファイルを読み込むアプリを登録したいのですが
      現状ですと、実行ファイルの作業フォルダーを設定したショートカットを作ってそれを登録することで実現できると思います。

      > 「選択しているブックを開く」「上に移動」
      ページリストでは「Alt+Down」「Alt+Up」がショートカットに割り当てられていますが、今のところ設定変更はできません。
      コマンドとしては「このブックを開く」「親のブックを開く」が同様の機能になりますが、基本的にコマンドはメインビューでの入力を想定しています。

      削除
    2. 回答ありがとうございます、ショートカット試してみます。

      コマンドの件ですが
      ウインドウを画面いっぱいまで開いて
      メニューの「表示>サイドバー」OFF、「表示>パネルを自動的に隠す」OFF状態で
      ページリストを画面いっぱいまで伸ばしてメインビューを押しつぶす
      「表示>サイドバー」ON
      「表示>パネルを自動的に隠す」ON
      と操作すると
      メインビューが画面上にない状態が作れるので
      後はPキーでページリストON/OFFしてサムネイルモードと画像表示モードを切り替えて使ってます
      でサムネイルモードだとページリストに直接コマンドを送りたくなる次第でして

      とここまで書いてて思ったけどこの動作はバグでしょうか?
      ウインドウ狭めるとページリストがウインドウ外まで続いてますね

      バグ修正の場合はどうかメインビューなし状態が維持される方向でお願いします。


      どうやってメインビューなし状態作ったか再現するために触ってていくつか要望思いついたので追加

      本棚は上に移動した場合、移動前にいたフォルダが選択状態
      ページリストで上に移動は親フォルダの先頭項目が選択状態となっています
      ページリストも本棚と同じ動作に統一できないでしょうか?

      あと上に移動つながりで
      親フォルダ(..)という項目をページリストや本棚に表示することはできないでしょうか?
      一部のファイラーなどで使われている選択することで親フォルダに移動できる項目です
      サブフォルダを選択して階層を下っていくのと同じ操作で上ることもできるようになるので慣れると便利です
      フォルダに存在しないアイテムを追加表示するので邪道な気もしますが

      いくつも要望してすみません

      削除
    3. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  19. 何時もお世話になっております。
    勝手ながらの要望を失礼します。

    ※以下の様なフォルダ構成を想定します。

    自著作書籍(フォルダ)
    ┣書籍題名壱(フォルダ)
    ┃┣書籍一巻.zip
    ┃┣書籍二巻.zip
    ┃┗書籍三巻.zip
    ┗書籍題名弐(フォルダ)
     ┣書籍一巻.zip
     ┣書籍二巻.zip
     ┗書籍三巻.zip

    ①『自著作書籍』をサムネ表示した際に本棚の項目には『書籍題名壱』『書籍題名弐』が表示されます。
    しかしそのサムネイルは名前昇順で一番上に来る、つまりは『書籍一巻.zip』の『000.jpg』に固定されています。
    これを『書籍三巻.zip』の『000.jpg』が表示出来る様にしたいです。

    ②『自著作書籍』を表示している際に『書籍題名壱』または『書籍題名弐』をクリックすると、メイン画面には小さなサムネイルが表示されます。
    これを書籍題名壱を本棚で開いた様に『書籍一巻.zip』から『書籍三巻.zip』までを並べて表示させて欲しいと考えています。
    また、現在はメイン画面に表示される小さなサムネイルをダブルクリックすることでその書籍を閲覧することが可能ですが、それをクリックでも閲覧が可能にして頂きたいです。

    一方的な要望で大変申し訳ございませんが、対応の検討だけでも頂ければ幸いです。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  20. バグみたいな挙動を発見したので報告です

    親のブックを開くで移動した直後は
    「設定、パネル、バネルリスト項目、アイコンのポップアップ」の設定をOFFにしていても
    ポップアップが表示される

    先頭項目が表示される位置にマウスカーソルを置いてショートカットキーで「親のブックを開く」を実行すると起こります

    返信削除
    返信
    1. ご報告ありがとうございます。
      修整を検討いたします。

      削除
  21. フィルムストリップの表示密度向上を目的として、フィルムストリップのサムネイル表示の「高さ」をそろえて「幅」を可変とすることを提案します。
    Androidアプリ「ComittoN」のフィルムストリップ表示をイメージしています。

    ぜひ一度、ご検討いただけるとありがたいです。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  22. Canary0403 で気が付いたことを報告します。

    1) テーマが適用されていない一部のダイアログ([設定]、[このアプリについて]、[外部アプリ一覧] など)を除いた各部のフォント描画において、サブピクセルレンダリングが無効になっているようです。

    2) メインビューのコンテキストメニューでサブメニューを展開した際に、上位層のメニューの幅が少し広がることがあるようです。


    ※テーマ機能の開発ありがとうございます。正式リリースが楽しみです。

    返信削除
    返信
    1. ご報告ありがとうございます。
      対策を検討いたします。

      削除
    2. お返事大変おそくなりました。
      本件ご対応ありがとうございました。

      追加で気が付いたこと(Canary0518)がありますので報告します。

      ■ 1. [ClearTypeを有効にする:ON]の状態でも、サブピクセルレンダリングが効いていない要素があります

      1) 表示テキストが要素幅をオーバーしている要素(テキスト末尾が[...]で省略される要素を除く)
      例: パネル(本棚/ページリスト/ブックマーク)のヘッダ部のファイルパス表示要素
      例: パネル(本棚/ブックマーク)のフォルダツリー内の要素
      例: 設定ダイアログの[コンテキストメニュー]ページのメニューツリー内の要素

      2) 無効状態のボタン
      例: 設定ダイアログの[コンテキストメニュー]ページの右端にあるボタン
      例: 外部アプリ一覧ダイアログの右端にあるボタン

      3) テーブルのヘッダ部
      例: 設定ダイアログの[コマンド設定]ページのテーブルヘッダ
      例: 外部アプリ一覧ダイアログのテーブルヘッダ

      4) 本棚の検索ボックス(設定やコマンド設定の検索ボックスをはじめ他の入力要素は問題なし)

      5) フィルムストリップのページ番号(ここは正規版38.3でも効いていない)


      ■ 2. スクリプトマニュアルでリンク切れの項目があります
      ・「CommandAccessor」が「ICommandAccessor」になっている?

      削除
    3. ご報告ありがとうございます。調査いたします。

      ちなみに、フィルムストリップのページ番号等、文字に影がついたり半透明になったりする場合はClearTypeが機能しないのはフレームワークの仕様のようです。

      削除
    4. お返事、ご対応ありがとうございます。
      5) はフレームワーク上の制約なんですね。

      さきほどCanary0530にて下記が対策されていること確認しました。
      1) 表示テキストが要素幅をオーバーしている要素(テキスト末尾が[...]で省略される要素を除く)
      3) テーブルのヘッダ部

      ちなみに、下記に変化がないのは5)と同様の制約に抵触したということでしょうか?
      2) 無効状態のボタン
      4) 本棚の検索ボックス(設定やコマンド設定の検索ボックスをはじめ他の入力要素は問題なし)


      いつもありがとうございます。

      削除
    5. > 2) 無効状態のボタン
      色を抑えるのに半透明化しているため、仕様となります。

      > 4) 本棚の検索ボックス(設定やコマンド設定の検索ボックスをはじめ他の入力要素は問題なし)
      調査中ですが、解決方法が見つかっておらず、このままになる可能性があります。

      削除
    6. そういうことなんですね。
      良い解決策が見つかることを願っています。

      ありがとうございました。

      削除
  23. thank you for develop this software , two question here :)

    1. I can translation language to chinese, but I download xlsx ,and How to compile to dll even I didn't have Virtual Studio?
    2.how to keep the scale I use shift+mouse to zoom in/out , and next image keep the same scale ?
    I know I can use effect to key in scale number , but If some option can do like "keep scale from last image" that the scale use mouse to zoom in/out ,that will be great :)

    返信削除
    返信
    1. > 1. I can translation language to chinese, but I download xlsx ,and How to compile to dll even I didn't have Virtual Studio?

      Currently, Visual Studio is required. I think it will be difficult to translate as it is. Please wait for a while as the environment will be prepared.

      > 2.how to keep the scale I use shift+mouse to zoom in/out , and next image keep the same scale ?

      Turn on the Push Pin toggle button in the Scale section of the Navigator panel. The scale will be maintained even if you switch pages.

      削除
    2. The language file creation environment is ready.

      https://bitbucket.org/neelabo/neeview/src/develop/Language/Readme.md

      This feature will be supported in the next version.
      If you want to work now, you need the Canarry version and the repository for the "develop" branch.

      削除
  24. 要望です。
    「設定」>「本棚」>「ホームの場所」で検索の設定も同時に行えるようにしてほしいです。
    例えば起動オプションの「--folderlist=」の様に、「C:\Books?search=.zip」と設定してホームボタンを押したら検索も同時に行えるようにしてほしいです。
    よろしくお願いします。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  25. 大変便利なソフトいつも利用させて頂いてます。2点要望があります。

    1.クイックアクセスの表示名を変更できるようにしてほしい
    検索を含めて登録すると、名称が長ったらしくなって見にくいです。
    自由に名称を変更できるようにしてほしいです。

    2.クイックアクセスの編集を出来るようにしてほしい
    登録済みの項目の内容を変更できるようにしてほしいです。
    コンテキストメニューからプロパティを開いて編集みたいな感じで。

    ご検討の程、よろしくお願い致します。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  26. 現在関連付けられた.nvplsをダブルクリックしたりウィンドウにドロップしたりすると本棚に対応するファイルが表示されますが、
    履歴から.nvplsを開くと本棚に表示されないようです。
    前者の挙動が想定する挙動かと思われますが、統一するよう対応いただければありがたいです。

    返信削除
    返信
    1. ご報告ありがとうございます。
      修正します。

      削除
  27. Hello, I just found out about this software. I'm loving it so far but there are some functions i'd like to see.
    - being able to change filters (bilinear-bicubic-lanczos etc)
    - page flip transition effect
    nice work so far

    返信削除
    返信
    1. Thanks.

      > being able to change filters (bilinear-bicubic-lanczos etc)

      It can be set with "Resize filer" in the Effect panel.

      削除
  28. こんにちは。とても素晴らしいソフトに出会いました。設定も多く、あちこち触っては変化みますが、
    初歩的な質問ですが、本棚をあらかじめ(任意のフォルダ)チェック入れて、終了すると、デフォルトの場所になり、
    本棚をまた手動で操作しなければいけません。これを解消するにはどうすればいいのでしょうか?
    また、本棚を、2や3つ扱う(すぐ見れる?)にはどうすればいいのでしょうか?
    最後に、サムネイルはどこで設定するのでしょうか。
    初歩的な質問で申し訳ありません。どうかよろしくお願いします。

    返信削除
    返信
    1. > 本棚をまた手動で操作しなければいけません。これを解消するにはどうすればいいのでしょうか?

      設定の「起動設定」ページの「開いていたブックを復元する」「本棚の場所を復元する」が関連する設定になります。

      > また、本棚を、2や3つ扱う(すぐ見れる?)にはどうすればいいのでしょうか?

      「クイックアクセス」が該当する機能になります。本棚パネルの上部アイコンからフォルダーツリーを開き、そこのクイックアクセスに登録します。

      > 最後に、サムネイルはどこで設定するのでしょうか。

      現状、サムネイル画像は自動で選択され、手動では設定できません。
      品質の設定であれば、設定の「サムネイル」ページで行います。
      表示サイズであれば、設定の「パネルリスト項目」「フィルムストリップ」ページで行います。

      削除
  29. クイックアクセスが大変便利で多用しているのですが、1つ要望があります。

    検索オプションでブックマークを検索できるオプションが欲しいです。
    例えば「/bookmark ポエム」みたいに検索すると、ブックマークの中から「ポエム」の付くファイルがヒットするみたいに。

    以前、FenrirFSを使用していまして、検索オプションに同様のオプションがあり便利に使っていたので、NeeViewにもあればと思い要望した次第です。
    ご検討のほどよろしくお願いいたします。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討致します。

      削除
  30. こんにちは。
    いつも便利に使用させていただいています。素晴らしいソフトを公開いただき、ありがとうございます。

    NeeViewでなくWindowsの問題かもしれませんが、困っているので質問させてください。
    NeeViewの本棚パネルに表示されるブック(フォルダ)のうちの一つを削除しようとする際に、そのブックの格納先がCドライブかDドライブかで挙動が異なり困っています。

    ブックがCドライブ下に在る場合、そのブックに対し「削除」を選択すると「ブックを削除します」と表示され、そこで「削除」ボタンを選択するとブックが削除されます。
    一方、ブックがDドライブ下に在る場合、そのブックに対し「削除」を選択すると「ブックを削除します」と表示され、そこで「削除」ボタンを選択すると続いて「フォルダーアクセスの拒否 このフォルダーを削除するには管理者の権限が必要です」と表示されます。
    そこで「続行」ボタンを選択すると更に「ユーザーアカウント制御 この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか? NeeView.exe」と表示され、そこで「はい」ボタンを選択するとようやくブックが削除されます。

    Dドライブ下のブックもCドライブ下のそれと同様に、すんなりと削除できるようにしたいのですが、どうすれば良いのでしょうか?

    なお格納先のCドライブ・DドライブのいずれもWindowsアクセス権としては管理者・SYSTEM共にフルコントロールを許可しており、管理者権限でWindowsログインしています。
    使用しているのはWindows10 64bit、NeeView38.3-x64です。

    返信削除
    返信
    1. 当方の環境では現象は確認できておりません。NeeViewではファイル削除にOSのファイル操作機能を使っているので、このメッセージはOSが表示しているものと思われます。
      そのファイルや上位フォルダー、問題の発生するドライブのごみ箱、NeeView.exe自体のプロパティで関連していそうな設定を確認してみてはいかがでしょうか。
      また、他のインストール形態を試してみるのも良いかもしれません。ストアアプリ版ならばマイクロソフトの証明書がついていると思われるので動作が変わる可能性があります。

      削除
    2. 返信いただき、ありがとうございます。
      ご指示に従い、再度設定を確認してみます。
      ストアアプリ版は試してみましたが、残念ながら挙動に変化ありませんでした。

      削除
    3. うーん、これ以上はちょっとわからないですね…
      お役に立てず申し訳ないです

      削除
  31. こんにちは。最新Ver.の38.3-x64を大いに活用させていただいています。色々と自分好みの細かい設定が可能なソフトを、本当にありがとうございます。
    さて、ブックのページ設定について質問させてください。
    2ページ表示で、「最初のページを単独表示」をオン、「最後のページを単独表示」をオフ、「ページの終端を超えて移動しようとした時の挙動」を『ループする』に設定して、雑誌等の見開きのマンガを閲覧しています。
    単話のマンガはたいていページ数が偶数(26ページとか32ページとか)かつ1ページ目は単独(ということは最終ページも単独)です。最終ページ→先頭ページへループして表示する際、【最終ページのみ単独表示】→【先頭ページのみ単独表示】となるのですが、これを【最終ページ+先頭ページの2ページ表示】とする設定は可能なのでしょうか?

    返信削除
    返信
    1. 現状ではそのように設定できません。
      ご要望として検討いたします。

      削除
    2. 早速ご回答いただき、ありがとうございました。
      設定不可とのこと、承知しました。
      NeeViewに乗り換える前に使用していたLeeyesでそのような設定が可能だったもので。
      今後の機能実装を、どうかご検討よろしくお願いいたします!

      削除
  32. good evening
    I spend a week to translat jp language to zh-tw ,
    but I can't follow your steps to create dll ,error on step 2.
    If it still need install VS 2019 ,I still can't creat dll :(

    so I upload the zh-tw language file(.restext) that I translat here
    https://www78.zippyshare.com/v/Of29HFht/file.html
    maybe be you can help me to creat and I can test it :)

    返信削除
    返信
    1. Great job!
      I will adopt it if you like.

      There was a syntax error on line 1447 of the file I received, but everything else was fine.
      I created a dll, so please try it. (Continue from Step.3)
      https://www104.zippyshare.com/v/rhsTtIB9/file.html

      > If it still need install VS 2019 ,I still can't creat dll :(
      Unfortunately, the command included in Visual Studio is used to create the dll, so installation is required.
      Added a low-level dll creation method (Step.2-B) using only Visual Stuio commands to the readme. If you have a script problem, try this.

      削除
    2. thank you :D ,I test it now.

      1447 line error miss a "=" before translation,
      thank you tell me , I add it back ^^"

      sure, of course you can adopt it :D
      but wait me a little time to make translation better

      after I test it and check translation on app run ,
      I will provide new translation to you :)

      削除
  33. これほどの便利なアプリが無料で利用できることに感謝しております。
    要望が2つあります。

    ・スライダーを上部に表示できるオプションが欲しい。
    Windowsのタスクバーをクリックしたつもりが、スライダーをクリックしてしまい表示ページが変わります。

    ・[2ページ表示]+[右開き]モードで画像を外部アプリで開くとき、[2ページ目][1ページ目]の順で画像を開くオプションが欲しい。
    外部アプリのタブ順が左からなので、左タブが[1ページ目]、右タブが[2ページ目]となり脳内変換が必要ですw。

    ご検討をよろしくお願いいたします。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  34. WICに対応してるから便利でありがたいです。
    ただカメラを縦向きで撮影したCR2ファイルの表示がおかしいみたいです。
    具体的には上下方向にグシャっとつぶして左回転した表示になります。

    返信削除
    返信
    1. ご報告ありがとうございます。
      現象を確認しました。リサイズフィルターを有効にすると現象が発生するようです。
      調査いたします。

      削除
  35. good night :D
    test few day after,
    I already improve the zh-tw translation as possible as I can,
    Here is new translation for you and you can adopt it
    https://www36.zippyshare.com/v/EdWSrTfy/file.html
    thank you for your work :D

    返信削除
    返信
    1. Thank you!

      I just updated the Canary version. It is built into this.
      This version has changed significantly depending on the playlist, so please correct it if you like. The added keys is at the end of .restext.

      削除
    2. Sure :D
      I also notice some pagemark strings delete
      I will delete it too to sync jp restext total line
      wait me a day to translate new string and check
      and I will upload it to you soon :)

      削除
    3. by the way , camara raw file (like .CR2、 .RW2、DNG )
      EXIF does not display on information panel
      but jpg file does .
      which setting I need to change?

      削除
    4. The official release is still ahead, so you don't have to hurry. :)

      > camara raw file (like .CR2、 .RW2、DNG )

      Only basic formats ("gif", "jpg", "png", or "tiff") are supported because the metadata is accessed using the features of the .NET Framework.
      We will investigate if there is any means.

      削除
    5. thank you reply about raw files :)
      here is the new translation
      https://www120.zippyshare.com/v/omEF2AbS/file.html

      here are little question or request function , :D
      beacuse I don't know if those question can be setting to implement or not

      multi tab display function
      multi-booting is good ,if there is a option to switch normal or multi tab display will be awesome

      video thumbnail
      maybe that will easy to check which video files that people want to watch.

      when video play ,set left cilck to stop/play (like other video player)
      although setting can set to left click , but conflict with next page operation
      (but left click at video play is move to 10 sec ,is not next page operation , that's strange)
      can not use the same key to fit different situation (image view and video watch)

      use mouse x1 x2 button to move folder on bookshelf panel (like alt+up and +alt+down)
      I don't know why , even set to x1 x2 button at setting , but affect when focus on mainview only,
      can not use on bookshelf panel
      but alt+up/alt+down can affect whenever focus on bookshelf or mainview

      削除
    6. Thank you for your quick fix!
      The Canary version with it applied has been uploaded.
      I think that we will update the resources frequently in the future, so I would like you to fix it collectively when the Beta version comes out.
      Beta releases will be announced on this blog.

      ---

      Thank you for your request. We will consider the correspondence.

      > when video play ,set left cilck to stop/play (like other video player)

      Currently this can be achieved with scripts.
      I hope the last sample in the script manual will help.

      削除
  36. こんにちは
    コマンド設定「1ページ戻る、進む」の「スライダー方向による操作入れ替え許可」パラメータの
    有効無効が上手く効いてないようです、確認をお願いします

    返信削除
    返信
    1. ご報告ありがとうございます。
      ですが、こちらの環境では現象を確認できませんでした。
      他の設定が影響しているのかもしれません。なにかお気づきの点があればご連絡いただけると助かります。

      削除
  37. こんばんは。

    現在のバイナリのアップデート体制で改善してほしいことがあります。以下のケースではCanary版だけではなく同時に正式版にも修正を反映してもらえないでしょうか。
    1. 例外のスローや強制終了などを伴う致命的なバグの修正。例をあげれば課題の#1009とか。RESOLVEDになっても現時点ではCanary版のみの修正となっているため、実際の運用環境である正式版への反映に相当時間がかかってしまっている。
    2. x86版のみに現れる不具合の修正やインストーラーの機能改善など、正式版のみに当てはまる修正。

    返信削除
    返信
    1. ご提案ありがとうございます。参考にさせていただきます。

      > 2. x86版のみに現れる不具合の修正やインストーラーの機能改善など、正式版のみに当てはまる修正。
      こちら、症状を把握しておりません。具体的にご指摘いただけると助かります。

      削除
    2. インストーラーの不具合改善は#778など過去に10件ほどありましたね。

      また、メモリーリークなどのバグやユーザーが巨大なブック/ページを開くなどでプロセスの総メモリー使用量が4GBを超えると、x64版では何も起きませんがx86版だとトラブルが起きる恐れがあります。尤も、4GB以上のメモリーを消費したければユーザーはOSとNeeViewとの両方をx64版にすべきですが。

      削除
  38. update translation for add custom theme :)
    https://www52.zippyshare.com/v/cNwmftXb/file.html

    a little question about Navigator function:

    If turn on the Push Pin toggle button in the Scale section of the Navigator panel
    the scale maintain when switch pages , but can not keep when switch book
    For example :
    some comic have many zip file (vol1 vol2..etc) and the same resolution .
    when page end action set to next book , and next book display , the scale will be reset.
    and 2 page display select from main drop menu will reset to 1 page display also

    返信削除
    返信
    1. Thank you as always!

      It is normal for the navigator's pushpin to not continue in the new book.
      We will consider measures to enable continuation.

      The settings that are applied when the book is opened (two page, etc.) can be set in the "Page settings" of the Options.

      削除
  39. こんにちは。
    いつもお世話になっております。

    要望なのですが、外部アプリで開くの数を増やしてほしいです。
    余裕を見て5個くらいを希望しておきます。
    ご検討よろしくお願いします。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。

      現状ですと、スクリプトで実現可能です。
      スクリプトヘルプの最後の方にMSペイントで開くスクリプト例が載せてありますので参考にしてください。

      削除
  40. ソフト使わせてもらってます。

    マシン買い替えてソフトもインストールしなおしました。
    前のパソコンではなかったと思うんですが、今はエクスプローラーの右クリックメニューに「NeeViewで開く」と出てきます。
    フリーソフト等で追加されるものがありますが、大抵オプション等で追加しないようにできます。
    NeeViewの設定を見たんですか、その設定が見当たりませんでした。
    これを消す方法はあるでしょうか?
    エクスプローラーの右クリックメニューには標準以外は追加したくないもので。

    よろしくお願いいたします。

    返信削除
    返信
    1. インストール時にカスタムを選択することでコンテキストメニュー機能をON/OFFできます。
      インストール後であれば、再度インストーラーを起動して「変更」を選ぶことで変更可能です。

      削除
    2. 再度インストーラーを起動して「変更」を選び、コンテキストメニューの設定が変更できました。
      ありがとうございました!

      削除
  41. こんにちは。最近使い始めましたが大変快適に使わせていただいております。

    要望となるのですが、サムネイルの生成を一括で行えるようにできないでしょうか。
    現在はページリストに表示されているファイルのみサムネイルを生成する挙動と思いますが
    ページリストをスクロールするたびに長めの読み込みが走ってしまうため
    予め一括生成しておけばより快適に使えるものと思います。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  42. いつもお世話になっております。

    さて、ヘルプなどの表示についてですが、使用するWebブラウザの起動コマンドラインをオプションから明示的に指定できるようにできないでしょうか。または、そもそもヘルプHTMLを%TEMP%ディレクトリに自動生成することをやめて静的ファイルとしてインストールパッケージ内に同梱しておくことはできないでしょうか。

    というのは、普段FirefoxやChromeを使用しており、拡張子.htmlへの関連付けもこれらに指定していますが、Windows 10の半年に1回の大型アップデートによって関連付けがデフォルトのEdgeに戻されてしまうことが度々あります。この場合、ヘルプなどもやはりEdgeで開かれてしまいます。そもそも、NeeView本体の起動中にヘルプHTMLを%TEMP%ディレクトリに生成するというやり方は、NeeView自体が不具合などで起動不可能となった場合にトラブル対処のためにヘルプを閲覧することすら不可能となる危険があります。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討いたします。

      削除
    2. とりあえず、NeeView本体が起動できない緊急時にヘルプを抽出して閲覧する方法をご教示いただければありがたいです。

      削除
    3. 動的に生成しているため、抽出はできません。
      UserSetting.jsonを一旦退避して起動するか、別のNeeView.zipからヘルプを開いてください。

      削除
    4. Canary20210523にて動作確認できました。対応ありがとうございます。

      削除
  43. 度々の投稿すみません。

    スクリプトについてですが、正式版38.3からCanary20210518を経て現在のソースコードの状態にわたって、スクリプトAPIの変更や削除などの破壊的変更は存在するでしょうか。Canary20210518の変更履歴にそれらしき記述はありませんでした。

    返信削除
    返信
    1. はい、破壊的変更はあります。
      まだまとめられていませんが、主に削除や統合された機能に関連するものになります。
      廃止されたり変更された命令やプロパティを使用した際にはそのことを伝えるエラーメッセージが表示されます。

      削除
    2. 以前にも申し上げましたが、APIの変更や削除はスクリプトの開発者や管理者にとって極めて大きな負担となります。特に企業などが静止画像を管理する業務目的で使用する場合は、運用コストの増大という金銭的な問題となってしまうため、従業員からの導入リクエストを押し切ってでも業務アプリとしてのNeeViewの導入自体を見送ってしまうことにつながりかねません。

      当方においても、全スクリプトの行数が現時点で約1万行になってきており、APIの変更に伴う書き換え/デバッグ/動作テストが大変苦痛で、「また地獄が始まるのか」という思いです。他人/他社の運用現場次第ではこれが10万行あるいは100万行オーダーになっているかもしれません。

      このことは、もし仮に.NET FrameworkのAPIの仕様がコロコロ変わればどんな事態をもたらすかを想像してもらえればよーく理解できるはずです。間違いなくNeeView自体の開発に相当の悪影響が及ぶはずでしょう。

      .NET Frameworkのクラスであれ、JavaScriptの標準関数であれ、秀丸エディタのマクロであれ、基本的にプログラミング言語から操作する処理系のAPI仕様というのは「絶対不変」であり、変更を行う場合は「下位互換性」の維持を徹底するものです。

      今回のv38.3=>v38.4(あるいはv39.0?)へのアップデートではもちろん、今後のアップデートでお願いすることは

      1. 動作の変更がないにもかかわらずクラスや命令などの「名前だけ」を変更することは絶対にしない。
      2. 機能の削除/統合に伴うAPIの「廃止」への対応は、命令やクラス/Enumやそのプロパティ/メソッドを何も実行しなかったり無意味な値を返すような「同名のダミー」として再実装する形で行い、実行すると必ずエラーとなる「API自体の削除」は絶対に行わない。
      3. 引数や戻り値の変更など、APIの「変更」は新しい命令、クラス/Enum、プロパティ/メソッドを「新しい名前で新設」し、旧APIはこの新APIのラッパーとして再実装するなどして必ず残す。

      というように「下位互換性」の維持を徹底することと、

      4. Canary版の変更履歴に最終の正式版からのAPIの変更を必ず記述する。
      5. 次期の正式版のAPI仕様が決定したら、遅くとも正式版バイナリのリリースの1ヵ月前に公式サイト上に発表し、スクリプト開発側に「猶予期間」を与える。
      6. 変更履歴の記述において、上記1~3の下位互換性維持の対策が取れなかったAPIの変更に関しては「破壊的変更」のカテゴリにまとめて記述し、
      6.A 下位互換性の維持ができなかった理由。
      6.B スクリプト開発者側での対処方法。
      を詳しく説明する。

      というようにユーザー/管理者への配慮を行うことです。

      v38.4またはv39.0への移行がスムーズに行われるよう、どうかよろしくお願いします。

      削除
    3. ご提案ありがとうございます。参考にさせていただきます。

      削除
  44. それからお願いがあるのですが、「API仕様がコロコロ変わる」ことを前提としたスクリプトのコーディングのベストプラクティスをもし御存知であれば是非ご教示よろしくお願い申し上げます。

    当方で思いつく方法といえば、APIを用いるステートメントをひたすらtry-catchで囲んで「APIが存在しない例外」を握りつぶす方法しかなく、コードの可読性が極めて悪くなってしまいます。

    返信削除
    返信
    1. 今回に関しては、実際にスクリプトを動かしてそのエラーメッセージを確認して対処することになると思われます。
      代替の方法があればエラーメッセージにその旨が表示されるので、それを参考にして修正します。

      新バージョンの機能と修正のコストを比較して、バージョンアップをしないことを選ぶのもありかと思います。

      削除
    2. > 代替の方法があればエラーメッセージにその旨が表示されるので、それを参考にして修正します。

      以下のスクリプト

      'use strict';
      try {
      // Canary20210518で有効なAPIを呼び出す。
      nv.ShowMessage(nv.Book.ViewPages[0].Path);
      sleep(1000);
      nv.ShowMessage('a');
      sleep(1000);
      // v38.0で削除されたAPIを呼び出す。
      nv.ShowMessage(nv.Config.Bookshelf.IsPageListVisible.toString());
      // これ以降は実行できない。
      sleep(1000);
      nv.ShowMessage('b');
      } catch (e) {
      nv.ShowMessage(e.toString());
      }

      の場合、v38.0で削除された設定を呼び出した時点で、

      「指定されたキーはディレクトリ内に存在しませんでした。」

      とだけ表示されており、これは

      ・具体的な代替のプロパティ名。
      ・代替案がなければ削除された理由。

      といった「修正のための参考資料」とは程遠いものでした。また、エラー発生個所の.nvjsファイル上の行とカラムの位置も表示されておりません。さらに、このエラーが発生した時点でスクリプトが完全に停止した状態となり、try-catchで補足すらできない状態でした。

      これではAPIの破壊的変更に伴うエラーのデバッグ作業が大変骨の折れるものになってしまいます。特に、1個の.nvjsファイル内に破壊的変更されたAPIが多数含まれていて、スクリプトディレクトリ内にこのような.nvjsファイル自体が多数格納されているような場合とかです。修正すべき場所の特定はGREPとかで破壊的変更されたAPI名を列挙することで可能ですが、具体的な修正方法は「その箇所次第」のため、単純に文字列置換で済むわけではありません。

      せめて、APIの破壊的変更によるエラーの取り扱いに関して

      1. 代替のAPIの紹介などの具体的な修正方法の提示。
      2. エラーの発生個所の行/カラム番号の表示。
      3. メッセージをCtrl-Cなどでクリップボードにコピー可能にする。
      4. try-cacheで補足可能にする。
      5. APIの破壊的変更によるエラー限定で、エラーを無視してスクリプトを継続して握りつぶしたエラーオブジェクトの配列を生成する機能を新しく実装する。

      といった改善をしてもらえれば助かります。どうかよろしくお願いいたします。



      削除
    3. ご提案ありがとうございます。対策を検討します。

      削除
    4. あるいは、JavaScriptのObject.defineProperties()などを駆使してユーザーサイドで実行時に動的に以前の仕様のAPIを埋め込んで復活させる方法が使えるのではないかと思いつきました。しかし、以下のスクリプト

      'use strict';
      try {
      nv.ShowMessage('Create Dummy API.');
      sleep(2000);
      // v38.0で廃止されたIsPageListVisibleのダミーをBookshelfに動的に埋め込む。
      Object.defineProperties(nv.Config.Bookshelf,{IsPageListVisible:{value:true},});
      nv.ShowMessage('Call Dummy API.');
      sleep(2000);
      nv.ShowMessage(nv.Config.Bookshelf.IsPageListVisible.toString());
      sleep(2000);
      } catch (e) {
      nv.ShowMessage(e.toString());
      sleep(2000);
      }

      では、defineProperties()のところで

      「指定されたキーはディレクトリ内に存在しませんでした。」

      というエラー(try-catchで捕捉できない)が発生してプロパティの増設ができませんでした。

      今後APIの破壊的変更が不可避の状況ならば、上記の例のようにユーザーが自力でAPIの動作を実行時に動的に変更することを可能にしてくれれば助かります。

      削除
    5. あとそれから、「ベータ版のリリースのときにAPIの破壊的変更の詳細を決定する」とのことですが、ベータ版から正式版までの期間が1~2週間と非常に短いことが大きな問題となる場合が考えられます。それは、「ストアアプリ版」を導入している環境についてです。いうまでもなく、ストアアプリというものは原則的に常に最新バージョンが半ば強制的にインストールされます。つまり、APIの破壊的変更が発表されてから最短で1週間で強制バージョンアップとなってしまい、スクリプト側で対応する時間的余裕が全く確保できない状態となってしまいます。

      最近では、企業で使用する業務アプリもストアアプリ化しているというニュースもしばしば耳にするようになっています。スクリプトの修正が間に合わずにエラーのオンパレード状態で業務が停止することも十分考えられます。

      このことから、ストアアプリ版はデスクトップアプリ版の正式版よりも3週間ほど遅らせてリリースすべきかもしれません。

      削除
    6. ご提案ありがとうございます。参考にさせていただきます。

      削除
  45. こんばんは。

    スクリプトのデバッグ出力メソッド

    nv.ShowMessage()
    nv.ShowToast()
    nv.ShowDialog()

    についていくつか要望がございます。

    1. 表示された文字列をCtrl-Cなどでクリップボードにコピーできるように改善してもらいたいのですが、よろしいでしょうか。不具合発生時の本ブログでの報告は、表示を目で見て覚えて手入力しているので少し不便です。

    2. ShowMessage()とShowToast()についてですが、表示時間の指定と表示中にスクリプトをsleepさせるオプションを設けてほしいです。このメソッドの引数は現時点では表示文字列の

    string message

    のみとなっておりますが、これに「省略可能引数(破壊的変更を避けるため!)」の

    int milliseconds
    bool wait

    を増設してもらえれば助かります。ShowDialog()だといちいちOKをクリックしなければならないため面倒です。

    どうかよろしくお願いします。


    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討いたします。

      削除
    2. ちなみに、デバッグ目的であるならば、現在のCanary版ではコマンドスクリプトでのlog()命令でスクリプトコンソールに出力されます。

      削除
  46. x-finderのように、ファイル一覧が出ているペインのなにもないところをクリックすると上の階層にジャンプする機能があると嬉しいです。これがあるとマウスでフォルダ間移動をするのが随分と楽になります。ご検討いただければと思います。

    返信削除
    返信
    1. ご要望ありがとうございます。
      対応を検討いたします。

      削除
  47. 毎度お世話になっております。

    さて、以下のようにスクリプトがうまく動かず困っています。

    1. v38.0で削除されたプロパティと同名のダミープロパティを追加できません。例えば、以下のようにv38.0で廃止されたIsPageListVisibleの復活を企てるとかです。

    'use strict';
    nv.Command.OpenConsole.Execute();
    try {
    Object.defineProperties(nv.Config.Bookshelf,{IsPageListVisible:{value:true},});
    log(nv.Config.Bookshelf.IsPageListVisible.toString());
    } catch (e) {
    log(e.toString());
    }

    実行結果は、

    指定されたキーはディレクトリ内に存在しませんでした。

    というエラーとなります。そもそもこれは、スクリプトAPIの破壊的変更を「迎え撃つ」ための苦肉の策です。

    2. .NET Frameworkの機能の一部を呼び出せません。以下のようにNeeView自体のフルパスを取得しようとしても、

    Cannot read property 'MainModule' of undefined

    となります。

    'use strict';
    nv.Command.OpenConsole.Execute();
    log(System.Environment.CurrentDirectory);
    log(System.Environment.Is64BitOperatingSystem.toString());
    log(System.Environment.Is64BitProcess.toString());
    log(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);

    どうやら、System.Diagnostics.Processクラスの呼び出し自体がうまく行われていないようです。




    返信削除
    返信
    1. > 1. v38.0で削除されたプロパティと同名のダミープロパティを追加できません。例えば、以下のようにv38.0で廃止されたIsPageListVisibleの復活を企てるとかです。

      nv.以下のオブジェクトはアプリ側のC#インスタンスを直接参照している形での実装ですので、JavaScriptのオブジェクトのような加工はできないと思われます。


      > 2. .NET Frameworkの機能の一部を呼び出せません。

      JINTの標準設定だけでは全ての.NETアセンブリにアクセスできないようです。どのようなルールになっているのか不明ですので、調査いたします。

      削除
  48. こんばんは。便利に使わせてもらっています。

    さて、スクリプトの使い勝手についてですが、単なるGUI操作の自動化だけではなく開いている画像の情報に基づく「動的な処理」を行いたいと思っていますが、実現のためには幾分かの機能強化があればと思っています。具体的には以下に示すような動作のプロパティ/メソッド/クラスがあったらすごく助かりそうです。

    1. NeeView自体の情報。
    1-1. エディション(0:インストーラ版/1:Zip版/2:ストアアプリ版)のnumberの取得。
    1-2. 正式版かCanary/βかのbooleanの取得。

    2. ブック(アーカイブ/動画)またはページ(画像)の実体であるファイルの情報のオブジェクト定義。将来、画像/書庫プラグインを自作するときに要求される機能です。
    2-1. パスのstringの取得。
    2-2. 全Byte数のnumberの取得。
    2-3. 作成日時のDateの取得。
    2-4. 更新日時のDateの取得。
    2-5. 展開またはデコード前のファイルバイナリの各Byteを表すnumberをfor-in文で列挙すること。

    3. ブック。開きたいブックの選択そのものを自動化したときにBookshelfItemAccessor主体の操作を行えた方がよいです。
    3-1. BookshelfItemAccessorを指定してブックを開くこと。
    3-2. BookshelfItemAccessorを指定して明示的にサムネイルを作成すること。
    3-3. BookshelfItemAccessorがブックとして開かれたりサムネイルが作成済みなど読み込み済みかどうかのbooleanの取得。
    3-4. BookshelfItemAccessorがファイル(アーカイブ/動画)であるかどうかのbooleanの取得。
    3-5. BookshelfItemAccessorの上記2のファイルオブジェクトの取得。
    3-6. BookshelfItemAccessorから対応するBookAccessorの取得。
    3-7. BookAccessorから対応するBookshelfItemAccessorの取得。
    3-8. BookAccessorがアーカイブファイルであるかどうかのbooleanの取得。
    3-9. BookAccessorから対応するページリストを開くこと。

    4. デコード済みのオリジナル画像の情報のオブジェクト定義。画像のデータ基準での自動処理で最も重要なところです。特にピクセルとExifに基づいた処理が現状でできないことに不自由を感じています。
    4-1. 幅のピクセル数のnumberの取得。
    4-2. 高さのピクセル数のnumberの取得。
    4-3. 水平方向のdpiのnumberの取得。
    4-4. 垂直方向のdpiのnumberの取得。
    4-5. デコーダー名のstringの取得。
    4-6. ピクセル(RGBA各8bitからなるUInt32)のnumberの配列の取得。
    4-7. 情報パネルで表示可能なExifなどのメタデータの{Name:string,Value:string}の配列の取得。
    4-8. デコード前のファイルの上記2のファイルオブジェクトの取得。

    5. ページ。表示するページの選択そのものを自動化したときにPageAccessor主体の操作を行えた方がよいです。こちらの画像サイズとピクセルデータは上記4のオリジナル画像のものとは異なり、ビューに表示された「見たまま」のものを指しています。
    5-1. PageAccessorが所属するブックのBookAccessorの取得。
    5-2. PageAccessorを指定してページを開く(ビューに表示またはブックとして開く)こと。
    5-3. PageAccessorを指定して明示的にサムネイルを作成すること。
    5-4. PageAccessorがビューに表示されたりサムネイルが作成済みなど読み込み済みかどうかのbooleanの取得。
    5-5. PageAccessorがブックであるかどうかのbooleanの取得。
    5-6. PageAccessorの上記2のファイルオブジェクトの取得。
    5-7. PageAccessorの上記4の画像オブジェクトの取得。
    5-8. PageAccessorから対応するViewPageAccessorの取得。
    5-9. ViewPageAccessorから対応するPageAccessorの取得。
    5-10. dpiやリサイズや回転などが適用されて実際にレンダリングされている画像の幅のピクセル数のnumberの取得。
    5-11. dpiやリサイズや回転などが適用されて実際にレンダリングされている画像の高さのピクセル数のnumberの取得。
    5-12. dpiやリサイズや回転などが適用されて実際にレンダリングされている画像のピクセル(RGBA各8bitからなるUInt32)のnumberの配列の取得。

    6. Susie設定。NeeView自体の管理作業の中で最も労力がいるのがSusieプラグインの設定作業です。特に、大量の拡張子を各プラグインに振り分けることを手作業で行わないといけないためかなり骨が折れます。この項目への対応は最優先で行ってもらえればと思っています。
    6-1. 各プラグイン設定エントリのオブジェクト定義。
    6-1-1. プラグインファイルの名前と拡張子のstringの取得。
    6-1-2. プラグインの説明文のstringの取得。
    6-1-3. プラグインが固有の設定ダイアログを持っているかどうかのbooleanの取得。
    6-1-4. プラグインが固有の設定ダイアログを開くこと。
    6-1-5. プラグインを有効にするかどうかのbooleanの取得/設定。
    6-1-6. プラグインをキャッシュするかどうかのbooleanの取得/設定。
    6-1-7. プラグインの種類(0:画像/1:書庫)のnumberの取得。
    6-1-8. (書庫プラグインのみ)書庫を事前展開するかどうかのbooleanの取得/設定。
    6-1-9. 拡張子リストのstringの取得/設定。
    6-2. 現在利用可能な画像プラグインの設定の上記6-1の設定オブジェクトの配列を生成すること。
    6-3. 編集された上記6-2の配列を画像プラグインの設定として適用すること。
    6-4. 現在利用可能な書庫プラグインの設定の上記6-1の設定オブジェクトの配列を生成すること。
    6-5. 編集された上記6-2の配列を書庫プラグインの設定として適用すること。

    現在使用中のバージョンはCanary20210523です。

    どうかよろしくお願い申し上げます。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。

      削除
    2. 実装の検討ありがとうございます。

      一応、新しいクラスの定義が必要なのは、
      2. (名前の例:Fileとか)
      4. (名前の例:Pictureとか)
      6-1. (名前の例:SusiePluginConfigとか)
      です。

      また、2-5.はnumber(実質System.Byte)を列挙可能なコレクション(実質System.Collections.Generic.IEnumerable)のことなのですが、ファイルを全部ロードしてからではなく、「ロードしながら順次先頭Byteから」MoveNext()でコレクションの列挙子オブジェクト(System.Collections.Generic.IEnumerator)の内部フィールドに1Byteだけ読み込んで、Currentでこれを吐き出すというやり方にして、2GB以上の巨大書庫でも読めるようにするのが望ましいでしょう。

      3-1.~3-6.はBookshelfItemAccessorに、 3-7.~3-9.はBookAccessorに追加するプロパティ/メソッドです。

      5-1.~5-8.はPageAccessorに、5-9.~5-12.はViewPageAccessorに追加するプロパティ/メソッドです。

      削除
  49. 毎度お世話になっております。

    さて、各サムネイルリスト
    ・本棚
    ・ページリスト
    ・履歴
    ・ブックマーク
    ・プレイリスト
    において、現状では使いづらい点がございます。

    1. 本棚以外のサムネイルリストで検索が使えません。1つのリストに時に数千個オーダーの大量のアイテムがあることはままあることです。特にページリスト/履歴でその傾向が強まるのですが、なぜ本棚だけに優遇されて検索が実装されているのかその理由がわかりません。

    2. ページリストで並べ替えに「種類」が指定できません。1つのブック(ディレクトリ)に様々な拡張子のファイルが同居することは普通のことです。なぜページリストだけが...と思ってしまいます。

    3. 履歴/プレイリストで表示方法に「サムネイル表示」が指定できません。これもなぜ他の3つはできるのに...と頭を抱えています。

    上記1.~3.に共通して言えることは、サムネイルリストという「基底」のコンポーネントに仕様を統一して実装されているべき機能が、個別の本棚/ページリスト/履歴/ブックマーク/プレイリストという「派生」の各コンポーネントごとに仕様が異なってしまっていることです。ソースを熟読しないとわからないことですが、もしかして検索/並べ替え/表示方法などの機能が各派生サムネイルリストに「コピペして改変」などの手口で重複して別々に実装されてしまっている「DRY原則に従わない」状態になっていないかとの疑いを抱いてしまいます。

    4. 履歴において最終閲覧DateTimeがわかりません。理想は、今日/昨日/7日以内/今月...と自動でディレクトリに分類されるのがよいのですが、それができなくてもせめて最終閲覧DateTime値の表示ぐらいはあった方がよいのではないかと思います。

    5. サムネイルリストを印刷できません。ディレクトリ内の画像ファイル一覧を印刷したりPDFに焼いたりするのに現状ではワープロ/表計算アプリを駆使して原稿を作成しなければならない状態で大変手間がかかっています。もしサムネイルリスト印刷機能があればかなり楽になりそうです。

    機能の改善の要望は以上の通りです。お忙しいところ恐縮ですが、どうかよろしくお願いいたします。

    返信削除
    返信
    1. ご要望ありがとうございます。実装を検討いたします。

      削除
  50. 連続投稿すみません。

    さて、Canary20210523にてメニューのカスタマイズが有効にならない不具合が見つかりました。

    まず、スクリプトディレクトリに動作確認の取れたスクリプトを適当な名前(例:Aaa.nvjs)で保存しておきます。

    次に、設定の「コマンド」->「コンテキスト メニュー」のページで適当な位置(例:オプション(O)とヘルプ(H)との間)に《サブメニュー》を追加して名前を適当な名前(例:スクリプト(S))に変更します。

    次に、このサブメニューの中に適当なコマンド(例:スクリプト/Aaa)を追加します。

    これでメニューのカスタマイズが完了したつもりなのですが、ハンバーガーメニューをクリックしても増設したサブメニューが存在しません。例のケースではオプション(O)とヘルプ(H)との間にスクリプト(S)が見つからない状態です。

    返信削除
    返信
    1. 設定の「コンテキスト メニュー」は、メインビューの右クリックメニューの編集になります。
      メインメニュー(ハンバーガーメニュー)はそれとは別で、固定となります。

      削除
  51. > 設定の「コンテキスト メニュー」は、メインビューの右クリックメニューの編集になります。

    ヘルプなどに「メインビューの右クリックメニュー」との明記がないためわかりにくかったです。追加の説明があった方が良いですね。

    それから、右クリックにはデフォルトで「前のページに戻る」コマンドが割り付けられていて右クリックメニューが出てこないようになっています。このため、右クリックメニュー自体の存在に気付かず、これのカスタマイズ機能の恩恵を受けられるユーザーが案外少ないのではと思いました。このため、この右クリックメニューに加えて多くのユーザーが操作するであろうメインメニューのカスタマイズ機能もあった方が良いかもしれません。


    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。

      削除
  52. 夜分恐れ入ります。

    さて、いつの間にかC:\などのドライブのルートディレクトリをコマンドラインで直接開けなくなってしまいました。コマンドプロンプトから、

    NeeView "C:\"

    としてもC:\ディレクトリがブックとして開けない状態です。

    Canary20210523にて確認しました。

    返信削除
    返信
    1. ご報告ありがとうございます。
      調べたところ、.NET Frameworkのコマンドライン引数仕様のようで、最後の文字がエスケープシーケンスとして処理され 「C:"」として渡されてくるのが原因です。過去のバージョンではエラー表示していなかっただけで正常にフォルダーを開けていませんでした。
      対策を検討しますが、完全な対処は難しそうです。
      当面は "C:\\" とするか "C:\ " とスペースを入れることで現象を回避してください。

      削除
    2. 調査の方ありがとうございます。

      当方においても、引数にファイルパスを入れることを想定した.NET Frameworkのコンソールアプリを作ることがありますので、今後気を付けようと思います。勉強になりました。

      削除
  53. update translation until 0530 :D
    https://www31.zippyshare.com/v/xADlIwsq/file.html

    I saw the"ブックを変更してもスケールを維持する" string etc , where to turn it on in setting ?

    返信削除
    返信
    1. Thank you as always!

      > I saw the"ブックを変更してもスケールを維持する" string etc , where to turn it on in setting ?
      It can be selected from the pushpin button context menu in the navigator panel. When turned on, the pushpin effect will continue even if the books are replaced.

      削除
  54. 毎度お世話になっております。

    さて質問があるのですが、現在対応しているベクトル画像はPDFとSVGの2つだけですが、これ以外の任意のベクトル画像形式にサードパーティー製やユーザー自作のコンバーターで対応させるにはどうしたらよいのでしょうか。

    基本的に、ラスター画像に対してはWICコーデックまたはSusie画像プラグインを、アーカイブフォーマットに対してはSusie書庫プラグインを各自で導入して対応することとなっています。しかし、ベクトル画像に対しては外部プラグインを受け入れる機能がないばかりか、そもそもWICのような汎用プラグイン規格のベクトル画像版なるものを聞いたことがありません。

    一応、WMF/EMFなどのベクトル画像に対応したSusie画像プラグインというものは存在します。しかし、これは対象のベクトル画像を一旦ラスター画像に書き出す「ラスタライズ」を行うため、NeeView上で拡大表示するとギザギザのノイズが発生してしまいます。このようなノイズを発生させることなく任意のベクトル画像の拡大表示ができれば、と思っています。

    そこで、もし任意のベクトル画像をNeeViewが素で対応しているSVGに変換するフィルターDLLが存在するならば、これを利用してNeeViewの内部メモリに対象ベクトル画像から生成したSVGを置いてこれを表示させる、といった事をユーザーが自力で行うための方法を知りたいのです。

    どうかご教示よろしくお願いします。

    返信削除
    返信
    1. SVG表示には「SharpVectors」という外部ライブラリを使っています。
      このライブラリはSVGファイルからWPFでのベクター画像形式(DrawingImage)に変換する機能があるため、それを使用しています。

      PFD表示には「PdfiumViewer」という外部ライブラリを使っています。
      このライブラリはPDFファイルから指定サイズでラスタライズ画像を作成する機能があり、NeeViewでは表示サイズ変更の都度画像を再生成しています。

      NeeViewではこのようにそれぞれ専用処理で実装しているため、これらを使って他のベクトルフォーマットに対応させるのは難しいかと思われます。

      削除
    2. 一応、
      「他のベクトル画像」 => 「SVG」
      の部分は「ユーザー自身が開発する」か「サードパーティーライブラリを使う」かとなり、それ以降の
      「SVG」 => 「DrawingImage」
      の部分は導入済みのSharpVectorsが行うという方式です。

      削除
    3. こちらで提案できるのは、すべてのファイルをSVGに変換出力してそのフォルダーをNeeViewで開く、という方法ぐらいになります。

      削除
    4. とっさに思いついた要望ですが、スクリプトでベクトル画像用プラグインを定義するというのはどうでしょうか。

      すなわち、
      「他のベクトル画像」 => 「SVG」
      の変換を行うスクリプトをユーザー自身が記述して、このスクリプトと拡張子とを関連付けるという方法です。

      具体的には、
      1. nv.Args[ 0 ] で変換前のベクトル画像ファイルのByteデータを表す number[] 配列を受け取り、
      2. この number[] を元にSVGのソースコード文字列の string を生成して、
      3. return( string ) ; としてSVGのソースをスクリプトから出力する。
      という処理のスクリプトをユーザー自身が記述して用意し、
      ・スクリプトにベクトル画像のByteデータを渡して呼び出す。
      ・スクリプトの戻り値のSVGのソースをDrawingImageに渡して画像として表示する。
      の処理はNeeView側で行う、という流れです。

      そして、設定の「対応形式」のところに「ベクトル画像」のページを新設して、
      ・ベクトル画像=>SVG変換スクリプトを使用する[ON/OFF]
      ・画像表示で変換スクリプトを優先する[ON/OFF]
      ・「スクリプト名/拡張子/有効チェックボックス」の項目のリスト
      を設定可能にする、という感じです。

      削除
    5. ご要望ありがとうございます。対応を検討いたします。

      削除
  55. おはようございます。

    さて、以前
    ・スクリプトからSystem.Diagnostics.Processクラスを呼び出せない。
    と申し上げましたが、このことについて質問サイト「Stack Overflow」に質問を上げているみたいですが、なかなか回答が得られていないようですね。

    そこで提案なのですが、直接JINTの開発者にGitHubのIssuesから問い合わせてみではどうでしょうか。

    なお、今までの「課題」を見ていると
    ・外部アプリの起動時のカレントディレクトリを指定できるようにしてほしい。
    などの外部アプリに関する要望がちらほら見受けられます。もしSystem.Diagnostics.Processクラスがスクリプトから利用できれば、これを使って外部アプリの起動時のオプションをもっと細かく指定して起動することができるようになります。例えば、
    ・起動プロセスのユーザーアカウントの指定。
    ・起動したアプリの標準入出力の読み書き。
    といったことが可能になります。できる限り早くSystem.Diagnostics.Processクラスが利用可能となることが望ましいと思われます。

    返信削除
    返信
    1. 質問はStack Overflowへと書かれていますので、気長に待ちます。
      ひとまずSystem.Diagnostics.Processを使えるようにしておきます。

      削除
    2. > ひとまずSystem.Diagnostics.Processを使えるようにしておきます。

      修正の検討ありがとうございます。

      削除
  56. いつもお世話になっております。

    さて、スクリプトのinclude()文ですが、呼び出し先のスクリプトのnv.Argsに任意の値を渡すことができず、デバッグやテストに支障をきたして若干不便な思いをしています。そこで要望なのですが、include()に省略可能な引数で呼び出し先スクリプトに値を渡せるようにしていただければ大変ありがたいです。具体的には
    object include( string path , [ object[] args ] ) ;
    とか、
    object include( string path [ , object arg0 , object arg1 , .... ] ) ;
    という感じで呼ぶ出し先スクリプトのnv.Argsに渡す省略可能引数を増設する形をご検討いただければ、と思っています。

    お忙しいところ大変恐縮ですが、どうかよろしくお願いします。

    返信削除
    返信
    1. ご要望ありがとうございます。対応を検討します。
      includeでArgsを引き継がないという仕様自体を変更するかもしれません。

      削除
    2. > includeでArgsを引き継がないという仕様自体を変更するかもしれません。

      nv.Argsの現状の仕様が上から引き継ぐものであること、初めて知りました。ちゃんとヘルプに動作仕様の記述は行っておいた方がよいでしょう。

      とすると、「破壊的変更」を回避するため、現在の上から引き継ぐnv.Argsの仕様はそのままで、include()で明示した引数を格納する
      nv.LocalArgs
      とかを新設する方向にした方がよいと思われます。

      削除
    3. 勘違いによる仕様(ほぼバグ)でした。
      この機能はリリース版にはまだありませんので挙動の変更は問題有りません。Canary版でご報告いただいて助かりました。

      削除
  57. こんにちは。 NeeView38.3を使わせていただいています。素晴らしいソフトをありがとうございます。
    検索について教えてください。
    本棚パネルの上部の検索ウィンドウからブックの検索をよく行うのですが、ソフト起動後最初の検索時はその結果表示まで1分程度とかなり時間がかかります。2回目以降の検索時は2~3秒程度で結果表示されます。ちなみに検索対象のブック(フォルダーもしくは圧縮ファイル)総数はおおよそ5,400件程度です。
    設定画面には特に検索結果表示速度向上に寄与しそうな項目が見当たらなかったのですが、最初の検索時の結果表示を高速化する設定・方策等あればご教授いただけませんでしょうか。

    返信削除
    返信
    1. デフォルトではサブフォルダーを含めて検索する設定になっているので、そのためかもしれません。
      本棚の詳細メニュー(「…」ボタン)の検索オプションで「サブフォルダーを含める」をOFFにしてみてください。

      削除
  58. ご返信いただきありがとうございます。
    OFFにしたところ、確かに結果表示が早くなりました!
    できればON(サブフォルダーも含めて)でもこのくらい早いと有難いのですが...
    そのような機能改善は難しいのでしょうか? もし可能なら是非ご検討いただきたいです!
    とにかく、ありがとうございました!

    返信削除