Аз разработвам Perl Curses :: UI интерфейс и аз се натъкнах на малък проблем, на който не мога да намеря решение.
Една от специфичните опции за джаджа за етикети е "обратно":
-reverse < BOOLEAN >
If BOOLEAN is true, text on the label will be drawn in a reverse font.
По принцип, текстът се появява бял на черен преден план, като nano и много други CLI интерфейси, които се използват за посочване на CTRL комбинации.
Въпросът е, ако зададете Етикет да бъде "обърнат"Целият текст става бял на черно. Бих искал да заменим нормалния текст с бял на черно, вместо да използвам целия текст като този. Опитах се да гледам UI.pm и UI / Common.pm, но - лошото ми - не мога да разбера как всъщност прави това, за да мога да го направя сам в текстовото поле на етикета. Аз също се опитах да използвам Term :: ANSIColor, но той просто отпечатва съответните последователности за бягство. Той основно третира всичко, съдържащо се в текстовото поле като чист низ, който е цитиран или не.
Някакви предложения как да продължа? Благодаря ти много.
Отговори:
0 за отговор № 1Това изглежда не се поддържа от основния интерфейс на Curses, или поне не от Perl XS one.
В зависимост от това колко сложни са вашите нужди, най-лесно е да сложите етикета в няколко отделни етикета, всеки със своя -reverse
настройка. Обърнете внимание, че ще трябва да посочите ширината на всички, с изключение на последния етикет (за да се предотврати припокриването) и x-координатата на всички, с изключение на първия етикет (за да се премине към края на думата).
Например:
$win->add( undef, "Label", -x => 0, -width => 3, -text => "Hel", -reverse => 1 );
$win->add( undef, "Label", -x => 3, -width => 3, -text => "lo!" );
Разгледайте този пост на PerlMonks за творческо решение на същия проблем.