mirror of
https://github.com/pepaskopec-blip/Graduately.git
synced 2026-10-27 15:14:35 +00:00
Make README fully bilingual in English and Czech.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
f360e00883
commit
b35ade2957
1 changed files with 414 additions and 73 deletions
583
README.md
583
README.md
|
|
@ -1,21 +1,27 @@
|
||||||
# maturita.c
|
# maturita.c
|
||||||
|
|
||||||
An educational application written in C using GTK 4.
|
An educational GTK 4 app written in C. / Vzdělávací GTK 4 aplikace napsaná v C.
|
||||||
|
|
||||||
## Description
|
**[English](#english)** · **[Česky](#česky)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## English
|
||||||
|
|
||||||
|
### Description
|
||||||
|
|
||||||
maturita.c is an educational program for high-school and gymnasium students
|
maturita.c is an educational program for high-school and gymnasium students
|
||||||
preparing for their maturita exam. The UI is available in Czech and English and
|
preparing for their maturita exam. The UI is available in Czech and English and
|
||||||
is built as a single C file (`maturita.c`) that renders a modern, CSS-styled
|
is built as a single C file (`maturita.c`) that renders a modern, CSS-styled
|
||||||
GTK 4 interface.
|
GTK 4 interface.
|
||||||
|
|
||||||
## Screenshots
|
### Screenshots
|
||||||
|
|
||||||
| Welcome screen | Subjects ("Předměty") | German learning roadmap |
|
| Welcome screen | Subjects ("Předměty") | German learning roadmap |
|
||||||
| --------------------------------------- | ---------------------------------------- | --------------------------------------- |
|
| --------------------------------------- | ---------------------------------------- | --------------------------------------- |
|
||||||
|  |  |  |
|
|  |  |  |
|
||||||
|
|
||||||
## Features
|
### Features
|
||||||
|
|
||||||
- **Welcome screen** – branded greeting with a description of the program and a
|
- **Welcome screen** – branded greeting with a description of the program and a
|
||||||
continue button to get started
|
continue button to get started
|
||||||
|
|
@ -74,11 +80,11 @@ GTK 4 interface.
|
||||||
- **Keyboard quit shortcuts** – `Super/Cmd+Q` or `Alt+F4` closes the app
|
- **Keyboard quit shortcuts** – `Super/Cmd+Q` or `Alt+F4` closes the app
|
||||||
- Single-file C codebase, cross-platform (Linux, macOS and Windows)
|
- Single-file C codebase, cross-platform (Linux, macOS and Windows)
|
||||||
|
|
||||||
## Installation
|
### Installation
|
||||||
|
|
||||||
### Prerequisites
|
#### Prerequisites
|
||||||
|
|
||||||
#### 1. GTK 4 development libraries
|
##### 1. GTK 4 development libraries
|
||||||
|
|
||||||
macOS:
|
macOS:
|
||||||
|
|
||||||
|
|
@ -104,27 +110,25 @@ Linux (Arch):
|
||||||
sudo pacman -S gtk4
|
sudo pacman -S gtk4
|
||||||
```
|
```
|
||||||
|
|
||||||
Windows – oficiální GTK 4 instalátor neexistuje. Doporučený a vyzkoušený
|
Windows – there is no official GTK 4 installer. The recommended path is
|
||||||
postup je **MSYS2 + MinGW UCRT64** (bez Visual Studia). Kompletní návod
|
**MSYS2 + MinGW UCRT64** (no Visual Studio). See
|
||||||
v češtině je níže v
|
[Windows install guide (GTK4)](#windows-install-guide-gtk4) below.
|
||||||
[Instalační návod pro Windows (GTK4)](#instalační-návod-pro-windows-gtk4).
|
|
||||||
|
|
||||||
#### 2. Build tools (compiler, Make, pkg-config)
|
##### 2. Build tools (compiler, Make, pkg-config)
|
||||||
|
|
||||||
macOS – install all of these explicitly, they are **not** preinstalled:
|
macOS – install these explicitly; they are **not** preinstalled:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# installs the GNU C compiler, Make, and pkg-config
|
|
||||||
brew install gcc make pkg-config
|
brew install gcc make pkg-config
|
||||||
# if you prefer Apple's Clang toolchain instead, you can run:
|
# or Apple's Clang toolchain:
|
||||||
# xcode-select --install
|
# xcode-select --install
|
||||||
```
|
```
|
||||||
|
|
||||||
Linux – **no need to install gcc, it is already preinstalled** on most
|
Linux – on most distributions `gcc` is already available
|
||||||
distributions (it ships with `build-essential`/`base-devel`):
|
(`build-essential` / `base-devel`):
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Debian / Ubuntu: make sure you have the base toolchain and pkg-config
|
# Debian / Ubuntu
|
||||||
sudo apt install build-essential pkg-config
|
sudo apt install build-essential pkg-config
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
@ -139,14 +143,14 @@ sudo dnf install pkgconf-pkg-config
|
||||||
sudo pacman -S base-devel pkgconf
|
sudo pacman -S base-devel pkgconf
|
||||||
```
|
```
|
||||||
|
|
||||||
Windows – kompilátor (`gcc`), GTK 4 i `pkg-config` se nainstalují v kroku 1
|
Windows – `gcc`, GTK 4 and `pkg-config` are installed in step 1 of the
|
||||||
návodu níže. Visual Studio není potřeba.
|
Windows guide below. Visual Studio is not required.
|
||||||
|
|
||||||
### Building the Application
|
#### Building the application
|
||||||
|
|
||||||
1. Clone or download this repository
|
1. Clone or download this repository
|
||||||
2. Navigate to the project directory
|
2. Navigate to the project directory
|
||||||
3. Build using the provided Makefile:
|
3. Build with the Makefile:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make
|
make
|
||||||
|
|
@ -156,25 +160,22 @@ Or manually:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Linux / macOS
|
# Linux / macOS
|
||||||
gcc -o maturita maturita.c `pkg-config --cflags --libs gtk4` -lm
|
gcc -o maturita maturita.c $(pkg-config --cflags --libs gtk4) -lm
|
||||||
|
|
||||||
# Windows (MSYS2 UCRT64) – viz také český návod níže
|
# Windows (MSYS2 UCRT64)
|
||||||
gcc -o maturita.exe maturita.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
|
gcc -o maturita.exe maturita.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Building with CMake (optional, Linux / macOS)
|
##### Building with CMake (optional, Linux / macOS)
|
||||||
|
|
||||||
A `CMakeLists.txt` is provided for CMake/IDE users:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cmake -S . -B build
|
cmake -S . -B build
|
||||||
cmake --build build
|
cmake --build build
|
||||||
```
|
```
|
||||||
|
|
||||||
CMake finds GTK 4 through pkg-config. On Windows prefer the MSYS2
|
CMake finds GTK 4 through pkg-config. On Windows prefer the MSYS2 flow below.
|
||||||
`gcc` / `make` flow below.
|
|
||||||
|
|
||||||
### Running the Application
|
#### Running the application
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
make run
|
make run
|
||||||
|
|
@ -186,11 +187,362 @@ or
|
||||||
# Linux / macOS
|
# Linux / macOS
|
||||||
./maturita
|
./maturita
|
||||||
|
|
||||||
# Windows (from the same MSYS2 MinGW shell used to build)
|
# Windows (from the same MSYS2 UCRT64 shell used to build)
|
||||||
./maturita.exe
|
./maturita.exe
|
||||||
```
|
```
|
||||||
|
|
||||||
### Instalační návod pro Windows (GTK4)
|
#### Windows install guide (GTK4)
|
||||||
|
|
||||||
|
Follow these steps to compile and run on Windows.
|
||||||
|
**Visual Studio is not required** – MSYS2 and MinGW UCRT64 are enough.
|
||||||
|
|
||||||
|
1. **Install MSYS2 and GTK4**
|
||||||
|
|
||||||
|
Open Command Prompt (CMD) or PowerShell as Administrator and run:
|
||||||
|
|
||||||
|
```cmd
|
||||||
|
winget install --id MSYS2.MSYS2 -e --source winget
|
||||||
|
C:\msys64\ucrt64.exe pacman -S --noconfirm mingw-w64-ucrt-x86_64-gcc mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-pkg-config
|
||||||
|
```
|
||||||
|
|
||||||
|
Wait until both commands finish. If `winget` says MSYS2 is already
|
||||||
|
installed, continue with the second command.
|
||||||
|
(The second command opens an MSYS2 window, downloads packages, then exits –
|
||||||
|
that is expected.)
|
||||||
|
|
||||||
|
2. **Get the project**
|
||||||
|
|
||||||
|
Clone or download this repository and note the path, e.g.
|
||||||
|
`C:\Users\Josef\maturita.c`.
|
||||||
|
|
||||||
|
3. **Open the MSYS2 UCRT64 terminal**
|
||||||
|
|
||||||
|
In the Start menu search for **MSYS2 UCRT64** and open it.
|
||||||
|
Do not use regular CMD or PowerShell – `gcc` and `pkg-config` work in this
|
||||||
|
shell.
|
||||||
|
|
||||||
|
4. **Enter the project folder and compile**
|
||||||
|
|
||||||
|
In MSYS2, paths look like `/c/...` instead of `C:\...`. Adjust the path and
|
||||||
|
run:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd /c/Users/Josef/maturita.c
|
||||||
|
gcc -o maturita.exe maturita.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
|
||||||
|
```
|
||||||
|
|
||||||
|
Path conversion examples:
|
||||||
|
|
||||||
|
- `C:\Users\Josef\maturita.c` → `/c/Users/Josef/maturita.c`
|
||||||
|
- `C:\Users\Josef\Desktop\maturita.c` → `/c/Users/Josef/Desktop/maturita.c`
|
||||||
|
|
||||||
|
If compilation succeeds, `maturita.exe` appears in the project folder.
|
||||||
|
|
||||||
|
5. **Run the app**
|
||||||
|
|
||||||
|
From the same UCRT64 terminal:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./maturita.exe
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **(Optional) Double-click from File Explorer**
|
||||||
|
|
||||||
|
Running `maturita.exe` outside the MSYS2 terminal usually fails with missing
|
||||||
|
DLLs. From the UCRT64 terminal (after installing `make`) you can bundle
|
||||||
|
everything into `dist/`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pacman -S --noconfirm make
|
||||||
|
make bundle
|
||||||
|
```
|
||||||
|
|
||||||
|
Then double-click `dist/maturita.exe`.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
When launched, the application shows the welcome screen. From there:
|
||||||
|
|
||||||
|
1. Click **"Pokračuj" / "Continue"** to open the **Předměty / Subjects** map.
|
||||||
|
2. Click the **Deutsch** bubble (German flag) to open the German learning
|
||||||
|
roadmap, or the **IP** bubble ("Správa počítačových sítí") for the
|
||||||
|
computer-networks path. Other subjects are still locked.
|
||||||
|
3. Browse the units along the path; the roadmap reflows into rows and scrolls
|
||||||
|
if the window is too narrow.
|
||||||
|
4. Click the **"Neue Freunde"** node to open unit 1, **"Aus aller Welt"** for
|
||||||
|
unit 2 or **"Bei uns zu Hause"** for unit 3, then pick any bubble to start
|
||||||
|
an exercise. Units 2 and 3 are available even if the earlier units are not
|
||||||
|
finished yet.
|
||||||
|
5. On the networks path, open **"Výpočet IP adres"** (the first unit) to walk
|
||||||
|
through four slides on IP subnetting; the final slide leads to the practice
|
||||||
|
sheet with four subnetting tasks and per-task "show solution" answers.
|
||||||
|
6. Use the **back button** in the top-left corner to return to the previous
|
||||||
|
screen.
|
||||||
|
7. Open **Statistiky / Statistics** (chart icon, top-right) to see progress
|
||||||
|
grouped per subject (overall totals plus, for Deutsch, a per-unit
|
||||||
|
breakdown).
|
||||||
|
8. Open **Nastavení / Settings** (gear icon, top-right) to switch dark/light
|
||||||
|
mode, pick a color theme, or change the interface language.
|
||||||
|
|
||||||
|
Units 1–3 are currently implemented. Locked units do nothing – they are
|
||||||
|
placeholders until lessons are added. Completed exercises stay green and are
|
||||||
|
saved per unit to `progress/unit1.conf` / `progress/unit2.conf` /
|
||||||
|
`progress/unit3.conf` (created next to the app on first finish).
|
||||||
|
|
||||||
|
#### Keyboard shortcuts
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
| ------------------- | ---------------- |
|
||||||
|
| `Super/Cmd` + `Q` | Quit application |
|
||||||
|
| `Alt` + `F4` | Quit application |
|
||||||
|
|
||||||
|
### Project structure
|
||||||
|
|
||||||
|
```
|
||||||
|
maturita.c entire application (UI, navigation, themes, exercises)
|
||||||
|
Makefile build & run targets (Linux, macOS, MSYS2); `make bundle` on Windows
|
||||||
|
CMakeLists.txt optional CMake build (Linux / macOS)
|
||||||
|
build-windows.bat legacy MSVC build (requires Visual Studio + gvsbuild GTK)
|
||||||
|
run-windows.bat legacy launcher for the MSVC build with GTK DLLs on PATH
|
||||||
|
README.md this file
|
||||||
|
LICENSE GPL-3.0 license
|
||||||
|
progress/ created at runtime
|
||||||
|
unit1.conf unit 1 exercise completion state
|
||||||
|
unit2.conf unit 2 exercise completion state
|
||||||
|
unit3.conf unit 3 exercise completion state
|
||||||
|
settings.conf theme, dark/light mode and language preference
|
||||||
|
```
|
||||||
|
|
||||||
|
### Theming
|
||||||
|
|
||||||
|
The app ships with ten palettes – Catppuccin, Nord, Dracula, Rose Pine, Ocean,
|
||||||
|
Gruvbox, Solarized, Everforest, Monokai and One Dark – each available in dark
|
||||||
|
and light mode. Colors are defined as theme palettes in `maturita.c` and
|
||||||
|
applied through a generated CSS stylesheet (plus matching Cairo colors for the
|
||||||
|
roadmap rails and icons).
|
||||||
|
|
||||||
|
Change the look from the in-app settings panel, or edit the palette tables /
|
||||||
|
`build_theme_css()` in `maturita.c` and rebuild.
|
||||||
|
|
||||||
|
### Languages
|
||||||
|
|
||||||
|
The interface can be switched between Czech and English from the settings
|
||||||
|
panel; the choice takes effect immediately and is remembered between runs.
|
||||||
|
Translations live in two tables in `maturita.c`: `tr_ui` holds interface
|
||||||
|
strings under short keys, while `tr_content` translates the Czech meanings
|
||||||
|
shown next to the German exercise items and uses the Czech text itself as the
|
||||||
|
key. Widgets are registered with `i18n_bind()` so `apply_language()` can
|
||||||
|
retranslate them in place.
|
||||||
|
|
||||||
|
German prompts, unit names and exercise titles are learning material and stay
|
||||||
|
German in both languages.
|
||||||
|
|
||||||
|
### To-Do plans
|
||||||
|
|
||||||
|
- [ ] Wire unit nodes to actual German vocabulary/grammar exercises
|
||||||
|
- [x] Unit 1 ("Neue Freunde") – 13 interactive exercises with progress saving
|
||||||
|
- [x] Unit 2 ("Aus aller Welt") – 19 interactive exercises (incl. Hangman)
|
||||||
|
- [x] Unit 3 ("Bei uns zu Hause") – 15 interactive exercises
|
||||||
|
- [ ] Lesson progression and unlock system for the remaining units
|
||||||
|
- [ ] Add audio pronunciation features
|
||||||
|
- [x] Add user settings panel (theme, dark/light mode, language)
|
||||||
|
- [ ] Implement spaced repetition system for vocabulary
|
||||||
|
- [ ] Add listening and reading comprehension exercises
|
||||||
|
- [ ] Add writing practice with feedback
|
||||||
|
- [x] Expand progress tracking with statistics
|
||||||
|
- [ ] Move CSS styling to an external file
|
||||||
|
- [ ] Split the UI code into multiple files
|
||||||
|
- [x] Add internationalization support (Czech and English)
|
||||||
|
- [ ] Add more interface languages
|
||||||
|
- [ ] Add unit testing framework
|
||||||
|
|
||||||
|
### License
|
||||||
|
|
||||||
|
This project is licensed under the GPL-3.0 License – see the LICENSE file for
|
||||||
|
details.
|
||||||
|
|
||||||
|
### Acknowledgments
|
||||||
|
|
||||||
|
- Created as a learning exercise in C and GTK programming
|
||||||
|
- Inspired by language learning applications
|
||||||
|
- Built with GTK 4 for modern GUI development
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Česky
|
||||||
|
|
||||||
|
### Popis
|
||||||
|
|
||||||
|
maturita.c je vzdělávací program pro středoškoláky a gymnazisty připravující
|
||||||
|
se na maturitu. Rozhraní je v češtině a angličtině a celá aplikace je v jednom
|
||||||
|
C souboru (`maturita.c`) s moderním GTK 4 rozhraním stylovaným přes CSS.
|
||||||
|
|
||||||
|
### Screenshoty
|
||||||
|
|
||||||
|
| Úvodní obrazovka | Předměty | Německá učební cesta |
|
||||||
|
| --------------------------------------- | ---------------------------------------- | --------------------------------------- |
|
||||||
|
|  |  |  |
|
||||||
|
|
||||||
|
### Funkce
|
||||||
|
|
||||||
|
- **Úvodní obrazovka** – branding, popis programu a tlačítko pokračovat
|
||||||
|
- **Předměty** – přizpůsobivá „hadí“ mapa s 13 předměty
|
||||||
|
- **Deutsch** je otevřený (bublina s německou vlajkou) a vede na německou
|
||||||
|
učební cestu
|
||||||
|
- **Správa počítačových sítí** je také otevřená (ikona Wi‑Fi) a vede na cestu
|
||||||
|
s 30 jednotkami; první jednotka **Výpočet IP adres** je hratelná, zbytek
|
||||||
|
je zatím zamčený
|
||||||
|
- ostatní předměty jsou ztmavené / zamčené placeholdery
|
||||||
|
- při úzkém okně se mapa zalomí do více řad
|
||||||
|
- **Učební cesta** – přizpůsobivá cesta s 10 jednotkami
|
||||||
|
- každá jednotka má číslo a název (např. „Neue Freunde“)
|
||||||
|
- jednotky 1–3 jsou otevřené; dokončené jsou zelené s fajfkou
|
||||||
|
- zbývající jsou ztmavené se zámkem
|
||||||
|
- na konci je cílová / finish uzel
|
||||||
|
- při úzkém okně se cesta zalomí do více řad
|
||||||
|
- **Zpět** – kulaté tlačítko vlevo nahoře vrátí na předchozí obrazovku
|
||||||
|
- **Cvičení jednotky 1** – „Neue Freunde“: mapa s 13 cvičeními (dialogy,
|
||||||
|
skládání vět, výběr z možností, volné odpovědi, čísla, časování sloves,
|
||||||
|
řazení pozdravů…), německé zadání a okamžitá kontrola
|
||||||
|
- **Cvičení jednotky 2** – „Aus aller Welt“ je hratelná hned (není nutné
|
||||||
|
dokončit jednotku 1): 19 cvičení – časování, předložky `aus`/`in`, tázací
|
||||||
|
slova, národnosti a země, pravopis / hledej a najdi, párování, hra s čísly,
|
||||||
|
volné „Steckbrief“ odpovědi a Hangman s 5 povoláními
|
||||||
|
- **Cvičení jednotky 3** – „Bei uns zu Hause“: rodina, přivlastňovací zájmena,
|
||||||
|
akuzativ a další gramatika v 15 cvičeních (doplňování vět, skládání slov,
|
||||||
|
„Was siehst du?“, řazení vět, chybějící písmena)
|
||||||
|
- **Nápovědy a vzorové odpovědi** – u psaných / doplňovaných vět je hned
|
||||||
|
český význam; po kontrole se ukáže i správná německá věta
|
||||||
|
- **Počítačové sítě („Výpočet IP adres“)** – 4 slidová vysvětlení IP subnettingu
|
||||||
|
(masky, rozsahy hostitelů, VLSM) a pak 4 praktické úlohy s tlačítkem
|
||||||
|
„ukázat řešení“
|
||||||
|
- **Ukládání postupu** – hotová cvičení zezelenají; stav se ukládá do
|
||||||
|
`progress/unit1.conf`, `progress/unit2.conf` a `progress/unit3.conf` a při
|
||||||
|
startu se načte zpět
|
||||||
|
- **Statistiky** – ikona grafu v hlavičce ukáže postup po předmětech (součty,
|
||||||
|
procenta, dokončené jednotky), progress bary u každého předmětu a rozpad
|
||||||
|
po jednotkách u Deutsch
|
||||||
|
- **Nastavení** – ozubené kolečko vpravo nahoře:
|
||||||
|
- **režim**: tmavý / světlý
|
||||||
|
- **téma**: 10 barevných palet
|
||||||
|
- **jazyk**: čeština nebo angličtina, bez restartu
|
||||||
|
- vše se ukládá do `progress/settings.conf`
|
||||||
|
- **Klávesové zkratky pro ukončení** – `Super/Cmd+Q` nebo `Alt+F4`
|
||||||
|
- Jeden C soubor, multiplatformní (Linux, macOS i Windows)
|
||||||
|
|
||||||
|
### Instalace
|
||||||
|
|
||||||
|
#### Požadavky
|
||||||
|
|
||||||
|
##### 1. Vývojářské knihovny GTK 4
|
||||||
|
|
||||||
|
macOS:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install gtk4
|
||||||
|
```
|
||||||
|
|
||||||
|
Linux (Debian / Ubuntu):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo apt install libgtk-4-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Linux (Fedora):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo dnf install gtk4-devel
|
||||||
|
```
|
||||||
|
|
||||||
|
Linux (Arch):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo pacman -S gtk4
|
||||||
|
```
|
||||||
|
|
||||||
|
Windows – oficiální instalátor GTK 4 neexistuje. Doporučený postup je
|
||||||
|
**MSYS2 + MinGW UCRT64** (bez Visual Studia). Viz
|
||||||
|
[Instalační návod pro Windows (GTK4)](#instalační-návod-pro-windows-gtk4)
|
||||||
|
níže.
|
||||||
|
|
||||||
|
##### 2. Build nástroje (kompilátor, Make, pkg-config)
|
||||||
|
|
||||||
|
macOS – nainstalujte je ručně, **nejsou** předinstalované:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
brew install gcc make pkg-config
|
||||||
|
# nebo Apple Clang:
|
||||||
|
# xcode-select --install
|
||||||
|
```
|
||||||
|
|
||||||
|
Linux – na většině distro je `gcc` už k dispozici
|
||||||
|
(`build-essential` / `base-devel`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Debian / Ubuntu
|
||||||
|
sudo apt install build-essential pkg-config
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Fedora
|
||||||
|
sudo dnf groupinstall "Development Tools"
|
||||||
|
sudo dnf install pkgconf-pkg-config
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Arch
|
||||||
|
sudo pacman -S base-devel pkgconf
|
||||||
|
```
|
||||||
|
|
||||||
|
Windows – `gcc`, GTK 4 i `pkg-config` se nainstalují v kroku 1 návodu níže.
|
||||||
|
Visual Studio není potřeba.
|
||||||
|
|
||||||
|
#### Sestavení aplikace
|
||||||
|
|
||||||
|
1. Naklonujte nebo stáhněte tento repozitář
|
||||||
|
2. Přejděte do složky projektu
|
||||||
|
3. Sestavte pomocí Makefile:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
Nebo ručně:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Linux / macOS
|
||||||
|
gcc -o maturita maturita.c $(pkg-config --cflags --libs gtk4) -lm
|
||||||
|
|
||||||
|
# Windows (MSYS2 UCRT64)
|
||||||
|
gcc -o maturita.exe maturita.c $(pkg-config --cflags --libs gtk4) -lm -mwindows
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Sestavení přes CMake (volitelné, Linux / macOS)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cmake -S . -B build
|
||||||
|
cmake --build build
|
||||||
|
```
|
||||||
|
|
||||||
|
CMake najde GTK 4 přes pkg-config. Na Windows použijte MSYS2 návod níže.
|
||||||
|
|
||||||
|
#### Spuštění aplikace
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make run
|
||||||
|
```
|
||||||
|
|
||||||
|
nebo
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Linux / macOS
|
||||||
|
./maturita
|
||||||
|
|
||||||
|
# Windows (ze stejného MSYS2 UCRT64 terminálu, ve kterém jste kompilovali)
|
||||||
|
./maturita.exe
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Instalační návod pro Windows (GTK4)
|
||||||
|
|
||||||
Následujte tyto kroky pro rychlé zkompilování a spuštění na Windows.
|
Následujte tyto kroky pro rychlé zkompilování a spuštění na Windows.
|
||||||
**Visual Studio není potřeba** – stačí MSYS2 a MinGW UCRT64.
|
**Visual Studio není potřeba** – stačí MSYS2 a MinGW UCRT64.
|
||||||
|
|
@ -248,9 +600,8 @@ Následujte tyto kroky pro rychlé zkompilování a spuštění na Windows.
|
||||||
6. **(Volitelně) Spuštění dvojklikem z Průzkumníka**
|
6. **(Volitelně) Spuštění dvojklikem z Průzkumníka**
|
||||||
|
|
||||||
Samotný `maturita.exe` bez MSYS2 terminálu obvykle spadne na chybějící
|
Samotný `maturita.exe` bez MSYS2 terminálu obvykle spadne na chybějící
|
||||||
DLL. Z UCRT64 terminálu (po instalaci `make` přes
|
DLL. Z UCRT64 terminálu (po instalaci `make`) můžete vytvořit složku
|
||||||
`pacman -S --noconfirm make`) můžete vytvořit složku `dist/` se vším
|
`dist/` se vším potřebným:
|
||||||
potřebným:
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pacman -S --noconfirm make
|
pacman -S --noconfirm make
|
||||||
|
|
@ -259,112 +610,102 @@ Následujte tyto kroky pro rychlé zkompilování a spuštění na Windows.
|
||||||
|
|
||||||
Pak spusťte `dist/maturita.exe` dvojklikem.
|
Pak spusťte `dist/maturita.exe` dvojklikem.
|
||||||
|
|
||||||
## Usage
|
### Použití
|
||||||
|
|
||||||
When launched, the application shows the welcome screen. From there:
|
Po spuštění se zobrazí úvodní obrazovka. Odtud:
|
||||||
|
|
||||||
1. Click **"Pokračuj" / "Continue"** to open the **Předměty / Subjects** map.
|
1. Klikněte na **"Pokračuj" / "Continue"** a otevře se mapa **Předměty /
|
||||||
2. Click the **Deutsch** bubble (German flag) to open the German learning
|
Subjects**.
|
||||||
roadmap, or the **IP** bubble ("Správa počítačových sítí") for the
|
2. Klikněte na bublinu **Deutsch** (německá vlajka) pro německou cestu, nebo
|
||||||
computer-networks path. Other subjects are still locked.
|
na bublinu **IP** („Správa počítačových sítí“) pro síťovou cestu. Ostatní
|
||||||
3. Browse the units along the path; the roadmap reflows into rows and scrolls
|
předměty jsou zatím zamčené.
|
||||||
if the window is too narrow.
|
3. Procházejte jednotky po cestě; při úzkém okně se cesta zalomí a scrolluje.
|
||||||
4. Click the **"Neue Freunde"** node to open unit 1, **"Aus aller Welt"** for
|
4. Otevřete **"Neue Freunde"** (jednotka 1), **"Aus aller Welt"** (2) nebo
|
||||||
unit 2 or **"Bei uns zu Hause"** for unit 3, then pick any bubble to start
|
**"Bei uns zu Hause"** (3) a vyberte bublinu cvičení. Jednotky 2 a 3 jdou
|
||||||
an exercise. Units 2 and 3 are available even if the earlier units are not
|
otevřít i bez dokončení předchozích.
|
||||||
finished yet.
|
5. Na síťové cestě otevřete **"Výpočet IP adres"** – 4 slidová vysvětlení
|
||||||
5. On the networks path, open **"Výpočet IP adres"** (the first unit) to walk
|
subnettingu a pak 4 úlohy s „ukázat řešení“.
|
||||||
through four slides on IP subnetting; the final slide leads to the practice
|
6. Tlačítkem **zpět** vlevo nahoře se vrátíte na předchozí obrazovku.
|
||||||
sheet with four subnetting tasks and per-task "show solution" answers.
|
7. **Statistiky** (ikona grafu vpravo nahoře) ukazují postup po předmětech
|
||||||
6. Use the **back button** in the top-left corner to return to the previous
|
(u Deutsch i po jednotkách).
|
||||||
screen.
|
8. **Nastavení** (ozubené kolečko) – tmavý/světlý režim, barevné téma nebo
|
||||||
7. Open **Statistiky / Statistics** (chart icon, top-right) to see progress
|
jazyk rozhraní.
|
||||||
grouped per subject (overall totals plus, for Deutsch, a per-unit
|
|
||||||
breakdown).
|
|
||||||
8. Open **Nastavení / Settings** (gear icon, top-right) to switch dark/light
|
|
||||||
mode, pick a color theme, or change the interface language.
|
|
||||||
|
|
||||||
Units 1–3 are currently implemented. Locked units do nothing – they are
|
Jednotky 1–3 jsou hotové. Zamčené jednotky nic nedělají – jsou to placeholdery.
|
||||||
placeholders until lessons are added. Completed exercises stay green and are
|
Dokončená cvičení zůstanou zelená a ukládají se do `progress/unit1.conf` /
|
||||||
saved per unit to `progress/unit1.conf` / `progress/unit2.conf` /
|
`progress/unit2.conf` / `progress/unit3.conf` (vzniknou vedle aplikace při
|
||||||
`progress/unit3.conf` (created next to the app on first finish).
|
prvním dokončení).
|
||||||
|
|
||||||
### Keyboard shortcuts
|
#### Klávesové zkratky
|
||||||
|
|
||||||
| Shortcut | Action |
|
| Zkratka | Akce |
|
||||||
| ------------------- | ---------------- |
|
| ------------------- | ----------------- |
|
||||||
| `Super/Cmd` + `Q` | Quit application |
|
| `Super/Cmd` + `Q` | Ukončit aplikaci |
|
||||||
| `Alt` + `F4` | Quit application |
|
| `Alt` + `F4` | Ukončit aplikaci |
|
||||||
|
|
||||||
## Project structure
|
### Struktura projektu
|
||||||
|
|
||||||
```
|
```
|
||||||
maturita.c entire application (UI, navigation, themes, exercises)
|
maturita.c celá aplikace (UI, navigace, témata, cvičení)
|
||||||
Makefile build & run targets (Linux, macOS, MSYS2); `make bundle` na Windows
|
Makefile build & run (Linux, macOS, MSYS2); `make bundle` na Windows
|
||||||
CMakeLists.txt optional CMake build (Linux / macOS)
|
CMakeLists.txt volitelný CMake build (Linux / macOS)
|
||||||
build-windows.bat legacy MSVC build (vyžaduje Visual Studio + gvsbuild GTK)
|
build-windows.bat legacy MSVC build (vyžaduje Visual Studio + gvsbuild GTK)
|
||||||
run-windows.bat legacy spouštění MSVC buildu s GTK DLL na PATH
|
run-windows.bat legacy spouštění MSVC buildu s GTK DLL na PATH
|
||||||
README.md this file
|
README.md tento soubor
|
||||||
LICENSE GPL-3.0 license
|
LICENSE licence GPL-3.0
|
||||||
progress/ created at runtime
|
progress/ vzniká za běhu
|
||||||
unit1.conf unit 1 exercise completion state
|
unit1.conf stav cvičení jednotky 1
|
||||||
unit2.conf unit 2 exercise completion state
|
unit2.conf stav cvičení jednotky 2
|
||||||
unit3.conf unit 3 exercise completion state
|
unit3.conf stav cvičení jednotky 3
|
||||||
settings.conf theme, dark/light mode and language preference
|
settings.conf téma, režim a jazyk
|
||||||
```
|
```
|
||||||
|
|
||||||
## Theming
|
### Témata
|
||||||
|
|
||||||
The app ships with ten palettes – Catppuccin, Nord, Dracula, Rose Pine, Ocean,
|
Aplikace má deset palet – Catppuccin, Nord, Dracula, Rose Pine, Ocean, Gruvbox,
|
||||||
Gruvbox, Solarized, Everforest, Monokai and One Dark – each available in dark
|
Solarized, Everforest, Monokai a One Dark – každou ve světlém i tmavém režimu.
|
||||||
and light mode. Colors are defined as theme palettes in `maturita.c` and
|
Barvy jsou v `maturita.c` a aplikují se přes generované CSS (a Cairo barvy pro
|
||||||
applied through a generated CSS stylesheet (plus matching Cairo colors for the
|
koleje a ikony na mapě).
|
||||||
roadmap rails and icons).
|
|
||||||
|
|
||||||
Change the look from the in-app settings panel, or edit the palette tables /
|
Vzhled změníte v nastavení, nebo upravte tabulky palet / `build_theme_css()` v
|
||||||
`build_theme_css()` in `maturita.c` and rebuild.
|
`maturita.c` a znovu zkompilujte.
|
||||||
|
|
||||||
## Languages
|
### Jazyky
|
||||||
|
|
||||||
The interface can be switched between Czech and English from the settings
|
Rozhraní přepnete mezi češtinou a angličtinou v nastavení; změna platí hned a
|
||||||
panel; the choice takes effect immediately and is remembered between runs.
|
zapamatuje se. Překlady jsou ve dvou tabulkách v `maturita.c`: `tr_ui` drží
|
||||||
Translations live in two tables in `maturita.c`: `tr_ui` holds interface
|
texty rozhraní pod krátkými klíči, `tr_content` překládá české významy u
|
||||||
strings under short keys, while `tr_content` translates the Czech meanings
|
německých cvičení (klíčem je samotný český text). Widgety se registrují přes
|
||||||
shown next to the German exercise items and uses the Czech text itself as the
|
`i18n_bind()`, aby je `apply_language()` přeložila na místě.
|
||||||
key. Widgets are registered with `i18n_bind()` so `apply_language()` can
|
|
||||||
retranslate them in place.
|
|
||||||
|
|
||||||
German prompts, unit names and exercise titles are learning material and stay
|
Německá zadání, názvy jednotek a cvičení zůstávají německá v obou jazycích
|
||||||
German in both languages.
|
rozhraní.
|
||||||
|
|
||||||
## To-Do Plans
|
### Plány do budoucna
|
||||||
|
|
||||||
Future enhancements planned for maturita.c:
|
- [ ] Napojit zbývající jednotky na skutečná cvičení slovní zásoby / gramatiky
|
||||||
|
- [x] Jednotka 1 („Neue Freunde“) – 13 interaktivních cvičení s ukládáním
|
||||||
|
- [x] Jednotka 2 („Aus aller Welt“) – 19 cvičení (včetně Hangmana)
|
||||||
|
- [x] Jednotka 3 („Bei uns zu Hause“) – 15 cvičení
|
||||||
|
- [ ] Postupné odemykání zbývajících jednotek
|
||||||
|
- [ ] Audio / výslovnost
|
||||||
|
- [x] Panel nastavení (téma, režim, jazyk)
|
||||||
|
- [ ] Spaced repetition pro slovní zásobu
|
||||||
|
- [ ] Poslech a čtení s porozuměním
|
||||||
|
- [ ] Psaní s feedbackem
|
||||||
|
- [x] Statistiky postupu
|
||||||
|
- [ ] Přesunout CSS do externího souboru
|
||||||
|
- [ ] Rozdělit UI kód do více souborů
|
||||||
|
- [x] Internacionalizace (čeština a angličtina)
|
||||||
|
- [ ] Další jazyky rozhraní
|
||||||
|
- [ ] Unit testy
|
||||||
|
|
||||||
- [ ] Wire unit nodes to actual German vocabulary/grammar exercises
|
### Licence
|
||||||
- [x] Unit 1 ("Neue Freunde") – 13 interactive exercises with progress saving
|
|
||||||
- [x] Unit 2 ("Aus aller Welt") – 19 interactive exercises (incl. Hangman)
|
|
||||||
- [x] Unit 3 ("Bei uns zu Hause") – 15 interactive exercises
|
|
||||||
- [ ] Lesson progression and unlock system for the remaining units
|
|
||||||
- [ ] Add audio pronunciation features
|
|
||||||
- [x] Add user settings panel (theme, dark/light mode, language)
|
|
||||||
- [ ] Implement spaced repetition system for vocabulary
|
|
||||||
- [ ] Add listening and reading comprehension exercises
|
|
||||||
- [ ] Add writing practice with feedback
|
|
||||||
- [x] Expand progress tracking with statistics
|
|
||||||
- [ ] Move CSS styling to an external file
|
|
||||||
- [ ] Split the UI code into multiple files
|
|
||||||
- [x] Add internationalization support (Czech and English)
|
|
||||||
- [ ] Add more interface languages
|
|
||||||
- [ ] Add unit testing framework
|
|
||||||
|
|
||||||
## License
|
Projekt je pod licencí GPL-3.0 – detaily viz soubor LICENSE.
|
||||||
|
|
||||||
This project is licensed under the GPL3.0 License - see the LICENSE file for
|
### Poděkování
|
||||||
details.
|
|
||||||
|
|
||||||
## Acknowledgments
|
- Vzniklo jako cvičení v C a GTK
|
||||||
|
- Inspirováno jazykovými učebními aplikacemi
|
||||||
- Created as a learning exercise in C and GTK programming
|
- Postaveno na GTK 4
|
||||||
- Inspired by language learning applications
|
|
||||||
- Built with GTK 4 for modern GUI development
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue