Снегопат

Обсуждение Снегопата
Текущее время: 22 май 2024, 02:02

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: События
СообщениеДобавлено: 01 ноя 2012, 01:30 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
Вечер добрый!
В вики нашел перечень событий, которые существуют. Там же указано что остальные можно найти в скриптах.

Но нужного мне события я не нашел - мне нужно оповещение об изменении позиции курсора в текстовом редакторе.
Вкратце для чего нужно. Я сейчас пробую сделать альтернативу SciColorer используя SynEdit.
Как я понял из описания SciColorer - он сам текст не редактирует. Я же делаю, чтобы текст редактировался непосредственно в моем редакторе, и передаю изменения в стандартный.
Сейчас столкнулся с тем, что при нажатии Enter в комментарии textEditorExt добавляет комментарий в новую строку, и после этого изменяет положение курсора. Добавление комментария обрабатывается нормально, а вот изменение курсора - нет.

Как бы его поймать?

Может быть, вот это оно?
Код:
public: virtual void __thiscall core::TextManager::onTextAreaModified(bool,class core::TextPosition const &,class core::TextPosition const &,class core::TextPosition const &,class core::TextPosition const &)


Приложил dll, которая получилась на данный момент.
Естествено, перед подключением отключить SciColorer.

upd. Обновил test.dll - получение позиции курсора по onIdle, редактирование блоков текста, улучшение подсветки, начато сворачивание кода.

upd2. Обновил ещё раз test.dll - много чего сделано, уже даже текст редактировать можно довольно нормально :)

upd3. Пофикшены баги, о которых отписывались в теме.


Вложения:
test.zip [933.19 КБ]
Скачиваний: 323

_________________
В реальності все не так, як насправді


Последний раз редактировалось Magister 26 фев 2013, 01:05, всего редактировалось 3 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 08:34 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
На этой функции у меня как раз и стоит перехват, во время которого и вызывается событие "onChangeTextManager"
Параметры - txtMgr, selectionBefore, selectionAfter
txtMgr - число, адрес this перехвачиваемого объекта, соответствует свойству textMgr объекта ITextWindow
selectionBefore - положение выделения до модификации, объект типа ISelection
selectionAfter - положение выделения после модификации, объект типа ISelection

Событие как раз и делалось под SciColorer для решения задачи отлова изменения текста извне.
И SciColorer таки как-раз сам редактирует текст. Он создает свое окно поверх окна 1Сного редактора, и оперативно сливает все правки в родной редактор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 08:42 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
И хотелось бы узнать, в чем видится смысл разработки редактора?
Какие будут плюсы по сравнению со штатным и SciColorer?
Тестовую пробовал, там еще пилить и пилить - что должно в итоге получиться?
Хотя альтернатива - это всегда хорошо.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 12:43 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
orefkov писал(а):
На этой функции у меня как раз и стоит перехват, во время которого и вызывается событие "onChangeTextManager"
Параметры - txtMgr, selectionBefore, selectionAfter
txtMgr - число, адрес this перехвачиваемого объекта, соответствует свойству textMgr объекта ITextWindow
selectionBefore - положение выделения до модификации, объект типа ISelection
selectionAfter - положение выделения после модификации, объект типа ISelection

Событие как раз и делалось под SciColorer для решения задачи отлова изменения текста извне.

Собственно изменение текста я получаю именно через это событие, тут проблемы нет.
А вот изменение позиции курсора из других скриптов - нет. Конкретно - из textEditorExt, при нажатии Enter в комментарии.
Сам комментарий у меня в редакторе появляется, а вот позиция курсора - становится неправильной.

orefkov писал(а):
И SciColorer таки как-раз сам редактирует текст. Он создает свое окно поверх окна 1Сного редактора, и оперативно сливает все правки в родной редактор.

Значит metaeditor ввёл меня в заблуждение:
metaeditor писал(а):
Итак, начнём тестирование колорера с возможностью редактирования текста.
Работает оно на событии onChangeTextManager(selectionBefore, selectionAfter) которое вызывается, когда в текстовом окне изменился текст.
По передаваемым параметрам вычисляется часть текста которая изменилась
и обновляется соответствующая часть редактора scintilla, лежащего поверх родного редактора.
Сам редактор scintilla текст не меняет, он только его отображает.

Кому верить? :)

orefkov писал(а):
И хотелось бы узнать, в чем видится смысл разработки редактора?
Какие будут плюсы по сравнению со штатным и SciColorer?
Тестовую пробовал, там еще пилить и пилить - что должно в итоге получиться?
Хотя альтернатива - это всегда хорошо.

Смысл - SynEdit мне нравится больше, чем Scintilla.
Из плюсов - например, вот это (пока ещё не прикрутил):

Изображение

или вот это (уже есть):

Изображение

или вотэто (тоже пока нет):
Изображение

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 12:51 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Ну, не знаю, как точно сделано в SciColorer, но я бы просто в onIdle периодически стягивал положение каретки из ITextWindow.
На чем кстати написан редактор?
Есть ли порт под линукс?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 12:55 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Можно будет выводить для каждой строчки какой-либо комментарий, например как в скрине ?
Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 14:02 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
orefkov писал(а):
Ну, не знаю, как точно сделано в SciColorer, но я бы просто в onIdle периодически стягивал положение каретки из ITextWindow.
На чем кстати написан редактор?
Есть ли порт под линукс?

Тоже об этом думал, но как-то это не совсем правильно. Думал, может есть событие на смену положения каретки.
Тем более, в данном случае оно инициировано как раз Снегопатом.

Редактор написан на Паскале, используется как редактор кода в Lazarus.
Под Linux работает. Правда не знаю как там с окнами работать.
Под Windows я окну формы, на которой лежит SynEdit, устанавливаю родителем TextWindow, дальше для изменения размера перехватываю WindowProc TextWindow и для отслеживания момента закрытия окна - WindowProc MDILocalFrame.
Как такое провернуть под Linux - хз.

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 14:06 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
sosnae писал(а):
Можно будет выводить для каждой строчки какой-либо комментарий, например как в скрине ?
Изображение

Стандартно такого нет, но прикрутить, думаю, несложно будет. Код редактора открытый, так что сделать можно многое :)

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 14:08 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Каретка - момент не принципиальный. Пока делай через onIdle - надо будет, сделаем и событие.
Сейчас более важно основной функционал нарастить.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: События
СообщениеДобавлено: 01 ноя 2012, 14:10 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
orefkov писал(а):
Сейчас более важно основной функционал нарастить.
+1
настройки цветов, а то уже не привычно на родной красно-сине-белой цветовой схеме сидеть.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB