Action Title Translation

Автор eeigor, 12 июня 2021, 21:24

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

eeigor

Не совсем точный перевод наименования действия, которое может быть отменено через ThisComponent.UndoManager (com.sun.star.document.XUndoManagerListener):
en: "Clear Outline"
ru: "Очистить разметку"
В меню это соответствует команде: "Убрать структуру".

Если это имеет какое-то значение, конечно...
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

bormant

Remove Outline
Убрать структуру

Clear outline
Очистить структуру

Хотя, если это одно и то же действие, стоило бы и английское название менять...
Автору на яд. Поддержать форум.

eeigor

#2
Поменять надо соотв. русское наименование заголовка действия. По-английски всё верно везде, как и по-русски в меню.
Вот "Очистить разметку" следует заменить на "Убрать структуру".
Ну, да: Remove/Clear, не заметил... :)

@bormant, может и вряд ли кто с этим столкнётся, но я решал конкретную задачу, а именно изменение имени листа пользователем.
Так, в Excel, помимо имени листа и его номера, которые легко можно изменить, существует возможность обращения по "кодовому имени", т.е. напрямую (например, лист <shData> с именем "Лист2"). Насколько я знаю, в LO такой возможности нет. Значит, пользователь может переставить листы, изменить имя, как ему угодно. В этом случае надо перехватить событие действие "Rename Sheet"/"Переименовать лист", чтобы не нарушить работу программы.
Просто дополнительно проанализировал ряд других заголовков (titles) действий (с целью их перехвата и возможности некоторой реакции на них, когда это требуется).

Upd
Можно скрыть лист и не давать его показать, ведь здесь нет, в отличие от Excel, состояния листа "VeryHidden", когда отобразить лист можно только программными средствами.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Цитата: eeigor от 13 июня 2021, 12:36Насколько я знаю, в LO такой возможности нет.
Не совсем так. У листа документа Calc есть (неописанное?) свойство CodeName, которое не изменяется при переименовании листа (аналогично Excel).
Владимир.

eeigor

@sokol92, не хочу создавать отдельную тему (эта, в принципе, обсуждена), но приведите здесь пример кода. На самом деле это важный момент
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Есть подводные камни?

Sub testCodeName
  Dim oDoc
  oDoc=StarDesktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, Array())   ' новая книга Calc
  With ODoc.Sheets(0)
    .CodeName= "MyName"
    .Name="Новое имя"
    Msgbox  .CodeName & " - " & .Name
  End With
End Sub


LO 7.1.4.2
Владимир.

eeigor

  Спасибо. Нигде не встречал в примерах. Этим надо пользоваться. Правда, в Excel имя листу можно присвоить прямо в редакторе щелчком мыши по соотв. узлу дерева объектов.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

#7
И я не встречал в примерах.

Цитата: eeigor от 13 июня 2021, 17:21Excel имя листу можно присвоить прямо в редакторе
Зато не все знают, как изменить программным путем. :)
Владимир.

eeigor

#8
Да, это очень хорошо. Всё работает, как и предполагается. Этим надо пользоваться.
Это был маленький OFFTOPIС

Upd
Добавлю, что в Excel по кодовому имени можно обращаться непосредственно: это объектная ссылка.
Например: shName.Range("A1")
Здесь CodeName - это строка.
Поэтому пришлось реализовать простую функцию GetSheetByCodeName(), которая перебирает листы требуемой или активной (по умолчанию) электронной таблицы и возвращает ссылку на заданный лист по его кодовому имени. Это даёт больше свободы от действий пользователя: имена листов и их индексы (позиции) больше не имеют значения.
https://forum.openoffice.org/en/forum/viewtopic.php?f=9&t=72231&p=325120&hilit=CodeName#p325120

CodeName не задокументировано
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

sokol92

Документы тоже могут переименовывать в ходе одного сеанса LO. Поэтому для временного хранения информации о документе можно использовать RuntimeUID.
Владимир.