• Arexx w praktyce - część 2: Directory Opus Magellan

28.01.2007 08:48, autor artykułu: Dariusz Gac
odsłon: 5771, powiększ obrazki, wersja do wydruku,

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:

  • przez uruchomienie jakiegoś programu dysponującego tzw. portem Arexxa (i wykorzystać polecenia ARexxowe tego programu),
  • przez otwarcie jakiejś ARexxowej zewnętrznej bilbioteki zawierającej w sobie gotowe polecenia Arexxa (zupełnie niezależne od jakichkolwiek programów).

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:

  • komendy generalnego przeznaczenia:
    • dopus addappicon
    • dopus addtrap
    • dopus back
    • dopus checkdesktop
    • dopus clear
    • dopus command
    • dopus desktoppopup
    • dopus error
    • dopus front
    • dopus getdesktop
    • dopus getfiletype
    • dopus getstring
    • dopus matchdesktop
    • dopus progress
    • dopus query
    • dopus read
    • dopus refresh
    • dopus remappicon
    • dopus remtrap
    • dopus request
    • dopus script
    • dopus screen
    • dopus send
    • dopus set
    • dopus setappicon
    • dopus version
  • komendy do obsługi listerów Opusowych:
    • lister add
    • lister addstem
    • lister copy
    • lister clear
    • lister clearcaches
    • lister close
    • lister empty
    • lister findcache
    • lister getstring
    • lister iconify
    • lister new
    • lister query
    • lister read
    • lister refresh
    • lister reload
    • lister remove
    • lister request
    • lister set
    • lister select
    • lister wait
  • komendy, które się zachowują dokładnie tak jak zwykłe komendy Directory Opusa, wykorzystywane w skryptach AmigaDOS, przykładowo:
    + 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:

DopusCli

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'"

DopusEdit

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.

 głosów: 1   
komentarzy: 2ostatni: 10.08.2008 00:19
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem