2013-11-21 5 views
2

Perl Curses :: UI 인터페이스를 개발 중이고 솔루션을 찾을 수없는 약간의 문제가 발생했습니다. 레이블 위젯 별 옵션의Perl Curses :: UI :: Label

하나는 "반대"입니다 :

-reverse <BOOLEAN> 
If BOOLEAN is true, text on the label will be drawn in a reverse font. 

기본적으로 텍스트가 나노 및 더 많은 CLI 인터페이스처럼, 검은 전경에 흰색 작성 나타납니다 CTRL 조합을 지적 할 때 사용합니다 .

요점은 레이블을 "반대로"설정하면 전체 텍스트가 흰색에서 검정색이됩니다. 나는 일반 텍스트를 흑백 텍스트로 대체하는 대신 텍스트 전체를 흑백으로 바꾸고 싶다. UI.pm과 UI/Common.pm을 살펴 보았습니다.하지만 나쁘다. 실제로 레이블의 텍스트 필드에서 직접 그 작업을 수행 할 수있는 방법을 알 수는 없다. 또한 Term :: ANSIColor를 사용하여 시도했지만 관련 이스케이프 시퀀스 만 출력합니다. 기본적으로 텍스트 필드에 포함 된 모든 것을 따옴표 붙은 순수 문자열로 취급합니다.

어떻게 진행할 수 있을까요? 고맙습니다.

답변

0

이것은 기본 Curses 인터페이스 또는 적어도 Perl XS가 지원하지 않는 것 같습니다.

복잡도에 따라 라벨을 여러 개의 개별 라벨로 나눌 수 있으며 각 라벨마다 고유 한 -reverse 설정을 사용하는 것이 가장 쉽습니다. 겹침을 방지하기 위해 마지막 레이블을 제외하고 모든 레이블의 너비를 지정해야하며 첫 번째 레이블을 제외한 모든 레이블의 x 좌표 (단어의 끝으로 이동)를 지정해야합니다. 예를 들어

: 같은 문제에 대한 창의적인 솔루션을 밖으로 this PerlMonks post

$win->add(undef, 'Label', -x => 0, -width => 3, -text => 'Hel', -reverse => 1); 
$win->add(undef, 'Label', -x => 3, -width => 3, -text => 'lo!'); 

확인합니다.