mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 15:14:35 +00:00
1601 lines
56 KiB
C
1601 lines
56 KiB
C
#include "maturita.h"
|
||
|
||
/* ------------------------------------------------------------------ */
|
||
/* Maturitní četba: George Orwell – 1984 */
|
||
/* ------------------------------------------------------------------ */
|
||
|
||
typedef struct {
|
||
const char *q;
|
||
const char *opts[4];
|
||
int correct;
|
||
const char *expl;
|
||
} LitQ;
|
||
|
||
static const LitQ lit_qs[] = {
|
||
{
|
||
"Kdo je hlavní hrdina románu a co dělá?",
|
||
{
|
||
"Winston Smith – přepisuje historii na Ministerstvu pravdy",
|
||
"O'Brien – řídí Ministerstvo lásky",
|
||
"Emmanuel Goldstein – vede Bratrstvo",
|
||
"Winston Smith – velí Policii myšlení",
|
||
},
|
||
0,
|
||
"Winston Smith je vnější člen strany, který na Ministerstvu pravdy "
|
||
"upravuje staré záznamy a novinové články.",
|
||
},
|
||
{
|
||
"Ve kterém fiktivním státě se děj odehrává?",
|
||
{"V Eurasii", "V Oceánii", "Ve Východasii", "V Angsocu"},
|
||
1,
|
||
"Příběh se odehrává v Oceánii, v provincii Letopočet 1 (bývalá "
|
||
"Anglie), jejímž hlavním městem je Londýn.",
|
||
},
|
||
{
|
||
"Co znamená slogan „VÁLKA JE MÍR, SVOBODA JE OTROCTVÍ, "
|
||
"NEVĚDOMOST JE SÍLA“?",
|
||
{
|
||
"Jsou to tři zásady Bratrstva",
|
||
"Jsou to názvy ministerstev",
|
||
"Jde o hesla prolety",
|
||
"Jsou to paradoxní hesla, kterými strana ospravedlňuje útlak",
|
||
},
|
||
3,
|
||
"Strana používá dvojité myšlení: hesla znějí vznešeně, ale ve "
|
||
"skutečnosti obhajují válku, otroctví a nevědomost.",
|
||
},
|
||
{
|
||
"Kdo je Velký bratr a je reálnou osobou?",
|
||
{
|
||
"Skutečný vůdce Bratrstva",
|
||
"Winstonův nadřízený na ministerstvu",
|
||
"Symbol všemocné moci a kultu osobnosti; možná vůbec neexistuje",
|
||
"O'Brienův pseudonym",
|
||
},
|
||
2,
|
||
"Velký bratr je tvář režimu. Není jasné, zda jde o živou osobu, "
|
||
"nebo jen o symbol, který drží strach a poslušnost.",
|
||
},
|
||
{
|
||
"Co je Newspeak (novořeč) a proč ho strana zavádí?",
|
||
{
|
||
"Tajná řeč Bratrstva",
|
||
"Zjednodušená angličtina omezující slovní zásobu, aby nešlo "
|
||
"vyslovit zakázané myšlenky",
|
||
"Úřední jazyk prolety",
|
||
"Šifra Policie myšlení",
|
||
},
|
||
1,
|
||
"Newspeak neustále ubírá slova. Když pro svobodu nebo odpor "
|
||
"neexistuje slovo, nelze o nich ani myslet.",
|
||
},
|
||
{
|
||
"Co je teleobrazovka (telescreen) a jak funguje?",
|
||
{
|
||
"Televize určená jen pro zábavu",
|
||
"Zařízení, které vysílá i sleduje; nelze ji úplně vypnout",
|
||
"Rozhlasová stanice",
|
||
"Počítač Ministerstva pravdy",
|
||
},
|
||
1,
|
||
"Telescreen funguje obousměrně – neustále sleduje občany. Vypnout "
|
||
"lze jen zvuk, obraz běží dál.",
|
||
},
|
||
{
|
||
"Jak se jmenují tři supervelmoci světa 1984?",
|
||
{
|
||
"Oceánie, Eurasie a Východasie",
|
||
"Oceánie, Evropa a Asie",
|
||
"Anglie, Eurasie a Ostasie",
|
||
"Oceánie, Východasie a Afrika",
|
||
},
|
||
0,
|
||
"Svět je rozdělen na tři státy ve věčném, ale nerozhodném "
|
||
"konfliktu: Oceánii, Eurasii a Východasii.",
|
||
},
|
||
{
|
||
"Čím se zabývá Ministerstvo pravdy?",
|
||
{
|
||
"Vede válku",
|
||
"Dohlíží na morálku a sňatky",
|
||
"Upravuje a přepisuje historii, noviny a archivy",
|
||
"Rozděluje potraviny",
|
||
},
|
||
2,
|
||
"Ministerstvo pravdy vyrábí „pravdu“ – Winston v něm přepisuje "
|
||
"staré záznamy tak, aby vždy odpovídaly současné linii strany.",
|
||
},
|
||
{
|
||
"K čemu slouží Ministerstvo lásky?",
|
||
{
|
||
"Zajišťuje sňatky a lásku",
|
||
"Je to budova bez oken, kde se mučí a likvidují nepřátelé strany",
|
||
"Vyrábí zbraně",
|
||
"Školí děti",
|
||
},
|
||
1,
|
||
"Ministerstvo lásky je opakem svého názvu – sídlí tam mučírny a "
|
||
"nachází se v něm i obávaná místnost 101.",
|
||
},
|
||
{
|
||
"V čem je paradox Ministerstva hojnosti?",
|
||
{
|
||
"Má na starosti hospodářství, ale ve skutečnosti drží lidi "
|
||
"v nedostatku",
|
||
"Rozdává jídlo a zboží zdarma",
|
||
"Zajišťuje dostatek pro všechny",
|
||
"Starají se o něj prolety",
|
||
},
|
||
0,
|
||
"Ministerstvo hojnosti plánuje výrobu, ale ekonomika je záměrně "
|
||
"nastavena tak, aby lidé žili v trvalém nedostatku.",
|
||
},
|
||
{
|
||
"Co je Ministerstvo míru a čím se zabývá?",
|
||
{
|
||
"Uzavírá mírové smlouvy",
|
||
"Dojednává příměří",
|
||
"Ve skutečnosti vede válku",
|
||
"Velí Policii myšlení",
|
||
},
|
||
2,
|
||
"Název je přesně opačný: Ministerstvo míru řídí válku, protože "
|
||
"trvalý válečný stav pomáhá udržet moc strany.",
|
||
},
|
||
{
|
||
"Kdo je Julie a jaký vztah s ní Winston naváže?",
|
||
{
|
||
"Winstonova žena",
|
||
"Mladá členka strany, s níž Winston prožije tajnou milostnou "
|
||
"aféru",
|
||
"O'Brienova asistentka",
|
||
"Proletka a obchodnice",
|
||
},
|
||
1,
|
||
"Julie pracuje v oddělení beletrie a naoko je vzornou členkou "
|
||
"strany. S Winstonem vytvoří tajný milostný vztah.",
|
||
},
|
||
{
|
||
"Proč je vztah Winstona a Julie zakázaný?",
|
||
{
|
||
"Strana zakazuje lásku a sexualitu jako zločin; vztah je navíc "
|
||
"tajný",
|
||
"Julie je vdaná za člena vnitřní strany",
|
||
"Winston je jejím nadřízeným",
|
||
"Julie patří k proletům",
|
||
},
|
||
0,
|
||
"Strana potlačuje citové a sexuální vazby, protože oddanost má "
|
||
"patřit jen straně. Tajný vztah je proto dvojnásob nebezpečný.",
|
||
},
|
||
{
|
||
"Kdo je O'Brien a jakou roli hraje v příběhu?",
|
||
{
|
||
"Skutečný vůdce Bratrstva",
|
||
"Vysoce postavený člen vnitřní strany, který Winstona nakonec "
|
||
"mučí a „vyléčí“",
|
||
"Winstonův přítel z dětství",
|
||
"Proletářský básník",
|
||
},
|
||
1,
|
||
"Winston věří, že O'Brien je odbojář. Ve skutečnosti je to věrný "
|
||
"člen vnitřní strany, který ho dostane do místnosti 101.",
|
||
},
|
||
{
|
||
"Co je Bratrstvo a existuje vůbec?",
|
||
{
|
||
"Skutečná armáda Oceánie",
|
||
"Náboženská organizace",
|
||
"Údajná tajná organizace odporu; není jisté, zda existuje",
|
||
"Odbory prolety",
|
||
},
|
||
2,
|
||
"Bratrstvo zmiňuje Goldstein i O'Brien, ale kniha nikdy nepotvrdí, "
|
||
"že doopravdy existuje – může jít o past strany.",
|
||
},
|
||
{
|
||
"Kdo je Emmanuel Goldstein?",
|
||
{
|
||
"Ministr pravdy",
|
||
"Oficiální nepřítel státu a údajný vůdce Bratrstva",
|
||
"Winstonův kolega",
|
||
"Velký bratrův dvojník",
|
||
},
|
||
1,
|
||
"Goldstein je terčem dvouminutovky nenávisti. Má ztělesňovat "
|
||
"nepřítele, proti kterému strana sjednocuje občany.",
|
||
},
|
||
{
|
||
"Co je dvojité myšlení (doublethink)?",
|
||
{
|
||
"Schopnost myslet ve dvou jazycích",
|
||
"Zdvojení osobnosti",
|
||
"Schopnost věřit dvěma protikladným tvrzením zároveň",
|
||
"Tajné zapisování myšlenek",
|
||
},
|
||
2,
|
||
"Dvojité myšlení je jádro stranické ideologie – člověk přijme i "
|
||
"zjevné rozpory, jako „válka je mír“.",
|
||
},
|
||
{
|
||
"Proč strana neustále přepisuje minulost?",
|
||
{
|
||
"Aby opravila chyby v archivech",
|
||
"Aby měla vždy pravdu a nepřítel jí nemohl dokázat opak",
|
||
"Aby ušetřila papír",
|
||
"Aby potěšila prolety",
|
||
},
|
||
1,
|
||
"Kdo ovládá minulost, ovládá i budoucnost. Přepisováním historie "
|
||
"strana udržuje absolutní kontrolu nad pravdou.",
|
||
},
|
||
{
|
||
"Co je zločin myšlení (thoughtcrime)?",
|
||
{
|
||
"Pouhá myšlenka nebo názor, který se nelíbí straně",
|
||
"Krádež státního majetku",
|
||
"Nelegální obchod",
|
||
"Opomenutí dvouminutovky",
|
||
},
|
||
0,
|
||
"Strana trestá už samotné myšlenky. Winston se proviní tím, že si "
|
||
"do deníku napíše „Dolů s Velkým bratrem“.",
|
||
},
|
||
{
|
||
"Kdo je pan Charrington a jaké je jeho skutečné postavení?",
|
||
{
|
||
"Winstonův přítel a majitel hospody",
|
||
"Proletářský básník",
|
||
"Zdánlivě starý majitel obchodu, ve skutečnosti agent Policie "
|
||
"myšlení",
|
||
"Člen Bratrstva",
|
||
},
|
||
2,
|
||
"Charrington Winstonovi pronajme pokoj bez teleobrazovky, ale "
|
||
"právě on nakonec oba milence udá.",
|
||
},
|
||
{
|
||
"Co je místnost 101?",
|
||
{
|
||
"Winstonova cela na policii",
|
||
"Skladiště knih",
|
||
"Místnost, ve které každého čeká jeho největší strach",
|
||
"Zasedací místnost vnitřní strany",
|
||
},
|
||
2,
|
||
"Místnost 101 je vrcholný mučicí nástroj. Winstonovi v ní hrozí "
|
||
"krysy – jeho největší fobie.",
|
||
},
|
||
{
|
||
"Jak skončí vztah Winstona a Julie?",
|
||
{
|
||
"Utečou spolu do Eurasie",
|
||
"Vezmou se a žijí svobodně",
|
||
"Winston se stane členem Bratrstva",
|
||
"Zradí se a nakonec se přestanou milovat",
|
||
},
|
||
3,
|
||
"Oba jsou po mučení zlomení a vzájemně se zradí. Na konci už "
|
||
"k sobě nic necítí.",
|
||
},
|
||
{
|
||
"Co znamená závěrečná věta „Miloval Velkého bratra“?",
|
||
{
|
||
"Winstonův vzdor se změnil v pokornou lásku k režimu",
|
||
"Winston se stal novým vůdcem",
|
||
"Byl to jen Winstonův sen",
|
||
"Julie mu to řekla",
|
||
},
|
||
0,
|
||
"Winston byl vnitřně zlomen. Přestal být sám sebou a nakonec "
|
||
"režim opravdu přijal za svůj.",
|
||
},
|
||
{
|
||
"Které tvrzení NENÍ jedním z hlavních témat románu?",
|
||
{
|
||
"Moc a absolutní kontrola",
|
||
"Pravda a přepisování historie",
|
||
"Svoboda a identita",
|
||
"Idylický venkovský život",
|
||
},
|
||
3,
|
||
"1984 je temná antiutopie. Hlavními tématy jsou moc, kontrola, "
|
||
"manipulace s pravdou a ztráta svobody, ne venkovská idyla.",
|
||
},
|
||
{
|
||
"V jakém roce byl román 1984 poprvé vydán?",
|
||
{"1936", "1949", "1954", "1984"},
|
||
1,
|
||
"Román vyšel v roce 1949; letopočet 1984 označuje blízkou "
|
||
"budoucnost, do níž Orwell příběh zasadil.",
|
||
},
|
||
{
|
||
"Které další Orwellovo dílo se dá s 1984 srovnat?",
|
||
{"Farma zvířat", "Velký Gatsby", "Zločin a trest", "Babička"},
|
||
0,
|
||
"Obě Orwellova díla varují před totalitou. Farma zvířat ji líčí "
|
||
"alegoricky pomocí zvířat, 1984 očima jedince.",
|
||
},
|
||
{
|
||
"Co je „dvouminutovka nenávisti“?",
|
||
{
|
||
"Krátká každodenní akce, při níž občané společně nenávidí "
|
||
"Goldsteina a nepřítele",
|
||
"Pravidelná modlitba ke Velkému bratrovi",
|
||
"Sportovní přestávka ve škole",
|
||
"Porada vedení ministerstva",
|
||
},
|
||
0,
|
||
"Slouží k uvolnění a přesměrování agrese občanů na nepřítele "
|
||
"státu, čímž strana posiluje svou moc.",
|
||
},
|
||
{
|
||
"Proč je podle knihy válka pro systém nezbytná?",
|
||
{
|
||
"Přináší mír a blahobyt",
|
||
"Udržuje strach, spotřebovává výrobu a zachovává chudobu "
|
||
"i hierarchii",
|
||
"Rozvíjí vědu a techniku",
|
||
"Sjednocuje vládu s prolety",
|
||
},
|
||
1,
|
||
"Trvalá válka pohlcuje nadbytečnou produkci a udržuje lidi ve "
|
||
"strachu i chudobě, takže se nemohou vzbouřit.",
|
||
},
|
||
{
|
||
"Jaký je rozdíl mezi vnějšími členy strany a prolety?",
|
||
{
|
||
"Proleti mají více práv než členové strany",
|
||
"Vnější členové jsou dozíráni, kdežto proleti žijí v chudobě "
|
||
"a strana o ně nestojí",
|
||
"Není mezi nimi žádný rozdíl",
|
||
"Proleti tvoří vedení strany",
|
||
},
|
||
1,
|
||
"Proleti tvoří asi 85 % obyvatel. Žijí v bídě a jsou považováni "
|
||
"za neškodné, dokud si neuvědomí svou sílu.",
|
||
},
|
||
{
|
||
"Jak strana kontroluje sexualitu a osobní vztahy?",
|
||
{
|
||
"Podporuje volnou lásku a nezávislost",
|
||
"Potlačuje lásku a sexualitu, děti vede k oddanosti straně",
|
||
"Zakazuje veškerá manželství",
|
||
"Povoluje vztahy jen s prolety",
|
||
},
|
||
1,
|
||
"Strana chce, aby veškerá oddanost a energie patřily jí. Proto "
|
||
"podporuje zdrženlivost a vede děti v Antisexuální lize mládeže.",
|
||
},
|
||
{
|
||
"Co symbolizuje papírové těžítko, které si Winston koupí?",
|
||
{
|
||
"Jeho nenávist ke Goldsteinovi",
|
||
"Kousek krásy a minulosti, kterou už nelze vrátit",
|
||
"Moc Velkého bratra",
|
||
"Lásku k Julii",
|
||
},
|
||
1,
|
||
"Těžítko je drobný, krásný předmět z minulosti. Pro Winstona "
|
||
"ztělesňuje svět, který strana zničila.",
|
||
},
|
||
{
|
||
"Jaké poselství chtěl Orwell románem nejspíš předat?",
|
||
{
|
||
"Varování před totalitou a ztrátou svobody i pravdy",
|
||
"Oslavu technického pokroku",
|
||
"Návod, jak založit stát",
|
||
"Kritiku sportu a zábavy",
|
||
},
|
||
0,
|
||
"1984 je varování: když lidé přestanou bránit pravdu a svobodu, "
|
||
"mohou o ně nenávratně přijít.",
|
||
},
|
||
};
|
||
|
||
#define LIT_NQ ((int)G_N_ELEMENTS(lit_qs))
|
||
|
||
static const LitQ fuks_qs[] = {
|
||
{
|
||
"Kdo je hlavní postava románu a jaké je jeho povolání?",
|
||
{
|
||
"Pan Kopfrkingl – zaměstnanec krematoria",
|
||
"Willi Reinke – nacistický důstojník",
|
||
"Dr. Bettelheim – psychiatr",
|
||
"Pan Kopfrkingl – ředitel školy",
|
||
},
|
||
0,
|
||
"Hlavní postavou je pan Kopfrkingl, spořádaný zaměstnanec krematoria, "
|
||
"který svou práci vnímá jako poslání.",
|
||
},
|
||
{
|
||
"V jakém prostředí pan Kopfrkingl pracuje?",
|
||
{"V nemocnici", "V krematoriu", "V divadle", "Ve škole"},
|
||
1,
|
||
"Kopfrkingl pracuje v krematoriu, kde má na starosti zpopelňování "
|
||
"zemřelých.",
|
||
},
|
||
{
|
||
"V jaké historické době se děj románu odehrává?",
|
||
{
|
||
"Za první republiky",
|
||
"Za protektorátu Čechy a Morava (před a během 2. světové války)",
|
||
"Po roce 1989",
|
||
"V 19. století",
|
||
},
|
||
1,
|
||
"Román se odehrává v době nastupujícího nacismu a protektorátu, "
|
||
"který umožňuje Kopfrkinglovu proměnu.",
|
||
},
|
||
{
|
||
"Jak se proměňuje hlavní hrdina v průběhu příběhu?",
|
||
{
|
||
"Z laskavého spořádaného muže v chladnokrevného vraha a fanatika",
|
||
"Z vraha v kajícníka",
|
||
"Z chudáka v boháče",
|
||
"Vůbec se nemění",
|
||
},
|
||
0,
|
||
"Kopfrkingl se postupně mění v člověka, který vraždí své blízké a "
|
||
"ospravedlňuje to vyšším dobrem.",
|
||
},
|
||
{
|
||
"Jaký je vztah pana Kopfrkingla k jeho rodině na začátku knihy?",
|
||
{
|
||
"Nenávidí je",
|
||
"Je starostlivý, zdvořilý a především spořádaný",
|
||
"S rodinou se nezná",
|
||
"Týrá je",
|
||
},
|
||
1,
|
||
"Na začátku působí jako vzorný manžel a otec, posedlý řádem a "
|
||
"zdvořilostí.",
|
||
},
|
||
{
|
||
"Jak se jmenuje manželka pana Kopfrkingla a jaký je jejich vztah?",
|
||
{
|
||
"Marie – milují se",
|
||
"Lakmé – formálně zdvořilý, chladný vztah",
|
||
"Zina – nenávidí se",
|
||
"Julie – jsou rozvedení",
|
||
},
|
||
1,
|
||
"Manželka se jmenuje Lakmé. Jejich vztah je spíš zdvořilá forma než "
|
||
"opravdová láska.",
|
||
},
|
||
{
|
||
"Jaký je vztah pana Kopfrkingla k dětem, Zině a Mílovi?",
|
||
{
|
||
"Miluje je víc než sebe",
|
||
"Chová se k nim odtažitě, jako k součásti řádu",
|
||
"Nevidí je",
|
||
"Jsou adoptované",
|
||
},
|
||
1,
|
||
"K dětem je odměřený; vnímá je spíš jako součást svého spořádaného "
|
||
"světa než jako milované bytosti.",
|
||
},
|
||
{
|
||
"Kdo je Willi Reinke a jakou roli hraje v proměně hlavního hrdiny?",
|
||
{
|
||
"Soused z krematoria",
|
||
"Německý úředník a bývalý voják, který Kopfrkingla ovlivní",
|
||
"Kopfrkinglův bratr",
|
||
"Lékař v nemocnici",
|
||
},
|
||
1,
|
||
"Reinke je Němec, který v Kopfrkinglovi probudí touhu po árijském "
|
||
"původu a kariéře.",
|
||
},
|
||
{
|
||
"Jak Willi Reinke ovlivňuje Kopfrkinglovo smýšlení?",
|
||
{
|
||
"Přesvědčí ho, aby se přidal k nacistům a byl „lepší“",
|
||
"Nabádá ho k odchodu do zahraničí",
|
||
"Učí ho tibetštinu",
|
||
"Nijak ho neovlivní",
|
||
},
|
||
0,
|
||
"Reinke v něm posiluje antisemitismus a touhu po moci a uznání "
|
||
"v novém režimu.",
|
||
},
|
||
{
|
||
"Jaký je Kopfrkinglův vztah ke krematoriu a smrti obecně?",
|
||
{
|
||
"Bojí se jich",
|
||
"Má je rád, kremaci vnímá jako krásný obřad osvobození",
|
||
"Nechce tam pracovat",
|
||
"Je mu to lhostejné",
|
||
},
|
||
1,
|
||
"Smrt a kremace jsou pro něj estetickým a filozofickým rituálem, ne "
|
||
"něčím hrůzným.",
|
||
},
|
||
{
|
||
"Jak pan Kopfrkingl vnímá a popisuje proces kremace?",
|
||
{
|
||
"Jako nutné zlo",
|
||
"Jako vznešený, očistný obřad, o kterém rád mluví",
|
||
"Jako hroznou povinnost",
|
||
"Nikdy o něm nemluví",
|
||
},
|
||
1,
|
||
"Kopfrkingl o kremaci hovoří básnivě a s nadšením, což ostře "
|
||
"kontrastuje s hrůzou jeho činů.",
|
||
},
|
||
{
|
||
"Jaká je symbolika krematoria v celém románu?",
|
||
{
|
||
"Symbol naděje",
|
||
"Smrt, odlidštění a zvrácená ideologie, která z lidí dělá jen těla",
|
||
"Symbol lásky",
|
||
"Symbol mládí",
|
||
},
|
||
1,
|
||
"Krematorium je ústředním symbolem – odhaluje chladnou mašinerii "
|
||
"smrti, do níž se ideologie snaží proměnit člověka.",
|
||
},
|
||
{
|
||
"Co symbolizuje Kopfrkinglova záliba v tibetské Knize mrtvých?",
|
||
{
|
||
"Jeho touhu po vědění a zvrácenou víru ve vlastní výjimečnost",
|
||
"Historický zájem o Asii",
|
||
"Strach ze smrti",
|
||
"Lásku k manželce",
|
||
},
|
||
0,
|
||
"Kopfrkingl si z ní vybírá jen to, co se hodí k ospravedlnění jeho "
|
||
"činů a jeho pocitu vyvolenosti.",
|
||
},
|
||
{
|
||
"Jak se v knize projevuje motiv buddhismu a reinkarnace?",
|
||
{
|
||
"Kopfrkingl jimi ospravedlňuje smrt jako „osvobození duše“",
|
||
"Postavy se modlí k Bohu",
|
||
"Nikde se neobjevuje",
|
||
"Je to hlavní téma manželky",
|
||
},
|
||
0,
|
||
"Reinkarnace a „osvobození od utrpení“ se v jeho mysli zvrhávají "
|
||
"v právo zabíjet.",
|
||
},
|
||
{
|
||
"Jak Kopfrkingl zneužívá filozofické a náboženské myšlenky?",
|
||
{
|
||
"Ospravedlňuje jimi vlastní vraždy jako službu vyššímu dobru",
|
||
"Pomáhá jimi druhým",
|
||
"Odmítá je",
|
||
"Používá je jen v práci",
|
||
},
|
||
0,
|
||
"Z vznešených idejí si staví masku, za kterou skrývá krutost a touhu "
|
||
"po moci.",
|
||
},
|
||
{
|
||
"Jak se postupně mění Kopfrkinglova mluva a způsob vyjadřování?",
|
||
{
|
||
"Začíná mluvit vulgárně",
|
||
"Mění se v patetickou, ráznou řeč plnou frází o řádu a osvobození",
|
||
"Přestane mluvit",
|
||
"Od začátku mluví jen německy",
|
||
},
|
||
1,
|
||
"Jeho zdvořilá mluvnost se postupně mění v ideologické fráze a "
|
||
"bezcitný patos.",
|
||
},
|
||
{
|
||
"Jaké opakující se fráze nebo návyky pana Kopfrkingla si všímáš?",
|
||
{
|
||
"Neustále se ptá na počasí",
|
||
"Opakuje „to je takové“, „vidíte“ a lpí na zdvořilosti",
|
||
"Zpívá si",
|
||
"Mluví jen o jídle",
|
||
},
|
||
1,
|
||
"Opakující se fráze a zdvořilostní obraty vytvářejí rytmus, který je "
|
||
"čím dál tím děsivější.",
|
||
},
|
||
{
|
||
"Jaký je vypravěčský styl románu (ich-forma, er-forma)?",
|
||
{
|
||
"Er-forma bez vnitřního světa",
|
||
"Ich-forma – vypráví sám Kopfrkingl",
|
||
"Deníková forma",
|
||
"Forma dopisů",
|
||
},
|
||
1,
|
||
"Ich-forma je klíčová: čtenář sleduje svět zkreslený Kopfrkinglovou "
|
||
"myslí a sám postupně propadá jeho logice.",
|
||
},
|
||
{
|
||
"Jak se v knize projevuje černý humor a groteska?",
|
||
{
|
||
"Vážné scény jsou líčeny s odstupem a absurditou",
|
||
"Kniha je čistě vážná",
|
||
"Humor je jediný žánr",
|
||
"V knize se neprojevuje",
|
||
},
|
||
0,
|
||
"Groteskní kontrast mezi slavnostním vyprávěním a hrůzou vytváří "
|
||
"mrazivý černý humor.",
|
||
},
|
||
{
|
||
"Jak kontrastuje banalita každodenního života s hrůzností činů?",
|
||
{
|
||
"Vůbec nesouvisí",
|
||
"Všední detaily a zdvořilost činí hrůzu ještě děsivější",
|
||
"Hrůza je potlačena",
|
||
"Den je popsán jen jednou",
|
||
},
|
||
1,
|
||
"Fuks zesiluje otřes tím, že vraždění je popisováno stejně klidně "
|
||
"jako ranní káva nebo kremace.",
|
||
},
|
||
{
|
||
"Jak se v knize projevuje antisemitismus?",
|
||
{
|
||
"Od začátku otevřeně",
|
||
"Postupně, nejdřív v náznacích a vlivem Reinkeho",
|
||
"Nikdy",
|
||
"Jen mimochodem v závěru",
|
||
},
|
||
1,
|
||
"Kopfrkinglův antisemitismus se rodí pozvolna a je živen dobovou "
|
||
"atmosférou i Reinkem.",
|
||
},
|
||
{
|
||
"Jak nacistická ideologie postupně prostupuje Kopfrkinglovo myšlení?",
|
||
{
|
||
"Odmítá ji",
|
||
"Přijímá ji jako vyšší řád a ospravedlnění vlastní výjimečnosti",
|
||
"Nerozumí jí",
|
||
"Zajímá ho jen hudba",
|
||
},
|
||
1,
|
||
"Ideologie se mu stává nástrojem kariéry i vnitřním ospravedlněním "
|
||
"vražd.",
|
||
},
|
||
{
|
||
"Jak se mění Kopfrkinglův vztah k manželce kvůli jejímu původu?",
|
||
{
|
||
"Začne ji milovat víc",
|
||
"Odcizí se jí, protože je židovského původu",
|
||
"Nijak se nemění",
|
||
"Odstěhují se od sebe",
|
||
},
|
||
1,
|
||
"Kvůli jejímu původu ji přestane vnímat jako rovnocennou a nakonec "
|
||
"ji zabije.",
|
||
},
|
||
{
|
||
"Co se stane s Kopfrkinglovou rodinou ve druhé polovině románu?",
|
||
{
|
||
"Odstěhují se",
|
||
"Kopfrkingl svou ženu i děti zabije",
|
||
"Všichni přežijí",
|
||
"Zachrání je Reinke",
|
||
},
|
||
1,
|
||
"Pod vlivem ideologie Kopfrkingl vyvraždí vlastní rodinu a považuje "
|
||
"to za „osvobození“.",
|
||
},
|
||
{
|
||
"Jak Kopfrkingl zdůvodňuje vraždu vlastní ženy?",
|
||
{
|
||
"Zlobila se na něj",
|
||
"Že je židovského původu a překáží jeho kariéře",
|
||
"Že ho podváděla",
|
||
"Nijak ji nezdůvodňuje",
|
||
},
|
||
1,
|
||
"Svou ženu zabije mimo jiné proto, že je židovského původu, tedy "
|
||
"„méněcenná“ pro nový režim.",
|
||
},
|
||
{
|
||
"Jakým způsobem Kopfrkingl vraždí své blízké?",
|
||
{
|
||
"Ve zlosti a afektu",
|
||
"Chladně a s pocitem, že je „osvobozuje od utrpení“",
|
||
"Omylem",
|
||
"Na příkaz úřadů",
|
||
},
|
||
1,
|
||
"Vraždí klidně, jako by vykonával bohulibý úkon, a svou krutost si "
|
||
"vykládá jako soucit.",
|
||
},
|
||
{
|
||
"Jak souvisí přesvědčení o „osvobození“ s jeho vražednými činy?",
|
||
{
|
||
"Dává mu zdání vyššího smyslu, kterým si vraždy ospravedlňuje",
|
||
"Nemá s nimi nic společného",
|
||
"Brání mu v zabíjení",
|
||
"Je to jen náhodná fráze",
|
||
},
|
||
0,
|
||
"Zvrácená víra v osvobození od utrpení mu slouží jako mravní alibi "
|
||
"pro vraždy.",
|
||
},
|
||
{
|
||
"Jaký je vztah pana Kopfrkingla k postavě Dr. Bettelheima?",
|
||
{
|
||
"Obdivuje ho a rád s ním mluví",
|
||
"Nenávidí ho",
|
||
"Nikdy se nepotkají",
|
||
"Je to jeho nadřízený",
|
||
},
|
||
0,
|
||
"S doktorem Bettelheimem vede Kopfrkingl své „filozofické“ rozhovory "
|
||
"o smrti a lidskosti.",
|
||
},
|
||
{
|
||
"Jak se mění společenské postavení pana Kopfrkingla v době okupace?",
|
||
{
|
||
"Upadá",
|
||
"Stoupá – díky režimu a touze po árijském původu",
|
||
"Nemění se",
|
||
"Odchází do penze",
|
||
},
|
||
1,
|
||
"Spolu s nacistickou mocí roste i Kopfrkinglova kariéra a "
|
||
"sebevědomí.",
|
||
},
|
||
{
|
||
"Jaký je symbolický význam jména Kopfrkingl?",
|
||
{
|
||
"Zdánlivě úřednické, ale zní hrozivě – naznačuje zvrácenost",
|
||
"Je to běžné české jméno",
|
||
"Znamená „laskavý“",
|
||
"Je to pseudonym",
|
||
},
|
||
0,
|
||
"Zvukomalebné jméno působí úředně a zároveň hrozivě, což podtrhuje "
|
||
"dvojí tvář postavy.",
|
||
},
|
||
{
|
||
"Jak funguje motiv masek, divadla a přetvářky?",
|
||
{
|
||
"Postavy nosí masky dobroty, pod nimiž se skrývá krutost",
|
||
"V knize jsou jen skutečné divadelní masky",
|
||
"Motiv se neobjevuje",
|
||
"Masky symbolizují lásku",
|
||
},
|
||
0,
|
||
"Přetvářka a předstíraná spořádanost jsou ústřední – zlo se tváří "
|
||
"jako slušnost.",
|
||
},
|
||
{
|
||
"Jaký je vztah mezi soukromým a kolektivním šílenstvím doby?",
|
||
{
|
||
"Kopfrkinglovo osobní šílenství roste spolu s ideologií doby",
|
||
"Nijak nesouvisí",
|
||
"Doba je klidná a šťastná",
|
||
"Lidé režim jednomyslně odmítají",
|
||
},
|
||
0,
|
||
"Fuks ukazuje, jak se individuální porucha napojí na kolektivní "
|
||
"ideologii a čerpá z ní sílu.",
|
||
},
|
||
{
|
||
"Jak končí román a co se stane s panem Kopfrkinglem na konci?",
|
||
{
|
||
"Uteče do zahraničí",
|
||
"Je zatčen a zničen",
|
||
"Stane se hrdinou",
|
||
"Věří, že je vtělením Dalajlámy, a zůstává zaslepený",
|
||
},
|
||
3,
|
||
"Kopfrkinglova zaslepenost vrcholí přesvědčením o vlastní božskosti; "
|
||
"jeho zvrácená víra ho neopouští.",
|
||
},
|
||
{
|
||
"Jak je Spalovač mrtvol adaptován filmově?",
|
||
{
|
||
"Film Juraje Herze je vizuálně expresivní a patří k vrcholům "
|
||
"české kinematografie",
|
||
"Byl zfilmován jen v zahraničí",
|
||
"Film neexistuje",
|
||
"Vznikl jako animovaný seriál",
|
||
},
|
||
0,
|
||
"Známá filmová verze je od režiséra Juraje Herze z roku 1968.",
|
||
},
|
||
{
|
||
"Které další dílo Ladislava Fukse se dá srovnat s touto knihou?",
|
||
{
|
||
"Pan Theodor Mundstock nebo Myši Natálie Mooshabrové",
|
||
"Farma zvířat",
|
||
"R.U.R.",
|
||
"Babička",
|
||
},
|
||
0,
|
||
"Fuks se opakovaně zabýval osudem židovských postav a atmosférou "
|
||
"strachu; srovnat lze např. Pana Theodora Mundstocka.",
|
||
},
|
||
{
|
||
"Jaká jsou hlavní témata románu?",
|
||
{
|
||
"Moc, manipulace, ideologie, násilí a přetvářka",
|
||
"Láska a dobrodružství",
|
||
"Sport a přátelství",
|
||
"Příroda a vesmír",
|
||
},
|
||
0,
|
||
"Kniha zkoumá, jak se obyčejný člověk přizpůsobí zlu a stane se jeho "
|
||
"nástrojem.",
|
||
},
|
||
{
|
||
"Jaké poselství podle tebe chtěl Ladislav Fuks knihou předat?",
|
||
{
|
||
"Varování před manipulací a tím, jak se zlo rodí z banality a "
|
||
"lhostejnosti",
|
||
"Oslavu války",
|
||
"Návod k podnikání",
|
||
"Kritiku školství",
|
||
},
|
||
0,
|
||
"Fuks ukazuje, že hrůza může vzniknout z poslušnosti a touhy být "
|
||
"„lepší“ než ostatní.",
|
||
},
|
||
};
|
||
|
||
#define FUKS_NQ ((int)G_N_ELEMENTS(fuks_qs))
|
||
|
||
typedef struct {
|
||
const LitQ *qs;
|
||
int n;
|
||
int idx;
|
||
int score;
|
||
int answered;
|
||
int finished;
|
||
GtkWidget *progress;
|
||
GtkWidget *score_lbl;
|
||
GtkWidget *prompt;
|
||
GtkWidget *grid;
|
||
GtkWidget *opts[4];
|
||
GtkWidget *opt_lbl[4];
|
||
GtkWidget *expl;
|
||
GtkWidget *next;
|
||
} LitQuiz;
|
||
|
||
static void lit_quiz_show(LitQuiz *z) {
|
||
const LitQ *q = &z->qs[z->idx];
|
||
char buf[128];
|
||
|
||
g_snprintf(buf, sizeof(buf), tr("lit_question_fmt"), z->idx + 1, z->n);
|
||
gtk_label_set_text(GTK_LABEL(z->progress), buf);
|
||
g_snprintf(buf, sizeof(buf), tr("lit_score_fmt"), z->score, z->n);
|
||
gtk_label_set_text(GTK_LABEL(z->score_lbl), buf);
|
||
|
||
gtk_label_set_text(GTK_LABEL(z->prompt), q->q);
|
||
for (int i = 0; i < 4; i++) {
|
||
gtk_label_set_text(GTK_LABEL(z->opt_lbl[i]), q->opts[i]);
|
||
gtk_widget_remove_css_class(z->opts[i], "ok");
|
||
gtk_widget_remove_css_class(z->opts[i], "wrong");
|
||
gtk_widget_set_sensitive(z->opts[i], TRUE);
|
||
}
|
||
gtk_widget_set_visible(z->grid, TRUE);
|
||
gtk_widget_set_visible(z->expl, FALSE);
|
||
gtk_widget_set_visible(z->next, FALSE);
|
||
z->answered = 0;
|
||
}
|
||
|
||
static void lit_quiz_finish(LitQuiz *z) {
|
||
char buf[128];
|
||
|
||
z->finished = 1;
|
||
gtk_label_set_text(GTK_LABEL(z->progress), tr("lit_finished"));
|
||
gtk_label_set_text(GTK_LABEL(z->prompt), tr("lit_finished_text"));
|
||
g_snprintf(buf, sizeof(buf), tr("lit_score_fmt"), z->score, z->n);
|
||
gtk_label_set_text(GTK_LABEL(z->score_lbl), buf);
|
||
gtk_widget_set_visible(z->grid, FALSE);
|
||
gtk_widget_set_visible(z->expl, FALSE);
|
||
gtk_widget_set_visible(z->next, TRUE);
|
||
gtk_button_set_label(GTK_BUTTON(z->next), tr("lit_again"));
|
||
}
|
||
|
||
static void lit_opt_clicked(GtkButton *button, gpointer data) {
|
||
LitQuiz *z = data;
|
||
int chosen = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(button), "idx"));
|
||
const LitQ *q;
|
||
char buf[128];
|
||
|
||
if (z->answered)
|
||
return;
|
||
z->answered = 1;
|
||
q = &z->qs[z->idx];
|
||
|
||
for (int i = 0; i < 4; i++)
|
||
gtk_widget_set_sensitive(z->opts[i], FALSE);
|
||
|
||
gtk_widget_add_css_class(z->opts[q->correct], "ok");
|
||
if (chosen == q->correct)
|
||
z->score++;
|
||
else
|
||
gtk_widget_add_css_class(z->opts[chosen], "wrong");
|
||
|
||
g_snprintf(buf, sizeof(buf), tr("lit_score_fmt"), z->score, z->n);
|
||
gtk_label_set_text(GTK_LABEL(z->score_lbl), buf);
|
||
|
||
gtk_label_set_text(GTK_LABEL(z->expl), q->expl);
|
||
gtk_widget_set_visible(z->expl, TRUE);
|
||
|
||
gtk_button_set_label(GTK_BUTTON(z->next),
|
||
z->idx + 1 >= z->n ? tr("lit_show_result")
|
||
: tr("lit_next"));
|
||
gtk_widget_set_visible(z->next, TRUE);
|
||
}
|
||
|
||
static void lit_next_clicked(GtkButton *button, gpointer data) {
|
||
LitQuiz *z = data;
|
||
|
||
(void)button;
|
||
|
||
if (z->finished) {
|
||
z->finished = 0;
|
||
z->idx = 0;
|
||
z->score = 0;
|
||
lit_quiz_show(z);
|
||
return;
|
||
}
|
||
if (z->idx + 1 >= z->n) {
|
||
lit_quiz_finish(z);
|
||
return;
|
||
}
|
||
z->idx++;
|
||
lit_quiz_show(z);
|
||
}
|
||
|
||
static GtkWidget *lit_quiz_page(const LitQ *qs, int n, const char *back,
|
||
const char *title, const char *sub) {
|
||
GtkWidget *page;
|
||
GtkWidget *scroll;
|
||
GtkWidget *box;
|
||
GtkWidget *head;
|
||
LitQuiz *z = g_new0(LitQuiz, 1);
|
||
|
||
z->qs = qs;
|
||
z->n = n;
|
||
|
||
page = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||
gtk_widget_set_margin_start(page, 32);
|
||
gtk_widget_set_margin_end(page, 32);
|
||
gtk_widget_set_margin_top(page, 24);
|
||
gtk_widget_set_margin_bottom(page, 24);
|
||
|
||
gtk_box_append(GTK_BOX(page), top_bar(back, title, sub));
|
||
|
||
scroll = gtk_scrolled_window_new();
|
||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
|
||
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||
gtk_widget_set_vexpand(scroll, TRUE);
|
||
gtk_widget_set_margin_top(scroll, 14);
|
||
gtk_box_append(GTK_BOX(page), scroll);
|
||
|
||
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 14);
|
||
gtk_widget_set_margin_start(box, 6);
|
||
gtk_widget_set_margin_end(box, 6);
|
||
gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scroll), box);
|
||
|
||
head = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);
|
||
gtk_box_append(GTK_BOX(box), head);
|
||
|
||
z->progress = gtk_label_new("");
|
||
gtk_widget_set_halign(z->progress, GTK_ALIGN_START);
|
||
gtk_widget_set_hexpand(z->progress, TRUE);
|
||
gtk_label_set_xalign(GTK_LABEL(z->progress), 0.0);
|
||
gtk_widget_add_css_class(z->progress, "lit-progress");
|
||
gtk_box_append(GTK_BOX(head), z->progress);
|
||
|
||
z->score_lbl = gtk_label_new("");
|
||
gtk_widget_set_halign(z->score_lbl, GTK_ALIGN_END);
|
||
gtk_widget_add_css_class(z->score_lbl, "lit-score");
|
||
gtk_box_append(GTK_BOX(head), z->score_lbl);
|
||
|
||
z->prompt = gtk_label_new("");
|
||
gtk_widget_set_halign(z->prompt, GTK_ALIGN_START);
|
||
gtk_label_set_wrap(GTK_LABEL(z->prompt), TRUE);
|
||
gtk_widget_set_margin_top(z->prompt, 4);
|
||
gtk_widget_add_css_class(z->prompt, "lit-prompt");
|
||
gtk_box_append(GTK_BOX(box), z->prompt);
|
||
|
||
z->grid = gtk_grid_new();
|
||
gtk_grid_set_row_spacing(GTK_GRID(z->grid), 12);
|
||
gtk_grid_set_column_spacing(GTK_GRID(z->grid), 12);
|
||
gtk_grid_set_row_homogeneous(GTK_GRID(z->grid), TRUE);
|
||
gtk_grid_set_column_homogeneous(GTK_GRID(z->grid), TRUE);
|
||
gtk_widget_set_vexpand(z->grid, TRUE);
|
||
gtk_box_append(GTK_BOX(box), z->grid);
|
||
|
||
for (int i = 0; i < 4; i++) {
|
||
GtkWidget *btn = gtk_button_new();
|
||
GtkWidget *lbl;
|
||
char cls[16];
|
||
|
||
lbl = gtk_label_new("");
|
||
gtk_label_set_wrap(GTK_LABEL(lbl), TRUE);
|
||
gtk_label_set_justify(GTK_LABEL(lbl), GTK_JUSTIFY_CENTER);
|
||
gtk_label_set_max_width_chars(GTK_LABEL(lbl), 26);
|
||
|
||
g_snprintf(cls, sizeof(cls), "kahoot-%d", i);
|
||
gtk_widget_add_css_class(btn, "kahoot-opt");
|
||
gtk_widget_add_css_class(btn, cls);
|
||
gtk_widget_set_hexpand(btn, TRUE);
|
||
gtk_widget_set_vexpand(btn, TRUE);
|
||
gtk_button_set_child(GTK_BUTTON(btn), lbl);
|
||
g_object_set_data(G_OBJECT(btn), "idx", GINT_TO_POINTER(i));
|
||
g_signal_connect(btn, "clicked", G_CALLBACK(lit_opt_clicked), z);
|
||
|
||
z->opts[i] = btn;
|
||
z->opt_lbl[i] = lbl;
|
||
gtk_grid_attach(GTK_GRID(z->grid), btn, i % 2, i / 2, 1, 1);
|
||
}
|
||
|
||
z->expl = gtk_label_new("");
|
||
gtk_widget_set_halign(z->expl, GTK_ALIGN_START);
|
||
gtk_label_set_wrap(GTK_LABEL(z->expl), TRUE);
|
||
gtk_label_set_xalign(GTK_LABEL(z->expl), 0.0);
|
||
gtk_widget_add_css_class(z->expl, "lit-expl");
|
||
gtk_widget_set_visible(z->expl, FALSE);
|
||
gtk_box_append(GTK_BOX(box), z->expl);
|
||
|
||
z->next = gtk_button_new();
|
||
i18n_bind(z->next, "lit_next", 1);
|
||
gtk_widget_add_css_class(z->next, "btn-primary");
|
||
gtk_widget_set_halign(z->next, GTK_ALIGN_END);
|
||
gtk_widget_set_margin_top(z->next, 6);
|
||
gtk_widget_set_visible(z->next, FALSE);
|
||
gtk_box_append(GTK_BOX(box), z->next);
|
||
g_signal_connect(z->next, "clicked", G_CALLBACK(lit_next_clicked), z);
|
||
|
||
lit_quiz_show(z);
|
||
|
||
return page;
|
||
}
|
||
|
||
GtkWidget *build_cetba1984_quiz_page(void) {
|
||
return lit_quiz_page(lit_qs, LIT_NQ, "cetba1984",
|
||
"lit_quiz_title", "lit_quiz_sub");
|
||
}
|
||
|
||
GtkWidget *build_cetba_fuks_quiz_page(void) {
|
||
return lit_quiz_page(fuks_qs, FUKS_NQ, "cetbaFuks",
|
||
"lit_fuks_quiz_title", "lit_fuks_quiz_sub");
|
||
}
|
||
|
||
/* ------------------------------------------------------------------ */
|
||
/* Sestavte děj (drag & drop) */
|
||
/* ------------------------------------------------------------------ */
|
||
|
||
static const AssemblyItem lit_plot_items[] = {
|
||
{
|
||
"Přetáhněte části příběhu do správného pořadí:",
|
||
{
|
||
"Winston upravuje historii na Ministerstvu pravdy",
|
||
"Seznámí se s Julií a začnou se tajně scházet",
|
||
"Pronajme si pokoj nad obchodem pana Charringtona",
|
||
"Přečte Goldsteinovu knihu u O'Briena",
|
||
"Jsou zatčeni Policií myšlení",
|
||
"Winston se zlomí v místnosti 101",
|
||
},
|
||
6,
|
||
},
|
||
};
|
||
|
||
static const char *lit_plot_meaning[] = {
|
||
"Správné pořadí: přepisování historie → seznámení s Julií → "
|
||
"pronájem pokoje → četba Goldsteinovy knihy → zatčení → místnost 101.",
|
||
};
|
||
|
||
static UnitCtx lit_plot_unit;
|
||
|
||
GtkWidget *build_cetba1984_plot_page(void) {
|
||
lit_plot_unit.page = "cetba1984";
|
||
lit_plot_unit.progress_file = app_progress_cetba;
|
||
return build_assembly(&lit_plot_unit, tr("lit_plot_title"),
|
||
"lit_plot_sub", 1, lit_plot_items,
|
||
lit_plot_meaning, 1);
|
||
}
|
||
|
||
static const AssemblyItem fuks_plot_items[] = {
|
||
{
|
||
"Přetáhněte části příběhu do správného pořadí:",
|
||
{
|
||
"Kopfrkingl je spořádaným zaměstnancem krematoria",
|
||
"Seznámí se s Willim Reinkem",
|
||
"Začne věřit v árijskou nadřazenost",
|
||
"Postupně se odcizí své rodině",
|
||
"Zabije ženu a děti jako „osvobození“",
|
||
"Na konci se považuje za vtělení Dalajlámy",
|
||
},
|
||
6,
|
||
},
|
||
};
|
||
|
||
static const char *fuks_plot_meaning[] = {
|
||
"Správné pořadí: spořádaný úředník → setkání s Reinkem → árijská "
|
||
"ideologie → odcizení rodině → vraždy → přesvědčení o vlastní "
|
||
"božskosti.",
|
||
};
|
||
|
||
GtkWidget *build_cetba_fuks_plot_page(void) {
|
||
lit_plot_unit.page = "cetbaFuks";
|
||
lit_plot_unit.progress_file = app_progress_cetba;
|
||
return build_assembly(&lit_plot_unit, tr("lit_fuks_plot_title"),
|
||
"lit_fuks_plot_sub", 1, fuks_plot_items,
|
||
fuks_plot_meaning, 1);
|
||
}
|
||
|
||
/* ------------------------------------------------------------------ */
|
||
/* Reading list and 1984 overview */
|
||
/* ------------------------------------------------------------------ */
|
||
|
||
static GtkWidget *lit_link_card(const char *target, const char *title,
|
||
const char *sub, GtkDrawingAreaDrawFunc icon) {
|
||
GtkWidget *btn = gtk_button_new();
|
||
GtkWidget *row = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 14);
|
||
GtkWidget *ic;
|
||
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 3);
|
||
GtkWidget *t = gtk_label_new(NULL);
|
||
GtkWidget *s = gtk_label_new(NULL);
|
||
|
||
gtk_widget_add_css_class(btn, "lit-link");
|
||
gtk_widget_set_hexpand(btn, TRUE);
|
||
|
||
ic = icon_area_new(icon, 0, 0, 0, 34);
|
||
gtk_widget_set_valign(ic, GTK_ALIGN_CENTER);
|
||
gtk_box_append(GTK_BOX(row), ic);
|
||
|
||
gtk_widget_set_valign(box, GTK_ALIGN_CENTER);
|
||
gtk_widget_set_hexpand(box, TRUE);
|
||
gtk_widget_set_halign(t, GTK_ALIGN_START);
|
||
gtk_label_set_xalign(GTK_LABEL(t), 0.0);
|
||
gtk_label_set_wrap(GTK_LABEL(t), TRUE);
|
||
gtk_label_set_max_width_chars(GTK_LABEL(t), 40);
|
||
gtk_widget_add_css_class(t, "lit-link-title");
|
||
i18n_bind(t, title, 0);
|
||
gtk_box_append(GTK_BOX(box), t);
|
||
|
||
gtk_widget_set_halign(s, GTK_ALIGN_START);
|
||
gtk_label_set_xalign(GTK_LABEL(s), 0.0);
|
||
gtk_label_set_wrap(GTK_LABEL(s), TRUE);
|
||
gtk_label_set_max_width_chars(GTK_LABEL(s), 46);
|
||
gtk_widget_add_css_class(s, "lit-link-sub");
|
||
i18n_bind(s, sub, 0);
|
||
gtk_box_append(GTK_BOX(box), s);
|
||
|
||
gtk_box_append(GTK_BOX(row), box);
|
||
gtk_button_set_child(GTK_BUTTON(btn), row);
|
||
g_object_set_data_full(G_OBJECT(btn), "target", g_strdup(target), g_free);
|
||
g_signal_connect(btn, "clicked", G_CALLBACK(on_nav_clicked), NULL);
|
||
return btn;
|
||
}
|
||
|
||
static void lit_note_card(GtkWidget *parent, const char *title,
|
||
GtkDrawingAreaDrawFunc icon,
|
||
const char *const *lines) {
|
||
GtkWidget *card = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6);
|
||
GtkWidget *head;
|
||
GtkWidget *ic;
|
||
GtkWidget *t;
|
||
|
||
gtk_widget_add_css_class(card, "notes-card");
|
||
gtk_widget_set_margin_bottom(card, 14);
|
||
gtk_box_append(GTK_BOX(parent), card);
|
||
|
||
head = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 10);
|
||
gtk_box_append(GTK_BOX(card), head);
|
||
|
||
ic = icon_area_new(icon, 0, 0, 0, 26);
|
||
gtk_widget_set_valign(ic, GTK_ALIGN_CENTER);
|
||
gtk_box_append(GTK_BOX(head), ic);
|
||
|
||
t = gtk_label_new(title);
|
||
gtk_widget_set_halign(t, GTK_ALIGN_START);
|
||
gtk_label_set_wrap(GTK_LABEL(t), TRUE);
|
||
gtk_widget_set_valign(t, GTK_ALIGN_CENTER);
|
||
gtk_widget_add_css_class(t, "notes-title");
|
||
gtk_box_append(GTK_BOX(head), t);
|
||
|
||
for (int i = 0; lines[i]; i++) {
|
||
GtkWidget *l = gtk_label_new(lines[i]);
|
||
|
||
gtk_widget_set_halign(l, GTK_ALIGN_START);
|
||
gtk_label_set_wrap(GTK_LABEL(l), TRUE);
|
||
gtk_label_set_xalign(GTK_LABEL(l), 0.0);
|
||
gtk_widget_add_css_class(l, "notes-body");
|
||
gtk_box_append(GTK_BOX(card), l);
|
||
}
|
||
}
|
||
|
||
/* ------------------------------------------------------------------ */
|
||
/* Reading roadmap (Maturitní četba) */
|
||
/* ------------------------------------------------------------------ */
|
||
|
||
#define BOOK_NODES 2
|
||
|
||
typedef struct {
|
||
const char *title;
|
||
const char *target;
|
||
} BookDef;
|
||
|
||
static const BookDef book_defs[BOOK_NODES] = {
|
||
{"George Orwell – 1984", "cetba1984"},
|
||
{"Ladislav Fuks – Spalovač mrtvol", "cetbaFuks"},
|
||
};
|
||
|
||
static GtkWidget *book_rail;
|
||
static GtkWidget *book_nodes[BOOK_NODES];
|
||
static GtkWidget *book_labels[BOOK_NODES];
|
||
static double book_cx[BOOK_NODES];
|
||
static double book_cy[BOOK_NODES];
|
||
static int book_cw = 540;
|
||
static int book_ch = 300;
|
||
|
||
static void book_point(double t, double *ox, double *oy) {
|
||
int k = (int)t;
|
||
double u = t - (double)k;
|
||
double u2, u3;
|
||
double p0x, p0y, p1x, p1y, p2x, p2y, p3x, p3y;
|
||
|
||
if (k < 0) { k = 0; u = 0.0; }
|
||
if (k >= BOOK_NODES - 1) { k = BOOK_NODES - 2; u = 1.0; }
|
||
|
||
p1x = book_cx[k]; p1y = book_cy[k];
|
||
p2x = book_cx[k + 1]; p2y = book_cy[k + 1];
|
||
if (k - 1 >= 0) { p0x = book_cx[k - 1]; p0y = book_cy[k - 1]; }
|
||
else { p0x = p1x - (p2x - p1x); p0y = p1y - (p2y - p1y); }
|
||
if (k + 2 < BOOK_NODES) { p3x = book_cx[k + 2]; p3y = book_cy[k + 2]; }
|
||
else { p3x = p2x + (p2x - p1x); p3y = p2y + (p2y - p1y); }
|
||
|
||
u2 = u * u;
|
||
u3 = u2 * u;
|
||
*ox = 0.5 * (2.0 * p1x + (-p0x + p2x) * u
|
||
+ (2.0 * p0x - 5.0 * p1x + 4.0 * p2x - p3x) * u2
|
||
+ (-p0x + 3.0 * p1x - 3.0 * p2x + p3x) * u3);
|
||
*oy = 0.5 * (2.0 * p1y + (-p0y + p2y) * u
|
||
+ (2.0 * p0y - 5.0 * p1y + 4.0 * p2y - p3y) * u2
|
||
+ (-p0y + 3.0 * p1y - 3.0 * p2y + p3y) * u3);
|
||
}
|
||
|
||
static void book_path(cairo_t *cr, double t0, double t1) {
|
||
const double steps_per_unit = 48.0;
|
||
int n = (int)((t1 - t0) * steps_per_unit);
|
||
double x, y;
|
||
|
||
if (n < 1)
|
||
n = 1;
|
||
book_point(t0, &x, &y);
|
||
cairo_move_to(cr, x, y);
|
||
for (int s = 1; s <= n; s++) {
|
||
book_point(t0 + (t1 - t0) * (double)s / (double)n, &x, &y);
|
||
cairo_line_to(cr, x, y);
|
||
}
|
||
}
|
||
|
||
static void book_geometry(double avail) {
|
||
const double phase = 2.0 * G_PI * 1.7 / (double)(BOOK_NODES - 1);
|
||
int rows;
|
||
int r, c, i;
|
||
|
||
for (rows = 1; rows <= BOOK_NODES; rows++) {
|
||
int cols = (BOOK_NODES + rows - 1) / rows;
|
||
if (2.0 * ROAD_MX + (cols - 1) * PATH_SPAC <= avail + 1.0)
|
||
break;
|
||
}
|
||
if (rows > BOOK_NODES)
|
||
rows = BOOK_NODES;
|
||
int cols = (BOOK_NODES + rows - 1) / rows;
|
||
if (cols < 1)
|
||
cols = 1;
|
||
book_cw = (int)(2.0 * ROAD_MX + (cols - 1) * PATH_SPAC);
|
||
book_ch = (int)(2.0 * ROAD_MY + (rows - 1) * ROAD_GAP);
|
||
|
||
for (r = 0; r < rows; r++) {
|
||
int base = r * cols;
|
||
int len = MIN(cols, BOOK_NODES - base);
|
||
int fwd = (r % 2) == 0;
|
||
for (c = 0; c < len; c++) {
|
||
i = base + c;
|
||
int cc = fwd ? c : (cols - 1 - c);
|
||
book_cx[i] = ROAD_MX + cc * PATH_SPAC;
|
||
book_cy[i] = ROAD_MY + r * ROAD_GAP
|
||
+ ROAD_WAVE * sin((double)i * phase);
|
||
}
|
||
}
|
||
}
|
||
|
||
static void draw_book_rail(GtkDrawingArea *area, cairo_t *cr,
|
||
int width, int height, gpointer data) {
|
||
const double t_end = (double)(BOOK_NODES - 1);
|
||
const Rgb rail = color_from_hex(app_theme.rail);
|
||
const Rgb mauve = color_from_hex(app_theme.accent);
|
||
const Rgb muted = color_from_hex(app_theme.subtext);
|
||
double hx, hy;
|
||
|
||
(void)area;
|
||
(void)width;
|
||
(void)height;
|
||
(void)data;
|
||
|
||
cairo_set_operator(cr, CAIRO_OPERATOR_CLEAR);
|
||
cairo_paint(cr);
|
||
cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
|
||
cairo_set_line_cap(cr, CAIRO_LINE_CAP_ROUND);
|
||
cairo_set_line_join(cr, CAIRO_LINE_JOIN_ROUND);
|
||
|
||
book_point(0.0, &hx, &hy);
|
||
draw_node_halo(cr, hx, hy, NODE_SIZE * 1.05,
|
||
mauve.r, mauve.g, mauve.b, 0.18);
|
||
|
||
cairo_new_path(cr);
|
||
book_path(cr, 0.0, t_end);
|
||
cairo_set_line_width(cr, 16);
|
||
cairo_set_source_rgb(cr, rail.r, rail.g, rail.b);
|
||
cairo_stroke(cr);
|
||
|
||
cairo_set_source_rgba(cr, muted.r, muted.g, muted.b, 0.17);
|
||
cairo_set_dash(cr, (double[]){2.0, 40.0}, 2, 0.0);
|
||
cairo_new_path(cr);
|
||
book_path(cr, 0.0, t_end);
|
||
cairo_stroke(cr);
|
||
cairo_set_dash(cr, NULL, 0, 0.0);
|
||
}
|
||
|
||
void book_rail_theme_reset(void) {
|
||
if (book_rail)
|
||
gtk_widget_queue_draw(book_rail);
|
||
}
|
||
|
||
static GtkWidget *book_make_node(int i) {
|
||
GtkWidget *btn = gtk_button_new();
|
||
GtkWidget *icon = icon_area_new(draw_book_badge_icon, 0, 0, 0, 48);
|
||
|
||
gtk_widget_add_css_class(btn, "unit-node");
|
||
gtk_widget_add_css_class(btn, "current");
|
||
gtk_widget_set_can_focus(btn, FALSE);
|
||
gtk_widget_set_size_request(btn, (int)NODE_SIZE, (int)NODE_SIZE);
|
||
|
||
gtk_button_set_child(GTK_BUTTON(btn), icon);
|
||
|
||
g_object_set_data_full(G_OBJECT(btn), "target",
|
||
g_strdup(book_defs[i].target), g_free);
|
||
g_signal_connect(btn, "clicked", G_CALLBACK(on_nav_clicked), NULL);
|
||
return btn;
|
||
}
|
||
|
||
GtkWidget *build_readinglist_page(void) {
|
||
GtkWidget *page;
|
||
GtkWidget *scroll;
|
||
GtkWidget *wrap;
|
||
GtkWidget *fixed;
|
||
GtkWidget *rail;
|
||
int i;
|
||
|
||
book_geometry(1000.0);
|
||
|
||
page = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||
gtk_widget_set_hexpand(page, TRUE);
|
||
gtk_widget_set_vexpand(page, TRUE);
|
||
gtk_widget_set_margin_start(page, 32);
|
||
gtk_widget_set_margin_end(page, 32);
|
||
gtk_widget_set_margin_top(page, 24);
|
||
gtk_widget_set_margin_bottom(page, 24);
|
||
|
||
gtk_box_append(GTK_BOX(page),
|
||
top_bar("czechmap", "Maturitní četba", "reading_sub"));
|
||
|
||
scroll = gtk_scrolled_window_new();
|
||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
|
||
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||
gtk_widget_set_vexpand(scroll, TRUE);
|
||
gtk_widget_set_margin_top(scroll, 14);
|
||
gtk_box_append(GTK_BOX(page), scroll);
|
||
|
||
wrap = gtk_center_box_new();
|
||
gtk_widget_set_vexpand(wrap, TRUE);
|
||
gtk_widget_set_hexpand(wrap, TRUE);
|
||
gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scroll), wrap);
|
||
|
||
fixed = gtk_fixed_new();
|
||
gtk_widget_set_halign(fixed, GTK_ALIGN_CENTER);
|
||
gtk_widget_set_valign(fixed, GTK_ALIGN_CENTER);
|
||
gtk_widget_set_size_request(fixed, book_cw, book_ch);
|
||
gtk_center_box_set_center_widget(GTK_CENTER_BOX(wrap), fixed);
|
||
gtk_widget_set_margin_start(fixed, 24);
|
||
gtk_widget_set_margin_end(fixed, 24);
|
||
|
||
rail = gtk_drawing_area_new();
|
||
gtk_widget_set_size_request(rail, book_cw, book_ch);
|
||
gtk_drawing_area_set_draw_func(GTK_DRAWING_AREA(rail), draw_book_rail,
|
||
NULL, NULL);
|
||
gtk_fixed_put(GTK_FIXED(fixed), rail, 0, 0);
|
||
book_rail = rail;
|
||
|
||
for (i = 0; i < BOOK_NODES; i++) {
|
||
GtkWidget *btn = book_make_node(i);
|
||
GtkWidget *name = gtk_label_new(book_defs[i].title);
|
||
|
||
gtk_widget_set_size_request(name, (int)(PATH_SPAC - 20.0), -1);
|
||
gtk_widget_set_halign(name, GTK_ALIGN_CENTER);
|
||
gtk_label_set_justify(GTK_LABEL(name), GTK_JUSTIFY_CENTER);
|
||
gtk_label_set_wrap(GTK_LABEL(name), TRUE);
|
||
gtk_widget_add_css_class(name, "unit-name");
|
||
gtk_widget_add_css_class(name, "cz-label");
|
||
|
||
gtk_fixed_put(GTK_FIXED(fixed), btn, 0, 0);
|
||
gtk_fixed_put(GTK_FIXED(fixed), name, 0, 0);
|
||
|
||
gtk_fixed_move(GTK_FIXED(fixed), btn,
|
||
(int)(book_cx[i] - NODE_SIZE / 2.0),
|
||
(int)(book_cy[i] - NODE_SIZE / 2.0));
|
||
gtk_fixed_move(GTK_FIXED(fixed), name,
|
||
(int)(book_cx[i] - (PATH_SPAC - 20.0) / 2.0),
|
||
(int)(book_cy[i] + NODE_SIZE / 2.0 + 10.0));
|
||
|
||
book_nodes[i] = btn;
|
||
book_labels[i] = name;
|
||
}
|
||
|
||
return page;
|
||
}
|
||
|
||
GtkWidget *build_cetba1984_page(void) {
|
||
GtkWidget *page;
|
||
GtkWidget *scroll;
|
||
GtkWidget *box;
|
||
GtkWidget *links;
|
||
static const char *about[] = {
|
||
"Autor: George Orwell (vl. jm. Eric Arthur Blair)",
|
||
"Žánr: antiutopický (dystopický) román",
|
||
"Poprvé vydáno: 1949",
|
||
"Děj: Londýn, provincie Letopočet 1, stát Oceánie",
|
||
"Vyprávění: v er-formě, po deníkových zápiscích Winstona Smithe",
|
||
NULL,
|
||
};
|
||
static const char *world[] = {
|
||
"Svět je rozdělen na tři supervelmoci: Oceánii, Eurasii a Východasii, "
|
||
"které spolu vedou trvalou válku.",
|
||
"Vládne jediná strana (Angsoc) v čele s kultem Velkého bratra.",
|
||
"Ministerstvo pravdy – přepisuje historii a vyrábí „pravdu“.",
|
||
"Ministerstvo lásky – mučírny a likvidace nepohodlných.",
|
||
"Ministerstvo hojnosti – plánuje hospodářství a drží lidi v "
|
||
"nedostatku.",
|
||
"Ministerstvo míru – vede válku.",
|
||
NULL,
|
||
};
|
||
static const char *people[] = {
|
||
"Winston Smith – hlavní hrdina, přepisuje historii, touží po svobodě.",
|
||
"Julie – mladá členka strany, Winstonova tajná láska.",
|
||
"O'Brien – člen vnitřní strany, předstírá odboj a Winstona zničí.",
|
||
"Emmanuel Goldstein – nepřítel státu, údajný vůdce Bratrstva.",
|
||
"Velký bratr – symbol všemocné moci strany.",
|
||
"Pan Charrington – zdánlivý obchodník, ve skutečnosti agent.",
|
||
NULL,
|
||
};
|
||
static const char *terms[] = {
|
||
"Newspeak – uměle zjednodušovaný jazyk, který omezuje myšlení.",
|
||
"Dvojité myšlení – ochota věřit dvěma protikladným pravdám.",
|
||
"Zločin myšlení – už samotná zakázaná myšlenka.",
|
||
"Policie myšlení – tajná policie, která zatýká a mučí.",
|
||
"Bratrstvo – možná neexistující odbojová organizace.",
|
||
"Místnost 101 – nejhlubší mučírna, pro každého jeho největší strach.",
|
||
NULL,
|
||
};
|
||
|
||
page = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||
gtk_widget_set_margin_start(page, 32);
|
||
gtk_widget_set_margin_end(page, 32);
|
||
gtk_widget_set_margin_top(page, 24);
|
||
gtk_widget_set_margin_bottom(page, 24);
|
||
|
||
gtk_box_append(GTK_BOX(page),
|
||
top_bar("readinglist", "George Orwell – 1984",
|
||
"cetba1984_sub"));
|
||
|
||
scroll = gtk_scrolled_window_new();
|
||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
|
||
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||
gtk_widget_set_vexpand(scroll, TRUE);
|
||
gtk_widget_set_margin_top(scroll, 14);
|
||
gtk_widget_set_margin_bottom(scroll, 14);
|
||
gtk_box_append(GTK_BOX(page), scroll);
|
||
|
||
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||
gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scroll), box);
|
||
|
||
links = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12);
|
||
gtk_widget_set_margin_bottom(links, 14);
|
||
gtk_box_append(GTK_BOX(box), links);
|
||
gtk_box_append(GTK_BOX(links),
|
||
lit_link_card("cetba1984quiz", "lit_quiz_title",
|
||
"lit_quiz_sub", draw_quiz_icon));
|
||
gtk_box_append(GTK_BOX(links),
|
||
lit_link_card("cetba1984dej", "lit_plot_title",
|
||
"lit_plot_sub", draw_order_icon));
|
||
|
||
lit_note_card(box, "O knize", draw_book_icon, about);
|
||
lit_note_card(box, "Svět a strana", draw_globe_icon, world);
|
||
lit_note_card(box, "Postavy", draw_people_icon, people);
|
||
lit_note_card(box, "Klíčové pojmy", draw_bulb_icon, terms);
|
||
|
||
return page;
|
||
}
|
||
|
||
GtkWidget *build_cetba_fuks_page(void) {
|
||
GtkWidget *page;
|
||
GtkWidget *scroll;
|
||
GtkWidget *box;
|
||
GtkWidget *links;
|
||
static const char *about[] = {
|
||
"Autor: Ladislav Fuks (1923–1994)",
|
||
"Žánr: psychologický román s prvky grotesky a hororu",
|
||
"Poprvé vydáno: 1967",
|
||
"Děj: Praha v době protektorátu (konec 30. let)",
|
||
"Vyprávění: ich-forma – vypráví sám pan Kopfrkingl",
|
||
NULL,
|
||
};
|
||
static const char *world[] = {
|
||
"Děj se odehrává v protektorátu Čechy a Morava za nastupujícího "
|
||
"nacismu.",
|
||
"Atmosféru tvoří strach, přizpůsobování a touha zalíbit se moci.",
|
||
"Krematorium je symbolem smrti a odlidštění.",
|
||
"Antisemitismus a árijská ideologie postupně prostupují společnost.",
|
||
"Obyčejný úředník se mění v nástroj zla.",
|
||
NULL,
|
||
};
|
||
static const char *people[] = {
|
||
"Pan Kopfrkingl – zaměstnanec krematoria, vypravěč a vrah své rodiny.",
|
||
"Lakmé – jeho žena, židovského původu.",
|
||
"Zina a Mil – jeho děti.",
|
||
"Willi Reinke – Němec, který Kopfrkingla přivede k nacismu.",
|
||
"Dr. Bettelheim – lékař, s nímž Kopfrkingl rozmlouvá o smrti.",
|
||
NULL,
|
||
};
|
||
static const char *terms[] = {
|
||
"Krematorium – symbol smrti a zvrácené „očisty“.",
|
||
"Kniha mrtvých – tibetský text, který si Kopfrkingl překrucuje.",
|
||
"Reinkarnace a „osvobození“ – záminka pro vraždy.",
|
||
"Masky a přetvářka – zlo se tváří jako zdvořilost a řád.",
|
||
"Groteska a černý humor – hrůza podaná klidným, slavnostním tónem.",
|
||
"Voda a Vltava – motiv smrti a plynutí.",
|
||
NULL,
|
||
};
|
||
|
||
page = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||
gtk_widget_set_margin_start(page, 32);
|
||
gtk_widget_set_margin_end(page, 32);
|
||
gtk_widget_set_margin_top(page, 24);
|
||
gtk_widget_set_margin_bottom(page, 24);
|
||
|
||
gtk_box_append(GTK_BOX(page),
|
||
top_bar("readinglist", "Ladislav Fuks – Spalovač mrtvol",
|
||
"cetbaFuks_sub"));
|
||
|
||
scroll = gtk_scrolled_window_new();
|
||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
|
||
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
|
||
gtk_widget_set_vexpand(scroll, TRUE);
|
||
gtk_widget_set_margin_top(scroll, 14);
|
||
gtk_widget_set_margin_bottom(scroll, 14);
|
||
gtk_box_append(GTK_BOX(page), scroll);
|
||
|
||
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
|
||
gtk_scrolled_window_set_child(GTK_SCROLLED_WINDOW(scroll), box);
|
||
|
||
links = gtk_box_new(GTK_ORIENTATION_VERTICAL, 12);
|
||
gtk_widget_set_margin_bottom(links, 14);
|
||
gtk_box_append(GTK_BOX(box), links);
|
||
gtk_box_append(GTK_BOX(links),
|
||
lit_link_card("cetbaFuksQuiz", "lit_fuks_quiz_title",
|
||
"lit_fuks_quiz_sub", draw_quiz_icon));
|
||
gtk_box_append(GTK_BOX(links),
|
||
lit_link_card("cetbaFuksDej", "lit_fuks_plot_title",
|
||
"lit_fuks_plot_sub", draw_order_icon));
|
||
|
||
lit_note_card(box, "O knize", draw_book_icon, about);
|
||
lit_note_card(box, "Doba a svět", draw_globe_icon, world);
|
||
lit_note_card(box, "Postavy", draw_people_icon, people);
|
||
lit_note_card(box, "Klíčové motivy", draw_bulb_icon, terms);
|
||
|
||
return page;
|
||
}
|