GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - timrid/construct-editor: GUI (based on wxPython) for 'construct', which is a powerful declarative and symmetrical parser and builder for binary data.

BranchesTags
Open more actions menu

Latest commit

 

History

335 Commits
335 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
.vscode
.vscode
 
 
construct_editor
construct_editor
 
 
doc
doc
 
 
tests
tests
 
 
.gitignore
.gitignore
 
 
CHANGELOG.md
CHANGELOG.md
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
pyproject.toml
pyproject.toml
 
 
uv.lock
uv.lock
 
 

Repository files navigation

Construct Editor

This package provides a GUI (based on wxPython) for 'construct', which is a powerful declarative and symmetrical parser and builder for binary data. It can either be used standalone or embedded as a widget in another application.

Preview

Features:

  • show documentation as tooltip
  • different editors for:
    • Integer values
    • Enum values
    • FlagsEnum values
    • DateTime values
  • undo/redo in HexEditor and in ConstructEditor
  • extensible for custom constructs

Installation

The preferred way to installation is via PyPI:

pip install construct-editor

Development

This project uses uv as a project management tool. To set up your development environment, run the following command:

uv sync

To run the unit tests, run:

uv run poe test

To run the linter/code formatter (including auto fix), run:

uv run poe lint

To run all supported type checkers (currently mypy, pyright and ty), run:

uv run poe typecheck

To run unit tests, linter/code formatter and type checkers, run:

uv run poe check-all

Getting started (Standalone)

To start the standalone version, just execute the following in the command line:

construct-editor

Getting started (as Widgets)

This is a simple example

import wx
import construct as cs
from construct_editor.wx_widgets import WxConstructHexEditor

constr = cs.Struct(
    "a" / cs.Int16sb,
    "b" / cs.Int16sb,
)
b = bytes([0x12, 0x34, 0x56, 0x78])

app = wx.App(False)
frame = wx.Frame(None, title="Construct Hex Editor", size=(1000, 200))
editor_panel = WxConstructHexEditor(frame, construct=constr, binary=b)
editor_panel.construct_editor.expand_all()
frame.Show(True)
app.MainLoop()

This snipped generates a GUI like this:

Screenshot of the example

Widgets

ConstructHexEditor

This is the main widget ot this library. It offers a look at the raw binary data and also at the parsed structure. It offers a way to modify the raw binary data, which is then automaticly converted to the structed view. It also supports to modify the structed data and build the binary data from it.

ConstructEditor

This is just the right side of the ConstructHexEditor, but can be used also used as standalone widget. It provides:

  • Viewing the structure of a construct (without binary data)
  • Parsing binary data according to the construct

HexEditor

Just the left side of the ConstructHexEditor, but can be used also used as standalone widget. It provides:

  • Viewing Bytes in a Hexadecimal form
  • Callbacks when some value changed
  • Changeable format via TableFormat

About

GUI (based on wxPython) for 'construct', which is a powerful declarative and symmetrical parser and builder for binary data.

Resources

Readme
MIT license
Activity

Stars

48 stars

Watchers

7 watching

Forks

10 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.