1 /*!
  2  * @include "_InternalClasses.js"
  3  * @include "Board.js"
  4  * @include "Category.js"
  5  * @include "CategoryList.js"
  6  * @include "CosSim.js"
  7  * @include "DatOut.js"
  8  * @include "Edit.js"
  9  * @include "MenuItem.js"
 10  * @include "NamedVariant.js"
 11  * @include "PopupTargetInfo.js"
 12  * @include "RangeList.js"
 13  * @include "ReferredList.js"
 14  * @include "ResItem.js"
 15  * @include "Strings.js"
 16  * @include "ThreadFinder.js"
 17  * @include "ThreadItem.js"
 18  * @include "ViewItem.js"
 19  * @include "ViewList.js"
 20  */
 21 
 22 /**
 23  * @static
 24  * @class JaneScript
 25  */
 26 var JaneScript = {
 27 	/**
 28 	 * 現在アクティブなスレビューのアイテムを取得する
 29 	 * Action:○ LateCall:○ Command:○
 30 	 * 
 31 	 * @return {_JVS.ViewItem} アクティブなViewItemのオブジェクト(オブジェクトリファレンス参照)
 32 	 */
 33 	ActiveView: function(){return new _JVS.ViewItem();},
 34 	
 35 	/**
 36 	 * NGに新しいアイテムを登録する。
 37 	 * 
 38 	 * ※アクティブなスレビューの再読込によるNGの反映は自動では行われない。
 39 	 * そのような動作をさせたい場合は、これらの関数を実行した後でNGを反映させたいスレに対して
 40 	 * スクリプトでthread.LocalReloadを実行する。
 41 	 * 
 42 	 * Action:○ LateCall:○ Command:○
 43 	 * 
 44 	 * @param {String} Item
 45 	 * @param {int} AboneType 登録するNGのあぼーんの種別
 46 	 * 0: 通常あぼーん
 47 	 * 2: 透明あぼーん
 48 	 * 4: 重要キーワード
 49 	 * @param {int} LiffeSpan アイテムの寿命
 50 	 * -1: アイテムの種類ごとの設定値に従う
 51 	 * 0: 寿命を管理されず、自動では削除されない
 52 	 * その他: その日数だけ新たなレスがなければ自動消去
 53 	 * @return {bool} 正常に登録された場合はtrue
 54 	 * すでに登録されていたり、空白文字列を登録しようとした場合はfalse
 55 	 */
 56 	AddNgName: function(Item, AboneType, LiffeSpan){return true;},
 57 	
 58 	/**
 59 	 * NGに新しいアイテムを登録する。
 60 	 * 
 61 	 * ※アクティブなスレビューの再読込によるNGの反映は自動では行われない。
 62 	 * そのような動作をさせたい場合は、これらの関数を実行した後でNGを反映させたいスレに対して
 63 	 * スクリプトでthread.LocalReloadを実行する。
 64 	 * 
 65 	 * Action:○ LateCall:○ Command:○
 66 	 * 
 67 	 * @param {String} Item
 68 	 * @param {int} AboneType 登録するNGのあぼーんの種別
 69 	 * 0: 通常あぼーん
 70 	 * 2: 透明あぼーん
 71 	 * 4: 重要キーワード
 72 	 * @param {int} LiffeSpan アイテムの寿命
 73 	 * -1: アイテムの種類ごとの設定値に従う
 74 	 * 0: 寿命を管理されず、自動では削除されない
 75 	 * その他: その日数だけ新たなレスがなければ自動消去
 76 	 * @return {bool} 正常に登録された場合はtrue
 77 	 * すでに登録されていたり、空白文字列を登録しようとした場合はfalse
 78 	 */
 79 	AddNgMail: function(Item, AboneType, LiffeSpan){return true;},
 80 	
 81 	/**
 82 	 * NGに新しいアイテムを登録する。
 83 	 * 
 84 	 * ※アクティブなスレビューの再読込によるNGの反映は自動では行われない。
 85 	 * そのような動作をさせたい場合は、これらの関数を実行した後でNGを反映させたいスレに対して
 86 	 * スクリプトでthread.LocalReloadを実行する。
 87 	 * 
 88 	 * Action:○ LateCall:○ Command:○
 89 	 * 
 90 	 * @param {String} Item
 91 	 * @param {int} AboneType 登録するNGのあぼーんの種別
 92 	 * 0: 通常あぼーん
 93 	 * 2: 透明あぼーん
 94 	 * 4: 重要キーワード
 95 	 * @param {int} LiffeSpan アイテムの寿命
 96 	 * -1: アイテムの種類ごとの設定値に従う
 97 	 * 0: 寿命を管理されず、自動では削除されない
 98 	 * その他: その日数だけ新たなレスがなければ自動消去
 99 	 * @return {bool} 正常に登録された場合はtrue
100 	 * すでに登録されていたり、空白文字列を登録しようとした場合はfalse
101 	 */
102 	AddNgId: function(Item, AboneType, LiffeSpan){return true;},
103 	
104 	/**
105 	 * NGに新しいアイテムを登録する。
106 	 * 
107 	 * ※アクティブなスレビューの再読込によるNGの反映は自動では行われない。
108 	 * そのような動作をさせたい場合は、これらの関数を実行した後でNGを反映させたいスレに対して
109 	 * スクリプトでthread.LocalReloadを実行する。
110 	 * 
111 	 * Action:○ LateCall:○ Command:○
112 	 * 
113 	 * @param {String} Item
114 	 * @param {int} AboneType 登録するNGのあぼーんの種別
115 	 * 0: 通常あぼーん
116 	 * 2: 透明あぼーん
117 	 * 4: 重要キーワード
118 	 * @param {int} LiffeSpan アイテムの寿命
119 	 * -1: アイテムの種類ごとの設定値に従う
120 	 * 0: 寿命を管理されず、自動では削除されない
121 	 * その他: その日数だけ新たなレスがなければ自動消去
122 	 * @return {bool} 正常に登録された場合はtrue
123 	 * すでに登録されていたり、空白文字列を登録しようとした場合はfalse
124 	 */
125 	AddNgWord: function(Item, AboneType, LiffeSpan){return true;},
126 	
127 	/**
128 	 * アドレスバーを参照するEditオブジェクト
129 	 * Action:○ LateCall:○ Command:○
130 	 * @type _JVS.Edit
131 	 */
132 	AddressBar: new _JVS.Edit(),
133 	
134 	/**
135 	 * 板一覧検索バーを参照するEditオブジェクト
136 	 * Action:○ LateCall:○ Command:○
137 	 * @type _JVS.Edit
138 	 */
139 	BoardSearchBar: new _JVS.Edit(),
140 	
141 	/**
142 	 * Janeの板一覧を格納したオブジェクトを取得する。取得したCategoryListにより、
143 	 * すべての板の列挙やURLからの板、スレの検索が可能。
144 	 * Action:○ LateCall:○ Command:○
145 	 * ;
146 	 */
147 	CategoryList: new _JVS.CategoryList(),
148 	
149 	/**
150 	 * 板またはスレを閉じる
151 	 * Action:× LateCall:○ Command:○
152 	 * @param {_JVS.Board | _JVS.ThreadItem | _JVS.ViewItem} Item 閉じる対象の板(Boardオブジェクト)またはスレ(ThreadItemオブジェクトまたはViewItemオブジェクト)
153 	 */
154 	Close: function(Item){},
155 	
156 	/**
157 	 * 文字列のCosine Similarityに基づく比較を行うためのCosSimオブジェクトを作成する
158 	 * 
159 	 * Action:○ LateCall:○ Command:○
160 	 * 
161 	 * @return {_JVS.CosSim} 作成されたCosSimオブジェクト
162 	 */
163 	CreateCosSimObject: function(){return new _JVS.CosSim();},
164 	
165 	/**
166 	 * グローバル座標系でのマウスカーソルの位置を取得する
167 	 * Action:○ LateCall:○ Command:○
168 	 * @return {_JVS.NamedVariant} カーソル位置情報を格納したNamedVariant
169 	 * NamedVariant.X カーソルのX座標
170 	 * NamedVariant.Y カーソルのY座標
171 	 */
172 	CursorPos: function(){return new _JVS.NamedVariant();},
173 	
174 	/**
175 	 * JaneViewの実行ファイルパスを取得する
176 	 * Action:○ LateCall:○ Command:○
177 	 * @return {String} Jane2ch.exeのフルパス名
178 	 */
179 	ExeName: function(){return "C:\\JaneDoeView\\Jane2ch.exe";},
180 	
181 	/**
182 	 * モーダルの入力ダイアログを表示し、ユーザーが入力した文字列を返す
183 	 * Action:× LateCall:○ Command:○
184 	 * @param {String} Caption 入力ボックスのタイトルバーに表示する文字列
185 	 * @param {String} InitialText テキストボックスの文字列の初期値
186 	 * @return {_JVS.NamedVariant} ユーザーの入力結果を保持したNamedVariant
187 	 * ・NamedVariant.Canceled
188 	 * ユーザーがOKをクリックした場合はFalse, OKしないでダイアログを閉じた場合はtrue
189 	 * ・NamedVariant.Text: String
190 	 * ユーザーが入力した文字列
191 	 */
192 	InputBox: function(Caption, InitialText){return new _JVS.NamedVariant();},
193 	
194 	/**
195 	 * 既存のメニュー項目にスクリプト用メニューを追加する
196 	 * 追加できる場所はメニューのルートまたはコンテナ(一つ以上のサブメニューを持つ)の項目
197 	 * Action:○ LateCall:○ Command:○
198 	 * @param {String} MenuName スクリプト用のメニューを追加したいメニューの名前
199 	 * (menuconf.iniのセクション名) 例: "MainWnd.MainMenu"
200 	 * @param {String} ItenMane スクリプト用のメニューを追加したいメニューの親アイテム名
201 	 * (menuconf.iniのメニュー名) 例: "MainWnd.MainMenu"
202 	 * ヌルストリングの場合はMenuNameのルートが親アイテムになる
203 	 * @param {int} Index 親アイテムの中での順番。Index=0が最上位、親アイテムの項目数よりも
204 	 * 大きな数字を設定した場合は最下位に追加される
205 	 * @return {_JVS.MenuItem} 追加されたMenuItemオブジェクト
206 	 */
207 	InsertMenu: function(MenuName, ItenMane, Index){return new _JVS.MenuItem();},
208 	
209 	/**
210 	 * URLがビューアが対応する形式の拡張子を持っているかを確認する
211 	 * (swfは対象外)
212 	 * Action:○ LateCall:○ Command:○
213 	 * @param {String} URL 画像かどうかを調べたいURL
214 	 * @return {Boolean} URLがビューアで対応した画像の拡張子を持っていればtrue、そうでなければfalse
215 	 */
216 	IsImageURL: function(URL){return true;},
217 	
218 	/**
219 	 * アクションの中から呼び出せない処理(メッセージボックスの表示など)をアクションのコンテキストの外で
220 	 * 安全に呼び出すために使用する
221 	 * Action:○ LateCall:○ Command:○
222 	 * @param {Function} Func 呼び出したい関数
223 	 * Funcとして設定できるのは、一つのVariantを引数として受け取る関数。
224 	 * 例: function CalleeFunction (funcObject) {};
225 	 * Funcの呼び出しはアイドルループなどJaneのシステムがメッセージ処理をするタイミングで行われる
226 	 * @param {Object} funcParam Funcに渡す引数
227 	 */
228 	LateCall: function(Func, funcParam){},
229 	
230 	/**
231 	 * トレースに文字列を出力する
232 	 * Action:○ LateCall:○ Command:○
233 	 * @param {} Text
234 	 */
235 	Log: function(Text){},
236 	
237 	/**
238 	 * 既存のメニュー項目の親アイテム上での位置を調べる。
239 	 * 特定の位置にメニューを挿入する場合、この関数の結果を元にInsertMenuのIndexを決める
240 	 * Action:○ LateCall:○ Command:○
241 	 * @param {String} MenuName 親アイテム上での位置を調べたいメニュー項目が属するメニューの名前
242 	 * (menuconf.iniのセクション名) 例: "MainWnd.MainMenu"
243 	 * @param {String} ItemName 親アイテム上での位置を調べたいメニュー項目の名前
244 	 * (menuconf.iniのメニュー名) 例: "MainWnd.MainMenu"
245 	 * @return {Number} 指定したメニュー項目の、親アイテム上での順番(0が最上位)
246 	 */
247 	MenuIndex: function(MenuName, ItemName){return 0;},
248 	
249 	/**
250 	 * URLまたはスレ、板を開く。
251 	 * ※対象がビューアで開かれるURLだった場合、Number以降のパラメータは無視される
252 	 * Action:× LateCall:○ Command:○
253 	 * @param {String|ThreadItem|Board} target URL/Thread/Board
254 	 * 開きたい対象のURL(文字列)またはスレ(ThreadItemオブジェクト)または板(Boardオブジェクト)の
255 	 * いずれかを指定する
256 	 * @param {int} Number 対象がスレの場合、開いてからNumberが示すレス番にジャンプする。それ以外では無視される
257 	 * @param {int} Operation 開くときにサーバからのデータ取得を行うか、ローカルだけで取得を行わないかを設定する
258 	 * 0: なにもしない ※まったく無意味だが、内部処理上必要なために存在
259 	 * 1: ローカル
260 	 * 2: 適宜取得
261 	 * 3:更新チェック
262 	 * 4: 時間に応じて
263 	 * @param {bool} NewTab trueならば新しいタブで開くことを強制する
264 	 * falseならば、現在アクティブなスレタブがスレ表示用のビューならばアクティブタブで、
265 	 * そうでなければ新しいタブで開く
266 	 * @param {bool} Relative 新規タブで開く場合、Relativeがtrueならば現在のアクティブタブの隣に開かれる
267 	 * @param {bool} BackGround 開いたタブを選択状態にしない
268 	 */
269 	Open: function(target, Number, Operation, NewTab, Relative, BackGround){},
270 	
271 	/**
272 	 * Windows APIのPeekMessage関数を呼び出し、バッファのWindows Messageを処理する。
273 	 * 長い時間がかかる処理の途中に挟むことでUIがフリーズするのを防ぐことができるが、
274 	 * その中で受け付けたユーザー操作により使用中のオブジェクトの状態が変化したり
275 	 * 破棄される可能性があり、使用には細心の注意と適切な処理を要する
276 	 */
277 	ProcessMessages: function(){},
278 	
279 	/**
280 	 * メッセージダイアログを表示する。WSHのWScript.Echoに対応する。
281 	 * Action:× LateCall:○ Command:○
282 	 * @param {String} Text メッセージボックスに表示する文字列
283 	 */
284 	ShowMessage: function(Text){},
285 	
286 	/**
287 	 * Windows APIのSleep関数を呼び出し、一定時間だけ動作を停止する
288 	 * Action:○ LateCall:○ Command:○
289 	 * @param {int} millisec 停止する時間、単位はミリ秒
290 	 */
291 	Sleep: function(millisec){},
292 	
293 	/**
294 	 * スレビュー検索バーを参照するEditオブジェクト
295 	 * Action:○ LateCall:○ Command:○
296 	 * @type _JVS.Edit
297 	 */
298 	ThreadSearchBar: new _JVS.Edit(),
299 	
300 	/**
301 	 * Windows APIのtimeGetTimeの値を取得する。
302 	 * Action:○ LateCall:○ Command:○
303 	 * @return {int} timeGetTime API関数によるシステム時刻
304 	 */
305 	TimeGetTime: function(){return 0;},
306 	
307 	/**
308 	 * スレビューの一覧を保持するViewListオブジェクトを取得する
309 	 * ViewListから、各スレビューへのアクセスやユーザー定義の新規スレビュー作成が可能
310 	 * 
311 	 * Action:○ LateCall:○ Command:○
312 	 * 
313 	 * @return {_JVS.ViewList} スレビュー一覧を参照するViewListオブジェクト
314 	 */
315 	ViewList: function(){return new _JVS.ViewList();}
316 };
317 
318