Украсить консольную программу

Аватар пользователя Alexey

Вот написал консольную программу (управляет работой намоточного стонка через LPT порт), все работает, но вот бы ее украсить немного, знаете угнетает пользователя экран это черный. Какие библиотеки и функции можно для этого применить в linux? Хотелось бы разноцветный текст, может быть немного графики (на уровне пару линий провести), чтобы текст размещать в нужном месте экрана. Я новичек в программирование под linux, а про терминальные программы сейчас говорят так мало. Что-то написать в духе lynks. Улыбка

Аватар пользователя sergeil

Re: украсить консольную программу

ncurses?
Полноэкранный текстовый интерфейс...

Аватар пользователя lystor

Re: украсить консольную программу

Цитата:
sergeil писал:
ncurses

+1

Аватар пользователя Alexey

Re: украсить консольную программу

Это конечно все великолепно, но опять мозги сушить, что-то новое изучать... Нет того не стоит.
ncurses это не для меня.

Аватар пользователя slavaz

Re: украсить консольную программу

Ну тогда есть другой путь. Настоящий Unix-way
Написать демона (переписать твою прогу), которая с одного конца будет рулить станком, а вторым - слушать tcp-порт или висеть на именованой пайпе. Фронтэнд в данном случае может быть любой - вплоть до apache+php

Только вот если попробуешь это, то потом переспросишь "Так что вы там про ncurses говорили?..." Катается от смеха
Тебе дело соверуют. Пробуй ncurses.

Аватар пользователя rjaan

Re: украсить консольную программу

Есть более простое решение чем ncurses -- это использование ANSI ESC последовательностей.
Bash Promt Howto, почитать там главу ANSI Escape Sequences: Colours and Cursor Movement, а пример применения на С посмотреть можно в Colorful Shells -- Using ANSI Color Codes .

В Bash Promt Howto так же можно посмотреть операции по перемещению курсора.

Используя ANSI Escape Sequences можно писать интерактивные интерфейс пользователя.

А так же прикладываю пример использования цветов на основе ANSI Escape Sequences. Тексты комментариев на русском языке в кодировке KOI8-R

А вот пример перемещения курсора по X, Y относительно левого верхнего угла, где находится координата M0(0,0) .

void movePointCh(char x, char y)
{
	printf("\033[%d;%dH",y,x);
	fflush(stdout);
}
ВложениеРазмер
ucolor_ansi.tar.gz 1.9 КБ
Аватар пользователя slavaz

Re: украсить консольную программу

Ну более простого решения, чем ncurses после борландючного TurboVision'а я не видел. Ncurses, кстати, использует эти спецпоследователности терминала. Только у него это скрыто за логикой функций.

Аватар пользователя rjaan

Re: украсить консольную программу

Цитата:
slavaz писал:
Ну более простого решения, чем ncurses после борландючного TurboVision'а

Я программировал под TurboVision, ncurses, использовал ANSI ESC последовательности. Так вот последние удобны тем, что
позволяют быстро накидать функции-примитивы этих ANSI ESC последовательностей, и реализовать не сложный интерфейс
пользователя.
TurboVision -- отдельная библиотека требует установки.
ncurses -- отдельная библиотека тоже требует установки.
ANSI ESC последовательности -- передаются на стандартный вывод STDOUT функцией printf(3)
которая входит в состав The GNU C Library и, ни какаких дополнительных библиотек не требует.

Теперь по TurboVision -- обеспечивает графическими объектами, такими как кнопки, переключатели,
выподающие списки, области рисования. Кажется я могу ошибатся механизм обработки событий.
TurboVision -- это было так давно....

Теперь ncurses -- позволяет рисовать объекты, но по своей функциональности явно проигрывает TurboVision, между
ними очень большая пропасть, как сравнивать XLib c qt или gtk.

2slavaz: Если перед вами стоит задача написания простого интерфейса -- пишите на ANSI ESC последовательности, а если сложного с построением пользовательского интерфейса с глубокой иерархией объетов Вам придет использовать либо Turbo Vision или библиотеки для X.org(XFREE86) с объектно-ореентированным подходом. Но все равно решение остается за вами что и как использовать... Можно написать практически все, я бы вам рекомендовал посмотреть, как написаны приложения redhat-config-* и анаконду от redhat, у них там списки, кнопки, переключатели основаны на ncurses.

Аватар пользователя Alexey

Re: украсить консольную программу

ANSI ESC это то, что надо! Спасибо. Пусть это не слишком замысловато, но для в самый раз. Не хочу тратить много времени на интерфейс. Почитал ссылку, там по английски, но разобраться можно.

RSS-материал