České vysoké učení technické v Praze Fakulta elektrotechnická. Bakalářská práce
|
|
- Stanislav Marek
- před 6 lety
- Počet zobrazení:
Transkript
1 České vysoké učení technické v Praze Fakulta elektrotechnická Bakalářská práce Grafový editor pro Scheduling toolbox TORSCHE Editor of graphs for Scheduling toolbox TORSCHE Vypracoval: Vojtěch Navrátil Vedoucí práce: Ing. Michal Kutil
2 České vysoké učení technické v Praze, fakulta elektrotechnická Katedra řídicí techniky Školní rok: 2005/2006 Zadání bakalář ské práce Student: Obor: Název tématu: Vojtěch Navrátil Kybernetika a měření Grafový editor pro Scheduling toolbox TORSCHE Zásady pro vypracování: 1. Seznamte se se základy teorie grafů. Prostudujte základní příkazy a možnosti Scheduling toolboxu pro Matlab. 2. Vytvořte pomocí Matlab GUI uživatelsky přístupný edito grafů a jejich vlastností. 3. Editor grafů rozšiřte o systém zásuvných modulů, poskytující jednotné rozhraní pro další rozšiřování vlastností editoru. Připravte ukázkový modul využívající funkce Scheduling toolboxu TORSCHE. Seznam odborné literatury: Dodá vedoucí práce Vedoucí bakalářské práce: Ing. Michal Kutil Datum zadání bakalářské práce: zimní semestr 2005/06 Termín odevzdání bakalářské práce: L.S. Prof. Ing. Michael Šebek, DrSc. vedoucí katedry Prof. Ing. Zbyněk Škvor, DrSc. děkan V Praze, dne II
3 Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady (literaturu, projekty, SW atd.) uvedené v přiloženém seznamu. V Praze dne.. podpis II
4 Poděkování Na tomto místě děkuji vedoucímu své bakalářské práce Ing. Michalu Kutilovi za užitečné rady, pomoc při odstraňování chyb a náměty pro zdokonalení práce. Rovněž děkuji celé své rodině za podporu při studiu a psaní této práce. III
5 Téma Grafový editor pro Scheduling toolbox TORSCHE Abstrakt V rámci tohoto projektu se zabývám tvorbou GUI s využitím systému Handle Graphics implementovaného v Matlabu. Cílem je vytvořit uživatelsky snadno přístupný editor grafů a jejich vlastností Graphedit, který bude pracovat jako součást Scheduling toolboxu TORSCHE. V úvodu práce popisuji základy práce s grafickými objekty Matlabu, poté návrh GUI a jeho realizaci. Následuje část, v níž jsou popsány funkce Grapheditu jako import a export z/do workspace Matlabu, načítání a ukládání z/do binárního souboru *.mat, kreslení vrcholů, hran a jejich mazání a další. Závěrečnou část věnuji systému zásuvných modulů umožňujícímu připojení funkcí, které jsou součástí Scheduling toolboxu nebo které uživatel implementuje sám. Theme Editor of graphs for Scheduling toolbox TORSCHE Abstract In order to this project I inquire into creation of GUI with utilization of system Handle Graphics implemented in Matlab. The purpose of my work is to create user-friendly editor of graphs and their properties Graphedit, which will work as a part of Scheduling toolbox TORSCHE. An introduction of the work is focused on basic operations with Matlab s graphical objects and on design of GUI and its realization. It is followed by description of Graphedit s functions import, export from/to Matlab s workspace, loading, saving from/to binary mat-file, drawing of nodes, edges, deleting mode etc. Another part attends to implementation of plugins. Plugins give to user possibility of adding functions, which belong to graph parts of Scheduling toolbox or which user implements by self. IV
6 Obsah 1 ÚVOD MATLAB GUI SYSTÉM HANDLE GRAPHICS GRAFICKÉ OBJEKTY A JEJICH HIERARCHIE Grafický objekt figure Grafický objekt uicontrol Grafický objekt uimenu Grafický objekt uicontextmenu Grafický objekt uitoolbar Grafický objekt axes Grafické objekty rectangle, line a text CALLBACK RUTINY GRAFICKÝCH OBJEKTŮ PROSTŘEDÍ GUIDE PŘEDDEFINOVANÉ DIALOGY MATLABU GRAF GRAF OBJEKT GRAPH, OBJEKT AXES VRCHOL OBJEKT NODE, OBJEKT RECTANGLE HRANA OBJEKT EDGE, OBJEKT LINE GRAPHEDIT HLAVNÍ MENU LIŠTA NÁSTROJŮ KRESLICÍ PLOCHA List kreslicí plochy Posuvníky ZÁLOŽKY PROPERTY EDITOR EDITOR VLASTNOSTÍ DIALOGY GRAPHEDITLISTDLG GRAPHEDITADDPLUGIN GRAPHEDITREMOVEPLUGIN GRAPHEDITDOPLUGIN FUNKCE SPUŠTĚNÍ GRAPHEDITU FILE New Open Save Export to picture Import from workspace, Export to workspace Close, close all, quit EDIT Cut, copy Paste VIEW Property Editor Names, UserParams DRAW Draw node Draw edge Delete mode Layout OPTIONS Unique names V
7 6.7 PLUGINS Add, remove plugin PLUGINS SYSTÉM ZÁSUVNÝCH MODULŮ XML (EXTENDED MARKUP LANGUAGE) UKLÁDÁNÍ NAČÍTÁNÍ PŘÍKLADY Hamiltonovská kružnice Obarvení vrcholů (jednou barvou) Export jmen vrcholů a uživatelských parametrů hran Vytvoření vrcholů grafu ZÁVĚR SEZNAM LITERATURY POUŽITÝ SOFTWARE PŘÍLOHA A VI
8 Seznam diagramů DIAGRAM 5.1 FUNKCE DRAWOBJECTGRAPH DIAGRAM 5.2 FUNKCE CREATEOBJECTGRAPH DIAGRAM 5.3 FUNKCE OPENGRAPHFROMFILE DIAGRAM 5.4 FUNKCE SAVEGRAPHTOFILE DIAGRAM 5.5 FUNKCE CREATECANVAS DIAGRAM 5.6 FUNKCE COPYNODEFCN DIAGRAM 5.7 FUNKCE PASTENODEFCN DIAGRAM 5.8 FUNKCE VIEWTEXT DIAGRAM 5.9 FUNKCE DRAWNODE DIAGRAM 5.10 FUNKCE DRAWEDGE Seznam kódů Matlabu KÓD MATLABU 2.1 PŘÍKLAD NASTAVENÍ PARAMETRŮ GRAFICKÉHO OBJEKTU KÓD MATLABU 2.2 UMÍSTĚNÍ TLAČÍTKA NA NOVĚ VYTVOŘENÉ OKNO FIGURE... 5 KÓD MATLABU 2.3 PŘÍKLAD VYTVOŘENÍ VLASTNÍHO SUBMENU V HLAVNÍM MENU... 5 KÓD MATLABU 2.4 PŘÍKLAD ZPŮSOBU VYTVOŘENÍ KONTEXTOVÉHO MENU KÓD MATLABU 2.5 PŘÍKLAD VYTVOŘENÍ VLASTNÍ NÁSTROJOVÉ LIŠTY S TLAČÍTKEM S IKONOU PICTURE.PNG KÓD MATLABU 2.6 VYTVOŘENÍ KOLEČKA NA POZICI [X,Y] JAKO GRAFICKÉHO OBJEKTU RECTANGLE KÓD MATLABU 2.7 VYTVOŘENÍ GRAFICKÉHO OBJEKTU LINE ÚSEČKY MEZI BODY [X1,Y1] A [X2,Y2]... 7 KÓD MATLABU 2.8 VYTVOŘENÍ GRAFICKÉHO OBJEKTU TEXT NA POZICI [X,Y] SE ZAROVNÁNÍM NA STŘED KÓD MATLABU 2.9 PŘÍKLAD REGISTRACE CALLBACK FUNKCÍ PRO OBJEKTY AXES A UIMENU... 8 KÓD MATLABU 3.1 VYTVOŘENÍ PROMĚNNÉ TYPU GRAPH SE TŘEMI VRCHOLY A DVĚMA HRANAMI KÓD MATLABU 3.2 VÝPIS PARAMETRŮ PROMĚNNÉ TYPU GRAPH KÓD MATLABU 3.3 STRUKTURA ULOŽENÁ V GRAFICKÉM OBJEKTU AXES KÓD MATLABU 3.4 PARAMETRY OBJEKTU NODE A NASTAVENÍ JEHO GRAFICKÝCH PARAMETRŮ KÓD MATLABU 3.5 STRUKTURA ULOŽENÁ V GRAFICKÉM OBJEKTU RECTANGLE KÓD MATLABU 3.6 PARAMETRY OBJEKTU EDGE A NASTAVENÍ GRAFICKÝCH PARAMETRŮ KÓD MATLABU 3.7 STRUKTURA ULOŽENÁ V GRAFICKÉM OBJEKTU LINE KÓD MATLABU 7.1 KÓD FUNKCE NODESTOCOLOR MODULU PRO OBRAVENÍ VRCHOLŮ KÓD MATLABU 7.2 KÓD FUNKCE GETNAMESANDUSERPARAMS KÓD MATLABU 7.3 KÓD FUNKCE CREATENODES VYTVOŘENÍ ZADANÉHO POČTU VRCHOLŮ Seznam obrázků OBRÁZEK 1.1 HIERARCHIE ZDE POUŽITÝCH ZÁKLADNÍCH GRAFICKÝCH OBJEKTŮ MATLABU... 2 OBRÁZEK 1.2 ODEZVA NA VYTVOŘENÍ NOVÉHO GRAFICKÉHO OBJEKTU TYPU FIGURE OBRÁZEK 1.3 CHYBA, KTERÁ VZNIKÁ PŘI ŠPATNÉM NASTAVENÍ HANDLEVISIBILITY... 4 OBRÁZEK 1.4 ROZBALENÁ NABÍDKA NOVÉHO GRAFICKÉHO OBJEKTU UIMENU... 5 OBRÁZEK 1.5 PŘÍKLADY PŘEDDEFINOVANÝCH DIALOGŮ V SYSTÉMU MATLAB OBRÁZEK 2.1 ORIENTOVANÝ JEDNODUCHÝ OHODNOCENÝ GRAF V GRAPHEDITU OBRÁZEK 3.1 LIŠTA NÁSTROJŮ GRAPHEDITU OBRÁZEK 3.2 GRAF JE PŘÍLIŠ VELKÝ PRO JEHO ZOBRAZENÍ POUŽITÍ OBJEKTU SLIDER OBRÁZEK 3.3 VYUŽITÍ ZÁLOŽEK, ZOBRAZENÍ OBJEKTU SLIDERU PRO JEJICH POSUV OBRÁZEK 3.4 ZOBRAZENÝ PROPERTY EDITOR I S POUŽITÝM POSUVNÍKEM SLIDER OBRÁZEK 3.5 ZNÁZORNĚNÍ STRUKTURY S PŘÍKLADY PARAMETRŮ OBRÁZEK 4.2 ZOBRAZENÍ DIALOGU GRAPHEDITADDPLUGIN OBRÁZEK 4.3 ZOBRAZENÍ DIALOGU GRAPHEDITREMOVEPLUGIN OBRÁZEK 4.4 ZOBRAZENÍ DIALOGU GRAPHEDITDOPLUGIN OBRÁZEK 5.1 VSTUP A VÝSTUP FUNKCE NODESLAYOUT OBRÁZEK 6.1 PŘÍKLAD POUŽITÍ MODULU HAMILTON_CIRCUIT OBRÁZEK 6.2 PŘÍKLAD POUŽITÍ MODULU NODESTOCOLOR OBRÁZEK 6.3 PŘÍKLAD POUŽITÍ MODULU CREATENODES VII
9 Seznam xml kódů XML KÓD 6.1 UKÁZKA KÓDU SOUBORU GRAPEDITPLUGIN.XML Seznam tabulek TABULKA 1.1 ZÁKLADNÍ GRAFICKÉ OBJEKTY VE FORMĚ TABULKY S UVEDENÍM VÝZNAMU TABULKA 1.2 VYBRANÉ CALLBACK ROUTINY GRAFICKÝCH OBJEKTŮ... 8 TABULKA 1.3 VYBRANÉ PŘEDDEFINOVANÉ DIALOGY POUŽITÉ V GRAPHEDITU... 9 TABULKA 3.1 PARAMETRY OBJEKTU NODE TABULKA 3.2 PARAMETRY OBJEKTU EDGE TABULKA 3.3 PARAMETRY OBJEKTU GRAPH TABULKA 3.4 TABULKA TYPŮ PARAMETRŮ ZOBRAZOVANÝCH V PROPERTY EDITORU TABULKA 4.1 VÝPIS PARAMETRŮ FUNKCE GRAPHEDITLISTDLG VIII
10 1 Úvod Cílem mé práce bude vytvořit grafový editor pro Scheduling toolbox TORSCHE s využitím Matlab systému Handle Graphics. Tento grafový editor (Graphedit) musí uživateli poskytnout prostředí pro snadnou editaci grafů a jejich vlastností s dostatečně intuitivním ovládáním. Graphedit rovněž musí obsahovat systém zásuvných modulů pluginů pro umožnění rozšiřování svých vlastností a funkcí podle konkrétních potřeb uživatele. V první fázi se musím věnovat nastudování možností systému Handle Graphics, abych byl schopen vhodně použít jednotlivé grafické objekty a dokázal s nimi podle potřeby manipulovat. Po vysvětlení základních pojmů a objektů systému Handle Graphics a seznámení s prvky grafové části Scheduling toolboxu zvolím představitele těchto prvků v grafické oblasti. Protože parametry objektů typu edge Scheduling toolboxu zatím neumožňují uchování informací o tvaru grafických objektů, které je budou reprezentovat, zaměřím se pouze na možnost kreslení a zobrazování jednoduchých grafů. Návrh vzhledu Grapheditu musím provést především s ohledem na požadavek intuitivního ovládání. Vhodnou inspirací mi bude zkušenost s prací s jinými, hojně používanými aplikacemi. Jako poslední část své práce přidám do Grapheditu, který již bude schopný jednoduchého kreslení a zobrazování grafů, systém zásuvných modulů pro rozšíření nabídky funkcí jak o funkce implementované v Scheduling toolboxu, tak o funkce za nějakým účelem připravené přímo uživatelem. 1
11 2 Matlab GUI Systém Handle Graphics Vše, co v této kapitole uvádím, je mnohem podrobněji vysvětleno v literatuře [2], z níž jsem čerpal, a každý z grafických objektů je přehledně popsán v nápovědě Matlabu. Systém Handle Graphics je grafický systém implementovaný v Matlabu, s jehož pomocí lze efektivně pracovat s grafickými objekty. Zahrnuje příkazy pro 2D a 3D vizualizaci dat, zpracování signálů, animací a grafiku obecně. Z hlediska uživatele přináší vyšší efektivnost a mnoho možností při práci s grafikou. Handle je proměnná, která je při vytvoření grafického objektu naplněna číslem, jež jednoznačně identifikuje grafický objekt. Umožňuje ovládání grafických objektů funkcemi get a set. Pomocí get se ptáme na určité parametry a pomocí set je naopak měníme. Máme-li k dispozici handle hobject grafického objektu, získáme zadáním get(hobject) seznam všech parametrů daného objektu i s jejich aktuální hodnotou. Změnit libovolnou položku tohoto seznamu lze příkazem set tak, jak je například uvedeno v kódu Matlabu 2.1. >> set = (hobject, 'color', [1 0 0], 'position', [ ]); Kód Matlabu 2.1 Příklad nastavení parametrů grafického objektu. 2.1 Grafické objekty a jejich hierarchie Hierarchie grafických objektů je znázorněna na obrázku 2.1 a v tabulce 2.1. Uvedeny jsou zde pouze ty objekty, které ve své práci využívám. Výpis ostatních základních grafických objektů lze nalézt v literatuře [2] společně s popisem jejich využití. Root Figure Axes Uicontrol Uimenu Uicontextmenu Uitoolbar Line Rectangle Text Obrázek 2.1 Hierarchie zde použitých základních grafických objektů Matlabu. 2
12 Tabulka 2.1 Základní grafické objekty ve formě tabulky s uvedením významu. Jméno grafického Význam grafického objektu objektu Root Figure Axes Uicontrol Uimenu Uicontextmenu Uitoolbar Line Rectangle Text Vrchol hierarchie grafických objektů, odpovídá obrazovce počítače. Okno, ve kterém se zobrazuje grafika a uživatelský interface. Souřadný systém pro zobrazení grafů v okně figure. Uživatelské grafické rozhraní, jež vykoná nějakou funkci jako reakci na zásah uživatele (například stisknutí tlačítka s následnou akcí). Uživatelem definované menu v horní části okna figure. Klasické (pop-up) menu, využitelné kdekoliv v Root. Uživatelem definovaná nástrojová lišta v horní části okna figure. Objekt čáry, používaný při kreslení grafů. 2D tvar s možností změny od čtvercového po oválný. Psaní textových řetězců v rámci definované grafiky. Všechny grafické objekty mají několik shodných parametrů, o kterých by bylo vhodné se zde zmínit, protože jsou v Grapheditu hojně využívány: Visible, ['on','off'] Parametr, který nastavuje viditelnost daného objektu. Tag, [objekt typu string] Označení grafického objektu, podle nějž jej lze identifikovat podobně jako pomocí handle. Toto označení nemusí být jednoznačné, což někdy může být a je žádoucí. UserData, [proměnná libovolného typu] Prostor, který má uživatel k dispozici pro zachování dat, která se mohou (ale nemusí) týkat daného grafického objektu Grafický objekt figure Grafický objekt figure si lze představit jako nové okénko s určitým názvem, standardním menu, nástrojovou lištou a šedou plochou, jež je připravená k definici podřízených grafických objektů. Pomocí set a get můžeme nastavovat nebo zjišťovat jeho parametry, například pozici, barvu, jméno, menu, stav lišty nástrojů a mnoho dalších, které ovlivňují nejen jeho vzhled, ale i jiné vlastnosti stejně jako případné potomky tohoto objektu. Pro práci s grafikou je velice užitečná funkce gcf (get current figure), která vrací handle aktuálního objektu figure. Není tedy nutné neustále udržovat handle uložený. Podobnou funkci má findobj (find object), která vrací handle objektu (nebo seznam proměnných handle několika objektů) s vlastnostmi zadanými jako parametry funkce findobj (například findobj('type','figure');). 3
13 Obrázek 2.2 Odezva na vytvoření nového grafického objektu typu figure. Jedním z parametrů objektu figure je HandleVisibility (viditelnost proměnné handle), který může nabývat hodnot on (výchozí), callback a off. Pokud je nastaven na on, lze handle zjistit pomocí gcf nebo findobj z celého systému Matlab, je-li nastaven na off, nelze jej funkcí gcf (a jí podobnými) zjistit, takže je neviditelný. V Grapheditu je nastaven na hodnotu callback. To znamená, že lze gcf použít pouze při vykonávání některé callback funkce (kapitola 2.2). Důležitost tohoto parametru ukáži na příkladu (obrázek 2.3). Pomocí funkce plot vykreslíme sinusovku. Necháme-li HandleVisibility nezměněný a nevytvoříme-li implicitně nové okno figure, tak je výsledek další funkce používající axes (a potažmo figure), například image, vykreslen do již existujícího objektu axes. Sinusovka bude tedy překreslena novým obrázkem (obr. 2.3 b ) ). Pokud však nastavíme HandleVisibility na off, vykreslí se obrázek do nového okna a graf sinusovky zůstane zachován (obr. 2.3 c ) ). Lze říci, že HandelVisibility vlastně izoluje grafický objekt (figure či axes) od dalších prováděných operací, což právě u Grapheditu potřebujeme. a ) b ) c ) Obrázek 2.3 a ) Vykreslená sinusovka; b ) Obrázek byl vykreslen do figure 1; c ) Pro vykreslení obrázku se automaticky vytvořil nový objekt figure. 4
14 2.1.2 Grafický objekt uicontrol Grafické objekty uicontrol jsou podřízeny objektu figure, na nějž jsou umisťovány. Jedná se o tlačítka (pushbutton, togglebutton), výběrová pole (radiobutton, checkbox), textová pole (text) a pole pro editovatelné texty (edit), posuvníky (slider), rámy (frame), seznamy (listbox) a pop-up menu (popupmenu). Typ určuje parametr Style zadaný při vytvoření objektu. Protože každý grafický objekt by měl mít proměnnou handle, platí to plně také pro objekty uicontrol. Tento objekt vytvoříme příkazem uicontrol a pokud parametrem neurčíme jinak, bude umístěn na aktuální objekt figure. Podobně jako u objektů figure, ovládáme vlastnosti uicontrol pomocí get a set. >> hfigure = figure('name', 'My Figure'); >> uicontrol('style', 'pushbutton', 'String', 'Button'); Kód Matlabu 2.2 Umístění tlačítka na nově vytvořené okno figure Grafický objekt uimenu Objekt uimenu používáme k tvorbě vlastního menu a podmenu (submenu) v oblasti řádkového menu objektu figure. Existuje zde i možnost použití klávesových zkratek pro vybrané položky. Pokud nezrušíme standardní menu figure nastavením parametru 'Mainmenu' na 'none', jsou námi nově vytvořené objekty uimenu řazeny za něj, jak můžeme vidět na obrázku 2.4. >> hfigure = figure('name', 'My Figure'); >> huimenu = uimenu('label', 'New Menu'); >> uimenu(huimenu, 'Label', 'New', 'Accelerator', 'N'); >> uimenu(huimenu, 'Label', 'New2', 'Separator', 'on'); Kód Matlabu 2.3 Příklad vytvoření vlastního menu v hlavním menu. Obrázek 2.4 Rozbalená nabídka nového grafického objektu uimenu. 5
15 2.1.4 Grafický objekt uicontextmenu Způsob vytváření uicontextmenu a uimenu se příliš neliší. uicontextmenu lze pomocí funkce set přiřadit jakémukoliv jinému grafického objektu. Kliknutím pravým tlačítkem myši na tomto objektu pak kontextové menu zobrazíme. >> hfigure = figure('name', 'My Figure'); >> hcontextmenu = uicontextmenu; >> uimenu(hcontextmenu, 'Label', 'New'); >> set(hfigure, 'Uicontextmenu', hcontextmenu); Kód Matlabu 2.4 Příklad způsobu vytvoření kontextového menu Grafický objekt uitoolbar Pokud chceme používat v objektu figure vlastní nástrojovou lištu, musíme standardní lištu zrušit a poté vytvořit novou. Vypnutí standardní lišty je ukázáno v kódu Matlabu 2.5. Jak můžeme vidět, provádí se obdobně jako zrušení standardního menu. Na nástrojovou lištu lze umístit dva typy tlačítek uipushtool (klasické tlačítko) a uitoggletool (tlačítko s aretací). Na každé tlačítko můžeme umístit ikonu. Obrázek, který musí být ve tvaru matice o rozměrech mxnx3, kde m a n jsou rozměry obrázku a 3 je pro barvy RGB, pak tlačítku přiřadíme pomocí parametru CData. >> hfigure = figure('name', 'My Figure', 'Toolbar', 'none'); >> htoolbar = uitoolbar(hfigure); >> im = imread('picture.png'); >> uipushtool(htoolbar, 'CData', im); Kód Matlabu 2.5 Příklad vytvoření vlastní nástrojové lišty s tlačítkem s ikonou picture.png Grafický objekt axes Grafický objekt axes hraje důležitou roli při kreslení grafů. Poskytuje nám prostor ke kreslení 2D či 3D grafů různých typů a dává nám k dispozici soubor funkcí, pomocí kterých lze grafy řídit. Stejně jako všechny ostatní grafické objekty lze jeho vlastnosti upravovat funkcemi set a get. Určení neznámého handle aktivního grafického objektu axes je umožněno funkcí gca (get current axes) - analogickou gcf (kapitola 2.1.1). Stejně jako objekt figure má i axes k dispozici parametr HandleVisibility, který jeho handle i handle jeho potomků ovlivňuje. 6
16 2.1.7 Grafické objekty rectangle, line a text Příkaz rectangle vytváří 2D obdélník umístěný na aktuálním objektu axes. Vhodným nastavením parametru Curvature jsme schopni změnit jeho tvar na oválný, což nám dává možnost znázornit vrcholy grafů (kapitola 3.2) jako kolečka. >> pos = [x y diameter diameter]; >> hrect = rectangle(haxes, 'Position', pos, 'Curvature', [1 1]); Kód Matlabu 2.6 Vytvoření kolečka na pozici [x,y] jako grafického objektu rectangle. Příkaz line vytvoří úsečku určenou dvěma body zadanými jako parametry funkce. Tyto body mohou ležet v 3D prostoru, ale pomocí Grapheditu lze kreslit pouze 2D obrázky. >> hline = line([x1 x2], [y1 y2]); Kód Matlabu 2.7 Vytvoření grafického objektu line úsečky mezi body [x1,y1] a [x2,y2]. Příkaz text vytvoří objekt text a vykreslí jej do aktuálního objektu axes na pozici danou jedním bodem a horizontálním zarovnáním. Výbornou vlastností tohoto objektu je, že pro zobrazení textu je možné použít interpret LaT E Xu. >> htext = text(x, y, 'Text'); >> set(htext, 'HorizontalAlignment', 'center'); Kód Matlabu 2.8 Vytvoření grafického objektu text na pozici [x,y] se zarovnáním na střed. Parametry všech těchto objektů lze samozřejmě nastavovat a zjišťovat pomocí set a get naprosto stejně jako u všech ostatních grafických objektů postavených v hierarchii výše. 2.2 Callback rutiny grafických objektů Každý grafický objekt má několik callback funkcí (rutin) obsluhujících určitou událost (vytvoření objektu, stisknutí tlačítka myši, apod.). Tyto callback funkce umožňují veškerou interakci GUI. V tabulce 2.2 je uveden výpis těch, které jsou v Grapheditu využívány. Příklad uvedený v kódu Matlabu 2.9 vytvoří kontextové menu s položkami Red a Blue a zaregistruje je novému objektu axes. Výraz 'set(gca,''color'',''red'');' nastaví jeho barvu na červenou. Na místě uvedeného výrazu by se mohl nacházet název funkce, která by příslušnou operaci prováděla. 7
17 >> hcontextmenu = uicontextmenu; >> uimenu(hcontextmenu, 'Label', 'Red',... 'Callback', 'set(gca,''color'',''red'');'); >> uimenu(hcontextmenu, 'Label', 'Blue', 'Separator', 'on',... 'Callback', 'set(gca,''color'',''blue'');'); >> haxes = axes('color', 'yellow',... 'UiContextMenu', hcontextmenu,... 'ButtonDownFcn', 'set(gca,''color'',''yellow'');'); Kód Matlabu 2.9 Příklad registrace callback funkcí pro objekty axes a uimenu. Tabulka 2.2 Vybrané callback rutiny grafických objektů. Jméno parametru ButtonDownFcn CloseRequestFcn CreateFcn DeleteFcn KeyPressFcn ResizeFcn WindowButtonDownFcn WindowButtonMotionFcn WindowButtonUpFcn Callback UIContextMenu Vysvětlení významu Spuštěno, když na daném objektu dojde ke stisku libovolného tlačítka myši. V případě objektu figure musí být místo kliknutí nezakryté. (pro všechny grafické objekty kromě uicontrol frame) Definuje funkci, která je spuštěna při zavolání příkazu close. (pouze pro objekt figure) Funkce, která je spuštěna při vytvoření grafického objektu. (všechny grafické objekty) Funkce volaná při smazání objektu příkazem delete. (všechny grafické objekty) Rutina vykonaná při stisku klávesy nad aktivním oknem figure. (pouze pro objekt figure) Funkce volaná při změně velikosti okna figure. (pouze pro objekt figure) Routina vykonaná při stisknutí tlačítka myši kdekoliv na okně figure. A to včetně míst zakrytých jiným objektem. (pouze pro objekt figure) Funkce, která je prováděna při pohybu myši se stisknutým tlačítkem. (pouze pro objekt figure) Routina vykonaná při stisknutí tlačítka myši kdekoliv na okně figure. (pouze pro objekt figure) Funkce volaná při provedení akce, ke které je objekt určen. (tlačítka, položky menu, výběrová pole,...) Proměnná handle odkazující na vytvořené kontextové menu. Toto menu je pak zobrazeno při stisknutí pravého tlačítka myši. (všechny grafické objekty) 8
18 2.3 Prostředí GUIDE GUIDE (Graphical User Interface Development Environment) je nástroj, který má za úkol usnadnit uživateli tvorbu grafických prvků. Jedná se vlastně o automatický generátor GUI, který je v systému Matlab integrován. Po spuštění příkazem guide vede uživatele interaktivním způsobem a umožňuje mu vybírat grafické objekty, myší je umisťovat a zadávat jejich parametry. Jde o univerzální a časově nenáročné řešení. Při použití GUIDE však nalezneme jisté nevhodné vlastnosti, jak je rovněž uvedeno v literatuře [2]. Výsledný kód často z důvodu univerzálnosti není optimální, GUIDE produkuje delší zdrojové texty s odlišnou strukturou kódu, na níž si musí uživatel zvyknout. Modifikovatelnost GUI vytvořeného tímto nástrojem je podle mých zkušeností značně omezená. S výhodou jej lze použít pro vytváření jednodušších GUI, ale pro potřebu tohoto projektu je nevyhovující. Všechny grafické objekty jsem si tedy vytvářel sám přímo v editoru zdrojových textů. 2.4 Předdefinované dialogy Matlabu Systém Matlab obsahuje řadu předdefinovaných dialogů, které velmi usnadňují implementaci mnoha funkcí. V tabulce 2.3 jsou uvedeny dialogy v Grapheditu využité. Tabulka 2.3 Vybrané předdefinované dialogy použité v Grapheditu. Volání dialogu Vysvětlení jeho použití dialog Vytvoří dialogové okno. errordlg Vytvoří dialogové okno s chybovou ikonou a zadanou větou. helpdlg Vytvoří dialogové okno s ikonou nápovědy a zadanou větou. listdlg Dialog pro výběr jedné nebo více položek zadaného seznamu. questdlg Vytvoří dialog se zadanou otázkou a tlačítky, obrázek 1.5. uigetfile Klasický dialog pro výběr souboru k otevření, obrázek 1.5. uiputfile Klasický dialog pro výběr souboru k uložení. uisetcolor Dialog pro výběr barvy, obrázek 1.5. waitbar Dialog s lištou, používaný při čekání během plnění nějaké operace. 9
19 Obrázek 2.5 Příklady předdefinovaných dialogů v systému Matlab. 10
20 3 Graf Graf je základním objektem teorie grafů (literatura [1]). Je to uspořádaná dvojice (V, E), kde V je nějaká neprázdná množina a E množina některých dvojic prvků z V. Prvky množiny V se nazývají vrcholy grafu, prvky množiny E hrany grafu a mohou to být buď uspořádané nebo neuspořádané dvojice vrcholů. Grafy lze dělit podle mnoha různých hledisek. Například podle četnosti hran na jednoduché grafy, kdy mezi libovolnými dvěma vrcholy vede nejvýše jedna hrana a multigrafy, kdy mezi dvěma vrcholy může vést libovolný počet hran. Další možné dělení je podle orientace hran a to na orientované (hrany jsou uspořádané dvojice vrcholů) a neorientované (hrany jsou dvouprvkové množiny vrcholů), podle ohodnocení na ohodnocené a neohodnocené grafy. Existují ještě další způsoby dělení, např. podle souvislosti. Jejich uvedení však nyní není nutné. Graphedit umožňuje vytváření a práci s orientovanými jednoduchými ohodnocenými grafy, jak je ukázáno na obrázku 3.1. TORSCHE Scheduling toolbox mimo jiné zavádí objekty typu graph, node a edge, které Graphedit ke své funkci využívá. Vrchol Hodnocení hrany Orientovaná hrana Obrázek 3.1 Orientovaný jednoduchý ohodnocený graf v Grapheditu. 11
21 3.1 Graf objekt graph, objekt axes Objekt graph je obecně dán maticí sousednosti (adjacency matrix). Prostřednictvím Scheduling toolboxu jej lze vytvořit příkazem graph. >> adj = [0 1 0; 0 1 0; 0 0 0]; >> G = graph(adj) adjacency matrix: Kód Matlabu 3.1 Vytvoření proměnné typu graph se třemi vrcholy a dvěma hranami. Příkaz get vrací hodnotu zadaného parametru nebo hodnoty všech parametrů. Příkaz set hodnotu zadaného parametru nastaví. Přístup přes. (tečku) je rovněž možný. >> set(g) Name: Name of the GRAPHS N: Array of nodes E: Array of edges UserParam: User parameters Notes: An arbitrary string Kód Matlabu 3.2 Výpis parametrů proměnné typu graph. Parametr Name je jméno grafu. Parametr N je pole všech vrcholů objektů node, které graf obsahuje. Podobně E je pole hran objektů edge. Objekty node a edge obsahují všechny informace a vrcholu nebo hraně. Pozice konkrétní hrany v poli je určena příkazem between. UserParam může obsahovat jakékoliv uživatelské parametry, Notes je poznámka typu string. Kromě těchto základních parametrů byly dodatečně přidány parametry pro grafiku, které využívá Graphedit. Jedná se o X, Y a Color. Lze k nim prozatím přistupovat pouze přes funkce set_graphic_param a get_graphic_param. Reprezentace objektu graph v Grapheditu Objekt graph je v Grapheditu tvořen grafickým objektem axes, který umožňuje kreslení prvků představujících vrcholy a hrany. Kromě parametrů určujících funkci a vzhled je potřeba využít také parametr UserData, který je k dispozici u každého grafického objektu a do kterého může uživatel uložit proměnnou obsahující libovolná data. V případě Grapheditu je sem ukládána struktura znázorněná kódem Matlabu
22 >> savestructure = struct('node', [],... 'edge', [],... 'graph', [],... 'flag', [],... 'sliders', [],... 'toresize', 0); Kód Matlabu 3.3 Struktura uložená v grafickém objektu axes. Oddíl node je jednorozměrné pole jehož prvky obsahují proměnné handle grafického objektu představujícího vrchol objekt node. V oddílu edge se nachází matice o rozměrech mx3, kde m je počet hran v grafu a 3 znamená počet sloupců. První sloupec obsahuje handle objektu line, který znázorňuje hranu, v druhém sloupci je uložen handle počátečního a v třetím koncového vrcholu hrany. Do oddílu graph patří objekt typu graph, který axes představuje, do flag proměnná handle představující příslušnou záložku (systém záložek bude vysvětlen v kapitole 4.4) a toresize slouží jako příznak pro uchování informace o změně velikosti okna Grapheditu. 3.2 Vrchol objekt node, objekt rectangle Objekt node lze vytvořit příkazem node. Podobně jako u objektu graph lze s jeho základními parametry (které mají stejný význam jako u objektu graph) pracovat pomocí funkcí set a get, případně k nim přistupovat pomocí. (tečky). Kromě těchto základních parametrů obsahuje objekt node stejně jako objekt graph parametry pro grafiku X, Y a Color. X a Y určují polohu vrcholu v nakresleném grafu a mohou obsahovat pouze numerickou hodnotu, Color definuje jeho barvu zadanou číselnou hodnotou, vektorem nebo proměnnou typu string. >> n = node; >> set(n) Name: name of the NODE UserParam: user parameters Notes: An arbitrary string >> set_graphic_param(n, 'X', 1, 'Y', 2, 'Color', [1 0 0]); Kód Matlabu 3.4 Parametry objektu node a nastavení jeho grafických parametrů. Reprezentace objektu node v Grapheditu Objekt node v Graphedit představuje grafický objekt rectangle s příslušnými parametry (výška a šířka shodné, zaoblení maximální). Tento rectangle má nastaveny určité vlastnosti a jako UserData uloženou strukturu s informacemi nezbytnými k funkci Grapheditu (kód Matlabu 3.5). 13
23 >> rectanglestructure = struct('node', {[]},... 'name', {[]},... 'userparam', {[]}); Kód Matlabu 3.5 Struktura uložená v grafickém objektu rectangle. Do oddílu node patří objekt node, který má rectangle představovat, do oddílu name a userparam proměnné handle, které odkazují na grafické objekty typu text, pomocí nichž je zobrazeno jméno vrcholu Name a uživatelské parametry Userparam. 3.3 Hrana objekt edge, objekt line Hranu reprezentovanou objektem edge vytvoříme příkazem edge. Její parametry (základní i grafické) a jejich nastavování je zcela stejné jako u objektu node. Parametry X a Y zde nemají význam, Color určuje barvu čáry, která představuje danou hranu. >> e = edge; >> set(e) Name: name of the NODE UserParam: user parameters Notes: An arbitrary string >> set_graphic_param(e, 'Color', [0 0 1]); Kód Matlabu 3.6 Parametry objektu edge a nastavení grafických parametrů. Reprezentace objektu edge v Grapheditu Objekt edge v Grapheditu představuje grafický objekt line. Stejně jako rectangle má line při vytvoření nastaveny určité vlastnosti a jako UserData uloženou strukturu (kód Matlabu 3.7). >> linestructure = struct('edge', {[]},... 'tip', {[]},... 'name', {[]},... 'userparam', {[]}); Kód Matlabu 3.7 Struktura uložená v grafickém objektu line. Do oddílu edge patří analogicky jako v předchozím případě objekt edge hrana, do oddílu name a userparam proměnné handle, které odkazují na grafické objekty typu text, pomocí nichž je zobrazeno jméno hrany Name a uživatelské parametry Userparam. Oddíl tip obsahuje proměnné handle odkazující na další dva objekty line, pomocí nichž je každá hrana znázorněna jako šipka. 14
24 4 Graphedit 4.1 Hlavní menu Hlavní menu zprostředkuje přístup ke všem funkcím Grapheditu. Standardní menu vytvořené společně s každým novým oknem voláním figure jsem nahradil vlastním, definovaným ve funkci createmenu. Ta je volána hned při spuštění Grapheditu. 4.2 Lišta nástrojů Některé (nejpoužívanější) funkce Grapheditu jsem kromě hlavního menu umístil také na lištu nástrojů. Lze na ní nalézt ikony pro vytvoření nového listu, otevření souboru, uložení grafu do souboru, import grafu z workspace Matlabu, export nakresleného grafu do workspace, ikony pro vyjmutí, kopírování a vložení vrcholu, zobrazení či skrytí property editoru, pro přepínání kreslicího módu (kreslení vrcholů, hran, mód mazání) a nakonec typické ikony pro zobrazení nápovědy a dialogu O aplikaci. Obrázek 4.1 Lišta nástrojů Grapheditu. Při realizaci panelu nástrojů spočíval největší problém v zobrazování ikon. A to především problém s průhledností nepokreslených ploch. Formát zvolený pro uchování obrázků PNG je sice schopen nést informaci o průhlednosti, ale samotná tlačítka lišty zobrazují data zadaná jako parametr Cdata. Sem jsme schopni uložit pouze matici v případě obrázku mxnx3, kde m a n jsou jeho rozměry a 3 představuje tři základní barvy. To znamená, že pro použití průhlednosti zde není prostor. Řešení, jež jsem použil, je nahradit místo v obrázku ikony, které by mělo být průhledné, barvou pozadí lišty. Abych mohl průhledná místa snadno identifikovat, použil jsem pro ně při kreslení obrázků růžovou barvu. Při načítání ikon ji nahradím barvou lišty určenou nastavením operačního systému. Tu získám 15
25 příkazem get(0,'factoryuicontrolbackgroundcolor'). Tímto způsobem sice získám barvu pozadí objektů uicontrol, ale v operačních systémech Windows by tato barva měla být shodná s barvou pozadí uitoolbar. Celá tato operace poněkud zpomaluje spuštění Grapheditu, ale poskytuje mu komfortnější vzhled. Vytvoření lišty nástrojů společně s načtením ikon je provedeno funkcí createtoolbar, vytvoření iluze transparentnosti pak funkcí getcdata. Obrázky ikon se stejně jako všechny ostatní oddělené součásti Grapheditu nacházejí v adresáři private. 4.3 Kreslicí plocha Základ celého Grapheditu tvoří kreslicí plocha představována grafickým objektem axes. Na něj je možné umístit vrcholy a hrany ve formě objektů rectangle a line List kreslicí plochy Každý list kreslicí plochy je vytvořen funkcí createcanvas. V ní se nastaví všechny potřebné parametry včetně callback funkce buttondownoveraxes, která se provede po stisknutí tlačítka myši. Rovněž je mu přiřazeno kontextové menu nadefinované již při spuštění Grapheditu prostřednictvím funkce createcontextmenu. Poté je vytvořena struktura (objekt struct), v níž jsou uloženy potřebné parametry. Skládá se z oddílů node, edge, kam se ukládají kreslené vrcholy a hrany, oddílu graph, v němž je uložen kvůli jednotlivým parametrům objekt typu graph, oddílu flag, který uchovává handle na příslušnou záložku, oddílu sliders, kam se ukládají proměnné handle posuvníků určených k ovládání kreslicí plochy v případě potřeby a oddílu toresize, jenž slouží jako příznak pro uchování informace o změně velikosti okna Grapheditu. Zavoláním funkce addflag s příslušnými parametry je vytvořena i záložka určená tomuto novému listu. Systém záložek je podrobně vysvětlen níže. V případě, že je nový list vytvářen pro již existující graf, například při importu z workspace, je volána funkce drawobjectgraph (vývojový diagram 6.1), která má jako jeden z parametrů požadovaný graf a vykreslí jej. 16
26 4.3.2 Posuvníky Nakreslený graf může zabírat větší plochu, než je velikost okna Grapheditu. Proto je nezbytná možnost posuvu zobrazované části axes. To lze provést s použitím posuvníku (slider) patřícího mezi prvky uicontrol v Matlabu. Obrázek 4.2 Graf je příliš velký pro jeho zobrazení použití objektu slider. V situaci, kdy celkové rozměry zobrazeného grafu nepřesahují velikost kreslicí plochy, nejsou posuvníky potřeba, a jsou tudíž skryty. Pokud však vertikálně či horizontálně graf přesahuje, zobrazí se a umožní tak posuv v příslušném rozměru. V pravém dolním rohu kreslicí plochy, kde se oba posuvníky sbíhají, vzniká malý čtverec nevyužitého místa. Do něj jsem umístil tlačítko, které má funkci vycentrování grafu na střed (nastavuje aktuální hodnotu objektů slider na polovinu). Použití posuvníků poněkud komplikuje text zobrazený na kreslicí ploše. Při jeho posuvu i mimo plochu axes je totiž narozdíl od ostatních použitých grafických objektů stále viditelný. To rozhodně není žádoucí vlastnost, proto je potřeba zajistit zneviditelnění a zviditelnění textu samostatně. To je ošetřeno ve funkci setpositiontext. 17
27 4.4 Záložky Protože jedna jediná kreslicí plocha neposkytuje příliš mnoho prostoru k práci, je možné využívat větší počet listů najednou. Tím se objevuje nutnost výběru každého z nich, vytvořil jsem proto systém záložek pro přepínání mezi jednotlivými plochami. Realizoval jsem jej dalším objektem axes vytvořeným funkcí createaxesbar a umístěným v dolní části okna Grapheditu. Barva jeho výplně i obrysu odpovídá barvě vnitřku okna a není tedy vizuálně rozeznatelný. Je nezbytné počítat s možností tak vysokého počtu záložek, že pro jejich zobrazení nebude šířka Grapheditu stačit. Z toho důvodu jsem do pravého dolního rohu okna umístil objekt slider, pomocí nějž je snadné měnit zobrazenou část axes (funkce slideraxesbarchanged) a umožňuje tedy poměrně efektní posuv záložek. Obrázek 4.3 Využití záložek, zobrazení objektu slider pro jejich posuv. Jednotlivé záložky jsou tvořeny objekty rectangle a text. Rectangle zde představuje obdélník tvar záložky a text zobrazuje název příslušného kreslicího listu jméno grafu. Každá z nich je úzce svázána s příslušným listem pomocí číselného údaje handle uloženého jako UserData. Při vytvoření záložky funkcí addflag (ta je volána při vytváření nového listu) je obdélníku (mimo jiné) přiřazena callback funkce, která se vykoná při kliknutí a která umožňuje přepínání mezi jednotlivými listy, případně zobrazení kontextového menu záložky. A protože text se jménem grafu překrývá část záložky, je pro něj nadefinována stejná callback funkce. Její jméno je buttondownoverflag. 18
28 Každé záložce je přiřazeno kontextové menu, které se zobrazí, tak jak je obvyklé, po kliknutí pravým tlačítkem myši. Jeho jedinou položkou Close lze zavřít příslušný list naprosto stejně jako pomocí hlavního menu. Pro správné zobrazování záložek také při odstranění některé z nich je nutné srovnání zbývajících. To zajišťuje funkce setpositionflags volaná při odstranění záložky (funkce removeflag). 4.5 Property editor Editor vlastností Property editor je nástroj umožňující editování parametrů grafových objektů vrcholů, hran a grafů. Výčet těchto parametrů je uveden v tabulkách 4.1, 4.2, 4.3. Tabulka 4.1 Parametry objektu node Vrchol node Name Jméno vrcholu UserParam Uživatelské parametry Notes Poznámka Color Barva X Pozice v ose x Y Pozice v ose y Tabulka 4.2 Parametry objektu edge Hrana edge Name Jméno hrany UserParam Uživatelské parametry Notes Poznámka Color Barva X Nemá význam Y Nemá význam Tabulka 4.3 Parametry objektu graph Graf - graph Name Jméno grafu Notes Poznámka N seznam vrcholů (cell array) Color Barva E seznam hran (cell array) X UserParam Uživatelské parametry Y Využívám pro uložení rozměrů grafu U všech tří objektů je možné editovat Name, Notes (což jsou objekty typu string) a UserParam (může obsahovat libovolná data). Color je zadána formou vektoru barev. U vrcholu lze pozici danou souřadnicemi X, Y nastavit zadáním číselných hodnot. Pro hrany ani grafy tato možnost zpřístupněna není. Stejně tak nelze prostřednictvím property editoru pracovat s parametry grafů N a E. Realizace property editoru prošla poměrně složitým a zdlouhavým vývojem. Zkoušel jsem několik variant jeho umístění a podoby. Velkou inspirací mi byl Property inspector, kterým lze editovat vlastnosti grafických objektů při použití nástroje Matlabu GUIDE. Jak je vidět na obrázku 4.4, rozhodl jsem se pro pozici v levé části základního okna Grapheditu. Jeho základ tvoří dva grafické objekty frame, které patří mezi prvky uicontrol. 19
29 V novějších verzích Matlabu existuje objekt panel, který by byl k tomuto účelu mnohem vhodnější, protože je nadřízený všem prvkům uicontrol a umísťování editačních i textových polí a především možnost posuvu pomocí objektů slider by bylo umožněno jednodušším a pravděpodobně méně systémově náročným způsobem. Z důvodu požadované kompatibility Grapheditu s verzí Matlabu 6.5 R13 však není možné vlastností objektu panel využít. Obrázek 4.4 Zobrazený property editor i s použitým posuvníkem slider. Pro vypsání jednotlivých parametrů je nejdříve pomocí funkce grapheditdictionary umístěné v samostatném souboru v adresáři private získáno pole struktur, z nichž každá obsahuje informace o jednom z parametrů vybraného objektu (vrcholu, hrany nebo grafu). property pole struktur type name value options type name value options 'text' 'Name' 'Node_{1}' 'whatever' 'color' 'Color' [1 1 0] 'whatever' Obrázek 4.5 Znázornění struktur s příklady parametrů. Oddíl struktury type určuje, o jaký typ parametru se jedná. Možnosti, kterých může nabývat, včetně jejich vysvětlení, jsou zobrazeny v tabulce 4.4. Oddíl name určuje pojmenování parametru, které bude zobrazeno jako statický text vedle editačního pole. Value 20
30 je hodnota konkrétního parametru u vybraného objektu. Options je v současnosti nevyužitý údaj určený pro uchování možností například pro pop-up menu, které by bylo možné v property editoru rovněž využít. Stávající parametry grafů, vrcholů ani hran však jeho použití nevyžadují. Uvedený string 'whatever' tedy znamená, že pro zobrazení v editoru nebude použito pop-up menu. Tabulka 4.4 Tabulka typů parametrů zobrazovaných v property editoru. Typ parametru Vysvětlení významu Použitý objekt Uicontrol coordinates souřadnice editovatelný text coordinateslocked needitovatelné souřadnice editovatelný text (nepřístupný) text text editovatelný text textlocked needitovatelný text editovatelný text (nepřístupný) color barva ve složkách RGB obarvené tlačítko other jiný údaj editovatelný text otherlocked needitovatelný jiný údaj editovatelný text (nepřístupný) Při pohledu na zdrojový kód funkce grapheditdictionary stejně jako na kód zajišťující nastavení nově zadaných hodnot parametrů zpět vybranému objektu (v souboru grapheditpropertyeditor.m) se zřejmě nabízí otázka: Proč je v podstatě každý parametr ošetřen zvlášť? Toto poměrně neuniverzální řešení vyžaduje stav, ve kterém se nachází grafová část Scheduling toolboxu. Parametry grafových objektů uvedené v tabulkách 4.1, 4.2, 4.3 označené okrovou barvou jsou parametry základní. Lze s nimi pracovat pomocí funkcí set a get a je mimo jiné možné snadno získat jejich výpis. Zde by bylo možné jednotné zpracování. Problém je s parametry označenými zelenou barvou. Jedná se o parametry grafické, dodatečně přidané, nicméně funkční. Práce s nimi je prozatím prováděna funkcemi set_graphic_param a get_graphic_param a je poněkud obtížnější než u základních parametrů. Pro případ zmenšení základního okna na velikost, kdy není možné zobrazit všechny řádky property editoru, musí existovat možnost jejich rolování. Pokud bych měl k dispozici jako mateřský prvek editoru panel, byla by situace jednodušší, ale je řešitelná i bez něj. Jak je na obrázku vidět, umístil jsem do pravé části vnitřního rámu frame slider. Ten je zobrazen pouze v případě, kdy má jeho přítomnost smysl. Posuv parametrů nahoru či dolů, a tedy jejich zviditelnění a zneviditelnění, musí být prováděno po celých řádcích. Při 21
31 změně hodnoty nastavené posuvníkem se zjistí nová pozice text-boxů i edit-boxů (v případě barvy tlačítka) a podle ní je rozhodnuto o nastavení parametru Visible, poté je nová pozice nastavena. Toto pořadí je nutné kvůli estetickému zobrazení GUI. Při pořadí opačném totiž grafické objekty, které již nemají být vidět, probliknou. Samotná editace je prováděna jednoduše zapsáním nové hodnoty do textového pole. V případě tlačítka pro nastavení barvy se po jeho stisknutí zobrazí dialog uisetcolor (jeho vzhled je závislý na konkrétním operačním systému), který vrací zvolenou barvu v požadovaném tvaru. Parametry Name a Notes mohou nabývat hodnoty znakové, číselné, či jiné v důsledku jde vždy o typ string. UserParam může být v podstatě libovolná hodnota. Při jejím nastavování se pomocí funkce eval zadaný řetězec vykoná. V budoucnu však bude potřeba nahradit tento způsob způsobem vhodnějším. Parametr Color je nastavován pomocí výše zmíněného dialogu. Při zadávání souřadnic X, Y v případě vrcholu musí být zadána číselná hodnota. Zadávání parametrů je ošetřeno s využitím konstrukce try-catch. 22
32 5 Dialogy 5.1 Grapheditlistdlg Funkce grapheditlistdlg vytvoří dialogové okno, které bylo původně určené pro zobrazení existujících proměnných ve workspace Matlabu při importu nebo exportu grafu. Její využití jsem však v průběhu vývoje rozšířil a nyní je používána také pro načítání a ukládání objektu typu graph z/do binárního souboru *.mat a pro umožnění přejmenování vrcholu nebo hrany nakresleného grafu (tuto funkci umožňuje také property editor kapitola 4.5). Rovněž jsem ji zakomponoval do systému zásuvných modulů (kapitola 7). Zde je zavolána v případě, kdy uživatelem definovaný plugin nevrací objekt graph, jenž by se pouze vykreslil, ale jiný typ proměnné určené k uložení do workspace (použití je tedy podobné jako při exportu nakresleného grafu). Jako vzor mi posloužila funkce listdlg, která je součástí Matlabu. Ta je sama o sobě pro mé účely nevyhovující, ale některé zkušenosti získané při pečlivém nastudování jejího zdrojového kódu jsem využil u všech dialogů, které jsem později vytvářel. Nejdůležitější částí dialogu je listbox sloužící pro zobrazení seznamu jmen (proměnných, vrcholů, hran). K němu patří checkbox, jehož stav určuje zobrazený seznam. Jako vstup funkce lze totiž zadat dvě odlišná pole cell, která obsahují jména. Z důvodu vhodné volby nového jména je důležité umožnit uživateli nejen zobrazení jmen například objektů graph, ale rovněž ostatních proměnných ve workspace či v souboru. Dalším prvkem je uicontrol edit pro zadání požadovaného jména. Obrázek 5.1 Dialog grapheditlistdlg Důležité je, že všechny texty v dialogu včetně popisu tlačítek lze měnit zadáním příslušných parametrů při volání funkce. Grapheditlistdlg vrací proměnnou name, v níž je jméno ve formě řetězce, a proměnou isnewname, která určuje, zda se jedná o jméno nové (isnewname = 1) nebo zda jde pouze o položku vybranou ze seznamu (isnewname = 0). 23
33 Tabulka 5.1 Výpis parametrů funkce grapheditlistdlg. Název Výchozí Stručné vysvětlení významu parentfigure [] figure handle currentaxes [] axes handle windowstyle 'modal' styl dialogu ['normal','modal'] pozice dialogu vzhledem k rodiči position 'center' ['center','rightup','rightdown','leftup', 'leftdown'] list1 {} cell array se jmény list2 {} cell array se jmény listhandles1 [] vektor handlů korespondujících s list1 listhandles2 [] vektor handlů korespondujících s list2 initialvalue 1 vybraná pozice v seznamu initialname 'g' zvolené výchozí jméno [string] okstring 'Ok' popis tlačítka Ok [string] cancelstring 'Cancel' popis tlačítka Cancel [string] filename '' jméno dialogu (například jméno souboru) [string] editenable 'on' zpřístupnění edit-boxu ['on','off'] editname '' text návěští edit-boxu [string] listenable 'on' zpřístupnění list-boxu ['on','off'] listname '' text návěští list-boxu [string] checkenable 'on' zpřístupnění přepínání mezi seznamy jmen ['on','off'] checktext '' text návěští checkboxu [string] replaceable 'on' možnost nahrazení již existujícího jména ['on','off'] uniquename 'on' jsou dovolena pouze unikátní jména ['on','off'] 'Do you want to queststring replace name?' otázka při nesrovnalosti po stisku Ok tlačítka [string] Z uvedených parametrů není možná význam listhandles1 a listhandles2 zcela jasný. Jsou využity v případě použití dialogu pro přejmenování vrcholů a hran. K jejich zavedení mne vedl požadavek na zvýraznění objektu na kreslicí ploše při výběru jeho jména. Pořadí handlů v listhandels1,2 koresponduje s pořadím jmen v list1,2. Takže při výběru určitého jména (na známé pozici v seznamu) lze pomocí příslušného handle přesně adresovat odpovídající grafický objekt a dále s ním pracovat. Domnívám se, že funkci grapheditlistdlg činí způsob jakým funguje poměrně univerzální a využitelnou možná i pro jiné aplikace než pouze pro Graphedit. 24
34 5.2 Grapheditaddplugin Tento dialog slouží k přidání nového zásuvného modulu (pluginu), který bude pracovat s nakresleným grafem. Jako jediný vstupní parametr funkce je zadána struktura (objekt typu struct) obsahující informace o současných pluginech. Ty jsou při spuštění Grapheditu načteny z příslušného xml souboru. Po nadefinování všech příslušných údajů je pak vrácena vstupní struktura doplněná o nový plugin a určená k uložení. Obrázek 5.2 Zobrazení dialogu grapheditaddplugin. Prostřednictvím pop-up menu označeném Group Name uživatel zvolí jméno skupiny pluginů, do které chce nový přidat. Pokud mu žádná existující skupina nevyhovuje, lze vytvořit novou po kliknutí na tlačítko Create Group. Nezbytné je zadání jména nového pluginu, pod kterým jej bude možné nalézt v hlavním menu Grapheditu. Zda bude plugin ke svému spuštění využívat dialogové okno grapheditdoplugin nebo ne, je určeno volbou v pop-up menu označeném Gui. Edit-box Description slouží k zadání nějakého bližšího vysvětlení tohoto nového pluginu. To není povinné a záleží pouze na uživateli, zda jej uvede. Vysvětlení se zobrazí v dialogu grapheditdoplugin (kapitola 5.4) nebo si je lze přečíst alespoň po zobrazení xml souboru grapheditplugin.xml. Velice důležitý údaj je označen Path or Command. Sem je potřeba zapsat absolutní cestu k dané funkci, kterou lze získat pomocí tlačítka Browse, nebo název této funkce. Druhou možnost lze využít jedině v případě, kdy se funkce nachází v definovaných cestách Matlabu nebo v adresáři plugin, který Grapheditu přísluší (blíže popsáno v kapitole 7). 25
35 5.3 Grapheditremoveplugin Pomocí tohoto dialogu lze vybrat a odstranit plugin nebo celou skupinu. Vstupním parametrem funkce grapheditremoveplugin je stejně jako u grapheditaddplugin struktura s informacemi o pluginech. Návratovou hodnotu pak tvoří struktura upravená. Obrázek 5.3 Zobrazení dialogu grapheditremoveplugin. Uživatel v pop-up menu Group vybere určitou skupinu, po té v list-boxu označí plugin, který chce odstranit. Stisknutím tlačítka Delete nebo double-klikem na pluginu jej vymaže. Pokud vybere --- Whole group ---, smaže celou vybranou skupinu. Změny se provedou až po stisknutí tlačítka OK. Uživatel tedy může najednou vymazat několik položek. 26
36 5.4 Grapheditdoplugin Grapheditdoplugin má za úkol sloužit jako univerzální rozhraní pro spuštění libovolné funkce zařazené mezi pluginy. Prvním vstupem je struktura plugin obsahující název pluginu, absolutní cestu k funkci, která jej představuje, nalezenou při spuštění Grapheditu nebo po přidání pluginu, stručný popis jeho činnosti, pokud byl při definování pluginu zadán. Druhým vstupním parametrem je pak graf zobrazený na aktuální kreslicí ploše na objektu typu axes. Pokud je kreslicí plocha prázdná, je tento parametr prázdný vektor. Návratovou hodnotou funkce grapheditdoplugin je nová proměnná vytvořená pluginem (a to i v případě, kdy plugin nic nevrací pak je touto hodnotou prázdný vektor). Obrázek 5.4 Zobrazení dialogu grapheditdoplugin. Na obrázku je vidět použití grapheditdoplugin s pluginem Hamilton, který volá funkci hamilton_circuit. V horní části dialogu je zobrazen popis pluginu. Pokud má funkce pluginu nápovědu, je umožněno její zobrazení. V dolní části je kromě tlačítek OK a Cancel zobrazen text, jenž znázorňuje zadání funkce podobně jako v příkazové řádce Matlabu. Jako první parametr je předán graf g a pro volitelné zadání dalších parametrů je určen edit-box. Protože může existovat mnoho typů pluginů, nejsme schopni vytvořit jeden univerzální dialog tak, aby umožňoval komfortnější ovládání. Grapheditdoplugin je prosté, ale funkční řešení. Je předpokládáno, že pokud bude uživatel pro svůj plugin potřebovat lepší prostředí, sám si je vytvoří (kapitola 7). 27
37 6 Funkce Vzhledem k tomu, že všechny funkce, které jsou v Grapheditu k dispozici, jsou přístupné z hlavního menu, popíši je právě tak, jak jsou v menu seřazeny. Nejdříve ze všeho však uvedu způsob vytvoření hlavního okna Grapheditu při jeho spuštění. 6.1 Spuštění Grapheditu Spuštění je provedeno zadáním příkazu graphedit do příkazového řádku v Matlabu. Jako parametr může mít tato funkce zadanou proměnnou obsahující objekt typu graph. V takovém případě jej po spuštění okamžitě vykreslí. Dalším parametrem lze rozhodnout, zda bude okamžitě po spuštění zobrazen property editor či ne parametrem on, off. Primární funkce graphedit pouze rozhoduje o volání následující funkce podle podmínek, které splňují zadané parametry. Při spuštění je volána funkce createfigure s parametry určujícími vzhled nového okna. Zadáním figure je vytvořeno nové okno, které má jako callback rutinu CreatFcn funkci figurecreatefcncallback. Ta nejdříve ověří, zda již není Graphedit spuštěn (je dovolena jedna instance) a poté postupně spustí createmenu (nadefinuje hlavní menu), createtoolbar (nadefinuje lištu nástrojů), createcontextmenu (nadefinuje všechna kontextová menu používaná v Grapheditu), createaxesbar (vytvoří lištu pro záložky tvořenou objektem axes), createcanvas (vytvoří list kreslicí plochy) a pokud je to vyžadováno, zobrazí property editor. 6.2 File New Kliknutí na položku New vytvoří nový kreslicí list pomocí funkce createcanvas (diagram 6.5). Ta může mít jako jeden za svých parametrů objekt graph (nyní však prázdný) Open Volá funkci opengraphfromfile (diagram 6.3), která umožní vykreslit objekt graph uložený v binárním souboru *.mat. Protože v souboru může být uloženo více proměnných tohoto typu, je zde využito dialogu grapheditlistdlg pro výběr konkrétního grafu. Ve vývojovém diagramu funkce opengraphfromfile je zvýrazněný blok pro vykreslení grafu pomocí funkce drawobjectgraf. Algoritmus je v diagramu
38 start vrcholy grafu mají určenu pozici + rozmístění vrcholů, funkce nodeslayout uložení objektu graph do UserData objektu axes nastavení barvy axes a záložky podle objektu graph i = 1; i <= počet vrcholů; i = i + 1; vykreslení vrcholu, funkce drawnode i = 1; i <= počet hran; i = i + 1; vykreslení hran pomocí between, funkce drawedge nastavení záložky přesunutí grafu na střed, movegraphtocenteraxes testování posuvníků konec start příprava matice sousednosti i = 1; i <= počet hran; i = i + 1; zkompletování matice sousednosti vytvoření objektu graph podle matice sousednosti i = 1; i <= počet hran; i = i + 1; dosazení hran pomocí funkce between i = 1; i <= počet vrcholů; i = i + 1; dosazení vrcholů nastavení parametrů objektu graph konec Diagram 6.1 Funkce drawobjectgraph Diagram 6.2 Funkce createobjectgraph start získání jména souboru start soubor již existuje >1 výběr grafu pomocí grapheditlistdlg získání jména souboru vyhledání objektů graph v souboru Počet nalezených grafů 1 vykreslení grafu, drawobjectgraph konec 0 zobrazení upozornění + získat seznam uložených proměnných zadání názvu pomocí grapheditlistdlg převedení nakresleného grafu na objekt graph, createobjectgraph uložení nebo připojení proměnné konec Diagram 6.3 Funkce opengraphfromfile Diagram 6.4 Funkce savegraphtofile 29
39 start start zjištění rozměrů okna vytvoření objektu axes Byl zadán konkrétní objekt graph vytvoření nového objektu graph, nastavení jména a barvy + vyhledání vybraného vrcholu načtení objektu node z grafického objektu rectangle uložení objektu node do UserData hlavního okna probíhá vyjmutí Diagram 6.6 Funkce copynodefcn konec + smazání objektu rectangle vytvoření sliderů pro případné použití uložení proměnných handle do UserData hlavního okna a kreslicího listu property editor je zobrazen + úprava rozměrů listu připojení záložky vykreslení případného grafu, drawobjectgraph nastavení kreslicího módu konec posunout vůči původní pozici start načtení uloženého objektu node vrchol je vkládán pomocí myši unikátní jména vykreslení vrcholu, drawnode konec + umístit na pozici myši + pojmenování, setnodename Diagram 6.5 Funkce createcanvas Diagram 6.7 Funkce pastenodefcn Save Zavoláním savegraphtofile (diagram 6.4) je umožněno uložení grafu nakresleného na aktuálním kreslicím listu do binárního souboru *.mat. V případě, že soubor neexistuje, je vytvořen, v případě, že již existuje, je do něj proměnná obsahující tento graf přidána. I zde je použit dialog grapheditlistdlg, tentokrát pro zadání či výběr jména proměnné, do níž bude graf uložen. 30
40 V uvedeném vývojovém diagramu je zvýrazněný blok převedení nakresleného grafu na objekt typu graph. To se zde nachází kvůli tomu, že při kreslení není upravován přímo objekt graph uložený ve struktuře uchované v UserData daného grafického objektu axes, ale pouze obrázek, který jej vizuálně představuje. K vytvoření grafu jako objektu graph Scheduling toolboxu dochází v případech, jako je ukládání a export do workspace, případně při použití některého pluginu. Vytváření grafu nějakou dobu trvá, takže zpomaluje proces ukládání a jiné úlohy, ale jsem si jist, že je to lepší řešení, než každou změnu aplikovat přímo na objekt graph. V takovém případě, například při každé změně barvy vrcholu, by bylo nezbytné načíst objekt graph s UserData objektu axes, z něj příslušný vrchol vybrat, provést změnu a poté opět vše uložit zpět. Vytvoření grafu provádí funkce createobjectgraph nastíněná v diagramu Export to picture Funkce exportcanvastopicture poskytuje možnost uložit aktuální kreslicí list jako bitmapový obrázek. Dává k dispozici obvyklé typy jako bmp, png, jpg a další. Vývojový diagram funkce není nutné uvádět, protože její složení je velmi jednoduché výběr jména a typu obrázku pomocí uiputfile, získání obrázku pomocí funkce getframe a jeho uložení imwrite. V případě příliš velkého zobrazení grafu je do obrázku exportována pouze viditelná část (v budoucnu by se mohla tato funkce upravit tak, aby se exportoval graf celý včetně zakryté části). Viditelný grafický objekt uicontrol slider (+ tlačítko v rohu) by byl rovněž zahrnut do obrázku, proto je potřeba zajistit jeho skrytí a opětovné zobrazení Import from workspace, Export to workspace Obě tyto funkce (importobjectgraph a exportobjectgraph) jsou velice podobné otevírání a ukládání ze/do souboru. Odlišnost je v tom, že v tomto případě není potřeba provádět žádné operace se soubory, ale přenosy dat se uskutečňují pouze z/do workspace reprezentovaným klíčovým slovem base prostřednictvím funkcí evalin a assignin Close, close all, quit Funkce closecanvas volaná po kliknutí na položku menu close otestuje, zda se nachází v aktuálním kreslicím listě alespoň jeden vrchol grafu, a pokud ano, zeptá se uživatele pomocí qestdlg, zda chce tento graf uložit. Pokud chce, je zavolána funkce savegraphtofile. Posledním příkazem funkce closecanvas je delete(gca); který smaže aktuální objekt axes. 31
41 Protože při vytvoření má každý objekt axes přiřazenu callback funkci DeleteFcn, je před samotným smazáním vykonána ona. Jmenuje se deletefcncallbackaxes a existuje proto, aby bylo zajištěno, že při smazání kreslicího listu bude smazána také příslušná záložka a nastaven jiný kreslicí list jako aktuální. Zvláštní situace nastane, když zavíráme jediný kreslicí list, který se v Grapheditu nachází. V takovém případě tato callback funkce zajistí otevření nového listu. Význam funkce closeallcanvas volané při kliknutí na close all, je jistě zřejmý. Při stisku Quit dojde k zavolání funkce quitgraphedit, která se dotáže, zda chce uživatel skutečně program ukončit. Při kladné odpovědi hlavní okno Grapheditu zavře. Neuložené nakreslené grafy v tom případě budou ztraceny. 6.3 Edit Cut, copy Cut, copy a paste jsou prozatím jediné funkce, které se v tomto oddíle hlavního menu nacházejí. Lze je aplikovat pouze na vrcholy, protože mohou existovat v grafu zcela samostatně. Hrana musí vždy spojovat dva vrcholy a její kopírování by tedy bylo obtížné. Funkce copynodefcn je vykonána jak pro vyjmutí, tak pro kopírování. V případě, kdy jde o vyjmutí, je však původní vrchol smazán. Tato funkce vloží do oddílu Box ve struktuře uložené jako UserData hlavního okna Grapheditu vybraný vrchol ve formě objekt node. Zde se pak nachází do ukončení Grapheditu. Jen v případě kopírování či vyjmutí jiného vrcholu je přepsán dalším. Funkce je zobrazena na vývojovém diagramu Paste Funkce pastenodefcn (vývojový diagram 6.7) z již uvedeného místa uložený vrchol vezme a pomocí funkce drawnode (vývojový diagram 6.9) jej vykreslí na pozici určenou algoritmem, který je v ní implementován. 6.4 View Property Editor Kliknutím na tuto položku v menu View dojde ke zobrazení property editoru, který již byl popsán v kapitole
42 Stejně jako v primární funkci graphedit i zde, při práci s property editorem (funkcí grapheditpropertyeditor umístěnou v adresáři private), využívám příkazy Switch a Case. Je to z toho důvodu, že v případě, kdy je funkce umístěna v jiném souboru, jsem schopen volat pouze funkci primární. Pokud tedy potřebuji spustit operaci, kterou vykonává funkce, jíž kvůli tomuto problému nevidím, mohu její jméno v podobě proměnné typu string zadat jako parametr primární funkce a pomocí switch a case ji zavolat. Tento způsob je použit pro komunikaci mezi Grapheditem a property editorem. Jak je ve zdrojovém kódu vidět, kliknutím v menu na Property Editor se uvedeným způsobem spustí funkce menupropertyeditor (stejně tak při dvojkliku někde v kreslicí ploše či zmáčknutí ikony v nástrojové liště), která buď zobrazí nebo skryje property editor v pravé části hlavního okna. Pokud jej právě zobrazuje, volá klíčovou funkci createpropertyeditor. Ta vytvoří grafické objekty, které property editor představují a zavolá funkci grapheditpropertyeditor (primární funkce) bez parametrů. Tímto způsobem jsou vytvářeny jednotlivé řádky určené vybraným grafickým objektem (graph axes, node rectangle, edge line) pomocí funkce grapheditdictionary zmíněné již v kapitole 4.5. Příkaz grapheditpropertyeditor (bez parametrů) je rovněž volán vždy, při změně vybraného objektu. Ostatní funkce, které se v souboru grapheditpropertyeditor.m nacházejí, jsou pomocné a slouží k úpravě vzhledu při změně velikosti (celého okna nebo pouze property editoru), k vracením a nastavováním změn v parametrech objektů graph, node, edge Names, UserParams Nastavením jednoho z těchto parametrů ovlivňujeme zobrazení grafického objektu text, v němž je uvedeno jméno Name vrcholu či hrany grafu nebo textová forma uživatelského parametru UserParam. Změnit zobrazení těchto informací je možné i pomocí kontextového menu zobrazovaného po kliknutí pravým tlačítkem na příslušném objektu. Uživatel má možnost ovládat oba typy textů pro vrcholy (nodes) a hrany (edges) zvlášť. Změny zobrazení provádí funkce viewtext (vývojový diagram 6.8), která se dělí na části pro Name a pro UserParam. Ty jsou obě velmi podobné, ale liší se v nastavování pozice UserParam v závislosti na zobrazeném textu Name. UserParam jsou vždy zobrazeny pod texty Name, pokud jsou viditelné, v opačném případě se UserParam z estetických důvodů přesouvají na jejich místo. Přesun je zajištěn funkcí repairypositionuserparam. 33
43 start Name Name UserParam Userparam najít texty Name najít texty UserParams najít texty UserParam požadovaná viditelnost off viditelnost Name upravit pozice UserParam, repairypositionuserparam on upravit pozice UserParam, repairypositionuserparam viditelnost UserParam konec Diagram 6.8 Funkce viewtext 6.5 Draw Draw node Nastavit kreslicí mód lze jak v hlavním menu, tak na liště nástrojů. Kliknutím je zavolána funkce selectdrawtype, která podle volby uživatele nastaví jako callback rutinu ButtonDownFcn grafických objektů axes (změna má vliv na všechny kreslicí listy) funkci drawnode (diagram 6.9), je-li kreslení vrcholů zapínáno, případně buttondownoveraxes, je-li vypínáno. Po zapnutí uživatel kliknutím na kreslicí plochu umístí vrchol představovaný grafickým objektem rectangle. Funkce buttondownoveraxes slouží pro umožnění výběru kreslicího listu a zapínání/vypínání property editoru Draw edge Zde může uživatel nastavit kreslicí mód naprosto stejně jako u Draw Node s tím rozdílem, že jako callback funkce ButtonDownFcn je nastavena drawedge (diagram 6.10). 34
44 start nový obj. node, nastavení výchozích parametrů, funkce setnodename start byl zadán konkrétní objekt node vytvoření grafického objektu rectangle s příslušnými parametry vytvoření objektů text createtext vrchol je kreslen samostatně uložení dat do UserData aktuálního objektu axes konec + stanovení pozice a načtení jeho vlastností + výběr vrcholu, selectononeobject nastavení parametrů line (pozice poč. i konc. bodu, barvy) počáteční vrchol a jeho pozice hrana je kreslena myší nastavení callback funkcí axes, WindowButtonMotionFcn - pulledge, WindowButtonUpFcn - stoppulledge vytvoření graf. objektů line pro hranu a šipku pomocí getline nastavení parametrů vytvoření objektů text createtext uložení dat do UserData aktuálního objektu axes konec + stanovení parametrů line (pozice poč. bodu, barva) nový obj. edge, nastavení výchozích parametrů zobrazení hrany a nastavení šipky, viewnewedge, makearrowfromline Diagram 6.9 Funkce drawnode Diagram 6.10 Funkce drawedge Delete mode Delete mode se od obou předchozích funkcí způsobem své činnosti liší tím, že callback rutinu ButtonDownFcn pro objekt axes úplně zruší a tu samou rutinu pro grafické objekty reprezentující vrcholy a hrany nastaví na deleteselectedobject (při vypnutí režimu na buttondownovernode a buttondownoveredge). Jak grafickému objektu rectangle, tak line je nastavena jako callback routina DeleteFcn funkce, která při smazání automaticky odebere také příslušné objekty text a všechny informace ze struktury v UserData kreslicího listu. Mazání nakreslených objektů umožňuje rovněž klávesa Delete. Vybráním požadovaného objektu myší a jejím stisknutím dojde k smazání. Funkce deleteselectedobject funguje stejně, ale po výběru již není potřeba Delete stisknout. Automaticky se totiž nastaví na znak představující Delete CurrentCharacter, což je parametr okna figure, který uchovává informaci o posledním zadaném znaku. 35
45 6.5.4 Layout Tato položka menu rozmístí vrcholy nakresleného grafu na pozice určené algoritmem funkce nodeslayout. Tato funkce původně vznikla kvůli potřebě vhodně rozložit importovaný nebo otevíraný graf, jehož vrcholy zatím nemají určenu pozici. Jejím úkolem není nalézt inteligentní rozložení takové, aby se v grafu nekřížily hrany nebo splňoval jiné podmínky např. určitý tvar atd. Bez jakéhokoliv ohledu na hrany umístí vrcholy podle jejich pořadí. Obrázek 6.1 Vstup a výstup funkce nodeslayout. 6.6 Options Options je nabídka nastavení připravená spíše do budoucna, kdy bude do programu přidáno větší množství parametrů ovlivňujících funkce Grapheditu. Pak bude vytvořen dialog umožňující pohodlné nastavování parametrů stejný, jako známe z jiných aplikací. Prozatím zde lze nalézt pouze možnost unikátních jmen vrcholů a hran Unique names Klinutím na položku menu Unique Names není spuštěna žádná zvláštní funkce. Stav tohoto nastavení je testován při přejmenování a vkládání vrcholů a hran a podle výsledku je pak nové jméno změněno či ponecháno. 36
46 6.7 Plugins Add, remove plugin Kliknutím na add plugin a remove plugin v menu Plugins jsou spouštěny funkce grapheditaddplugin a grapheditremoveplugin, které vytvoří dialogy, pomocí nichž může uživatel celý systém pluginů ovládat. Oba tyto dialogy stejně jako univerzální dialog pro spouštění pluginů jsou popsány v kapitole 5 a vysvětlení systému pluginů je věnována poslední část práce. 37
47 7 Plugins Systém zásuvných modulů Plugins je systém zásuvných modulů, poskytující jednoduché rozhraní pro další rozšiřování vlastností editoru grafů. Umožňuje tedy uživateli přidat libovolnou funkci, která nějakým způsobem pracuje s grafy. Požadavek na vytvoření systému je posledním bodem zadání bakalářské práce. 7.1 Xml (extended Markup Language) Protože je nezbytné, aby si Graphedit připojené moduly pamatoval také při dalším spuštění a ne jen po dobu existence jedné jeho instance, musí být informace o systému pluginů někam ukládány. K tomuto účelu slouží xml soubor grapheditplugin.xml, který se nachází v adresáři private společně s dalšími soubory využívanými Grapheditem. Pro ukládání informací o celé soustavě vložených modulů jsem použil jazyk xml, protože je to jazyk umožňující pomocí značek (tzv. tagů) popis strukturovaných dat. K jeho využití mě vedlo především to, že v Matlabu jsou k dispozici funkce xmlread a xmlwrite, které výrazně usnadňují čtení i zápis souborů xml se zachováním struktury. Xml kód 7.1 ukazuje xml soubor s daty, která definují několik zásuvných modulů. Je na něm vidět, že bodem nejvyšší úrovně je seznam pluginů (tag <pluginlist>), který se dělí na několik uživatelem vytvořených skupin (<group>) a každá tato skupina obsahuje žádný nebo několik zásuvných modulů (<plugin>). Ke každému modulu musí být k dispozici konkrétní informace. Parametr tagu <plugin> gui rozhoduje, zda pro spuštění pluginu bude využit dialog grapheditdoplugin popsaný v kapitole 5.4 nebo zda jej ke své funkci nepotřebuje. Dalším parametrem je name jméno, které se zobrazí v hlavním menu. Tagem <description> je určeno stručné vysvětlení modulu, <command> je značka uvozující příkaz, kterým je volána funkce představující modul. Při porovnání bloků <command> u jednotlivých modulů v xml kódu 7.1 zjistíme, že je možno uchovávat a po té použít pouze název funkce nebo celou absolutní cestu v adresářové struktuře. V Grapheditu jsou implementovány čtyři stupně hledání funkce zadaného modulu. Nejdříve je použita absolutní cesta, pokud podle tohoto údaje není funkce nalezena, prohledá se adresář plugin, který náleží ke Grapheditu, následuje.../toolbox/scheduling/@graph, který slouží jako mateřský adresář grafové části Scheduling toolboxu TORSCHE. Jako poslední jsou prohledány cesty Matlabu (path). 38
48 <?xml version="1.0" encoding="utf-8"?> <pluginlist application="graphedit" ver="1.0"> <group name="graph"> <plugin gui="1" name="hamilton"> <description>finds Hamilton circuit in a graph</description> <command>c:\matlab65\toolbox\scheduling\@graph\hamilton_circuit.m</command> </plugin> </group> <group name="graphics"> <description>graphics plugins</description> <plugin gui="0" name="nodes to color"> <command>c:\matlab65\work\graphedit\plugin\nodestocolor.m</command> </plugin> </group> <group name="creating"> <description /> <plugin gui="1" name="create Nodes"> <command>createnodes</command> </plugin> </group> <group name="exporting"> <description /> <plugin gui="0" name="export Names and UserParams"> <description>exports names of nodes and userparams of edges to workspace.</description> <command>getnamesanduserparams</command> </plugin> </group> </pluginlist> XML kód 7.1 Ukázka kódu souboru grapeditplugin.xml. 7.2 Ukládání Ukládání do xml souboru se provádí vždy po přidání nového pluginu. Řeší je funkce grapheditplugstructure2xml (umístěna v samostatném souboru), které je jako parametr předána struktura obsahující všechny dostupné informace o zásuvných modulech. Jejím prostřednictvím je pomocí příkazů uvedených v nápovědě k funkci xmlwrite převedena zmíněná struktura seznamu pluginů na datový objekt, který je pak pomocí xmlwrite uložen jako soubor grapheditplugin.xml 7.3 Načítání Načtení pluginů je provedeno okamžitě při spuštění Grapheditu. Zajišťuje je funkce loadplugin, která je nastavena jako callback routina CreateFcn objektu uimenu jménem Plugins. V ní je zavolána funkce grapheditxml2struct umístěná i s dalšími uvedenými funkcemi v samostatném souboru adresáře private. Ta načte pomocí xmlread obsah grapheditplugin.xml. Funkce xmlplugins2struct, která se sama rekurentně volá, pak vytvoří poměrně složitou strukturu. Tu je potřeba zjednodušit do použitelného tvaru, což vykonají funkce getpluginlist, getgroup, getplugin a getparam. 39
49 7.4 Příklady Jako příklady zde uvádím zásuvné moduly nadefinované v xml souboru, který lze spatřit v xml kódu Hamiltonovská kružnice Hamiltonovská kružnice grafu je taková cesta, která projde právě jednou všechny vrcholy grafu. Zde je použita funkce hamilton_circuit implementovaná v části Scheduling toolboxu TORSCHE věnující se grafům. Zařazení do systému zásuvných modulů mi umožní používat ji i bez potřeby příkazového řádku Matlabu. Postup použití: 1. Nakreslení nebo načtení grafu (splňujícího podmínky existence Hamiltonovské kružnice). V tomto případě je tímto grafem model České republiky. 2. Spuštění modulu pomocí hlavního menu. 3. Z nápovědy funkce hamilton_circuit se dozvím, že je nutné zadat parametr 'b'. 4. Stisknutí OK funkci spustí, ta vrátí upravený graf, který je pak vykreslen na nový kreslicí list. Obrázek 7.1 Příklad použití modulu hamilton_circuit. 40
50 7.4.2 Obarvení vrcholů (jednou barvou) Nejedná se o barvení grafu tak, jak je známe z teorie grafů (literatura [1]). Funkce nodestocolor uvedená v kódu Matlabu 7.1 má za úkol ukázat použití pluginu, který nevyužívá dialog grapheditdoplugin, ale použije svůj vlastní v tomto případě uisetcolor. Postup jejího použití je patrný na obrázku 7.2. function g = nodestocolor(g) if isa(g, 'graph') color = uisetcolor('graphedit palette'); if (length(color) ~= 1) for i = 1:length(g.N) node = g.n(i); set_graphic_param(node, 'Color', color); g.n(i) = node; end g.name = [g.name ' - Color']; else g = []; end else g = []; end Kód Matlabu 7.1 Kód funkce nodestocolor modulu pro obarvení vrcholů. Obrázek 7.2 Příklad použití modulu nodestocolor. 41
51 7.4.3 Export jmen vrcholů a uživatelských parametrů hran Funkce getnamesanduserparams uvedená v kódu Matlabu 7.2 zjistí jména vrcholů nakresleného grafu a hodnoty UserParams hran. Všechny tyto údaje vloží do struktury, kterou vrátí. Jak je vidět na obrázku 7.3, Graphedit pozná, že vracená proměnná není typu graph a nabídne uživateli možnost exportovat ji do workspace Matlabu. Pomocí dialogu grapheditlistdlg je pak zvolen název proměnné, pod nímž bude struktura uložena ve workspace Matlabu. function out = getnamesanduserparams(g) nodes = []; edges = []; for i = 1:length(g.N) nodes{i} = g.n{i}.name; end for i = 1:length(g.E) edges{i} = g.e{i}.userparam; end out = struct('nodes',nodes,'edges',edges); Kód Matlabu 7.2 Kód funkce getnamesanduserparams. Obrázek 7.3 Příklad použití modulu getnamesanduserparams. 42
52 7.4.4 Vytvoření vrcholů grafu Funkce z kódu Matlabu 7.3 vytvoří graf s takovým počtem vrcholů, kolik je zadáno jako její parametr prostřednictím dialogu grapheditdoplugin. Na obrázku 7.4 je zobrazen postup spuštění modulu a jeho výsledek. function g = createnodes(g,varargin) g = graph; for i = 1:round(varargin{1}) n = node; n.name = ['T_{' num2str(i) '}']; g.n(i) = n; end Kód Matlabu 7.3 Kód funkce createnodes vytvoření zadaného počtu vrcholů. Obrázek 7.4 Příklad použití modulu createnodes. 43
Modelování ve výpočtových software
Modelování ve výpočtových software 5. cvičení uživatelské grafické rozhraní GUI 1) Úvod do tvorby GUI pomocí průvodce Uživatelské grafické rozhraní (GUI) je tvořeno jedním či více okny, které umožňují
02. HODINA. 2.1 Typy souborů a objektů. 2.2 Ovládací prvky Label a TextBox
02. HODINA Obsah: 1. Typy souborů a objektů 2. Ovládací prvky Label a TextBox 3. Základní příkazy a vlastnosti ovládacích prvků 4. Práce s objekty (ovládací prvky a jejich vlastnosti) 2.1 Typy souborů
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,
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í
Manuál k programu KaraokeEditor
Manuál k programu KaraokeEditor Co je KaraokeEditor? Program slouží pro editaci tagů v hudebních souborech formátu mp3. Tagy jsou doprovodné informace o písni, uložené přímo v mp3. Aplikace umí pracovat
45 Plánovací kalendář
45 Plánovací kalendář Modul Správa majetku slouží ke tvorbě obecných ročních plánů činností organizace. V rámci plánu je třeba definovat oblasti činností, tj. oblasti, ve kterých je možné plánovat. Každá
Projektová dokumentace GED 2006
Projektová dokumentace GED 2006 20.4.2006 Řešitelé týmu a podíl práce na projektu: Kamil Dudka xdudka00 objektový návrh uživatelské rozhraní podpora plug-in programů kreslící plocha vkládání textu programová
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
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
Studijní skupiny. 1. Spuštění modulu Studijní skupiny
Studijní skupiny 1. Spuštění modulu Studijní skupiny 2. Popis prostředí a ovládacích prvků modulu Studijní skupiny 2.1. Rozbalovací seznamy 2.2. Rychlé filtry 2.3. Správa studijních skupin 2.3.1. Seznam
Prostředí Microstationu a jeho nastavení. Nastavení výkresu
Prostředí Microstationu a jeho nastavení Nastavení výkresu 1 Pracovní plocha, panely nástrojů Seznámení s pracovním prostředím ovlivní pohodlí, rychlost, efektivitu a možná i kvalitu práce v programu Microstation.
47 Mapování přístupnosti
47 Mapování přístupnosti Modul Mapování přístupnosti slouží ke správě výsledků mapování architektonických objektů z hlediska přístupnosti a především k evidenci zjištěných skutečností o mapovaných objektech.
Zobrazování bannerů podporují pouze nově vytvořené šablony motivů vzhledu.
Bannerový systém ProEshop od verze 1.13 umožňuje zobrazování bannerů na popředí e-shopu. Bannerový systém je přístupný v administraci e-shopu v nabídce Vzhled, texty Bannerový systém v případě, že aktivní
Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5
Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou
Přehledy pro Tabulky Hlavním smyslem této nové agendy je jednoduché řazení, filtrování a seskupování dle libovolných sloupců.
Přehledy pro Tabulky V programu CONTACT Professional 5 naleznete u firem, osob a obchodních případů záložku Tabulka. Tuto záložku lze rozmnožit, přejmenovat a sloupce je možné definovat dle vlastních požadavků
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
Vzorce. Suma. Tvorba vzorce napsáním. Tvorba vzorců průvodcem
Vzorce Vzorce v Excelu lze zadávat dvěma způsoby. Buď známe přesný zápis vzorce a přímo ho do buňky napíšeme, nebo použijeme takzvaného průvodce při tvorbě vzorce (zejména u složitějších funkcí). Tvorba
1. Nastavení dokumentu
Obsah as a asta 2. Okno / více dokumentů otevírání, zavírání, vytváření nového, přepínání, ukládání 3. Barevný režim dokumentu 4. Zobrazení, vlastní pohledy 5. Objekty vkládání 1. Nastavení dokumentu Uprostřed
Uživatelský manuál aplikace. Dental MAXweb
Uživatelský manuál aplikace Dental MAXweb Obsah Obsah... 2 1. Základní operace... 3 1.1. Přihlášení do aplikace... 3 1.2. Odhlášení z aplikace... 3 1.3. Náhled aplikace v jiné úrovni... 3 1.4. Změna barevné
Projekt. Sestavení projektu
Projekt V záložce Nástroje / Projekt MISYS jsou přehledně uspořádány funkce, které slouží k sestavení a editaci projektu. Lze také zapnout nástrojovou lištu Projekt (pravé tlačítko myši v šedé oblasti
Příloha 6. Palety nástrojů
Příloha 6. Palety nástrojů Palety nástrojů v IDE poskytují zkrácení pro příkazy nabídky. Příkazy jsou rozděleny do několika palet nástrojů, které mohou být nezávisle přeskupeny nebo vloženy do plovoucích
Nápověda k aplikaci GraphGUI
Nápověda k aplikaci GraphGUI 1 APLIKACE Aplikace slouží pro zobrazování závislosti několika veličin s různými jednotkami a rozsahy na čase v jednom grafu. Do aplikace lze importovat data ze souborů různých
Prohlížení a editace externích předmětů
Prohlížení a editace externích předmětů 1. Spuštění modulu Externí předměty 2. Popis prostředí a ovládacích prvků 2.1. Rozbalovací seznamy 2.3. Seznamy 2.3.1. Definice předmětů 2.3.2. Vypsané předměty
Mapová aplikace HZS Ústeckého kraje
Mapová aplikace HZS Ústeckého kraje Stručný návod Tato aplikace vznikla z důvodu potřeby prezentace geografických dat HZS Ústeckého kraje a dalších poskytovatelů dat v jednotné mapové aplikaci. Dalším
aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz
aneb velice zjednodušené vysvětlení základních funkcí a možností systému Vypracoval: Tomáš Dluhoš E-mail: tomas.d@centrum.cz Operační systém Windows - první operační systém Windows byl představen v roce
Velmi stručný návod jak dostat data z Terminálu Bloomberg do R
Velmi stručný návod jak dostat data z Terminálu Bloomberg do R Ondřej Pokora, PřF MU, Brno 11. března 2013 1 Terminál Bloomberg Klávesou Help získáte nápovědu. Dvojím stisknutím Help Help spustíte online
Metoda Monte Carlo a její aplikace v problematice oceňování technologií. Manuál k programu
Metoda Monte Carlo a její aplikace v problematice oceňování technologií Manuál k programu This software was created under the state subsidy of the Czech Republic within the research and development project
Průvodce aplikací FS Karta
Průvodce aplikací FS Karta Základní informace k Aplikaci Online aplikace FS Karta slouží k bezpečnému ukládání osobních údajů fyzických osob a k jejich zpracování. Osobní údaje jsou uloženy ve formě karty.
SignEditor 1 - návod k použití
SignEditor 1 - návod k použití Tomáš Ryba tryba@kky.zcu.cz Zdeněk Krňoul zdkrnoul@kky.zcu.cz Jakub Kanis jkanis@kky.zcu.cz 27. března 2012 1 Vznik za podpory projektu Pojabr - Potlačení jazykové bariéry
Uživatelská příručka Autor: Martin Fiala
1 Uživatelská příručka Autor: Martin Fiala Vzhledem k tomu, že navržený program nefunguje samostatně a jedná se pouze o část implementovanou do pluginu BJ2NB vyvíjeného na Vysoké škole ekonomické, je nutné
CAD library. Spuštění aplikace. Práce s aplikací. Popis okna
CAD library Aplikace CAD library je určena pro zobrazení schémat a pohledů na přístroje firmy Schneider Electric (obsahuje také knihovnu elektrotechnických značek pro všeobecné použití). Zobrazené výkresy
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
COREL PHOTO-PAINT SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková
COREL PHOTO-PAINT SEZNÁMENÍ S PROGRAMEM Lenka Bednaříková SEZNÁMENÍ S OKNEM APLIKACE Panel nabídek Panel nástrojů Panel vlastností Ukotvitelné panely Okno nástrojů Paleta barev Okno obrázku Stavový řádek
Tvorba kurzu v LMS Moodle
Tvorba kurzu v LMS Moodle Před počátkem práce na tvorbě základního kurzu znovu připomínám, že pro vytvoření kurzu musí být profil uživatele nastaven administrátorem systému minimálně na hodnotu tvůrce
Technologické postupy práce s aktovkou IS MPP
Technologické postupy práce s aktovkou 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 Technologické postupy práce
Manuál k ovládání aplikace INFOwin.
Manuál k ovládání aplikace INFOwin. Základní práce s formuláři je ve všech modulech totožná. Vybereme tedy například formulář Pokladní kniha korunová na kterém si funkce ukážeme. Po zápisech se lze pohybovat
Úvod do fuzzy logiky a fuzzy regulátory
Úvod do fuzzy logiky a fuzzy regulátory Tato publikace vznikla jako součást projektu CZ.04.1.03/3.2.15.2/0285 Inovace VŠ oborů strojního zaměření, který je spolufinancován evropským sociálním fondem a
Pracovní prostředí Word 2003 versus Word 2010
Zdokonalování gramotnosti v oblasti ICT Pracovní prostředí Word 2003 versus Word 2010 Inovace a modernizace studijních oborů FSpS Vránová Hana 11.7.2012 OBSAH Srovnání pracovního prostředí Word 2003 a
BALISTICKÝ MĚŘICÍ SYSTÉM
BALISTICKÝ MĚŘICÍ SYSTÉM UŽIVATELSKÁ PŘÍRUČKA Verze 2.3 2007 OBSAH 1. ÚVOD... 5 2. HLAVNÍ OKNO... 6 3. MENU... 7 3.1 Soubor... 7 3.2 Měření...11 3.3 Zařízení...16 3.4 Graf...17 3.5 Pohled...17 1. ÚVOD
46 Objekty a atributy
46 Objekty a atributy Modul Objekty a atributy je určen pro pokročilé uživatele zodpovědné za mapování přístupnosti architektonických bariér. Modul umožňuje stanovit jaké objekty budou mapovány, jaké skutečnosti
Popis ovládání. Po přihlášení do aplikace se objeví navigátor. Navigátor je stromově seřazen a slouží pro přístup ke všem oknům celé aplikace.
Popis ovládání 1. Úvod Tento popis má za úkol seznámit uživatele se základními principy ovládání aplikace. Ovládání je možné pomocí myši, ale všechny činnosti jsou dosažitelné také pomocí klávesnice. 2.
APS mini.ed programová nadstavba pro základní vyhodnocení docházky. Příručka uživatele verze 2.2.0.6
APS mini.ed programová nadstavba pro základní vyhodnocení docházky Příručka uživatele verze 2.2.0.6 APS mini.ed Příručka uživatele Obsah Obsah... 2 Instalace a konfigurace programu... 3 Popis programu...
VIANIV. Interaktivní návrh nivelety. Příručka uživatele. Revize PRAGOPROJEKT a.s. & VIAPONT s.r.o.
ROADPAC 06 Příručka uživatele Revize 13.08.2006 PRAGOPROJEKT a.s. & VIAPONT s.r.o. PRAGOPROJEKT a.s., 147 54 Praha 4, K Ryšánce 16 VIAPONT s.r.o., Vodní 13, 602 00 Brno O B S A H 1. ÚVOD... 3 2. SOUBORY
Ovládání Open Office.org Calc Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako.
Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého
Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player.
Návod na ovládání veřejné mapové aplikace: Generel cyklodopravy Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul Flash Adobe Player. Logo, název Panel nástrojů Odkazy Vrstvy
Stručný postup k použití programu PL7 Junior (programování TSX Micro)
Stručný postup k použití programu PL7 Junior (programování TSX Micro) 1. Připojení PLC TSX Micro k počítači Kabel, trvale zapojený ke konektoru TER PLC, je nutné zapojit na sériový port PC. 2. Spuštění
Nápověda aplikace Patron-Pro
Nápověda aplikace Patron-Pro 1. Popis aplikace Aplikace Patron-Pro slouží k zobrazení souboru zálohy mobilní aplikace Patron-Pro se záznamy o povolených kartách. Dále umožňuje tyto záznamy editovat, vytvářet
Microsoft Office. Word vzhled dokumentu
Microsoft Office Word vzhled dokumentu Karel Dvořák 2011 Práce se stránkou Stránka je jedním ze stavebních kamenů tvořeného dokumentu. Představuje pracovní plochu, na které se vytváří dokument. Samozřejmostí
Formátování pomocí stylů
Styly a šablony Styly, šablony a témata Formátování dokumentu pomocí standardních nástrojů (přímé formátování) (Podokno úloh Zobrazit formátování): textu jsou přiřazeny parametry (font, velikost, barva,
František Hudek. červenec 2012
VY_32_INOVACE_FH14 Jméno autora výukového materiálu Datum (období), ve kterém byl VM vytvořen Ročník, pro který je VM určen Vzdělávací oblast, obor, okruh, téma Anotace František Hudek červenec 2012 8.
MS Excel 2010. Lekce 1. Operační program Vzdělávání pro konkurenceschopnost. Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU
MS Excel 2010 Lekce 1 Operační program Vzdělávání pro konkurenceschopnost Projekt Zvyšování IT gramotnosti zaměstnanců vybraných fakult MU Registrační číslo: CZ.1.07/2.2.00/15.0224, Oblast podpory: 7.2.2
Popis funkcí tlačítek jednotlivých modulů programu OGAMA
Nevázaná příloha bakalářské práce VYUŽITÍ OPEN-SOURCE NÁSTROJŮ PRO PŘÍPRAVU, PRŮBĚH A VYHODNOCENÍ EYE-TRACKING EXPERIMENTŮ Popis funkcí tlačítek jednotlivých modulů programu OGAMA Michal KUČERA, 2014 Replay
Konvertor diakritiky 3. Instalace
OBSAH Popis... 2 Ovládání aplikace... 3 Odstranění diakritických znamének... 4 Operace s textem... 4 Nastavení aplikace... 4 Písmo... 4 Jazyk... 4 Přidání dalšího jazyka do aplikace... 5 Znaky... 5 Instalace
Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ]
Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Jan Boháček [ÚLOHA 27 NÁSTROJE KRESLENÍ] 1 CÍL KAPITOLY V této kapitole si představíme Nástroje kreslení pro tvorbu 2D skic v modulu Objemová součást
Cvičení 6 PARAMETRICKÉ 3D MODELOVÁNÍ TVORBA VÝKRESU OBROBKU Inventor Professional 2012
Cvičení 6 PARAMETRICKÉ 3D MODELOVÁNÍ TVORBA VÝKRESU OBROBKU Inventor Professional 2012 Cílem cvičení je osvojit si základní postupy tvorby výkresu dle platných norem na modelu obrobeného odlitku, který
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:...
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
Odpadové hospodářství v ORP Ústí nad Labem
mapová aplikace Odpadové hospodářství Návod na ovládání veřejné mapové aplikace: Odpadové hospodářství v ORP Ústí nad Labem Pro správné zobrazení mapové aplikace je potřeba mít nainstalovaný zásuvný modul
SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM
SEMESTRÁLNÍ PRÁCE Z PŘEDMĚTU MODELOVÁNÍ MATLABEM Jméno: Petr Thür Os. číslo: A04236 E-mail: petr.thur@post.cz Zadání: 8-D Datum vypracování: 7. 5. 2005 Zadání: Sestavte program (funkční M-soubor) pro vykreslení
Úvod. OLYMPUS Stream Rychlý návod k obsluze
Upozornění * Podívejte se prosím na on-line nápovědu v návodu (help) softwaru, nastavení softwaru, kalibraci systému a podrobná nastavení.. *Tento návod k obsluze obsahuje základní funkce verze SW Start
Popis základního prostředí programu AutoCAD
Popis základního prostředí programu AutoCAD Popis základního prostředí programu AutoCAD CÍL KAPITOLY: CO POTŘEBUJETE ZNÁT, NEŽ ZAČNETE PRACOVAT Vysvětlení základních pojmů: Okno programu AutoCAD Roletová
WORD. (zobecněno pro verzi 2007)
WORD (zobecněno pro verzi 2007) Program MS Word patří softwarově do skupiny uživatelských aplikací, které se nazývají textové editory. Slouží především k editacím či-li úpravám textů vč. vkládání grafických
Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox
Cvičení 7: Delphi objekty CheckedBox, Radio- Button, EditBox 1 Opakování kreslení do Image 1. Canvas = plátno - Color, Caption Nastavení typu čáry pro kreslení perem Pen: barva Image1.Canvas.Pen.Color
Interaktivní tabule SMART Notebook
Gymnázium Ostrava Hrabůvka, příspěvková organizace Františka Hajdy 34, Ostrava Hrabůvka Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030 Interaktivní tabule
VYUŽITÍ GRAFICKÉHO UŽIVATELSKÉHO ROZHRANÍ MATLABU VE VÝZKUMU A VÝUCE MĚŘENÍ
VYUŽITÍ GRAFICKÉHO UŽIVATELSKÉHO ROZHRANÍ MATLABU VE VÝZKUMU A VÝUCE MĚŘENÍ Jan Blaška 1, Michal Krumpholc 2, Miloš Sedláček 2 1 Elektrosystem, spol. s.r.o., Brno 2 České vysoké učení technické v Praze
MS OFFICE POWER POINT 2010
MS OFFICE POWER POINT 2010 Program Power Point patří do rodiny programů Microsoft Office a slouží ke tvorbě prezentací. Prezentace je tvořena snímky, které jsou postupně zobrazovány a to buď po nějaké
Lokality a uživatelé
Administrátorský manuál TTC TELEKOMUNIKACE, s.r.o. Třebohostická 987/5 100 00 Praha 10 tel.: 234 052 111 fax.: 234 052 999 e-mail: ttc@ttc.cz http://www.ttc-telekomunikace.cz Datum vydání: 15.října 2013
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro administrátory. Verze 1.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro administrátory Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento
Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.
Zdokonalování gramotnosti v oblasti ICT Kurz MS Excel kurz 6 1 Obsah Kontingenční tabulky... 3 Zdroj dat... 3 Příprava dat... 3 Vytvoření kontingenční tabulky... 3 Možnosti v poli Hodnoty... 7 Aktualizace
Univerzální prohlížeč naměřených hodnot
Návod na používání autorizovaného software Univerzální prohlížeč naměřených hodnot V Ústí nad Labem 14. 8. 2009 Vytvořil: doc. Ing., Ph.D. 1 z 10 Obsah 1Úvod...3 2Instalace...3 3Spuštění programu...3 3.1Popis
MS Excel makra a VBA
Autor: RNDr. Obsah: MS Excel makra a VBA 1 Využití, ukázky, výhody a nevýhody... 2 2 Makra a zabezpečení... 2 2.1 Nastavení zabezpečení Excelu... 2 2.2 Uložení maker do sešitu a osobního sešitu maker...
Nastavení stránky : Levým tlačítkem myši kliknete v menu na Soubor a pak na Stránka. Ovládání Open Office.org Draw Ukládání dokumentu :
Ukládání dokumentu : Levým tlačítkem myši kliknete v menu na Soubor a pak na Uložit jako. Otevře se tabulka, v které si najdete místo adresář, pomocí malé šedočerné šipky (jako na obrázku), do kterého
3D sledování pozice vojáka v zastavěném prostoru a budově
3D sledování pozice vojáka v zastavěném prostoru a budově Úvod Programový produkt 3D sledování pozice vojáka v zastavěném prostoru a budově je navržen jako jednoduchá aplikace pro 3D zobrazení objektů
Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5
Rejstřík Úvod...1 Instalace...1 Popis funkcí...2 Hlavní obrazovka...2 Menu...3 Práce s aplikací - příklad...5 Úvod Správcovská aplikace slouží k vytvoření vstupního a zašifrovaného souboru pro odečtovou
Programujeme v softwaru Statistica - příklady
Programujeme v softwaru Statistica - příklady Newsletter Statistica ACADEMY Téma: Programování, makra, skripty Typ článku: Návody, příklady V předchozích článcích bylo vyřčeno mnoho teorie k problematice
Uživatelská příručka. 06/2018 Technické změny vyhrazeny.
Uživatelská příručka 1 OBSAH 1 ÚVOD... 3 1.1 Merbon SCADA... 3 1.1.1 K čemu program slouží...3 2 Přihlášení a odhlášení z programu... 4 3 Projekty... 5 3.1 Výběr zobrazení... 5 3.2 Schémata... 6 3.3 Grafy...
Úvod. Program ZK EANPRINT. Základní vlastnosti programu. Co program vyžaduje. Určení programu. Jak program spustit. Uživatelská dokumentace programu
sq Program ZK EANPRINT verze 1.20 Uživatelská dokumentace programu Úvod Základní vlastnosti programu Jednoduchost ovládání - umožňuje obsluhu i málo zkušeným uživatelům bez nutnosti většího zaškolování.
Připojení přístroje A4101 k aplikaci DDS2000
" Uživatelský manuál Připojení přístroje A4101 k aplikaci DDS2000 Aplikace :! Přenos a archivace dat naměřených přístrojem A4101! Přenos pochůzky vytvořené v aplikaci DDS2000 do přístroje A4101 Vlastnosti
DUM 06 téma: Tvorba makra pomocí VBA
DUM 06 téma: Tvorba makra pomocí VBA ze sady: 03 tematický okruh sady: Tvorba skript a maker ze šablony: 10 Algoritmizace a programování určeno pro: 4. ročník vzdělávací obor: 18-20-M/01 Informační technologie
FFUK Uživatelský manuál pro administraci webu Obsah
FFUK Uživatelský manuál pro administraci webu Obsah FFUK Uživatelský manuál pro administraci webu... 1 1 Úvod... 2 2 Po přihlášení... 2 3 Základní nastavení webu... 2 4 Menu... 2 5 Bloky... 5 6 Správa
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora
umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www:
Kontingenční tabulky v MS Excel 2010
Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data
Mezi přednastavenými vizualizačními styly se přepínáme některou z těchto možností:
11 Styly zobrazení Vizualizační styly umožňují zobrazit model v programu AutoCAD mnoha různými způsoby, jako technickou kresbu, čárovou kresbu, stínovanou kresbu nebo fotorealistický obrázek. Pomocí vizualizačních
Základy práce s aplikací ecba / ESOP
Základy práce s aplikací ecba / ESOP Obsah 1. SYSTÉMOVÉ POŽADAVKY A REGISTRACE... 2 Nová registrace... 2 2. SPRÁVA PROJEKTŮ... 3 Horní lišta... 3 Levé menu... 4 Operace s projekty... 4 3. PRÁCE S PROJEKTEM...
Územní plán Ústí nad Labem
mapová aplikace Územní plán Ústí nad Labem Návod na ovládání veřejné mapové aplikace: Územní plán Ústí nad Labem Logo, název Panel nástrojů Vrstvy Odkazy Výběr podkladové mapy Rychlá navigace Hledání Obsah
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM. Manuál pro editaci ŽS. Verze 1.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. PORTÁL KUDY KAM Manuál pro editaci ŽS Verze 1.0 2012 AutoCont CZ a.s. Veškerá práva vyhrazena. Tento dokument
8. OKNA 73. obr. 1 Roletové menu "Okna"
8. OKNA Obsah 8. OKNA 73 OBSAH 73 8.1 UKLÁDÁNÍ UŽIVATELSKÝCH OKEN 76 8.2 NAČÍTÁNÍ UŽIVATELSKÝCH OKEN 77 8.3 VLASTNOSTI OKEN 77 8.3.1 VLASTNOSTI ZÁLOŽKOVÉHO OKNA 78 8.4 VOLBA OKNA 78 8.5 ZRUŠENÍ OKNA 79
PALSTAT s.r.o. systémy řízení jakosti PALSTAT CAQ verze. 3.00.01.09 Kontakty 08/2010. 1 Obsah
1 Obsah 1 Obsah... 1 2 Úvod a spouštění SW Palstat CAQ... 2 2.1.1 Návaznost na další SW moduly Palstat CAQ... 2 2.2 Přihlášení do programu... 2 2.2.1 Stanovení přístupu a práv uživatele... 2 2.2.2 Spuštění
KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC
KOMPLEXNÍ VZDĚLÁVÁNÍ KATEDRA STROJNÍ SPŠSE a VOŠ LIBEREC CNC CAM CNC frézování Heidenhain Kapitola 1 - Základy ISO kódu, kompenzace rádiusu frézy a struktura zápisu NC kódu. Kapitola 2 - Seznámení s prostředím
Manuál pro mobilní aplikaci Patron-Pro. verze pro operační systém Symbian
Manuál pro mobilní aplikaci Patron-Pro verze pro operační systém Symbian 1 1. Popis Aplikace je určena pro mobilní telefony NOKIA s operačním Symbian a vybavené technologií NFC. Slouží pro správu identifikačních
Nápověda k používání mapové aplikace Katastrální mapy Obsah
Nápověda k používání mapové aplikace Katastrální mapy Obsah Práce s mapou aplikací Marushka... 2 Přehledová mapa... 3 Změna měřítka... 4 Posun mapy... 5 Druhy map... 6 Doplňkové vrstvy... 7 Vyhledávání...
Aplikované úlohy Solid Edge. SPŠSE a VOŠ Liberec. Ing. Jana Kalinová [ÚLOHA 25 NÁSTROJE II.ČÁST]
Aplikované úlohy Solid Edge SPŠSE a VOŠ Liberec Ing. Jana Kalinová [ÚLOHA 25 NÁSTROJE II.ČÁST] 1 CÍL KAPITOLY Úloha Nástroje II je pokračováním obšírné kapitoly v roletovém menu Nástroje, přičemž navazujeme
CORELDRAW SEZNÁMENÍ S PROGRAMEM. Lenka Bednaříková
CORELDRAW SEZNÁMENÍ S PROGRAMEM Lenka Bednaříková SEZNÁMENÍ S OKNEM APLIKACE Panel nabídek Panel nástrojů Panel vlastností Ukotvitelné panely Okno nástrojů Paleta barev Okno kresby Pravítko Stavový řádek
Popis rozšířujících funkcí JScriptu
Popis rozšířujících funkcí JScriptu Tato příloha obsahuje stručný popis funkcí, které rozšiřují základní funkce JScriptu. Ty usnadňují komunikaci s jádrem programu, takže není potřeba pokaždé sestavovat
Hydroprojekt CZ a.s. WINPLAN systém programů pro projektování vodohospodářských liniových staveb. HYDRONet 3. Modul SITUACE
Hydroprojekt CZ a.s. systém programů pro projektování vodohospodářských liniových staveb HYDRONet 3 W I N P L A N s y s t é m p r o g r a m ů p r o p r o j e k t o v á n í v o d o h o s p o d á ř s k ý
GEOM LITE - MANUÁL hlavní obrazovka
GEOM LITE - MANUÁL hlavní obrazovka Levý panel Pomoci levého panelu je možné vybírat aktivní vrstvy, měnit jejich průhlednost a pořadí. V dolní části je zobrazena legenda. Horní panel V horním panelu se
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ýhody programu OCAD
Program OCAD vektorový program pro počítačovou tvorbu map původně - mapy pro orientační běh (začátek 90. let), později zobecněn pro tvorbu různých druhů map autorem Hans Steinegger (+2004) firma OCAD AG,
Ignijet_2007 Externí monitor
Ignijet_2007 Externí monitor ver 2010-06-17 Úvod Externí monitor dokáže monitorovat vybrané parametry zapalování a zobrazovat je dle modifikovatelného nastavení a to jak hodnoty parametrů, tak jednoduché
UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08
UŽIVATELSKÝ MANUÁL PERSONALIZACE MOJE SODEXO V.3 2009-11-08 1 Obsah dokumentu 1 Obsah dokumentu... 2 2 Personalizovaná objednávka... 3 3 Jednoduchá... 3 4 Standardní... 4 5 Komplexní... 5 5.1 Párování