SOLDOUT Item Editor1.05解説書

[注意]このプログラムの使用により発生した全ての結果について、作者は責任を負いません

1.特徴、仕様
2.インストール

   2-1.バージョンアップ
3.アンインストール
4.使用方法
5.ルールファイルについて
6.特有の制限
7.正規表現について
8.謝辞
9.補足
10.更新履歴



1.特徴、仕様

   このプログラムはSOLD OUTアイテム定義ファイルである
   「inc-item-data.cgi」をプロジェクトとして認識し、
   編集するプログラムです。
   
   ただし、プロジェクトとして展開する際に、一度内部形式に変換され、
   保存する時に再びSOLD OUTアイテム定義ファイルの形式に変換するため、
   一部の注釈や項目内要素の順序(順序が影響しないものに限る)など、
   プロジェクトとして意味を持たないものは消去されます。

   バグを見つけたり要望がある場合はfuku研究所の BBS に書込みしていただけるとうれしいです。


2.インストール

   このプログラムにはインストーラはありません。

   圧縮ファイルに指定されているフォルダ情報を維持したまま解凍すれば使用できます。
   [注]一度起動して終了すると設定を保存した「SOLDOUTItemEditor.ini」というファイルがSOLDOUTItemEditor.exeと同じフォルダにできます。

バージョンアップ方法

   既に過去のバージョンのSOLDOUTItemEditorがインストールされている場合、以下の方法でバージョンアップします。

   (1)新しいバージョンの圧縮ファイルを過去バージョンと同じフォルダに上書き解凍します。
      (同じ場所に解凍すれば「上書きしますか?」または「置換えますか?」と聞かれるはずなので「はい」と答えます)
   (2)終わりです


3.アンインストール

   このプログラムはレジストリへは書き込みを行いませんので、
   解凍したフォルダごと削除すればアンインストールできます。
   編集時にバックアップしたファイルを残したい場合は事前に移動しておいてください。


4.使用方法

   解凍したフォルダにあるSOLDOUTItemEditor.exeを実行します。
   
   なお、ページ解説中に「確定」という言葉が出てきますが、
   「確定」は「元に戻す」の復元ポイントを作成しているだけで、ファイルには保存されていません。
   ファイルに保存する場合はメニューの「ファイル->上書き保存」を使用してください。
   
   解説時の画像は、標準ベータ版(04/03/18)のinc-item-data.cgi(ちょっと編集済)を開いた状態で作成しました。

   実行画面の説明
   ●アイテムページ
   ●イベントページ
   ●関数ページ
   ●定義ページ
   ●配置ページ
   ●プロジェクトページ
   ●環境設定ダイアログ
   ●検索/置換ダイアログ
   ●直接編集ダイアログ
   ●別ウィンドウ編集ダイアログ
   ●拡張項目ダイアログ
   ●その他

●アイテムページ
アイテムページ
   要素がメチャクチャ多いのでブロックに分けて解説します。
   
   (1):ページ切替
      各ページを切り替えるタブです。
      プロジェクトの別の箇所を編集する時に使用します。
      ページ切替を行う時、現在編集中の項目は確定されます。
   
   (2):アイテムリスト
      現在存在するアイテムのリストです。
      編集したい項目を選択をすると画面右側の編集領域に展開され、編集できます。
      選択を変更する時、現在編集中の項目は確定されます。
   
   (3):アイテム制御パネル(?)
      現在存在するアイテムに関係する操作ボタン群です。
      ●追加:新しいアイテムを追加し、直ちに選択します。
         「挿入」にチェックが入っている場合は現在位置、
         そうでない場合はリストの最後に追加されます。
      ●複製:現在編集中の項目のコピーを追加し、直ちに選択します。
         「挿入」にチェックが入っている場合は現在位置、
         そうでない場合はリストの最後に追加されます。
      ●挿入(チェックボックス):「追加」「複製」で追加するアイテムの位置を変更します。
      ●削除:現在選択中の項目を削除します。
      ●↑:現在選択中の項目をひとつ上へ移動します。配置ページの項目も移動されます。
      ●↓:現在選択中の項目をひとつ下へ移動します。配置ページの項目も移動されます。
      ●整列:アイテムリストをソートします。
         ソートするキーは「No」「コード」「名称」「標準価格」「維持費」「分類」が選択できます。
         また、今回既に整列している場合はさらに「前回のソート前の配列」が追加されます。
         (この項目は整列後にアイテム数が変わる操作をすると消えてしまいます)
         (この項目は保存されません。ファイルを開きなおすと消えてしまいます)
         
         降順ソートにチェックするとソート方向が逆になります。
         「前回のソート前の配列」を選択している場合は無視されます。
   
   (4):@@ITEM要素
      リストで選択されている項目の@@ITEM要素を編集できます。
      
      「no」は「追加」「複製」でこのアイテムを作成した場合は重複のない番号に変更されています。
      「type」は@@DEFINEの分類リストがプルダウンリストから選択可能です。
      「no」「code」「name」「limit」は必須です。
      「flag」は「ベータ版有効」のルールを使用していないと設定できません。
   
   (5):@@ITEM関数
      「funct」「funcs」「funcb」の編集ができます。
      広い範囲で編集したい場合はすぐ下の「別ウィンドウ編集」を選択すると別ウィンドウに編集を移します。
      
      「funcs」「funcb」は「ベータ版有効」のルールを使用していないと選択できません。
   
   (6):@@ITEM拡張
      ●別ウィンドウ編集:すぐ上の関数編集項目を 別ウィンドウ にて編集します。
            OKで閉じるとすぐ上の項目に結果を反映します。
      ●拡張項目:使用中のルールで@@ITEM用の拡張項目が設定されている場合は 拡張項目ダイアログ を開きます。

   (7):@@USE操作パネル(?)
      ●@@USEリスト:現在の@@USEのリストです。
            選択を変更すると@@USEエリアに展開され、編集できます。
            スペースの都合上コンボボックスです・・・
      ●追加:新しい@@USE項目を追加し、直ちに選択します。
      ●複製:選択中の項目の複製を@@USE項目に追加し、直ちに選択します。
      ●削除:選択中の項目を削除します。
      ●↑:選択中の項目をリストのひとつ上に移動します。
      ●↓:選択中の項目をリストのひとつ下に移動します。
   
   (8):@@USE要素
      @@USEリストで選択されている項目の@@USE要素を編集できます。
      
      「argselect」は「ベータ版有効」のルールを使用していないと設定できません。
   
   (9):@@USE関数
      「func」「funci」「funcb」の編集ができます。
      右の項目は関数設定です。
      下の編集領域は関数設定が「_local_」になっていない場合は無視されます。
      また、選択リストには同アイテムの「_local_」の番号指定版、
      「@@FUNCITEM」から検索された関数名リストが表示されます。
      
      「funci」は「ベータ版有効」のルールを使用していないと選択できません。
   
   (10):@@USE拡張
      ●別ウィンドウ編集:すぐ上の関数編集項目を 別ウィンドウ にて編集します。
            OKで閉じるとすぐ上の項目に結果を反映します。
      ●拡張項目:使用中のルールで@@USE用の拡張項目が設定されている場合は 拡張項目ダイアログ を開きます。

   (11):arg
      argのフラグを設定します。
      
      「選択肢」は「ベータ版有効」のルールを使用していないと設定できません。
   
   (12):job
      jobの項目を設定します。
      SOLDマニュアルでは特に触れられていませんが、この項目は複数指定可能なため、@@USEリストと同じような構成です。
      
      ●時半減:最もよく使う「時間半減」を設定します。@@DEFINEで標準の命名規則で割り当てがある場合はそれを、
            ない場合は2で使用時間を割る設定を「操作コード」に設定します。
      ●追加:新しい項目を追加し、選択します。
      ●削除:選択中の項目を削除します。
      
      この先はスペースの都合上画面上には解説が表示されていませんが、左上から並んでいます。
      
      ●職業指定:変更を行う職業を設定する項目です。選択リストには@@DEFINEの職業リストが表示されます。
      ●操作コード:変更の内容を設定します。
   
   (13):argselect
      argselectの選択肢リストを設定します。
      この項目は「ベータ版有効」のルールを使用していないと使用できません。
      
      argselectの各選択肢を分割してリスト化しています。
      @@USEリストと同じような構成です。
      
      ●↑:選択中の項目をひとつ上に移動します。
      ●↓:選択中の項目をひとつ下に移動します。
      ●追加:新しい項目を追加し、選択します。
      ●削除:選択中の項目を削除します。
      
      この先はスペースの都合上画面上には解説が表示されていませんが、左上から並んでいます。
      
      ●パラメータ:SOLDマニュアルの「パラメータ」に相当します。
      ●パラメータ見出し:SOLDマニュアルの「パラメータ見出し」に相当します。
   
   (14):use/need/get
      「use」「need」「get」のリストを設定します。@@USEリストと同じような構成です。
      
      ●種類:use、need、getのいずれかを選択します。
      ●追加:新しい項目を追加し、選択します。
      ●削除:選択中の項目を削除します。
      ●該当アイテム:増減するアイテム名またはアイテムNoを指定します。
            「このアイテム」を指定した場合は編集中アイテム名に置き換えられます。
            アイテムNoを指定した場合は該当するアイテム名に置き換えられます。
            選択リストには現在のアイテムリストが表示されます。
      ●数:増減数を指定します。
      ●確率:増減量の比率または確率を指定します。
      ●メッセージ:消費または取得時のメッセージを指定します。
   
   (15):その他のボタン
      ●アイコン編集:編集中のアイテムのアイコン用画像ファイルを開きます。
      ●直接編集:編集中のアイテムの内容をinc-item-data形式で編集する 直接編集ダイアログ を開きます。
            ネット上などでinc-item-data形式のアイテム定義を拾った時、
            直接編集に貼り付けるとすばやく入力できます。
      ●適用:編集中のアイテムデータを確定します。
      ●元に戻す:編集中のアイテムデータを最後に確定したところまで戻します。

●イベントページ
イベントページ
   要素が結構多いのでブロックに分けて解説します。
   
   (1):ページ切替
      各ページを切り替えるタブです。
      プロジェクトの別の箇所を編集する時に使用します。
      ページ切替を行う時、現在編集中の項目は確定されます。
   
   (2):イベントリスト
      現在存在するイベントのリストです。
      編集したい項目を選択をすると画面右側の編集領域に展開され、編集できます。
      選択を変更する時、現在編集中の項目は確定されます。
   
   (3):イベント制御パネル(?)
      現在存在するイベントに関係する操作ボタン群です。
      ●追加:新しいイベントを追加し、直ちに選択します。
         「挿入」にチェックが入っている場合は現在位置、
         そうでない場合はリストの最後に追加されます。
      ●複製:現在編集中の項目のコピーを追加し、直ちに選択します。
         「挿入」にチェックが入っている場合は現在位置、
         そうでない場合はリストの最後に追加されます。
      ●挿入(チェックボックス):「追加」「複製」で追加するイベントの位置を変更します。
      ●削除:現在選択中の項目を削除します。
      ●↑:現在選択中の項目をひとつ上へ移動します。配置ページの項目も移動されます。
      ●↓:現在選択中の項目をひとつ下へ移動します。配置ページの項目も移動されます。
   
   (4):@@EVENT要素
      リストで選択されている項目の@@EVENT要素を編集できます。
      
      「group」の選択リストは既に存在するgroup設定が表示されます。
      「code」は必須です。
   
   (5):param
      paramのリストを設定します。
      
      ●追加:新しい項目を追加し、選択します。
      ●複製:選択中の項目の複製を追加し、選択します。
      ●削除:選択中の項目を削除します。
      ●影響アイテム:発動中に影響を与えるアイテム名を指定します。
            選択リストには現在存在するアイテムリストが表示されます。
      ●操作コード:変更の内容を設定します。
   
   (6):@@EVENT関数
      「startfunc」「endfunc」「func」の編集ができます。
      右の項目は関数設定です。
      下の編集領域は関数設定が「_local_」になっていない場合は無視されます。
      また、選択リストにはイベント用標準関数「stock_le」「stock_ge」、
      「@@FUNCEVENT」から検索された関数名リストが表示されます。
      
   (7):その他のボタン
      ●直接編集:編集中のイベントの内容をinc-item-data形式で編集する 直接編集ダイアログ を開きます。
            ネット上などでinc-item-data形式のイベント定義を拾った時、
            直接編集に貼り付けるとすばやく入力できます。
      ●適用:編集中のイベントデータを確定します。
      ●元に戻す:編集中のイベントデータを最後に確定したところまで戻します。

●関数ページ
関数ページ
   ここまできたら全部ブロックです(笑)
   
   (1):ページ切替
      各ページを切り替えるタブです。
      プロジェクトの別の箇所を編集する時に使用します。
      ページ切替を行う時、現在編集中の項目は確定されます。
   
   (2):関数
      「@@FUNC」で始まる各要素を設定します。
      編集したい要素を選択すると下の領域に展開され、編集できます。
      選択を変更する時、現在の要素は確定されます。
   
   (3):その他のボタン
      ●直接編集:@@FUNC系の全内容をinc-item-data形式で編集する 直接編集ダイアログ を開きます。
      ●適用:編集中の関数データを確定します。
      ●元に戻す:編集中の関数データを最後に確定したところまで戻します。

●定義ページ
定義ページ
   プロジェクト中で最初に出現した@@DEFINEを編集するページです。
   職業リスト、分類リストなどはこの項目内を検索して作成します。
   
   (1):ページ切替
      各ページを切り替えるタブです。
      プロジェクトの別の箇所を編集する時に使用します。
      ページ切替を行う時、現在編集中の項目は確定されます。
   
   (2):@@DEFINE
      @@DEFINEの要素としてそのまま書き出されます。
   
   (3):その他のボタン
      ●適用:編集中のデータを確定します。
      ●元に戻す:編集中のデータを最後に確定したところまで戻します。
   
●配置ページ
配置ページ
   ファイルに書き出すときの順番と、これまでのいずれにも属さない要素を設定するページです。
   
   (1):ページ切替
      各ページを切り替えるタブです。
      プロジェクトの別の箇所を編集する時に使用します。
      ページ切替を行う時、現在編集中の項目は確定されます。
   
   (2):配置リスト
      ファイルに書き出す順番に並んだリストです。
      選択を切り替えると右側の詳細情報に展開されます。
      自由表記要素だった場合は編集できます。
      自由表記要素を編集中だった場合は、選択を切り替えるときに確定されます。
   
   (3):配置操作パネル(?)
      配置リストの操作ボタン群です。
      ●挿入:選択中の位置に自由表記要素を挿入し、選択します。
      ●複製:選択中の自由表記要素の複製を挿入し、選択します。
      ●削除:選択中の自由表記要素を削除します。
      ●↑:選択中の要素をリストのひとつ上に移動します。
            @@ITEM、@@EVENTのリストも必要に応じて並び変わります。
      ●↓:選択中の要素をリストのひとつ下に移動します。
            @@ITEM、@@EVENTのリストも必要に応じて並び変わります。
   
   (4):詳細情報
      自由表記要素を選択している場合は、編集可能になります。
      自由表記要素は他のいずれのページにも属さない要素を記述します。
      この要素は該当位置にそのまま書き出されます。
      
      ●編集ページに切替:選択中の要素が自由表記要素ではない場合、該当要素を選択してページ切替を行います。
      
   (5):その他のボタン
      ●適用:編集中の自由表記要素を確定します。
      ●元に戻す:編集中の自由表記要素を最後に確定したところまで戻します。
   
●プロジェクトページ
プロジェクトページ
   プロジェクト全体の情報と設定を行うページです。
   
   (1):ページ切替
      各ページを切り替えるタブです。
      プロジェクトの別の箇所を編集する時に使用します。
      ページ切替を行う時、現在編集中の項目は確定されます。
   
   (2):プロジェクト情報
      現在のプロジェクトに関する情報が表示されます。
   
   (3):アイコンの格納フォルダパス
      アイテムページの「アイコン編集」の実行時にアイコンがあるフォルダを
      編集中のファイルからの相対パス、または絶対パスで指定します。
      初期設定でSOLD標準のフォルダが指定されていますので、通常は変更しなくてもOKです。
      
   (4):その他のボタン
      ●適用:編集中のプロジェクト設定を全て確定します。
      ●元に戻す:編集中のプロジェクト設定を最後に確定したところまで全て戻します。
      
●環境設定ダイアログ
   メニューの「ファイル>環境設定」で呼び出す設定ダイアログです。
   
   ●メインページでの日本語第2バイト処理:
      メインウィンドウ上で編集結果を確定する時、
      スクリプトに含まれる「日本語第2バイトが'\'」の文字の次に'\'が続いていない文字を
      発見した時の処理を指定します。
      (Perl文法チェックはありませんので、該当文字は無条件に対象になります)
      ●補完が必要な場合確認する:該当文字を発見した時、ダイアログで確認を取ります。
            補完を実行した場合は'\'を該当文字の後ろに追加し、エスケープします。
      ●常に補完しない:該当文字は放置します。
      ●常に自動補完する:無条件に'\'を該当文字の後ろに追加し、エスケープします。
   
   ●直接編集ページでの日本語第2バイト処理:
      直接編集ページでOKを押して結果を反映する時、
      スクリプトに含まれる「日本語第2バイトが'\'」の文字の次に'\'が続いていない文字を
      発見した時の処理を指定します。
      (Perl文法チェックはありませんので、該当文字は無条件に対象になります)
      ●補完が必要な場合確認する:該当文字を発見した時、ダイアログで確認を取ります。
            補完を実行した場合は'\'を該当文字の後ろに追加し、エスケープします。
      ●常に補完しない:該当文字は放置します。
      ●常に自動補完する:無条件に'\'を該当文字の後ろに追加し、エスケープします。
   
   ●データを上書き保存する前に以前のデータをバックアップする:
      チェックするとファイルを開いている状態でメニューの「ファイル>上書き保存」を行った時、
      ファイルを書き出す前に以前のデータをSOIEのbackupフォルダに時刻で名前変更した上でバックアップします。
      
      バックアップされたファイルはフォルダに溜まっていくので気が付くとすごいことになってるかもしれません(笑)
      
      ファイルを開いていないか、「名前をつけて保存」の場合は
      既存のファイルを指定してもバックアップされないので注意してください。


   ●起動時に前回開いていたファイルを開く
      チェックしておくと起動直後に、前回閉じる時に開いていたファイルを自動的に開きます。
      プロジェクトが一つしかない場合はチェックしておくと毎回開く手間が省略できます。
   
   ●アイコン編集アプリケーション
      アイテムページの「アイコン編集」を押した時に実行するプログラムをフルパスで指定します。
      「参照」を押すとファイル選択ダイアログで選択できます。
      空にした場合は単にファイルに対して「開く」を発行します。
   
   ●アイコン編集アプリケーションへの引数(%fは対象フルパス)
      アイコン編集アプリケーションが設定されている時、指定されたプログラムへのコマンドラインパラメータです。
      %f の部分は開こうとしているファイル名に置換されます。
      初期状態で一般的なWindowsアプリケーション用の指定がされているので、
      通常は変更する必要はありません。
   
   ●拡張特殊機能を有効にする
      チェックすると仕様上、設計原則に反する部分のある特殊な機能を使用します。
      これらの機能は「有効にする拡張特殊機能」もチェックして使用します。
      これらの機能は条件によっては編集中のファイルの内容を破損させる恐れがあります。
      チェックする前に編集中のファイルをバックアップしておくことを強く推奨します。
      
      ●@@INCLUDEを要素として処理する(SOIEの再起動後に反映)
         @@INCLUDEを@@ITEMなどに定義されている要素として処理するようにします。
         この設定は内部形式の扱いを変更するため、設定変更を反映するにはSOIEを一度終了して起動しなおす必要があります。
         
         ●注意点:
            @@INCLUDEは他の要素と同様に処理されるため、@@ITEMや@@USEでは順不同に出力されます。
            @@INCLUDEの配置によって意味が変わるような場合は使用できません。

●検索/置換ダイアログ
   プロジェクトデータに対する検索または置換を実行するダイアログです。
   
   ●対象のデータ:検索または置換を行う対象です。
      ●現在のオブジェクト:メインウィンドウで編集中のオブジェクトを対象にします。
      ●現在のページ:メインウィンドウで表示されているページの全要素を対象にします。
      ●全アイテム:全てのアイテムを対象にします。
      ●全イベント:全てのイベントを対象にします。
      ●関数系:@@FUNC〜系の要素を対象にします。
      ●その他:@@DEFINE、自由表記要素を対象にします。
      ●アイテム・イベント:全てのアイテムとイベントを対象にします。
      ●アイテム・イベント以外:@@FUNC〜系、@@DEFINE、自由表記要素を対象にします。
      ●全て:存在する全要素を対象にします。
      ●結果ウィンドウで選択中・・・:結果表示ウィンドウで選択しているオブジェクトを対象にします。
   
   ●対象の要素:「対象のデータ」でリストアップされたオブジェクトのどの要素を対象にするかを指定します。
      ●全文(inc-item-data形式):オブジェクトをinc-item-data形式に変換した上で処理します。
            置換した場合は処理後内部形式に再変換しますが、置換結果が解析できない場合、置換は破棄されます。
      ●スクリプト:オブジェクトに含まれるスクリプト部分に処理します。
      ●固有コード(アイテム・イベントのみ):要素中の「code」に対して処理します。
            この要素を持たないオブジェクトは処理されません。
      ●No(アイテムのみ):要素中の「no」に対して処理します。
            この要素を持たないオブジェクトは処理されません。
      ●名前(アイテムのみ):要素中の「name」に対して処理します。
            この要素を持たないオブジェクトは処理されません。
   
   ●検索文字列:検索に使う文字列です。
         どのように扱われるかは「比較方法」に依存します。
         置換する場合は置換対象を検索するのに使用します。
   
   ●比較方法:検索方法を指定します。
      ●完全一致:対象と検索文字列が完全に同じ時にマッチします。
         「固有コード」「No」「名前」などに向いています。
      ●前方一致:対象の先頭が検索文字列と同じ時にマッチします。
         「固有コード」「No」「名前」などに向いています。
      ●通常検索:対象に検索文字列が含まれる時にマッチします。
         オールマイティーに使えます。
      ●ワイルドカード:ワイルドカード(*?)検索を行います。
         「検索文字列」はワイルドカード指定です。
         オールマイティーに使えますが、範囲が広がりやすいので置換には向きません。
      ●正規表現:独自形式正規表現によるマッチングを行います。
         「検索文字列」は正規表現のパターン文字列です。
         複雑な指定が可能で、特殊な検索ができますが、処理時間が長めです。
   
   ●正規表現オプション:「比較方法」が正規表現の時に使用するオプションです。
      ●連続強制:マッチングは文字列の先頭からずっとつながっていなければならないようにします。
         「繰り返し」がONの場合はマッチングに失敗するまで続行します。
         含まれる場合を探さないので処理時間が短くなります。
      ●繰り返し:マッチングに成功した後も、その位置から終端まで繰り返し実行します。
         Perl正規表現の「g」オプションに相当します。
      ●大文字小文字無視:マッチングは半角アルファベットの大文字小文字を無視して処理します。
         Perl正規表現の「i」オプションに相当します。
   
   ●置換文字列:置換を行う時に対象になった文字列に置き換える文字列です。
      「比較方法」が正規表現の場合は正規表現置換エリア指定(%v系のみ使用可)になります。
   
   ●検索:上記条件で検索を実行します。
   ●結果表示:結果表示ウィンドウを表示します。
   ●全て置換:上記条件で置換を実行します。
         置換後の文字列が解析できない場合はその要素は置換されません。

●直接入力ダイアログ
   inc-item-data形式のコードを編集するダイアログです。
   サイズ変更、ウィンドウ位置保持、サイズ保持に対応しています。
   
   編集領域の先頭には@@ITEMなどの表記が必須です。
   これがないと解析ができません。
   
   ●エラー情報:最後に解析した時のエラーリストを表示します。
      エラーリストダイアログの「固定」チェックボックスにチェックすると
      リストをダブルクリックした後にエラーリストダイアログを消さなくなります。
      
      エラーリストの項目をダブルクリックすると該当行にジャンプすることができます。
   
   ●OK:編集結果を内部形式に変換し、メインウィンドウに反映します。
      解析に失敗した場合はエラーリストダイアログを表示します。
   
   ●キャンセル:編集結果を破棄してメインウィンドウに戻ります。
      ×ボタンでこのダイアログを閉じた場合もこのボタンと同じ効果です。

●別ウィンドウ編集ダイアログ
   メインウィンドウのPerlスクリプト編集領域が小さいため用意された、
   可変サイズのPerlスクリプト編集用ダイアログです。
   サイズ変更、ウィンドウ位置保持、サイズ保持に対応しています。
   
   ●OK:編集結果をメインウィンドウに反映します。
   ●キャンセル:編集結果を破棄します。
      ×ボタンでこのダイアログを閉じた場合もこのボタンと同じ効果です。

●拡張項目ダイアログ
   ルールファイルで@@ITEM、@@USE用の拡張項目が登録されている場合のみ開けるダイアログです。
   ダイアログの左側は登録されている項目のリスト、右側は設定になります。
   
   右側に表示される内容はルール定義により変化します。
   基本的にはメインウィンドウと同様な扱いになります。
   
   ●OK:編集結果を確定します。
   ●キャンセル:編集結果を破棄します。
      ×ボタンでこのダイアログを閉じた場合もこのボタンと同じ効果です。

●その他
   ●ツール結果表示ウィンドウ
      ツールメニューの各コマンドが設定する結果表示およびジャンプウィンドウです。
      項目をダブルクリックすると該当するページに切替、要素を選択します。
      項目の先頭が「INFO」のものは補足なのでジャンプすることはできません。
      「固定」チェックボックスにチェックするとジャンプした後もこのウィンドウを閉じません。
      サイズ変更、ウィンドウ位置保持、サイズ保持に対応しています。
   
   ●プロジェクト整合性チェック
      プロジェクト全体の整合性をチェックし、makeitem時に問題になりそうな項目を検索します。
      現在、以下の項目についてチェックが行われます。
      
      ●@@ITEMのnoの重複
      ●@@ITEMのcodeの重複
      ●@@ITEMのnameの重複
      ●@@ITEMのtypeの有効チェック
      ●@@EVENTのcodeの重複
      ●スクリプト中の@@ITEMNOの無効名のチェック
      ●@@USEのuse/need/getの無効なアイテム指定のチェック
      ●@@EVENTのparamの無効なアイテム指定のチェック
   

5.ルールファイルについて
   このプログラムではプログラムのあるフォルダのmakeitem_rulesフォルダに
   ルールファイルを追加することにより、拡張項目を定義することができます。
   
   ルールファイルの拡張子は .sir となります。(Soldout Item editor Rule file の略です)
   これ以外の拡張子のファイルはルールファイルとして認識されません。
   
   ルールファイルの中身はテキストなので、メモ帳などを使って編集したり、作ったりすることができます。
   (ただし、正しく記述されていないと、SOIE側でうまく処理できない可能性があります)
   
   ルールファイルのチェックおよびロードはSOIEの起動時に行われます。
   SOIEの動作中に変更した場合は、一度SOIEを終了しないと反映されません。
   
   基本的に必要ない要素は省略できます。
   
   以下に表記ルールについて書いておきます。
   同梱のルールファイルなども参考にしながら読むと分かりやすいと思います。
   
      ルールファイルの文法はINIファイルの文法を元にしています。
      INIファイル文法との差異は以下の通りです。
         ● ; による注釈がありません。
         ●値に""等が含まれる場合もそのまま値として扱います。
         ●セクションは入れ子にでき、階層化されます。
         ●セクションの終点は [EndSection] セクションの記述により指定します。
         ●\n \t \\ はそれぞれ改行、タブ、\マークのエスケープとして扱います。
         ●要素名の大文字小文字は区別されます。
   
   上記解説でわからない場合は以下の解説をご覧ください。

      要素の記述は、 = を区切りにして左が要素名、右が値になり、改行までで1要素となります。
      値に含まれる \n \t \\ はそれぞれ改行、タブ、\マークのエスケープとして扱います。
   
      []の中に名前を表記し、他に何も記述されない行は「セクション」の開始として扱います。
      セクションの終点は「EndSection」セクション指定で指定します。
      「EndSection」という名前のセクションは定義できません。
   
      セクションは入れ子にして階層化することができます。
      解析時にはセクションの階層も読み込まれるので、階層位置は正確に記述してください。
      
      要素名、値ともに大文字小文字が区別されます。
   
   
●各設定要素名と指定する値
   ●要素
要素名設定する値
RuleNameSOIEで「ルール名」として使用する名前。省略できません。
BetaEnableベータ版要素を使用するかどうか。以下のいずれか。
設定値意味
trueベータ版要素を使用します。
falseベータ版要素を使用しません。

   ●セクション
      ●ItemRules
         @@ITEMに対する拡張項目を指定します。
         このセクションの下に0、1、2という風に順番にセクションを作成し、各セクションに要素を設定します。
         セクション番号を飛ばすと認識されません。
         設定される要素はこの後のUseRulesセクションとほぼ同じです。内容は後述。
      ●UseRules
         @@USEに対する拡張項目を指定します。
         このセクションの下に0、1、2という風に順番にセクションを作成し、各セクションに要素を設定します。
         セクション番号を飛ばすと認識されません。
         設定される要素は前述のItemRulesセクションとほぼ同じです。内容は後述。
   
   ●ItemRules/UseRulesセクションの設定要素
要素名設定する値
Namename,no等と同じに扱う要素名。省略できません。
Type1〜3設定領域の種類。
最後の数値は1〜3の範囲で、3種類指定できます。
以下のいずれかを指定してください。
設定値意味
CHECKチェックボックスを使用します。
この指定はType1でのみ有効で、Type1をCHECKにした場合はType2以降は使用しません。
EDITエディットボックスを使用します。スタンダードな入力項目です。
LIST_ITEMNAME選択リストを使用します。リストにはアイテム名、実際に出力される内容はアイテム名です。
LIST_ITEMCODE選択リストを使用します。リストにはアイテム名、実際に出力される内容はアイテムコードです。
LIST_ITEMNO選択リストを使用します。リストにはアイテム名、実際に出力される内容はアイテムNoです。
LIST_ITEMTYPE選択リストを使用します。リストにはアイテム分類、実際に出力される内容はアイテム分類です。
LIST_JOB選択リストを使用します。リストには職業名、実際に出力される内容は職業コードです。
LIST_EVENTCODE選択リストを使用します。リストにはイベントコード、実際に出力される内容はイベントコードです。
LIST_USER選択リストを使用します。
リストには同セクションのUserList1〜3(設定するTypeの番号と同じ番号)セクション以下のデータを使用します。
UserList1〜3セクションは要素名がリストに表示され、
値が実際に出力される内容になります。
このリストは表示時にソートされます。順番を指定したい場合は要素名の先頭に001などの番号をつけることで可能です。
Info1〜3Type1〜3(Typeの番号とこの要素の番号は対応します)の解説。
Array項目が複数定義可能かどうか。下記表のいずれか。
この要素はUseRulesセクションのみ使用可。
省略時は false として扱います。
設定値意味
true項目は複数定義可能です。
false項目は単独定義です。
CheckInfo0〜9Type1がCHECKの時に表示するチェックボックスの解説。
最大10個のチェックボックスを表示でき、番号はチェックボックスの番号です。
CheckKey0〜9と同時に指定した場合のみ表示されます。
CheckKey0〜9Type1がCHECKの時に表示するチェックボックスの出力値。
最大10個のチェックボックスを表示でき、番号はチェックボックスの番号です。
出力時、若い番号が先に結合されます。
CheckInfo0〜9と同時に指定した場合のみ表示されます。
SeparatorTypeまたはCheckInfo/CheckKeyが複数有効な時に使用する分割、結合キー文字列。
複数の要素を結合する場合、省略できません。
RegexSepTypeまたはCheckInfo/CheckKeyが複数有効な時に分割キーに正規表現を用いるかを指定します。
省略時は false として処理します。
以下のいずれか。
設定値意味
true分割キーは正規表現を使います。パターン文字列はSepRegexPattern要素に指定します。
false分割キーは単純文字列を使います。文字列はSeparator要素に指定します。
RegexOpt正規表現で分割する場合に使用するオプションです。
下記表中の文字を組み合わせて指定します。
省略時は g として処理します。
設定値意味
gマッチングを繰り返します。Perl正規表現の g オプションに相当します。
3要素以上を分割する場合は指定しないと正しく分割できません。
i大文字小文字を同一視します。Perl正規表現の i オプションに相当します。
sマッチングは1文字目から連続していなければならなくなります。
SepRegexPatternRegexSepが true の時に使用する正規表現パターン文字列です。


6.特有の制限
   このプログラムは可能ならば全てのmakeitemの表現を用いての編集を可能にしたかったのですが、
   現在、一部の表現は編集が制限されるか、利用できません。
   以下にその内容を書いておきます。
   
   ●@@ITEMの使用不能要素(これらの要素は04/03/18版のマニュアルには記載されていないようです)
要素名解説
moneypriceと同一視される要素です。SOIEではpriceのみ対応しています。
\priceと同一視される要素です。SOIEではpriceのみ対応しています。
   
   ●@@USEの使用不能要素(これらの要素は04/03/18版のマニュアルには記載されていないようです)
要素名解説
code@@USEの分割定義に使用する要素です。SOIEでは分割定義に対応していません。
no@@USEの番号指定を変更する特殊要素です。SOIEでは内部都合上、対応が難しいため対応していません。
moneypriceと同一視される要素です。SOIEではpriceのみ対応しています。
\priceと同一視される要素です。SOIEではpriceのみ対応しています。

   ●@@IFの扱い
      @@IFは都合上、@@ITEM等と同列に扱われます。
      そのため、@@ITEM定義中などに@@IFが出現すると@@ITEMの終端として扱われ、
      以降の要素がアイテムページに展開されません。
      (以降の要素は自由表記要素として保持され、保存時には元通り復元されます)
   
   ●@@INCLUDEの扱い
      @@INCLUDEが記述されている場合、自由表記要素として解析されます。
      挿入したファイル中でアイテム定義などを行っても、解析の対象になりません。
      結果として、アイテム追加時のアイテムNoの自動付与が挿入したファイル中のアイテムNoと重複する可能性があります。
      問題を解消するには、@@INCLUDEのかわりに挿入するファイルの中身を展開してください。
      
      また、アイテム定義中等に記述した場合、記述位置によってはうまく解釈できないケースが発見されています。
      この問題は「拡張特殊機能」->「@@INCLUDEを要素として処理する」を有効にすることで回避できることがあります。
   
   ●自由表記要素の扱い
      配置ページから自由表記要素を作成し、その中に他のページが担当する要素を記述しても、
      すぐに反映されることはありません。
      反映するには一度ファイルを保存して、再読込を行ってください。


7.正規表現について

   SOIEで使用される正規表現は、独自の指定方法を持ちます。
   Perl互換の指定方法も使用できるようにしたかったのですが、現状うまく実装できていないので・・・
   
   パターン指定の一例

   A.「文字列 abc にマッチ」= abc
   B.「文字列 abc か def にマッチ」= %[%(abc%)%(def%)%]
   C.「数字が続く限りマッチ」= %/d
   D.「1〜3個のアルファベット(最長)にマッチ」= %1,3l
   E.「アルファベットが続く限りかつ文字列 012 が続かない」= %*l%!(012%)


   比較対象に zxcabc0123def という文字列を使い、オプションを使わないと、
   上記は以下のように処理されます。(^があるところがマッチ範囲)

   A. zxcabc0123def
         ^^^
   B. zxcabc0123def
         ^^^
   C. zxcabc0123def
            ^^^^
   D. zxcabc0123def
      ^^^
   E. zxcabc0123def
      ^^^^^


   以下に独自形式のメモを記しておきます。(使う人がいるのかという疑問もありますが^^;)
   上の例と照らし合わせて見ていただければ^^;

特殊文字は必ず%から始まる。指定パターンは以下の通り

基本形:%[判定指定][最低数(v,V,u,U,t,hのみ番号)][.最低数(v,V,u,U,t,hのみ)][,最大数]指定文字

   判定指定: 
   +:最短マッチにする。 
   *:最長マッチにする。 
   !:否定にマッチする。(マッチした場合は長さ0) 
   /:純粋最長マッチにする。(その先のパターンにマッチするかチェックしない) 
   最低数:最低この数がマッチしないとマッチしない 
   最高数:この数までマッチした場合は検索を終了する。 
   番号:抽出オブジェクトがある場合、その要素番号。 
   繰り返しが指定されている場合、一回ごとにリセットされる。 

指定文字:先頭の%は最初の%のことです(10進数字は%%dじゃなくて%dです)       
1.固定指定。数量子は使用不可。 
   %%:%文字 
2.グループ指定。 
   %(〜%):指定した範囲をまとめる。)には数量子指定不可。 
   %{〜%}:指定した範囲がマッチした場合、抽出する。}には数量子指定不可。 
   %[〜%]:指定した範囲のオブジェクトのうち、いずれかに該当する場合にマッチする。 
          ]には数量子指定不可。 
3.通常特殊文字 
   %d:10進数字(0-9)に該当。 
   %D:10進数字(0-9)以外に該当。 
   %x:16進数字(0-9a-f)に該当。 
   %X:16進数字(0-9A-F)に該当。 
   %n:16進数字(0-9a-fA-F)に該当。 
   %N:16進数字(0-9a-fA-F)以外に該当。 
   %a:小文字アルファベット(a-z)に該当。 
   %A:大文字アルファベット(A-Z)に該当。 
   %w:ホワイトスペース(\t )に該当。 
   %W:ホワイトスペースと改行(\t \r\n)に該当。 
   %i:ホワイトスペース(\t )以外に該当。 
   %I:ホワイトスペースと改行(\t \r\n)以外に該当。 
   %l:全てのアルファベット(a-zA-Z)に該当。 
   %L:全てのアルファベットと数字(a-zA-Z0-9)に該当。 
   %b:全てのアルファベット(a-zA-Z)以外に該当。 
   %B:全てのアルファベットと数字(a-zA-Z0-9)以外に該当。 
   %y:1バイト記号(!"#$%&'()=~|`{+*}<>?_-^\@[;:],./)に該当。 
   %Y:1バイト記号(!"#$%&'()=~|`{+*}<>?_-^\@[;:],./)以外に該当。 
   %k:全ての1バイト可視文字(a-zA-Z0-9!"#$%&'()=~|`{+*}<>?_-^\@[;:],./)に該当。 
   %K:全ての可視文字(%kに2バイト文字を加えたもの)に該当。 
   %c:コントロールキャラクタ(0x01-0x1f,0x7f)に該当。 
   %C:改行以外の(半、全とも)1文字に該当。 
   %s:プログラム識別子(a-zA-Z0-9_)に該当。 
   %S:プログラム識別子(a-zA-Z0-9_)以外に該当。 
   %j:全ての文字(半、全とも)1文字に該当。 
   %J:全ての全角1文字に該当。 
   %?:全ての半角1文字に該当。 
   %g:行頭に該当。 
   %G:行末に該当。 
   %^:文字列の先頭に該当。 
   %$:文字列の最後に該当。 
   %z:次のオブジェクトに該当。(%*zaの場合、aの最長マッチになる)
4.参照文字 
   %v:抽出済み配列に該当。番号指定は最初が0で後に向かう。番号指定がない場合は0とみなす。 
   %V:抽出済み配列に該当。番号指定は最後が0で前に向かう。番号指定がない場合は0とみなす。 
5.範囲指定 
   %-:この後に続く2文字の範囲に該当する。 
         2文字には特殊文字や全角文字は使えない。 
         オブジェクトの範囲を取るわけではないので注意。 
6.マッチング制御 
   %p:これ以降の文字列はマッチ範囲から除外される。(ただしマッチしなければマッチは失敗する) 
   %P:%pに加え、この直後で文字列が終了した場合もマッチに成功する。 
   %e:抽出時のみ、抽出される範囲をここで終了する。 
       その後もマッチは続行、%pと組み合わせた場合は抽出範囲はこっちが優先 
7.抽出済み配列操作 
   %t:最後に抽出した文字列を番号指定値に代入する。番号指定がない場合は0とみなす。 
       番号指定値が抽出した総数以上の場合は指定値まで配列が増え、隙間は空文字列で埋められる。 
   %T:配列の最後に空文字列を追加する。 
   %h:配列の番号指定値の要素を削除する。番号指定がない場合は0とみなす。 
   %H:配列の最後の要素を削除する。 




8.謝辞

   このプログラムのアルファテスト期間中、デバッグに協力していただいた方々です。
   この場を借りて、御礼申し上げます。(掲示板先着順)
   
   XKYグループ さん
   Duke さん
   236支持者 さん
   
   他 名も知らぬ24名(推定)の方々


9.補足

   ●SOIEプロジェクト情報について
      このプログラムで編集したファイルを保存すると、
      ファイルの先頭に「SOIEプロジェクト情報」が出力されます。
      
      これは、編集時に使用したプロジェクト名やルール、保存時のカーソル位置などが保存されているものです。
      この情報をまるごと消去した場合は、開いた時にプロジェクト名とルールを再設定する必要があります。
      makeitemの時は全て注釈として扱われるので、問題はないはずです。
      
      また、プロジェクト情報が書き込まれていても、ファイルを直接編集することは構いません。
      カーソル位置は解析時に無効な位置を指していた場合は修復されます。
   
   ●バックアップについて
      環境設定の「上書き保存時に以前のデータをバックアップする」設定は、
      該当位置の解説にもかきましたが「上書き保存」時のみ対応します。
      保存するファイル名を選択した時に既存のファイル名を指定した場合はバックアップされません。
      
      バックアップしたファイルはその時の時間をくっつけた名前に名前変更され、
      SOIEのプログラムのあるフォルダのbackupフォルダにたまっていきます。
      SOIE側からこのフォルダの中身は一切参照されないので、
      古いファイルが不要な場合はこのフォルダの中にあるファイルを削除しても問題ありません。


10.更新履歴

v1.05(11/04/29)
[変更]アイコン編集アプリケーションパスの設定に相対パスを使用できないように変更
[修正]各ページの右下部分が表示されないことがある問題への修正を試行
v1.04(08/10/03)
[追加]拡張特殊機能の制御を追加
[追加]「@@INCLUDEを要素として処理する」を追加
[変更]プロジェクト情報設定時にプロジェクト名を空欄にした時、無題を表示するように変更
[変更]初期状態で「データを上書き保存する前に以前のデータをバックアップする」をONに変更
[修正]F1キーを押したときHTMLヘルプが開かなかった問題を修正
v1.03(07/09/11)
[変更]項目内の行コメントを可能な限り保存するように変更
[修正]イベントの解析エラーが一部報告されない問題を修正
[修正]イベント関数のパラメータ()までの間にスペースやタブが入ると正常に処理できない問題を修正
v1.02(06/09/02)
[修正]特定の操作をすると直接入力ダイアログが正常に動作しなくなる問題を修正
v1.01(06/08/02)
[修正]@@DEFINEを含まないファイルを開くと定義ページの内容が正しく保存されない問題を修正
[修正]ワイルドカードによる検索時、?が日本語を正しく処理しない問題を修正
[修正]ワイルドカードによる置換時、*が0個以上ではなく1個以上として動作していた問題を修正
v1.00(06/03/01)
ベータ版だけど一応完成版公開。




SOLDOUT Item Editor version 1.05 解説 終わり
開発元 fuku研究所