TextWindowとBufferTextWidnowとScrollTextWindowの
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を初期化する。
-
- text-windowを作成する。
windowの大きさは、:widthと:heightかあるいは:rowsと
:columnsで指定されたものとなる。
:notify-objectの:notify-methodは、改行文字が入力された
ときに呼び出される。
:cursor flag [メソッド]
-
-
flagは、:on, :off, :toggleのどれかが可能である。
テキストカーソルは、win-rowとwin-colの位置である。
もし、flagが:onであれば、テキストカーソルは表示され、
flagが:offならば、消される。
また、flagがtoggleならば、反対になる。
このメソッドは、カーソルの位置の文字を更新するときはいつでも、
呼び出されなければならない。
:clear [メソッド]
-
-
テキストwindow内を消去する。
:clear-eol &optional (r win-row) (c win-col) (csr :on) [メソッド]
-
-
rとcで指定される位置の文字以降の残りの行を
消去する。カーソル位置の文字も含む。
:clear-lines lines &optional (r win-row) [メソッド]
-
-
r番目の行以降の複数行を消去する。
:clear-eos &optional (r win-row) (c win-col) [メソッド]
-
-
rとcで指定される位置から画面の最後までの領域を消去する。
:win-row-max [メソッド]
-
- このwindowに表示可能な最大行数を返す。
:win-col-max [メソッド]
-
- このwindowに表示可能な最大列数を返す。
:xy &optional (r win-row) (c win-col) [メソッド]
-
-
rとcで指定される位置の文字のピクセル座標を計算する。
: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-objectのnotify-methodが呼び出される。
:resize w h [メソッド]
-
-
windowの大きさを変更し、新しいサイズに合うように
内容を再表示する。
もし、スクロールバーがあれば、同じメッセージが送られる。
2016-04-05