LibreOffice ライターを使用すると、ユーザーはテキスト内に注釈 (メモ/コメント) を挿入できます。
私の問題は、行固有の注釈の内容にアクセスする方法が見つからないことです。
次の Python コードは、選択/強調表示されたテキストを検索し、フォーマットされたタイム コード (01:10:23 または 11:10 など) を除くすべてを取り除き、秒に変換します。
テキストが選択されていない場合は、現在の行全体を選択し、タイム コードを見つけようとします。ただし、タイム コードは注釈に含まれる場合があります。
ドキュメント内のすべての注釈のリストを取得し、コードの先頭でコメントアウトしましたが、役に立ちません。
私は占いの方法を発見することができませんでした
a) 現在の行に注釈があるかどうか、または
b) その内容にアクセスする方法。
誰かがこれを達成できた場合は、ポインタをいただければ幸いです。
def fs2_GoToTimestamp(*args):
#get the doc from the scripting context which is made available to all scripts
desktop = XSCRIPTCONTEXT.getDesktop()
model = desktop.getCurrentComponent()
oSelected = model.getCurrentSelection()
#access annotations for the whole document
# oEnum = model.getTextFields().createEnumeration()
# cursor = desktop.getCurrentComponent().getCurrentController().getViewCursor()
# while oEnum.hasMoreElements():
# oField = oEnum.nextElement()
# cursor.gotoRange(oField,False)
# print (cursor.getPosition())
# if oField.supportsService('com.sun.star.text.TextField.Annotation'):
# print (oField.Content)
# x = oField.getAnchor()
# print (dir(x))
oText = ""
try: #Grab the text selected/highlighted
oSel = oSelected.getByIndex(0)
oText= oSel.getString()
except:pass
try:
if oText == "": # Nothing selected grab the whole line
cursor = desktop.getCurrentComponent().getCurrentController().getViewCursor()
cursor.gotoStartOfLine(False) #move cursor to start without selecting (False)
cursor.gotoEndOfLine(True) #now move cursor to end of line selecting all (True)
oSelected = model.getCurrentSelection()
oSel = oSelected.getByIndex(0)
oText= oSel.getString()
# Deselect line to avoid inadvertently deleting it on next keystroke
cursor.gotoStartOfLine(False)
except:pass
time = str(oText)
valid_chars=('0123456789:')
time = ''.join(char for char in time if char in valid_chars)
if time.count(":") == 1:
oM, oS = time.split(":")
oH = "00"
elif time.count(":") == 2:
oH,oM,oS = time.split(":")
else:
return None
if len(oS) != 2:
oS=oS[:2]
try:
secs = int(oS)
secs = secs + int(oM) * 60
secs = secs + int(oH) *3600
except:
return None
seek_instruction = 'seek'+str(secs)+'\n'
#Now do something with the seek instruction