Hlavní navigace

Gtkmm: pište GTK+ v jazyce C++

Toto je první článek našeho nového seriálu o knihovně gtkmm, která slouží k výrobě grafických programů v C++ při použití prostředí GTK, známého třeba z GNOME. Dnes si řekneme pár základních údajů a něco o její historii a ukážeme si, jak si ji nainstalovat a udělat s její pomocí jednoduchý program.

Tweetni to Odměnte autora  Jak to funguje?

Pár slov o gtkmm

Co to vlastně je?

Knihovna gtkmm (přesněji rozhraní pro knihovnu GTK+)  slouží k tvorbě „klikátek“, neboli GUI – grafického uživatelského prostředí. Ač by se některým ortodoxním linuxákům (pokud takoví ještě jsou), kteří používají zásadně terminál, mohlo zdát, nejedná se o knihovnu pro Windows. Alespoň ne tak úplně. S její pomocí se totiž dají tvořit jak aplikace pro Windows, tak i pro Linux, FreeBSD, NetBSD, Solaris, Mac OS X a další. Napsána byla v C++, takže se využívá v C++ a je k dispozici pod licencí LGPL. Dá se tedy použít pro vývoj open-source i proprietárních programů.

Proč ji používat?

S gtkmm můžeme plně využít to, co pouhému C s GTK+ chybí – objektově orientované rozhraní. Například si můžeme vyrobit svůj vlastní typ widgetu. Kód programu je také kratší, než kdybychom použili přímo GTK+. Knihovnu gtkmm využívají například programy Inksca­pe, Gobby, GParted a Ardour.

Trocha historie

Historie gtkmm sahá někde na začátek tohoto tisíciletí, kdy vznikla verze s označením 1.2 (snaží se kopírovat vývoj GTK+). Původně jmenovalo gtk--, ale bohužel to „–“ nějak nebraly vyhledávače, tak změnilo název na gtkmm (GTK minus minus). Aktuální verze (2.20.0) byla vydána 29. března tohoto roku. Starají se o ni hlavně pánové Murray Cumming a Daniel Elstner.

První program

Stáhnutí knihovny

Abychom mohli vůbec program přeložit, musíme mít samotnou knihovnu. K tomu na Linuxu stačí nainstalovat jeden balíček (ostatní už tam jsou, nebo se nainstalují samy). Pokud používáte Debian nebo Ubuntu, jedná se o balíček se jménem libgtkmm-2.4-dev. Do terminálu pak stačí napsat sudo apt-get install libgtkmm-2.4-dev. Ostatní odkážu na stahovací stránku www.gtkmm­.org/en/downlo­ad.html.

Překlad

Na Linuxu si vystačíme s překladačem gcc a libovolným textovým editorem (ne že by na Linux IDE neexistovaly). Příkaz na překlad zdrojového souboru „HelloWorld.cpp“ vypadá takto:

g++ HelloWorld.cpp -o RunHelloWorld `pkg-config gtkmm-2.4 --cflags --libs`

Ve Windows použijeme třeba Dev-C++. To se dá stáhnout třeba ze SourceForge. Kdo jej ještě nikdy nepoužíval, nechť si vytvoří nový projekt, a to v menu Soubor->Nový->Projekt… Zvolíme třeba „Empty Project“, nazveme jej AhojSvete a stiskneme tlačítko Ok. Dev-C++ se ještě zeptá, kam ho má uložit, vytvoříme nový zdrojový soubor (Ctrl-N) a potom už můžeme psát kód. Na stisknutí klávesy F9 odpovídá Dev-C++ zkompilováním a následným spuštěním programu.

Samotný program

Jeden z nejjednodušších programů, které využívají gtkmm, může mít třeba pouhých 24 řádků (však také nejužitečnějším činem, kterého je schopen, je ukončení se) a vypadat takto:

#include <gtkmm.h>
class AhojSvete : public Gtk::Window {
        public:
                AhojSvete();
        protected:
                Gtk::Label napis;
};
AhojSvete::AhojSvete()
: napis("Ahoj, světe!")
{
        set_border_width(50);
        add(napis);
        napis.show();
}
int main(int argc, char *argv[]){
        Gtk::Main kit(argc, argv);
        AhojSvete okno;
        Gtk::Main::run(okno);
        return 0;
}

Jak lze vidět na screenshotu, aplikace vytvoří okno s nápisem „Ahoj, světe!“, jehož název se odvíjí podle názvu souboru, ve kterém je uložený její strojový kód. S oknem se dají dělat běžné operace, jako je minimalizace, zavření, roztahování apod. Dal by se udělat program, který by zabíral jen šest řádků, ale to už by bylo jen prázdné okno.
 

Program pod drobnohledem

První řádek je jasný – bez inkludace knihovny ji nebudeme moci použít. Třetím řádkem začneme tvořit potomka třídy Gtk::Window se jménem AhojSvete. AhojSvete obsahuje jednu instanci Gtk::Label se jménem napis. Na jedenáctém řádku začíná popis konstruktoru. Řádek dvanáctý má za úkol vytvořit popisek s textem „Ahoj, světe!“. Následuje nastavení velikosti prázdného okraje od textu (v pixelech), přidání textu do kontejneru a samotné zobrazení. Řádek číslo 21 se postará o vytvoření instance okno třídy AhojSvete a následující řádek vše spustí.

Pokračování

Příště si probereme základní widgety (udělátka – tlačítka, vstupní pole atd.). Později možná přijde na řadu tvorba vlastních udělátek a popis Glade, grafického programu určeného k návrhu grafických programů. Ještě vás poprosím o hlas v následující anketě a pro dnešek se s vámi loučím.

Anketa

Knihovna gtkmm je objektově orientovaná. Mám se snažit vysvětlit ji i neznalcům OOP?

       

Zdroje, odkazy

http://www.gtkmm­.org/en/ – domovská stránka projektu

http://en.wiki­pedia.org/wiki/gtkmm – stránka o gtkmm na anglické Wikipedii

http://glade.gno­me.org/ – domovská stránka programu Glade
Ohodnoťte jako ve škole:
Průměrná známka 1,50
Tweetni to Odměnte autora  Jak to funguje?

Školení: Mobile - web, aplikace nebo responsivní design?

DW - Školení použitelnosti
  • Proč vůbec řešit uživatele mobilních zařízení.
  • Jak přistupovat k návrhu a správě obsahu pro mobilní digitální produkty.
  • Pochopíte, že mobile je příležitost a ne omezení.

Chcete pro svůj byznys využit mobilní web, responsivní web nebo mobilní aplikaci? Pomůžeme vám se správně rozhodnout!

Další informace o školení Mobile - web, aplikace nebo responsivní design?

       

Přehled názorů

Re: Gtkmm: pište GTK+ v jazyce C++
koetchko 8. 10. 2010 07:12
Nový
└ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
Ondřej Tůma 8. 10. 2010 11:16
Nový
 
├ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
Xjmeno363 8. 10. 2010 11:52
Nový
 
│
└ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
MMN 13. 10. 2010 10:07
Nový
 
│
 
└ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
Xjmeno363 22. 10. 2010 09:44
Nový
 
├ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
sasan 8. 10. 2010 14:03
Nový
 
│
├ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
Ondřej Tůma 8. 10. 2010 14:32
Nový
 
│
└ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
peter 13. 10. 2010 14:29
Nový
 
└ 
Re: Gtkmm: pište GTK+ v jazyce C++ (vala)
koetchko 8. 10. 2010 15:10
Nový
Nerozumím...
JaJa 8. 10. 2010 07:52
Nový
└ 
Re: Nerozumím...
Tomáš Velecký 10. 10. 2010 10:55
Nový
Cestina ve zdrojovych kodech
k3b 8. 10. 2010 09:34
Nový
├ 
Re: Cestina ve zdrojovych kodech
A.S.Pergill 8. 10. 2010 09:40
Nový
├ 
Re: Cestina ve zdrojovych kodech
mikirc 8. 10. 2010 09:58
Nový
├ 
Re: Cestina ve zdrojovych kodech
s 8. 10. 2010 10:42
Nový
│
├ 
Re: Cestina ve zdrojovych kodech
Patrik Šíma 8. 10. 2010 11:03
Nový
│
└ 
Re: Cestina ve zdrojovych kodech
sasan 8. 10. 2010 14:06
Nový
├ 
Re: Cestina ve zdrojovych kodech
ded kenedy 8. 10. 2010 10:59
Nový
├ 
Re: Cestina ve zdrojovych kodech
Biktop 8. 10. 2010 13:13
Nový
├ 
Re: Cestina ve zdrojovych kodech
Lipo 8. 10. 2010 14:31
Nový
│
└ 
Re: Cestina ve zdrojovych kodech
Biktop 8. 10. 2010 15:25
Nový
│
 
├ 
Re: Cestina ve zdrojovych kodech
dannak 8. 10. 2010 17:56
Nový
│
 
└ 
Re: Cestina ve zdrojovych kodech
Lipo 8. 10. 2010 19:08
Nový
├ 
Re: Cestina ve zdrojovych kodech
Karel 8. 10. 2010 15:42
Nový
│
├ 
Re: Cestina ve zdrojovych kodech
ded kenedy 8. 10. 2010 18:41
Nový
│
│
└ 
Re: Cestina ve zdrojovych kodech
sdfsdf 9. 10. 2010 00:22
Nový
│
└ 
Re: Cestina ve zdrojovych kodech
Strec 8. 10. 2010 18:41
Nový
└ 
Re: Cestina ve zdrojovych kodech
Pavel Stěhule 9. 10. 2010 06:09
Nový
 
└ 
Re: Cestina ve zdrojovych kodech
Inkvizitor 9. 10. 2010 21:13
Nový
 
 
└ 
Re: Cestina ve zdrojovych kodech
Pavel Stěhule 9. 10. 2010 21:57
Nový
 
 
 
└ 
Re: Cestina ve zdrojovych kodech
Inkvizitor 10. 10. 2010 00:40
Nový
 
 
 
 
└ 
Re: Cestina ve zdrojovych kodech
Pavel Stěhule 10. 10. 2010 05:44
Nový
Re: Gtkmm: pište GTK+ v jazyce C++
Patrik Šíma 8. 10. 2010 11:01
Nový
└ 
Re: Gtkmm: pište GTK+ v jazyce C++
sasan 9. 10. 2010 10:42
Nový
 
└ 
Re: Gtkmm: pište GTK+ v jazyce C++
Radovan 9. 10. 2010 12:09
Nový
 
 
└ 
Re: Gtkmm: pište GTK+ v jazyce C++
sasan 9. 10. 2010 16:29
Nový
 
 
 
└ 
Re: Gtkmm: pište GTK+ v jazyce C++
Radovan 9. 10. 2010 19:49
Nový
wxWidgets
wxWidgets 9. 10. 2010 10:44
Nový
Pište GTK+ aplikace ve Vale
ip 9. 10. 2010 11:50
Nový
Poraďte prosím
Werto 10. 10. 2010 15:51
Nový
├ 
Re: Poraďte prosím
Inkvizitor 11. 10. 2010 00:30
Nový
│
└ 
Re: Poraďte prosím
Biktop 11. 10. 2010 16:17
Nový
│
 
└ 
Re: Poraďte prosím
Inkvizitor 11. 10. 2010 21:14
Nový
└ 
Re: Poraďte prosím
Inkvizitor 11. 10. 2010 01:03
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem