[ghex] Update READMEs and screenshots for impending appdata update.
- From: Logan Rathbone <larathbone src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ghex] Update READMEs and screenshots for impending appdata update.
- Date: Sat, 11 Dec 2021 00:39:22 +0000 (UTC)
commit 4fb3db22937386545e6f6d9f7d34ce1d42bdc457
Author: Logan Rathbone <poprocks gmail com>
Date: Fri Dec 10 19:38:26 2021 -0500
Update READMEs and screenshots for impending appdata update.
HACKING | 92 +++++++++++++++++++++++++++++++++++++-----------
PRE-ALPHA-INFO.txt | 29 ++++++++++-----
data/appdata/ghex-1.png | Bin 57314 -> 140223 bytes
data/appdata/ghex-2.png | Bin 99447 -> 155723 bytes
4 files changed, 91 insertions(+), 30 deletions(-)
---
diff --git a/HACKING b/HACKING
index 427ddfc..9b4133d 100644
--- a/HACKING
+++ b/HACKING
@@ -1,32 +1,82 @@
+GHEX HACKING GUIDE
+==================
+
+INTRODUCTION
+------------
+
+Welcome! By way of introduction, first let it be stated that we aim for the
+GHex project to be as hacker-friendly as possible, especially for newcomers.
+
+No suggestion or question is dumb, and everyone who puts forth a genuine effort
+will be treated with utmost respect within this project.
+
+Although GHex is part of the GNOME Extra Apps family, I adopt fully the GNOME
+Code of Conduct, as well as the common-sense principle of "Be Excellent to
+Each Other."
+
HOW TO BUILD FROM GIT
+---------------------
+
+First install the build dependencies (i.e. libraries that ghex uses).
+If you're on Debian or Ubuntu you can install the build dependencies
+of the distro packaged version of ghex using the command:
+
+ sudo apt-get build-dep ghex
+
+If you're on Fedora, the equivalent command is:
+
+ sudo yum-builddep ghex
+
+Other distributions have similar commands for their package managers.
+Of course, there is no guarantee that the build dependencies of the
+distro packaged version is the same as the git version, but in practice
+the former gets you quite far and if not, autogen.sh will tell you
+what is missing during the next step.
+
+To configure and build the git version of ghex, run:
+
+ git clone git gitlab gnome org:GNOME/ghex.git # Using SSH
+ git clone https://gitlab.gnome.org/GNOME/ghex.git # Using HTTPS
+ cd ghex
+ meson build
+ cd build
+ ninja-build
+ sudo ninja-build install
- First install the build dependencies (i.e. libraries that ghex uses).
- If you're on Debian or Ubuntu you can install the build dependencies
- of the distro packaged version of ghex using the command:
+For instructions on how to prepare a patch, see:
- sudo apt-get build-dep ghex
+ https://wiki.gnome.org/Git/Developers#Contributing_patches
- If you're on Fedora, the equivalent command is:
+CODING STYLE
+------------
- sudo yum-builddep ghex
+We all have our relgious beliefs when it comes to coding styles. At the GHex
+project, we are not uber-pedantic when it comes to these things, but I do
+believe that consistency within a codebase is important. To that end, here are
+some basic principles that apply:
- Other distributions have similar commands for their package managers.
- Of course, there is no guarantee that the build dependencies of the
- distro packaged version is the same as the git version, but in practice
- the former gets you quite far and if not, autogen.sh will tell you
- what is missing during the next step.
+- To the extent possible, let's keep our user interface defined in .ui files,
+ and reserve our C code for callbacks and things that C is actually good for,
+ like, you know, programming! In the GHex project, this mainly applies to new
+ UI features; pre-existing features that have been with GHex for a long time and
+ have been done programmatically can continue to be updated and ported to new
+ APIs as necessary.
- To configure and build the git version of ghex, run:
+* Tabs, not spaces. I prefer tab-shifts and shift-widths of 4, but that's the
+ beauty of tabs! You can define them to be whatever you want them to be!
- git clone git gitlab gnome org:GNOME/ghex.git # Using SSH
- git clone https://gitlab.gnome.org/GNOME/ghex.git # Using HTTPS
- cd ghex
- meson build
- cd build
- ninja-build
- sudo ninja-build install
+* When it comes to function definitions, I prefer the usual GNOME/GTK style,
+ which is basically K&R style except with the return type on a separate line
+ from the function name and parameters.
+* When it comes to if, etc. statements, I'm not super picky. I just want the
+ code to be as readable as possible. I prefer spaces between `if` and the
+ opening parenthesis.
- For instructions on how to prepare a patch, see:
+* Keep a maximum of approximately 80 characters per line, please. I don't mind
+ going a bit over, but I don't have the best eyesight and tend to look at code
+ in vim with the source file in one column and the header in another, so keeping
+ things at 80 characters keeps things relatively readable in 2-column displays
+ without ugly wrapping.
- https://wiki.gnome.org/Git/Developers#Contributing_patches
+* No mid-block declarations.
diff --git a/PRE-ALPHA-INFO.txt b/PRE-ALPHA-INFO.txt
index 9fde245..c67f40d 100644
--- a/PRE-ALPHA-INFO.txt
+++ b/PRE-ALPHA-INFO.txt
@@ -6,13 +6,6 @@ from GHex 3.x and, as of the time of writing, has only been recently merged to
the `master` branch (December 2021), it will require some substantial testing
and translation updates.
-I have tried to write new GHex code in such a way that it is cleaner, easier
-to follow, and more commented than the old code that has been straight-ported.
-I was not able to do as substantial a reorganization of the old code as I
-would have liked for this pre-alpha merge, but efforts will be ongoing. One of
-my goals is to make this code more hacker-friendly in general, especially to
-newcomers.
-
Visibly to the end user, some new features include:
- More modern and up-to-date look and feel, consistent with the GNOME HIG.
@@ -21,16 +14,27 @@ Visibly to the end user, some new features include:
overridden with a checkbox and a switch in the Preferences dialog).
- Custom clipboard data, for less error-prone copying and pasting of binary
data; this will fall back to plaintext when unavailable.
+ - Copy and Paste Special dialogs, which allow you to, for instance, copy and
+ paste hex pairs from GHex into other applications, and from other
+ applications into GHex.
I'll break up the known issues into two categories: items I would consider to
be blockers for a stable release, and other known issues, which will be
earmarked for priority after the first stable release of GHex 4.
Blockers for stable release:
+
+ - The layout manager does not currently work perfectly. With group types
+ other than 'byte' in particular, the allocation of space is poor. With the
+ default 'byte' group type, it works better, but it does not use the full
+ amount of its allocated size as efficiently as possible.
+
- Fixes for lots of UI imperfections, including widgets not grabbing focus
when they should; also there are some obvious missing keybindings.
+
- The offsets column shows some spurious lines when a file is first loaded.
This can be cleared by clicking anywhere on the hex widget to clear it.
+
- The hex-document portion of the gtkhex library is a relic of code written
in the 90s, and it shows. Some more sophisticated caching and memory
management is in order as opposed to simply calling g_malloc on basically
@@ -38,7 +42,14 @@ Blockers for stable release:
unpredictable behaviour when very large files are loaded.
Other known issues to be addressed in a future version:
- - The layout manager does not currently work perfectly with group types other
- than 'byte'; the allocation of space is poor.
+
+ - The HexDocument API is fine as a GObject API, and has been reworked into a
+ final type, to allow for the underlying implementation to be changed in the
+ future. But, at the backend it is still stuck in the 90s with its malloc'ing
+ of the file as a whole into a giant buffer instead of using more sophisticated
+ memory mapping. This makes GHex choke on very large files and causes other
+ unpredictable behaviour. There are many excellent backends baked into glib2,
+ and HexDocument should be migrated to a more sophisticated and reliable
+ backend mechanism.
(Logan Rathbone <poprocks gmail com>)
diff --git a/data/appdata/ghex-1.png b/data/appdata/ghex-1.png
index df98aea..ab8733c 100644
Binary files a/data/appdata/ghex-1.png and b/data/appdata/ghex-1.png differ
diff --git a/data/appdata/ghex-2.png b/data/appdata/ghex-2.png
index 5e505b7..0249add 100644
Binary files a/data/appdata/ghex-2.png and b/data/appdata/ghex-2.png differ
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]