DirectoryOpus - część 8 z 10
Jarosław Horodecki
Wersja HTML - 
W poprzednim odcinku definitywnie zakończyliśmy
zapoznawanie się ze wszystkimi podstawowymi funkcjami samego
DOpusa, jak i jego programu konfiguracyjnego. Dzisiaj zajmiemy
się chyba nieco ciekawszymi problemami, w rozwiązaniu których
wykorzystamy poznaną dotychczas wiedzę.
W dzisiejszym odcinku proponuję zaprojektować kilka nowych
komend, które normalnie w DOpusie nie występują, a jak się
okazuje, czasem mogą być dość przydatne. Skorzystamy tutaj
oczywiście z możliwości definiowania własnych gadżetów, czy też
przycisków (ang. buttons). Dokładne informacje na temat sposobu
ich definiowania z pewnością już mamy, wszak zdefiniowaliśmy już
wspólnie pełną obsługę archiwizerów. Teraz więc powinno pójść już
bardzo szybko.
Na pierwszy ogień pójdą dwie komendy, dzięki którym ułatwimy
sobie obsługę archiwów, spakowanych DiskMasherem (pliki te mają
rozszerzenie DMS). Bedą to więc komendy DMS oraz UnDMS.
Korzystanie z DMS-a nie jest takie trudne, więc również
zdefiniowanie odpowiedniej komendy dla DOpusa nie powinno sprawić
większych problemów. Istnieje wprawdzie wersja okienkowa tego
programu, nie wszystkim jednak ona odpowiada. Poza tym
umieszczenie odpowiednich opcji w samym DOpusie może w dużym
stopniu ułatwić pracę z tego rodzaju archiwami.
DiskMasher w wersji commandline (czyli do wykorzystania z poziomu
CLI) daje możliwość korzystania z wielu opcji. My jednak, jak to
już wspomniałem, zajmiemy się tylko pakowaniem dysku znajdującego
się w napędzie DF0: lub też rozpakowaniem pliku na dysk w tym
napędzie. Służą do tego komendy READ oraz WRITE. W pierwszym
wypadku należy jeszcze użytkownikowi umożliwić podanie nazwy
pliku docelowego. W drugim DOpus musi rozpakować wskazany w
okienku katalogowym plik. To tyle potrzebnych informacji o samym
DMS-ie. Teraz możemy powrócić do DOpusa.
Aby zdefiniować naszą komendę, przechodzimy oczywiście do
programu konfiguracyjnego, w którym wybieramy opcję BUTTONS. Gdy
ukaże się plansza przedstawiająca ustawienie przycisków na
ekranie DOpusa, należy kliknąć nad wybranym przyciskiem, co
spowoduje przeniesienie do ekranu definicji własnej komendy.
Pierwszą czynnością będzie tutaj wpisanie nazwy dla gadżetu oraz
ustalenie koloru. Na początek zdefiniujemy pakowanie dysków,
naszą komendę nazwiemy więc po prostu DMS. Ustawienie kolorów nie
ma tu większego znacznia. Druga rzecz to definicja ewentualnej
kombinacji klawiszy, jaka będzie wywoływać nową komendę.
Przyporządkowanie to nie jest jednak konieczne. Najważniejsza
sprawa to odpowiednia komenda AmigaDOS-u, której wywołanie
spowoduje spakowanie dysku, znajdującego się w napędzie DF0:
(standardowe ustawienie DMS-a). W naszym wypadku będzie to
następująca linijka:
DMS Read "{RsEnter the Name of the DMS file}"
Typ tej komendy to oczywiście AmigaDOS. Należy o tym pamiętać.
Komenda {Rs} spowoduje tutaj otwarcie okienka, oczekującego na
podanie nazwy pliku docelowego. W okienku tym zostanie również
wyświetlony podany tekst. Po wpisaniu komendy pozostaje jeszcze
tylko ustawić odpowiednie znaczniki. Po pierwsze trzeba więc
gdzieś skierować podawane przez DMS-a informacje. Ustawimy więc
znacznik OUTPUT WINDOW, aby wszystkie dane pojawiły się w
otwartym przez DOpusa okienku. Drugie niezbędne ustawienie to CD
SOURCE, potrzebne, aby plik docelowy znalazł się w aktualnie
aktywnym katalogu.
Mamy więc już wykonaną połowę zadania. Pozostaje jeszcze
zdefiniowanie komendy UnDMS. Postąpimy bardzo podobnie jak w
poprzednim wypadku, definiując kolejno nazwę, kolory, ewentualne
klawisze. W ustawieniu znaczników skorzystamy jednak już tylko z
OUTPUT WINDOW. Jedyna większa zmiana dotyczy oczywiście samej
komendy AmigaDOS-u, z jakiej musimy skorzystać. Nasza linijka
będzie więc tym razem wyglądała tak:
DMS Write {f}
Opcja {f} oznacza tutaj po prostu skorzystanie z zaznaczonego w
oknie katalogu pliku, jako archiwum DiskMashera przeznaczonego do
rozpakowania. Teraz wystarczy już tylko zgrać na dysk
konfigurację wzbogaconą o dwie nowe komendy.
Mamy już więc gotowe pakowanie oraz rozpakowywanie dyskietek.
Kolejne komendy, o jakie wzbogacimy DOpus, służyć będą prostej i
szybkiej zmianie pewnych parametrów pracy tego programu.
Stworzymy mianowicie komendy służące do zmieniania sposobu
sortowania zawartości urządzenia wyświetlanego w aktywnym oknie
katalogowym. Normalnie można to zrobić jedynie poprzez zmianę
konfiguracji DOpusa. Można jednak zdefiniować komendy, które
zmianę taką wykonają natychmiast. Nazwiemy je odpowiednio SORT
DATE, SORT NAME oraz SORT SIZE
kolejno dla sortowania według daty, nazwy lub rozmiaru plików.
Początek definicji każdego z tych gadżetów jest taki sam jak
zawsze. Wybieramy wybraną pozycję, określamy nazwę, kolor,
przyporządkowaną kombinację klawiszy. W wypadku naszych nowych
komend nie jest konieczne ustawianie żadnych znaczników.
Wystarczy więc skupić się na wpisaniu odpowiedniej komendy.
Skorzystamy tutaj z wewnętrznych komend DOpusa, o których
stosunkowo niewiele pisałem. Postaram się ten błąd wkrótce
naprawić.
Wróćmy jednak do naszych trzech komend. Aby je zdefiniować,
należy skorzystać z dwóch wewnętrznych komend DOpusa. Pierwsza z
nich to MODIFY. Umożliwia ona dokonywanie bezpośrednich zmian
niektórych opcji programu, jakie normalnie mogą być zmieniane
jedynie z poziomu programu konfiguracyjnego. Druga komenda to
SORTMETHOD, pozwalająca na określenie właśnie sposobu sortowania
plików w oknach. Parametrem komendy MODIFY jest właśnie
SORTMETHOD, która z kolei występuje z dwoma parametrami
liczbowymi.
Pierwszy z nich określa, w którym oknie zmieniamy
sposób sortowania:
1 -- aktywnym,
0 -- lewym,
1 -- prawym.
Drugi natomiast to sposób sortowania plików:
0 -- nazwa,
1 -- wielkość,
2 -- bity,
3 -- data,
4 -- komentarz,
5 -- typ pliku.
Teraz możemy już spokojnie zdefiniować odpowiednie komendy.
Oczywiście w trybie COMMANDS wpisujemy do kolejnych definiowanych
przez nas przycisków następujące polecenia:
Modify Sortmethod -1 3 -- dla sortowania według daty (SORT DATE);
Modify SortMethod -1 0 -- dla sortowania według nazwy (SORT NAME);
Modify SortMethod -1 1 -- dla sortowania według wielkości (SORT SIZE).
Aby natychmiast otrzymać katalog już odpowiednio posortowany,
należy jeszcze skorzystać z wewnętrznej komendy DOpusa -- RESCAN,
powodującej odczytanie katalogu w aktywnym w danym momencie
okienku. W ten prosty i, co równie ważne, szybki sposób udało nam
się zdefiniować kolejne trzy, dość ciekawe, komendy Directory
Opusa. Nie spoczniemy jednak na laurach i bierzemy się za
tworzenie kolejnych.
Gdy już jesteśmy przy sortowaniu, warto chyba stworzyć komendę,
której zadaniem będzie sortowanie plików. Czynność ta polega
oczywiście na alfabetycznym ułożeniu kolejnych linijek tekstu w
danym pliku. Standardowo w systemie jest ona realizowana przez
jedną komendę SORT. Komenda ta ma też kilka parametrów, z których
jendak chwilowo nie będziemy korzystać. Zajmijmy się na razie
samym DOpusem.
Jak zwykle przechodzimy więc do programu konfiguracyjnego i
definiowania własnych przycisków, gdzie z kolei wybieramy wolny
jeszcze gadżet. Ustalamy nazwę (proponuję po prostu SORT) oraz
kolor gadżetu. Teraz przyszła kolej na odpowiednią instrukcję
AmigaDOS-u:
Sort {fu} {s}{RsEnter Name to Save Sorted File}
Instrukcja {fu} to po prostu podanie instrukcji sort,
zaznaczonego przez użytkownika pliku (tylko pierwszego z listy),
{s} to pełna scieżka aktywnego okna katalogowego, {Rs} natomiast
to instrukcja otwierająca okienko, oczekujące na wpisanie nazwy
pliku docelowego. Jak więc widać, nasza instruckja stworzy nowy
plik o podanej przez użytkownika nazwie, będący posortowaną wesją
pliku źródłowego.
Dzięki dodatkowym możliwościom komendy SORT można w pewnym
stopniu rozbudować działanie naszej komendy sortującej. Nie jest
mianowicie konieczne sortowanie według pierwszego znaku z linii.
Komenda SORT może równie dobrze zaczynać analizę kolejnych
wierszy pliku od dowolnie wybranej kolumny. Służy do tego komenda
COLSTART, po której musimy podać numer kolumny, od której chcemy
sortować. Po tej drobnej modyfikacji nasza linijka będzie więc
wyglądać w następująco:
Sort {fu} {s}{RsEnter Name to Save Sorted File} COLSTART {RsColumn Number}
Dzięki takiemu rozwiązaniu uzyskujemy niemalże pełnowartościową
komendę SORT, działającą z poziomu Directory Opusa.
Na koniec tej części naszego cyklu zostawiłem chyba
najtrudniejszą do zdefiniowania komendę, wymagającą znajomości
kilku nowych wewnętrznych rozkazów DOpusa. Będzie to alternatywna
wobec standardowej komenda ICONIFY, czyli usypiająca DOpusa, ale
pozostawiająca na ekranie Workbencha małe okienko z jego
przyciskami (buttons).

Naszą komendę możemy nazwać po prostu ICONIFY. Po określeniu
wszystkich pozostałych standardowych parametrów możemy przejść do
definiowania odpowiedniej sekwencji rozkazów, które mają uśpić
DOpusa. Pierwszym nowym wewnętrznym rozkazem DOpusa jest
REMEMBER, służący do zapamiętania aktualnych parametrów programu.
Dzięki niemu możliwe jest później łatwe odtworzenie całej
konfiguracji za pomocą rozkazu RESTORE. Druga komenda, MODIFY,
jest nam już znana, jednak tym razem będziemy zmieniać oczywiście
inny parametr, a mianowicie ButtonRow z argumentem 2. (zmiana
liczby linijek przycisków ze standardowych sześciu na dwa
zajmować będzie mniej miejsca na ekranie Workbencha).
Najważniejsza chyba komenda, BUTTON ICONIFY to po prostu
wykonanie za nas całej czarnej roboty -- uśpienie całego DOpusa.
Na koniec zostaje jeszcze REDRAW -- odrysowanie całego ekranu
DOpusa. Po odpowiednim wpisaniu wszystkich komend nasze linijki
tak powinny wyglądać:
Remember
Modify ButtonRows 2
ButtonIconify
Restore
Redraw
Wszystkie komendy oczywiście w trybie command, gdyż są to
wewnętrzne rozkazy DOpusa.
To tyle na dzisiaj. Za miesiąc postaram się podać więcej
interesujących przykładów wykorzystania wewnętrznych komend
DOpusa. Jest to naprawdę potężne narzędzie i z pewnością można
wymyślić wiele nowych interesujących komend, mogących w znacznym
stopniu usprawnić pracę z tym programem.
