Edycja menu kontekstowego

Użytkowanie edytora dokumentów
Judykator
Posty: 38
Rejestracja: sob sty 12, 2013 5:19 pm

Edycja menu kontekstowego

Post autor: Judykator »

Czy da się coś dołożyć do menu kontekstowego Writera (pod prawym przyciskiem myszy). Konkretnie chciałbym tam dodać polecenie wstawienia zakładki.
LibreOffice 4.13
Awatar użytkownika
Astur
Posty: 654
Rejestracja: wt lip 13, 2010 9:11 am

Re: Edycja menu kontekstowego

Post autor: Astur »

Przypuszczam, że jest to niemożliwe.
Wstaw sobie stosowny przycisk do paska narzędzi formatowania.
Ubuntu 20.04 — OpenOffice 4.1.10
Zanim zastosujesz się do jakiejś rady, zrób kopię zapasową dokumentu, którego ona ma dotyczyć.
Wskazówka: w dokumentach używam czasem niestandardowych, bezpłatnych czcionek Gentium i Lato
Judykator
Posty: 38
Rejestracja: sob sty 12, 2013 5:19 pm

Re: Edycja menu kontekstowego

Post autor: Judykator »

Astur pisze: Wstaw sobie stosowny przycisk do paska narzędzi formatowania.
To mam, ale wygodniej byłoby po zaznaczeniu tekstu nie jechać myszą do góry, tylko PPM. Ale jak nie można to nie można.
LibreOffice 4.13
Jan_J
Posty: 4580
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Edycja menu kontekstowego

Post autor: Jan_J »

Myślę, że się da, ale trzeba programować, co najmniej na poziomie makra. Są nawet wskazówki dla chętnych: https://wiki.openoffice.org/wiki/Docume ... text_Menus.
Jak widać, pewna początkowa wiedza i motywacja są niezbędne, żeby podjąć wysiłek.
JJ
LO (24.2|7.6) ∙ Python (3.12|3.11|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Edycja menu kontekstowego

Post autor: belstar »

Zmodyfikowane programowo (basic) menu kontekstowe, procedura uruchamiana przy starcie dokumentu i zatrzymywana przy zamykaniu.

Edit:
Zamiana załącznika na lepszą wersje.
Załączniki
Modyfikuj_Context_Menu.odt
(21.43 KiB) Pobrany 214 razy
LibreOffice 5.1.2.2 Ubuntu 16 LTS
Judykator
Posty: 38
Rejestracja: sob sty 12, 2013 5:19 pm

Re: Edycja menu kontekstowego

Post autor: Judykator »

A może taka modyfikacja. By zaznaczenie było tylko domyślną nazwą zakładki (wstawianą do okna o którym mowa dalej ) ale generalnie żeby otwierało się okno gdzie można wpisać własną nazwę. Może to być okno "Wstaw zakładkę".
LibreOffice 4.13
belstar
Posty: 654
Rejestracja: czw mar 17, 2011 9:08 am

Re: Edycja menu kontekstowego

Post autor: belstar »

Myślałem, widać źle, że ta wersja będzie najlepsza i stąd mój wybór, ale do twoich potrzeb wszystko masz już w pliku. Cała zabawa polega na zmianie nazw procedur wstawiających zakładkę. W module 2 masz dwie dodatkowe procedury o nazwach WriterBookmark_test i WriterBookmark_test1, pierwsza nie działa tak jak powinna ale druga jest OK. Kolejne kroki do wykonania to:
1. Otwórz edytor basic - Narzędzia -> Makra -> Zarządzaj makrami -> OpenOffice Basic (LibreOffice Basic).
2. Zaznacz modył2 i wciśnij edytuj
3. W lini sub WriterBookmark_test1 usuń _test1 tak by pozostało sub WriterBookmark.
4. Przejdź do miodułu3 (zakładki na dole jak w calcu).
5. W lini Sub WriterBookmark (pierwsza linia kodu) dopisz coś np. 1 (Sub WriterBookmark1 - po modyfikacji).
To już wszystko zapisz zmiany i wypróbuj działanie na dokumencie. tak wstawiona zakładka będzie nosić nazwę zakładka1, jeśli już takiej nie ma a kolejne zakładka11, zakładka12. itd

Co do własnej nazwy (okienko do wpisania nazwy) to z wywołaniem oryginalnego okienka mam problem (nie znam sposobu). Pewnym rozwiązanie może być użycie funkcji basica InputBox(). Cała procedura WriterBookmark Może wyglądać tak:

Kod: Zaznacz cały

sub WriterBookmark
	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(0) as new com.sun.star.beans.PropertyValue
	args1(0).Name = "Bookmark"
	Nazwa = InputBox("Wpisz nazwę nowej zakładki", "Nazwa zakładki", "Zakładka1")
	If nazwa = "" then Exit Sub
	args1(0).Value = Nazwa
	dispatcher.executeDispatch(document, ".uno:InsertBookmark", "", 0, args1())
end sub
LibreOffice 5.1.2.2 Ubuntu 16 LTS
ODPOWIEDZ