RU 🔒 Locked

QGen на Qt

BaxZzZz #14 20.05.2011 12:22 59 comments 38468 views

Есть предложение переписать редактор ( плеер QSP ) под фреймворком Qt. У Qt на сегодняшний момент много плюсов, в том числе легкая платформо переносимость, быстрое развитие фреймворка, в отличии от wxWidgets. Хотелось было услышать Ваше мнение.

Самая большая засада сайчас в QScintilla. По-ходу придется свой лексер писать. Там вообще все как-то через одно место сделано. Почти все настройки идет через SendScintilla(), а описания параметров этой радости вообще нет. Например, чтобы отправить кейворды нужно сделать что-то вроде SendScintilla(SCI_SETKEYWORDS, keyWordSet, keyWordList) (опять таки судя по документации обычной scintilla), но принимать их она отказывается :( В общем выхода два: Писать лексер и терпеть все насмешки QScintilla, либо написать подобный виджет с нуля. Пока в раздумьях.

rrock.ru,
ты о подсветке синтаксиса? Эту часть нужно самим писать, и совмещать с автопроверкой синтаксиса, и в будущем - автоподстановками, подсказками и проверкой орфографии. Но это нужно оставить на последнюю очередь. Остальные функции кугена гораздо важнее.

Ок, тогда выкидываю scintilla и прикручиваю заготовку нового редактора.

А какие новые возможности перенос кугена на qt даст авторам?
//В чем смысл - можно для нубов пояснить? :)

Zeantar,
писал на предыдущей странице, повторю.

Когда процесс переноса на Qt завершится, то:
1. появится возможность вносить правки(багфиксы и улучшения) сразу, не дожидаясь пока Байт или Бакс пофиксят пресловутый “патч для wx”;
2. код редактора станет проще и понятнее - Qt очень продуманный фреймворк;
3. можно будет сделать сборки под большее количество платформ.

Для пользователя, это значит, что:
1. багфиксы и улучшения будут появляться чаще, развитие будет идти быстрее;
2. в разработке редактора смогут принять участие большее количество разработчиков;
3. редактор станет доступен под Windows, Linux, MacOS, Android и пр.

Nex:

в разработке редактора смогут принять участие большее количество разработчиков;

ты думаешь, что кроме тех кто и прошлый делал это кому-нибудь нужно?)

Я думаю, перенос плеера более актуален. Надо дать возможность в всплывающем окошке меседжа перейти по ссылке. Ну и другие темы.

rrock.ru,
Для текущего QGen’а уже написан лексер для Scintilla, вроде у нее была возможность использовать внешние лексеры :)
Если так, то можно будет перенести текущий в QT-версию.

Zeantar, так никто же не запрещает высказывать предложения. После портирования уже будем их рассматривать, обсуждать и ,возможно, какие-то из них внедрять.

Byte,
судя по тому что я про лексеры Scintilla читал, это будет пустой тратой времени.

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

Nex,
а что ты о них читал? я тоже много чего читал…

Byte, лексер в wxном варианте основан, как я понял на VBшном. В QScintilla такого вообще нет + куча параметров задаются тупо сигналами к scintilla. А что передавать в этих параметрах, и в какой последовательности это в доках не описано (по крайнем мере к QScintilla). Пока буду делать с QPlainTextEdit, а потом может быть создам бранч с QScintilla, и если что выгорит, то внесу в мастер.

rrock.ru,
Там он не основан на VBшном. Он там на 100% написан с нуля. Просто QSP-лексер находится в файле лексера VB.
Сейчас лексер написан как один из стандартных в Scintilla, то есть для его использования нужно пересобирать библиотеку.
Насколько я помню, ничего не мешает сделать его “внешним”, то есть без патчинга библиотеки.
То, что ты описываешь как “что передавать в этих параметрах, и в какой последовательности это в доках не описано” - это такой интерфейс у Scintilla. Да, это неудобно, но в wx сделано по сути точно также.

Если есть какая-то разумная альтернатива Scintilla - я не против, конечно. Но я против тупой подсветки синтаксиса, без анализа исходного кода (текущий лексер это делает).

Byte, ну,в принципе, сейчас залез в wx, и да, там тоже сообщениями..

Spoiler
void wxStyledTextCtrl::SetKeyWords(int keywordSet, const wxString& keyWords)
{
    SendMsg(4005, keywordSet, (sptr_t)(const char*)wx2stc(keyWords));
}

Теперь все более-менее встает на места :)

Log in or Register to post comments.