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.