| Автор |
Сообщение |
|
Сообщение создано: 27. 10. 2010 [12:33]
|
|
kuzulis
Денис Шиенков
Создатель темы
Зарегистрирован(а) с: 10.07.2009
Сообщения: 128
|
Доброго времени суток.
Как Роман и Ко смотрят на добавление такой "фичи" в редакторе кода Qt конфигуратора?
В принципе, я тут бегло "налабал" на Qt4 тестовый примерчик подсветки который пока что подсвечивает только комментарии, ключевые слова и цифры в формате dec/hex. Этот пример очень простой и является пока что просто отдельным Qt проектом.
И если будет принято положительное решение, то я выложу код и потом, все вместе, можем его "подпилить" под опен скаду и в будующем, уже можно его добавлять в неё.
--
ЗЫ: если подсветка уже есть - то сорри :)
|
|
Сообщение создано: 27. 10. 2010 [15:36]
|
|
roman
Roman Savochenko
Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 1460
|
Вы глубоко заблуждаетесь если думаете, что подсветка это только вопрос реализации в QT.
Учиться, учиться и учиться лучше чем работать, работать и работать.
|
|
Сообщение создано: 27. 10. 2010 [15:58]
|
|
kuzulis
Денис Шиенков
Создатель темы
Зарегистрирован(а) с: 10.07.2009
Сообщения: 128
|
"roman" wrote:
Вы глубоко заблуждаетесь если думаете, что подсветка это только вопрос реализации в QT.
Причем тут это?
Раз Qt конфигуратор реализован на Qt, то следовательно и подсветку для него проще выполнить в Qt!
Для других реализаций конфигураторов (при использовании иных GUI тулкитов) подсветку можно сделать с учетом их особенностей.
Но т.к. других конфигураторов (кроме WEB) нету, то и смысла спорить тоже нет.
О чем спор то?
ЗЫ: я уже добавил подсветку системных констант, функций, символов завершения строк, добавил в редакторе нумерацию строк.
[Сообщение редактировалось 2 раз(а), в последний раз 27.10.2010 в 16:04.]
|
|
Сообщение создано: 27. 10. 2010 [16:44]
|
|
aNdrOS
Андрей
Зарегистрирован(а) с: 07.05.2010
Сообщения: 89
|
Подсветка штука исключительно полезная. Поддерживаю!
[Сообщение редактировалось 1 раз(а), в последний раз 27.10.2010 в 16:45.]
|
|
Сообщение создано: 27. 10. 2010 [16:53]
|
|
roman
Roman Savochenko
Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 1460
|
"kuzulis" wrote:
"roman" wrote:
Вы глубоко заблуждаетесь если думаете, что подсветка это только вопрос реализации в QT.
Причем тут это?
Раз Qt конфигуратор реализован на Qt, то следовательно и подсветку для него проще выполнить в Qt!
Курим до прояснения http://wiki.oscada.org/Doc/API?v=ika#h154-1 , а уже затем толкаем глубокомысленные предложения!
Учиться, учиться и учиться лучше чем работать, работать и работать.
|
|
Сообщение создано: 27. 10. 2010 [17:46]
|
|
kuzulis
Денис Шиенков
Создатель темы
Зарегистрирован(а) с: 10.07.2009
Сообщения: 128
|
Курим до прояснения http://wiki.oscada.org/Doc/API?v=ika#h154-1 , а уже затем толкаем глубокомысленные предложения!
И причем тут это? Ёлки! Раз в QTextEdit выводится код JavaLike программы то его можно элементарно подсветить! Для этого никакого API и прочей шелупони не нужно!
Нужно только иметь:
1. Указатель на объект QTextEdit (а точнее желательно на QPlainTextEdit) в котором отображен код! Ёлки! т.е. знать, что в этом TextEdit-е в данный момент отображается то что нужно
2. Добавить в код виджета только одну/две дополнительные строки. И ВСЁ! А сам код подсветки никоим образом не будет влиять ни на что!
И тем самым и зайцы будут целы и волки сыты.
[Сообщение редактировалось 1 раз(а), в последний раз 27.10.2010 в 17:47.]
|
|
Сообщение создано: 27. 10. 2010 [20:18]
|
|
roman
Roman Savochenko
Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 1460
|
"kuzulis" wrote:
Курим до прояснения http://wiki.oscada.org/Doc/API?v=ika#h154-1 , а уже затем толкаем глубокомысленные предложения!
И причем тут это? Ёлки! Раз в QTextEdit выводится код JavaLike программы то его можно элементарно подсветить! Для этого никакого API и прочей шелупони не нужно!
О, крупный специалист! Вы наверное много для OpenSCADA сделали, досконально знаете архитектуру и все нюансы? Ну так тогда делайте, моё мнение я так понял тут не важно.
Учиться, учиться и учиться лучше чем работать, работать и работать.
|
|
Сообщение создано: 27. 10. 2010 [20:49]
|
|
kuzulis
Денис Шиенков
Создатель темы
Зарегистрирован(а) с: 10.07.2009
Сообщения: 128
|
Роман, харош гнать.. Ей богу.. Вместо того чтобы подсказать что и как начинаем понтоваться?
По вашему исходный java-код в нужном окошке TextEdit рисуется сам?
ИМХО, всего то нужно в коде:
class TextEdit : public QWidget
{
Q_OBJECT
public:
//Methods
TextEdit( QWidget *parent, const char * name = 0, bool prev_dis = false );
QString text( );
bool hasFocus( ) const;
bool isChanged( );
void setText( const QString & );
QTextEdit *edit( ) { return ed_fld; } /// /// <<<<<< ВОТ ЭТО ИЗМЕНИТЬ!!
signals:
//Signals
void apply( );
void cancel( );
void textChanged( const QString& );
protected:
bool event( QEvent *e );
private slots:
//Private slots
void changed( );
void btApply( );
void btCancel( );
void curPosChange( );
void ctrTreePopup( );
void find( );
private:
//Private attributes
bool isInit;
QAction *actFind, *actFindNext;
QTextEdit *ed_fld; /// <<<<<< ВОТ ЭТО ИЗМЕНИТЬ!!
QDialogButtonBox *but_box;
};
для помеченых мною строк вместо QTextEdit написать какой-то наш CustomTextEdit который унаследован бы был от QPlainTextEdit.
т.е. где-то добавить модули к примеру
CustomTextEdit.h
class CustomTextEdit : public QPlainTextEdit
{
бла бла
добавить какой то паблик метод, который бы включал режим подсветки, если в данный CustomTextEdit
будет выводится java-код, например
void enableJavaLikeHiglit(bool enable);
}
CustomTextEdit.cpp
CustomTextEdit::CustomTextEdit
бла бла
а в том коде что я привел выше там где жирным заменить тот текст на
CustomTextEdit *edit( ) { return ed_fld; }
CustomTextEdit *ed_fld;
далее в файле qtcfg.cpp или еще где добавить проверку того CustomTextEdit-а в который собираемся что-то выводить на тип выводимого содержимого... и если содержимое есть java-код, то включить режим подсветки у данного CustomTextEdit-а и вывести текст.
И ВСЁ!
[Сообщение редактировалось 3 раз(а), в последний раз 27.10.2010 в 20:52.]
|
|
Сообщение создано: 27. 10. 2010 [21:24]
|
|
roman
Roman Savochenko
Contributor Developer
Зарегистрирован(а) с: 12.12.2007
Сообщения: 1460
|
Что всё?
Что вы не поняли в фразе?
Вы глубоко заблуждаетесь если думаете, что подсветка это только вопрос реализации в QT.
А имел я в виду следующее:
1. TextEdit это динамичный элемент текста, который общий для всех отображений текстовых значений из который далеко не все программы и даже не факт, что если это программа то на JavaLikeCalс. После этого Вы хотите на любой текст накладывать фиксированную подсветку или мутить автоопределение?
2. Если делать нормальную подсветку, учитывающую реальное содержимое в TextEdit, то нужно начинать с той самой ссылки, которую я указал, и в которой описан интерфейс управления OpenSCADA. Через этот интерфейс нужно передавать формальные правила подсветки для конкретного текстового поля и вместе с самим текстовым значением.
3. Только получив эти правила подсветки в элементе отображения текста можно их накладывать на текст, получая подсветку.
4. И вот самое интересное. Эти правила подсветки нужно формально описать изучив примеры описания подсветки синтаксиса в различных программах, например mc, vim, kate. После чего очередь только и доходит до QT, где правила подсветки должны конвертироваться в описания подсветки на QT.
После всего вышеперечисленного можно получить всеохватывающее и правильное решение вопроса подсветки, при котором для каждого текстового поля будет своя адекватная подсветка. Для программ на JavaLikeCalc, для программ на других языках, для XML и HTML текстов, для структурированных конфигурационных записей и т.д.
Вы же предлагаете однобокое да и в принципе не корректное решение. Из требований, заложенных при проектировании, визуализаторы и конфигураторы не должны знать специфики модели данных, к чему относится и формат текстовых значений, а значит в них нельзя прямо реализовывать подсветку для форматов специфичных для модели данных! Эта концепция обеспечивает единообразность и высокую переносимость кода конфигураторов, что нарушать никто не будет!
P.S. Если после этого до Вас не дошло то мне с Вами говорить больше не о чем и своё завышенное самомнение можете идти выражать в другом месте!
Учиться, учиться и учиться лучше чем работать, работать и работать.
|
|
Сообщение создано: 28. 10. 2010 [12:01]
|
|
aNdrOS
Андрей
Зарегистрирован(а) с: 07.05.2010
Сообщения: 89
|
ОFFTOP: Денис, конечно, грубо изложил свою точку зрения. С другой стороны, Роман, если бы вместо Вы глубоко заблуждаетесь если думаете, что подсветка это только вопрос реализации в QT. ответили чуть более развернуто (как в итоге и пришлось сделать), то обсуждение пошло бы более конструктивно гораздо раньше. Не мне вас учить как общаться на вашем форуме, который посвящен вашей системе, однако, опыт показывает, что 3 лишние строчки в ответе могут сэкономить время и нервы и вам и вашему собеседнику. :)
[Сообщение редактировалось 1 раз(а), в последний раз 28.10.2010 в 12:02.]
|