Demagog TTS

Говорящий текстовый редактор с открытым кодом, предназначенный для чтения вслух и записи в аудиофайл текстовых файлов с использованием пакетов речевых функций SAPI4\SAPI5.

Модератор: flegont

Ответить
Аватара пользователя
flegont
V.I.P.

Demagog TTS

#351

Сообщение flegont »

Пока такой возможности нет. Для гарантии от возможных конфликтов, окна Input, Menu и Form должны быть модальными (т.е. стопорить интерпретатор, ожидая подтверждения/отказа пользователя).

Аватара пользователя
tonio_k
V.I.P.

Demagog TTS

#352

Сообщение tonio_k »

Обратил внимание, что номер текущей строки в самом левом нижнем углу Демагога может изменяться прямо на глазах, если, например, увеличить масштаб (или уменьшить размер окна). Получается, что это не реальный номер строки в открытом файле, а номер "ПЕЧАТНОЙ (отображаемой на экране)" строки, которая зависит от размера экрана. Если отключить перенос строк Ctrl+W, то Экранные строки = реальным. Может все же сделать номер текущей строки = реальному номеру строки самого документа? Что бы по смыслу так было:
► Показать

Аватара пользователя
flegont
V.I.P.

Demagog TTS

#353

Сообщение flegont »

Идея красивая. Хотя надо помнить, что "реальная" строка, т.е. часть текста, не содержащая '\r' нигде, кроме как на конце - это на самом деле (в типографском смысле) абзац.
Боковую нумерацию сделать - проблематично, компонент RichEdit - это ведь не таблица-шахматка с вертикальными колонками, а обычное окно редактирования. А в Строке состояния и так места уже нет для дополнительной нумерации, кроме видимых строк, еще и абзацев :pardon:

Аватара пользователя
tonio_k
V.I.P.

Demagog TTS

#354

Сообщение tonio_k »

flegont писал(а):
07 фев 2021 21:54
места уже нет для дополнительной нумерации, кроме видимых строк
я как раз и прошу вместо "видимых строк" показывать "номер абзаца" в строке состояния.
А про "боковую нумерацию" я упомянул только для "наглядного" сравнения, что тот же AkelPad или Notepad++ с включеным "Перенос по словам" в качестве нумерации строк считают нумерацию абзаца, а не "видимые строки".

А то открываю словарь, спускаюсь в конец текста. У меня Демагог одно количество правил показывает. Открываю в другой программе - там другое

Аватара пользователя
flegont
V.I.P.

Demagog TTS

#355

Сообщение flegont »

Да, еще к посту #351. Слово "пока" из ответа можно убрать. Немодальная форма ввода однозначно вызовет в Интерпретаторе большие проблемы.
Он ведь работает последовательно выполняя команды, строка за строкой. Рассмотрим ситуацию:

Код: Выделить всё

...
d = Input(...)
-- команды обработки введенной информации
...
...
Если Input создает модальную форму, то окно Демагога блокируется, пока пользователь не введет данные и нажмет ОК. После этого интерпретатор продолжит работу, обработает массив введенных данных d и выдаст ответ.
Если же Input создаст не модальную форму, то окно программы остается активным, мы можем в нем работать, например, запустить чтение какого-то текста. Вроде всё хорошо. Параллельная работа, так сказать. На самом деле: сильно хорошо, тоже плохо (с). Ведь интерпретатор тоже продолжает работать. И он сразу переходит к выполнению строк следующих ЗА Input()! Хотя данные еще не введены! А работа скрипта уже закончена. Остается только изумленно любоваться на мгновенно ставшую бесполезной пустую форму ввода :pardon:

Аватара пользователя
flegont
V.I.P.

Demagog TTS

#356

Сообщение flegont »

Возвращаясь к #353. "Вместо" - исключено. "Вместе" - обещаю подумать. В программе вообще много разных мест и уголков, над которыми надо бы хорошо поразмыслить, выбрав время...

Аватара пользователя
tonio_k
V.I.P.

Demagog TTS

#357

Сообщение tonio_k »

flegont писал(а):
07 фев 2021 22:18
Параллельная работа, так сказать.
Параллельную работу в скриптах я решаю с применением команды pause(0.001). Пример:
► Показать
Может и тут "допустить" подобную лазейку - которую пользователь в скрипте сам будет отлавливать: если например 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

Аватара пользователя
flegont
V.I.P.

Demagog TTS

#358

Сообщение flegont »

tonio_k писал(а):
07 фев 2021 23:21
Input сделать модальным
Может вы имели в виду "Input сделать не модальным"? Это сейчас он модальный, т.е. полностью блокирующий программу в вечном ожидании прямого приказа: OK или Esc.
Ну, а с немодальным вариантом можно поэкспериментировать, по предложенному варианту :thinking:

Аватара пользователя
tonio_k
V.I.P.

Demagog TTS

#359

Сообщение tonio_k »

Пункт меню:
Закладки - Создать оглавление

Вопрос, а можно на основе созданных закладок, добавить возможность разрезать текст по закладкам и сохранить как отдельные файлы? Получится сериал но не по количеству символов, а по оглавлению. Желательно имя закладки добавлять в название сохранённого файла.

Аватара пользователя
flegont
V.I.P.

Demagog TTS

#360

Сообщение flegont »

Теоретически - препятствий не вижу. Подумаю над этим.

Аватара пользователя
wasyaka
V.I.P.

Demagog TTS

#361

Сообщение wasyaka »

Найти омографы Ctrl+H
► Показать
Редактируемый омограф поднять повыше ?

Аватара пользователя
flegont
V.I.P.

Demagog TTS

#362

Сообщение flegont »

Так работает стандартный компонент Microsoft RichEdit, который используется в Демагоге для показа/редактирования текста. Если искомое слово находится за пределами видимости, то RichEdit автоматически прокручивает текст до тех пор, пока найденное слово не покажется на экране. Т.е. в последней строке.
А добавить программно прокрутку еще на несколько строк - возникают нехорошие побочные эффекты. Так что, кроме как опять подумать над этой проблемой, ничего обещать не могу :pardon:

Аватара пользователя
tonio_k
V.I.P.

Demagog TTS

#363

Сообщение tonio_k »

flegont писал(а):
16 мар 2021 17:30
Так что, кроме как опять подумать над этой проблемой, ничего обещать не могу
если я правильно понял в чём проблема, то как вариант, добавить в окно диалога строку с найденным словом в контексте предложения со словами слева и справа в пределах 50 символов от найденого слова.

Ответить

Вернуться в «Demagog»