Title Struktura základních objeků v KTTV
Author Jindřich Houska
Date 15.11.1998
Reference houska@kolej.mff.cuni.cz
File pobs.html
Project LeNoLin

Struktura hlavních objektů v programu KTTV

V tomto dokumentu jsem se snažil pouze popsat základní strom objektů v programu. U jednotlivých objektů nepopisuji jejich metody, které podle mě budou jasnější až při psaní programu a při první práci s wxWindows. Názvy objektů, které používám jsou pouze orientační a nepočítám s tím, že by je někdo používal přesně v mnou uvedené podobě.

Class Application : public wxApp

Základním objektem aplikace je Application. V něm budou stromovitě uloženy všechny ostatní objekty. Pro naše účely bude téměř stačit to co umí objekt, jehož potomkem Application bude (wxApp).

Class MainWindow : public wxMDIParentFrame (wxFrame)

V aplikaci bude vytvořené hlavní okno programu MainWindow. To by mělo být potomkem standartního objektu wxWindows wxMDIParentFrame nebo wxFrame, to bude záležet na tom, zda budeme požadovat, aby všechna ostatní okna ležela uvnítř tohoto hlavního okna nebo se budou moci pohybovat volně po celé obrazovce.

MainMenu

Jeden z objektů, které bude hlavní okno obsahovat je MainMenu. Každý asi ví, k čemu je to dobré. Pro menu nebude nejspíš potřeba vytvářet vlastní objekt, ale bude stačit pouze instance standartního wxMenuBar.

Class ToolBar : wxToolBar

Podobný případ jako menu, je ToolBar. Nevím ještě, pokud budeme vytvářet uživatelem definovaný toolbar, jestli nám bude stačit standartní toolbar wxWindows a mít na něj pouze ukazatel neo bude potřeba vytvořit jeho potomka.

Class StatusBar : wxStatusBar

Objekt, který bude rozdělen na několik částí obsahujících různá hlášení programu, pozici kurzoru v textu nebo myše na obrazovce.

Class PresentationWindow : public wxMDIChildFrame (wxFrame)

Dalším důležitým objektem, který bude v hlavním okně je PresentationWindow. V aplikaci bude možné mít těchto oken otevřených najednou více. Je to hlavní okno dokumentu v našem programu. Mělo by obsahovat hlavní komponenty umožňující zobrazování našeho dokumentu a editaci jeho textu. Podobně jako v předchozím případu by mělo být potomkem wxMDIChildFrame, pokud budeme chtít, aby vždy bylo umístěno uvnitř hlavního okna, nebo potomkem wxFrame.

Class PresentationToolbar : public wxToolBar

WxWindows umožňují velmi jednoduše vytvářet toolbary v jakémkoliv okně, proto si myslím, že by nebylo špatné, kdyby například i v okně prezentace byl toolbar obsahující ikony pro vytváření dokumentu.

Class PresentationStatusBar : public wxStatusBar

Toto je stejný případ jako předchozí toolbar. Zde by se mohli zobrazovat i informace závislé na okně (např. poloha kurzoru).

Class PresentationCanvas : public wxScrolledWindow

Objekt PresentationCanvas je kreslící plocha presentace. Tam budou také obsaženy jednotlivé objekty dokumentu (Element, Square, atd.), které jsou dále rozepsány v dokumentu REPRSLD.HTML. Tento objekt bude asi z viditelných objektů patřit k těm nejsložitějším, v něm budou implementovány metody na vykreslení a editaci textu a vykreslení slidů. Zatím je domluveno, že na editaci slidů se otevře nové okno, pro každý slide však maximálně jedno.

Class SlideWindow : wxMDIChildFrame (wxFrame)

Okna SlideWindow by se měla používat k editaci jednotlivých slidů umístěných v hlavním textu. Toto okno se otevře po kliknutí na některý slide v PresentationWindow. Jako v předchozích případech může být potomkem buď wxMDIChildFrame nebo wxFrame. Toto okno je sice vloženo do hlavního okna dokumentu (PresentationWindow), ale je vytvářeno oknem dokumentu nebo oknem vzorkovníku při požadavku na editaci slidu.

Class SlideToolbar : wxToolBar

Speciální toolbar s tlačítky akcí použitelných při editaci slidu (stejně jako u PresentationToolbar). Pokud bude obsahovat pevné sestavení tlačítek, nebude ani potřeba tuto třídu vytvářet, ale pouze vytvořit instanci třídy wxToolBar.

Class SlideStatusBar : wxStatusBar

Obdobně jako u toolbarů nebo u třídy PresentationStatusBar.

Class SlideCanvas : wxView

Třída obsahující metody pro editaci a kreslení slidů. V něm bude nejspíše umístěna celá struktura slidu (viz. dokument REPRSLD.HTML) (pokud se neukáže výhodnější mít ji v PresentationCanvas nebo kdekoliv jinde).

Class PatternWindow : public wxDialog

Okno PatternWindow slouží k výběru vzorků do slidu a vytváření skupin těchto vzorků - vzorkovníků. Toto okno bude fungovat jako dialogové okno, které bude obsahovat záložky pro jadnotlivé vzorkovníky. V každé záložce bude seznam se vzorky ve vzorkovíku reprezentovanými texty nebo ikonami. Kromě záložek se vzorlovníky bude asi obsahovat ještě několik tlačítek.

Class PatternTabView : public wxPanelTabView

Tento objekt uchovává jednotlivé záložky odpovídající vzorkovníkům. Do každé záložky se vloží panel s objekty pro editaci vzorkovníku.

Class PatternPanel : public wxPanel

Objekt wxPanel je jako dialogové okno bez rámečku, do něj se vkládají objekty okna. V našem případě budou tyto panely vkládány do záložek v objektu PatternTabView. Do panelu bude vložen seznam vzorků a tlačítka pro otevření okna pro editaci vzorku (SlideWindow) nebo pro další práci se vzorkovníkem.

Class PatternList : public wxListCtrl

Objekt PatternList obsahuje seznam jednotlivých vzorků ze vzorkovníku. Položky v seznamu wxListCtrl jsou objekty takže není problém sem pro každý vzorek umístit ikonu vytvořenou automaticky ze slidu nebo pouze text. V případě textu by tento objekt stačilo vytvořit jako potomka wxListBox.

Dále budou v hlavním okně vytvářena okna pro výběr souboru (wxFileDialog) nebo adresáře (wxDirDialog) a další okna např. pro editaci různých nastavení programu (objekt Preferences, potomek wxDialog).

Nevím, jestli je struktura objeků v tomto dokumentu pochopitelná, názorně jako strom ji mám pro zájemce zakreslenou na svých skvělých poznámkových papírech.