Rozdział z książki "Tworznie plików pomocy dla Windows". © 1999 Wydawnictwo Helion

Rozdział 6.
Dodawanie spisów i indeksów do plików pomocy

Adrian Nowak i Piotr Frej

Każdy chyba wie, co to takiego spis treści, znaleĽć go bowiem można w każdej książce. W helpach jest jednak odrobinę inaczej. Główna różnica to chyba to, że może on mieć dowolną formę wizualną i niekoniecznie przedstawiać wszystko jednocześnie. Poza tym spis treści to bardzo praktyczny sposób przedstawienia zawartości pliku pomocy. Jest on prawie nieodzownym elementem każdego takiego pliku, a już koniecznym plików choć trochę rozbudowanych i kilkutematowych.

Jak wiadomo, spis ma nie tylko przedstawiać zawartość całej pomocy w skrótowej, hierarchicznej formie, ale przede wszystkim naprowadzać użytkownika na odpowiednie informacje w dosyć prosty sposób. Jako że ma być to spis, a nie skorowidz czy też indeks, informacje te najczęściej nie powinny być posortowane w kolejności alfabetycznej, lecz oczywiście zachowywać odpowiednią kolejność, najlepiej zależnie od stopnia zaangażowania lub po prostu od upodobania samego twórcy.

PrzejdĽmy jednak do procesu produkcji. A więc, jak już czytałeś, spis treści nie może być realizowany za pomocą jakichkolwiek przypisów, a zrobiony ręcznie, w formie listy odsyłaczy tekstowych, graficznych lub też w postaci specjalnych list rozwijalnych. Każdy z tych sposobów oczywiście można zrealizować bardzo prosto, poprzez utworzenie odpowiedniej strony lub też kilku takich stron. Ostatni natomiast dodatkowo – w Windows 95 – za pomocą specjalnych plików spisu o rozszerzeniu CNT.

Zasadnicza różnica między spisem reprezentowanym jako zwykły temat, a z użyciem pliku spisu to oczywiście sposób wyświetlania. Spis jako temat jest wyświetlany w obszarze klienta, a przetworzona zawartość pliku spisu – w okienku dialogowym, w podobny sposób jak standardowy indeks z drobnymi uatrakcyjnieniami.

Wiesz już doskonale, że do zrealizowania tego wszystkiego (w dowolny ze sposobów) spis musi być odpowiednio zaprojektowany. Przede wszystkim w przypadku długich spisów powinno się stosować podział na kilka poziomów: pierwszy – ogólny, zawierający podstawowe tytuły rozdziałów lub nagłówki, a kolejny jako już konkretne tematy w nim zawarte. Nie powinno się jednak używać zbyt dużej ilości takich poziomów, gdyż zmusza to użytkownika do wielu czynności, zanim dostanie się do szukanego tematu. Ponadto żaden z tytułów nie powinien być zbyt długi, lecz w jak najkrótszej formie prezentować treść tematu lub tytuł rozdziału (pozwala to na szybszą orientację). Polecamy stosowanie najwyżej dwóch, trzech słów, z zastosowaniem odpowiedniej formy gramatycznej – równoważników zdań, pytań, samych rzeczowników itp. – wszystko zależy od Ci ebie i tego, czy chcesz uzyskać atrakcyjny dokument.

Już za chwilę postaramy się opisać obie wspomniane tu metody tworzenia spisów dla plików pomocy, a także przedstawimy kilka pomysłów, jak dopracować spis, jak utworzyć własne indeksy czy też rozwijalne listy.

Spis treści i listy po staremu

Naszym zdaniem, utworzenie własnej strony spisu daje znacznie lepszy efekt niż używanie specjalnych plików spisu, pomijając już to, że w starszej wersji ich zastosowanie jest zupełnie niemożliwe. Przy tym czas ich tworzenia jest porównywalny. Dlatego też zdecydowaliśmy się najpierw na opis starej (ale dobrej) metody.

Praktycznie metoda ta niczym się nie różni od tworzenia zwykłego tematu. Umożliwia więc stosowanie własnych efektów, grafiki, multimediów, dĽwięku, okienek osadzonych i wszystkiego, co dodaje uroku. Jedyna zauważalna różnica to właśnie specyficzna budowa – prawie same odsyłacze, odpowiednio dobrane i sformatowane, z niewielką ilością grafiki oraz dodatkowego tekstu. Jak zrobić coś takiego w pliku RTF, to już dobrze wiesz, dlatego pozostaje nam jedynie uzupełnienie i podanie kilku rad.

Oprócz podanych już zaleceń dotyczących formy elementów spisu treści, powinieneś stosować jeszcze wiele innych dodatkowych reguł, a wśród nich takie:

  • staraj się nie stosować obszernych stron spisu zawartości, by nie było konieczne stosowanie dodatkowo pasków przewijania,
  • do ważniejszych pozycji spisu przyłącz dodatkowo elementy graficzne (np. małe kropki itp.) albo symbolizujące temat odsyłacze w formie większych rysunków lub ikon,
  • nie wstawiaj kolejnych odsyłaczy zbyt blisko siebie, lecz uwzględnij możliwość utworzenia kilku poziomów,
  • możesz zastosować różne wielkości, kroje pisma lub wcięcia – zależnie od poziomu w spisie – lecz raczej ograniczaj się co do ich liczby,
  • w odniesieniu do bardziej oczywistych tematów albo poleceń (np. zamknięcie pliku) dobrym posunięciem może być użycie samych odsyłaczy graficznych, bez tekstu,
  • zwróć również uwagę na przejrzystość – w razie potrzeby możesz bowiem zastosować listy rozwijalne.

Ponieważ utworzony w ten sposób spis jest po prostu zwykłym tematem, oczywiście powinien posiadać przypis identyfikatora tematu "#". Użycie innych przypisów nie jest konieczne, choć czasami pożyteczne. Niemniej jednak należałoby również zastosować przypis tytułu tematu "$" i ewentualnie słowa kluczowego "K" jako np. "Spis treści". Pozwoli to na dostanie się do spisu z różnych poziomów helpu. Dla przypomnienia wystarczy także wskazać ciekawe możliwości przypisu "!", czyli uruchomienie dowolnego makropolecenia – jak wszędzie, tu też by się dla niego znalazło jakieś zastosowanie.

Co do tych spisów najwięcej wątpliwości masz zapewne, jeżeli chodzi o tworzenie list rozwijalnych, ale jeśli sobie przypominasz, pisaliśmy już coś podobnego przy okazji wstawiania przycisków do tematów. W największym skrócie, jest to połączenie (po rozwinięciu) tematu z głównymi rozdziałami (ich odsyłaczami) z kolejnymi tematami zawierającymi ich szczegóły.

Tak więc wybranie odsyłacza działającego jako lista spowoduje przesunięcie znajdujących się poniżej odsyłaczy i wstawienie kilku nowych. Od wewnątrz działanie takie to nic innego, jak skok do podobnego tematu wyglądającego właśnie tak, jakby lista się rozwinęła. Ponowne wybranie takiego odsyłacza powinno więc spowodować skok do poprzedniego tematu spisu i tym samym zwinięcie listy. Należy jednak pamiętać iż takich tematów musi być odpowiednia liczba – zależnie od liczby odsyłaczy głównych.

Sprawa wydaje się więc nawet prostsza niż w przypadku podobnie działających przycisków, które już utworzyliśmy. Tym razem wybranie odsyłacza powoduje tylko skok i nie uruchamia żadnego dodatkowego makropolecenia. Niemniej jednak tutaj także pokusimy się o pokazanie krótkiego przykładu. Jeden z przykładów spisów już kiedyś utworzyliśmy (pomijając Przyk_02) – ten, w którym demonstrowaliśmy przeszukiwanie pliku pomocy, a mianowicie Przyk_10 i jego dalsze modyfikacje. Teraz na tym samym przykładzie, poprzez poszerzenie możliwości i liczby tematów, pokażemy spis treści w formie rozwijalnej – Przyk23a. Niektóre elementy, które dodaliśmy do przykładu poprzez kolejne jego modyfikacje, pominiemy, ale przy okazji poszerzymy np. przeszukiwanie sekwencyjne.

Aby uzyskać dwie listy rozwijalne, byliśmy zmuszeni zastosować dwie lub trzy dodatkowe strony podobne do głównego spisu. Oczywiście wybraliśmy drugi z wariantów, który działa trochę lepiej, lecz nie to wpłynęło na nasz wybór. Chcieliśmy uświadomić Ci, nasz Czytelniku, co może czekać twórcę przy większej liczbie takich list. Otóż chcąc utworzyć dwie listy tak, aby po rozwinięciu jednej i wyborze odsyłacza dla drugiej obie listy były rozwinięte, potrzebowaliśmy w sumie czterech stron (2 do potęgi 2 – wszystkie kombinacje (2 po 0)=1, (2 po 1)=2 i (2 po 2)=1). Przy większej liczbie (n) takich list również trzeba by liczyć sumę wszystkich kombinacji, czyli najlepiej z wzoru 2 do potęgi n. Tak więc już dla 10 byłoby to 1024, co wydaje się niemożliwe do osiągnięcia. Do tego dochodzi oczywiście ogromne zamieszanie w zmianach działania kilku odsyłaczy na każdej z tych stron. Stąd też na dłuższą metę polecamy używanie łatwiejszych list – takich, aby po rozwinięciu jednej z nich i wyborze odsyłacza powodującego rozwinięcie innej, automatycznie została zwinięta poprzednia (tak będzie widział to użytkownik). W takim przypadku dla 10 list trzeba tylko 10 dodatkowych tematów itd., na których należy zmienić działanie tylko jednego odsyłacza. Poza tym o efektywności obu sposobów można dyskutować.

Wróćmy jednak do naszego nowego przykładu. Tutaj, aby otrzymać efekt rozwijalnych list, dodaliśmy trzy tematy i odpowiednio pozmienialiśmy działanie odsyłaczy uruchamiających obie listy. Wszystko to umieściliśmy w poniższej tabelce i pozostawiamy Ci do przemyślenia oraz sprawdzenia w działaniu.

Identyfikator tematu Działanie odsyłacza "Graniastosłupy" Działanie odsyłacza "Ostrosłupy" Opis tematu
SPIS SPIS_GRAN SPIS_OSTRO Główny temat spisu treści.
SPIS_GRAN SPIS SPIS_OTWARTE Spis z otwartą listą graniastosłupów.
SPIS_OSTRO SPIS_OTWARTE SPIS Spis z otwartą listą ostrosłupów.
SPIS_OTWARTE SPIS_OSTRO SPIS_GRAN Spis z otwartymi obiema listami.

Listę nowych znaczników dla rozszerzenia możliwości przeszukiwania sekwencyjnego zawiera natomiast kolejna tabelka.

Identyfikator tematu Tekst przypisu "+"
SPIS Bryly:010
SPIS_GRAN ---
SPIS_OSTRO ---
SPIS_OTWARTE ---
SZESCIAN Bryly:020
PROSTOPAD Bryly:030
POD_SPIS_GRAN Bryly:040
GRANIASTOSLUPY Gran:010
GRAN_PRAW_TROJ Gran:020
GRAN_PRAW_CZWO Gran:040
STOZEK Bryly:050
POD_SPIS_OSTRO Bryly:060
OSTROSLUPY Ostro:010
Identyfikator tematu Tekst przypisu "+"
OSTRO_PRAW_TROJ Ostro:020
OSTRO_PRAW_CZWO Ostro:030
CZWOROSCIAN Ostro:040
WALEC Bryly:070
KULA Bryly:080

Dzięki takiemu przyporządkowaniu użytkownik ma możliwość sekwencyjnego poruszania się po głównych tematach brył. Tu jednak konieczne było zastosowanie dwóch dodatkowych tematów podspisów, które zawierają jedynie to, co dodaje rozwinięcie listy w spisie głównym (trzy lub cztery odsyłacze). Przy czym nie mają one nic wspólnego z działaniem rozwijalnych list. Dotarcie do takiej strony podspisu i wybór jednego z jej odsyłaczy spowoduje wejście do innej kolejki przeglądania (Gran lub Ostro). Jeżeli zamiast odsyłacza zostanie wybrany przycisk "<<" lub ">>", to pozostaniemy w kolejce Bryly. Zauważ, że przeglądanie sekwencyjne można rozpocząć jedynie z głównego spisu treści bądĽ z tematu, do którego można się dostać z poziomu indeksu.

Rysunek 6.1.

Dwa podobne tematy pozwalające na uzyskanie efektu listy rozwijalnej.

Po utworzeniu jakiegokolwiek spisu należy poinformować o tym projekt pomocy. W tym celu w sekcji [OPTIONS] pliku projektu trzeba przypisać identyfikator strony spisu do opcji CONTENTS. Inną metodą jest po prostu umieszczenie tematu spisu jako pierwszego w pierwszym z plików RTF dodanych do sekcji [FILES]. Zawsze bowiem, gdy nie określimy strony wyświetlanej jako pierwsza, będzie to właśnie ten temat. Poza tym można dokonać tego samego stosując makropolecenie SetContents, które już opisaliśmy trochę wcześniej. Wszystko to spowoduje, że temat tak określony będzie wyświetlany zaraz po uruchomieniu pomocy, po naciśnięciu przycisku "Spis treści " (ang. "Contents") lub też po wywołaniu makropolecenia Contents. Dla naszego przykładu nie trzeba, ale można dodać jedną linię w sekcji [OPTIONS]:

CONENTS = SPIS

a także zadbać, aby było dostępne przeglądanie sekwencyjne – wszyscy wiemy, jak to zrobić, dlatego też, nie tracąc czasu, polecamy zerknięcie na rysunek 6.2 i uruchomienie pliku Przyk23a.hlp.

Rysunek 6.2.

Widok dwóch własnych list rozwijalnych po ich rozwinięciu.

Własny indeks

Wiesz już dostatecznie dużo o indeksach, tworzonych za pomocą przypisu "K", z jego możliwymi poziomami oraz zastosowaniem odwołań do wielu tematów. Jak natomiast z pewnością się domyślasz, coś podobnego można stworzyć samemu również jako zwykłą stronę, choć w tym przypadku jest to znacznie bardziej pracochłonne. My proponujemy poniższe rozwiązanie.

Na początek oczywiście będzie trzeba stworzyć stronę zawierającą wszystkie słowa kluczowe w formie odsyłaczy, a potem umiejętnie dołączyć ją do całości tematów. Aby możliwe było uruchamianie takiego indeksu, najlepiej zastosować dodatkowy przycisk na listwie przycisków lub własny odsyłacz w obszarze nieprzewijalnym. W obu przypadkach działanie powinno po prostu powodować skok do strony zawierającej indeks bądĽ też jej uruchomienie w oddzielnym oknie.

W celu usprawnienia poruszania się użytkownika po ułożonych w kolejności alfabetycznej odsyłaczach polecamy dodanie w obszarze nieprzewijalnym hipergrafiki obrazującej kolejne litery alfabetu, np. w formie zakładek lub nawet tekstowej. Wybranie takiego odsyłacza będzie musiało spowodować skok do miejsca, w którym zaczyna się lista haseł rozpoczynających się od danego znaku. Jak łatwo zauważyć, można to zrealizować dwoma metodami: stosując wiele tematów na oddzielnych stronach dla każdej z liter alfabetu lub też jednej długiej strony z wieloma przypisami "#". Ta druga metoda nam osobiście wydaje się bardziej praktyczna dla typowego indeksu.

Podobnie jest w przypadku własnych spisów, indeksy również mogą być dostosowane w dowolny sposób. Dlatego też przydać się tu może głównie grafika, choćby w celu odznaczenia haseł na kolejne litery, ale własne kontrolki są jeszcze milej widziane.

Niezmiernie ważną zaletą tak utworzonego indeksu jest to, że odsyłacze mogą wykonać każdą pracę. Oprócz skoku, kiedy to dostępny jest tylko jeden temat, mogą nawet wywoływać makropolecenia KLink i ALink. To jednak dopiero dla nowszej wersji przeglądarki. Na razie zobacz, jak prezentuje się fragment indeksu podczas jego tworzenia – rysunek 6.3. Widać tam bowiem wiele przypisów identyfikatora tematów.

Rysunek 6.3.

Praca nad opracowaniem własnego indeksu haseł.

W celu naocznego stwierdzenia, że tego typu indeksy mogą być ogromnie efektowne, proponujemy jeszcze dokładniejsze obejrzenie przykładu z katalogu Przyk_23 i rysunku 6.4, a następnie porównanie ze standardowym okienkiem indeksu.

Szybkość tworzenia takiego indeksu też możemy osiągnąć, jeżeli wykonamy odpowiedni zestaw makropoleceń dla edytora. Najlepsze byłoby takie makro, które wyszukiwałoby wszystkie przypisy słów kluczowych i zapisywało je na oddzielnej stronie. Następnie powinno znaleĽć poprzedzający je przypis identyfikatora tematu, a potem już tylko zapisać go obok i sformatować jako tekst ukryty. Nie trzeba by zupełnie nic robić, a zaledwie nacisnąć przycisk.

Rysunek 6.4.

Propozycja indeksu haseł, jako tematów umieszczonych na jednej stronie.

Tworzenie i zastosowanie
nowych plików CNT

Nowa wersja kompilatora pomocy ma tę cechę, iż udostępnia wiele nowych elementów i rozszerzeń, o czym już wielokrotnie zdążyłeś się przekonać. Tak jest również w przypadku spisu treści, choć tym razem według nas nie jest to nic nadzwyczajnego. Okienko dialogowe spisu "Tematy Pomocy" prezentuje się niezbyt efektownie i, jak łatwo zauważyć, jest po prostu zbyt "ciasne". Wada ta uwidacznia się szczególnie w przypadku dłuższych spisów, zmuszając użytkownika do częstego stosowania paska przewijania. Do tego niektóre z tematów, a zwłaszcza te na dalszych poziomach, mogą się w takim okienku nie mieścić. O dowolności prezentacji graficznej zupełnie nie może być mowy – jedynie trzy standardowe ikonki reprezentacji. Przy tworzeniu tego typu plików należy więc mieć takie ograniczenia na względzie i zastanowić się, czy nie będziemy potrzebować czegoś więcej.

No tak, ale przecież nie każdy plik pomocy i wszystko wewnątrz musi być od razu "kolorowe". Czasami lepiej zastosować standardowe rozwiązania systemowe, które przede wszystkim są łatwiejsze do realizacji (było tak już z przyciskami wewnątrz tematów). Poza tym dobrze pasują do reszty standardowych elementów. Tak też właśnie jest z nowymi plikami spisu treści. Jako główny atut, my dostrzegamy w nich właśnie łatwość tworzenia oraz szerokie "rozpanoszenie" w różnorodnych plikach pomocy dla większości aplikacji Windows 95. Z tych powodów możemy polecić tego typu spisy choćby w przypadku budowy pomocy dla aplikacji. Jeżeli natomiast ma to być jakiś dodatkowy element programu lub samodzielna multimedialna przeglądarka, polecamy ręczne tworzenie spisu jako zwykłego tematu. O tym jednak już pisaliśmy, więc możemy wrócić do plików CNT.

Aby utworzyć plik spisu CNT (ang. contents file), najlepiej użyć programu Help Workshop (jak pisaliśmy, nowy kompilator jest z nim zintegrowany, więc i tak bez niego nie udałoby się skompilować projektu), lecz w prosty sposób można poradzić sobie bez tego narzędzia. My postaramy się opisać obie metody tworzenia spisów CNT. Zacznijmy więc od początku. Jak sobie przypominasz, w Help Workshopie dość łatwo można było tworzyć pliki projektu, stąd oczywiście podobnie jest z plikami spisu. Sprowadza się to do wybrania polecenia menu File | New i zaznaczenia pozycji Help Contents w okienku dialogowym oraz dalszego – "wizualnego" – projektowania kolejnych tytułów i podtytułów spisu. Jak widać na załączonym rysunku 6.5, okienko projektowania jest odrobinę inne niż w przypadku pliku projektu.

Rysunek 6.5.

Początek pracy nad własnym spisem zawartości.

Na początku należy podać nazwę pliku pomocy, do którego odnosi się nasz spis, i ewentualnie okno (jeżeli nie będzie to okno główne), w którym będą wyświetlane tematy oraz tytuł, który będzie umieszczony na pasku tytułowym okienka dialogu "Tematy Pomocy". Do tych celów służą właśnie dwa okienka edycji "Default filename (and window)" oraz "Default title". Można w nich bezpośrednio podać owe parametry lub też, jeszcze lepiej, użyć znajdującego się obok przycisku "Edit". Wtedy bowiem pojawi się okienko dialogowe, które dodatkowo może pobrać nazwę okna (inaczej trzeba by użyć znaku ">"). Jeżeli określimy tu okno domyślne, to właśnie w nim będą wyświetlane wszystkie tematy z kart "Spis treści", "Indeks" i "ZnajdĽ". Oczywiście jednak tylko wtedy, gdy nie określimy nic innego dla danego elementu spisu lub też nie użyjemy przypisu ">" dla tematu. Gdy natomiast nie określimy nawet okna domyślnego, to wszystkie te tematy będą widoczne w głównym oknie pomocy.

Teraz już można przystąpić do właściwej pracy. Jak widać, do dyspozycji mamy kilka przycisków po prawej stronie i kilka na dole. Zajmiemy się teraz tymi pierwszymi. Jak na razie, nasze okienko jest puste, zatem najpierw należy coś do niego dodać. W tym celu posłużymy się jednym z przycisków "Add Above…" albo "Add Below…", czyli dodaj powyżej lub poniżej (póĽniej będzie to miało istotne znaczenie). Otrzymamy wtedy okienko dialogowe następującej treści:

Rysunek 6.6.

Okienko dialogowe wyboru elementu spisu.

W górnej części mamy do wyboru cztery możliwości, określające, czym ma być dana pozycja spisu (zależnie od tego trochę zmienia się również pozostała część okienka):

Heading Nagłówek widoczny w formie otwieranej książeczki. Może on zawierać tematy lub inne nagłówki.
Topic Temat do wyświetlenia widoczny jako ikona strony.
Macro Uruchomienie makropolecenia lub ich listy.
Include Dołączenie innego pliku spisu w formacie CNT, lecz o dowolnym rozszerzeniu.

W przypadku wybrania nagłówka wystarczy określić parametr "Title", czyli tytuł go reprezentujący. To samo trzeba uczynić w przypadku tematu, lecz należy jeszcze podać identyfikator tematu ("Topic ID") do wyświetlenia i ewentualnie nazwę pliku pomocy ("Help file") zawierającego temat oraz nazwę okna ("Window type"), w którym ma zostać wyświetlony. Jeżeli nie określimy nazwy okna, to zostanie użyte okno ustawione jako domyślne lub okno przypisane do danego tematu w pliku RTF. Natomiast niepodanie pliku spowoduje poszukiwanie tematu w skojarzonym pliku pomocy.

Dla makropolecenia oczywiście również podajemy tytuł dla pozycji w dialogu oraz makro lub listę makropoleceń w okienku edycji "Macro", pamiętając o stosowaniu pary nawiasów na końcu każdego z nich. Gdybyśmy chcieli uruchomić makro wraz z tematem, to najlepiej zastosować listę makropoleceń jako pozycje Macro, wtedy wśród nich powinno znaleĽć się jedno działające jako skok do tematu.

W celu oddzielenia kilku makropoleceń w pliku CNT należy używać wyłącznie znaku dwukropka (:). średnik służy tutaj do poprzedzania komentarzy.

Jeśli natomiast chodzi o dołączenie innych plików ("Include"), to wystarczy podać ich nazwę. Mogą to być pliki utworzone w podobny sposób, przy czym samo rozszerzenie może być dowolne. W miejsce dołączenia podczas wyświetlania spisu zostanie po prostu wstawiona zawartość podanego pliku. Rozdrobnienia takie polecamy stosować wtedy, kiedy pomoc tworzy kilka helpów i mogą one być uruchamiane oddzielnie lub też z jednego spisu treści.

W celu dokonania zmiany przypisanych parametrów dla nagłówków lub tematów spisu wystarczy kliknąć dwukrotnie lub zaznaczyć dany element i użyć przycisku "Edit…", z kolei aby całkowicie go usunąć – przycisku "Remove". Chcąc dodawać kolejne nagłówki i tematy, należy postępować podobnie, uwzględniając dodawanie powyżej lub poniżej. W ten sposób otrzymamy cały spis w formie rozwiniętej.

Trzeba teraz jeszcze stworzyć odpowiednią hierarchię, czyli sprawić, aby jedne tematy były podporządkowane innym. Do tego celu należy użyć specjalnych przycisków "Move Right" i "Move Left", powodujących przesunięcie zaznaczonego nagłówka lub tematu w prawo (czyniąc go podporządkowanym) lub lewo (uwalniając go).

Rysunek 6.7.

Tworzenie spisu tematów dla przykładu o bryłach.

W taki sposób można podporządkowywać nie tylko same tematy, ale również nagłówki, które będą rozwijane przez inne nagłówki. Dzięki temu uzyskamy spis wielopoziomowy, lecz ograniczony do dziewięciu poziomów. Można również tak rozstawić same tematy, ale w czasie tworzenia otrzymamy komunikat ostrzegawczy o tym, że nie będą się one mogły zamykać i otwierać.

Trzeba mieć na uwadze pewne ograniczenie, a mianowicie to, że nie można umieścić tematu ani makropolecenia na tym samym albo dalszym poziomie pod nagłówkiem, nie będącym jego nadrzędnym (bardziej od niego na lewo). Mimo tego, iż w czasie pracy wszystko będzie w porządku, po uruchomieniu takiego tematu nic poniżej nie zobaczymy, gdyż temat zostanie dołączony do pierwszego nad nim nagłówka. Do tego, kiedy już się taki błąd popełni, nie uda się "normalnie" przenieść elementu w dół lub w górę – trzeba tworzyć go od nowa. Mimo wszystko jest na to rada, mianowicie wystarczy dodatkowo przesunąć temat o jeden poziom w lewo. W ten sposób na etapie tworzenia będzie on widoczny w niewłaściwym miejscu, ale podczas pracy wszystko będzie wyglądać właśnie tak jak zamierzaliśmy.

Jeżeli pomoc tworzy kilka plików, to przy użyciu przycisków "Index Files…" i "Link Files…" w bardzo prosty sposób można udostępnić rozszerzenie indeksu dla wszystkich plików składowych wraz z działaniem makropoleceń ALink i KLink. Wystarczy jedynie dodać nazwy plików i ewentualny komentarz, stosując przycisk "Add…". Jeżeli jednak udostępnimy indeks z innego pliku pomocy, to użycie drugiego przycisku "Link Files…" nie jest już konieczne.

Najciekawsze możliwości projektowania spisu treści ujawniają się jednak po wybraniu przycisku "Tabs…". Umożliwia on bowiem dodanie własnej karty (lub kilku) w oknie dialogu "Tematy Pomocy" jako okna dialogowego z biblioteki. Karta taka będzie mogła występować obok kart "Spis treści", "Indeks" i "ZnajdĽ" pod wybraną nazwą. O tym, jak napisać taką specyficzną bibliotekę, oczywiście jeszcze się dowiesz, lecz to dopiero pod koniec rozdziału "Współpraca z bibliotekami i funkcjami zewnętrznymi".

Tymczasem powróćmy do Help Workshopa. Udostępnia on twórcy pliku spisu jeszcze jedną bardzo ciekawą rzecz. Jest to możliwość jego przetestowania. W tym celu wystarczy wcześniej zapisać utworzony plik spisu, utworzyć potrzebne pliki pomocy (HLP) i wybrać polecenie Contents File... z menu Test. Pojawi się proste okienko dialogowe, które spyta o nazwę i ścieżkę dostępu do pliku CNT. Jeżeli już umieszczona w okienku listy Ci nie odpowiada lub nie ma tam żadnej, to powinieneś ją wpisać bądĽ za pomocą przycisku "Browse" znaleĽć utworzony plik spisu na dysku. Potem pozostaje wybranie przycisku "Test". Program wyświetli kilka informacji o wybranym pliku spisu oraz dodatkowo zapyta, czy chcesz, aby przeprowadził test wszystkich umieszczonych w nim skoków ("Do you want WinHelp to test the jumps in your .CNT file"). Wybór przycisku "Yes" jest teraz nieomal obowiązkowy. W tym momencie będzie można zauważyć, jak wyświetlane są kolejne tematy ze skojarzonych plików pomocy. W przypadku wystąpienia błędu zostaniemy odpowiednio poinformowani – najczęściej będzie to informacja o niepoprawnie podanym identyfikatorze tematu. Trzeba będzie póĽniej poprawić błąd poprzez przejście do pliku spisu, najechanie na odpowiedni temat i wciśnięcie "Edit...". Pojawi się już dobrze Ci znane okienko dialogowe.

To tyle o możliwościach tworzenia spisu w Help Workshopie. Testowanie oczywiście możesz przeprowadzić sam, ale jeszcze pozostaje Ci jeden element układanki. Na koniec powinieneś bowiem dołączyć utworzony plik spisu CNT do całego projektu, w czym również nie ma nic trudnego. Aby dołączyć tego typu plik, należy po prostu umieścić jego nazwę w sekcji OPTIONS pliku HPJ. Służy do tego inna opcja niż w przypadku spisu będącego zwykłym tematem. Nie jest to więc CONTENTS, pozwalająca na przypisanie identyfikatora tematu, a CNT reprezentująca plik spisu. Rozwiązanie musi mieć następującą formę:

[OPTIONS]

CNT = plik.cnt

Takie określenie powoduje, że jako pierwsze po uruchomieniu pliku pokaże się okienko dialogowe "Tematy Pomocy" z graficznym spisem tematów (teraz książeczki będą zamknięte). Jeśli natomiast nie użyjemy polecenia CNT i jeśli w bieżącym katalogu nie będzie pliku CNT o nazwie takiej samej jak plik pomocy HLP, to oczywiście zostanie wyświetlona pierwsza strona dokumentu lub temat określony jako CONTENTS w sekcji OPTIONS. Pora już chyba uruchomić maszynerię – przykład Przyk23b i rysunek 6.8.

Rysunek 6.8.

Spis treści utworzony jako plik CNT w działaniu.

Jak widzisz, w nowym przykładzie spis jest całkiem podobny do tego, który tworzyliśmy sami na jednej ze stron. Tu jednak nie ma prawie żadnych problemów z umieszczeniem dowolnej liczby rozwijalnych list i dowolną liczbą poziomów (do dziewięciu).

Oczywiście większość karteczek (tematów) w spisie to skoki do odpowiednich stron, ale umieściliśmy również jedno makropolecenie – łatwo się domyślić, jakie. Drukowanymi literami zaznaczyliśmy dwa tematy, które koniecznie musisz przejrzeć. Pozwoli Ci to porównać efekty pracy nad spisem w Help Workshopie i z pomocą zwykłego edytora RTF.

Po utworzeniu pliku spisu zawsze trzeba dostarczać go wraz z plikiem pomocy, nie jest on bowiem w żaden sposób włączany do jego wnętrza.
Łatwo można sprawdzić, że uruchomienie pliku pomocy, następnie skasowanie pliku spisu i ponowne uruchomienie nie spowoduje braku spisu. Powinieneś się domyślić, dlaczego się tak dzieje. Otóż jest to efekt działania pliku konfiguracyjnego GID i dopiero jego usunięcie spowoduje zaburzenia pracy.

Składnia tematów i poleceń

To już wszystko, jeżeli chodzi o tworzenie pliku spisu CNT, ale powinieneś także wiedzieć coś na temat jego składni. Otóż jest to zwykły plik ASCII w odpowiedniej formie – czytelnej dla okienka dialogowego "Tematy Pomocy".

Aby zobaczyć zawartość pliku, wystarczy go otworzyć w dowolnym edytorze tekstowym. Zamiast hierarchicznie ustawionych pozycji widać wtedy odpowiednie dla każdego poziomu cyfry (od 1 do 9), po których następuje spacja i właściwe polecenie. W każdym przypadku jest to tytuł, który ma być wyświetlony i ewentualnie dalsze parametry. Dla karteczki tematu i makropoleceń składnia ta jest następująca (x określa wspomnianą cyfrę, tytuł określa tekst, który będzie widoczny dla użytkownika, a pozostałe parametry są niewątpliwie jasne):

x Tytuł=identyfikator_tematu[@nazwa_pliku_hlp][>nazwa_okna]
x Tytuł=!makro1:makro2…:makroN

Tak więc budowa jest prawie dokładnie taka, jak w przypadku odsyłaczy umieszczanych w pliku tematów, z tą chyba różnicą, iż średnik dla listy makropoleceń zastąpiono dwukropkiem. Jeśli natomiast chodzi o nagłówki, to są one umieszczane podobnie, z tym, że nie podaje się znaku równości ani nic innego oprócz tytułu, który będzie widoczny przy rysunku książki.

Do tego wszystkiego dochodzą jeszcze komendy (linie poleceń), które rozpoczynają się od znaku dwukropka. Nie są one już bezpośrednio wyświetlane w liście wynikowego spisu, ale zawierają specjalne informacje. Pierwszym (już Ci znanym) takim poleceniem jest ":include", po którym następuje nazwa pliku do dołączenia.

Inne określają takie cechy, jak nazwa pliku pomocy, okna, tytuł, dołączenie indeksów i połączeń z innymi plikami lub też bibliotek dla własnych kart dialogu.

Oto lista tych możliwości wraz z koniecznymi i opcjonalnymi (umieszczone w nawiasach kwadratowych) parametrami:

Komenda

Opis

:Base nazwa_pliku_hlp [>nazwa_okna]

Określenie pliku, dla którego spis CNT jest przeznaczony, oraz domyślnego okna do wyświetlania tematów.

:Include nazwa_pliku_cnt

Dołączenie innego plików w formacie zgodnym z CNT (tak samo zbudowanego).

:Index tytuł_tematu = nazwa_pliku_hlp

Udostępnienie połączonego indeksu wraz z kolejnym plikiem pomocy.

:Link nazwa_pliku_hlp

Rozszerzenie możliwości działania makr ALink i KLink na kolejny współpracujący >plik pomocy.

:Nofind

Wyłączenie karty "ZnajdĽ" z okienka dialogowego "Tematy Pomocy".

:Tab nazwa_elementu = nazwa_DLL

Dołączenie własnej karty do okienka dialogowego "Tematy Pomocy" – na końcu, po już istniejących kartach.

:Title tytuł

Określenie tytułu umieszczanego na pasku tytułowym dialogu "Tematy Pomocy".

Wydaje nam się, że z powyższej listy dodatkowego wyjaśnienia wymaga tylko komenda ":Nofind", która nie pobiera żadnych parametrów (o działaniu innych już trochę wiesz). Otóż służy ona do wyłączenia karty dialogu "Tematy Pomocy" o nazwie "ZnajdĽ" i nie ma możliwości jej wstawienia w Help Workshopie, a właśnie tylko w edytorze tekstowym ASCII (np. Notatnik).

Rysunek 6.9.

Plik spisu CNT jako "zwykły" plik tekstowy.

W ten oto sposób informacje powyższe stały się już bardziej przydatne. Na ich podstawie będziesz mógł na przykład rozszerzyć swój szablon makropoleceń dla Worda o własne narzędzia do tworzenia plików spisu, bo "ręczne" wpisywanie raczej nie ma sensu. Nie namawiamy do tego bynajmniej tych, którzy mają Help Workshopa, lecz pewnie można by było zrobić coś lepiej. Poza tym chyba warto znać wewnętrzną budowę spisu, by na przykład umieć ją wykorzystać z poziomu własnych, dołączonych bibliotek dynamicznych, funkcji czy programów zewnętrznych.

Spójrz zatem jeszcze, jak wcześniej utworzony spis treści prezentuje się w formie tekstowej – rysunek 6.9. Ponieważ umieściliśmy tylko dwa poziomy, nie zobaczysz w nim większych liczb niż 1 i 2.


Rozdział z książki "Tworznie plików pomocy dla Windows". © 1999 Wydawnictwo Helion