JSesh is a Java hieroglyphic editor mostly developed by Serge Rosmorduc (serge.rosmorduc@qenherkhopeshef.org)
JSesh developpers :
- Serge J.-P. Thomas : most of the fonts
- Serge Rosmorduc : almost all the code, a few glyphs in the fonts
- Wayne Collins (CVS, ant improvement)
Licenses for the various libraries used by JSesh can be found in resources/licenses
-
JSesh source code itself is licenced under the CECILL-C license, which is roughly equivalent to the LGPL.
-
some files are explicitly licenced under more permissive licenses (CC0 and CC-BY-SA). See the headers of those files for details.
-
the file
jsesh/src/main/resources/jsesh/glyphs/resources/signs_description.xmlis licensed under CC-BY. -
JSesh fonts drawn by Serge J.-P. Thomas are distributed with the following license:
- it is allowed to distribute the fonts with JSesh;
- it is allowed to use the fonts when JSesh is used as a library for other softwares;
- it is allowed to use JSesh fonts for publications (paper, databases, web sites);
- it is allowed to modify the signs and use them under the same terms.
- M. Thomas doesn't want the font to be used for other hieroglyphic word processors.
- Please note that this can't be changed. I am aware that this might be a bit inconvenient for some projects.
JSesh sources can be loaded in an IDE (Eclipse, Netbeans, IntelliJ, VSCode), or built from the command line using Gradle.
Building the sources
: ./gradlew build
Running JSesh directly (from the root folder of the project)
: ./gradlew jseshAppli:run
Running the sign info editor
: ./gradlew signInfoAppli:run
Building the distribution for the current platform
: ./gradlew jpackage
You will find the distribution in jsesh-installer/build/jpackage.
The sources contain the following folders and modules:
The 00_Documents folder contains :
00_Documents/tracking : groups project-tracking material: ADRs, TODOs, and DONE items.
00_Documents/tracking/ADR : Architecture Decision Records (ADRs) for the project. These are personal notes about design decisions made during development.
00_Documents/changelog : trace of changes in the project.
00_Documents/documentation : contains developper documentation
00_Documents/formats : contains information about some file formats used by JSesh.
00_Documents/IDE : contains information about how to use IDEs with JSesh.
00_Documents/journal : a daily log of development, started in 2018 (well, mostly in 2024 I think).
00_Documents/notes : stuff I wrote, but haven't classified yet.
00_Documents/tracking/TODO : a structured list of things to do, with a priority system (easy, important, long term).
- jhotdrawfw: the "application framework" part of JHOTDRAW 7, adapted from JHotDraw 7 by Walter Randelshofer;
- jsesh: the main jsesh library;
- jsesh-installer: the system for building JSesh distribution;
- jseshGlyphs: the main hieroglyphic font;
- jseshLabels: the labels for menus, buttons, etc. in Jsesh all in one place to ease translation of the software;
- jseshSearch: the search module;
- jseshTests: various small softwares used to check JSesh runs correctly. Only interesting if you develop JSesh;
- qenherkhopeshefUtils: sundry utilities to help writing JSesh and Swing softwares. Some are outdated (the guiFramework has been replaced by jHotdraw);
- signInfoAppli: the editor for sign information.
- All demonstrations for programmers have moved to the project jseshDemos;
- utilities softwares belongs to the project jseshUtils;
- the texts are available in MDC-texts (but there is a copy of them in JSesh).
With the gradle plugin, JSesh can be edited with VSCode. I did the following to ensure the code is up to date when running the software:
.vscode/launch.json file:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "Current File",
"request": "launch",
"mainClass": "${file}"
},
{
"type": "java",
"name": "JSesh application",
"request": "launch",
"mainClass": "jsesh.jhotdraw.Main",
"projectName": "jsesh-all-jseshAppli",
"preLaunchTask": "Build JSesh application classes"
},
{
"type": "java",
"name": "Sign Info Application",
"request": "launch",
"mainClass": "jsesh.utilitysoftwares.signinfoeditor.Main",
"projectName": "jsesh-all-signInfoAppli",
"preLaunchTask": "Build SignInfo application classes"
}
]
}.vscode/tasks.json file:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build JSesh application classes",
"type": "shell",
"command": "./gradlew",
"args": [
":jseshAppli:classes"
],
"options": {
"cwd": "${workspaceFolder}"
},
"group": "build",
"problemMatcher": []
},
{
"label": "Build SignInfo application classes",
"type": "shell",
"command": "./gradlew",
"args": [
":signInfoAppli:classes"
],
"options": {
"cwd": "${workspaceFolder}"
},
"group": "build",
"problemMatcher": []
}
]
}There seems to be a problem with the eclipse plugin for maven regarding generated sources: the "jsesh" maven module will report missing classes in eclipse.
A quick fix:
-
import the JSesh-all project in eclipse (import maven project)
-
open the jsesh module, and, on the pom.xml file, select "run as/maven package". This will create the missing files
-
then, you need to add the corresponding folders to the jsesh eclipse project as "source folders".
- In the jsesh module, open target/generated sources
- Then right click on target/generated sources/cup, and select the menu entry "build path/use as source folder". do the same for the target/generated sources/lex folder.
That's it.
This is only done if you are in charge of updating the JSesh text base or the JSesh sign base (that is, if I did stop maintaining JSesh, and you decide to take over).
That is, you most probably don't need to do it.
Beware if you do it, it can delete files you need in JSesh (and you can use git to restore them).
To update the JSesh external data, run:
./gradlew prepareResourcesIt uses path from my own computers to find the original data (you can find the said path in gradle.properties)
There are many ways you can help on JSesh:
- you can report bugs and make suggestions, either by sending me an email, or by using the github issue tracker;
- you can help with the translation of the software;
- you can help with the documentation of the software;
- you can send texts for the JSesh text base;
- you can design hieroglyphs in SVG;
- you can help with the code and fix bugs or add new features.
To help with the translation of JSesh, you need to get the source code (you are at the right place). If you know how to use git, it's simpler. If not, you can download the sources as a zip file.
The files you need to edit are placed in the folder jseshLabels/src/main/resources/jsesh/resources. There is a file for each supported language. Each file name is of the form labels_XX.properties, where XX is the language code (for instance, fr for French, en for English, etc. The list of those two letter codes corresponds to the Iso 639 Standard). The default language is English, and the corresponding file is labels.properties (without any language suffix).
If you want to add a new language, simply copy one of them (probably the english one), rename it, and edit it. Only change the right side of entries, and leave the lines with “AcceleratorKey” or “shortcut” alone.
Most lines are relatively easy to translate, such as
edit.insertNextLineNumber.text=Next Line Numberwhich gives in the French translation:
edit.insertNextLineNumber.text=numéro de ligne suivantOther contain specific placeholders, such as {0} or {1}. They will be replaced by text or numbers by the software. Suppose they are a word in your sentence and place them logically.
For instance:
file.quickPDFExportFolder.ok=Selected {0} for PDF Outputgives in the French translation:
file.quickPDFExportFolder.ok=Les exportations pdf seront dans le dossier {0}Once you have translated the file, you can send it to me by mail (or use a pull request if you know how to use git). Please consider that JSesh is not a founded project, that we do it in our free time, and try to avoid unnecessary work for us. So keep the order of the lines as is.
If you want to help with the code, the best way is to fork the project on github.
Get in touch with me (either through issues or by mail) to discuss what you want to do. Of course, you can also propose a genuine fork if you want to explore something completely different. But if you want to contribute to the main project, please discuss it with me first.
Note that I take care of having a clean codebase, and try to follow the same coding style. I can probably help.
Once your modified code runs, you can send me a pull request. I will then check it, and merge it if it is ok.
The folder 00_Documents contains documentation about the code and its architecture.
To get the number of downloads for version 7.2.0 :
curl -i https://api.github.com/repos/rosmord/jsesh/releases/11259307Remove the last number for all releases.