LCUI is a freely available software library to create GUI application.
It is written in C, support the use XML and CSS describe the graphical interface, you can use it to make some simple effects, like in this example:
Author is from China, but his English is not very good, so, some files will appear chinese character, please understand. thanks.
Please read the file docs/CHANGES.md
, it contains IMPORTANT INFORMATION.
Read the file INSTALL
for installation instructions.
See the file docs/LICENSE.TXT
for the available licenses.
Tutorial: https://lcui.lc-soft.io/guide/
API reference documentation has not yet been prepared, you can refer to the header files, source code, and sample programs.
To bootstrap the build you need to run ./configure
(in the root of the
source tree).
In the simplest case you would run:
git clone https://github.com/lc-soft/LCUI.git
cd LCUI
./autogen.sh
./configure
If you want to build full-featured LCUI, we suggest you install the following dependent libraries:
- libpng — PNG image compression library
- libjpeg — JPEG image compression library
- libxml2 — The XML C parser and toolkit
- libx11 — X11 client-side library
- freetype — Font engine
If you system is Ubuntu, you can run following command to install dependencies:
apt-get install libpng-dev libjpeg-dev libxml2-dev libfreetype6-dev libx11-dev
LCUI is mainly develop in the Windows environment, you can use VisualStudio
to open file build/VS2012/LCUI.sln
and compile LCUI.
Please report bugs by e-mail to lc-soft@live.cn
. Don't forget to send a
detailed explanation of the problem -- there is nothing worse than receiving
a terse message that only says it doesn't work
.
You can send pull requests via GitHub.
Patches should:
- Follow the style of the existing code.
- One commit should do exactly one thing.
- Commit messages should start with a summary line below 80 characters followed by a blank line, and then the reasoning/analysis for why the change was made (if appropriate).
- Commits that fix a bug in a previous commit (which has already been
merged) should start with
fixup!
and then the summary line of the commit it fixes. If you are writing your commit message in LCUI then typefix⇥
to get the prefix and a menu allowing you to pick the summary line from one of the last 15 commits. - Rebase your branch against the upstream’s master. We don’t want to pull redundant merge commits.
- Be clear about what license applies to your patch: The files with in this repository are under the [GPL 2][] (or later) but (as the original creator) we are still allowed to create non-free derivatives. However, if patches are given to us under GPL then those cannot make it into any non-free derivatives we may later wish to create. So to make it easier for us (and avoid any legal issues) we prefer if patches are released as public domain.
You can donate support the development of LCUI.
I'm currently an independent developer and your contributions are useful. I have setup an LCUI Patreon page if you want to donate and enable me to spend more time improving the library. One-off donations are also greatly appreciated. Thanks!
Developing patches should follow this workflow:
- Fork on GitHub (click Fork button)
- Clone to computer:
git clone git@github.com:«github account»/LCUI.git
- cd into your repo:
cd LCUI
- Set up remote upstream:
git remote add -f upstream git://github.com/lc-soft/LCUI.git
- Create a branch for the new feature:
git checkout -b my_new_feature
- Work on your feature, add and commit as usual
Creating a branch is not strictly necessary, but it makes it easy to delete your branch when the feature has been merged into upstream, diff your branch with the version that actually ended in upstream, and to submit pull requests for multiple features (branches).
- Push branch to GitHub:
git push origin my_new_feature
- Issue pull request: Click Pull Request button on GitHub
If a lot of changes has happened upstream you can replay your local changes
on top of these, this is done with rebase
, e.g.:
git fetch upstream
git rebase upstream/master
This will fetch changes and re-apply your commits on top of these.
This is generally better than merge, as it will give a clear picture of which commits are local to your branch. It will also “prune” any of your local commits if the same changes have been applied upstream.
You can use -i
with rebase
for an “interactive” rebase. This allows
you to drop, re-arrange, merge, and reword commits, e.g.:
git rebase -i upstream/master
The LCUI Project is released under the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.
Liu Chao lc-soft@live.cn
Special thanks to Liu Chao for his great work on the LCUI's development.
Support us with a monthly donation and help us continue our activities. [Become a backer]
Become a sponsor and get your logo on our README on Github with a link to your site. [Become a sponsor]
--- end of README.md ---