Functions - ryotako/igor-CommandPanel GitHub Wiki

関数一覧

CommandPanel.ipfをIgor Proに読み込むことで使用可能になる関数の一覧です. これらの関数を使うことでコマンドパネルをより便利にすることができます.

コマンドラインの文字列や,コマンドバッファに表示されるテキストウェーブはroot:Packages:CommandPanelフォルダのグローバル変数として管理されています. そのため以下の関数を実行する際に,コマンドパネルのウィンドウが存在している必要はありません. コマンドパネルが表示されていなくても,バッファの書き換えや取得が可能です.

CommandPanel_New()

新しいコマンドパネルを作成します. メニューバーのCommandPanelからNew Command Panelを選択した場合と同じ動作となります.

CommandPanel_Execute(s)

コマンドパネルに入力した場合と同じように文字列sを解釈・実行します. 戻り値として,実行時に発生したエラーのエラーコードを返します.正常に終了した場合は0を返します.

CommandPanel_GetLine()

コマンドラインに入力されている文字列を返します.

CommandPanel_SetLine(s)

コマンドラインに文字列sを入力します.

上記2つの関数を利用する簡単な例を示します.

Function repeat()
  CommandPanel_SetLine(CommandPanel_GetLine())
End

このような関数を定義して,コマンドパネルでprint "hello" ; repeatのようにコマンドを実行すると,実行後にコマンドラインの文字列が再入力されます. つまり,Enterキーを連打することでコマンドが連続実行できるようになります.

CommandPanel_GetBuffer()

コマンドパネルのバッファに表示されている内容をテキストウェーブとして返します.

CommandPanel_SetBuffer(w)

コマンドパネルのバッファにテキストウェーブwをセットします.wに改行を含む文字列が含まれる場合は,コマンドパネルでの表示が崩れるので注意してください.

上記2つの関数を利用する簡単な例を示します.

Function head(n) // バッファの内容を上からn行に絞り込む
  Variable n
  Duplicate/FREE/T/R=[0,n-1] CommandPanel_GetBuffer() w
  CommandPanel_SetBuffer(w)
End

Function exebuf() // バッファの内容を上から順に実行する
  Sleep/T 1 // exebuf自身を呼び出してしまった際に,割り込みで停止させるために必要
  WAVE/T w=CommandPanel_GetBuffer()
  Variable i,N=DimSize(w,0)
  for(i=0;i<N;i+=1)
    CommandPanel_Execute(w[i])
  endfor
End

CommandPanel_SelectedRow()

選択されているバッファの行番号を返します. バッファが複数行選択されている場合は,その中で最も小さな行番号が返されます.

CommandPanel_SelectedRows()

選択されているバッファの行番号すべてを格納した数値ウェーブを返します.

CommandPanel_SelectRow(n)

バッファのn行目を選択します.

CommandPanel_SelectRow(w)

バッファの,数値ウェーブで指定された行すべてを選択します.