mirror of https://github.com/YGGverse/Yoda.git
phpcomposergeminigemini-protocolsmallwebaltwebgtk3browsergtkphp-gtkgemini-clientyoda-browserphp-cppgemini-browseryoda
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.2 KiB
2.2 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.git
cd Yoda
git checkout CPP-GTK4
make
Update
git pull
make clean
make
Localization
Official
Personal
apt install intltool
cd po
intltool-update --pot
Development
Structure
Application sources located at src/app
folder, by following basic principles:
- Every file extends one of GTK 4 Widgets according to subject (e.g.
class Browser : public Gtk::ApplicationWindow
) src/app
does not contain other class entities like models or libraries (another folders and namespaces atsrc
root are reserved for these needs)- 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
Environment
pkg-config --cflags --libs gio-2.0\
glibmm-2.68\
gtkmm-4.0\
pangomm-2.48\
sqlite3
Contribution
cd Yoda
git checkout CPP-GTK4
git pull
git checkout -b 'contribution-name'