Версия для печати темы
Форум на CrossPlatform.RU _ Обсуждение исходников с сайта _ Эмулятор терминала на qt4
Автор: un-defined 8.7.2008, 23:49
Есть проект виджета эмулятора терминала, написанный на qt4. Но некроссплатформенный, потому как использует системные вещи. Это будет интересно кому-нибудь?
Может кто-нибудь сможет его под mingw собрать? я не могу, за неимением windows, так что просто не в курсе, как там что в mingw устроено.
Если что - ссылка вот:
http://sourceforge.net/projects/qtermwidget
Автор: ViGOur 9.7.2008, 8:02
А поподробней описание?
Просто с нынешним описанием не понятно, в чем его вкусность!
Автор: un-defined 9.7.2008, 8:54
Вкусность в том, что его можно встраивать в свои приложения именно как обычный виджет qt. При этом он никак не зависит от KDE, хотя и сделан на основе konsole. Ну и поддержка unicode вроде бы тоже имеется.
Автор: void* 9.7.2008, 9:35
очень интересная вещица, надо будет взглянуть
насколько я понял это под *nix?
Автор: Гость 9.7.2008, 12:06
Неплохо.
Собралось и заработало с Qt 4.3.1, правда debug пример не линкуется, только резиловый создается.
Цитата
`.L187' referenced in section `.rodata' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o): defined in discarded section `.gnu.linkonce.t._ZNK7Konsole14CharacterColor5colorEPKNS_10ColorEntryE' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o)
`.L179' referenced in section `.rodata' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o): defined in discarded section `.gnu.linkonce.t._ZNK7Konsole14CharacterColor5colorEPKNS_10ColorEntryE' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o)
`.L182' referenced in section `.rodata' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o): defined in discarded section `.gnu.linkonce.t._ZNK7Konsole14CharacterColor5colorEPKNS_10ColorEntryE' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o)
`.L185' referenced in section `.rodata' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o): defined in discarded section `.gnu.linkonce.t._ZNK7Konsole14CharacterColor5colorEPKNS_10ColorEntryE' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o)
`.L186' referenced in section `.rodata' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o): defined in discarded section `.gnu.linkonce.t._ZNK7Konsole14CharacterColor5colorEPKNS_10ColorEntryE' of ../libqtermwidget_d.a(TerminalCharacterDecoder.o)
Автор: un-defined 9.7.2008, 12:14
Да, это под *nix
Лучше брать не файловый релиз, а из CVS - там посвежее, почище должно быть.
Насчет debugовой версии ничего сказать не могу, не было такого
Автор: Гость 9.7.2008, 12:19
Единственное что бесит - исходный код испагенный комментариями (походу на их генерацию и набор у автором ушло времени больше чем на создание самого виджета), читать очень трудно.
Автор: ViGOur 9.7.2008, 12:53
Добавил: http://www.crossplatform.ru/?q=node/566
Автор: void* 9.7.2008, 14:17
возможно буду использовать в своей программе этот виджет, чуть позже покопаюсь поподробнее
Автор: un-defined 9.7.2008, 14:42
Цитата(Гость @ 9.7.2008, 13:19)
исходный код испагенный комментариями
Отличная фраза, шедевр настоящий
Автор: void* 15.7.2008, 10:05
немного покопался в коде. Действительно обильные комментарии затрудняют чтение кода, да и стиль программирования местами не очень понравился: постоянные приведения в стиле Си, использование void* (что весьма нежелательно, да и по-моему не аргументированно). Ну а так, в принципе неплохо, но еще очень огорчило отсутствие полосы прокрутки
Автор: un-defined 15.7.2008, 10:45
Цитата(void* @ 15.7.2008, 11:05)
немного покопался в коде. Действительно обильные комментарии затрудняют чтение кода, да и стиль программирования местами не очень понравился: постоянные приведения в стиле Си, использование void* (что весьма нежелательно, да и по-моему не аргументированно). Ну а так, в принципе неплохо, но еще очень огорчило отсутствие полосы прокрутки
За исходный стиль винить разработчиков konsole в KDE4
Мне надо было для начала добиться работоспособности, а рефакторингом займусь потом, если время будет.
Если есть предложения по улучшению - патчи принимаются.
Комментарии мне лично не мешают.
Полоса прокрутки отключена сознательно - мне так внешний вид больше нравится. Ctrl+PgUP,PgDn еще никто не отменял, а размером history можно управлять. В принципе никто не мешает включить, ну или опцию добавить.. может и сделаю, если уж прямо очень убедительно надо (хотя я, опять повторю, такой необходимости не вижу)
Вообще просторов для улучшения там море, никому не возбраняется поучаствовать.
Автор: void* 15.7.2008, 11:15
Цитата(un-defined @ 15.7.2008, 10:45)
В принципе никто не мешает включить, ну или опцию добавить.. может и сделаю, если уж прямо очень убедительно надо
было бы очень даже неплохо
Автор: un-defined 15.7.2008, 23:59
Цитата(void* @ 15.7.2008, 12:15)
было бы очень даже неплохо
Да не вопрос
В cvs забирать.
Кстати, по поводу использования void* - что именно там непонятно и нежелательно?
Автор: void* 16.7.2008, 9:32
теперь другое дело правда теперь почему-то стал слишком большой шрифт и отступ от текущего пути, вот http://img503.imageshack.us/img503/7180/termwidgetap8.png
насчет void* - лично я не совсем понимаю зачем в классе держать указатели на void и при каждом их использовании приводить их к нужному типу:
void *_session;
void *_terminalDisplay;
примеры:
((TerminalDisplay*)_terminalDisplay)->setSize(80, 40);
((Session*)_session)->addView((TerminalDisplay*)_terminalDisplay);
Автор: un-defined 16.7.2008, 9:55
Цитата(void* @ 16.7.2008, 10:32)
теперь другое дело
правда теперь почему-то стал слишком большой шрифт и отступ от текущего пути, вот http://img503.imageshack.us/img503/7180/termwidgetap8.png
Шрифт моноширинный должен быть.
По умолчанию стоит Monospace, 10.
Я ставил еще terminus, 12
С другими шрифтами могут быть как раз такие проблемы, так как положение курсора вычисляется как (размер символа) Х (количество символов). А в немоноширинных шрифтах размер символа непостоянен..
Но вообще я в этот раз не трогал ту часть, которая за шрифты отвечает
Цитата(void* @ 16.7.2008, 10:32)
насчет void* - лично я не совсем понимаю зачем в классе держать указатели на void и при каждом их использовании приводить их к нужному типу:
void *_session;
void *_terminalDisplay;
потому что надо было спрятать внутренние типы от приложений, которые будут этот класс использовать. Понятно, что тут явно просятся forward declarations и pimpl, но я решил вообще убрать из интерфейсного класса какие-либо упоминания о внутренних классах.
Может быть как-нибудь переделаю на досуге
Автор: void* 16.7.2008, 10:02
Цитата(un-defined @ 16.7.2008, 9:55)
Шрифт моноширинный должен быть.
По умолчанию стоит Monospace, 10.
Я ставил еще terminus, 12
С другими шрифтами могут быть как раз такие проблемы, так как положение курсора вычисляется как (размер символа) Х (количество символов). А в немоноширинных шрифтах размер символа непостоянен..
в принципе да, с Monospace все вроде нормально
ЗЫ я конечно наверно уже совсем обнаглел, но может сделаешь еще и горизонтальную полосу прокрутки или вместо обоих полос прокрутки враппер из QAbstractScrollArea?
Автор: Litkevich Yuriy 16.7.2008, 13:07
Цитата(void* @ 16.7.2008, 14:02)
вместо обоих полос прокрутки враппер
это плохая идея, должна быть прокрутка
Автор: un-defined 16.7.2008, 13:14
А зачем нужна горизонтальная прокрутка?
Автор: Litkevich Yuriy 16.7.2008, 13:23
строки могут быть длинные, а перенос не информативен, т.к. нарушает реальный вывод, пример, сборка Qt.
Автор: Lenymo 27.8.2010, 20:10
Подскажите, пожалуйста, а можно ли на основе этого эмулятора сделать виджет реального терминала?
Автор: un-defined 27.8.2010, 20:28
Цитата(Lenymo @ 27.8.2010, 21:10)
Подскажите, пожалуйста, а можно ли на основе этого эмулятора сделать виджет реального терминала?
А что вы понимаете под реальным терминалом?
Автор: Lenymo 29.8.2010, 16:13
В общем, мне нужен виджет типа PuTTY для работы через реальный последовательный порт - чтобы он обеспечивал управление удаленным узлом и отображение, в то время как сама работа выполнялась бы на другой стороне.
Автор: kwisp 29.8.2010, 17:03
Lenymo,
ну к примеру в терминале всегда можно набрать ssh имя_позбзователя@имя_машины - вот в принципе даже без переделки в каком то виде есть такая возможность.
Автор: Lenymo 29.8.2010, 19:15
kwisp, мне нужен serial terminal...
Автор: kuzulis 30.8.2010, 8:21
Цитата
kwisp, мне нужен serial terminal...
ssh может быть over serial.
Lenymo, нет в природе такого виджета как вы хотите. Есть отдельно библиотеки/классы для GUI, есть для работы с портом, есть кое что на qt-apps.org, часть кода можно стыбрить из KDE, т.е. везде всего понемножку, поэтому делайте сами.
Автор: Lenymo 30.8.2010, 19:32
kuzulis, так я и собираюсь сама, просто надеялась сэкономить время и не изобретать велосипед То есть использовать часть классов этого эмулятора для моей задачи - отображения удаленной консоли. Собственно, работа с портом у меня уже есть, надо только визуализацию прикрутить...
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)