Úvod do programování pro PalmOS



Podobné dokumenty
Čtvrtek 3. listopadu. Makra v Excelu. Obecná definice makra: Spouštění makra: Druhy maker, způsoby tvorby a jejich ukládání

Postup přechodu na podporované prostředí. Přechod aplikace BankKlient na nový operační systém formou reinstalace ze zálohy

Instalace programu ProVIS

MHD v mobilu. Instalace a spuštění. Co to umí

ČÁST 1. Základy 32bitového programování ve Windows

MS Excel makra a VBA

Kontextové dokumenty

Motorola Phone Tools. Začínáme

Začínáme pracovat s tabulkovým procesorem MS Excel

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Postup instalace účetního softwaru ABRA G2 verze pro ČSTV na operačním systému Windows XP

DSL manuál. Ing. Jan Hranáč. 27. října V této kapitole je stručný průvodce k tvorbě v systému DrdSim a (v

!! UPOZORNĚNÍ!! Po nainstalování programu nezapomeňte instalovat Sestavy a Aktualizaci!! Pokyny k instalaci

Obslužný software. PAP ISO 9001

A4300BDL. Ref: JC

1. lekce. do souboru main.c uložíme následující kód a pomocí F9 ho zkompilujeme a spustíme:

Kompletní manuál programu HiddenSMS Lite

Instalace a první spuštění Programu Job Abacus Pro

Uživatelský manuál A4000BDL

NÁVOD NA INSTALACI KARTY PCTV DELUXE

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Nastavení tiskárny pro tisk štítků Geis Str. 1/16

z aplikace Access 2003

NÁVOD NA INSTALACI KARTY PCTV USB2

5a. Makra Visual Basic pro Microsoft Escel. Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Kalina

Zá kládní nástávení prostr edí operáč ní ho syste mu Windows 7 á vybrány čh áplikáčí

Nápověda a postupy. Instalace a aktivace PDF-XChange Viewer Pro. Instalace a aktivace software. Nápověda a postupy. 1 z

Obsah Úvodem... 5 Co je to vlastně formulář... 6 Co je to šablona... 6 Jak se šablona uloží... 6 Jak souvisí formulář se šablonou...

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

Kapitola 1: Úvod. 1.1 Obsah balení. 1.2 Požadavky na systém. Česky

Newsletter RIBTEC automatické aktualizace Praktická novinka v servisu a podpoře k softwaru RIBTEC od verzí 15.0

Osnova kurzu OBSLUHA PC ZÁKLADNÍ ZNALOSTI. pilotního projektu v rámci I. Etapy realizace SIPVZ

Program pro tvorbu technických výpočtů. VIKLAN - Výpočty. Uživatelská příručka. pro seznámení se základními možnostmi programu. Ing.

Návod k aplikaci DPH Kontrol

4a. Makra Visual Basic pro Microsoft Excel Cyklické odkazy a iterace Makra funkce a metody

KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC

Velký křízovkářský slovník 4.0 (VKS) Instalace programu

Úvod. Popis a funkce programu HESLO.

Windows 10 (5. třída)

MS Word 2007 Šablony programu MS Word

IPFW. Aplikace pro ovládání placeného připojení k Internetu. verze 1.1

Uživatelský manuál. A4000 Download

DUM 06 téma: Tvorba makra pomocí VBA

1. Úvod. 2. CryptoPlus jak začít. 2.1 HW a SW předpoklady. 2.2 Licenční ujednání a omezení. 2.3 Jazyková podpora. Požadavky na HW.

1. Základní vlastnosti programu HiddenSMS Lite

Stručný manuál pro webový editor. Ukládáni základních informací, tvorba menu

8 Třídy, objekty, metody, předávání argumentů metod

Pokyny pro instalaci programu E-Config verze 3.0 na počítačích s Windows 7 / 8 / 10

6. lekce Úvod do jazyka C knihovny datové typy, definice proměnných základní struktura programu a jeho editace Miroslav Jílek

APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu

Č í sla slovy 1.3. verze dokumentu: vytvořil: Ing. Pavel Randák předmět: Uživatelský manuál vydavatel: Austro-Bohemia, s.r.o.

AIDA64 Extreme. Příručka k nastavení. v

Postup instalace síťové verze Mount Blue

Uživatelská příručka

Univerzální rezervační systém. Uživatelská příručka

Instalace a nastavení PDFCreatoru

CMS. Centrální monitorovací systém. Manuál

Programové vybavení počítačů operační systémy

PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze Kontakty 08/ Obsah

Demoprojekt Damocles 2404

GeoPlan. Administrátorská příručka. Výstup byl vytvořen s finanční podporou TA ČR v rámci projektu TA Verze 1.0

10 Algoritmizace Příklad 2 Word 2007/ VBA

Průvodce instalací modulu Offline VetShop verze 3.4

Manuál pro mobilní aplikaci Patron-Pro. verze pro operační systém Symbian

Závěrečná práce. AutoCAD Inventor (Zadání D1)

František Hudek. duben 2013

UniLog-D. v1.01 návod k obsluze software. Strana 1

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Android Elizabeth. Verze: 1.1

MOBILNÍ SKLADNÍK. Příručka k základnímu ovládání. Beta verze popisu produktu Aktualizace dokumentu: z 10

NÁVOD. ILLKO Studio View

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

Zpravodaj. Uživatelská příručka. Verze

FortiaViewer verze 5.0

Instalační a uživatelská příručka

Aktualizace softwaru Uživatelská příručka

Windows - základy. Hlavním vypínačem na základní jednotce. K datům uloženým do výchozí složky.

Reliance 3 design OBSAH

Popis programu EnicomD

Instalace a první spuštění programu.

Nápověda k aplikaci EA Script Engine

Manuál k programu IDP 1.0

Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.

Připojení přístroje A4101 k aplikaci DDS2000

Příručka pro aplikaci KSnapshot

Aktivace a aktualizace klíčů

15. Projekt Kalkulačka

BRICSCAD V15. Licencování

MIKROTHERM 825. Monitorovací program MT825C1

Příručka ke službě Postup instalace služby SMSender na operačních systémech Windows 98, Windows Millenium, Windows 2000, Windows XP

1. Umístěte kurzor do sloupce Datový typ na řádek s polem, ve kterém vytvořit chcete seznam.

Gymnázium Vysoké Mýto nám. Vaňorného 163, Vysoké Mýto

Přístup k poště MS Office 365 mají pouze studenti 1. a 2. ročníku EkF prezenčního studia. Přístup k ostatním službám mají všichni studenti.

Zálohování v MS Windows 10

Manuál pro práci s modulem Otázky a odpovědi

OPERAČNÍ SYSTÉM. Informační a komunikační technologie

Windows 8.1 (5. třída)

František Hudek. duben ročník

Transkript:

Úvod do programování pro PalmOS MUDr. Petr Lesný Praha 2003 První vydání Tato kniha představuje první pokus o napsání uceleného českého úvodu do PalmOS. Je zcela zdarma; nikdo vám nebude bránit si ji přečíst nebo vytisknout. Pokud si však tuto knihu ponecháte a naučíte-li se podle ní programovat, můžete mi převést na konto u Komerční banky číslo 943115610267/0100 finanční dar odpovídající možné ceně knihy jako projev uznání téměř roční práce na této knize a podporu tvorby dalších knih o PalmOS. Jediná internetová stránka, na které smí být tato kniha umístěna je http://palmos.wz.cz. Na této stránce jsou uvedeny zdrojové texty příkladů, errata a další informace o připravovaných publikacích. MUDr. Petr Lesný

tuto knihu věnuji své ženě, bez jejíž lásky a trpělivosti bych ji nikdy nedokončil Petr Lesný

Obsah Úvod...8 Fenomén Palm Pilota a tato kniha...8 Omezení operačního systému...8 PalmOS a Windows CE...9 Základy návrhu aplikací pro PalmOS...9 Požadavky na čtenáře a jeho počítač...10 Česká a anglická terminologie...10 Vývojová prostředí...12 Instalace a vyzkoušení...12 Úvod do programování systému PalmOS...14 Hlavičkové soubory (header files)...14 Základní datové typy...14 Funkce PilotMain...15 Aktivní aplikace...16 Zpracování událostí...16 Systémové události (events)...17 Smyčka zpracování událostí...18 Zpracování události aplikací...19 Strukturování aplikace...21 Ukončení aplikace...22 Jednoznačný identifikátor aplikace (Creator ID)...22 Databáze prostředků aplikace...24 Soubor prostředků aplikace...24 Číslo prostředku...25 Systémové informace v souboru prostředků aplikace...25 Ikony aplikace...26 Čísla chyb v PalmOS...28 Překlad první aplikace...29 Součásti vývojového prostředí...29 Překlad zdrojového textu C/C++...29 Překlad souboru prostředků aplikace...31 3

Překlad aplikace...32 Vyzkoušení první aplikace...33 Ladění aplikace...34 Program make...36 Soubor Makefile...37 Důležité skupiny funkcí...39 Rozdělení funkcí v PalmOS...39 Práce s řetězci (strings) v PalmOS...40 Příklad použití řetězců v PalmOS:...41 Operační paměť...41 Uspořádání operační paměti...42 Bloky paměti (chunks)...43 Nepřemístitelné bloky paměti...43 Přemístitelné bloky paměti...44 Kontrola verze operačního systému...45 Čísla s pohyblivou desetinnou čárkou...47 Uložení stavu aplikace (preferences)...48 Ladící hlášky v PalmOS...50 Texty v souboru prostředků aplikace...51 Datum a čas...51 Zajímavé systémové funkce...53 Základy uživatelského rozhraní...54 Návrh uživatelského rozhraní...54 Základní prvky uživatelského rozhraní...54 Definice v souboru prostředků aplikace...55 Velikost a umístění na displeji...56 Formuláře a dialogy...60 Definice formulářů...60 Zobrazení formulářů na displeji...61 Události formuláře a funkce formuláře...62 Přepínání mezi formuláři...63 Definice dialogů...66 Použití dialogů...67 4

Předávání dat mezi formuláři...68 Výzvy (alerts)...70 Menu...72 Systémové události menu...73 Prvky formuláře a dialogu...75 Přehled...75 Definice a společné vlastnosti...76 Práce s prvky dialogů a formulářů...78 Statický text...80 Tlačítka...80 Políčka k zaškrtnutí a přepínače...80 Opakující tlačítka...83 Změna textu v tlačítku...84 Tlačítko volby textu...84 Seznam (List)...85 Změna obsahu seznamu...87 Vyskakovací seznam (Popup list)...88 Uživatelsky kreslený seznam...88 Tlačítko volby ze seznamu...89 Políčka pro vstup textu...90 Stránkování pomocí opakovacích tlačítek...93 Posuvníky...95 Stránkování pomocí posuvníků...97 Spolupráce se schránkou...98 Tabulky...101 Definice v souboru prostředků aplikace...101 Základ použití tabulek...101 Typy dat buňky...103 Obecné základy...105 Inicializace tabulky...105 Aktualizace dat tabulky...107 Spolupráce tabulky s posuvníkem...108 Stránkování tabulky pomocí hardwarových kláves...109 5

Práce se statickými buňkami pro zobrazení čísla, data a textu...110 Práce s uživatelsky kreslenými buňkami...111 Práce s buňkami obsahujícími políčka k zaškrtnutí a výběr ze seznamu...113 Práce s buňkami pro editaci textu...114 Základy grafiky...117 Začínáme kreslit...117 Vykreslení textu...118 Změna písma...119 Výřezy (Rectangles)...121 Ořezávání (clipping)...122 Okna (windows)...123 Souřadnice doteku pera na displeji...125 Neviditelná okna (offscreen windows)...127 Rastrové obrázky (bitmaps)...129 Rastrové obrázky ve formuláři...131 Kreslení rastrových obrázků...131 Databáze...132 Ochrana databází...133 Číslo vnitřní paměťové karty...134 Chyby při práci s databázemi...135 Vytvoření databáze...135 Otevření a zavření databáze...136 Záznamy databáze...137 Vytvoření nového záznamu...138 Úsporné uložení záznamů...139 Čtení a zapisování do záznamů databáze...141 Smazání záznamu a databáze...141 Seřazení databáze...143 Vkládání záznamů do databáze...144 Propojení databáze s tabulkou...144 Závěr...148 Příloha A: Instalace nástrojů pro vývoj...149 Vývojové prostředí Cygwin a balík prc-tools...149 6

PalmOS SDK...153 Dokončení instalace...154 Příloha B: Vybrané funkce PalmOS...158 Funkce pro práci s tlačítky...158 Funkce data...158 Databázové funkce...159 Funkce pro zpracování chyb...166 Funkce fronty systémových událostí...166 Funkce políček...166 Funkce pracující s čísly v pohyblivé desetinné čárce...168 Funkce pracující s písmy...168 Funkce pro práci s formuláři...169 Funkce pro vlastnosti (features)...173 Funkce pro práci se seznamy...173 Funkce pro správu paměti...175 Funkce pro práci s menu...176 Funkce pro práci s uživatelským nastavením (preferences)...177 Funkce pracující s výřezy...177 Funkce pro práci s posuvníkem...178 Funkce pro práci s řetězci...178 Systémové funkce...180 Funkce pro práci s tabulkami...181 Funkce pro práci s časem...186 Funkce správce oken...187 Příloha C: Příklady...190 Příloha D: Seznam prvků formuláře...192 7

Úvod Fenomén Palm Pilota a tato kniha Mobilní výpočetní technika si získává stále více uživatelů. Když byly na trh uvedeny první modely kapesních počítačů Palm Pilot III, získaly si rázem mnoho oddaných příznivců. Velký zájem uživatelů o počítače s operačním systémem PalmOS trvá dodnes. Uživatele přitahuje nízká cena a jednoduché ovládání, nevadí jim černobílý displej, malé rozlišení a nepřítomnost multimediálních funkcí u starších modelů. Operační systém PalmOS je navržen velmi úsporně a jeho programování je méně náročné, než psaní aplikací pro jiná grafická prostředí, ať už se jedná o Microsoft Windows (v libovolné verzi) nebo systém X-Window. Po přečtení této knihy budete tomuto operačnímu systému rozumět a budete schopni vytvořit základní aplikaci pro počítače Palm Pilot a kompatibilní. V této knize se budeme věnovat programování kapesních počítačů s operačním systémem PalmOS do verze 4.1 a pomineme novější multimediální modely s procesorem ARM a PalmOS verze 5.0. Všechny aplikace, které navrhneme však budou kompatibilní s PalmOS 5.0. Pokročilým tématům, jako je například synchronizace s desktopem, zvuk a barevná grafika, se budeme věnovat v jiné knize. Omezení operačního systému Prostředky, kterými disponují počítače Palm Pilot a kompatibilní jsou velmi omezené. Při jejich návrhu vycházeli konstruktéři z předpokladu, že uživatel bude používat Palm Pilot společně se stolním počítačem. Úlohy, které budou náročné na výpočet, zpracuje stolní počítač a Palm Pilot poslouží jen jako inteligentní diář a prohlížeč. Proto jako základ zvolili 16bitový procesor firmy Motorola MC68000, taktovaný na 16 MHz (pokud vzpomínáte na Atari ST a Amigu tak máte pravdu). V novějších modelech je frekvence procesoru dvojnásobná, v modelech s PalmOS 5.0 je již použit procesor ARM taktovaný na vysokých frekvencích. Místo klávesnice byl pro vstup znaků zvolen systém Graffiti (později Graffiti 2); tato změna přinesla významné snížení ceny. Zápis textů pomocí Graffiti je pomalejší než přes klávesnici, ale počítače Palm Pilot nebyly navrženy k psaní dlouhých textů. Na dělání si poznámek po cestě pak Graffiti zcela stačí. Velký důraz je kladen na ovládání pomocí dotekového displeje. Rozlišení displeje většiny počítačů Palm Pilot je 160 na 160 obrazových bodů (pixel); displej je přitom velký 5 6 cm. Ve většině aplikací je na displeji 6 11 řádků textu podle velikosti písma; text je přitom dostatečně čitelný. I při dvojnásobném rozlišení některých novějších modelů počítačů s operačním systémem PalmOS je vysoké rozlišení využito jen k lepšímu prokreslování písma a nikoliv ke zvýšení počtu řádků textu na displeji. Při posuzování kapesních počítačů podle množství operační paměti vychází modely počítačů s PalmOS (dnes průměrně 8 MB) jako chudší příbuzní. Je však potřeba vzít do úvahy, že při spuštění aplikace ji operační systém nepotřebuje kopírovat do jiné části paměti a spouští ji na místě. Z 8 MB paměti RAM je tak využito 512 kb pro zásobník a proměnné operačního systému a zbylých 7,5 MB je možné zcela zaplnit aplikacemi a daty. Průměrná velikost aplikace pro PalmOS se navíc pohybuje okolo 50 kb. Velký důraz je kladen na komunikaci počítačů s PalmOS s okolím. Kromě sériového a infračerveného portu je od verze PalmOS 2.0 implementována rodina protokolů TCP/IP pro komunikaci přes internet. 8

PalmOS a Windows CE Není možné říci, který z operačních systémů je lepší. Operační systém Windows CE a jeho nástupci (Pocket PC) představují pokus implementovat plně multitaskingový operační systém Microsoft Windows na kapesních počítačích. Paměť počítačů s Windows CE je rozdělena na operační paměť a systém souborů, uspořádaných podobně jako u verzí Microsoft Windows pro stolní počítače. Samozřejmostí je možnost přehrávat zvuk a video. To vše klade vysoké nároky na použitý procesor a na velikost operační paměti. Uživatelé kapesních počítačů s Windows CE jsou zvyklí na to, že kapesní počítač slouží k prohlížení a editaci dokumentů pořízených v programech Microsoft Word a Microsoft Excel. Kapesní počítač se pro ně stává zmenšenou verzí stolního počítače a jsou na něj kladeny podobné nároky. Počítače s operačním systémem PalmOS do verze 4.1 nejsou určeny pro multimediální aplikace. Na prvním místě při návrhu aplikací stojí jednoduchost, rychlost reakce a úsporné ovládání, nároky na paměť a rychlost procesoru jsou výrazně menší. Spektrum uživatelů těchto počítačů se rekrutuje z lidí, kteří potřebují mít při ruce kapesní počítač, na kterém ocení jednoduchost použití a možnost komunikace s okolím. Uživatelé počítačů Palm Pilot a kompatibilních neočekávají na svých počítačích rozsáhlé balíky aplikací a kapesní počítač považují spíše za elektronický diář a chytrou kalkulačku. Ocení naopak robustnost a spolehlivost aplikací a úsporné uložení dat. Můžeme říci, že oba dva systémy, PalmOS a Windows CE si zatím konkurují jen zcela okrajově. Zlehčeně lze říct, že bude-li uživatel chtít kapesní diář s funkcemi počítače, sáhne po Palm Pilotech a kompatibilních počítačích; pokud bude chtít kapesní počítač s funkcemi diáře, koupí si pravděpodobně stroj s Windows CE. Základy návrhu aplikací pro PalmOS Z předchozích několika odstavců vyplývá, co všechno musí vzít programátor do úvahy při návrhu aplikací pro PalmOS. Velikost displeje. Z hlediska návrhu uživatelského rozhraní je třeba stále počítat s displejem velikosti 160 * 160 obrazových bodů. Pokud budete místo na displeji používat rozumně tak zjistíte, že je ho dostatek. Vhodné je, rozmyslet si návrh uživatelského rozhraní tak, aby uživateli byly informace prezentovány v logických celcích. Návrhu uživatelského rozhraní se budeme podrobně věnovat ve čtvrté kapitole. Rychlost reakce. Při používání stolního počítače je většina uživatelů zvyklá na pomalý start některých aplikací. Málokterý z nich by však podobné zdržení toleroval při práci s kapesním počítačem. Zejména u počítačů Palm Pilot a kompatibilních uživatel očekává, že bezprostředně po každé akci ať už je to spuštění aplikace nebo stisknutí tlačítka následuje odpovídající reakce. Omezení vstupu textu. Psaní dlouhých textů nebo zadávání číslic pomocí Graffiti je nepohodlné. Uživateli je nutné co nejvíce zjednodušit zadávání dat například pomocí výběru ze seznamu, numerické klávesnice zobrazené na displeji a podobně. Nedostatek paměti. Vždy je potřeba postupovat tak, aby množství paměti, které zabere aplikace a její databáze bylo co nejmenší. Toto pravidlo platí i při návrhu aplikací pro nejnovější modely s velkou operační pamětí. Spíše je dobré omezit funkce aplikace na nezbytné minimum, aby se zachovaly malé nároky na operační paměť. Kompatibilita. Již při návrhu aplikace je třeba si uvědomit, které vlastnosti operačního systému potřebuje aplikace ke své činnosti. Vzhledem k velmi dobré zpětné kompatibilitě jednotlivých modelů je nejlepší navrhovat aplikaci pro nejnižší verzi operačního systému, která již obsahuje požadované vlastnosti. 9

S rychlostí reakce souvisí ukládání stavu aplikace. Na počítačích vybavených operačním systémem PalmOS je vždy právě jedna aplikace v popředí. Tato aplikace komunikuje s uživatelem. V okamžiku, kdy ji uživatel opustí (například stiskem hardwarového tlačítka) musí aplikace v popředí rychle uložit svůj stav, aby se uživatel mohl později vrátit k rozdělané práci. Ukládání stavu aplikace se budeme věnovat ve čtvrté kapitole. Požadavky na čtenáře a jeho počítač Čtenář této knihy by měl mít základní znalosti jazyka C nebo C++. Nemusí se však orientovat v programování Microsoft Windows ani jiného stávajícího operačního systému. V ideálním případě by čtenář měl být schopen dohledat chybějící informace v anglicky psaných manuálech. Pro programování počítačů s operačním systémem PalmOS je zapotřebí vlastnit stolní počítač s Windows 98/NT/2000 nebo operačním systémem UNIX/Linux. Instalace vývojového prostředí podle přílohy A zabere na harddisku 60 100 MB. Aplikace pro Palm Piloty a kompatibilní počítače je možné testovat v simulátoru na stolním počítači. Přesto se vyplatí mít alespoň jeden počítač s PalmOS, čím novější tím lepší nejlépe PalmV nebo novější model. Česká a anglická terminologie Každý autor české knihy o počítačích je postaven před nelehký úkol vypořádat se s anglickou terminologií. Nejjednodušší cestou je důsledně přejímat anglickou terminologii (což vede například k podivně znějící frázi uložíme jako feature ). Druhá možnost je zavedení terminologie vlastní, české. V této knize bude česká terminologie použita pro většinu pojmů, se kterými se setkáme. Za prvním výskytem českého termínu bude vždy uveden v závorce jeho anglický překlad, který je nezbytný k tomu, aby uživatel mohl vyhledávat v anglické dokumentaci. Několik základních termínů, které budeme v knize používat shrnuje následující tabulka: Česky Anglicky Popis Databáze Database Soubor jednotlivých záznamů v paměti Palm Pilota. Databáze se dělí na databáze prostředků aplikace, které obsahují zejména spustitelné programy pro PalmOS a databáze záznamů, které obsahují vlastní data. Databáze prostředků aplikace Soubor prostředků aplikace Resource database Resource file Struktura uložená v paměti Palm Pilota, která obsahuje jednotlivé prostředky aplikace tj. části spustitelné aplikace (instrukce strojového kódu, definici uživatelského rozhraní, ikony a obrázky). Na stolním počítači jsou databáze prostředků aplikace uloženy v souborech s příponou *.prc. Textový soubor, který obsahuje popis uživatelského rozhraní, textové řetězce, konstanty a obrázky, které aplikace využívá ke své funkci. Databáze záznamů Record database Soubor záznamů, uložený v paměti Palm Pilota, který obsahuje data aplikace. Tato data jsou na stolním počítači uložena v souborech s příponou *.pdb. 10

Záznam Record Databáze je sestavena ze záznamů. Záznamy jsou řazeny za sebou a každý záznam má své pořadí a své jedinečné číslo, které jej v databázi identifikuje. Událost Event Zpráva, kterou zasílá operační systém aplikaci. Některé zprávy jsou zasílány jako odpověď na akce uživatele například dotek perem na displeji, vstup znaku; jiné události (zprávy) zasílá systém aplikaci aby ovlivnil její chování třeba příkaz k ukončení aplikace. Menu Menu Nabídka, která se zobrazí po stisknutí levého dolního tlačítka nebo po ukázání na titulek formuláře. Okno Window Pravoúhlý výřez displeje, který je na nejnižší úrovni používán k vykreslení prvku uživatelského rozhraní apod. Základní okno je velké 160 * 160 obrazových bodů a zabírá celý displej Palm Pilota. Další okna můžeme na displeji vytvářet my. Formulář Form Základní prvek uživatelského rozhraní Palm Pilota. Na displeji musí být vždy zobrazen formulář, který obsahuje prvky uživatelského rozhraní (tlačítka, políčka pro vstup textu, tabulky a podobně). Grafická podoba formulářů je definována v souboru prostředků aplikace. Dialog Dialog Dotaz na vstupní data, který se objevuje nad formulářem a který musí uživatel potvrdit nebo zrušit stisknutím některého z tlačítek. Dialog je definován v souboru prostředků aplikace stejně, jako formulář (liší se tím, že u definice dialogu je použito klíčové slovo MODAL, které způsobí odlišný vzhled dialogu). Také grafická podoba dialogu je definována v souboru prostředků aplikace. 11

Výzva Alert Jednoduché varování nebo informace, kterou musí uživatel potvrdit. Řetězec String Pole znaků, ukončených znakem \0. Vývojová prostředí Oficiálním vývojovým prostředím pro počítače Palm Pilot a kompatibilní je CodeWarrior pro PalmOS firmy Metrowerks (www.metrowerks.com). V tomto velmi komfortním vývojovém prostředí byl napsán celý operační systém PalmOS a vytvořeny všechny aplikace uložené v paměti ROM. Nevýhodou tohoto vývojového prostředí je jeho cena, která se pohybuje v řádu stovek dolarů. Pro zájemce nabízí firma Metrowerks ke stažení testovací verzi vývojového prostředí, která však do každé aplikace vloží varování, že aplikace nesmí být distribuována. Programování v Metrowerks CodeWarrior je pohodlné, ale natolik odlišné od použití bezplatných (freeware) programovacích nástrojů, že nemá smysl se s ním učit zacházet, pokud nemáte 600 dolarů na koupi plné verze. Vzhledem k vysokému zájmu technicky zdatných uživatelů o počítače Palm Pilot a kompatibilní se na internetu záhy objevil volně dostupný balík aplikací prc-tools. Jednalo se o standardní GNU kompilátor jazyka C/C++, který byl upraven pro vytváření aplikací pro procesory Motorola 68000. Balík aplikací prc-tools je šířen v licenci GPL (GNU general public licence), jejíž český překlad si můžete přečíst na adrese http://www.gnu.cz/gplcz. Stručný výtah z licenčních podmínek je následující: je-li program šířen pod licencí GPL, můžete jej používat zdarma a bez jakéhokoliv omezení k čemukoliv, včetně psaní komerčních aplikací. Společnost 3Com, která v té době produkovala počítače Palm Pilot, začala prc-tools neoficiálně podporovat a psaní aplikací pro PalmOS se stalo oblíbenou zábavou mnoha programátorů. Vzhledem k jednoduchosti programování jsou dnes na internetu tisíce freeware aplikací pro počítače Palm Pilot a kompatibilní, vytvořených pomocí prc-tools. Z počáteční experimentální podoby se balík prc-tools vyvinul až do současné verze 2.2, kterou můžete instalovat podle přílohy A. Tato verze umí nejen komfortně překládat aplikace pro operační systém PalmOS, ale poradí si i s programováním procesoru ARM počítačů s PalmOS 5.0. Pro použití prc-tools musíte mít na počítači nainstalováno volně dostupné vývojové prostředí Cygwin, jehož instalaci si popíšeme v příloze A. Instalace a vyzkoušení Instalace vývojového prostředí z přiloženého CD ROM je podrobně popsána v příloze A této knihy. Po instalaci restartujte počítač a klikněte na ikonu označenou Cygwin, kterou instalační program u místil na desktop. Mělo by se objevit okno, ve kterém můžete zadávat příkazy. Zkuste spustit některé z programů, které jsou součástí instalovaného vývojového prostředí. Zadejte postupně příkazy, které jsou tučně uvedeny v následujícím rámečku. 12

$ palmdev-prep Checking SDKs in /PalmDev sdk-4 headers in 'include', libraries in 'lib' sdk-5 headers in 'include', libraries in 'lib' When GCC is given no -palmos options, SDK '5' will be used by default Writing SDK details to target specs files......done $ m68k-palmos-gcc -v Reading specs from /usr/lib/gcc-lib/m68k-palmos/2.95.3-kgpd/specs Reading specs from /usr/lib/gcc-lib/m68k-palmos/specs gcc version 2.95.3-kgpd 20010315 (release) $ pilrc v PilRC v2.8 patch release 6 Copyright 1997-1999 Wes Cherry (wesc@ricochet.net) Copyright 2000-2001 Aaron Ardiri (aaron@ardiri.com) This program is free software; you may redistribute it under the terms of the GNU General Public License. This program has absolutely no warranty, you use it AS IS at your own risk. usage: pilrc <options> infile [outfiledir]... Pokud se po spuštění programů palmdev-prep, m68k-palmos-gcc a pilrc zobrazí text podobně jako v uvedeném rámečku, jsou všechny aplikace pro překlad správně instalovány. 13

Úvod do programování systému PalmOS Hlavičkové soubory (header files) Hlavičkové soubory (header files) pro operační systém PalmOS verze 5.0 jsme v předchozí kapitole nainstalovali do adresáře C:\cygwin\PalmDev\sdk-5\include. V tomto adresáři by se měl vyskytovat soubor PalmOS.h, což je jediný hlavičkový soubor, který musíte vložit na začátek vaší aplikace pro PalmOS: #include <PalmOS.h> Soubor PalmOS.h zajistí vložení všech základních definic z dalších hlavičkových souborů. Jednak ze souboru PalmTypes.h, ve kterém jsou definovány základní datové type a jednak ze souborů, které se nachází ve vnořených adresářích Core\System a Core\UI. V adresáři Core\System se nachází definice jednotlivých součástí operačního systému: například v souboru MemoryMgr.h (zkratka z Memory Manager API) jsou uvedeny funkce pracující s pamětí. Podobně se v adresáři Core\UI nachází definice struktur a funkcí pro součásti uživatelského rozhraní. Základní datové typy Vzhledem k přenositelnosti aplikací mezi jednotlivými vývojovými prostředími je doporučeno využívat místo standardních datových typů jazyka C/C++ (int, char) výhradně datové typy definované v souboru PalmTypes.h. Tyto datové typy jsou přehledně shrnuty v následujících dvou tabulkách: Celá čísla se Celá čísla bez Znaky znaménkem znaménka 1bytová Int8 UInt8 Char 2bytová Int16 UInt16 Wchar 4bytová Int32 UInt32 Velikost Popis Boolean 1bytová Logické hodnoty true a false. Coord 2bytová Označení souřadnic na displeji. Err 2bytová Číslo chyby. MemPtr 4bytová Ukazatel (pointer) do paměti (obdoba void* v C/C++) MemHandle 4bytová Ovladač pohyblivého bloku paměti. LocalID 4bytová Ovladač databázového záznamu. V hlavičkových souborech je také definováno mnoho strukturovaných datových typů. Ve většině případů začíná jméno struktury velkým písmenem a končí...type. Ukazatel na tuto strukturu pak končí namísto toho písmeny...ptr (například EventType a EventPtr). 14

Funkce PilotMain Vstupním bodem vašeho programu (podobně jako je v jazyce C/C++ funkce main) je při psaní aplikací pro PalmOS funkce PilotMain. Operační systém volá tuto funkci když uživatel spustí aplikaci dotekem pera na ikoně nebo hardwarovým tlačítkem. Funkce PilotMain je volána i v řadě jiných případů: například když si uživatel přeje najít nějaká data pomocí globálního vyhledávání, jsou postupně spuštěny všechny aplikace (jsou volány funkce PilotMain všech aplikací) a dostanou možnost přidat do seznamu nalezených záznamů svá data. Podobně když uživatel změní čas nebo datum tak jsou volány všechny aplikace (funkce PilotMain všech aplikací) a dostanou možnost na tuto změnu zareagovat. V parametru cmd je funkci PilotMain předán důvod spuštění aplikace (launch code). Několik možných důvodů spuštění aplikace je v následující tabulce; v této knize se budeme zabývat pouze prvním z nich, který označuje normální spuštění aplikace: Důvod spuštění sysapplaunchcmdnormallaunch sysapplaunchcmdexgaskuser sysapplaunchcmdexgreceivedata sysapplaunchcmdsyncnotify sysapplaunchcmdsystemreset sysapplaunchcmdtimechange Význam Normální start programu způsobený tím, že uživatel spustil program ukázáním na jeho ikonu, přes klávesovou zkratku nebo pomocí hardwarového tlačítka. Takto je aplikace spuštěna, když prostřednictvím infračerveného spojení nabídne druhý počítač objektová data (beaming). Podle hodnoty, kterou funkce PilotMain() vrátí jsou pak data buď přijata nebo odmítnuta. Funkce PilotMain() je spuštěna protože jsou prostřednictvím infračerveného spojení přijata data určená pro aplikaci. Aplikace je volána po skončení procedury HotSync, protože byla změněna její data. S tímto kódem jsou volány všechny aplikace před restartem systému. Funkce PilotMain() je volána při změně systémového data a času. UInt32 PilotMain(UInt16 cmd, MemPtr cmdpbp, UInt16 launchflags) if(cmd == sysapplaunchcmdnormallaunch) // Příkaz ke spuštění aplikace return 0; Pro většinu našich aplikací postačí, budeme-li testovat parametr cmd a při jakémkoliv jiném důvodu spuštění než sysapplaunchcmdnormallaunch funkci ukončíme. Pokud vše proběhlo bez chyb, vrátí funkce PilotMain nulovou hodnotu; jakákoliv jiná hodnota bude interpretována jako číslo chyby (o číslech chyb více v této kapitole). 15

Aktivní aplikace Na počítačích vybavených operačním systémem PalmOS může být v každém okamžiku spuštěna právě jedna aplikace. Při používání Palm Pilota to sice vypadá, jako bychom se mohli mezi jednotlivými aplikacemi přepínat, ale to je jen zdání, vyvolané tím, že dobře napsaná aplikace ukládá do paměti stav, ve kterém jsme ji opustili a při svém spuštění se k němu vrací. Pokud tedy máte spuštěný MemoPad a stisknete tlačítko spouštějící aplikaci DateBook dojde k následující posloupnosti akcí: 1. Aplikace MemoPad dostane příkaz skončit, 2. takže uloží rozepsaný text, pozici kursoru a kategorii 3. a skončí. 4. Je spuštěna aplikace DateBook, 5. proto zkontroluje uložený stav, aby měl uživatel pocit rozdělané práce 6. a zobrazí rozdělanou práci. Mechanismem, který zajišťuje ukončení aplikace jsou systémové události (events), které operační systém PalmOS zasílá aktivní aplikaci. Aktivní aplikace si vybírá, které systémové události zpracuje a které bude ignorovat. Zpracování událostí Většina programů potřebuje komunikovat jak s uživatelem tak s operačním systémem. V operačním systému PalmOS je tato komunikace vyřešena prostřednictvím tzv. systémových událostí (events). Použití systémových událostí si probereme na příkladu komunikace s uživatelem. Dejme tomu, že uživatel stiskne pravé hardwarové tlačítko a spustí aplikaci MemoPad. Z hlediska operačního systému a aplikací se stane následující: 1. Operační systém čeká ve smyčce zpracování událostí co se stane (a při tomto čekání má velice malé nároky na baterie). 2. Uživatel stiskne hardwarové tlačítko. 3. Operační systém vytvoří systémovou událost keydownevent (která znamená, že byl napsán znak, stisknuto hardwarové tlačítko apod.) a zašle ji právě aktivní aplikaci. 4. Aktivní aplikace tuto zprávu ignoruje (pokud se nejedná například o hru, která je ovládána hardwarovými tlačítky a která zpracovává jejich události). 5. Zpráva se vrátí operačnímu systému jako nezpracovaná. Operační systém dospěje k názoru, že v takovém případě je potřeba spustit aplikaci MemoPad. 6. Operační systém pošle aktivní aplikaci systémovou událost appstopevent (příkaz k ukončení aplikace). 7. Aktivní aplikace tuto událost povinně zpracuje a skončí (opustí funkci PilotMain). 8. Operační systém spustí funkci PilotMain aplikace MemoPad. 9. Operační systém zase čeká ve smyčce zpracování událostí (tentokrát aplikace MemoPad) na to, co se stane. Komunikace s uživatelem prostřednictvím zpracování událostí je pro operační systém velmi výhodná. Nejvíce času stráví uživatel prohlížením informací na displeji a v této době operační systém pouze čeká až se něco stane až uživatel napíše znak Graffiti, dotkne se displeje nebo stiskne hardwarové tlačítko. Při tomto čekání je procesor v režimu s velmi malými nároky na baterie. 16

Systémová událost je pak zaslána té aplikaci, která je právě aktivní - která právě komunikuje s uživatelem a jejíž data jsou zobrazena na displeji. (Připomeňme si, že v každém okamžiku je na Palm Pilotu aktivní pouze jedna aplikace.) Aktivní aplikace se poté postará o zpracování této události. Popisovaný princip je velmi jednoduchý. Vyžaduje však, aby byly všechny vaše aplikace vystavěny na podobném základě. Srdcem každého programu musí být takzvaná smyčka zpracování událostí, ve které zpracováváme zprávy o systémových událostech, které byly naší aplikaci doručeny operačním systémem. Pokud aplikace přestane zpracovávat události, dojde k zatuhnutí počítače a nutnosti jej restartovat. Operační systém PalmOS udržuje zprávy o událostech ve frontě, do které se na jedné straně zprávy postupně ukládají a na straně druhé jsou aktivní aplikací nebo operačním systémem postupně a různě rychle odebírány. (PalmOS ve skutečnosti udržuje fronty dvě: první pro pohyb pera po plošce Graffiti, který generuje mnoho událostí, a druhou pro všechny ostatní události systému). Systémové události (events) Systémová událost je uložena v datové struktuře EventType. V této struktuře je uložen jednak typ systémové události (příkaz k ukončení aplikace, oznámení o stisknutí tlačítka) a jednak upřesňující údaje. Zjednodušená definice této datové struktury je (kompletní definici naleznete v souboru Core\UI\Event.h): typedef struct EventType // datové prvky společné pro všechny systémové události eventsenum etype;... Int16 screenx; Int16 screeny; // datové prvky specifické pro tu kterou událost union struct frmopen UInt16 formid; ; struct ctlselect UInt16 controlid; struct ControlType *pcontrol; Boolean on; ;... data; EventType; typedef EventType *EventPtr; 17

V prvku etype je uložen kód systémové události; údaje, které jsou pro událost specifické, jsou uloženy v datové struktuře data typu union. K těmto údajům můžeme přistupovat například takto: EventType udalost; typ = udalost.etype; id = udalost.data.frmopen.formid; id = udalost.data.ctlselect.controlid; Kompletní seznam systémových událostí naleznete v referenční příručce k operačnímu systému PalmOS. V další kapitole naší knihy se budeme věnovat systémovým událostem, které pro nás budou důležité z hlediska programování uživatelského rozhraní. Následující tabulka obsahuje příklad důležitých systémových událostí, které nás budou v knize provázet: Kód události Popis Upřesňující údaje appstopevent Příkaz k ukončení aplikace. Tuto systémovou událost musí povinně zpracovat každá aplikace. nilevent Tato zpráva je poslána naší aplikaci když vyprší časový interval předaný funkci EvtGetEvent a nestalo se nic jiného. pendownevent penmoveevent penupevent Spuštění pera na displej, pohyb perem po displeji a zvednutí pera z displeje. Tyto systémové události většinou zpracovává operační systém PalmOS. V prvcich screenx a screeny je poloha pera na displeji nebo na plošce pro zápis Graffiti. menuevent Uživatel vybral příkaz z menu. Identifikátor vybraného příkazu je uložen v prvku data.menu.itemid. ctlselectevent keydownevent frmloadevent Uživatel stiskl tlačítko nakreslené na displeji. Uživatel zapsal znak Graffiti nebo stisknul hardwarové tlačítko. Požadavek na zobrazení formuláře. Identifikátor stisknutého tlačítka je uložen v prvku data.ctlselect.controlid. V prvku data.keydown.chr je ASCII kód zapsaného znaku. V prvku data.frmload.formid je uložen identifikátor formuláře, který je potřeba zobrazit na displeji. Smyčka zpracování událostí Smyčka zpracování událostí je povinnou součástí každé aplikace. V této smyčce čeká naše aplikace na systémovou událost (funkce EvtGetEvent) a po jejím přijetí tuto událost nejprve 18

nabídne ke zpracování operačnímu systému (funkce SysHandleEvent) a poté ji zpracuje sama. Druhý parametr funkce EvtGetEvent udává dobu v setinách sekundy, po kterou bude funkce EvtGetEvent na událost čekat (konstanta evtwaitforever znamená, že bude čekat neomezeně dlouho). Druhá nejjednodušší funkce PilotMain, která již obsahuje smyčku zpracování událostí, vypadá takto (příklad 1): UInt32 PilotMain(UInt16 cmd, MemPtr cmdpbp, UInt16 launchflags) EventType udalost; if (cmd == sysapplaunchcmdnormallaunch) // Toto je smyčka zpracování událostí do EvtGetEvent(&udalost, evtwaitforever); if(!syshandleevent(&udalost)) // Událost může zpracovat naše aplikace while(udalost.etype!= appstopevent); return 0; Pokud tuto aplikaci přeložíme a spustíme, tak se po doteku perem na ikoně displej vymaže a neděje se nic. Pokud stiskneme tlačítko pro návrat do správce aplikací nebo hardwarové tlačítko tak naší aplikaci korektně opustíme. Zpracování události aplikací Už víme, že hlavní součástí naší aplikace bude smyčka zpracování událostí a uvedli jsme si nejjednodušší příklad, ve kterém jsme systémové události jenom předávali operačnímu systému. Nyní musíme do naší aplikace doplnit vlastní zpracování událostí. V následující kapitole si ukážeme, jak je vytvářeno uživatelské rozhraní. Zjednodušeně lze říci, že v každém okamžiku je na displeji umístěn jeden formulář (form), který obsahuje prvky uživatelského rozhraní. Jedna aplikace může obsahovat více formulářů. Například vestavěná aplikace MemoPad obsahuje formuláře dva: (1) seznam poznámek a (2) text jedné poznámky. Pro každý z formulářů je ve zdrojovém kódu programu definována funkce formuláře, která se jednoduše stará o zpracování systémových událostí, které generují prvky uživatelského rozhraní formuláře například stisknutí tlačítka ve formuláři se seznamem poznámek vede k vytvoření nové poznámky a zobrazení formuláře pro její úpravu. 19

Zpracování událostí v aplikaci probíhá následujícím způsobem: pokud se nejedná o systémovou událost, která ovlivňuje chování aplikace jako celku (třeba konec aplikace) tak je zpráva předána přímo funkci formuláře, který je zobrazen na displeji. Výjimku tvoří přepínání mezi formuláři, které musí být ošetřeno centrálně. Funkce formuláře zpracovává systémové události, ke kterým došlo v době, kdy byl formulář zobrazen na displeji. Většinou se jedná o reakci na činnosti uživatele stisknutí tlačítek, výběr kategorie nebo zapsání znaku. Smyčka zpracování událostí 90% aplikací pro PalmOS vypadá podobně jako na následujícím příkladu: void ZpracovaniUdalosti() EventType udalost; Err chyba; do EvtGetEvent(&udalost, evtwaitforever); if(!syshandleevent(&udalost)) if(!menuhandleevent(null, &udalost, &chyba)) if(udalost.etype == frmloadevent) NahrajFormular(udalost.data.frmLoad.formID); else FrmDispatchEvent(&udalost); while(udalost.etype!= appstopevent); Funkce SysHandleEvent zpracuje systémové události (například přeloží tah perem na plošce Graffiti na událost vstupu znaku) a funkce MenuHandleEvent se stará o ošetření událostí, které vytváří a zpracovává uživatelská nabídka (menu). Pokud ani jedna z těchto funkcí událost nezpracovala, dostává příležitost naše aplikace. 20