Язык текста по умолчанию

Автор dziglo, 10 мая 2023, 01:19

0 Пользователи и 1 гость просматривают эту тему.

dziglo

Здесь тоже поинтересовался вопросом изменения значения IsHyphAuto на true:
англоязычный форум

Видимо, не получится.

dziglo

Цитата: bigor от  7 июня 2023, 14:03Из Питоньяка
Листинг 230. Задаем простому документу Writer использование французских
региональных настроек.
Sub SetDocumentLocale
Dim aLocale As New com.sun.star.lang.Locale
aLocale.Language = "fr" 'Устанавливаем для локали использование
'французского языка
aLocale.Country = "FR" 'Устанавливаем для локали использование Франции
'в качестве страны
Dim oCursor 'Курсор используется для прохода по документу.
Dim oText 'Объект Текстовый документ
oText = ThisComponent.Text 'Документы Writer имеют Объект Text
oCursor = oText.createTextCursor() 'Создаем текстовый курсор
REM Перемещаем курсор в начало документа без выделения текста.
oCursor.GoToStart(False)
REM Перемещаемся в конец абзаца, выделяя весь абзац.
REM gotoNextParagraph() возвращает False, если он терпит неудачу.
Do While oCursor.gotoNextParagraph(True)
oCursor.CharLocale = aLocale 'Это может вызвать ошибку для некоторых
'типов абзаца
oCursor.goRight(0, False) 'Снимаем выделение всего текста
Loop
End Sub

Кстати, этот макрос Питоньяка как-то странно работает. Он делает французским весь текст, кроме последнего абзаца. У вас так же?

mikekaganski

Цитата: dziglo от 19 июня 2023, 11:22У вас так же?

Естественно. Если у Вас есть "последний" абзац (после которого нет пустого абзаца), то дойдя до него, следующий вызов gotoNextParagraph (для выделения его) вернёт false.
С уважением,
Михаил Каганский

dziglo

mikekaganski, вы не могли бы помочь?
Я решил эту галочку ставить макросом.


Макрос записал средствами OpenOffice (запись действий).

Вот он:

sub Abzac
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(3) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SetHyphenZone.Hyphen"
args1(0).Value = true
args1(1).Name = "SetHyphenZone.MinLead"
args1(1).Value = 2
args1(2).Name = "SetHyphenZone.MinTrail"
args1(2).Value = 2
args1(3).Name = "SetHyphenZone.MaxHyphens"
args1(3).Value = 0

dispatcher.executeDispatch(document, ".uno:SetHyphenZone", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "AttributeParaModel.Auto"
args2(0).Value = false
args2(1).Name = "AttributeParaModel.Name"
args2(1).Value = ""

dispatcher.executeDispatch(document, ".uno:AttributeParaModel", "", 0, args2())


end sub

Наверняка OpenOffice добавил лишний код. Как можно максимально сократить макрос (убрать лишнее), чтобы он был лаконичнее?

Кстати, у меня на LO почему-то нет пункта «Записать макрос». Такой пункт только в OOo.

mikekaganski

Цитата: dziglo от 20 июня 2023, 09:27Кстати, у меня на LO почему-то нет пункта «Записать макрос». Такой пункт только в OOo.
С уважением,
Михаил Каганский

sokol92

#50
Цитата: dziglo от 20 июня 2023, 09:27Как можно максимально сократить макрос (убрать лишнее), чтобы он был лаконичнее?
Есть какой-то налог на длину макроса?  :)
Практичнее всего в подобных случаях оставить макрос как есть, если Вас устраивает результат его действия.
Альтернатива - глубого изучать UNO-модель (срок - от 3 дет до "бесконечности").
MRI подсказывает, что, например, свойство обозначенное на Вашей картинке как "Минимальная длина слова в символах", имеет имя ParaHyphenationMinWordLength
Кстати, появилось это свойство в LO версии 7.4, поэтому, когда Вы записывали макрос в Open Office, свойство со значением 4 Вы не увидите. Если записать тот же макрос в LO (c учетом новых знаний о настройках), то "загадочное" свойство появится.
Владимир.

dziglo

Цитата: sokol92 от 20 июня 2023, 14:45
Цитата: dziglo от 20 июня 2023, 09:27Как можно максимально сократить макрос (убрать лишнее), чтобы он был лаконичнее?
Есть какой-то налог на длину макроса?  :)
Практичнее всего в подобных случаях оставить макрос как есть, если Вас устраивает результат его действия.
Альтернатива - глубого изучать UNO-модель (срок - от 3 дет до "бесконечности").
MRI подсказывает, что, например, свойство обозначенное на Вашей картинке как "Минимальная длина слова в символах", имеет имя ParaHyphenationMinWordLength.
Кстати, появилось это свойство в LO версии 7.4, поэтому, когда Вы записывали макрос в Open Office, свойство со значением 4 Вы не увидите. Если записать тот же макрос в LO (c учетом новых знаний о настройках), то "загадочное" свойство появится.


Налога, конечно нет) В принципе, можно и так оставить. Я макрос буду помещать в oxt-файл.
Просто хотел «лишнее» убрать.