SciTE 초기부터 상호대화적으로 인터페이스를 스크립트할 수 있는 능력을 추가해 달라는 요청이 있었다. SciTE는 3가지 완전히 다른 GUI 툴킷 위에서 작동한다. 그래서 인터페이스는 되도록이면 큰 수고 없이도 각 플랫폼에 걸쳐서 작동해야 한다.
이제 루아 코드로 찾기 바꾸기 널쪽을 만드는 코드가 있다. 예제는 http://scintilla.org/UserStrip.png와 같다.
첫 번째 메쏘드는 StripShow로서 사용자 인터페이스를 기술하는 문자열을 받아서 어플리케이션 창의 아래에 널쪽으로 보여준다. 4가지 요소를 지원한다: 정적 텍스트, 편집 텍스트, 콤보 박스 그리고 버튼을 지원한다. 이것들은 서로 다른 표시 문자로 둘러 싸인다:
예를 들어, 다음 코드는
scite.StripShow("!'Explanation:'{}(&Search)\n'Name:'[Name](OK)(Cancel)")
그림과 같은 널쪽을 화면에 보여준다. 빈 문자열을 건네면 널쪽을 닫을 수 있다.
GTK+에서 테이블은 조감에 사용된다. 테이블은 널쪽 그리고 대화상자와 잘 작동하기 때문에, 이 접근법을 다른 플랫폼에도 복사했다. 다른 플랫폼은 아직 GTK+ 만큼 완전하지 못하다 - 편집 텍스트와 콤보 박스를 가진 컬럼은 확대할 수 있고 다른 컬럼들은 가장 넓은 요소에 맞추어 가장 자연스러운 크기로 고정된다.
사용자가 일으킨 사건은 OnUser 함수를 통하여 다시 스크립트로 전송된다.
이 함수는 요소 번호 (0에서 시작하고 정적 텍스트 요소 포함)와 변경 유형(clicked=1, change=2, focusIn=3, focusOut=4)을 취한다.
'clicked'는 버튼 누름용이고, 'change'는 편집 텍스트에 변화가 있거나 콤보 박스의 편집 텍스트에 변화가 있을 때 그리고 'focusIn'과 'focusOut'은 사용자가 요소 사이에 초점을 이동할 때 사용된다. 편집 텍스트나 콤보 박스의 값은 StripValue(element)으로 열람할 수 있다.
현재 이런 사건 처리에는 버그와 한계가 있다. Focus 사건은 텍스트가 편집될 때만 일어날 수도 있고 안 일어날 수도 있다. 콤보 박스에서 목록으로부터 항목을 하나 선택하더라도 'change' 사건이 전송되지 않을 수도 있다.
콤보 박스의 편집 부분과 편집 텍스트는 StripSet(element, value)로 설정할 수 있고 콤보 박스의 목록 부분은 StripSetList(element, value)로 설정할 수 있다. 'value' 안의 항목들은 새줄문자로 구분된다.
Hg로 얻거나 아니면 다음 사이트에서 얻자
http://www.scintilla.org/scite.zip Source
http://www.scintilla.org/wscite.zip Windows executable
Neil