テキストwindow

TextWindowBufferTextWidnowScrollTextWindowの 3つのテキストwindowがある。




textWindow [クラス]


  :super   xwindow 

:slots (fontid
charwidth charheight charascent dots
win-row-max win-col-max
win-row win-col ;physical current position in window
x y
charbuf ; for charcode conversion
keybuf keycount ;for key input
echo
show-cursor cursor-on ;boolean
kill delete ;control character
notify-object notify-method
)


メッセージを表示するために使用可能な仮想端末を実現する。 表示される内容は、バッファされないし、TextWindowに既に表示された 文字や行を引き出す方法はない。 基本的に、TextWindowは カーソル移動、行削除、領域削除、表示テキストのスクロール、文字列挿入 などを持つダンプ端末と似た能力を持っている。 また、テキストカーソルはマウスポインタで指示された位置に 移動することができる。


:init id [メソッド]

id番目のテキストwindowを初期化する。



\begin{emtabbing}
{\bf :create}
\it\=\&rest args \\lq  [メソッド]\\
\>\&key \...
...ify-object nil) (:notify-method nil)\\
\>\&allow-other-keys
\rm
\end{emtabbing}

text-windowを作成する。 windowの大きさは、:width:heightかあるいは:rows:columnsで指定されたものとなる。 :notify-object:notify-methodは、改行文字が入力された ときに呼び出される。


:cursor flag [メソッド]

flagは、:on, :off, :toggleのどれかが可能である。 テキストカーソルは、win-rowwin-colの位置である。 もし、flag:onであれば、テキストカーソルは表示され、 flag:offならば、消される。 また、flagtoggleならば、反対になる。 このメソッドは、カーソルの位置の文字を更新するときはいつでも、 呼び出されなければならない。


:clear [メソッド]

テキストwindow内を消去する。


:clear-eol &optional (r win-row) (c win-col) (csr :on) [メソッド]

rcで指定される位置の文字以降の残りの行を 消去する。カーソル位置の文字も含む。


:clear-lines lines &optional (r win-row) [メソッド]

r番目の行以降の複数行を消去する。


:clear-eos &optional (r win-row) (c win-col) [メソッド]

rcで指定される位置から画面の最後までの領域を消去する。


:win-row-max [メソッド]

このwindowに表示可能な最大行数を返す。


:win-col-max [メソッド]

このwindowに表示可能な最大列数を返す。


:xy &optional (r win-row) (c win-col) [メソッド]

rcで指定される位置の文字のピクセル座標を計算する。


:goto r c &optional (cursor :on) [メソッド]

r番目の行のc番目の列にカーソルを移動する。


:goback &optional (csr :on) [メソッド]

カーソルを1文字戻す。


:advance &optional (n 1) [メソッド]

n文字だけカーソルを進める。


:scroll &optional (n 1) [メソッド]

n行だけ縦方向にテキストwindowをスクロールする。


:horizontal-scroll &optional (n 1) [メソッド]

n列だけ横方向にテキストをスクロールする。


:newline [メソッド]

次の行の最初にカーソルを移動する。


:putch ch [メソッド]

カーソル位置に文字chを挿入する。 行の残りは、1文字前方に進められる。


:putstring str &optional (e (length str)) [メソッド]

カーソル位置にstrを置く。


:event-row event [メソッド]



:event-col event [メソッド]
eventにおける、テキストカーソルの位置をを返す。


:KeyPress event [メソッド]
カーソル位置に入力された文字を挿入する。 もし、文字が改行であったなら、notify-objectに通知する。



TextWindowStream [クラス]


  :super   stream 

:slots (textwin)


TextWindowStreamは、TextWdinowに接続された出力ストリームである。 print, format, write-byteなどによってこのストリームに出力 される文字や文字列がTextWdindowに表示される。 通常のファイルストリームとしては、 出力データはバッファされる。


:flush [メソッド]

バッファされたテキスト文字列を掃き出し、TextWindowに送る。 finish-outputやこのストリームへの改行文字の書き込みは、 このメソッドを自動的に呼び出す。


make-text-window-stream xwin [関数]

text-window-streamを作り、そのストリームオブジェクトを返す。



BufferTextWindow [クラス]


  :super   TextWindow 

:slots (linebuf expbuf max-line-length row col)


TextWindowの内容を表現する行バッファを保持する。 linebufは、行のベクトルである。exbufは、 タブ拡張されたテキストを持つ。 windowに表示可能な行のみが保持される。 BufferTextWindowは、数行のテキストを持つ 簡単なテキストエディタとして使用することができる。 text-itemは、表示可能な行バッファとしてBufferTextWindowを 使う。


:line n [メソッド]

n番目の行の内容を文字列として返す。


:nlines [メソッド]

linebufの行数を返す。


:all-lines [メソッド]
文字列のベクトルであるlinebufを返す。


:refresh-line &optional (r win-row) (c win-col) [メソッド]
r番目の行のc番目の列以降を再書き込みする。


:refresh &optional (start 0) [メソッド]
start番目の行以降の行を再書き込みする。


:insert-string string [メソッド]
カーソル位置にstringを挿入する。


:insert ch [メソッド]
カーソル位置に文字を挿入する。


:delete n [メソッド]
カーソル以降のn文字を削除する。


expand-tab src &optional (offset 0) [関数]

srcは、タブを含んだ可能性のある文字列である。 これらのタブは、タブの停止位置が8の倍数であると仮定して空白文字に 置き換えられる。



ScrollTextWindow [クラス]


  :super   BufferTextWindow 

:slots (top-row top-col ;display-starting position
scroll-bar-window
horizontal-scroll-bar-window
selected-line)


ScrollTextWindowは、行数制限がなく、縦と横にスクロールバーを持った BufferTextWindowを定義する。 ScrollTextWindowは、スクロールバーを伴ってwindowの大きさを変更するため、 あるいはテキストを再表示するために:configureNotifyイベントを 扱うことができる。 クリックすることによって、行を選択することができる。


:create &rest args &key (scroll-bar nil) (horizontal-scroll-bar nil) &allow-other-keys [メソッド]

スクロールバーが必要なとき、それぞれのキーワードの引き数にTを指定する。


:locate n [メソッド]

windowの上部からn番目の行に バッファされたテキストを表示する。


:display-selection selection [メソッド]
selectionは、選択された行の位置を表現する。 選択された行がすべて高輝度で表示される。


:selection [メソッド]

選択された行(文字列)を返す。


:read-file fname [メソッド]

fnameで指定されるテキストファイルをlinebufに読み込み、 タブを拡張し、windowに表示する。 カーソルは、画面の最初に置かれる。


:display-string strings [メソッド]

stringsは、行(文字列)の列である。 stringsは、linebufにコピーされ、windowに表示される。


:scroll n [メソッド]

n行、縦にスクロールする。


:horizontal-scroll n [メソッド]
n列、横にスクロールする。


:ButtonRelease event [メソッド]
マウスポインタが置かれている行が選択される。 もし、windowが作成されたときにnotificationが指定されている ならば、notify-objectnotify-methodが呼び出される。


:resize w h [メソッド]

windowの大きさを変更し、新しいサイズに合うように 内容を再表示する。 もし、スクロールバーがあれば、同じメッセージが送られる。


2016-04-05