AMIGA REVIEW online
  Uvodná stránka     Software     Hry     Obaly     Download     Kniha návštev     Amiga na PC     Amiga Forever  

Zneužíváme MultiView

Petr Mareš

Asi málokoho hned napadne, jak se dá tento systémový program zneužít. Tím nemyslím přehrávání a ukazování všelijakých obrázků, textů, nebo zvuků, to snad umí každý. Ač se to může zdát nemožné, Multiview je celkem obstojný nástroj pro vytváření GUI pro různé aplikace. Výborně se hodí pro scripty, shellovské příkazy a programové nabídky. Jak je to možné? Pomocí AmigaGuide dokumentu. Majitelé KS 2.x nemusí být nešťastní, mohou používat jejich AmigaGuide prohlížeč, nicméně jsou ochuzeni o zábavu s datatypy.

Abych vás hned ze začátku moc nepolekal, uvedu pro začátek nepříliš složitý (a také nepříliš užitečný) dokument, který zjednoduší nastavování parametrů obrazu a na kterém si vysvětlíme, jak se AmigaGuide může chovat jako normální program. Ještě jedno upozornění: obsah složených závorek musí být na jednom řádku, jinak by nám tlačítka nefungovala.
Tak teď ten příklad:

@database ScreenPrefs
@node Main Obraz
@font topaz-k8.font 8
@{„ Gr.Mód „ system „RUN SYS:Prefs/ScreenMode“}
@{„ Paleta „ system „RUN SYS:Prefs/Palette“}
@{„ Pozadí „ system „RUN SYS:Prefs/WBPattern“}
@{„ Font „ system „RUN SYS:Prefs/Font“}
@{„ Oversc.“ system „RUN SYS:Prefs/Overscan“}
@endnode

Tady toto nabušte do klávesnice a pusťte na to MultiView. Jak to funguje? Při zmáčknutí tlačítka se spustí příslušný preferenční program ovládající tu či onu vlastnost obrazu. Ti, kteří již někdy slyšeli o událostmi řízeném programování, ví, o čem mluvím. K samotnému obsahu dokumentu řeknu jenom tolik, ze první dva řádky jsou víceméně povinné a třetí řádek je tam kvůli správnému vypisování češtiny, na to místo dosaďte jméno fontu, který pro češtinu běžně používáte. Na čtvrtém až osmém řádku jsou zapsány tlačítka a jména programů s parametry, které se spustí po zmáčknutí. Poslední řádek náš dokument ukončuje. Další podrobnosti o tvorbě AmigaGuide dokumentů najdete v 22. čísle AMIGA Review. Takový program by však neměl velký smysl, pokud by nám nenabídnut ještě něco navíc. Celkem se hodí dodělat tlačítka pro spuštění promotéru nebo pro nastavení našich oblíbených preferencí. Tlačítko

@{„Velké fonty“ system „Copy SYS:Prefs/Presets/Big_font.prefs ENV:sys/font.prefs“}

je příkladem toho, jak se to dá udělat. Námětů k vylepšení lze najít spousty a je možné, že by z toho mohl vzejít celkem zajímavý prográmek. Pokud si pomocí utility FKey na nějakou klávesovou kombinaci přiřadíte spuštění

MultiView S:Preference.guide SCREEN

budete mít vždy po ruce vše, co k nastavování preferencí potřebujete.
Při psaní lepších dokumentů se ale neobejdeme bez volání shellovských scriptů a bez znalosti ovládání MultiView přes ARexx. Spouštění scriptů není nijak složité, jen v definici tlačítka napíšeme na místo spouštěného programu „Execute JMÉNO SCRIPTU“. Abychom mohli používat ARexx, musíme toho udělat více. Musí běžet ARexxovský server RexxMast a musíme vědět jméno portu našeho MultiView. Pokud spouštíte RexxMast hned při bootování, tak vás první problém nesouží. Co se týče jména portu, nejlepší bude, když MultiView hned při spouštění řekneme, jak se má port jmenovat. To se dělá parametrem PORTNAME JménoPortu. Pokud toto nezadáme, MultiView si zvolí jméno portu „MULTIVIEW.x“, kde x je obvykle jednička. Pokud zadáte jméno portu pomocí parametru, může se vám stát, že port tohoto jména již existuje a MultiView se bohužel nespustí. Nejlepší volba jména portu je taková, abychom s nim neměli v ARexxu problémy, nedoporučuji tudíž používat apostrofy a uvozovky.

K dispozici jsou nám následující ARexxové příkazy:
OPEN NAME/K, CLIPBOARD/S, CLIPUNIT/K/N - slouží k (jaké překvapení) otevření požadovaného souboru. Chceme-li tedy donutit již otevřené MultiView k tomu, aby zapomnělo na to, co ukazovalo dosud a ukázalo nám soubor SPat v adresáři S:. napíšeme
RX „Address PORTNAME OPEN NAME S : SPat “
Za „PORTNAME“ si dosaďte jméno portu toho MultiView, po kterém to chcete. Když uvedete parametr CLIPBOARD, zobrazí se obsah clipboardu.
RELOAD - znova nahraje právě otevřený soubor
SAVEAS NAME/K, IFF/S - uloží data pod uvedeným názvem na disk. IFF způsobí, že data budou ukládána ve formě IFF
PRINT - vytiskne objekt na tiskárnu
ABOUT - ukáže About okénko, stejné jako v menu „Project/About...“
QUIT - ukončí MultiView
MARK - Po tady tomto příkazu se spustí mód označování (nejspíše to funguje jen u obrázků). Ekvivalentní je výběr „Mark“ z menu „Edit“.
COPY - zkopíruje označený blok do clipboardu.
CLEARSELECTED - odznačí vysvícení bloku
SCREEN TRUE/S, FALSE/S - Pokud uvedete parametr TRUE, MultiView použije vlastní obrazovku, pokud FALSE, okénko se otevře na defaultním public screenu
PUBSCREEN NAME/A - způsobí, že se MultiView přesune na uvedenou erární obrazovku
SNAPSHOT - uloží současnou pozici okna do adresáře ENV:
GETCURRENTDIR - vrací v proměnné RESULT jméno adresáře, ve kterém se nachází otevřený soubor. Nezapomeňte říct ARexxu, aby vracel výsledky, to se dělá ARexx příkazem OPTIONS RESULTS
GETFILEINFO - vrátí jméno souboru
GETOBJECTINFO VAR/S, STEM/K - vrátí informace o objektu. Použijte VAR, aby výsledek vrátil v proměnné RESULT
MINIMUMSIZE, NORMALSIZE, MAXIMUMSIZE - nastavují velikost okna na minimální, normální a maximální
WINDOWTOFRONT, WINDOWTOBACK - slouží pro nastavování okna do popředí a do pozadí
ACTIVATE WINDOW - aktivuje oknu. Vhodně při použití příkazu MARK
SCREENTOFRONT, SCREENTOBACK - umístí obrazovku, na které leží MultiView, do popředí, nebo do pozadí
BEEPSCREEN - blikne obrazovkou, popřípadě přehraje výstražný sampl, podle nastavených sound preferenci

To bychom měli příkazy, kterými se ovládá samotné MultiView. Pokud je zobrazen AmigaGuide dokument, můžeme použít i ovládání samotného AmigaGuide. Jméno jeho portu dostaneme zejména portu MultiView přidáním koncovky „.1“. Příkazy, na které AmigaGuide reaguje jsou RETRACF, PREVIOUS a NEXT, jejichž význam by měl být zřejmý.
Nyní už toho víme dost, abychom mohli naprogramovat něco rozumného. Co byste říkali na jednoduchý konvertor obrázků? Nahrát obrázek v libovolném formátu umíme (pokud na to máme datatypy). uložit ve formátu IFF rovněž. GUI máme, co více si přát? Tak se podívejme na tělo programu:

@database Konvertor
@font topaz-k8.font 9
@help MujHelp
@node Main „Konvertor obrázků“ Konvertor obrázků
@{„ Načíst „ system „Execute S:Conv/Load“}
@{„ Zapsat „ system „Execute S:Conv/Save“}
@endnode
@node MujHelp „Nápověda“
Tlačítkem „Načíst“ si vyberte soubor, který chcete převést do formátu IFF a zmáčkněte tlačítko „Zapsat“. @endnode

Narozdíl od našeho scriptu pro preference je tu navíc nápověda pro uživatele umístěná místo standardního HELPu. Důležité je ovšem volání externích shellovských scriptů „Load“ a „Save“. Tyto scripty musí být umístěny v adresáři S:Conv. Ty dělají hlavní práci, takže se na ně hezky podíváme:

;$VER: Load pro Konvertor
Failat 21
SetENV Poml RequestFile TITLE „Načíst“

Jediné, co tento script dělá, je to, že si zapamatuje jméno souboru, který chceme konvertovat. V scriptu „Save“ tady tento soubor načteme do nového MultiView a pomocí ARexxu ho donutíme aby se zapsal na disk do pomocného souboru ve formátu IFF. Pak necháme uživatele, aby si vybral nové jméno pro zkonvertovaný obrázek a obrázek tam z pomocného souboru zkopírujeme:

;$VER: Save pro konvertor
Failat 21
Run <>NIL: MultiView „GetENV Poml “ PORTNAME MV-0 SCREEN
WaitForPort MV-0
IF NOT WARN
RX „address MV-0 SAVEAS IFF NAME T:Pom “
RX „address MV-0 QUIT“
Copy T:Pom RequestFile TITLE „Zapsat“
EndIF
UnSetENV Poml
UnSetENV T:Pom
UnSetENV T:Pom.info

Tady vidíte příklad toho, že se dá v MultiView opravdu něco rozumného naprogramovat. Tento konvertor je sice celkem nekompletní a v dnešní tvrdé konkurenci dobrých konvertorů by neobstál, ale mnohým může být živnou půdou pro jejich experimenty.
Tím bych chtěl uzavřít povídání o programování v AmigaGuide a věnovat se na chvíli ještě něčemu jinému. Jak už byla řeč, MultiView umí zkopírovat obsah okénka do clipboardu. Tento clipboard však krom MultiView používají také textové editory, Shell a další programy. Typicky, po zmáčknutí klávesové kombinace PraváAmiga-v, se text, který je zkopírován do clipboardu, vypíše na obrazovku, jako by byl zadán z klávesnice. Výborný nápad jak to využít, je udělat si script, který otevře souborový requester a jméno vybraného souboru napíše do clipboardu. Tady, je:

Set qrq RequestFile
Echo >T:Pom1 „$qrq“ NOLINE
RUN >NIL: MultiView T:Pom1 BACKDROP PORTNAME RF
WaitForPort RF
RX „Address RF COPY;Address RF QUIT“
UnSet qrq
UnSetENV T:Pom1

Na prvním a druhém řádku vyrobíme textový soubor, který se vypíše po zmáčknutí PraváAmiga-v. Důležité je na druhém řádku „NOLINE“, kdybychom ho tam nedali, po vypsání textu by se nám vypsal i znak nového řádku, což by bylo (například v shellu) nejspíše nežádoucí. Na dalších dvou řádcích se spouští MultiView, které na pátém řádku nutíme k tomu, aby zapsal načtený textový soubor do clipboardu. Pokud si spuštění tohoto scriptu přiřadíte na nějakou klávesovou zkratku pomocí starého dobrého FKey, ani vám moc nebude vadit, když vám nějaký program při výběru souborů nenabídne filerequester.
Poslední způsob využití MultiView, který mne napadá. je jednoduché formátování textu. Použijeme k tomu zase AmigaGuide. Pokud třeba chcete vycentrovat všechny řádky v textovém souboru, jeden ze způsobů jak to udělat je z něj udělat AmigaGuide dokument s automatický centrováním a v MultiView jej zkopírovat do clipboardu a z něj pak zapsat do textového souboru, třeba pomocí PraváAmiga-v v CEDu, nebo příkazem MultiView CLIPBOARD a pak uložením do souboru.
Z textového dokumentu uděláme jednoduchý formátovaný AmigaGuide upravením do této podoby

@database a
@node main a
@{JCenter}
Text text text
@endnode

Pokud „JCenter“ nahradíte slovem „JRight“, text se bude zarovnávat doprava. A celé formátování máte hotovo během minuty.
A pak že je MultiView jen prohlížeč souborů ...

Vytlačiť článok


© ATLANTIDA Publishing Všechna práva vyhrazena.
Žádna část nesmí být reprodukována nebo jinak šířena bez písemného svolení vydavatele.



Amiga na Vašem PC rychle, snadno a zdarma!


none

AMIGA REVIEW

57 ( 11-12 / 2000 )
56 ( 9-10 / 2000 )
55 ( 7-8 / 2000 )
54 ( 5-6 / 2000 )
53 ( 3-4 / 2000 )
52 ( 1-2 / 2000 )
 
51 ( 12 / 1999 )
50 ( 11 / 1999 )
49 ( 10 / 1999 )
48 ( 9 / 1999 )
46-47 ( 7-8 / 1999 )
45 ( 6 / 1999 )
44 ( 5 / 1999 )
43 ( 4 / 1999 )
42 ( 3 / 1999 )
41 ( 2 / 1999 )
40 ( 1 / 1999 )
 
39 ( 12 / 1998 )
38 ( 11 / 1998 )
37 ( 10 / 1998 )
36 ( 9 / 1998 )
35 ( x / 1998 )
34 ( x / 1998 )
33 ( 1-2 / 1998 )
 
32 ( 11-12 / 1997 )
31 ( 9-10 / 1997 )
30 ( 7-8 / 1997 )
29 ( 6 / 1997 )
28 ( 5 / 1997 )
27 ( 4 / 1997 )
26 ( 3 / 1997 )
25 ( 2 / 1997 )
24 ( 1 / 1997 )
 
23 ( 12 / 1996 )
22 ( 11 / 1996 )
21 ( 10 / 1996 )
20 ( 9 / 1996 )
18-19 ( 7-8 / 1996 )
17 ( 6 / 1996 )
16 ( 5 / 1996 )
15 ( 4 / 1996 )
14 ( 3 / 1996 )
13 ( 2 / 1996 )
12 ( 1 / 1996 )
 
11 ( 12 / 1995 )
10 ( 11 / 1995 )
9 ( 10 / 1995 )
8 ( 9 / 1995 )
7 ( 7 / 1995 )
6 ( 5 / 1995 )

ATLANTIDA NEWS

5 ( 3 / 1995 )
4 ( 1 / 1995 )
 
3 ( 11 / 1994 )
2 ( 9 / 1994 )
1 ( 7 / 1994 )
0 ( 5 / 1994 )