Прикрасити консольну програму, Клуб любителів ASPLinux

Зараз на сайті

Останні записи у блогах

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

Ось написав консольну програму (керує роботою намотувального стонку через LPT порт), все працює, але б її прикрасити небагато, знаєте пригнічує користувача екран це чорний. Які бібліотеки та функції можна для цього застосувати в linux? Хотілося б різнокольоровий текст, можливо трохи графіки (на рівні пару ліній провести), щоб текст розміщувати в потрібному місці екрану. Я новачок у програмуванні під linux, а про термінальні програми зараз говорять так мало. Щось написати на кшталт lynks.

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

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

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

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

Це, звичайно, все чудово, але знову мізки сушити, щось нове вивчати. Немає того не варте. ncurses це не для мене.

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

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

Тільки ось якщо спробуєш це, то потім перепитаєш "Так що ви там про ncurses говорили." Пробуй ncurses.

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 можна писати інтерактивний інтерфейс користувача.

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

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

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

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

Я програмував під 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.

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

ANSI ESC це те, що треба! Дякую. Нехай це не дуже хитромудро, але для якраз. Не хочу витрачати багато часу на інтерфейс. Почитав заслання, там англійською, але розібратися можна.