Страница 8 из 8
Demagog TTS
Добавлено: 05 фев 2021 20:00
flegont
Пока такой возможности нет. Для гарантии от возможных конфликтов, окна Input, Menu и Form должны быть модальными (т.е. стопорить интерпретатор, ожидая подтверждения/отказа пользователя).
Demagog TTS
Добавлено: 07 фев 2021 21:12
tonio_k
Обратил внимание, что номер текущей строки в самом левом нижнем углу Демагога может изменяться прямо на глазах, если, например, увеличить масштаб (или уменьшить размер окна). Получается, что это не реальный номер строки в открытом файле, а номер "ПЕЧАТНОЙ (отображаемой на экране)" строки, которая зависит от размера экрана. Если отключить перенос строк Ctrl+W, то Экранные строки = реальным. Может все же сделать номер текущей строки = реальному номеру строки самого документа? Что бы по смыслу так было:
► Показать
- 2021-02-07_21-10-12.png (23.69 КБ) 1420 просмотров
Demagog TTS
Добавлено: 07 фев 2021 21:54
flegont
Идея красивая. Хотя надо помнить, что "реальная" строка, т.е. часть текста, не содержащая '\r' нигде, кроме как на конце - это на самом деле (в типографском смысле)
абзац.
Боковую нумерацию сделать - проблематично, компонент RichEdit - это ведь
не таблица-шахматка с вертикальными колонками, а обычное окно редактирования. А в Строке состояния и так места уже нет для дополнительной нумерации, кроме видимых строк, еще и абзацев
Demagog TTS
Добавлено: 07 фев 2021 22:08
tonio_k
flegont писал(а): ↑07 фев 2021 21:54
места уже нет для дополнительной нумерации, кроме видимых строк
я как раз и прошу вместо "видимых строк" показывать "номер абзаца" в строке состояния.
А про "боковую нумерацию" я упомянул только для "наглядного" сравнения, что тот же AkelPad или Notepad++ с включеным "Перенос по словам" в качестве нумерации строк считают нумерацию абзаца, а не "видимые строки".
А то открываю словарь, спускаюсь в конец текста. У меня Демагог одно количество правил показывает. Открываю в другой программе - там другое
Demagog TTS
Добавлено: 07 фев 2021 22:18
flegont
Да, еще к посту #351. Слово "пока" из ответа можно убрать. Немодальная форма ввода однозначно вызовет в Интерпретаторе большие проблемы.
Он ведь работает последовательно выполняя команды, строка за строкой. Рассмотрим ситуацию:
Код: Выделить всё
...
d = Input(...)
-- команды обработки введенной информации
...
...
Если Input создает модальную форму, то окно Демагога блокируется, пока пользователь не введет данные и нажмет ОК. После этого интерпретатор продолжит работу, обработает массив введенных данных d и выдаст ответ.
Если же Input создаст
не модальную форму, то окно программы остается активным, мы можем в нем работать, например, запустить чтение какого-то текста. Вроде всё хорошо. Параллельная работа, так сказать. На самом деле: сильно хорошо, тоже плохо (с). Ведь интерпретатор тоже продолжает работать. И он сразу переходит к выполнению строк следующих ЗА Input()! Хотя данные еще не введены! А работа скрипта уже закончена. Остается только изумленно любоваться на мгновенно ставшую бесполезной пустую форму ввода
Demagog TTS
Добавлено: 07 фев 2021 22:21
flegont
Возвращаясь к #353. "Вместо" - исключено. "Вместе" - обещаю подумать. В программе вообще много разных мест и уголков, над которыми надо бы хорошо поразмыслить, выбрав время...
Demagog TTS
Добавлено: 07 фев 2021 23:21
tonio_k
flegont писал(а): ↑07 фев 2021 22:18
Параллельная работа, так сказать.
Параллельную работу в скриптах я решаю с применением команды pause(0.001). Пример:
► Показать
Данный скрипт будет читать текст вслух как только он будет выделен в окне (с учетом активных словарей). Использую для прослушивания новых слов. Двойной клик по слову и сразу озвучка -очень удобно
Код: Выделить всё
local z0 = os.clock()
local k=1
local kf=0
local s, s0
StatusMessage("ЗАПУЩЕН РЕЖИМ ЧТЕНИЯ ВСЛУХ ВЫДЕЛЕННОГО ТЕКСТА")
local ind=WActive()--режим работает только для окна в котором он запущен
while k > -1 do
StatusMessage("ВНИМАНИЕ! ЗАПУЩЕН РЕЖИМ ЧТЕНИЯ ВСЛУХ ВЫДЕЛЕННОГО ТЕКСТА: "..SecondsToClock(os.clock()-z0).." sec.")
CancelScript()
pause(0.001)
--ind=WActive()
k,len = WSel(ind)
if kf~=k then WNew(-1) end
s=WSelText(ind,true)
s0=WText(-1,true)
if #s>0 then
if s~=s0 then
WNew(-1,s,true,true)
WSpeak(-1)
StatusMessage("ВНИМАНИЕ! ЗАПУЩЕН РЕЖИМ ЧТЕНИЯ ВСЛУХ ВЫДЕЛЕННОГО ТЕКСТА: "..SecondsToClock(os.clock()-z0).." sec.")
kf = k
end
end
end
Может и тут "допустить" подобную лазейку - которую пользователь в скрипте сам будет отлавливать: если например Input сделать модальным с дополнительной возможностью сохранения текстового файла
'#in.txt' причем содержащего результат ввода в таблице, то можно было бы решить вопрос ориентировочно так:
Код: Выделить всё
d = Input(...'#in.txt') -- здесь указывается сохранение таблицы d в файл '#in.txt'.
--Дальше идет цикл отлова завершения Input фактом которого будет являться "появление" файла '#in.txt':
k=0
while k == 0 do
CancelScript()
pause(0.1)
if FileExists('#in.txt') then
d = table.load('#in.txt')--загружаем таблицу из файла
os.remove('#in.txt')--удалить файл
break
end
end
Demagog TTS
Добавлено: 08 фев 2021 10:44
flegont
tonio_k писал(а): ↑07 фев 2021 23:21
Input сделать модальным
Может вы имели в виду "Input сделать
не модальным"? Это сейчас он модальный, т.е. полностью блокирующий программу в вечном ожидании прямого приказа: OK или Esc.
Ну, а с немодальным вариантом можно поэкспериментировать, по предложенному варианту
Demagog TTS
Добавлено: 07 мар 2021 13:48
tonio_k
Пункт меню:
Закладки - Создать оглавление
Вопрос, а можно на основе созданных закладок, добавить возможность разрезать текст по закладкам и сохранить как отдельные файлы? Получится сериал но не по количеству символов, а по оглавлению. Желательно имя закладки добавлять в название сохранённого файла.
Demagog TTS
Добавлено: 07 мар 2021 14:58
flegont
Теоретически - препятствий не вижу. Подумаю над этим.
Demagog TTS
Добавлено: 16 мар 2021 15:00
wasyaka
Найти омографы Ctrl+H
► Показать
- 2021-03-16_145133.png (121.57 КБ) 1032 просмотра
Редактируемый омограф поднять повыше ?
Demagog TTS
Добавлено: 16 мар 2021 17:30
flegont
Так работает стандартный компонент Microsoft RichEdit, который используется в Демагоге для показа/редактирования текста. Если искомое слово находится за пределами видимости, то RichEdit автоматически прокручивает текст до тех пор, пока найденное слово не покажется на экране. Т.е. в последней строке.
А добавить программно прокрутку еще на несколько строк - возникают нехорошие побочные эффекты. Так что, кроме как опять подумать над этой проблемой, ничего обещать не могу
Demagog TTS
Добавлено: 16 мар 2021 18:11
tonio_k
flegont писал(а): ↑16 мар 2021 17:30
Так что, кроме как опять подумать над этой проблемой, ничего обещать не могу
если я правильно понял в чём проблема, то как вариант, добавить в окно диалога строку с найденным словом в контексте предложения со словами слева и справа в пределах 50 символов от найденого слова.