HSIとは?
 
HSI(HyperCard Scriptors' Interface)とは、XTのカーネル内に実装されたユーティリティー・ハンドラ&関数群のことです。比較的複雑でかつよく使用するスクリプトをカーネル内に書いておき、これらをモジュール等から利用することで効率良くかつ簡単にスクリプトが書けるというわけです。
2.xでは一部のHSIをXCMD/XFCN化(C言語/CodeWarrior)したり、グローバル変数にキャッシュを保持することで動作を高速化しました。場合によっては1.xの数倍の速度で動作するものもあります。
 
最近はどうも、巷のX集スタックよりもXの量が多くなりつつある……
XT_がつくXの再利用は、XT_PopMenuやXT_KKProgressBarProなど、他作者の改造版を除き全く自由です(もっとも、影山さんとこやUDIさんところもソースまで公開しているほどなので、特に制限はないでしょうが)
 

HSI関数/ハンドラ/変数リスト
 
2001.4.2更新(2.1.21.1カーネル)
 
[Function]=関数 [XFCN]=XFCN
[Handler]=ハンドラ [XCMD]=XCMD
[Global]=グローバル変数 [Message]=メッセージ
[Ver.2.x]=XT2.xで新規追加or修正
 
[ ]で囲った引数はオプションです。
2.xカーネルで削除されたHSIのリストはこちらです。
ここに挙げられているXCMD/XFCNは全てフリーウェア扱いとします。
もっとも、へっぽこCプログラマが作った(爆)ので動作は保証できませんが、、、
基本的にエラー時は空文字列を返します。
 
XT_DoModuleErrDisable [Handler] [Ver.2.1.21.1] [TEXT/XTM1のみ]
TEXT/XTM1のモジュール実行エラー検出機能を無効にします。
 
XT_CountChars(text) [XFCN] [Ver.2.1.20]
与えた文字列内の文字数を1バイト/2バイト文字に分けて数えます。
返り値は以下のとおり。
item 1:lengthと同じ
item 2:2バイト文字
item 3:1バイト文字(改行のぞく)
item 4:改行個数
 
XT_ReceiveDropMsg DropType,DropLoc [Message] [Ver.2.1.19]
ファイルやテキストデータ(KKdragTextDataなどで)をスタックウィンドウにドラッグ&ドロップした時に発生するメッセージです。第1引数は"text"だとテキスト、"file"だとファイルかフォルダです。第2引数はドロップしたマウス座標(ローカル)です。
該当なしの場合はpassしてください。
 
Tips:ウィンドウ全体を対象にドロップしたように見えるので、もし特定のフィールドにドロップしたように見せかけたい場合はXT_Zoomを使うとよいでしょう。
 
XT_GetDropData(command,filter) [Function] [Ver.2.1.19]
XT_ReceiveDropMsgメッセージを受信した時に何がドロップされたかを知るために使う関数です。第1引数にはXT_ReceiveDropMsgの第1引数をそのまま渡してください(もしくはfile/text)。
第2引数はファイルがドロップされた場合にファイルタイプを限定するためのもので、例えば"PICT,TEXT"と指定するとピクチャファイルとテキストファイルのみが返されます(該当するものが無い場合は空文字列)
第2引数を指定しなかった場合(もしくは空文字列)、すべてのファイルが返されます。またテキストデータがドロップされた場合にはこの引数は無視します。
 
XT_SetResData Type,ID/Name,FilePath,Data,isCurOnly [XCMD] [Ver.2.1]
XT_DelResData Type,ID/Name,FilePath,isCurOnly [XCMD] [Ver.2.1]
XT_GetResData(Type,ID/Name,FilePath,isCurOnly) [XFCN] [Ver.2.1]
それぞれリソースを操作する関数/ハンドラです。Typeはリソースタイプ(デフォルトTEXT)、ID/NameにはIDか名前、FilePathは操作対象のファイルのフルパス(デフォルトはカレントスタック)、isCurOnlyは、指定したファイルのみを探すか現在開いている全リソースファイルを探すかをtrue/falseで指定します。
 
XT_DoModule ModuleName [Handler]
モジュールを実行します。
 
XT_CharInspector WindowName [XCMD] [Ver.2.1]
文字パレットを表示します。第1引数はウィンドウ名です。
呼ぶだけではウィンドウは表示されません。show window してください。
 
送られるメッセージ:
 XT_CharInspectorClick ウィンドウ名 --文字をクリックした時
 XT_CharInspectorClose ウィンドウ名 --ウィンドウが閉じられた時
 
プロパティ:
 rect - グローバル座標のrect
 loc - ローカル座標のloc
 selectcell - 現在選択中の文字番号
 font - ウィンドウフォント
 properties - プロパティリスト[取得のみ]
 
 rectとfontを同時に変更したい場合は、先にrectを変更してください。
  
XT_Zoom srcRect,destRect,div,wait [XCMD] [Ver.2.1.13]
srcRectからdestRectへとズームイン/アウトするような効果を表示します。visual effect zoom...と似たようなものですが、開始/終了時の矩形の大きさを指定できるのが特徴です。
第3引数divは何段階に分けて描画するか(デフォルト10)、第4引数waitは描画する間隔です(デフォルト1tick)。この2つのパラメータをいじることで、ズーム効果の細かさや速度を調節できます。
 
XT_RegistMessage refnum,MessageList [Handler] [Ver.2.1]
第2引数MessageListに特定の文字列を指定すると該当するメッセージがXTM2にsendされるようになります。例えば
XT_RegistMessage refnum,"StopModule,NewStack"
と指定すると、XT_StopModuleとXT_NewStackが送られ、あとは送られません。
デフォルトは"StopModule,ResetModuleMenu"なので、従来のモジュールも問題なく動作します。
なお、StartModule,ExecModule,ModuleHelpは指定に関係なく送られますので注意してください。
第1引数はモジュール参照番号です。XT_StartModuleなどの第1引数で渡されますのでこれをそのまま使用してください。
※XTM2(機能拡張モジュール)のみ有効です。
 
XT_GetRefNum(ModuleName) [Function] [Ver.2.1]
あるモジュール名のモジュール参照番号は何か調べます。通常はXT_StartModuleなどの第1引数で渡されますので使用する必要はありません。
※XTM2(機能拡張モジュール)のみ有効です。
 
XT_ModuleMenuSet ModuleName,checkMark,Enabled [Handler] [Ver.2.1]
あるモジュールに対応する"Module"メニューのチェックマークと使用可能かどうかを制御します。第1引数にモジュール名、第2,3引数にそれぞれチェックマーク、使用可能をわたします。
 
XT_QuoteText(Text) [Function] [Ver.2.0]
改行やダブルクオートを、"What is" & quote & " XT " & quote & "?" & returnという、HyperTalk内に埋め込める形式(間接話法?)に変換します。
 
[2.0.08++/2.1.01] 改行対応
 
XT_isXTusing [Global] [Ver.2.0]
XT_isXTusing() [Function]
XTが使用中かどうかを判定します。empty("")ならインストールされていない(グローバル変数のみ)、falseなら停止中、trueなら使用中です。
 
XT_isHCPlayer() [Function] [Ver.2.0]
現在のHyperCardがプレーヤかどうかを返します。2.2でもエラーになりません。
 
XT_ConvertNum(Data) [XFCN] [Ver.2.1改]
第1引数で与えられた半角/全角の混じった数字データを半角のみに変換します。数字で設定などを入力してもらうスクリプトがある場合、入力されたデータをこの関数にかけておくと全角(ひらがなモード)数字もちゃんと認識することができます。
 
[2.1] アルファベットも半角変換します。16進数などの変換にも使えます。
 
XT_GetLastItem(Data,Delim,OutDelim) [XFCN]
行は改行コード、列はある区切り文字Delim(第2引数)で区切られたリスト(たとえば、ファイルのフルパスのリストなど)のそれぞれの行の最後のアイテムを取得し、区切り文字OutDelim(第3引数)で区切ったデータとして返します。例えばXT_GetLastItem(the stacks,":",return)とすると現在開いているスタックのリストを改行で区切って返します。
 
[2.0.07/2.1.13] デフォルト値Delim = ":" OutDelim = return
 
XT_GetPrefs(FileName) [Function]
XT_PutPrefs FileName,Data [Handler]
XT_DelPrefs FileName [Handler]
第1引数で与えられた識別名の初期設定データを操作します(取得/保存/削除)。
該当データが存在しない時は、Getは空文字列を返します。
 
XT_ListPrefs() [Function] [Ver.2.0]
現在レジストリ内にある初期設定データの識別名リストを返します。
 
XT_SavePrefs [Handler] [Ver.2.0]
現在のレジストリデータをディスクに保存します。
 
XT_PrefDir( [File] ) [Function] [Ver.2.0]
初期設定ファイルフォルダの位置を返します。その他任意のファイル名を第1引数に与えることができます。
 
XT_ModuleDir( [File] ) [Function] [Ver.2.0]
XTモジュールフォルダの位置を返します。その他任意のファイル名を第1引数に与えることができます。
 
XT_SystemDir( [File/Dir] ) [Function] [1.xカーネル互換用/廃止予定]
XT Systemが置かれているディレクトリを返します。また、XT_SystemDir("XTモジュール:")とするとXTモジュールフォルダの位置を、XT_SystemDir("XTファイル:")とすると設定ファイルフォルダの位置を返します。その他任意のファイル名を第1引数に与えることができます。
 
XT_DisableModule ModNo [Handler]
機能拡張モジュールを「使用不可」にします。第1引数ModNoはプラグイン管理番号(XT_StartModuleの第1引数として渡されてくる番号)です。この番号をそのまま渡してください。
 
XT_ActiveXTND() [Function]
機能拡張モジュール(XTM1)のうち現在利用可能なもの(XT_DisableModuleを呼んでいないもの)の改行区切りリストを返します。
 
XT_SysVersion() [Function]
XTシステムのバージョンを返します。
 
XT_SysNumVersion() [Function]
XTシステムのバージョンを数字で返します(2.1.06=2.106等)
 
XT_LNameToPath(LongName,isDir) [XFCN]
long name of (stack)で返されてきたテキストをフルパスに変換します。第2引数をtrueにするとスタックのあるディレクトリを返します。
 
XT_ClickObj() [Function]
直前にクリックしたオブジェクト名を返します(cd btn id 2210というふうにID形式で)
 
XT_UserLevelCheck(UserLevel) [Function]
第1引数で与えられたユーザーレベルかどうかチェックし、もしそれを下回る場合はユーザーレベルを変更してもよいかという旨の確認ダイアログを出します。ユーザーレベルの変更に成功したらtrue、失敗したらfalseを返します。
 
XT_GetFont(delim,AllFonts) [Function]
現在利用可能なフォント名のリストを返します。第1引数はリストの区切り(デフォルトreturn)、第2引数は"."や"%"で始まるふつう表示されないフォントやIDだけで名前がついていないフォントもリストアップするかどうかです(デフォルトfalse)
 
[2.1.18] AllFontsオプション追加
 
XT_ReplaceChar(Text,From,To) [XFCN]
第1引数で与えられたテキストの中の区切り文字(第2引数で指定)を第3引数で指定した区切り文字にすべて置き換えます。
 
XT_ReplaceCharTable( Text,From,To ) [XFCN] [Ver.2.0] [Ver.2.1改]
XT_ReplaceCharの複数文字置換版です。
たとえばXT_ReplaceCharTable(Text,"ABCD","WXYZ")とするとAがW、BがX...というふうに置換されます。エラー時には空文字列を返します。
 
[2.1]2バイト文字→2バイト文字の変換も可能ですが、1バイト→2バイト等はできません。
 
XT_Diff(text1,text2) [XFCN]
改行で区切られた2つのリストtext1,text2を渡すと、text1にのみあるものが返されます。
 
XT_Include(text1,text2) [XFCN]
改行で区切られた2つのリストtext1,text2を渡すと、text1とtext2の両方にあるものが返されます。
 
XT_Grep(text,pattern,IsNum,matchCommand) [XFCN] [Ver.2.1.18]
第1引数textで与えた改行区切りデータの中から第2引数patternを含む行を高速検索して、該当する行のテキストを改行区切りで返します。第3引数IsNumに"Num"もしくはtrueを指定するとテキストの代わりに該当する行が何行目かを返します。
第4引matchCommandは以下の通り。
"whole"/"true" 完全一致
"front"     前方一致
"back"/"rear"  後方一致
未指定/その他  通常マッチ(含む)
2バイト文字のマッチ可。大文字小文字を同一視します。
 
[2.1]第4引数isWholeを追加。完全にマッチした行のみを返します。
[2.1.18]第4引数isWhole->matchCommand、機能拡張。
 
XT_GlobalToLocal(Loc/Rect) [Function]
グローバル座標をローカル座標に直します。第1引数LocにはLocation(場所)もしくはRectangle(矩形)を渡します。
 
XT_LocalToGlobal(Loc/Rect) [Function]
ローカル座標をグローバル座標に直します。第1引数LocにはLocation(場所)もしくはRectangle(矩形)を渡します。
 
XT_SysProgressBar WName,text,maxVal [Handler]
第1引数WNameのプログレスバー・ウィンドウを作成します。第2引数textはそのウィンドウに最初に表示するテキストです。表示後、
set procValue of window WName to (0〜100)
でプログレスバーの表示(%)を、
set text of window WName to "(テキスト)"
でテキストを変更できます。
 
[2.0] 最大値を第3引数に指定できます。
  
XT_PushButtonbyIcon [Handler]
アイコンでボタンをハイライトさせるためのハンドラです。
作り方:
1.押した前/後のアイコンを1組準備し、押した後=押す前+1になるようにアイコンのIDを設定する。
2.ボタンのアイコンを押す前のアイコンに設定し、オートハイライトをOFFにする。
3.on mouseDownのなかでこのハンドラを呼び出す。
 
XT_PushButtonbyRect [Handler]
"shadow"にスタイルを設定したボタンを立体的にくぼむように見せるためのハンドラです。
on mouseDownの中で呼んで下さい。
 
XT_DelMenubyText Menu,Text,Start,End [Handler]
第1引数Menuで指定したメニューのメニューアイテムText(第2引数)を探して削除します。Start,End(第3,4引数)はTextで指定したメニューアイテムを0とした時のメニュー削除位置で、たとえばtextに"あいうえお"、Startに-1、Endに2を指定した場合、メニューアイテム「あいうえお」から数えて上1つ目から下2つ目までを削除します。
 
XT_SavePaintProp [Handler] [Ver.2.0]
ペイントプロパティを保存します。
 
XT_RestorePaintProp [Handler] [Ver.2.0]
XT_SavePaintPropで保存したペイントの設定を復帰します。
 
XT_MultiSF(Type,Prompt,FileType,NewName) [Function]
ファイル選択ダイアログを表示します。
第1引数Typeの種類:G=通常のファイル選択(answer file) P=通常の新規ファイル指定(ask file) F=フォルダ選択 M=複数ファイル選択 V=ボリューム選択 Q=プレビューつきファイル選択
第2引数Promptはダイアログに表示するメッセージです。第3引数FileTypeは表示するファイルタイプの指定(カンマで区切って複数指定可)、第4引数NewNameは新規ファイル名で、新規ファイル指定時のみ有効です。

[Ver.2.1.17] "M"オプション挙動を改善
 
XT_TruncateTextLine(Text,Width,Command,Font,Size) [XFCN] [Ver.2.1.18]
第1引数Textで与えた改行区切りの文字列のうち、1行の長さが第2引数Widthで与えたピクセル以上の長さの場合はそれ以降の文字を削除し、行末に"..."を入れます。メニューやListDialogの表示で、選択候補の表示をあまり長くしたくない時に用いるとよいでしょう。
第3引数Commandに"middle"を指定すると行末でなく中央に"..."を入れます。
第4,5引数はフォントとサイズです。
 
[Ver.2.1.18] 1行長さmax.256->1000、フォント・サイズ・コマンドオプション追加
 
XT_FormatScript(Script) [XFCN] [Ver.2.0]
第1引数Scriptで与えたスクリプトを、スクリプトエディタで表示されるのと同じ形式(字下げなど)にして返します(内部で実際にスクリプトエディタでも使われている関数を呼んでいるだけですが)。
  
XT_GetSysFolderPath(OSType,isCreateFolder) [XFCN] [Ver.2.0]
システムフォルダ・初期設定フォルダなどへのフルパスを返します。
isCreateFolderにtrueを指定すると該当フォルダがなかった場合に作成します。
"pref":初期設定 "macs":システムフォルダ
"extn":機能拡張 "ctrl":コントロールパネル
"trsh":ゴミ箱 "font":フォント
"amnu":アップルメニュー "strt":起動項目 "shdf":終了項目
詳しくはINSIDE MACINTOSHのFolder Managerを参照してください。
 
[2.0.08++/2.1.20] isCreateFolder追加
 
XT_DragRect(ドラッグするRect,制限範囲) [XFCN] [Ver.2.0]
第1引数はドラッグしたい矩形、第2引数はドラッグの制限範囲を指定すると、グレーの枠が描かれ、ドラッグが実現できます。
shiftキーを押しておくとタテ・ヨコのみに動きが制限されます。
マウスボタンが押されていない状態でも正常に動作しますが、wait until the mouse is downで待機しておいたほうが直感的でしょう。
 
XT_DrawRect Rect [XCMD] [Ver.2.0]
グレーの長方形を描きます。それだけです(笑)
 
XT_SelectRect(制限範囲) [XFCN] [Ver.2.0]
長方形選択を実行します。第1引数は選択の制限範囲で、通常はrect of this cdを与えておくとよいでしょう。
shiftキーを押しておくと正方形になるように動きが制限されます。
マウスボタンが押されていない状態でも正常に動作しますが、wait until the mouse is downで待機しておいたほうが直感的でしょう。
 
XT_PlayThemeSound OSType [XCMD] [Ver.2.0]
OS 8.5からのアピアランスに含まれるサウンド機能に対応した音を出します。
OSTypeにはINSIDE MACINTOSHのProgramming With the Appearance Managerに書かれているTheme Sound Constants から選んで指定します。
基本的なところでは
mouseDown = 'btnp' mouseUp = 'btnr'
mouseDownCheckBox = 'chkp' mouseUpCheckBox = 'chkr'
mouseDownRadio = 'radp' mouseUpRadio = 'radr'
などが挙げられます。
※OS8.5未満ではなにもしません。
 
XT_GetGestalt(OSType,Format) [XFCN] [Ver.2.0] [Ver.2.1改]
Gestalt APIを呼び出して結果を返します。第2引数Formatに"Num"を指定するとGestaltの返値ビット列をそのまま10進数に変換して返し、"Hex"とするか、何も指定しなければ16進数で返します。
[2.1]"Bits"も追加しました。これを指定すると2進数で返します。
第1引数OSTypeは、基本的なところでは
QuickTimeのバージョン = 'qtim'
物理メモリ量 = 'ram '
などが挙げられます。
 
XT_GetResList(ResType,delim,DelSysFont,IncludeNum) [XFCN] [Ver.2.0]
現在利用可能なリソースのリスト(名前がついているもののみ)を返します。
[Ver.2.1.13] デフォルト値利用可、IncludeNum追加
 

第1引数はリソースタイプ(デフォルトFOND)、第2引数は返すリストの区切り文字(デフォルトreturn)です。
第3引数は頭に"."や"%"がつくものを除外するかどうかで、XT_GetFont内で使われています(デフォルトfalse)。第4引数はIDのみのリソースも含めるかどうかです(デフォルトfalse)
 
XT_BalloonHelp Command,Text,ShowLoc,ShowRect [XCMD] [Ver.2.0]
[Ver.2.1.13] "Get"追加
バルーンヘルプを制御します。第1引数にShow/Hideを与えるとバルーンヘルプをON/OFFし、Printを与えると、第2引数テキストの内容を、第3引数の場所に、第4引数の範囲を出るまでバルーンヘルプとして表示しつづけます。
"Get"を指定すると現在バルーンヘルプがONかどうかをthe resultに返します。
 
XT_ErrorTrap TrapHandler [XCMD] [Ver.2.0]
現在実行中のスクリプトが終了し、idle状態に戻り次第、1度だけ指定したメッセージを現在のカードに送ります。異常終了時にも動作しますので、エラー時の環境回復に利用するとよいでしょう。
 
XT_GetTypeCreator(FullPath) [XFCN] [Ver.2.0]
指定したファイルのタイプ/クリエータを"Type,Creator"の形式で返します。
 
XT_SetTypeCreator FullPath,Type,Creator [XCMD] [Ver.2.0]
指定したファイルのタイプ/クリエータを変更します。第2引数、第3引数にそれぞれタイプとクリエータを(4文字で)与えて下さい。
 
XT_PopMenu(menuStr,Option,Default,Loc) [XFCN] [Ver.2.1]
UxPopのポップアップメニュー表示部のみを抜き出したものです(注:_cardなどは使えません)
使用法はUxPopと同じです。
ただし、こちらを使うとウィンドウが隠された状態でも正しい位置に表示されます。
 
XT_ResourceUse("start/stop", filePath/return) [XFCN] [Ver.2.1]
指定したファイルのリソースフォークを使用できるようにします。
開始時:XT_ResourceUse("start",ファイルパス)
終了時:XT_ResourceUse("stop",start時の返り値)
 
1.xには存在したが、2.xでは削除されたHSI
XT_DebugWindow
XT_DebugStr
XT_CopyFolder
XT_KillWindow
 
 

 

Return : XT トップページ