Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Użytkowanie edytora dokumentów
vitred
Posty: 5
Rejestracja: sob sty 20, 2018 2:30 pm

Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: vitred »

[SOLVED] Witam,
w tym co robię obracam się jednocześnie w trzech językach: polskim, rumuńskim i esperanto. Nie chcę ciągle przełączać się między językami, tylko co jakiś czas wstawić litery charakterystyczne dla danego języka (np. dla polskiego: ąęćłńóśźż). Widzę to tak,że kombinacja np.3 klawiszy wstawia litery z których usuwam niepotrzebne, a pozostałą zostawiam. W microsoft word miałem takie coś. Czy ktoś może pomóc?
Ostatnio zmieniony ndz maja 06, 2018 12:11 am przez vitred, łącznie zmieniany 1 raz.
LibreOffice 5.4.4.2 Windows10
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: Jan_J »

Wydaje mi się, że najprościej będzie zdefiniować tzw. autoteksty. Dla każdego języka osobny.
We Writerze wywołanie autotekstu następuje po wciśnięciu sekwencji aktywującej + F3.
Na przykład predefiniowany szablon numerowanego równania dostaniesz przez fn<F3>
W tym przypadku zdefiniowałbym autotekst pl o treści ąćęłńóśźż itp.

Napisz treść do wstawiania automatycznie, zaznacz ją i potem
Edycja -> Autotekst -> wpisz nazwę i id. [v] Nowy
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2238
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: Jermor »

Jeśli rzeczywiście zależy ci tylko na możliwości wstawienia zestawu charakterystycznych liter z alfabetu rumuńskiego lub esperanto, to przygotowałem w Basicu cztery makra, które to umożliwią. Pominąłem język polski bo tu korzystasz z prawego klawisza ALT.
Cztery, bo są dwa języki a w każdym możesz chcieć wstawić litery wielkie albo małe.
Przekopiuj makra do biblioteki "Standard" modułu "Module1" w lokalizacji "Moje makra". Dzięki temu będą one dostępne w każdym dokumencie na tym komputerze. Makra mają nazwy wr - litery wielkie rumuńskie mr- litery małe rumuńskie, we - litery wielkie esperanto i me- litery małe esperanto.
Skopiuj cały kod i go tam wklej.

Następnie przypisz im skróty klawiaturowe. Proponuję ALT+R - rumuńskie małe, ALT+SHIFT+R - rumuńskie wielkie, ALT+E - esperanto małe i ALT+SHIFT+E esperanto wielkie. W tych skrótach ALT jest lewym klawiszem ALT (w prawym "E" jest już obsadzone dając "ę" albo "Ę").
To zrobisz wybierając "Narzędzia -> Dostosuj... -> Klawiatura". W tej zakładce w części "Kategoria" przewiń widok w dół aż zobaczysz pozycję "Makra LibreOffice" rozwiń ją i znajdź lokalizację "User" (czasem nazwa "Moje makra" nie jest przetłumaczona). Rozwiń "User" i znajdź "Standard" a w nim "Module1". Po zaznaczeniu "Module1" obok w obszarze "Funkcja" zobaczysz nazwy makr. Teraz w górnej części wskaż wymagana kombinację klawiszy i naciśnij "Modyfikuj". Jeśli się pomyliłeś możesz kliknąć "Usuń". Przypisując skróty możesz jeszcze wybrać czy będą one dotyczyły całego pakietu czy tylko Writera.
Oto potrzebny zestaw instrukcji:

Kod: Zaznacz cały

rem definicja stałych l-litery, r -rumuńskie, e -esperanto, w - wielkie, m- małe
const lrw="ĂÂÎŞŢ"
const lrm="ăâîşţ"
const lew="ĈĜĤĴŜŬ"
const lem="ĉĝĥĵŝŭ"
sub wr
rem litery rumuńskie wielkie
Dim oDoc As Object
Dim oText As Object
Dim oVCurs As Object
Dim oTCurs As Object
oDoc = ThisComponent
oText = oDoc.Text
oVCurs = oDoc.CurrentController.getViewCursor()
oTCurs = oText.createTextCursorByRange(oVCurs.getStart())
oText.insertString(oTCurs, lrw & " ", FALSE)
end sub
sub mr
rem litery rumunskie małe
Dim oDoc As Object
Dim oText As Object
Dim oVCurs As Object
Dim oTCurs As Object
oDoc = ThisComponent
oText = oDoc.Text
oVCurs = oDoc.CurrentController.getViewCursor()
oTCurs = oText.createTextCursorByRange(oVCurs.getStart())
oText.insertString(oTCurs, lrm & " ", FALSE)
end sub
sub we
rem litery esperanto wielkie
Dim oDoc As Object
Dim oText As Object
Dim oVCurs As Object
Dim oTCurs As Object
oDoc = ThisComponent
oText = oDoc.Text
oVCurs = oDoc.CurrentController.getViewCursor()
oTCurs = oText.createTextCursorByRange(oVCurs.getStart())
oText.insertString(oTCurs, lwe & " ", FALSE)
end sub
sub me
rem litery esperanto małe
Dim oDoc As Object
Dim oText As Object
Dim oVCurs As Object
Dim oTCurs As Object
oDoc = ThisComponent
oText = oDoc.Text
oVCurs = oDoc.CurrentController.getViewCursor()
oTCurs = oText.createTextCursorByRange(oVCurs.getStart())
oText.insertString(oTCurs, lme & " ", FALSE)
end sub
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
vitred
Posty: 5
Rejestracja: sob sty 20, 2018 2:30 pm

Re: Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: vitred »

Bardzo dziękuję za szybkie odpowiedzi na mój problem.

Jeżeli chodzi o odp. 1 od Jan_J to znalazłem autotekst w moim writerze w zakładce Narzędzia->Autotekst... (Ctrl+F3), ale nie wiem jak tam wstawić jakiś tekst ?
I nie rozumiem ciągu:i id. [v] Nowy ???

Jeżeli chodzi o odp. 2 od Jermor - to wykonałem wszystkie czynności i sukces jest tylko połowiczny, tzn. działają litery rumuńskie małe i wielkie, a nie działają litery w jęz.esperanto na skrótach klawiszowych ALT+E i ALT+SHIFT+E; przy czym kombinacja klawiszy ALT+E rozwija zawartość zakładki Edycja (Plik Edycja Widok ...itd.) na pasku w moim writerze. (naturalnie lewy ALT)
Dobre i tyle. Dzięki!
LibreOffice 5.4.4.2 Windows10
Jan_J
Posty: 4558
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: Jan_J »

Nowy autotekst robi się tak:
wpisujesz blablabla do dokumentu, zaznaczasz, wywołujesz dialog zarządzania autotekstami (Narzędzia/Auteotekst). Zaznaczasz ze chodzi o nowy wpis (na dole dialogu), nadajesz mu nazwę i skrót do wywołania.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Jermor
Posty: 2238
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: Jermor »

No tak, zapomniałem, że "E" jest przypisane do lewego altu przy wywoływaniu poleceń menu z klawiatury. Ale możesz sobie przypisać inną literę np.obok "R" jest "T". Te litery w liście poleceń menu, które są podkreślone, są przypisane do skrótu ALT+litera (ALT oczywiście lewy) aby móc wywołać polecenia gdy nie ma myszki.
Ponadto poprawiając kod zostawiłem dwie literówki, które powinieneś poprawić, bo przez to nie są wstawiane litery z esperanto.
jest const lew="ĈĜĤĴŜŬ" powinno być const lwe="ĈĜĤĴŜŬ"
jest const lem="ĉĝĥĵŝŭ" powinno być const lme="ĉĝĥĵŝŭ"
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
Awatar użytkownika
Jermor
Posty: 2238
Rejestracja: sob paź 12, 2013 11:09 am
Kontakt:

Re: Jak zrobić makro żeby wstawiać ciąg edytowalnych liter?

Post autor: Jermor »

Jeśli chodzi o sposób Jana_J. Jest oczywiście bdb bo nie trzeba pisać makra. Zasada działania jest taka, że po wpisaniu przypisanego skrótu i naciśnięciu klawisza F3 zostanie wstawiona treść autotekstu. Obsługa autotekstu to polecenie "Edycja -> Autotekst..." albo skrót klawiaturowy CTRL+F3.
O autotekście więcej możesz poczytać tutaj: https://yestok.pl/ooo/y51.php
[uzupełnienie] "Edycja -> Autotekst..." w wersji 5.3.7, "Narzedzia -> Autotekst..." od wersji 5.4
AOO 4.1.15, LO 7.5.9 (x64) na Windows 10 64bit
Ważne!
Jeśli twój problem został rozwiązany, wróć do swojego pierwszego postu, przejdź do edycji i dopisz [SOLVED] w temacie.
Inni, którzy mają podobny problem, będą wiedzieli, że istnieje jego rozwiązanie.
vitred
Posty: 5
Rejestracja: sob sty 20, 2018 2:30 pm

[SOLVED]Jak zrobić makro żeby wstawiać ciąg edytowalnych lit

Post autor: vitred »

Wielkie dzięki! No świetnie wszystko działa! Ale, ale...Wersja przez Audiotekst także bardzo się przydaje do wstawiania stałych elementów tekstu.
Jestem już po 60 i coraz trudniej uczyć się nowych rzeczy. To duże ułatwienie dla mnie. Jeszcze raz dzięki dla obu Panów!
LibreOffice 5.4.4.2 Windows10
ODPOWIEDZ