Ulepszanie blatu (cz. 5.) ------------------------- APPMENU I INNE Menu rozwijane z górnej czëôci ekranu wielu programów amigowskich sâ z pewnoôciâ czymô, co znacznie uîatwia korzystanie z zasobów systemu, a takûe dokonywanie wyboru, gdy korzystamy z jakiegoô programu. Ten sposób wyboru opcji przyjâî sië do tego stopnia, ûe wykorzystywany jest obecnie przez niemalûe kaûdy system operacyjny, wyposaûony w ôrodowisko graficzne. Jarosîaw Horodecki System standardowo oferuje cztery takie menu, z których trzy przeznaczone sâ tylko i wyîâcznie dla potrzeb Workbencha i zawierajâ jego opcje, a czwarte, nazwane TOOLS, oddane jest do dyspozycji innych programów oraz uûytkownika. Obecnie doôê czësto róûne programy po ich uruchomieniu dodajâ swoje nazwy do tego menu, aby îatwiej byîo do nich powróciê z poziomu ekranu Workbencha. Menu to moûe byê jednak zastosowane równieû do wczytywania róûnych programów, w zaleûnoôci od przypisanej mu przez uûytkownika funkcji. Aby móc je jednak wykorzystaê, potrzebne sâ specjalnie napisane do tego celu programy. Proponujë zapoznaê sië z kilkoma z nich. Najprostsze oferujâ zwykle jedynie dodawanie dodatkowych pozycji do menu Tools. Do tej grupy naleûâ wîaônie AddTools oraz AppMenu. Oba oferujâ podobne moûliwoôci, w nieco inny sposób sâ jednak konfigurowane i nieco inaczej dziaîajâ. Pierwszy, AddTools, jest programikiem, który powinien byê umieszczony w katalogu WBStartup Workbencha lub teû w sekwencji startowej, wtedy jednak do jego uruchomienia naleûy posîuûyê sië komendâ RUN. Do prawidîowego dziaîania potrzebuje on jedynie pliku konfiguracyjnego o nazwie AddToolsData, zawierajâcego spis wszystkich programów, jakie majâ byê doîâczone do menu. Plik ten moûe byê umieszczony zarówno w tym samym katalogu, co AddTools, jak i w katalogu, któremu przyporzâdkowane jest urzâdzenie logiczne S: (zwykle jest to katalog S na partycji systemowej). Jest to plik tekstowy, jego edycji moûna wiëc dokonaê za pomocâ dowolnych edytorów, nawet tych najprostszych, jak ED czy Emacs. Oczywiôcie narzucona jest pewna struktura tego pliku. Kolejne linijki definiowanego menu przedstawiane sâ w trzech liniach tekstowych. Pierwsza z nich to nazwa danej opcji, druga to komenda AmigaDOS-u, jaka ma byê wywoîana po wskazaniu tejûe opcji, trzecia natomiast definiuje, czy komenda ta ma dziaîaê synchronicznie czy asynchronicznie. Oto przykîad prostej konfiguracji komendy, wywoîujâcej standardowâ komendë list AmigaDOS-u: Katalog sys:c/list A|CON:1/40/318/100/Katalog/close/auto Pierwsza i druga linijka tej definicji nie wymaga chyba specjalnego komentarza. Warto natomiast przyjrzeê sië ostatniej linijce. Przede wszystkim, co to jest tryb synchroniczny i asynchroniczny dziaîania programu? Terminy te oznaczajâ mianowicie odpowiednio: uruchomienie programu tak, ûe AddTools czeka do zakoïczenia jego dziaîania z podjëciem jakichkolwiek innych czynnoôci lub uruchomienie wskazanego programu niezaleûnie od AddTools, które nie zwraca juû uwagi na jego dziaîanie. Oba te tryby majâ zastosowanie gîównie przy uruchamianiu programów z wykorzystaniem przekazywania parametrów poprzez ikony. Warto chyba wspomnieê o tej interesujâcej moûliwoôci. Proponuje wpisaê do pliku konfiguracyjnego nastëpujâce linijki: Edytor sys:utilities/multiview [] A Definicja ta wywoîuje program Multiview, sîuûâcy do wyôwietlania róûnego rodzaju plików tekstowych i graficznych. Program ten jest skîadnikiem Workbencha, poczâwszy od wesji 3.0. Zauwaûmy podany w drugiej linijce parametr []. W nawiasach tych moûe sië znaleúê dowolny îaïcuch znaków. Gdy podczas wybierania tejûe pozycji z menu wciôniëta jest jakakolwiek ikona, to zamiast wpisanego w nawiasie îaïcucha znaków umieszczona zostanie nazwa wskazanego poprzez ikonë pliku wraz z peînâ ôcieûkâ dostëpu. Spowoduje to oczywiôcie wczytanie tego pliku przez program Multiview. Przy wyborze jednej tylko ikony nie moûna jednak zauwaûyê róûnicy pomiëdzy synchronicznym i asynchronicznym trybem pracy. Proponujë wiëc korzystajâc z klawisza [Shift] zaznaczyê przynajmniej dwie ikony, symbolizujâce na przykîad dowolne teksty. Teraz, gdy korzystamy z trybu synchronicznego, najpierw zostanie uruchomiony program Multiview z pierwszym wskazanym plikiem, podanym jako argument. Dopiero po zamkniëciu okienka programu Multiview wczytany bëdzie drugi i ewentualnie dalsze zaznaczone pliki. W trybie asynchronicznym natomiast, gdy AddTools nie czeka na zakoïczenie dziaîania uruchamianego programu, pojawiâ sië jednoczeônie na ekranie niezaleûne okienka, w których wyôwietlane bëdâ wszystkie zaznaczane pliki. Jak sâdzë, dziaîanie obu trybów powinno byê juû dla wszystkich zrozumiaîe. Warto jeszcze wspomnieê o moûliwoôci skorzystania z wiëcej niû jednego argumentu w definiowanych komendach. W tym celu wystarczy posîuûyê sië kilkoma nawiasami kwadratowymi, na przykîad wpisujâc w linijce przeznaczonej dla komendy: sys:c/CED [] [] Spowoduje to przekazanie do wywoîywanego programu o nazwie CED nazw dwóch pierwszych zaznaczonych plików. Jeûeli zaznaczono wiëcej niû jeden taki plik, AddTools podawaê je bëdzie kolejno (w tym wypadku po dwa jednoczeônie) aû do wyczerpania listy. Jak juû wspomniaîem na poczâtku, AddTools moûe byê uruchamiany zarówno za pomocâ ikony, jak i z poziomu AmigaDOS-u. W kaûdym z tych wypadków moûna skorzystaê z trzech dodatkowych opcji, odpowiednio wpisywanych albo jako tooltypes w ikonie, albo jako dodatkowe argumenty w CLI lub Shellu. BREAK_WARN -- powoduje, ûe AddTools bëdzie zawsze otwieraê requester ûâdajâcy potwierdzenia, zanim sië wyîâczy; EXTRA_ITEM -- doîâcza do menu TOOLS pozycjë, po której wybraniu AddTools zostaje wyîâczone; WINDOW= -- umoûliwia zdefiniowanie parametrów standardowego okienka, jakie otwierane bëdzie przy uruchamianiu programów za poôrednictwem AddTools; definicja okienka jest taka sama jak w systemie Amigi, informacji na ten temat moûna wiëc zaczerpnâê z dokumentacji AmigaDOS-u. To chyba wszystko, co moûna powiedzieê na temat programu AddTools. Przejdúmy zatem do bardzo do niego podobnego AppMenu. Programik z pewnoôciâ prostszy w obsîudze, choêby dziëki temu, ûe wszystkie opcje wywoîywane sâ jedynie poprzez specjalnie do tego celu przygotowany graficzny interface uûytkownika. Najwiëkszym chyba problemem, zwiâzanym z uruchomieniem programu, jest koniecznoôê stworzenia podkatalogów o nazwie AppMenu na urzâdzeniach logicznych ENV: oraz ENVARC:. Najczëôciej sâ to odpowiednio katalogi ENV na RAM-dysku (RAM:) oraz sys:prefs/envarc, oczywiôcie na partycji systemowej. Program nie potrafi ich samodzielnie stworzyê, co mi sië wydaje nieco niezrozumiaîe. Niemniej jednak po utworzeniu tych plików moûna juû przystâpiê do uruchomienia programu. Program AppMenu skîada sië z dwóch czëôci. Pierwsza z nich to procedura odpowiedzialna za obsîugë samego menu, druga natomiast to program umoûliwiajâcy definiowanie kolejnych pozycji w menu oraz przypisywanie im pewnych dziaîaï. Oba programy mogâ byê oczywiôcie uruchamiane zarówno z poziomu Workbencha, jako ikonki, jak i z poziomu AmigaDOS-u. Program sterujâcy menu, nazwany AppMenuCX, dziaîa jako zwykîe commodity i daje moûliwoôê podania jednego parametru: CX_PRIORITY=(n), gdzie n to oczywiôcie priorytet programiku w systemie. Standardowâ wartoôciâ przyjmowanâ z góry jest zero. Drugi z programików dziaîa natomiast na zasadzie zwykîych programów konfiguracyjnych systemu (preferences) i, gdy jest uruchamiany z poziomu AmigaDOS-u, daje moûliwoôê podania jednego z czterech parametrów: FROM=(nazwa_pliku), EDIT, USE oraz SAVE. Ich znaczenie jest identyczne z podanym w instrukcji Workbencha. W ikonce jako tooltypes moûna z kolei podaê dwie opcje: SCREENFONT=(NO|YES) -- czy AppMenu ma uûywaê kroju liter topaz/8 czy zdefiniowanego w konfiguracji? SAVEICONS=(NO|YES) -- czy wraz z plikami konfiguracyjnymi majâ byê nagrywane takûe odpowiadajâce im ikony? Definicja poszczególnych linijek dopisywanych do menu Tools przebiega w sposób bardzo prosty i zrozumiaîy. Po wybraniu gadûetu NEW pojawia sië kursor, oczekujâc na wpisanie w polu COMMAND komendy, jaka ma zostaê wywoîana po uûyciu definiowanej opcji. Jej nazwa, która pojawi sië w menu, jest wpisywana do okienka MENU ITEMS. Zawiera ono spis wszystkich pozycji naszego menu, które oczywiôcie w kaûdej chwili moûna w dowolny sposób przedefiniowaê. Kaûdej pozycji menu oprócz komendy, jaka ma zostaê wywoîana, moûna takûe przyporzâdkowaê jeden argument, który bëdzie przekazany wywoîywanej komendzie. Sîuûy do tego gadûet nazwany ARG, który moûna ustawiê w jednej z czterech pozycji: NONE -- komenda nie otrzymuje ûadnych argumentów; ICONS -- argumentami sâ wciôniëte ikonki; REQUESTER -- pokazuje sië requester, który czeka na wskazanie pliku; ICONS/REQUEST -- jeûeli ûadna ikonka nie jest wybrana, to otwierany jest requester. Podany argument jest automatycznie wstawiany na koniec podanego îaïcucha znaków, bëdâcego komendâ AmigaDOS-u. Jeûeli ma on byê wstawiony w inne miejsce, naleûy skorzystaê ze znaków []. Wtedy nazwa wskazanego pliku wraz z peînâ ôcieûkâ dostëpu bëdzie wpisana wîaônie w oznaczone tak miejsce. Warto jeszcze wspomnieê o kilku przydatnych funkcjach edycyjnych, jak kasowanie wskazanej pozycji z menu, ale moûliwe jest takûe dokonanie zmiany pozycji poszczególnych opcji, a takûe kopiowanie ich i powielanie. Niekiedy zastosowanie tych kilku prostych pomocy moûe w znacznym stopniu uîatwiê i przyôpieszyê tworzenie wîasnego menu. Na koniec tej czëôci chciaîbym jeszcze wymieniê programik o podobnym do dwóch poprzednich zastosowaniu, jednak nieco inaczej rozwiâzujacym problem wyboru poszczególnych opcji. Programik ten nazywa sië LazyBench. Nie dodaje on dowolnych opcji do menu TOOLS, dodaje natomiast jednâ opcjë, która otwiera okno zawierajâce listë wszystkich komend. Nieco inne sâ równieû zaîoûenia autora. Nie chciaî on mianowicie stworzyê programu sîuûâcego do wywoîywania dowolnych programów za pomocâ opcji z menu, ale uîatwiê wczytywanie najpotrzebniejszych programów, jednak tylko tych zaopatrzonych we wîasne ikonki. LazyBench nie daje moûliwoôci uruchamiania jakichkolwiek programów, które nie majâ przypisanej im ikonki. Moûliwe jest za to wczytywanie plików z danymi, o ile oczywiôcie majâ one wpisany odpowiedni program jako DEFAULT TOOL w ich ikonce. Obsîuga programu LazyBench jest równieû bardzo prosta. Po jego wywoîaniu jest wyôwietlane okienko, którego najwiëkszâ czëôê stanowi lista zdefiniowanych w pliku konfiguracyjnym programów. Z listy tej moûna od razu wybieraê programy do uruchomienia, za pomocâ opcji EDIT LIST moûna jâ jednak dowolnie modyfikowaê. Edycji listy naleûy dokonaê za pomocâ dowolnego edytora tekstu. Aby program sië na niej znalazî, wystarczy w kolejnej linijce pliku konfiguracyjnego (który jest zwykîym plikiem tekstowym) wpisaê peînâ ôcieûkë dostëpu do tego programu. Jeûeli ma on ikonkë, pojawi sië natychmiast na liôcie. W ikonce programu moûna zastosowaê wiele tooltype'ów, jak: CX_POPUP=(YES|NO) -- otwieranie okienka przy uruchamianiu; CX_POPKEY=(klawisze) -- kombinacja klawiszy, po których uûyciu otworzy sië okienko programu; CX_PRI=(n) -- priorytet programu w systemie; REMEMBER -- pamiëtanie pozycji okienka programu na ekranie; AUTOHIDE -- automatyczne chowanie okienka po uruchomieniu programu z listy; EDITOR -- definicja edytora tekstu standardowo uûywanego do modyfikacji konfiguracji; ITEMS -- liczba pozycji, jaka ma byê wyôwietlana w okienku, nie moûe byê mniejsza od 10, a gdy bëdzie zbyt duûa, okienko moûe wyjôê poza ekran; DONOTWAIT -- wyîâczenie oczekiwania Workbencha na zgîoszenie programu, konieczne, gdy LazyBench uruchamiany jest z katalogu WBStartup. Jak widaê, metod rozwiâzania problemu, zwiâzanego z wykorzystaniem moûliwoôci podczepiania nowych funkcji do rozwijanych menu, moûe byê wiele. Oczywiôcie nie byîbym w stanie przedstawiê wszystkich dostëpnych dla Amigi programów, wykorzystujâcych të moûliwoôê. Opisane pozycje z pewnoôciâ jednak naleûâ do tych ciekawszych. W nastëpnej czëôci naszego cyklu zajmiemy sië nieco bardziej zaawansowanymi, ale takûe nieco bardziej wymagajâcymi, programami naleûâcymi wîaôciwie do tej samej grupy. Gdzie to zdobyê? AppMenu v2.2 AminetCD 4 AddTools v1.1 FredFish #928 LazyBench v1.14 FredFish #969