オートコンプリート時の表示順の仕様

4つの要素で決定されます。

  1. SortMode - 比較方法
  2. SepareteDirectory - ディレクトリの分離
  3. SortReverse - 逆順
  4. Prioritize - プライオリティ設定の有効

まず、Giraffe.Config.Listのこれらの値が参照され、それらを引数にGetSortModeイベントが呼ばれます。

array Giraffe.Event.GetSortMode(int sort_mode, int separate_directory, bool reverse, bool prioritize);

戻り値が存在する場合、配列とみなし、その要素を引数と同じ順で値を解釈し、それに従ってソートされます。

SortMode

数値で選びます。

  • 0 - 無し
  • 1 - 名前
  • 2 - 拡張子
  • 5 - ユーザ定義

ユーザ定義にした場合、グローバル関数List-Sort-Compareが呼ばれます。引数の2つの文字列が正しい順ならtrueを返します。

SepareteDirectory

これも数値です。

Reverse

ソート結果を逆順にする場合にtrueにします。

Prioritize

プライオリティ設定を有効にする場合にtrueにします。
プライオリティ設定はGiraffe.ListBox.Priorityに保持されます。
デフォルトでGiraffe.Config.Path.Priorityのファイルの内容が読み込まれています。ファイルの上位が優先されます。
読み込まない、もしくはUnloadにより、Giraffe.ListBox.Priority.IsLoadedがfalseを返す場合、オートコンプリート毎に読み込まれます。
これにより、履歴をプライオリティに反映させるなど、動的にプライオリティを決定することが可能です。
設定ファイルを経由せず、Giraffe.ListBox.Priority.SetValue(name, value)で直接設定することも可能です。
値の取得はGetValue(name)です。
値の最上位はゼロで、存在しない場合を示す最下位はUINTの最大値となります。