mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
2.6 KiB
2.6 KiB
Yoda - Browser for Gemini protocol
C++ / GTK 4 implementation, see also PHP-GTK3 experimental branch
Important
Project in development!
Build
Linux
apt install git\
libglib2.0-dev\
libglibmm-2.68-dev\
libgtkmm-4.0-dev\
libpangomm-2.48-dev\
libsqlite3-dev
git clone https://github.com/YGGverse/Yoda.gitcd Yodagit checkout CPP-GTK4make
Update
git pullmake cleanmake
Localization
Official
Personal
apt install intltoolcd pointltool-update --pot
Development
Introduction
Project structure and codebase in development, this section would help with understand what is going on, before you start to read the sources.
Currently, application sources located at src/app folder, written by following principles:
- Every file implement (extend) one of GTK 4 Widgets, according to the functional subject (e.g.
class Browser : public Gtk::ApplicationWindow) src/appdoes not contain other class types like models or libraries (another folders and namespaces atsrcroot are reserved for these needs)- Namespaces match filesystem path, where directory namespaces are lowercase
- Every file work with it own, 1th level child only, to prevent massive logic levels keeping in mind
- To access any children features, deeper or higher than 1th level of current class, use delegation methods (actions, getters and setters)
- One file - one class. If the file requires additional (GTK) component, this component should be placed at similar folder with same name as parent filename. So we have simple hierarchy navigation logic - from app to window, from window to it container, etc.
- At this moment, all constants named with uppercase, const everything that not mutable
#includeapplication.hppfiles in.cpp. For system libraries, use headers only. Do not place system dependencies in.cpp
Environment
pkg-config --cflags --libs gio-2.0\
glibmm-2.68\
gtkmm-4.0\
pangomm-2.48\
sqlite3
Contribution
cd Yodagit checkout CPP-GTK4git pullgit checkout -b 'contribution-name'