mirror of https://github.com/YGGverse/Yoda.git
phpcomposergeminigemini-protocolsmallwebaltwebgemini-browseryodagtk3browsergtkphp-gtkgemini-clientyoda-browserphp-cpp
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.
yggverse
b32b28b9b4
|
4 months ago | |
---|---|---|
bin | 5 months ago | |
po | 4 months ago | |
src | 4 months ago | |
.gitignore | 5 months ago | |
LICENSE | 5 months ago | |
Makefile | 4 months ago | |
README.md | 4 months ago |
README.md
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
Main application sources located at src/app
folder, by following 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)- Namespaces match filesystem path, where directories are named 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
#include
application.hpp
files 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 Yoda
git checkout CPP-GTK4
git pull
git checkout -b 'contribution-name'