BAKALÁŘSKÁ PRÁCE. Převod Windows Forms do Windows Presentation Foundation. Converting Windows Forms into Windows Presentation Foundation.

Rozměr: px
Začít zobrazení ze stránky:

Download "BAKALÁŘSKÁ PRÁCE. Převod Windows Forms do Windows Presentation Foundation. Converting Windows Forms into Windows Presentation Foundation."

Transkript

1 BAKALÁŘSKÁ PRÁCE Převod Windows Forms do Windows Presentation Foundation Converting Windows Forms into Windows Presentation Foundation Straka Jiří

2

3 Unicorn College 2010 Unicorn College, V kapslovně 2767/2, Praha 3, Název práce v ČJ: Název práce v AJ: Autor: Převod WF do WPF Converting WF into WPF Straka Jiří Akademický rok: 2011 Kontakt: Tel.: (+420)

4 1. ZADÁNÍ - 4 -

5 2. ABSTRAKT V následující práci se podíváme na historický vývoj technologií pomocí, kterých lze vyvíjet okenní aplikace pro operační systém Windows. Detailněji se podíváme na dvě nejnovější technologie společnosti Microsoft, které jsou součástí.net Frameworku a jedná se o technologie Windows Forms a Windows Presentation Foundation (WPF). Technologie Windows Forms může být také využita např. pro vývoj aplikací pro operační systém Linux pomocí projektu Mono od společnosti Novell. Celá práce je zaměřena hlavně na technologii WPF, a proto také nahlédneme do jejího využití ve vývoji bohatých internetových aplikací pomocí Silverlight a Windows Phone 7, které nám umožňuje vyvíjet pro mobilní zařízení. Nejobsáhlejší část práce je věnována popisu aplikace pro převod Windows Forms do WPF. V popisu aplikace nalezneme např. požadavky kladené na aplikaci, třídní diagram celé aplikace, popis jednotlivých tříd, použité návrhové vzory, atd. Aplikace umožňuje načíst vstupní soubor, který definuje uživatelské rozhraní ve Windows Forms a převést tento soubor do, co možná nejvěrohodnější reprezentace ve WPF pomocí značkovacího jazyka XAML (Extensible Application Markup Language), který je typický pro WPF. Aplikace pro svůj vlastní převod nepodporuje všechny komponenty, které Windows Forms nabízí, ale pouze omezenou množinu vybraných komponent. U této množiny komponent je opět vybráno jen několik stěžejních vlastností, které aplikace pro převod podporuje. Rozšiřitelnost je jeden z hlavní požadavků, který musí aplikace splňovat. Proto je všechna aplikační logika pro převod mezi technologiemi soustředěna v zásuvných modulech. Zásuvné moduly umožňují snadné rozšíření portfolia podporovaných komponent a jejich vlastností pro převod. V závěru práce jsou shrnuty všechny poznatky, které byly nasbírány během vývoje aplikace. Je zde uveden výčet možných směrů, jakými by se mohlo rozšiřování aplikace ubírat, ale také faktory, které převod z Windows Forms do WPF ztěžují a v některých případech i znemožňují. Klíčová slova:.net Framework, Windows Forms, Windows Presentation Foundation, XAML, Silverlight, Windows Phone 7, XNA, C#, návrhový vzor, zásuvný modul

6 3. ABSTRACT Inside following Bachelor's Thesis we take a look at historical development of technologies which allow us to develop form applications for operation system called Windows. We take look at the two latest Microsoft technologies which are a part of.net Framework in detail. These technologies are Windows Forms and Windows Presentation Foundation (WPF). Technologies Windows Forms can be also used for developing applications for Linux operation system through Mono project by Novell Company. The whole Bachelor's Thesis is mainly focused on WPF. Therefore, we look into its usage in developing rich internet application via Silverlight and Windows Phone 7 which allows us to develop for mobile devices. The most extensive part of whole Bachelor s Thesis is dedicated to description of application for converting Windows Forms into Windows Presentation Foundation. Inside the description of application we can find for example requirements for application, class diagram of whole application, description of each class, used design patterns, etc. Application allows us to load input file which defines user interface in Windows Forms technology and convert this file into as credible representation as possible in WPF using markup language XAML. This markup language is typical for WPF. The application doesn't support all the components which Windows Forms offers. But there is just limited set of selected components. Every component has selected set of supported attributes for conversion. Extensibility is one of the most important requests for application. That's why all the application logic for converting is concentrated inside plugins. Plugins allow to application be easily extensible and upgradable. The conclusion of Bachelor's Thesis summarizes all pieces of knowledge that have been collected during developing application. There is also enumeration of all possible ways how could be the application extended. But there are also facts which make converting Windows Forms into WPF more difficult. Keywords:.NET Framework, Windows Forms, Windows Presentation Foundation, XAML, Silverlight, Windows Phone 7, XNA, C#, design pattern, plugin - 6 -

7 4. PROHLÁŠENÍ Prohlašuji, že svou bakalářskou práci na téma Převod Windows Forms do Windows Presentation Foundation jsem vypracoval samostatně pod vedením vedoucího bakalářské práce a s použitím odborné literatury a dalších informačních zdrojů, které jsou v práci citovány a jsou též uvedeny v seznamu literatury a použitých zdrojů. Jako autor uvedené bakalářské práce dále prohlašuji, že v souvislosti s vytvořením této bakalářské práce jsem neporušil autorská práva třetích osob, zejména jsem nezasáhl nedovoleným způsobem do cizích autorských práv osobnostních a jsem si plně vědom následků porušení ustanovení 11 a následujících autorského zákona č. 121/2000 Sb. V Praze dne.. Straka Jiří - 7 -

8 5. PODĚKOVÁNÍ (DOBROVOLNÉ) Děkuji vedoucímu bakalářské práce Ing. David Hartman Ph.D. za účinnou metodickou, pedagogickou a odbornou pomoc a další cenné rady při zpracování mé bakalářské práce

9 6. OBSAH 1. Zadání Abstrakt Abstract Prohlášení Poděkování (dobrovolné) Obsah Úvod Popis jednotlivých kapitol práce Konvence používané v této práci Konvence Vývoj aplikací pro systém Windows Základy architektury.net Možnosti vývoje na platformě.net Windows Forms Některé novinky Windows Forms Realizace Windows Forms Projekt Mono Součásti projektu Mono Windows Presentation Foundation XAML Ukázka XAML jazyka Výhody WPF oproti WinForms Vývoj WPF Vylepšení ve WPF Vylepšení ve WPF 3.5 SP Vylepšení ve WPF Silverlight Souhrn zajímavých možností technologie Silverlight Jak Silverlight aplikace funguje? Začlenění aplikace do internetové stránky Windows Phone

10 9. Návrh a analýza aplikace Požadavky na aplikaci Funkční požadavky Nefunkční požadavky Diagram tříd Implementace Zvolené technologie Popis aplikace Podporovaní komponenty a vlastnosti pro převod Rozhraní aplikace IControlCreator Decorator Využití vzoru Decorator v aplikaci Popis tříd prezentační vrstvy MainWindow PluginWindow Popis jednotlivých tříd aplikační logiky Constants ControlCreatorFactory Attribute ElementAttribute FormConverter Facade Využití vzoru Facade v aplikaci FormElement FormElementReader GetNamespace GetFormName GetElementType GetChildElements Logger Singleton Využití vzoru Singleton v aplikaci

11 LogWatcher PluginManager TreeNodeCreator Rekurze TreeViewManagment XamlBuilder XamlWriter Dokumentace Uživatelská dokumentace Načtení vstupního souboru Zobrazení náhledu Převedení formuláře Programátorská dokumentace Vytvoření ukázkového pluginu pro TextBox Implementace vlastnosti Name Implementace vlastnosti Version Implementace vlastnosti Description Implementace metody Create Závěr Conclusion Seznam použité literatury Seznam použitých symbolů a zkratek Seznam obrázků Seznam tabulek Seznam příloh Příloha 1 Ukázka formuláře SampleForm1 ve WF Příloha 2 - Ukázka převedeného SampleForm1 do WPF Příloha 3 Ukázka formuláře SampleForm2 ve WF Příloha 4 - Ukázka převedeného SampleForm2 do WPF Příloha 5 CD

12 7. ÚVOD Windows Forms jsou stále jednou z nejpoužívanějších technologií pro vývoj aplikací pro operační systémy Windows, přestože je zde tato technologie od roku 2001, kdy vyšel.net Framework 1. O pět let později to je roku 2006 vychází v pořadí třetí verze.net Frameworku a jeho součástí je nová technologie pro vývoj desktopových aplikací systému Windows s názvem Windows Presentation Foundation (WPF). WPF nabízí nové možnosti vývoje aplikací pro systém Windows v podobě nových komponent uživatelského rozhraní, hardwarovou akceleraci, vektorovou grafiku, animace, deklarativní programování, podporu médií atd. O rok později se WPF rozšíří i do webových aplikací pomocí produktu z dílny Microsoft s názvem Silverlight. Další uplatnění se nachází v mobilních zařízeních, které podporují operační systém Windows Phone 7 a vyšší. Aplikace pro tyto zařízení mohou být psány pomocí technologie WPF a nebo XNA Frameworku (XNA je mimo rozsah této práce). Cílem této práce je, vytvořil aplikaci, která je schopná převádět jednotlivé formuláře vytvořené v technologii Windows Forms do novější technologie WPF. V současné době není autorovi známá žádná aplikace, která by umožňovala převádět formuláře z technologie Windows Forms do WPF. Aplikace nepodporuje veškeré komponenty Windows Forms a kompletní výčet jejich vlastností, ale pouze omezenou množinu předem vybraných relativně jednoduchých komponent. U každé komponenty aplikace podporuje jen určité vlastnosti. Jedním z nejvýznamnějších požadavků na aplikaci, je její snadná rozšiřitelnost a schopnost aktualizace, aniž by se musely překompilovat všechny zdrojové kódy stávající aplikace. Těchto požadavků bude docíleno pomocí tzv. zásuvných modulů, které aplikace podporuje a veškerá aplikační logika pro konkrétní reprezentaci WPF na základě vstupních souborů z Windows Forms je soustředěna v těchto zásuvných modulech. 7.1 Popis jednotlivých kapitol práce Kapitola 8: Vývoj aplikací pro systém Windows V této části se podíváme na historický vývoj psaní aplikací pro operační systémy Windows v závislosti na čase a používané technologii. Kapitola 9: Návrh a analýza aplikace Před pohledem na konkrétní implementaci se podíváme na high-level schémata aplikace. Kapitola 10: Implementace V této kapitole se seznámíme s detailní implementací aplikace na převod Windows Forms do WPF. Kapitola 11 Obsahuje uživatelskou dokumentaci, jak obsluhovat aplikace a také programátorskou dokumentaci, jak naimplementovat další zásuvný modul

13 Kapitola 12 Shrnutí poznatků celé práce, možnosti budoucího vývoje a diskuze o možném využití aplikace. 7.2 Konvence pouţívané v této práci Informace v této práci jsou uspořádány tak, aby byly snadno srozumitelné. Před čtením vlastního textu práce doporučují přečíst si pár typografických konvencí, které jsou v práci použity. 7.3 Konvence Neproporcionální písmo je použito, jak je k tomu v každém vývojovém prostředí pro odlišení výrazových prostředků programovacího jazyka v textu, jako jsou např. příkazy, proměnné, atributy, jmenné prostory, vlastnosti, metody, hodnoty, události, objekty atd. Tučné písmo použito pro zvýraznění důležitých nebo klíčových pojmů v textu. VELKE_NEPROPORCIONÁLNÍ_PÍSMO velké neproporcionální písmo oddělené podtržítky místo mezer je použito pro zvýraznění konstant v ukázkách kódu

14 8. VÝVOJ APLIKACÍ PRO SYSTÉM WINDOWS Na podzim roku 1985 společnost Microsoft vydala svojí první verzi operačního systému Windows pod názvem Windows 1.0. Jednalo se pouze o nástavbu nad operačním systémem DOS. Významná změna přišla s příchodem Windows 95, kdy operační systém pracuje na 32bitové architektuře. Další významný milník nastal v roce 2001, když Microsoft vydal svojí pátou verzi systému Windows s označením Windows XP. Tato nová verze přinesla 64bitovou architekturu, která se používá i v dnes poslední verzi Windows 7. První verze Windows podporovali pouze vývoj aplikací pomocí programovacího jazyka C a rozhraní s názvem Windows API, které obsahuje základní funkce i funkce pro vytváření uživatelského rozhraní. Postupem času se pro vývoj aplikací pro systém Windows přizpůsobily již existující programovací jazyky, jako jsou Microsoft Visual Basic nebo C++ anebo vznikl nový programovací jazyk C#, který je založen na jazyce C. Následující diagram uvádí vývoj programovacích jazyků založeným na programovacím jazyku C a rozhraních používaných pro vývoj aplikací. (Petzold, 2008) C 1985 Rozhraní Windows API C Knihovna Microsoft Foundation Class 2001 C# nebo C++ Windows Forms 2006 C# nebo C++ Windows Presentation Foundation Obrázek 1 - Vývoj programování aplikací pro systém Windows Zdroj: Mistrovství ve Windows Presentation Foundation, vlastní tvorba V digramu je vidět, že v roce 2001 nastal zlom ve vývoji aplikací pro systém Windows. Byl představen první nativní objektově orientovaný programovací jazyk C# pro vývoj aplikací pro Windows společně s frameworkem Windows Forms, který jsou součástí.net Frameworku

15 8.1 Základy architektury.net Architektura.NET byla vyvinuta formou Microsoft a vypuštěna do světa v roce Cílem této nové platformy bylo zjednodušit a sjednotit vývoj aplikací. Technologie.NET se tak stala hlavním konkurentem platformě Java od firmy Sun Microsystems. Platforma.NET nám přináší: Nové programovací jazyky Common Intermediate Language (CIL) Modul CLR Just-in-Time kompilátor Kooperaci různých jazyků Obrovské množství knihoven Vývojové prostředí Visual Studio Více informací o jednotlivých tématech viz. (Nash, 2010) S příchodem platformy se objevili o nové programovací jazyky, jako jsou například J#, F#, C# atd. Snad nejrozšířenější a nejpoužívanější je jazyk C#. Jedná se o vysokoúrovňový objektově orientovaný programovací jazyk. Svojí inspiraci syntaxe čerpal v programovacích jazycích C++ a Java. Jazyk C# je mnohoúčelový a můžeme se s ním tedy setkat u vývoje formulářových aplikací, webových aplikací, služeb systému Windows, webových služeb atd. Časový vývoj platformy.net zachycuje následující obrázek:

16 .NET Framework 2.0.NET Framework 3.0.NET Framework 3.5.NET Framework 4.0 WinForms WPF ASP.NET WCF LINQ Parallel LINQ ADO.NET Base Class Library CLR WinForms Card Space ADO.NET Entity Framework Task Parallel Library Obrázek 2 - Vývoj.NET Frameworku Zdroj: vlastní tvorba 8.2 Moţnosti vývoje na platformě.net Jednou z velkých výhod platformy.net je nepřeberné množství druhů projektů, které lze vyvíjet. Ať je jedná o aplikace běžící přímo v operačním systému Windows, webové aplikace, zásuvné moduly pro Microsoft Office atd. Začneme přiblížením první skupinou typy aplikací. Jedna z možností je vývoj klasické konzolové aplikace. Dále mnohem více uživatelsky přívětivější tzv. formulářové aplikace za pomocí technologie Windows Forms, která využívá volání Win32 API nebo pomocí novější technologie Windows Presentation Foundation. O obou technologiích pro vývoj formulářových aplikací budou detailněji pojednávat následující stránky. Další typ projektu, který můžeme najít pod.net platformou jsou Windows Služby. Služba je aplikace, která běží na pozadí sytému a není v přímém kontaktu s uživatelem. Druhou skupinou jsou webové aplikace, které poslední dobou získávají stále více na oblibě. Zde nám platforma.net nabízí možnost vývoje webových aplikací pomocí technologií např. ASP.NET WebForms, tato technologie nám nabízí vývoj stavových aplikací nad nestavovým

17 protokolem HTTP. Další možností je ASP.NET MVC, jak název napovídá umožnuje vývoj aplikací založený na architektuře Model-View-Controller. Jednou z nejnovějších možností je psaní aplikací pro Cloud Computing, kde aplikace jsou hostovány na serverech třetích stran, a výkon je možné škálovat dle potřeb. Přístup do aplikace je možný, jak pomocí tenkého klienta, tak tlustého klienta. Mezi ostatní typy projektů bych zmínil vývoj tzv. knihoven. Knihovny implementují určitou funkcionalitu, kterou lze využít ve všech typech předešlých projektů. 8.3 Windows Forms Technologie Windows Forms byla představena společně s.net 1 v roce 2002, jedná se o grafické programovací rozhraní pro aplikace (API). Nahrazovala dosavadní technologie, jako jsou MFC nebo Win32. Volání toho rozhraní odkazuje na nativní rozhraní Microsoft Windows. Zabaluje již existující Windows API do řízeného kódu (managed code). Tento řízený kód je spouštěn pod virtuálním strojem Common Language Runtime. Pomocí Windows Forms můžeme vytvářet aplikace s bohatým uživatelským rozhraním, které se snadno vyvíjí a udržují aktualizované. Základním stavebním kamenem technologie Windows Forms je formulář. Aplikace musí obsahovat alespoň jeden takovýto formulář. Formulář zde slouží k zobrazování informací uživateli, jedná se o kontejner pro komponenty. Komponenta je prvek uživatelského rozhraní (GUI), který buď zobrazuje informace uživateli anebo čeká na uživatelský vstup. Windows Forms jsou založeny na událostně řízeném modelu. To znamená, že například po stisknutí tlačítka uživatelem je vyvolána událost, v tomto případě událost tlačítka OnClick a je spuštěn obslužný kód této události tzv. EventHandler. Formulář vytvořený pomocí technologie Windows Forms viz. Obrázek 3. Oproti klasickému vývoji formulářových aplikací pomocí C++ a volání funkcí Win32 nám Windows Forms přináší tyto výhody: Nezávislost na platformě existují implementace pro Linux, FreeBSD, Mac OS X, atd., viz. projekt Mono níže. Skutečné objektově orientované paradigma pro vývoj Jednodušší, rychlejší a pohodlnější vývoj aplikací Výběr z mnoha programovacích jazyků platformy.net např. Visual Basic, C# atd. Windows Forms ve své první verzi přišly s celou řadou již předdefinovaných komponent, jako jsou například: Button Představuje tlačítko s popiskem na formuláři. CheckBox Slouží pro výběr hodnot z uzavřené množiny možností

18 GroupBox Slučuje komponenty do logických celků. Label Přidává popisek k jednotlivým komponentám na formuláři. TextBox Slouží převážně k přijímání uživatelského vstupu. Atd Některé novinky Windows Forms 2 V roce 2005 byl představena nová verze.net Frameworku společně s novou verzí Windows Forms 2.0 Celý model Windows Forms zůstal nezměněn, ale přibyly např. následující nové změny: Přidání komponenty SplitContainer Jedná se o kontejnerový prvek tzn. může obsahovat jiné prvky uživatelského rozhraní. Umožnuje rozdělit formulář na dvě části, kterým zle po spuštění aplikace měnit velikost pomocí myši. Přidání komponenty WebBrowser Umožnuje zobrazit internetovou stránku na formuláři aplikace, jak z lokálního zdroje, tak ze vzdáleného. Přidání komponenty DataGridView Nahrazuje komponentu DataGrid z.net Frameworku 1. Přináší nové možnosti do zobrazování dat na formuláři. Přidání komponenty BackgroundWorker Slouží pro zpracování úloh v dalším vlákně, tak aby uživatelské rozhraní nezamrzlo a reagovalo na uživatelské vstupy. ClickOnce Je technologie, která umožňuje uživateli nainstalovat a spustit aplikaci pomocí kliknutí na odkaz uvnitř internetoví stránky. Vizuální styly S nástupem Windows XP přišla i možnost pomocí nový tříd vytvořit komponenty s vlastním vizuálním vzhledem. Přidání komponenty MaskedEdit Poskytuje vstup pro uživatelské vstupy, které musí odpovídat předem definovanému formátu

19 Obrázek 3 - Ukázka formuláře z technologie Windows Forms Zdroj: převzato Realizace Windows Forms Při vytváření každého formuláře ve vývojovém prostředí Microsoft Visual Studio (MSVS) se vždy generují dva soubory (třídy) s příponou.cs (pokud programujeme v jazyce C#) pro jeden formulář. Ve skutečnosti se jedná o jednu třídu, která je označená klíčovým slovem partial, toto klíčové slovo umožňuje rozdělit definici třídy do několika samostatných souborů, která jsou spojeny, když je aplikace zkompilována. Představme si, že přidáváme do projektu formulář s názvem OdeslaniObjednavky. V tomto případě MSVS vygeneruje tyto soubory: OdeslaniObjednavky.Designer.cs a OdeslaniObjednavky.cs. Soubor OdeslaniObjednavky.Designer.cs obsahuje definici uživatelského rozhraní formuláře. Celá tato definice se ukrývá v metodě InitializeComponents, která se volá v konstruktoru každého formuláře. Obsah metody je automaticky generován designérem v MSVS a její obsah se nedoporučuje ručně upravovat. (Sharp, 2006) Následující ukázka zdrojového kódu zobrazuje krátkou metodu InitializeComponent: private void InitializeComponent() { this.button1 = new System.Windows.Forms.Button(); this.suspendlayout(); // // button1 // this.button1.location = new System.Drawing.Point(112, 52); this.button1.name = "button1"; this.button1.size = new System.Drawing.Size(75, 23); this.button1.tabindex = 0; this.button1.text = "tlačítko";

20 } this.button1.usevisualstylebackcolor = true; this.button1.click += new System.EventHandler(this.button1_Click); // // Form1 // this.autoscaledimensions = new System.Drawing.SizeF(6F, 13F); this.autoscalemode = System.Windows.Forms.AutoScaleMode.Font; this.clientsize = new System.Drawing.Size(284, 262); this.controls.add(this.button1); this.name = "Form1"; this.text = "Form1"; this.resumelayout(false); Na začátku metody je vidět, že se inicializují všechny privátní členy třídy (formuláře) ve formě komponent na formuláři. V této ukázce se jedná pouze o komponentu tlačítka. Dále jsou jim přes tečkovou notaci nastavovány všechny potřebné vlastnosti jako jsou: Name, Text, Size, atd. Také zde mohou být nastaveny odkazy na metody pomocí delegátů, které se mají spustit po vyvolání nějaké události. V ukázce se například nastavuje, která metoda se spustí po klepnutí (Click) na tlačítko. Druhou polovinu třídy tvoří soubor OdeslaniObjednavky.cs, někdy se tomuto souboru také říká tzv. code-behind (kód, která se skrývá za formulářem). V tomto souboru jsou popsány všechny reakce na události komponent formuláře. 8.4 Projekt Mono Mono je softwarová platforma navržená tak, aby umožnila vývojářům co nejjednodušší vývoj aplikací napříč platformami. Jedná se o open-source projekt, jehož hlavním cílem je vytvořit sadu nástrojů kompatibilní s Microsoft.NET založeného na ECMA standardech pro programovací jazyk C# a Common Language Runtime. V době, kdy je tato práce psaná projekt Mono podporuje celý.net 4.0 kromě WPF, EntityFramework, System.Managment a System.EnterpriseServices Součásti projektu Mono Projekt Mono tvoří několik následujících částí: C# kompilátor Mono kompilátor pro programovací jazyk C# podporuje tyto verze jazyka: 1.0, 2.0, 3.0 a 4.0 (ECMA). Mono runtime stejně jako Microsoft.NET i v Mono projektu můžeme najít Common Language Infrastructure, Just-In-Time kompilátor, Garbage Collector, podporu vláken, atd

21 Základní bázové knihovny - poskytuje obrovské množství knihoven, na kterých můžeme stavět vlastní aplikace. Tyto knihovny jsou kompatibilní s Microsoft.NET třídami. Mono knihovny Mono navazuje na Microsoft.NET základní bázové knihovny a poskytuje nadstavbu nad těmito knihovnami, které jsou převážně využívaní při tvorbě aplikací pro Linux. Mezi tyto knihovny patří: Gtk+, Zip files, LDAP, OpenGL, POSIX, atd. 8.5 Windows Presentation Foundation WPF byla poprvé představena v listopadu roku 2007 jako součást.net Frameworku 3.0. WPF, dříve známo jako projekt Avalon je technologie používaná pro vykreslování bohatého grafického uživatelského rozhraní založeném na DirectX 1. Dalo by se říci, že WPF je následníkem Windows Forms, který nabízí nové možnosti ve vývoji aplikací, jenž nebyly ve WinForms vůbec realizovatelné za využití 2D a 3D grafiky, vektorovou a bitmapovou grafikou, anebo dokonce audiem a videem. Jedním z největších přínosů WPF je oddělení vzhledu aplikace od samotného kódu, jako je tomu např. u třívrstvé architektury. Aby toto oddělení bylo možné je potřeba nějakého jazyku pro definování uživatelského rozhraní, a tím je XAML. Náhled aplikace s bohatým uživatelským rozhraním demonstruje následující obrázek: Obrázek 4 - Ukázka okna s bohatým uživatelským rozhraní vytvořeného ve WPF Zdroj: převzato 1 DirectX je množina knihoven poskytující přímé ovládání moderního hardwaru. Součástí DirectX je i knihovna s názvem Direct3D, kterou používá WPF pro vykreslování grafiky

22 8.5.1 XAML XAML (čteno zamel ) je zkratka z anglického XML for Application Markup Language značkovací XML jazyk pro aplikace. Jedná se o rozšíření jazyka XML. Jazyk XAML nám umožňuje deklarativním způsobem definovat bohaté uživatelské rozhraní a jeho hierarchickou strukturu. Kde používáme XAML elementy pro vytváření samotných prvků uživatelského rozhraní a pro definování jejich vlastností využíváme buď jiných XAML elementů (ve WPF muže např. tlačítko obsahovat video) nebo atributy XAML elementů. Každý XAML element je reprezentován stejnojmennou třídou ve jmenném prostoru System.Windows.Controls pro vytváření a přístupu k uživatelskému rozhraní např. ve vlastních třídách. (Stephens, 2010) Klíčovou myšlenkou značkovacího jazyka XAML je oddělení definice uživatelského rozhraní od programové části. Toto oddělení nám umožnuje paralelní práci vývojářů a návrhářů uživatelského rozhraní, kteří sami o sobě programovat neumí. Tato myšlenka dala vzniknout grafickému nástroji pro návrh uživatelského rozhraní Microsoft Expression Blend. Jedná se o nástroj, kde je možné vyvíjet aplikace pro desktopové, webové (Silverlight o který bude popsán na následujících stranách) a mobilní aplikace (Windows Phone 7 také bude popsáno později) Ukázka XAML jazyka <Window x:class="wpfapplication1.mainwindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Button Content="Button" Height="23" Margin="12" Name="btn" Width="75"> <Button.Background> <LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5"> <GradientStop Color="Black" Offset="0" /> <GradientStop Color="White" Offset="1" /> </LinearGradientBrush> </Button.Background> </Button> </Grid> </Window> V následující ukázce je možno vidět defaultní kód, který vygeneruje Visual Studio po vytvoření WPF aplikace a následné přidání jednoho tlačítka. Povšimneme si elementu Button, tento element obsahuje atributy Content, Height, Margin atd, jenž tvoří vlastnosti objektu btn. Ale také obsahuje vlastnost, která je opět element. Kde hodnota je definována tzv. podřízeným elementem v našem případě <LinearGradientBrush />

23 8.5.3 Výhody WPF oproti WinForms Deklarativní programovaní Stejně jako během tvorby internetových stránek používáme HTML tagy pro definování struktury stránky, tak ve WPF aplikacích používáme značkovací jazyk XAML. Hardwarová akcelerace WPF je založena na Direct3D tzv., že všechen obsah ve WPF aplikaci (2D i 3D grafika) je převedena na trojúhelníky a ty jsou potom vykreslovány pomocí hardware. Přesunutí výpočetní kapacity na grafickou kartu. Neznamená to ovšem, že potřebujeme výkonné grafické karty, protože vykreslovaní uživatelského rozhraní může probíhat i na procesoru. Bohaté přizpůsobení komponent - Pomocí XAML jazyka můžeme např. definovat tlačítko, které bude obsahovat video nebo animovat prvky uživatelského rozhraní na základě událostí. WPF aplikace podporují vytváření tzv. skinů jedná se o naprosto odlišné vzhledy uživatelského rozhraní (velikosti jednotlivých prvků, jejich uspořádání, barevné rozložení jednotlivých prvků na formuláři atd.). Nezávislost na rozlišení obrazovky Jednotka používaná ve WPF pro specifikování velikosti komponent se jmenuje Device Independent Pixel (DIP). Jedná se o logický pixel nezávislý na rozlišení obrazovky. Standardně se používají obrazovky s DPI (Dots per Inche Počet bodů na palec) 96 x 96. Jestliže např. ve WPF řekneme, že tlačítko má šíři 96, to se rovná 1 palec, a tuto aplikaci spustíme na monitoru s hodnotou DPI 120, šířka tlačítka se přepočítá a velikost každého pixelu vyjde 1.25 pixelů. A výsledkem bude skutečnost, že šíře tlačítka i na monitoru s DPI 120 bude 1 palec. Vektorová grafika WPF podporuje tzv. vektorovou grafiku, ta pro uchovávání svého vlastního obsahu používá body, úsečky a jiné geometrické prvky. Zatímco bitmapová grafika shromažďuje informace o jednotlivých pixelech obrázku. Výhodami vektorové grafiky je nižší paměťová náročnost a libovolné zvětšení a zmenšení obrázku bez ztráty kvality. Animace ve Windows Forms jsme mohli použít časovač pomocí něj složitě animovat prvky na formuláři. WPF nám nabízí výkonné prostředí pro animování libovolné vlastnosti prvku a vytvoření tak naprosto interaktivní vzhledu aplikace. Podpora audio a video formátů technologie WPF podporuje nejrůznější formáty obrázků, audio souborů a dokonce i video formáty, aby poskytlo, co možná nejpřitažlivější uživatelské rozhraní

24 Nové prvky uţivatelského rozhraní WPF přichází s novou sadou prvků uživatelského rozhraní pro rozmístění jejich potomků. Mezi příklady bych uvedl: Grid, který umisťuje prvky v řádcích a sloupcích, StackPanel slouží k umístění prvku v jednom sloupci či řádku a DockPanel, který zachytává svoje potomky k vlastním hranám. (MacDonald, 2008) Vývoj WPF První verze WPF nese název WPF 3.0, protože byla vypuštěna společně s.net Frameworkem v roce Další verze téměř o rok později v roce 2007 pod označením WPF 3.5. Třetí verze byla uvolněna jako opravný balíček pro.net Framework 3.5, avšak nejedná se o klasický opravný balíček, protože přináší spousty nových možností a vylepšení. Poslední verze WPF vyšla v roce 2010 s pořadovým číslem 4. Časový vývoj verzí WPF zachycuje následující obrázek: 2006 WPF WPF 3.5 WPF WPF SP1 Obrázek 5 - Vývoj technologie WPF v závislosti na čase Zdroj: vlastní tvorba Vylepšení ve WPF 3.5 Některé z novinek, které nám přineslo WPF 3.5 oproti verzi WPF 3.0: Interaktivní 2D na 3D Nová funkčnost, která umožňuje zobrazit interaktivní 2D grafiku na 3D objektu. Firefox podpora pro XBAPs WPF nyní umožnuje spustit aplikaci WPF hostovanou v internetovém prohlížeči (známé jako XBAPs) Firefox stejně jako v Internet Explorer. Podpora LINQ pro data binding LINQ je nová technologie pro dotazovaní nad daty přímo v programovacím jazyce. Jedná se o rozšiřující metody, které se nalézají v namespace System.Linq. Obrovskou předností jazyka LINQ je, že se všemi datovými zdroji pracuje stejným způsobem. Mezi tyto datové zdroje patří: objekty v paměti, XML soubory a databáze. (MacDonald, 2008)

25 8.5.6 Vylepšení ve WPF 3.5 SP1 Následující výčet jsou některé ze zajímavých novinek, které přináší WPF 3.5 SP1: Vylepšený data binding (vázání dat) WPF přichází s podporou XLINQ, lepší validací a debuggováním. Vylepšené speciální efekty Efekty, které byly součástí první verze WPF s oficiálním doporučením je nepoužívat, kvůli jejich nízkému výkonu byly přepracovány za pomocí hardwarové akcelerace a došlo k zvýšení jejich výkonu. Direct3D Byla přidána interoperabilita pro podporu Direct3D. Nyní je možné vložit přímo 3D scénu vykreslenou pomocí Direct3D do obrázků nebo textur WPF aplikace. Vylepšení z oblasti Textu WPF přináší vylepšený výkon pro vykreslování textu a mezinárodní podporu znaků. Vylepšené nasazení aplikace a.net Framework proces instalace.net Frameworku je nyní na straně klienta rychlejší. Obsahuje novou Bootstrapper komponentu, která se stará o.net Framework instalace a upgrady místo uživatele. A nové možnosti ClickOnce. Vylepšený výkon celá technologie WPF dosáhla mnohem lepších výkonnostních výsledků, jako jsou např. rychlejší spuštění aplikace (hlavně první spuštění), animace jsou nyní mnohem plynulejší, rychlejší data binding atd. Splashscreen (spouštěcí obrazovka) Některé obsáhlé aplikace napsané ve WPF se mohou načítat poměrně dlouho dobu, a proto přibyla možnost vybrat statický obrázek, který se zobrazí během načítání aplikace uživateli. (Nathan, 2010) Vylepšení ve WPF 4 Seznam nejzajímavějších novinek ve WPF 4: Podpora Multi-touch Přichází společně Windows 7, které sami o sobě multitouch podporují. Dotyky pomocí několika prstů zároveň jsou reprezentovány novými událostmi u jednotlivých prvků uživatelského rozhraní. Kromě Windows multi-touch také plně využívá Microsoft Surface 2. 2 Microsoft Surface jedná se o počítač ve formě konferenčního stolku, který obsahuje velkou multi dotykovou obrazovku. Tato obrazovka nahrazuje klasickou klávesnici a myš. Ovládání probíhá pomocí gest uživatele

26 Integrace s Windows 7 Shell WPF 4 přichází s novinkami ve formě integrace s novými možnostmi v operačním systému Windows 7. Hlavní s těchto novinek je možnost integrace s Hlavním panelem. Mezi možnosti práce s Hlavním panelem patří: Aero náhledy oken aplikací, tzv. jump lists, které usnadňují spouštění např. naposledy otevřených souborů, podsvícení ikony barvou, ve kterém stavu se aplikace nachází (Normal, Error, atd.), přidávání tlačítek do náhledu okna, atd. Nové komponenty WPF nyní obsahuje komponenty, jako jsou DataGrid, Calendar a DatePicker. Easing funkce pro animaci Easing funkce nám dovolují přidat matematické formule do animací. Za pomocí těchto matematických formulí animace vypadá přirozeně a plynule. WPF 4 přichází s 11 již předdefinovaných matematických formulí, jako jsou např. BounceEase, ElasticEase a SineEase. Vylepšené nasazení aplikace Klient.NET Frameworku může být nainstalován společně s plnou verzí.net Frameworku. Vylepšený výkon Aby byl výkon vektorové grafiky možná co nejlepší WPF nyní umí vykreslené výsledky kešovat jako bitmapy a znovu je použít. V pokročilých případech je zde možnost ovlivnit toto chování pomocí vlastnosti CacheMode. (Nathan, 2010)

27 8.6 Silverlight Jedná se o konkurenta produktu Flash nebo Flex od společnosti Adobe. Stejně jako v případě Flash technologie jedná se o lightweight (asi 4MB) zásuvný modul, který se instaluje do internetového prohlížeče. V současné době jsou podporovány tyto prohlížeče: Internet Explorer, Mozilla Firefox, Safari a Google Chrome. Pomocí technologie Silverlight může vytvářet tzv. internetové aplikace s bohatým uživatelským rozhraním (RIA). Silverlight aplikace mohou pracovat v režimu mimo okno prohlížeče, a dokonce i v tzv. off-line režimu, kdy internetový prohlížeč není připojen k internetu. Porovnání Silverlight aplikace s bohatým uživatelským rozhraním s běžnou HTML stránkou: Obrázek 6 - Silverlight RIA aplikace Zdroj: převzato

28 Obrázek 7 - Běžná HTML stránka Zdroj: printscreen Uživatelské rozhraní Silverlight aplikací je deklarováno pomocí XAML jazyka stejně jako u WPF. Aplikace typu Silverlight tvoří svými možnostmi podmnožinu WPF aplikací, která se s každou další verzí Silverlight přibližuje WPF aplikacím. Při vytváření aplikací můžeme využívat vývojové nástroje, jako jsou Microsoft Visual Studio 2010 a Microsoft Expression Blend, které jsou založeny na Commom Language Runtime, to znamená, že při vývoji si můžeme vybrat z velkého množství programovacích jazyků, jako jsou např. C#, Visual Basic anebo dokonce z některých dynamických jazyků: Ruby nebo Python. Protože je celý Silverlight postaven na.net Frameworku můžeme ve svým aplikacích používat Base Class Libraries, výsledkem je, že můžeme pracovat s obrovským množstvím již naprogramovaných tříd, jako jsou např. různé kolekce, práce s vlákny, práce s řetězci atd Souhrn zajímavých moţností technologie Silverlight Silverlight je rozšířený napříč platformami a napříč nejrůznějšími internetovými prohlížeči

29 Silverlight aplikace mohou být naprogramovány v těchto vývojových prostředích: Visual Studio, Expression Blend a dokonce Eclipse. Přináší podporu nejrůznějších vysoce kvalitních video a audio formátů. Mezi video formáty, které Silverlight nativně podporuje, patří: Windows Media VC-1/WMA, MPEG-4 s H.264 kódováním a to až do velikosti videa 720p+. Z podporovaných audio formátů bych uvedl AAC. Standardně Microsoft přináší přes 60 komponent, avšak existuje další obrovské množství komponent, které byly vyvinuty třetími stranami. Práce s vlákny je další z jeho klíčových předností. V aplikacích Silverlight můžeme využít tento prvek moderních aplikací dnešní doby. Složitější výpočty nebo komunikace s webovými službami může probíhat na pozadí aplikace. Silverlight nabízí animaci, která je založená na čase, na rozdíl od největšího konkurenta Flash, kde je animace založena na snímcích. Silverlight nabízí možnost nahrávat a streamovat audio a video zdroje přímo z koncových zařízení, které se nacházení u koncového uživatele. Ve svých Silverlight aplikacích můžeme využít různé možnosti, jako jsou např. tisk, navigace, drag-and-drop podpora, kontextové nabídky, kopírování do schránky atd. (Lair, 2010) Jak Silverlight aplikace funguje? Celá aplikace typu Silverlight je uložena v souboru XAP, pokud uživatel navštíví stránku, která je vytvořena pomocí Silverlight a má nainstalovaný potřebný zásuvný modul pro internetový prohlížeč, tak se dotáže pomocí klasického požadavku GET na tento soubor XAP. Soubor XAP je pouze výsledný archív celé aplikace se soubory DLL. DLL obsahují samotný funkční kód, obrázky, zvuky, soubory grafiky a jiné možné zdroje aplikace Začlenění aplikace do internetové stránky Když v Microsoft Visual Studio zakládáme nový projekt, tak se nás Visual Studio zeptá, do jakého typu webové aplikace chceme, aby byla Silverlight aplikace vložena. Na výběr je z možností ASP.NET Web Application, ASP.NET Web Site a ASP.NET MVC. Při zvolení typu projektu ASP.NET Web Application vypadá internetová stránka se Silverlight následovně:

30 <body> <form id="form1" runat="server" style="height:100%"> <div id="silverlightcontrolhost"> <object data="data:application/x-silverlight-2," type="application/xsilverlight-2" width="100%" height="100%"> <param name="source" value="clientbin/silverlightapplication2.xap"/> <param name="onerror" value="onsilverlighterror" /> <param name="background" value="white" /> <param name="minruntimeversion" value=" " /> <param name="autoupgrade" value="true" /> <a href="http://go.microsoft.com/fwlink/? LinkID=149156&v= " style="text-decoration:none"> <img src="http://go.microsoft.com/fwlink/?linkid=161376" alt="get Microsoft Silverlight" style="border-style:none"/> </a> </object><iframe id="_sl_historyframe" style="visibility:hidden;height:0px;width:0px; border:0px"></iframe></div> </form> </body> V ukázce je vidět, že k samotnému vložení Silverlight aplikace do HTML stránky dochází v tagu object. V atributech tohoto tagu se nastavuje velikost Silverlight aplikace, v tomto případě je šířka i výška aplikace 100%. V prvním parametru s názvem source se nastavuje samotný odkaz na Silverlight aplikaci. Další ze zajímavých parametrů jsou barva pozadí a minimální verze Silverlight zásuvného modulu do internetového prohlížeče pro spuštění aplikace. Za pozornost stojí také odkaz je formě tagu <a href= ></a>, protože tento odkaz se zobrazí, pokud není v internetovém prohlížeči nainstalovaný zásuvný modul pro podporu Silverlight aplikace

31 8.7 Windows Phone 7 Je operační systém pro mobilní zařízení, jedná se o přímého následníka Windows Mobile. Windows Phone představuje konkurenci pro ios od společnosti Apple a Android od společnosti Google. Pro vývojáře je Windows Phone 7 zajímavá technologie, protože nabízí dva naprosto odlišné způsoby psaní aplikací: Silverlight je technologie, která se převážně používá pro vývoj aplikací. Jak již bylo zmíněno v předešlé kapitole, celý Silverlight je založen na WPF, a proto je vhodný pro vytváření sofistikovaných bohatých uživatelských rozhraní s využitím tradičních ovládacích prvků, vysoce kvalitního textu, vektorové grafiky, animací, médií, vázáním dat, atd. XNA jak by se na první pohled mohlo zdát, že se jedná o zkratku tří anglických slov, tak tomu tak není. XNA je označení herní platformy společnosti Microsoft, která podporuje, jak 2D grafiku, tak 3D grafika s běžnou herní smyčkou. XNA se spíše používá pro vývoj her na Xbox 360 a PC, ale dá se použít i pro vývoj her na Windows Phone 7. (Henry Lee, 2010)

32 9. NÁVRH A ANALÝZA APLIKACE Na začátku kapitoly se budeme věnovat definování funkčních a nefunkčních požadavků na aplikaci, co uživatelé mohou od aplikace očekávat. V druhé polovině kapitoly se podíváme na třídní diagramy a rozdělení aplikace do tří vrstev, kterými jsou: GUI, aplikační logika a vstupně/výstupní operace. 9.1 Poţadavky na aplikaci Následující dvě tabulky představují všechny funkční a nefunkční požadavky kladené na aplikaci Funkční poţadavky Označení poţadavku REQ01 REQ02 REQ03 REQ04 REQ05 REQ06 REQ07 REQ08 REQ09 Popis Aplikace umožní vybrat vstupní soubor s příponou.designer.cs pro převod do WPF Aplikace umožní vybrat výstupní cestu, kam se zapíše výsledný soubor Aplikace umožní převést formulář (ne kompletní výčet komponent a jejich vlastností) z WF do WPF Aplikace bude obsahovat okno pro zobrazení struktury vstupního souboru Aplikace bude umožnovat otevřít všechny uzly v náhledu Aplikace bude umožnovat zavřít všechny uzly v náhledu Aplikace bude umožnovat zobrazit jednotlivé vlastnosti komponent v náhledovém okně Aplikace umožní zobrazit náhled okna před samotných převedením vstupního souboru Aplikace bude obsahovat okno s výpisem všech dostupných zásuvných modulech Tabulka 1 - Funkční požadavky aplikace Nefunkční poţadavky Označení poţadavku REQ01 REQ02 REQ03 REQ04 REQ05 Popis Zdrojové kódy aplikace budou napsány v anglickém jazyce Uživatelské rozhraní bude v českém jazyce Aplikace bude lehce ovladatelná Aplikace bude snadno rozšiřitelná pomocí zásuvných modulů Aplikace bude podporovat operační systém Windows XP SP3 a vyšší

33 Tabulka 2 - Nefunkční požadavky aplikace 9.2 Diagram tříd Obrázek 8 - Třídní diagram aplikace Zdroj: vlastní tvorba

34 10. IMPLEMENTACE 10.1 Zvolené technologie Aplikace je implementován za využití.net Frameworku 4. Z této platformy je zvolen jako programovací jazyk C# a pro vytvoření okenní aplikace technologie Windows Presentation Foundation (WPF). Hlavním důvodem pro upřednostnění WPF před Windows Forms je fakt, že aplikace slouží pro převod Windows Forms do WPF. Další motivací byla funkčnost, která má za úkol zobrazit náhled převáděného okna. Tato funkčnost by obtížně implementovala ve Windows Forms Popis aplikace Celá aplikace je rozdělena do tří vrstev. Nejvyšší vrstva je prezentační, která tvoří uživatelské rozhraní. Součástí této vrstvy je hlavní okno aplikace MainWindow a PluginWindow. Další z vrstev je vrstva aplikační logiky, která se skládá z několika tříd a pluginů tzv. zásuvných modulů, pomocí kterých může být aplikace snadno rozšířena. Poslední a nejnižší vrstva je I/O vrstva, která zpracovává vstupy a výstupy celé aplikace. Při načtení vstupního souboru se pomocí třídy FormElementReader analyzuje vstupní soubor a na jeho základě se vytvoří objekt typu FormElement. Tento objekt nese všechny důležité informace o vstupním formuláři, jako jsou komponenty, které se na formuláři nachází, jejich hierarchická struktura a jejich vlastnosti. Objekt je dále vstupem pro dvě třídy, které s ním nadále pracují. První z těchto dvou tříd je TreeNodeCreator, která na jeho základě sestaví objekt typu TreeNode pro komponentu TreeView, která znázorňuje hierarchickou strukturu vstupního souboru. Druhou třídou, která využívá objekt FormElement je XamlBuilder. Jejím hlavním úkolem je na základě objektu sestavit XAML reprezentaci komponent. Tato reprezentace je nyní tvořena objektem typu XmlNode. Na závěr celého konverzního procesu se takto vytvořený XmlNode zapíše pomocí třídy XamlWriter na požadovanou cestu, kterou uživatel zadal. Zdrojové kódy celé aplikace viz. Příloha 5 CD Podporovaní komponenty a vlastnosti pro převod Jak již, bylo zmíněno ve funkčních požadavcích na aplikaci, aplikace nebude podporovat kompletní seznam všech komponent pro převod, které Windows Forms nabízejí ale pouze jejich podmnožinu. A u těchto vybraných nejpoužívanější komponent nebudou podporovány všechny jejich vlastnosti, protože to by bylo nad rámec této práce, ale zase pouze jen

35 podmnožina těch nejvýznamnějších vlastností. Následující tabulka ukazuje podporované komponenty a jejich vlastnosti: Komponenta Button GroupBox CheckBox Label RadioButton TabControl TabPage TextBox Vlastnosti Name, Location, Size a Text Name, Location, Size a Text Name, Location, Size, Text a Checked Name, Location, Size a Text Name, Location, Size, Text a Checked Name, Location a Size Name, Location, Size a Text Name, Location, Size, Text a ReadOnly Tabulka 3 - Podporované komponenty pro převod do WPF a jejich vlastnosti Nyní známe popis vrstev aplikace, hlavního procesu aplikace, ale také požadavky na aplikaci kladené. A proto si teď přiblížíme detailní popis jednotlivých tříd aplikace Rozhraní aplikace IControlCreator Je jediné, ale za to velmi důležité rozhraní celé aplikace. Protože je aplikace založená na zásuvných modulech (plugin) je důležité, aby všechny pluginy implementovali toto jednoduché rozhraní. Tato technika je známá jako State Pattern ze standartu GOF. IControlCreator definuje následující členy: string Name { get; } Název zásuvného modulu. Název musí být shodný s typem komponenty ve Windows Forms. Jako příklad může být komponenta, která slouží pro zadávaní nebo zobrazování textu ve Windows Forms, a ta se nazývá TextBox. Z předešlých vět tedy plyne, že vlastnost Name bude v tomto případě mít hodnotu TextBox. Dodržovaní této jmenné konvence je jedním z důležitých pravidel pro správné fungování celé aplikace, protože když aplikace chce převést právě komponentu typu TextBox projde všechny zásuvné moduly a zkontroluje jejich vlastnost Name. Pokud existuje takový modul s touto hodnou s hodnou TextBox použije aplikace právě tento modul pro převod komponenty. string Version { get; } Verze zásuvného modulu. string Description { get; } Krátký popis zásuvného modulu

36 XmlNode Create(FormElement element, IControlCreator creator) Jediná metoda celého rozhraní, která z objektu typu FormElement vygeneruje jeho XML (XAML) reprezentaci. Protože se v jednotlivých zásuvných modulech vyskytuje návrhový vzor Decorator, tak si tento vzor v krátkosti představíme Decorator Účel Umožňuje již existující objektům přidávat nové dynamické chování a vlastnosti bez nutnosti vytváření odvozené třídy. Návrh Rozhraní IComponent představuje společného předka, pro všechny objekty, které budou dekorovány. Třída Decorator zahrnuje ve svých privátních členech vlastnost typu IComponent, její jednota může být např. objekt typu Component. Ve třídě Decorator dále zavoláme metodu Operation nad objektem IComponent a dále metodu Operation objektu Decorator a tímto postupem změníme např. objektu typu Component chování nebo stav, aniž by sám o sobě o tom věděl. (Bishopová, 2010) Obrázek 9 - UML diagram vzoru Decorator Zdroj: vlastní tvorba

37 Vyuţití vzoru Decorator v aplikaci Návrhový vzor Decorator můžeme najít u jednotlivých zásuvných modulů aplikace. Všechny pluginy implementují rozhraní IControlCreator, které odpovídá rozhraní IComponent z předešlé ukázky. V případě zásuvných modulů jsou dekoruje objekt typu CommonAttributes všechny ostatní, kterými jsou např. ButtonCreator, LabelCreator, TextBoxCreator, atd. Vše si detailně popíšeme na příkladu s ButtonCreator. ButtonCreator vytvoří základní XML (XAML) tag, který je charakteristický pro tlačítko ve WPF a CommonAttribues tomuto tlačítku přidá všechny vlastnosti, které jsou společné pro všechny WPF komponenty. ButtonCreator neví, že se něco takového děje a CommonAttributes upravuje jeho vnitřní stav. Obrázek 10 - UML diagram využití vzoru Decorator Zdroj: vlastní tvorba 10.5 Popis tříd prezentační vrstvy MainWindow Jedná se o hlavní okno celé aplikace. Představuje rozhraní mezi vrstvou aplikační logiky a uživatelem. V horní části okna se nachází hlavní panel s kontextovými nabídkami. Dále Hlavní okno obsahuje dvě textová pole, která zobrazují vstupní cestu k souboru pro převod a výstupní cestu, kde bude převedený soubor uložen. Po načtení vstupního souboru se zobrazí hierarchická struktura komponent vstupního souboru v části Detaily vstupního souboru na kartě Rozložení souboru. Druhá karta s názvem Log slouží pro výpis logovacího souboru. Poslední s důležitých prvků na Hlavním okně je tlačítko v dolní pravé

38 části okna, které slouží pro samotný převod vstupního souboru. Celé Hlavní okno s načteným vstupním soubor je zobrazeno na obrázku 11: Obrázek 11 - Hlavní okno aplikace Zdroj: printscreen aplikace, vlastní tvorba PluginWindow Druhé okno prezentační vrstvy je dialogové okno pro podporované doplňky. Dialogové okno se otevře z hlavního panelu záložka Nápověda a dále klepnutím na Podporované doplňky. V okně jsou vypsány všechny zásuvné moduly, kterými aplikace disponuje. U každého zásuvného modulu je uveden jeho název, verze a jeho popis. Dialogové okna s podporovanými doplňky je zachyceno na obrázku 12:

39 Obrázek 12 - Okno s podporovanými doplňky Zdroj: printscreen aplikace, vlastní tvorba 10.6 Popis jednotlivých tříd aplikační logiky Constants Třída Constants je velice jednoduchá svojí implementací. Jedná se o statickou třídu. Obsahuje pouze velké množství vlastností, převážně typu string, které jak již název třídy napovídá, slouží jako centralizované uložiště všech konstant. Centralizované uložiště je zvoleno, aby bylo v budoucnu možné jednotlivé konstanty jednoduše změnit na jednom místě aplikace bez nutnosti přepisování všech hodnot v různých třídách aplikace ControlCreatorFactory Jedná se o jednu z klíčových tříd aplikace. Úkolem třídy je rozhodnou, který zásuvný modul se použije pro vytvoření XAML tagu z objektu FormElement. V konstruktoru třídy se načtou všechny zásuvné moduly do proměnné plugins pomocí třídy PluginManager. Třída ControlCreatorFactory je obsahuje pouze jedinou metodu a tou je FactoryMethod. public XmlNode FactoryMethod(FormElement element) { try { XmlNode result = null;

40 // Vytvoření XAML elementu podle typu elementu if (plugins.containskey(element.type) && plugins.containskey("commonattributes")) { if (plugins[element.type] is IControlCreator) { result = ((IControlCreator)plugins["CommonAttributes"]).Create(element, (IControlCreator)plugins[element.Type]); } } } return result; } catch (Exception ex) { // kód byl z důvodů přehlednosti odstraněn } Metoda vrací objekt typu XmlNode, který představuje XAML reprezentaci prvku na formuláři. FactoryMethod pracuje způsobem, že se podívá do proměnné plugins, jestli obsahuje potřebný zásuvný modul pro převedení prvku formuláře a plugin s obecnými vlastnostmi pro převod. Pokud proměnná plugins tyto zásuvný moduly neobsahuje, bude prvek ignorován a ve výsledném převedeném formuláři nebude zobrazen. Když je zásuvný modul nalezen a implementuje rozhraní IControlCreator zavolá se nad tímto zásuvným modulem metoda Create, která se postará o sestavení objektu typu XmlNode. A tento XmlNode je vrácen metodou Attribute Jedná se o abstraktní třídu, která slouží pro odvozování konkrétních typů, jako jsou ElementAttribute a FormAttribute. Tato třída je velice jednoduchá a obsahuje pouze dvě veřejné vlastnosti a těmi jsou: Name a Content. Vlastnost Name představuje název vlastnosti, jedno prvku formuláře. Touto vlastností může např. být: Text, Size, Location, atd. Zatímco vlastnost Content uchovává samotný obsah vlastnosti, která byla načtena ze vstupního souboru pro převod k názvu vlastnosti konkrétního prvku ElementAttribute Třída ElementAttribute je odvozená od abstraktní třídy Attribute. Typ ElementAttribute slouží pro uchovávání vlastností jednotlivých prvku formuláře. Příkladem může být tlačítko ve vstupním souboru s popiskem Odešli objednávku. Potom bude stav objektu ElementAttribute vypadat následovně: Vlastnost Name bude mít hodnotu Text a vlastnost Content bude obsahovat hodnotu typu string Odešli objednávku

41 FormConverter FormConverter představuje vysokoúrovňové rozhraní pro převod vstupního formuláře z Windows Forms do WPF, které je založené na návrhovém vzoru Facade (vzor je popsán dále v textu). Tato třída v sobě zapouzdřuje následující typy: FormElementReader, TreeNodeCreator a XamlWriter. Umožňuje, přistup k těmto typům pomocí tří jednoduchých metod a těmi jsou: RenderTreeView, ShowPreview a WriteXaml. Motivace k vytvoření této třídy bylo odlehčení tzv. code behind v hlavním formuláři aplikace MainWindow, kde se nyní reaguje na události prvků pouze pomocí voláním některé z tří výše uvedených metod Facade Účel Poskytnou uživateli vysokoúrovňové rozhraní např. na třídy, komponenty, subsystémy, systémy atd. Jejich detaily jsou buď uživateli záměrně skryty anebo slouží pouze k zjednodušení. Jednotlivé operace mohou byt sestaveny z různých prvků. Návrh Uživatel aplikace komunikuje pomocí Facade. Facade získává požadavky od uživatele. Tyto požadavky dále zasílá příslušným objektům, které tvoří její datové složky. Vzor Facade je rozhraní, ale je implementováno jako třída. Obrázek 13 - UML diagram vzoru Facade Zdroj: vlastní tvorba

42 Vyuţití vzoru Facade v aplikaci V aplikaci můžeme nalézt návrhový vzor Facade implementovaný ve třídě FormConverter, kde vytváří rozhraní pro třídy: FormElementReader, TreeNodeCreator a XamlWriter. Využívá některých jejich metody a transformuje tyto metody do vysokoúrovňového rozhraní. Obrázek 14 - UML diagram využití vzoru Facade Zdroj: vlastní tvorba FormElement FormElement je klíčovou entitou celé aplikace. Představuje každý prvek (komponenta), který je umístěn na vstupním formuláři. Každý prvek se skládá s unikátních vlastností, které ho charakterizují a jinak tomu není ani u entity FormElement. Tato entity slouží pro zapouzdření všech podporovaných vlastností (atributů) u jednotlivých prvků formuláře. Vlastnosti entity FormElement jsou: IsOnFormElement Je booleovská hodnota, která říká, jestli je prvek umístěn přímo na formuláři nebo je součástí nějakého kontejnerového prvku např. GroupBox, protože v případě, kdy je prvek uvnitř kontejnerového prvku je počátek jeho souřadnic v technologii WPF odlišný, než když je umístěn přímo na formuláři. Prvky gbdetails a tpcustomer budou mít tuto hodnotu nastavenou na true viz obrázek 15. LevelOfNesting Představuje číselnou hodnotu zanoření prvku v jiných kontejnerových prvcích. Tato vlastnost je nutná z důvodu korekce pozice prvku,

43 protože pozice je odlišná, pokud je prvek v jednou nebo třech GroupBoxech. Pro tlačítko btnupdate bude tato hodnota 2 viz obrázek 15. ChildElement Každý FormElement může obsahovat další FormElement entity (potomky), tímto způsobem je vytvořena odpovídající hierarchie prvků na formuláři. Pro prvek gbaddress budou jeho potomci lblfirstname, tbfirstname a btnupdate viz obrázek 15. Attributes Hešovací tabulka, která uchovává všechny podporované vlastnosti pro převod prvku do WPF jako jsou jeho pozice, velikost atd. Type Reprezentuje typ prvku (komponenty) např. TextBox, GroupBox, Label atd. Name Název prvku na vstupním formuláři pro převod do WPF např. txtfirstname. Obrázek 15 - Ukázka hierarchie komponent na formuláři Zdroj: vlastní tvorba FormElementReader Třída FormElementReader je nejdůležitější třída celé aplikace, protože se tato třída stará o načtení vstupního souboru a sestavení objektu typu FormElement, který se používá v celé aplikaci. FormElement vzniká parsování vstupního souboru výrazů, který definuje uživatelské rozhraní Windows Forms. Parsuje se převážně pomocí regulárních výrazů a metod třídy String. Ukázka toho souboru se nachází v kapitole Realizace Windows Forms. Tento objekt je použit pro zobrazení náhledu výsledného okna, sestavení stromové struktury po načtení vstupního souboru a samozřejmě také pro sestavení výsledného XAML souboru

44 FormElementReader je svojí implementací nejrozsáhlejší třída. Třída se skládá s jedné veřejné metody a tou je metoda GetFormHierarchy. Úkolem této metody je samotné vytvoření hierarchické struktury, jak je ukázáno na obrázku 13 - Ukázka hierarchie komponent na formuláři. Metodě při parsování pomáhá několik soukromých metod: GetNamespace Metoda získá ze vstupního souboru jmenný prostor, v jakém se převáděný formulář nachází. GetFormName Metoda získá název vstupního formuláře. GetChildElements Metoda nalezne všechny potomky kontejnerové komponenty. GetElementType Metoda vyhledá jakého je typu převáděná komponenta. GetElementAttributes Metoda získá všechny atributy jednoho konkrétního elementu. Nyní si přiblížíme implementace jednotlivých metod třídy FormElementReader GetNamespace Metoda je svojí implementací velice jednoduchá, jak již bylo napsáno, nalezne pouze jmenný prostor převáděného formuláře. Jmenný prostor je nalezen na základě jednoduchého regulárního výrazu, který vypadá následovně: "namespace ([A-Za-z0-9]+(\.)?)+ " Takto nalezený jmenný prostor je následně metodou vrácen jako řetězec GetFormName Její implementaci je analogicky velice podobná metodě GetNamespace GetElementType Metoda přijímá jediný parametr a tím je objekt typu FormElement, pro který chceme zjistit typ. Pro nalezení typu metoda využívá následující regulární výraz: "this\.{0} = new System\.Windows\.Forms\.[A-Za-z]+" Složené závorky s nulou uprostřed v regulárním výrazu jsou nahrazeny názvem komponenty. Ukázkový řádek, které regulární výraz hledá: this.txtlabel = new System.Windows.Forms.TextBox(); S výše uvedeného řádku dále metoda odstraní všechny znaky až po poslední tečku a vrátí typ objektu jako řetězcovou hodnotu

45 GetChildElements Úkolem metody je nalézt všechny vnořené komponenty v kontejnerovém prvku na základě názvu komponenty, který se předává jako parametr metodě. Ve vstupním souboru jsou komponenty přidávány do kontejnerového prvku následovně: this.grbdocumentoutline.controls.add(this.trvdocumentoutline); V uvedené ukázce se do komponenty typu GroupBox s názvem grbdocumentoutline přidává komponenta TreeView s názvem trvdocumentoutline. Tento způsob vkládání se pro všechny prvky stejný proto platí, že následující regulární výraz vyhledá všechny řádky, kde se do kontejnerové komponenty vkládají komponenty vnořené: "this\.{0}\.controls\.add\(this\.[a-za-z0-9]+\)" Složené závorky s nulou jsou vždy nahrazený názvem komponenty, který se předává jako parametr metodě. Nalezené řádky se dále uříznou o nežádoucí znaky a nechá se pouze název komponenty. Vytvoří se objekt typu FormElement a jeho vlastnosti Name se nastaví na právě nalezený název komponenty. Pomocí metody GetElementType se zjistí typ komponenty a uloží se do vlastnosti Type objektu FormElement. Pokud se právě nalezeny prvek nachází přímo na formuláři, tak se vlastnost IsOnFormElement objektu typu FormElement nastaví na true, jinak false. Tato vlastnost je následně využívaná při korekci umísťování ve výsledné WPF reprezentaci formuláře. Dále se pomocí metody GetElementAttributes naleznou všechny atributy komponenty. Předposledním krokem je rekurzivní zavolání metody GetChildElements pro všechny nalezené komponenty. Posledním krokem je přidání sestaveného objektu typu FormElement do rodičovského seznamu potomků Logger Tato třída je navržena podle strukturálního návrhového vzoru Singleton, který bude obecně popsán i s detailním využitím ve třídě Logger později. Třída Logger slouží pro zapisování jednotlivých klíčových událostí do výstupního souboru, který je možno nastavit v konfiguračním souboru aplikace pod názvem logfile. Třída disponuje pouze dvěma statickými metodami pro zápis a čtení logovacího souboru. Ukázka kódu pro zápis do logovacího souboru aplikace. public static void Write(string logmessage) { using (FileStream fs = new FileStream(logPath, FileMode.Append)) { using (StreamWriter sw = new StreamWriter(fs)) { lock (padlock)

46 } } } { } sw.writeline(string.format("{0} - {1}", DateTime.Now, logmessage)); Ukázková metoda Write pro zápis do logovacího souboru přijímá jedený parametr a tím je text logovací zprávy, který se propíše do souboru. Zajímavostí na metodě je použití klíčového slova using jazyka C#, které deklaruje proměnou, jež je přístupná pouze ve složených závorkách. Takto inicializovaná proměnná musí implementovat rozhraní IDisposable, protože po ukončení příkazu using dojde k zavolání metody Dispose, která se uvolní veškeré prostředky pro Garbage Collector a není nutno uzavírat používané proudy. Uvnitř prvního příkazu using je deklarován proud pro připsání textové zprávy za veškerý text v již existujícím souboru. Samotný zápis do souboru je uzamčen zámkem, aby nemohlo dojít k situaci, kdy jedno vlákno aplikace bude např. zapisovat do souboru a druhé vlákno aplikace bude číst soubor. V tomto případě by došlo k vyvolání výjimky typu: System.IO.IOException Singleton Účel Účelem vzoru Singleton je zajistit, aby byla v aplikace pouze jediná instance daného typu a k této instanci existuje pouze jediný přístupový bod. Návrh Návrhový vzor Singleton je implementovaný pouze pomocí jediné třídy a tím je třída Singleton. Třída obsahuje jeden soukromý statický člen s názvem singleton, jedná se o instanci samotné třídy Singleton, která není vnějšímu okolí viditelná. Soukromý člen je dále statický, aby byl sdílený mezi všemi instancemi třídy a ne pouze v rámci jediné jeho instance. K členu se přistupuje pomocí veřejné metody GetInstace. Dále je konstruktor třídy privátní, aby nebylo možné k němu přistupovat z vnější

47 Obrázek 16 - UML diagram vzoru Singleton Zdroj: vlastní tvorba Vyuţití vzoru Singleton v aplikaci Vytvářecí návrhový vzor Singleton je v aplikaci použit pro implementaci třídy Logger, která se stará o zápis, čtená a smazaní logovacího souboru aplikace. Postup implementace vzoru Singleton je u této třídy trošku odlišný. Na rozdíl od obecné ukázky výše třída Logger obsahuje veřejný konstruktor, ve kterém se volá soukromá metoda GetInstance, aby se každé čtení nebo zápis do souboru omezil pouze na jediný řádek kódu a byla zachována struktura jedináčka. Zde je ukázka, jak probíhá zápis do logovacího souboru: Logger.Write("Zobrazení náhledu formuláře."); Obrázek 17 - UML diagram využití vzoru Singleton Zdroj: vlastní tvorba LogWatcher Pokaždé, když jakákoliv z tříd v programu zapíše do logovacího souboru, změní se tím i velikost souboru na harddisku. A právě sledování změny velikosti logovacího souboru je hlavní úkol třídy LogWatcher, respektive její metoda Watch. Třída obsahuje privátní metodu

48 PrivateWatch, aby bylo možné jednoduše v metodě Watch spustit metodu PrivateWatch ve svém vlastním vlákně. Když dojde ke změně velikosti hlídaného souboru dojde ke spuštění události LogChanged PluginManager Jedním z požadavků na aplikaci je její snadná rozšiřitelnost a nahrazení stávajících knihoven (pluginů - *.dll souborů) za novější verzi bez rekompilace zdrojových kódů aplikace. Aby byl tento požadavek splněn, musela vzniknout třída PluginManager, jejíž starostí je při spuštění aplikace načíst všechny pluginy, které se nacházejí v potřebné složce. Umístění této složky je možno nastavit přes konfigurační soubor aplikace, jedná se o vlastnost s názvem sourcefolder. PluginManager implementuje pouze jedinou metodu pro načtení všech pluginů a vracení výsledku ve formě datové struktury Slovníku (Dictionary). Jako klíč je použit název pluginu a hodnota je vytvořená instance typy IControlCreator. Ukázka metody Load pro načtení pluginů: public Dictionary<string, IControlCreator> Load(string folder) { try { string[] dllfiles = Directory.GetFiles(folder, DLL_EXTENSION); foreach (string dllfile in dllfiles) { Assembly assembly = Assembly.LoadFrom(dllFile); } foreach (Type type in assembly.gettypes()) { if (type.getinterface(interface_name) == typeof(icontrolcreator)) { IControlCreator plugin = Activator.CreateInstance(type) as IControlCreator; plugins.add(plugin.name, plugin); } } } } return plugins; Celá výše uvedená metoda je naimplementována pomocí tzv. reflexe. Pomocí reflexe můžeme za běhu programu dynamicky zjišťovat informace o existujících typech nebo např. vytvářet jejich instance jako je to i v následující metodě. Metoda pro načtení všech pluginů přijímá jediný parametr a tím je složka, ve které se nacházení pluginy pro načtení. Pomocí statické metody Directory.GetFiles z jmenného prostoru System.IO vyhledáme všechny soubory s příponou *.dll ve zvolené složce a cesty k těmto souborům si uložíme do

49 proměnné dllfiles. Ve smyčce procházíme všechny nalezené soubory, které splnily výše uvedené podmínky a načítáme každý soubor do sestavení. Pro každé sestavení si načteme všechny typy, které se v daném sestavení nachází a otestujeme je, zda implementují rozhraní IControlCreator. Jestli toto rozhraní implementuje právě procházený typ, potom vytvoříme instanci tohoto typu a uložíme instanci do výsledné datové struktury slovníku pod klíč, kterým je název pluginu. (Watson, 2010) TreeNodeCreator Třída TreeNodeCreator slouží pro vytváření objektu TreeViewItem, který reprezentuje náhled stromové struktury v komponentě TreeView. Metoda obsahuje celkem tři metody z toho pouze jedna je veřejná a zbylé dvě jsou soukromé. Veřejná metoda MakeTree vytváří samotný strom hierarchie elementů na formuláři za pomocí dvou soukromých metod ConvertElementToTreeNode a MakeTreeViewItem. Tato metoda přijímá pouze jedený parametr a tím je logická pravda či nepravda, jestli se u každého z prvků formuláře mají zobrazit jeho vlastnosti jako potomci tohoto uzlu. První ze dvou soukromých metod je ConvertElementToTreeNode, která slouží pro rekurzivní (pojem rekurze viz. Rekurze níže) vytvoření hierarchie formuláře. Druhá je privátní metoda s názvem MakeTreeViewItem, která je volána z první soukromé metody ConvertElementToTreeNode, metoda má za úkol vytvořit jeden konkrétní uzel pro komponentu TreeView. Tento uzel se skládá z ikony a názvu prvku, název v sobě skrývá typ prvku a za pomlčkou následuje jeho původní název Rekurze V imperativním programování můžeme za pomocí rekurze v metodě volat tuto samotnou metodu opakovaně, aniž by došlo k ukončení přechozího volání. Důležitou součástí rekurze je ukončovací podmínka, aby nedošlo k vytvoření nekonečného cyklu TreeViewManagment TreeViewManagment patří mezi jednodušší třídy aplikace. Obsahuje pouze dvě metody a to ExpandAllItems a CollapseAllItems. V klasických WinForms aplikací, k de je komponenta TreeView s vlastností Expand, která nám umožnuje po nastavení hodnoty na true rekurzivně otevřít všechny elementy uzlu. Obdoba této vlastnosti ve WPF chybí, a proto je zde třída TreeViewManagment, která nám toto otevření a zavření uzlů zajistí. Ukázka kódu pro otevření všech uzlů elementu: public static void ExpandAllItems(this ItemCollection items) { foreach (TreeViewItem item in items) { item.isexpanded = true;

50 } } if (item.hasitems) ExpandAllItems(item.Items); Metoda je napsána jako tzv. rozšiřující, to nám umožní zavolat metodu přímo na kolekci typu ItemCollection. Metoda ve smyčce prochází všechny jednotlivé prvky kolekce a nastavuje jejich vlastnost IsExpanded na true, která se stará o otevření uzlu. Jestli prvek obsahuje další uzly jako svoje potomky, potom se rekurzivně volá metoda nad těmito potomky. Opačná metoda CollapseAllItems, která všechny položky zavře, pracuje obdobným způsobem, ale analogicky opačným XamlBuilder Třída XamlBuilder je svojí implementací jedna z jednodušších tříd aplikace. Obsahuje pouze jedinou metodu Build. Tato metoda se stará o vytvoření celé hierarchické struktury XAML souboru. Metoda Build využívá rekurzivní algoritmus k poskládání celé struktury. Více o rekurzi v kapitole TreeNodeCreator. V prvním volání metody Build dojde k nastavení proměnné parentnode na XmlNode jehož vnitřní tag nese název Window. Dále se v metodě projdou všechny potomci elementu Window a dojde k jejich převedení na XAML reprezentaci pomocí metody FactoryMethod. Zkontroluje se, jest-li výsledný navrácený objekt se nerovná hodnotě null. Táto hodnota je metodou FactoryMethod vrácena v případě, že komponenta není podporována převodem (neexistuje zásuvný modul pro převod této komponenty z Windows Forms) nebo došlo k chybě během převodu. Pokud je výsledný objekt typu XmlNode odlišný od null hodnoty, importuje se pomocí objektu doc. Pokud by nedošlo k tomuto importu, byla by vyvolána výjimka, která říká, že XmlNode je jiného původu a následně by nemohl být vložen do rodičovského XmlNodu. Další z podmínek zjišťuje, jestli je rodičovský uzel kontejnerový tag. Musí platit podmínka, že obsahuje potomka a tento potomek musí mít zároveň název Grid. Pokud je tato podmínka splněna přidáme převedený XmlNode do elementu Grid rodičovského uzlu. Jinak se vloží za poslední uzel v rodičovském uzlu. Celá metoda Build je dále rekurzivně volána s parametry potomka. Na závěr je rodičovský objekt typu XmlNode vrácen pomocí klíčového slova return XamlWriter Jedná se o nepříliš rozsáhlou a jednoúčelovou třídu pro zápis výsledného XAML do souboru. Třída obsahuje pouze jednu privátní a jednu veřejnou metodu. Privátní metoda s názvem GetDefaultTemplateData nedělá nic jiného, než že načte text ze souboru, který slouží jako šablona pro vygenerované okno. Obsah šablony je následující: <Window

51 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="{2}" Height="{3}" Width="{4}"> <Grid> </Grid> </Window> V šabloně je vidět rodičovský element Windows, který obsahuje výchozí direktivy při vytvoření okenní aplikace ve WPF. V tagu Windows se dále nacházení vlastnosti: Title, Height a Width, jejíž hodnoty budou později nastaveny na konkrétní hodnoty. Poslední je tag Grid, jehož obsah bude tvořit vygenerovaný XML (XAML) aplikací. Veřejná metoda Write se v aplikaci používá pro dva případy: 1. Vytvoření dočasného souboru s příponou.dat pro funkčnost Zobrazení náhledu, která soubor načte a zobrazí okno. 2. Pro zapsání výsledného XAML do souboru. Metoda Write přijímá dva parametry path typu string cesta, kde se výsledný soubor zapíše a objekt typu FormElement nese všechny důležité informace o vstupním formuláři pro převod. Pokud je parametr path nastaven na hodnotu null, tak je metoda Write využita k vytvoření dočasného souboru s příponou.dat, který se vytvoří ve složce s aplikací. Uvnitř těla metody se otevře proud pro zápis do souboru na zvolené cestě. Pomocí soukromé metody se načte výše uvedená šablona pro zápis do lokální proměnné typu XmlDocument s názvem doc. Po načtení šablony se nastaví konkrétní hodnoty vlastností tagu Window podle vstupního parametru metody form v proměnné doc. Další důležitý krok je sestavení samotného XML (XAML) kódu pro zápis pomocí třídy XamlBuilder. Když je XAML kód vygenerován je zapsán do tagu Grid unitř proměnné doc. Na závěr se vše pomocí metody Save objektu doc zapíše do souboru

52 11. DOKUMENTACE 11.1 Uţivatelská dokumentace V rámci uživatelské dokumentace se seznámíme se všemi funkčnostmi, které aplikace nabízí Načtení vstupního souboru Pro vybrání vstupního souboru vybereme s hlavní lišty ze záložky Soubor položku Otevřít. Ukázky možných vstupních souborů viz. Příloha 1 a Příloha 3 Vše demonstruje obrázek. Obrázek 18 - Výběr vstupního souboru Zdroj: printscreen aplikace, vlastní tvorba Po klepnutí na položku Otevřít se zobrazí dialogové okno pro vybrání souboru s příponou *.Designer.cs. Vše demonstruje následující obrázek

53 Obrázek 19 - Dialogové okno pro výběr vstupního souboru Zdroj: printscreen aplikace, vlastní tvorba Po načtení vstupního souboru se aktualizuje textové pole s cestou ke vstupnímu souboru (1) a v části formuláře s názvem Detaily vstupního souboru se zobrazí stromová struktura načteného formuláře (2). Obrázek 20 - Aktualizované hlavní okno po načtení vstupního souboru Zdroj: printscreen aplikace, vlastní tvorba

54 Zobrazení náhledu Pro zobrazení náhledu výsledného převedeného okna do WPF se zobrazí po klepnutí na položku Zobrazit náhled (1) ze záložky Náhled hlavní lišty aplikace, poté se zobrazí samotný náhled okna (2). Vše demonstruje následující obrázek. Obrázek 21 - Zobrazení náhledu převáděného formuláře Zdroj: printscreen aplikace, vlastní tvorba Převedení formuláře Pro úspěšné převedení vstupního formuláře je potřeba provést výběr vstupního souboru podle kapitoly Načtení vstupního souboru. Dále je potřeba vybrat výstupní cestu, kde bude převedený soubor uložen. Výběr se provede vybráním položky Výstupní cesta ze záložky Soubor (1), následně se zobrazí dialogové okno pro vybrání výstupní cesty (2)

55 Obrázek 22 - Výběr výstupní cesty Zdroj: printscreen aplikace, vlastní tvorba Posledním krokem po vybrání vstupního souboru a výstupní cesty je klepnutí na tlačítko Convert Now. Pokud dojde k úspěšnému převedení formuláře, zobrazí se dialogové okno se zprávou o úspěšném převedení. Ukázky již převedených formulářů viz. Příloha 2 a Příloha Programátorská dokumentace V následující si představíme ukázkové vytvoření pluginu pro převod textového pole Vytvoření ukázkového pluginu pro TextBox V následující části si ukážeme, jak naimplementovat zásuvný modul pro aplikaci, pomocí kterého přidáme aplikaci funkčnost převádět textová pole. Každý plugin pro aplikaci ConvertingWFIntoWPF představuje samostatný projekt v Microsoft Visual Studio typu Class Library. Uvnitř toho projektu se nachází pouze jedna třída, která bude sloužit pro převod komponenty v našem případě pojmenovaná TextBoxCreator, protože se bude převádět komponenty typu TextBox. Třída TextBoxCreator musí implementovat rozhraní IControlCreator, které zaručí, že třída bude obsahovat všechny potřebné členy pro převod. Detailní popis tohoto rozhraní viz. kapitola IControlCreator. Následující obrázek ilustruje pouze všechny členy rozhraní IControlCreator

56 Obrázek 23 - Rozhraní IControlCreator Zdroj: vlastní tvorba Implementace vlastnosti Name Vlastnost Name tedy v zásuvném modulu pro převod komponent typu TextBox má hodnotu TextBox. Její implementace potom vypadá následovně: public string Name { get { return "TextBox"; } } Implementace vlastnosti Version Další vlastnost s názvem Version je pouhé číselné označení verze zásuvného modulu, které volí sám vývojář podle stádia vývoje, v jakém se zásuvný modul nachází. Číselné verzování se opírá o standard společnosti Microsoft. Celé číslo verze se skládá ze čtyř čísel, které jsou odděleny tečkami. Příklad takového číslování může být verze První číslice je označení primární verze, druhá číslice udává sekundární verzi, třetí číslice označuje číslo sestavení (build) a poslední čtvrtá číslice opravný baličky a hotfixy. V našem případě lze říct, že verze obsahuje opravný balíček číslo 1 a 500 hotfixů. (XXX.XXX.XXX.1500). Implementace vlastnosti Version vypadá následovně: public string Version { get { return " "; } } Implementace vlastnosti Description Poslední vlastnost rozhraní je Description. Tato vlastnost slouží pouze ke krátkému popisu zásuvného modulu. Všechny tři výše uvedené vlastnosti se zobrazují v dialogovém okně O Doplňcích, viz. kapitola

57 Implementace metody Create Metoda Create slouží pro vytvoření XAML (XML) tagů Windows Forms komponent. Na začátku implementace každé metody Create se vytváří objekt typu XmlDocument, který představuje XAML tag pro WPF. XmlDocument doc = new XmlDocument(); XmlNode node = doc.createelement(constants.ctrl_textbox); Metoda doc.createelement(constants.ctrl_textbox) vytvoří v objektu doc XML element, který vypadá následovně: <TextBox></TextBox> Pro každou komponent jsou typické naprosto odlišné vlastnosti, pro textové pole jsou to např. vlastnosti Text jedná se o text, který je v textovém poli již předvyplněný a ReadOnly hodnota v textovém poli slouží pouze pro čtení a nelze zadávat vlastní text. Zásuvný modul pro převod komponenty TextBox bude tedy podporovat tyto dvě vlastnosti, které jsou pro něj klíčové. Přidání podpory pro předvyplnění textového pole textem stačí pouze XAML elementu přidat atribut s názvem TEXT. Celé přidání vypadá následovně: if (element.attributes.containskey(constants.attr_text)) { XmlAttribute ctrltext = doc.createattribute(constants.attr_text); ElementAttribute text = ElementAttribute)element.Attributes[Constants.ATTR_TEXT]; } ctrltext.value = text.content.tostring(); node.attributes.append(ctrltext); V podmínce se zjistí, jest-li objekt typy FormElement obsahuje vlastnost s názvem Text, pokud takovou vlastnosti obsahuje, dojde k vytvoření XML atributu s názvem Text. Atributu se nastaví hodnota, která odpovídá hodnotě vlastnosti Text objektu FormElement. A celý atribut se přidá do objektu doc. Výsledný objekt doc po přidání atributu potom vypadá následovně: <TextBox Text= Tady je text objektu FormElement ></TextBox> Druhá vlastnosti, kterou bude zásuvný modul pro převod textového pole podporovat je vlastnost ReadOnly. Aby bylo textové pole ve WPF pouze ke čtení stačí XAML elementu přidat pouze vlastnost ReadOnly s hodnou true. Ukázka zdrojového kódu pro přidání odpory vlastnosti ReadOnly: if (element.attributes.containskey(constants.attr_read_only))

58 { } XmlAttribute ctrlreadonly = doc.createattribute(constants.attr_is_read_only); ElementAttribute readonly = (ElementAttribute)element.Attributes[Constants.ATTR_READ_ONLY ]; ctrlreadonly.value = readonly.content.tostring(); node.attributes.append(ctrlreadonly); Přidání vlastnosti ReadOnly textovému poli je analogické jako v případě vlastnosti Text. Výsledný objekt doc po přidání vlastnosti ReadOnly vypadá následovně: <TextBox Text= Tady je text objektu FormElement ReadOnly= True > </TextBox> Takto vytvořený zásuvný modul stačí překompilovat a vložit do příslušné složky v aplikaci, ve které se nachází zásuvné moduly. Ve výchozím nastavení aplikace se zásuvné moduly nachází ve složce s názvem source. Avšak název složky, která slouží pro zásuvné moduly, se může lehce změnit v konfiguračním souboru aplikace

59 12. ZÁVĚR V rámci práce byla naimplementována aplikace pro převod formuláře s Windows Forms do novější technologie Windows Presentation Foundation (WPF), které jsou součástí Microsoft.NET Frameworku. Aplikace je naimplementovaná pomocí objektově orientovaného programovacího jazyka C# za využití právě WPF, která umožňuje lehce zobrazit náhled výsledného okna oproti Windows Forms. Aplikace demonstruje snadné přizpůsobení všech formulářových prvků ve WPF. Aplikace umožňuje vybrat vstupní soubor (s příponou.designer.cs), který deklaruje uživatelské rozhraní a převést tento soubor na jeho, co možná nejvěrohodnější reprezentaci ve WPF pomocí značkovacího jazyka XAML. WPF využívá XAML jako značková jazyk pro deklarování uživatelského rozhraní. Pomocí jazyka XAML umožňuje oddělit definici uživatelského rozhraní od aplikační logiky aplikace. Aplikace dále umožňuje např. zobrazení hierarchické struktury vstupního souboru, zobrazení náhledu okna, vybrání cesty, kde bude výsledný převedený soubor uložen atd. Aplikace nepodporuje všechny komponenty Windows Forms, ale pouze vybranou množiny těch nejpoužívanějších a nejrozšířenějších, jako jsou např. textové pole, popisek, tlačítko, přepínatko atd. U každé z těchto komponent aplikace opět podporuje pouze vybranou množinu jejich vlastností. Jeden z hlavních požadavků na implementaci byla snadná rozšiřitelnost. A proto je veškerá aplikační logika soustředěna do zásuvných modulů. Moduly jsou prezentovány knihovnami typu.dll. Ke každé komponentě, kterou má aplikace podporovat musí existovat zásuvný modul. Pomocí těch zásuvných modulů může být aplikace snadno rozšířena bez rekompilace zdrojových kódu celé aplikace. Stačí pouze vytvořit nový zásuvný modul pro novou komponentu, kterou má aplikace podporovat a nahrát tento modul do složky určené pro tyto zásuvné modulu a aplikace bude při dalším spuštění podporovat i tuto komponentu. Během vývoj aplikace se zjistilo, že jedním z největších problému, se kterými se na začátku vůbec nepočítalo je umisťování prvků ve WPF. Celý problém začíná už ve velikosti formuláře. Formulářová aplikace o velikosti 500x500 pixelu ve Windows Forms vůbec neodpovídá formulářové aplikace o stejné velikosti ve WPF. To samé platí i o samotných komponentách ve WPF. Každá komponenta ve WPF nese naprosto jiný souřadnicový počátek, než jak je tomu u obdobné komponenty ve Windows Forms. Další z možných problémů, který může nastat nejen u umísťování komponent na jejich pozice, ale u všeobecné analýzy jejich vlastností pro převod je dynamická úprava těchto vlastností z kódu na pozadí aplikace. Např. v implementaci konstruktoru formuláře může být umístěný kód, který dynamicky nastavuje vlastnosti formuláře na základě nějakého parametru předaného v konstruktoru. Další z faktorů, které znemožňují přímou konverzi Windows Forms do WPF je, že ne všechny komponenty z Windows Forms jsou ve WPF zastoupeny

60 Cest, kterými by se mohl budoucí vývoj aplikace ubírat, je mnoho. Prvním z možných vylepšení aplikace je samotné vylepšení umísťování prvků na formulář ve výsledném XAML souboru. Dále by se mohli vyvíjet zásuvné moduly pro podporu dalších komponent z Windows Forms. Aplikace by se mohla rozšířit na převádění celých projektů a nejen pouze jednotlivých formulářů. V dalších verzích by aplikace mohla přinést i podporu pro převádění kódu na pozadí formulářů. A nakonec také podporu databindingu (vázání dat na komponenty z různých datových zdrojů např. databáze nebo XML). Aplikace by mohla najít své uplatnění v malých a středních firmách, které vlastní informační systémy, které jim byla navrženy na míru a chtějí je modernizovat. Aplikace by ušetřila značné náklady na vývoj informačního systému, protože by nemusel být vyvíjen od začátku

61 13. CONCLUSION During this Bachelor s Thesis has been developed application for converting form from Windows Forms technology into newer technology called Windows Presentation Foundation. Both technologies are part of.net Framework. Application has been developed using object-oriented C# programming language together with WPF. WPF is used because it is easier to implement preview of converted form in WPF then in Windows Forms. Application also demonstrates customization of all form controls. Application allows user to select input file (with extension.designer.cs) which defines user interface in Windows Forms technology and convert this file into its WPF representation as credible as possible. WPF uses XAML as declarative language for defining user interface. XAML allows to application easily separate definition of user interface from application logic. This application offers user following: display hierarchical structure of input file, display windows preview, select path, where the output file would be saved and so on. Application doesn t support all Windows Forms controls for converting but there is just select set of the most used controls. Among these controls are textbox, label, button, checkbox and so on. At every control application supports selected set of its attributes. One of the most important requirements for application was extensibility. That s why all application logic for converting controls is centered in plugins. Plugins are represented like *.dll libraries. For each control that application supports must be plugin. Using these plugins can be application easily extended without recompiling all the source code. Simply another plugin can be implemented which should support application for converting and put this plugin into folder which contains these plugins and when the application starts again it will use this new plugin for converting. During application development, it was found that one of the biggest problems faced at the beginning of no account is placing control in WPF. The whole problem starts at the size of the form. Windows Forms application with dimensions 500 x 500 pixel doesn t correspond to the application of the same size in WPF. And the same is true for WPF controls. Every WPF control has different zero coordinates then its same control in Windows Form technology. Another big problem not only for positing the controls is dynamic assigning of their attributes. Controls attributes can be set from code behind. For example inside the constructor of form can be placed some parameter which is used to set some control attribute. Another one of facts that complicates straight conversion of Windows Forms into WPF is that there are not all available controls in WPF to represent Windows Forms controls. There are many paths which could be the future development of application. The first of the possible enhancements to the application is better control placing in output XAML file. Next plugins could be also developed to support more Windows Forms control for conversion. Conversion could be spread to support whole projects and not only file which defines user

62 interface. Later stages of development could bring support of converting code behind files. And finally application could be able to convert controls with data binding values. Application could find its place in small and medium companies which own information systems designed to order and they want to modernize them. Application would save a lot of costs because the information system won t be developed from begin

63 14. SEZNAM POUŢITÉ LITERATURY 1. SHARP, John. Microsoft Visual C# 2005 Krok za krokem. Brno: Computer Press, s. ISBN BISHOPOVÁ, Judith. C# návrhové vzory. Brno: Zoner Press, s. ISBN NAGEL, C., EVJEN, B., GLYNN, J., SKINNER, M., WATSON, K. C# 2008 Programujeme profesionálně. Brno: Computer Press, s. ISBN ARLOW, J., NEUSTADT, I. UML2 a unifikovaný proces vývoje aplikací. Brno: Computer Press, s. ISBN WATSON, Ben. C# 4.0 HOW-TO. Indianapolis: SAMS, s. ISBN NATHAN, Adam. WPF 4 Unleashed. Indianapolis: SAMS, s. ISBN MACDONALD, Matthew. Pro WPF in C# New York: Apress, s. ISBN LAIR, Robert. Beginning Silverlight 4 in C#. New York: Apress, s. ISBN LEE, H., CHUVYROV, E. Beginning Windows Phone 7 Development. New York: Apress, s. ISBN NASH, Trey. Accelerated C# New York: Apress, s. ISBN What is Mono [online],

64 15. SEZNAM POUŢITÝCH SYMBOLŮ A ZKRATEK Zkratka WF WPF XAML XML REQ GUI API CLR MSVS DPI RIA Popisek Windows Forms Windows Presentation Foundation Extensible Application Markup Language Extensible Markup Language Požadavek Graphic User Interface Application Programming Interface Common Language Runtime Microsoft Visual Studio Dots Per Inch Rich Internet Application

65 16. SEZNAM OBRÁZKŮ Obrázek 1 - Vývoj programování aplikací pro systém Windows Obrázek 2 - Vývoj.NET Frameworku Obrázek 3 - Ukázka formuláře z technologie Windows Forms Obrázek 4 - Ukázka okna s bohatým uživatelským rozhraní vytvořeného ve WPF Obrázek 5 - Vývoj technologie WPF v závislosti na čase Obrázek 6 - Silverlight RIA aplikace Obrázek 7 - Běžná HTML stránka Obrázek 8 - Třídní diagram aplikace Obrázek 9 - UML diagram vzoru Decorator Obrázek 10 - UML diagram využití vzoru Decorator Obrázek 11 - Hlavní okno aplikace Obrázek 12 - Okno s podporovanými doplňky Obrázek 13 - UML diagram vzoru Facade Obrázek 14 - UML diagram využití vzoru Facade Obrázek 15 - Ukázka hierarchie komponent na formuláři Obrázek 16 - UML diagram vzoru Singleton Obrázek 17 - UML diagram využití vzoru Singleton Obrázek 18 - Výběr vstupního souboru Obrázek 19 - Dialogové okno pro výběr vstupního souboru Obrázek 20 - Aktualizované hlavní okno po načtení vstupního souboru Obrázek 21 - Zobrazení náhledu převáděného formuláře Obrázek 22 - Výběr výstupní cesty Obrázek 23 - Rozhraní IControlCreator

66 17. SEZNAM TABULEK Tabulka 1 - Funkční požadavky aplikace Tabulka 2 - Nefunkční požadavky aplikace Tabulka 3 - Podporované komponenty pro převod do WPF a jejich vlastnosti

67 18. SEZNAM PŘÍLOH 1. Příloha 1 Ukázka formuláře SampleForm1 ve WF 2. Příloha 2 - Ukázka převedeného SampleForm1 do WPF 3. Příloha 3 Ukázka formuláře SampleForm2 ve WF 4. Příloha 4 - Ukázka převedeného SampleForm2 do WPF 5. Příloha 5 CD

68 18.1 Příloha 1 Ukázka formuláře SampleForm1 ve WF

69 18.2 Příloha 2 - Ukázka převedeného SampleForm1 do WPF

70 18.3 Příloha 3 Ukázka formuláře SampleForm2 ve WF

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework

Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework Připravil: Ing. Vít Ondroušek, Ph.D. Technologie.Net Framework úvod, historie, základy.net framework, programovací jazyky, vývojové prostředky Úvod strana 2 Cíl předmětu Seznámit se s vývojem aplikací

Více

Seznámení s prostředím dot.net Framework

Seznámení s prostředím dot.net Framework Základy programování v jazyce C# Seznámení s prostředím dot.net Framework PL-Prostředí dot.net - NET Framework Je základním stavebním prvkem, na kterém lze vytvářet software. Jeho součásti a jádro je založené

Více

Novinky ve Visual Studio 2010. Tomáš Kroupa Tomas.Kroupa@hotmail.com

Novinky ve Visual Studio 2010. Tomáš Kroupa Tomas.Kroupa@hotmail.com Novinky ve Visual Studio 2010 Tomáš Kroupa Tomas.Kroupa@hotmail.com O čem si dnes řekneme Visual studio 2010 (beta 2) Jazyk C# 4.0 ASP.NET 4.0.NET 4.0 Visual Studio 2010 Beta 2 Jak získat Testovací verze

Více

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

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý Uživatelský manuál Aplikace GraphViewer Vytvořil: Viktor Dlouhý Obsah 1. Obecně... 3 2. Co aplikace umí... 3 3. Struktura aplikace... 4 4. Mobilní verze aplikace... 5 5. Vytvoření projektu... 6 6. Části

Více

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127 Stručný obsah Část I Úvod do vývoje v prostředí Visual Studio 25 1. Možnosti vývoje v jazyce Visual Basic a Windows Store 27 2. Integrované vývojové prostředí Visual Studio 41 3. Vytvoření první aplikace

Více

MBI - technologická realizace modelu

MBI - technologická realizace modelu MBI - technologická realizace modelu 22.1.2015 MBI, Management byznys informatiky Snímek 1 Agenda Technická realizace portálu MBI. Cíle a principy technického řešení. 1.Obsah portálu - objekty v hierarchiích,

Více

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Efektivní vývoj mobilních aplikací na více platforem současně Mgr. David Gešvindr MCT MSP MCPD MCITP gesvindr@mail.muni.cz Osnova 1. Kam míří platforma Windows Phone 2. Seznámení s univerzálními Windows

Více

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14 KAPITOLA 1 Nové rysy Windows 8 a 8.1 15 Nové uživatelské rozhraní 15 Rychlý náběh po zapnutí 16 Informace v prvním sledu 16 Nové prezentační

Více

PROGRAMOVÁNÍ PRO MS WINDOWS 1

PROGRAMOVÁNÍ PRO MS WINDOWS 1 Cílem předmětu je seznámit posluchače s moderními prostředky pro tvorbu aplikací pro Windows jmenovitě s programovou platformou.net a programovacím jazykem C#. V průběhu budou vysvětlena následující témata:

Více

CineStar Černý Most Praha 31. 10. 2012

CineStar Černý Most Praha 31. 10. 2012 CineStar Černý Most Praha 31. 10. 2012 Stejná aplikace na více zařízeních Michael Juřek Microsoft s.r.o. Potřebné ingredience 1. Portable libraries 2. Návrhový vzor MVVM 3. XAML 4. Abstrakce platformy

Více

Rozklad na prvočinitele. 3. prosince 2010

Rozklad na prvočinitele. 3. prosince 2010 Rozklad na prvočinitele Ondřej Slavíček 3. prosince 2010 1 Obsah 1 Příručka k programu 3 1.1 funkce main()............................. 3 1.2 funkce hlavnifunkce()........................ 3 1.3 funkce

Více

1. Začínáme s FrontPage 2003 11

1. Začínáme s FrontPage 2003 11 Úvod 9 1. Začínáme s FrontPage 2003 11 Instalace programu 12 Spuštění a ukončení programu 15 Základní ovládání 16 Hledání souborů 30 Najít a nahradit 31 Tisk 32 Schránka sady Office 34 Nápověda 36 Varianty

Více

Bridge. Známý jako. Účel. Použitelnost. Handle/Body

Bridge. Známý jako. Účel. Použitelnost. Handle/Body Bridge Bridge Známý jako Handle/Body Účel odděluje abstrakci (rozhraní a jeho sémantiku) od její konkrétní implementace předchází zbytečnému nárůstu počtu tříd při přidávání implementací používá se v době

Více

úvod Historie operačních systémů

úvod Historie operačních systémů Historie operačních systémů úvod Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Ing. Libor Otáhalík. Dostupné z Metodického portálu www.rvp.cz, ISSN: 1802-4785. Provozuje Národní ústav

Více

První kapitola úvod do problematiky

První kapitola úvod do problematiky První kapitola úvod do problematiky Co je to Flex Adobe Flex je ActionSript (AS) framework pro tvorbu Rich Internet Aplications (RIA), tedy knihovna AS tříd pro Flash. Flex používáme k vytvoření SWF souboru

Více

Elektronické učebnice popis systému, základních funkcí a jejich cena

Elektronické učebnice popis systému, základních funkcí a jejich cena Elektronické učebnice popis systému, základních funkcí a jejich cena Vytvořil TEMEX, spol. s r. o. Obsah 1. Úvod... 2 Formáty... 2 Cena... 2 2. Systémové požadavky... 3 Interaktivní PDF verze... 3 HTML

Více

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12 O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10 Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12 Poděkování 15 Earle Castledine 15 Myles Eftos 15 Max Wheeler

Více

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13 Obsah Úvod 11 Platforma.NET 11.NET Framework 11 Visual Basic.NET 12 1 Základní principy a syntaxe 13 Typový systém 13 Hodnotové typy 13 Struktury 15 Výčtové typy 15 Referenční typy 15 Konstanty 16 Deklarace

Více

Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c#

Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c# Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c# Ing. Marek Musil 1 Abstrakt Platforma.NET je používána k vytváření velmi efektivních a uživatelsky přívětivých aplikací. Nabízí

Více

Možnosti tisku v MarushkaDesignu

Možnosti tisku v MarushkaDesignu 0 Možnosti tisku v MarushkaDesignu OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 UKÁZKA DIALOGOVÉHO OKNA...3 4 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...5-1 - 1 Cíl příkladu V tomto příkladu si ukážeme

Více

Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09

Animace ve WPF. Filip Gažák. Ing. Václav Novák, CSc. Školní rok: 2008-09 Animace ve WPF Filip Gažák Ing. Václav Novák, CSc. Školní rok: 2008-09 Abstrakt Hlavním tématem práce bude nový prvek pro tvorbu uživatelského prostředí ve WPF animace. V teoretické části se nejprve seznámíme

Více

1. Dědičnost a polymorfismus

1. Dědičnost a polymorfismus 1. Dědičnost a polymorfismus Cíl látky Cílem této kapitoly je představit klíčové pojmy dědičnosti a polymorfismu. Předtím však je nutné se seznámit se základními pojmy zobecnění neboli generalizace. Komentář

Více

Aplikace pro srovna ní cen povinne ho ruc ení

Aplikace pro srovna ní cen povinne ho ruc ení Aplikace pro srovna ní cen povinne ho ruc ení Ukázkový přiklad mikroaplikace systému Formcrates 2010 Naucrates s.r.o. Veškerá práva vyhrazena. Vyskočilova 741/3, 140 00 Praha 4 Czech Republic tel.: +420

Více

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy.

Úvodní příručka. Získání nápovědy Kliknutím na otazník přejděte na obsah nápovědy. Úvodní příručka Microsoft Access 2013 vypadá jinak než ve starších verzích, proto jsme vytvořili tuto příručku, která vám pomůže se s ním rychle seznámit. Změna velikosti obrazovky nebo zavření databáze

Více

1. Úvod do obsluhy AutoCADu

1. Úvod do obsluhy AutoCADu 1. Úvod do obsluhy AutoCADu Studijní cíl V této lekci se naučíme: Seznámíme se s potřebným zařízením. Způsoby ovládání. Nastavení AutoCADu. Doba nutná k procvičení 1,5 hodiny 1.1 AutoCAD AutoCAD je plnohodnotný

Více

Wonderware Information Server 4.0 Co je nového

Wonderware Information Server 4.0 Co je nového Wonderware Information Server 4.0 Co je nového Pavel Průša Pantek (CS) s.r.o. Strana 2 Úvod Wonderware Information Server je výrobní analytický a reportní informační portál pro publikaci výrobních dat

Více

Instalace a první spuštění programu. www.zoner.cz

Instalace a první spuštění programu. www.zoner.cz Instalace a první spuštění programu www.zoner.cz CZ Průvodce instalací Z nabídky instalačního CD vyberte Zoner Photo Studio 13 v požadované jazykové verzi * a klikněte na položku Instalace programu. Pokud

Více

Poznámky k verzi Remote support platform 3.1

Poznámky k verzi Remote support platform 3.1 What's New Verze dokumentu: 1.0 2014-05-09 Verze dokumentu Následující tabulka poskytuje přehled nejdůležitějších změn dokumentu. Verze Datum Popis 1.0 2014-05-09 První verze 2 All rights reserved. Verze

Více

01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start.

01. HODINA. 1.1 Spuštění programu VB 2010. 1.2 Prvky integrovaného vývojového prostředí. - pomocí ikony, z menu Start. 01. HODINA 1.1 Spuštění programu VB 2010 - pomocí ikony, z menu Start. - po spuštění si můžeme vybrat, zda chceme vytvořit nový Projekt a jaký nebo zda chceme otevřít již existující Projekt. 1.2 Prvky

Více

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER váš partner na cestě od dat k informacím globtech spol. s r.o. karlovo náměstí 17 c, praha 2 tel.: +420 221 986 390 info@globtech.cz

Více

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans. 1 Grafické rozhraní Studijní cíl Tento blok je věnován vytváření programů s využitím grafického rozhraní (GUI). Vysvětlen bude základní filozofie pro vytváření aplikací s GUI ve srovnání s konzolovými

Více

Nové jazykové brány do Caché. Daniel Kutáč

Nové jazykové brány do Caché. Daniel Kutáč Nové jazykové brány do Caché Daniel Kutáč O čem budeme mluvit.net T/SQL Perl Python MultiValue Basic Téma.NET provider .NET Provider Co lze již dnes Factory / VisM ODBC.NET Web Services Factory a VisM

Více

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče

Web. Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče Web Získání informace z internetu Grafické zobrazení dat a jejich struktura Rozšíření funkcí pomocí serveru Rozšíření funkcí pomocí prohlížeče Technologické trendy v AV tvorbě, Web 2 DNS Domain Name Systém

Více

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

24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1 24-2-2 PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE AUTOR DOKUMENTU: MGR. MARTINA SUKOVÁ DATUM VYTVOŘENÍ: 23.7.2013 KLÍČOVÁ AKTIVITA: 02 UČIVO: STUDIJNÍ OBOR: PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) INFORMAČNÍ TECHNOLOGIE

Více

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 Obsah Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10 KAPITOLA 1 Co budeme potřebovat 11 Co knihovna jquery nabízí 11 Editor zdrojového kódu 12 Webový server 12 Software pro ladění

Více

O projektu Nasazení OpenOffice.org v praxi

O projektu Nasazení OpenOffice.org v praxi O projektu Nasazení OpenOffice.org v praxi Filip Molčan molcanf@openoffice.org Konference EurOpen Hotel Relax, Moninec - 18. 5. 2005 Obsah prezentace Minulost a současnost OpenOffice.org Představení projektu

Více

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ

INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ INFORMAČNÍ SYSTÉM VIDIUM A VYUŽITÍ MODERNÍCH TECHNOLOGIÍ Michal Brožek, Dominik Svěch, Jaroslav Štefaník MEDIUM SOFT a.s., Cihelní 14, 702 00 Ostrava, ČR Abstrakt Neustále rostoucí význam sběru dat, možnost

Více

1. Programování proti rozhraní

1. Programování proti rozhraní 1. Programování proti rozhraní Cíl látky Cílem tohoto bloku je seznámení se s jednou z nejdůležitější programátorskou technikou v objektově orientovaném programování. Tou technikou je využívaní rozhraní

Více

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU 8.6.2011 Technologie Java Enterprise Edition Přemek Brada, KIV ZČU 8.6.2011 Přehled tématu Motivace a úvod Infrastruktura pro velké Java aplikace (Java základní přehled) Části třívrstvé struktury servlety, JSP

Více

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

Programové vybavení počítačů operační systémy Programové vybavení počítačů operační systémy Operační systém Základní program, který oživuje hardware a poskytuje prostředí pro ostatní programy Řídí využití procesoru, síťovou komunikaci, tisk, ovládá

Více

PROGRAMOVÁNÍ PRO MS WINDOWS 2

PROGRAMOVÁNÍ PRO MS WINDOWS 2 Cílem předmětu je seznámit posluchače s moderními prostředky pro tvorbu aplikací pro Windows jmenovitě s programovou platformou NET a programovacím jazykem C#. V průběhu budou vysvětlena následující témata:

Více

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25 Programování v C# Úvodní slovo 1 / 25 Obsah přednášky Seznámení s předmětem Co je.net Vlastnosti.NET 2 / 25 Kdo je kdo Petr Vaněček vanecek@pf.jcu.cz J 502 Václav Novák vacnovak@pf.jcu.cz?? Při komunikaci

Více

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

ČÁST 1. Základy 32bitového programování ve Windows Obsah Úvod 13 ČÁST 1 Základy 32bitového programování ve Windows Kapitola 1 Nástroje pro programování ve Windows 19 První program v Assembleru a jeho kompilace 19 Objektové soubory 23 Direktiva INVOKE 25

Více

Téma 1: Práce s Desktop. Téma 1: Práce s Desktop

Téma 1: Práce s Desktop. Téma 1: Práce s Desktop Téma 1: Práce s Desktop 1 Teoretické znalosti V této kapitole zjistíte, co skrývají pojmy jako Desktop, GNOME, KDE, Metacity Window Manager, Nautilus a Konqueror. Desktop neboli pracovní plocha patří mezi

Více

HTML Hypertext Markup Language

HTML Hypertext Markup Language HTML Hypertext Markup Language je jazyk určený na publikování a distribuci dokumentů na Webu velmi jednoduchý jazyk používá ho mnoho uživatelů má výkonné prostředky (příkazy) k formátování dokumentů (různé

Více

11 Diagram tříd, asociace, dědičnost, abstraktní třídy

11 Diagram tříd, asociace, dědičnost, abstraktní třídy 11 Diagram tříd, asociace, dědičnost, abstraktní třídy Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost diagramům tříd, asociaci,

Více

Programátorská příručka

Programátorská příručka KAPITOLA 1. PROGRAMÁTORSKÁ PŘÍRUČKA Kapitola 1 Programátorská příručka 1.1 Úvod 1.1.1 Technologie Program je psaný v jazyce Java 1.7. GUI je vytvářeno pomocí knihovny SWT. (http://eclipse.org/swt/) Pro

Více

Obsah. 1 Úvod do Visia 2003 15. 2 Práce se soubory 47. Předmluva 11 Typografická konvence použitá v knize 13

Obsah. 1 Úvod do Visia 2003 15. 2 Práce se soubory 47. Předmluva 11 Typografická konvence použitá v knize 13 Předmluva 11 Typografická konvence použitá v knize 13 1 Úvod do Visia 2003 15 Visio se představuje 16 Výchozí podmínky 16 Spuštění a ukončení Visia 18 Způsoby spuštění Visia 18 Ukončení práce s Visiem

Více

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

Začínáme pracovat s tabulkovým procesorem MS Excel Začínáme pracovat s tabulkovým procesorem MS Excel Nejtypičtějším představitelem tabulkových procesorů je MS Excel. Je to pokročilý nástroj pro tvorbu jednoduchých i složitých výpočtů a grafů. Program

Více

Profilová část maturitní zkoušky 2013/2014

Profilová část maturitní zkoušky 2013/2014 Střední průmyslová škola, Přerov, Havlíčkova 2 751 52 Přerov Profilová část maturitní zkoušky 2013/2014 TEMATICKÉ OKRUHY A HODNOTÍCÍ KRITÉRIA Studijní obor: 78-42-M/01 Technické lyceum Předmět: TECHNIKA

Více

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění

MS WINDOWS I. řada operačních systémů firmy Microsoft *1985 -? Historie. Práce ve Windows XP. Architektura. Instalace. Spouštění MS WINDOWS I řada operačních systémů firmy Microsoft *1985 -? Historie Práce ve Windows XP Architektura Instalace Spouštění HISTORIE I MS-DOS 1981, první OS firmy Microsoft, pro IBM PC 16b, textový, jednouživatelský,

Více

O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source

O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source O projektu OpenOffice.org a IBM OS/2 OS/2 a Open Source Filip Molčan molcanf@openoffice.org Konference Warpstock Czech Republic 2005 Liberec - 16. 7. 2005 Obsah prezentace Minulost a současnost OpenOffice.org

Více

IT ESS II. 1. Operating Systém Fundamentals

IT ESS II. 1. Operating Systém Fundamentals IT ESS II. 1. Operating Systém Fundamentals Srovnání desktopových OS a NOSs workstation síťové OS (NOSs) jednouživatelské jednoúlohové bez vzdáleného přístupu místní přístup k souborům poskytují a zpřístupňují

Více

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010

FORTANNS. havlicekv@fzp.czu.cz 22. února 2010 FORTANNS manuál Vojtěch Havlíček havlicekv@fzp.czu.cz 22. února 2010 1 Úvod Program FORTANNS je software určený k modelování časových řad. Kód programu má 1800 řádek a je napsán v programovacím jazyku

Více

Hospodářská informatika

Hospodářská informatika Hospodářská informatika HINFL, HINFK Vytvořeno s podporou projektu Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu reg.

Více

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML

2 PŘÍKLAD IMPORTU ZATÍŽENÍ Z XML ROZHRANÍ ESA XML Ing. Richard Vondráček SCIA CZ, s. r. o., Thákurova 3, 160 00 Praha 6 www.scia.cz 1 OTEVŘENÝ FORMÁT Jednou z mnoha užitečných vlastností programu ESA PT je podpora otevřeného rozhraní

Více

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky. Dokumentace k programu MMDoc Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky Dokumentace k programu MMDoc Vypracoval: Petr Dvořák Datum: 15.prosince 2005 1. Úvod 1.1. Účel tohoto dokumentu

Více

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich Návrh aplikace Project Westpon Inteligentní simulátor budov Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich . Úvod.. Účel dokumentu Tento dokument má za účel detailně popsat návrh

Více

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

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 úvod SMSender 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 Verze: 2008-11-11 Licenční ujednání 1994 2008 Ness Logos

Více

1.2 Operační systémy, aplikace

1.2 Operační systémy, aplikace Informační a komunikační technologie 1.2 Operační systémy, aplikace Studijní obor: Sociální činnost Ročník: 1 Programy (Software - SW) V informatice se takto označují všechny samospustitelné soubory které

Více

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009

Webové rozhraní pro datové úložiště. Obhajoba bakalářské práce Radek Šipka, jaro 2009 Webové rozhraní pro datové úložiště Obhajoba bakalářské práce Radek Šipka, jaro 2009 Úvod Cílem práce bylo reimplementovat stávající webové rozhraní datového úložiště MU. Obsah prezentace Úložiště nasazené

Více

Vstupní požadavky, doporučení a metodické pokyny

Vstupní požadavky, doporučení a metodické pokyny Název modulu: Základy PHP Označení: C9 Stručná charakteristika modulu Modul je orientován na tvorbu dynamických stánek aktualizovaných podle kontextu volání. Jazyk PHP umožňuje velmi jednoduchým způsobem

Více

Tvorba 3D výukových aplikací pomocí technologie

Tvorba 3D výukových aplikací pomocí technologie Tvorba 3D výukových aplikací pomocí technologie Microsoft Silverlight Martin Tribula, Martin Vavrek, Michal Otčenášek Abstrakt V dnešním moderním světě je virtuální realita považovaná za rozvíjející se

Více

Reliance 3 design OBSAH

Reliance 3 design OBSAH Reliance 3 design Obsah OBSAH 1. První kroky... 3 1.1 Úvod... 3 1.2 Založení nového projektu... 4 1.3 Tvorba projektu... 6 1.3.1 Správce stanic definice stanic, proměnných, stavových hlášení a komunikačních

Více

Pracovní prostředí Excel 2010

Pracovní prostředí Excel 2010 Zdokonalování ICT gramotnosti v rámci projektu IMPACT Pracovní prostředí Excel 2010 Inovace a modernizace studijních oborů FSpS Obsah Co je to Excel a k čemu slouží... 3 Co nabízí nová verze Excel 2010:...

Více

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Semináˇr Java X J2EE Semináˇr Java X p.1/23 Seminář Java X J2EE Seminář Java X p.1/23 J2EE Složitost obchodních aplikací robusní, distribuované, spolehlivé aplikace s transakcemi na straně serveru, klientské aplikace co nejjednodušší Snaha : Návrh,

Více

Generické programování

Generické programování Generické programování Od C# verze 2.0 = vytváření kódu s obecným datovým typem Příklad generická metoda, zamění dva parametry: static void Swap(ref T p1, ref T p2) T temp; temp = p1; p1 = p2; p2 =

Více

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části:

Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části: Aplikace Aplikace je program určený pro uživatele. Aplikaci je možné rozdělit na části: prezentační vrstva vstup dat, zobrazení výsledků, uživatelské rozhraní, logika uživatelského rozhraní aplikační vrstva

Více

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632 Číslo projektu VÝUKOVÝ MATERIÁL Identifikační údaje školy Vyšší odborná škola a Střední škola, Varnsdorf, příspěvková organizace Bratislavská 2166, 407 47 Varnsdorf, IČO: 18383874 www.vosassvdf.cz, tel. +420412372632

Více

Uživatelská příručka pro práci s Portálem VZP. Test kompatibility nastavení prohlížeče

Uživatelská příručka pro práci s Portálem VZP. Test kompatibility nastavení prohlížeče Uživatelská příručka pro práci s Portálem VZP Test kompatibility nastavení prohlížeče Obsah 1. Podporované operační systémy a prohlížeče... 3 1.1 Seznam podporovaných operačních systémů... 3 1.2 Seznam

Více

43 HTML šablony. Záložka Šablony v systému

43 HTML šablony. Záložka Šablony v systému 43 HTML šablony Modul HTML šablony slouží ke správě šablon pro výstupy z informačního systému modularis ve formátu HTML. Modul umožňuje k šablonám doplňovat patičku, dokumentaci a vázat šablony na konkrétní

Více

Maturitní projekt do IVT Pavel Doleček

Maturitní projekt do IVT Pavel Doleček Maturitní projekt do IVT Pavel Doleček CO FILMBOOK JE Filmbook je uzavřená webová aplikace pro celkovou správu informací a dat souvisejících se sledováním filmů. Primárně je zaměřen na uchovávání a spravování

Více

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ 1) PROGRAM, ZDROJOVÝ KÓD, PŘEKLAD PROGRAMU 3 2) HISTORIE TVORBY PROGRAMŮ 3 3) SYNTAXE A SÉMANTIKA 3 4) SPECIFIKACE

Více

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda 1. Lze vždy z tzv. instanční třídy vytvořit objekt? 2. Co je nejčastější příčinou vzniku chyb? A. Specifikace B. Testování C. Návrh D. Analýza E. Kódování 3. Je defenzivní programování technikou skrývání

Více

1 Tabulky Příklad 3 Access 2010

1 Tabulky Příklad 3 Access 2010 TÉMA: Vytvoření tabulky v návrhovém zobrazení Pro společnost Naše zahrada je třeba vytvořit databázi pro evidenci objednávek o konkrétní struktuře tabulek. Do databáze je potřeba ještě přidat tabulku Platby,

Více

Maturitní témata Školní rok: 2015/2016

Maturitní témata Školní rok: 2015/2016 Maturitní témata Školní rok: 2015/2016 Ředitel školy: Předmětová komise: Předseda předmětové komise: Předmět: PhDr. Karel Goš Informatika a výpočetní technika Mgr. Ivan Studnička Informatika a výpočetní

Více

PROGRAMOVÁNÍ PRO MS WINDOWS 1

PROGRAMOVÁNÍ PRO MS WINDOWS 1 Jazyk C# je moderní jazyk z rodiny jazyků podporovaných aplikačním prostředím.net. Cílem předmětu je seznámit posluchače s tímto objektovým jazykem, a s programováním aplikací pro MS Windows. V průběhu

Více

36 Elektronické knihy

36 Elektronické knihy 36 Elektronické knihy Uživatelský modul Elektronické knihy slouží k přípravě a publikování informací ve formátu HTML. Tento formát je vhodný pro prezentaci informací na internetu a je široce podporován

Více

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová

Databáze MS-Access. Obsah. Co je to databáze? Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová Databáze MS-Access Doc. Ing. Radim Farana, CSc. Ing. Jolana Škutová Obsah Principy a možnosti databází. Uložení dat v databázi, formáty dat, pole, záznamy, tabulky, vazby mezi záznamy. Objekty databáze

Více

Informační Systém pro Psychiatrii HIPPO

Informační Systém pro Psychiatrii HIPPO Informační Systém pro Psychiatrii HIPPO Informace, doporučení a nutná nastavení pro zajištění správné funkce Pinel Plus v OS Windows a Linux Ochranné známky HIPPO je registrovaná ochranná známka společnosti

Více

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura IBM PC 5150 MS DOS 1981 (7 verzí) DR DOS, APPLE DOS, PC DOS 1. 3. Windows grafická nástavba na DOS Windows 95 1. operační systém jako takový, Windows XP 2001, podporovány do 2014, x86 a Windows 2000 Professional

Více

Použití inteligentních značek s informačními službami

Použití inteligentních značek s informačními službami Použití inteligentních značek s informačními službami Jan Fransen Podokno úloh Zdroje informací v aplikacích sady Microsoft Office 2003 umožňuje uživatelům snadno prohledávat množství integrovaných či

Více

10 Balíčky, grafické znázornění tříd, základy zapozdření

10 Balíčky, grafické znázornění tříd, základy zapozdření 10 Balíčky, grafické znázornění tříd, základy zapozdření Studijní cíl Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost příkazům balíčkům, grafickému

Více

www.infopanels.eu Instalace demoverze

www.infopanels.eu Instalace demoverze www.infopanels.eu Instalace demoverze SOLUTIONS Instalace demoverze Hasičská 53 700 30 Ostrava-Hrabůvka www.infopanels.eu www.elvac.eu Obchod: +420 597 407 511 solutions@infopanels.eu +420 597 407 511

Více

Compatibility List. GORDIC spol. s r. o. Verze 3.60.5 8.4.2009

Compatibility List. GORDIC spol. s r. o. Verze 3.60.5 8.4.2009 Compatibility List Verze 3.60.5 8.4.2009 GORDIC spol. s r. o. Copyright 1993-2009 1 Obsah Obsah 1 2 3 4 5 6 7 8 9 3.1 3.2 Úvodní informace Podporované databázové systémy Klientské prostředí Tlustý klient...

Více

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13 Obsah Úvodem 9 1. Úvod do Ajaxu 11 Jak Ajax funguje? 13 Popis 13 Ukázky 13 Jaké jsou možnosti tvorby interaktivních webových aplikací? 15 Co je třeba znát? 16 Jak fungují technologie Ajaxu 16 Jak funguje

Více

Mapa Česka: www.mapa-ceska.cz

Mapa Česka: www.mapa-ceska.cz Mapa Česka: www.mapa-ceska.cz Mapový portál Mapa Česka, který je dostupný na internetové adrese www.mapa-ceska.cz, byl vytvořen v roce 2014 v rámci bakalářské práce na Přírodovědecké fakultě Univerzity

Více

Silverlight aplikace pro Dynamics CRM

Silverlight aplikace pro Dynamics CRM MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY Silverlight aplikace pro Dynamics CRM DIPLOMOVÁ PRÁCE Bc. Tomáš Kopecký Brno, podzim 2013 Prohlášení Prohlašuji, že tato práce je mým původním autorským dílem,

Více

Postupy práce se šablonami IS MPP

Postupy práce se šablonami IS MPP Postupy práce se šablonami IS MPP Modul plánování a přezkoumávání, verze 1.20 vypracovala společnost ASD Software, s.r.o. dokument ze dne 27. 3. 2013, verze 1.01 Postupy práce se šablonami IS MPP Modul

Více

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb: Technologie Marushka Základním konceptem technologie Marushka je použití jádra, které poskytuje přístup a jednotnou grafickou prezentaci geografických dat. Jádro je vyvíjeno na komponentním objektovém

Více

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á.

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á. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

3 Makra Příklad 4 Access 2007. Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker.

3 Makra Příklad 4 Access 2007. Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker. TÉMA: Vytváření a úprava maker Ve vytvořené databázi potřebuje sekretářka společnosti Naše zahrada zautomatizovat některé úkony pomocí maker. Zadání: Otevřete databázi Makra.accdb. 1. Vytvořte makro Objednávky,

Více

Vývoj multiplatformní aplikace v Qt

Vývoj multiplatformní aplikace v Qt Vývoj multiplatformní aplikace v Qt z pohledu vývoje Datovky Karel Slaný karel.slany@nic.cz 13. 11. 2015 Obsah Co je Qt Nástroje Qt Koncepty Qt Problémy při vývoji Datovky Balíčkování aplikace Datovka

Více

MATURITNÍ PRÁCE dokumentace

MATURITNÍ PRÁCE dokumentace MATURITNÍ PRÁCE dokumentace Jídelníček SŠIEŘ pro Android Martin Bartoň školní rok: 2012/2013 obor: třída: Počítačové systémy PS4.A ABSTRAKT Práce je zaměřená na problematiku tvorby Android aplikací,

Více

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework Funkce Silverlightu 2 Podpora jazyků a technologie.net Framework Model pro popis webových služeb a jejich operací Volná vázanost datových služeb Nový model ovládacích prvků LINQ to Objects a UNQ to XML

Více

3. HODINA. Prohlížeče Druhy prohlížečů Přehled funkcí. 19.10.2009 Bc. Tomáš Otruba, Informatika 7. třída 1

3. HODINA. Prohlížeče Druhy prohlížečů Přehled funkcí. 19.10.2009 Bc. Tomáš Otruba, Informatika 7. třída 1 3. HODINA Prohlížeče Druhy prohlížečů Přehled funkcí 19.10.2009 Bc. Tomáš Otruba, Informatika 7. třída 1 Opakování sítě Sítě dělíme na LAN a WAN (dle rozlohy) V síti můžeme nalézt aktivní a pasivní prvky

Více

ANOTACE vytvořených/inovovaných materiálů

ANOTACE vytvořených/inovovaných materiálů ANOTACE vytvořených/inovovaných materiálů Číslo projektu Číslo a název šablony klíčové aktivity Tematická oblast Formát Druh učebního materiálu Druh interaktivity CZ.1.07/1.5.00/34.0722 III/2 Inovace a

Více