|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Zahar Kiselev 2:5030/382.1 14 Dec 2002 01:22:46 To : Andrew V. Fionik Subject : Хаааачууууу нормальную IDE под Linux!!! -------------------------------------------------------------------------------- Dec 13 23:38 02, Andrew V. Fionik wrote to Igor Zakhrebetkov: IZ>> Чем уж так TAB не угодил, хотя, если не нравится,то всегда можно IZ>> переопределить на почему то любимый народом ENTER. AVF> А вот не так-то просто это делается. CLX базируется на Qt, а там AVF> используется именно TAB. Когда мне пришлось убирать TAB и заменять AVF> его на Enter, так изматерился. В основном на тех кто потребовал это. А чего на них материться, если производительность операторов напрямую зависит от количества нажимаемых кнопок? AVF> Им там в TrollTech видимо и в голову не могло прийти что в то время AVF> когда весь мир стремится к стандартизации, кому-то вынь да положь AVF> переход по Enter'у. Если нужно получать не "стандартный интерфейс", AVF> В Kylix связка CLX/Qt заточена именно под создание Windows-like AVF> интерфейса. Только не надо смешивать виндоподобный интерфейс и стандартизацию. Это очень напоминает советскую армию, где господствовал принцип "пусть безобразно, но единообразно". Вполне естественно, что если оператор оставляет какое-то поле ввода пустым или со значением по умолчанию, то он подтверждает это нажатием клавиши ввода(enter). И так же очевидно, что курсор (или как его еще называют "фокус ввода") должен при этом устанавливаться на следующее поле ввода, не требуя для этого нажимать какие-то еще клавиши(тот же любимый виндами tab). Если же на экране много полей ввода, а заполнить нужно немногие из них, то также логичным может быть перемещение к нужному полю ввода наиболее быстрым путем при помощи клавиш-стрелок, а не последовательным перебором всех полей при помощи tab или enter. Самое главное - что все это было сделано и удобно работало, в частности в отечественных учетно-бухгалтерских программах, куда нередко вводились сотни документов за смену. Так вот хочется и в Линуксе всего лишь иметь привычные удобства. Почему сверхсовременные модные интерфейсные библиотеки не позволяют свободно переназначать реакцию на клавиши - мне никак не понять. Старые средства умели, а новые - вот вдруг разучились. По-моему это говорит только об их недоделанности. Так этот факт надо признать и по возможности устранять, а не пытаться подвести теоретическую базу под _отсутствие_ нужной пользователям возможности. Была у меня одна интерфейсная библиотека, которую фирма Analog Devices использовала при создании эмуляторов своих DSP еще до распространения виндов. Там обработка клавиатуры была сделана способом, позволяющим по _любой_ клавише делать _что_угодно_ с окнами и меню на экране. Каждое окно и каждое меню - это был отдельный объект(не в смысле синтаксиса С++, а в логическом смысле, "плюсовый" синтаксис там не использовался). Путем вызова спецаильной функции ему можно было посылать сообщения из заранее определенного списка, по которым он что-то там делал - перемещал курсор, выбирал пункты, возвращал состояние и так далее. После инициализации всего этого хозяйства в программе запускался цикл обработки внешних событий, которыми могли быть нажатия клавиш на клавиатуре, перемещения мыши и даже получаемые через специальную аппаратуру сигналы об изменении состояния отладочной платы-эмулятора DSP. Проанализировав полученное событие, программист мог послать нужные сообщения объектам, описывающим пользовательский экран и на этом экране что-то там менялось. Конечно, программирование требовало определенной внимательности чтобы ничего важного из внешних событий не забыть и правильно предусмотреть реакцию программы. Я на этом писал и не скажу, чтобы это было особо сложно, во всяком случае в досе. Был предусмотрен и менее гибкий, но более простой вариант написания интерфейса - можно было не выписывать всю обработку событий, а воспользоваться одним из нескольких готовых обработчиков(на выбор), просто подсунув ему указатели на свои функции, которые должны вызываться допустим при выборе тех или иных пунктов меню. При этом можно было еще и указать некоторые клавиши как "исключительные", при нажатии которых обработчик передавал управление в пользовательскую функцию - это было удобно например для вызова подсказки по F1 из любого состояния меню или формы ввода. Hо при этом терялась возможность выполнять произвольные действия с экраном по нажатию произвольных клавиш. Хотя можно было заранее написать свой обработчик и использовать его в таком режиме - тогда естественно и умолчания будут свои, но полной свободы управления опять не будет. А теперь самое интересное - библиотека та была из двух половин - одна (верхняя) отвечала за вышеописанную функциональность, а другая (нижняя) реализовывала ее на символьно-ориентированном терминале. К сожалению, у меня не хватает квалификации чтобы разобраться в двух мегах сишного кода(не потому что сложно, а потому что для меня _много_) и попробовать заменить нижнюю "текстовую" часть на "графическую". А ведь получилось бы неплохое средство создания интерфейсов для простых программ, ориентированых в большей степени на обработку вводимой с клавиатуры символьной информации. Zahar(@spbdept.rbc.ru) --- Msged/LNX 6.1.0 * Origin: Остров Большой Березовый: http://birch-island.spb.ru (2:5030/382.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/32883dfa8453.html, оценка из 5, голосов 10
|