[ghex] Update READMEs and screenshots for impending appdata update.



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]