Witam w kolejnej części cyklu o ARexxie. Jako pierwszy wziąłem pod lupę program, bez którego nie wyobrażam sobie amigowego desktopu, czyli Directory Opus Magellan w wersji 5.82. Ale jeszcze nieco tytułem wstępu. W poprzedniej części podałem zestaw funkcji i poleceń wbudowanych w systemowego ARexxa. Wspomniałem również, że tych funkcji czy poleceń może być zdecydowanie więcej. W tym momencie wypada tu wspomnieć, że powiększenia ilości dostępnych funkcji i komend ARexxowych można dokonać dwojako:
Przy okazji omawiania portu ARexxa w jaki wyposażony jest Magellan, ograniczam się do wariantu pierwszego.
Wracając do Opusa. Magellan posiada bardzo bogaty zestaw funkcji/poleceń Arexxowych. Podzielone są one na 3 grupy:
+ command all + command wait copy + command read s:startup-sequence + command original wait delete ram:#?
Uruchomiając Directory Opusa wszystkie w/w polecenia mamy oczywiście natychmiast dostępne i gotowe do wykorzystania. Szczegóły dotyczące tych poleceń, konieczne argumenty, zawarte są oczywiście w podręczniku dostarczanym razem z programem. Z pomocą kilku "automagicznych" sztuczek postaram się pokazać jak te polecenia używać.
Najprostsza "automagiczna" sztuczka polega na wykorzystaniu Dopusowego okna CLI. Otwieramy je przez menu w belce tytułowej Opusa i otrzymujemy okienko jak poniżej:
Proponuję teraz wklepać w konsolce: np.
+ lister new Sys: + lister new Ram:
a następnie:
+ lister close all
(Każdą linijkę oczywiście akceptujemy za pomocą klawisza Enter). Jako rezultat powyższych 3 linijek zostały otwarte (bez użycia myszy!) dwa niezależne listery z zadanymi katalogami, po czym zostały one zamknięte.
Inny przykładowy ciąg poleceń:
+ dopus screen + dopus query background desktop + dopus getstring 'Prosze wpisać tekst:'"" Okay...|Też okay... + command read s:startup-sequence
A jak wykorzystać takie małozłożone i proste polecenia Arexxa w Magellanie? Proste:
AmigaDOS rx "address DOPUS.1 'jakakolwiek_komenda_ARexxowa'"
Drugi, bogatszy sposób wykorzystania Opusowego ARexxa polega na napisaniu prostego ARexxowego skryptu, np.:
/* ListerSelect.dopus5 */ options results /* umożliwia przekazywanie zmiennych do skryptu */ address 'DOPUS.1' /* odwołanie do aktywnego portu DOpusa */ dopus front /* ustawia ekran Magellana jako roboczy / lister new "RAM:T" /* Otwiera nowego listerka RAM:T */ handle = result /* Zapisuje numer identyfikacyjny listerka */ lister wait handle /* Czeka na zwolnienie listera */ lister select handle #? on /* Oznacza katalog T w listerze */ lister refresh handle /* Odświeża listera tak by zobaczyć że katalog T został wybrany */ address command wait 3 /* Czeka 3 sekundy */ lister select handle #? off /* Katalog T: przestaje być wybranym */ lister refresh handle /* Odświeża listera tak by pokazać że katalog T: nie jest wybrany */ address command wait 3 /* Czeka 3 sekundy */ lister close handle /* Zamyka lister */ exit /* Zakończenie skryptu */
Zapisujemy powyższy skrypt do RAM: pod nazwą ListerSelect.dopus5, nadajemy mu bit protekcji +S poprzez:
protect +S RAM:ListerSelect.dopus5
po czym uruchamiamy go z konsoli CLI poprzez:
RAM:ListerSelect.dopus5
Mała dygresja: zwyczajowo skrypty ARexxa zawierają w swej nazwie rozszerzenie .rexx, ale dla odróżnienia skryptów wykorzystujących jakieś dodatkowe funkcje programowe, przyjmuje się i inne rozszerzenia. W przypadku Dopusa Magellana jest to rozszerzenie .dopus5.
Trzeci, najbardziej rozwinięty sposób wykorzystania Arexxowych komend Dopusa polega na utworzeniu bardziej rozbudowanych skryptów, zwanych modułami, które to moduły po uruchomieniu udostępniają gotowe do wykorzystania komendy, widziane tak jak każde inne polecenia Dopusa. Z uwagi na fakt że wymagają one nieco głębszej znajomości ARexxa być może pozwolę sobie je omówić w którymś z póżniejszych odcinków. Na zachętę jednak przedstawiam poniżej prosty przykładowy moduł Arexxowy dla Magellana, dodający funkcję zamykajacą wszystkie otwarte listery (skrypt dostępny do pobrania stąd):
/* $VER: ZamknijListery.dopus5 1.0 (10.01.2007) Zamyka otwarte listery Magellana. */ PARSE ARG PORTNAME FUNCTION SOURCE DEST ARGUMENTS . OPTIONS RESULTS ADDRESS DOPUS.1 IF FUNCTION = 'init' THEN DO DOPUS COMMAND "ZamknijListery" PROGRAM "ZamknijListery" DESC "'Zamyka otwarte listery'" EXIT END LISTER CLOSE ALL DOPUS REQUEST '"Uff, wszystkie listery zamknięte..."' "" Ok ADDRESS COMMAND "C:Say -a polski -s225 Uff, wszystkie listery zamknięte!" EXIT
Po skopiowaniu skryptu pod nazwą ZamknijListery.dopus5 do katalogu DOpus5:Modules, w zestawie dostępnych komend pojawi nam się polecenie ZamknijListery. Proponuję je podpiąć np. pod klawisz ESC. (Coś dla fanów Magellana: istnieje prostszy sposób niż powyższy na utworzenie nowego, wewnętrznego polecenia Magellana zamykającego listerki. Jaki?)
Tradycyjnie na podsumowanie gorąco zachęcam tak do samego Opusa Magellana jak i zaznajomienia się z jego poleceniami ARexxowymi. Gotowe skrypty ARexxowe Dopusa dostępne są oczywiście na Aminecie w katalogu: http://aminet.de/biz/dopus.
Interesujące skrypty dla Magellana można również znaleźć na stronie: http://www.shiftreload.com.au/users/4x4/ARexxD.html. Myślę, że warto co niektóre z nich przynajmniej przeanalizować. Swego czasu GPSoftware, autorzy Magellana, wydawali komercyjną płytkę CD o tytule "DOpusPlus CD", zawierającą rozszerzające informacje dla ambitniejszych użytkowników Magellana. Nieco więcej informacji o zawartości płytki można znaleźć tutaj.
A na deser proponuję ponownie otworzyć okno CLI DOpusa i wklepać w konsoli po prostu:
Help me Eliza!
Obudzi się wtedy w Magellanie kobieta, czyli innymi słowy sztuczna inteligencja! Jest bezpruderyjna i otwarta na wszystkie pytania!
Miłej zabawy w oczekiwaniu na kolejny odcinek na temat ARexxa.