GTK+ - Úvod ● ● Multiplatformní toolkit pro tvorbu GUI, nabýzí komplexní sadu widgetů pro projekty libovolné velikosti ● Free software,

Slides:



Advertisements
Podobné prezentace
Standardní knihovní funkce pro práci s textovými řetězci
Advertisements

Vytvoření menu K čemu slouží Jak se s ním pracuje
Vývoj aplikací s využitím JavaFX
Vstupy a výstupy v JavaScriptu Vstup: použitím metody prompt objektu window čtením hodnot z položek formuláře Výstup : použitím metody alert objektu window.
Příkazy Přednáška č. 4. Příkazy (statements)  Příkaz – dílčí krok programu (část kódu – zpravidla jeden řádek)  Program – posloupnost příkazů  Příkazy.
Pole, ukazatele a odkazy
BLIŽŠÍ POHLED NA TŘÍDY, DĚDIČNOST - úvod
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
Počítače a programování 1. Obsah přednášky Výjimky - základní typy výjimek Způsoby zpracování výjimek.
Preprocess Úvod do tvorby funkcí Princip preprocesoringu Direktivy preprocesoru Podmíněný překlad Základy tvorby funkcí Zjednodušený popis principu předávaní.
C# pro začátečníky Mgr. Jaromír Osčádal
Programování v C++ Cvičení.
J a v a Začínáme programovat Lucie Žoltá metody, objekty, konstruktor.
J a v a Začínáme programovat Lucie Žoltá. Odkazy - oficiální stránky (překladače, help, metody, vývojové prostředí NetBeans,...)
Chain of responsibility Martin Malý prezentace na předmět Návrhové vzory (PRG024) na MFF UK
Páté cvičení Dědičnost Interface Abstarktní třídy a metody
Seminář C cvičení STL, Trolltech Ing. Jan Mikulka.
C# - Exceptions (výjimky)
C# - funkce a procedury Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Datové typy a práce s nimi
TEXTOVÝ EDITOR.
08/04/20151 Delegáty (1) Delegát (delegate) je datový typ, který definuje signaturu metody Delegáty bývají rovněž označovány jako typo- vě bezpečné ukazatele.
Databázové systémy Přednáška č. 6 Proces návrhu databáze.
6. cvičení Polymorfismus
A1PRG - Programování – Seminář Ing. Michal Ukazatele a pole 10 Verze
Počítače a programování 1
OSNOVA: a)Programování se soubory b)Záloha databáze v souboru c) Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače a programování.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
Příklady v jazyku C – část 3
Návrhový vzor Factory v JAVA API Martin Kot Katedra informatiky VŠB – Technická univerzita Ostrava
A1PRG - Programování – Seminář Ing. Michal Standardní knihovní funkce pro vstup a výstup 12 Verze
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Dědičnost - inheritance dědičnost je jednou z forem znovupoužitelnosti dědičnost je jednou z forem znovupoužitelnosti B A Třída A je předkem třídy B Třída.
PHP PHP a MySQL - 15 Mgr. Josef Nožička IKT PHP
Knihovna GLib ● Multiplatformní nástavba standardní C knihovny (běží na Windows, Linux, Mac,...) ● Naleznete zde nástroje pro komfortní práci s řetězci.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
Šesté cvičení Výjimky Balíky.
Úvod do PHP IZI 228.
STRING A UKAZATELE. Co to je řetězec? Řetězec v Javě je samostatný objekt. Je konstantní, co znamená, že jednou vytvořený řetězec nelze změnit. Chceme-li.
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
Příklady v jazyku C – část 8. Napište program, který inicializuje 2-rozměrné pole uživatele (5 řádků, 2 sloupce) a naplní ho hodnotami (první sloupec.
Ukazatele, řetězce Přednáška č. 3. Ukazatele  Ukazatel (pointer) – typ o velikosti 4 bajty (v 32bit. systémech) pro uložení adresy objektu na který ukazuje.
Soubory BI-PA1 Programování a algoritmizace 1, ZS Katedra teoretické informatiky © Miroslav Balík Fakulta informačních technologií České vysoké.
14. června 2004Michal Ševčenko Architektura softwarového systému DYNAST Michal Ševčenko VIC ČVUT.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
C – procedury Mgr. Lenka Švancarová.
Pokročilé datové typy (struktury, unie, dynamické proměnné)
Strategy. Motivace Různé algoritmy pro stejnou akci Hromada kódu v mnoha podmínkách Důsledky  Komplexnost  Špatná čitelnost  Těžká správa kódu  Těžka.
JavaScript úvod. Jazyky webového vývojáře Dynamická stránka  aktivně mění svůj obsah v reakci na činnost uživatele  zpracování na straně serveru (PHP,
Uživatelská rozhraní Uživatelská rozhraní. knihovna Qt Trolltech (1994) v Oslu (Norsko) vytváří grafické uživatelské rozhraní (GUI) pro C++ multi-platformová.
Rezervační systém v prostředí XUL Zdeněk Novák, Petr Ondrejka.
Tvorba uživatelských rozhraní Knihovny pro tvorbu GUI Jozef Mlích – Department of Computer Graphics and Multimedia Faculty of Information Technology,
Překladače 1. Překladače a programovací jazyky © Milan Keršlágerhttp:// Obsah:
Architektura X Windows ● Model klient-server ● X display (displej)– komplexní zařízení s vlastními výstupními (obrazovka) a vstupními zařízeními (myš,
Operační systém (OS) Základní funkce operačního systému: – Zajištění komunikace s okolím. – Řízení a zpracování programů. – Údržba informací na externích.
Programování OPERÁTOR SIZEOF, FUNKCE, POLE JAKO PARAMETRY FUNKCÍ ERIK KRÁL.
Počítače a programování 2
Vypracoval / Roman Málek
Jaroslav Kudr pro OATGM
Výukový materiál zpracován v rámci projektu
Typový příklad 3 – zadání 1
Návrhový vzor Flyweight
TNPW1 JavaScript Ing. Jiří Štěpánek.
Výukový materiál zpracován v rámci projektu
Databázové systémy a SQL
Oblast platnosti identifikátoru (1)
C# přehled vlastností.
Funkce s proměnným počtem parametrů
Algoritmizace a datové struktury (14ASD)
Transkript prezentace:

GTK+ - Úvod ● ● Multiplatformní toolkit pro tvorbu GUI, nabýzí komplexní sadu widgetů pro projekty libovolné velikosti ● Free software, součást GNU Projektu ● GTK (Gimp Toolkit) – původně vyvinut pro GIMP (GNU image manipulator), stal se samostatným projektem ● OO API napsané kompletně v C

GTK+ - Úvod ● Nad knihovnami – GDK (GIMP Drawing Kit) – low level knihovna pro přístup k funkcím okeního systému na kterém běží – GDK-PIXBUF – knihovna pro manipulaci s rastrovými obrázky na straně klienta – GLIB – náhrada za libc, typový systém, základní datové struktury – PANGO – knihovna pro internacionalizaci textového výstupu ● Bindings – C++ (GTK--), Guile, Perl, Python, TOM, Ada 95, Objective C, Free Pascal, Eiffel, Java, C# ● Glade – nástroj pro grafický návrh částí GUI, generuje kostru programu

GTK+ - Základní pojmy ● widget – prvek uživatelského rozhraní (např. button, textový řádek...) – v programu je reprezentován objektem třídy GtkWidget nebo z ní odvozené třídy ● objekt – instance třídy GObject (kořen hierarchie tříd v GTK) nebo nějaké odvozené třídy (widget je speciální případ) ● okno (GTK+) – widget GtkWindow pro top level okno (hlavní okno programu, dialog, popup) ● okno (X/GDK) – zdroj X serveru, zobrazující widget na obrzovce a přijímající události; každý widget může mít jedno nebo více X oken nebo používat okno rodiče

GTK+ - První příklad #include int main( int argc, char *argv[] ) { GtkWidget *window; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_widget_show (window); gtk_main (); return 0; } gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0` Překlad:

GTK+ - První příklad ● gtk_init (&args, &argv) – inicializuje základní systémové zdroje – volá gdk_init (...) která inicializuje základní zdroje knihovny a parsuje parametry příkazového řádku (např. --display, --sync, --gtk-debug...) ● window = gtk_window_new (GTK_WINDOW_TOPLEVEL) – vytvoří nové okno – GTK_WINDOW_TOPLEVEL – okno vytvářené window managerem – defaultní rozměr je 200x200 pixelů ● gtk_widget_show (window) – zobrazí okno (předpokládá že všechny potřebné atributy jsou nastaveny) ● gtk_main () – hlavní loop GTK, který řídí obsluhu eventů ● pkg-config – skript který vrací potřebné parametry pro překlad (--cflags, --libs...)

GTK+ - Hello World #include static void hello( GtkWidget *widget, gpointer data ) { g_print ("Hello World\n"); } static gboolean delete_event( GtkWidget *widget, GdkEvent *event, gpointer data ) { g_print ("delete event occurred\n"); return TRUE; } static void destroy( GtkWidget *widget, gpointer data ) { gtk_main_quit (); } int main( int argc, char *argv[] ) { GtkWidget *window; GtkWidget *button; gtk_init (&argc, &argv); window = gtk_window_new (GTK_WINDOW_TOPLEVEL); g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); g_signal_connect (G_OBJECT (window), "destroy", G_CALLBACK (destroy), NULL); gtk_container_set_border_width (GTK_CONTAINER (window), 10); button = gtk_button_new_with_label ("Hello World"); g_signal_connect (G_OBJECT (button), "clicked", G_CALLBACK (hello), NULL); g_signal_connect_swapped (G_OBJECT (button), "clicked", G_CALLBACK (gtk_widget_destroy), G_OBJECT (window)); gtk_container_add (GTK_CONTAINER (window), button); gtk_widget_show (button); gtk_widget_show (window); gtk_main (); return 0; }

GTK+ - Signály&Handlery ● Event based programming je v GTK realizovano pomocí signálů, událostí a jejich handlerů ● Pokud nastane událost je emitován signál o nastalé události danou widgetou ● gulong g_signal_connect (gpointer* object, const gchar* sig_name, GCallback cb_func, gpointer cb_data) – umožní připojit handler signálu sig_name k objektu object který ho emituje – cb_func – obslužná funkce handleru, cb_data – data která chci obslužné fci handleru předat ● void cb_func (GtkWidget* widget,..., gpointer cb_data) ● gulong g_signal_connect_swapped (gpointer* object, const gchar* sig_name, GCallback cb_func, gpointer cb_data) – prohodí parametry object a cb_data při volání cb_func – používá se především pro volání GTK+ funkcí jako handlerů

GTK+ - Události&Handlery ● Speciální sada událostí, která odpovídá X událostem – event, button_press_event, button_release_event, delete_event, destroy_event, focus_in_event, focus_out_event... – handlery signálů těchto událostí mají speciální sintaxi – gint cb_func (GtkWidget* widget, GdkEvent* event, gpointer cb_data) ● GdkEvent – C union, struktura závisí na dané události ● vrací TRUE když událost obsloužila a nemá být dále propagována widgetům předků ● vrací FALSE pokud se má událost propagovat dále

GTK+ - Hello World ● static void hello (GtkWidget* widget, gpointer cb_data) – callback funkce která je volána při stisknutí butonu ● static gboolean delete_event (GtkWidget* widget, GdkEvent* event, gpointer cb_data) – callback funkce, která je volána při volání události “delet_event” (Xová událost) musíme mít speciální handler – vracíme TRUE událost již není dále zpracována ● static void destroy (GtkWidget* widget, gpointer cb_data) – callback funkce která ukončí aplikaci pomocí volání gtk_main_quit () – k widgetu window připojujeme handlery dvou signálů – “delete_event” je emitován když chceme po window manageru zrušit okno nebo pokud je voláno gtk_destroy_widget (...) – “destroy” je emitováno pokud delete_event vrátí FALSE – G_OBJECT, G_CALLBACK jsou makra pro správné přetypování g_signal_connect (G_OBJECT (window), "delete_event", G_CALLBACK (delete_event), NULL); g_signal_connect (G_OBJECT (window), "destroy",G_CALLBACK (destroy), NULL);

GTK+ - Hello World ● gtk_container_set_border_width (GTK_CONTAINER (window), 10) – nastavý atribut contajner objektu – okraj o velikosti 10 pixelů – GTK_CONTAINER makro pro správné přetypování ● button = gtk_button_new_with_label (“Hello World”) – vytvoří nový buton s nápisem “Hello World” – vytvoří strukturu GtkWidget a správně ji nastaví ● g_signal_connect (G_OBJECT (button), “clicked”, G_CALLBACK (hello), NULL) – nainstaluje handler signálu “clicked” (buton je zmáčknut) – vypíše Hello Word ● g_signal_connect_swapped (G_OBJECT (button), “clicked”, G_CALLBACK (gtk_widget_destroy), G_OBJECT (window)) – naistaluje další handler zmáčknutí butonku, který způsobí ukončení aplikace – příklad použití g_signal_connect_swapped, který přehodí parametry do gtk_widget_destroy (...)

GTK+ - Hello World ● gtk_container_add (GTK_CONTAINER (window), button) – button bude umístěn do okna (kontajneru) window ● gtk_widget_show (button); gtk_widget_show (window) – zobraz buton v okně

GTK+ - Handlery Signálů podruhé ● Návratová hodnota g_connect_signal je gulong. Ta přiřazuje handleru (callback funkci) jednoznačné ID. ● void g_signal_handler_disconnect (gpointer object, gulong id) – odstraní handler jehož ID je id ● void g_signal_handler_block (gpointer object, gulong id) – pozastaví provádění handleru signálu ● void g_signal_handler_unblock (gpointer object, gulong id) – povolí provádění handleru

GTK+ - Hello World Advanced ● Juk na zdrojáky v jiném okně