pyside-ibo
https://gitlab.com/iborco-software/python/pyside-ibo
https://gitlab.com/iborco-software/python/pyside-ibo-obsolete
Not an application but the shared PySide6 utility library the last two predecessors consumed as a git submodule — "common classes and widgets for PySide6 projects." It exists in two generations that share a name: TutCatalog5 used the first, Resource Hub a ground-up second.
The two snapshots
| pyside-ibo-obsolete (1st) | pyside-ibo (2nd) | |
|---|---|---|
| Period | 2025/05/07 – 2025/05/31 | 2026/05/04 – 2026/06/04 |
| Commits | 108 | 96 |
| Consumed by | TutCatalog5 | Resource Hub |
| Declares | name = "pyside-ibo", version = "0.1.0" |
name = "pyside-ibo", version = "0.1.0" |
Both share one .gitmodules URL, so only the pinned submodule commit tells them apart (TutCatalog5 pins 7a82b82, in pyside-ibo-obsolete; Resource Hub pins 86f0085, in pyside-ibo).
What each contains
The second is not an evolution of the first — it is a narrower rewrite. It dropped the entire UI surface (image browser, Markdown widgets, the generic widget set) and added the application-singleton and property machinery instead:
| Module | obsolete (1st) | pyside-ibo (2nd) |
|---|---|---|
core/application_singleton |
— | ✅ |
core/properties (SimpleProperty, ObjectProperty) |
— | ✅ |
core/datetime, core/exceptions |
— | ✅ |
core/connection_list |
✅ | ✅ |
core/settings, core/path_mixin, core/unique_keys_enum |
✅ | — |
logging/ — full GUI stack: LogWidgetBridge + model/filter/view/delegates + widget (~750–850 LOC) |
✅ (log_widget_mixin) |
✅ (log_window) |
sys/windows/registry |
✅ | ✅ |
sys/windows/utils, constants.py |
✅ | — |
image_browser/ (model/view/delegate/single-view) |
✅ | — |
markdown/ (editor, viewer, utils) |
✅ | — |
widgets/ (flow_layout, line_edit, path_edit, hidden_tool_button, single_selection) |
✅ | — |
Formats and external state
Being a library it owns no document format. What it touches:
QSettingsapp state (the first snapshot'score/settings.py).- Windows registry (
sys/windows/registry.py) — file-extension, context-menu and open-with registration; the Windows half of rehuco's file-association work.
Ledger: what is in the code, and is it still worth digging out
rehuco depends on neither snapshot; what it needs lives in borco-core / borco-pyside. The last column is the
question that matters here: does the old code still hold something not yet in rehuco?
| pyside-ibo module | Counterpart in rehuco | Worth digging out? |
|---|---|---|
application_singleton (2nd) |
Built — borco_pyside/core/application_singleton.py |
No |
properties (2nd) |
Built — SimpleProperty, TypedProperty for ObjectProperty |
No |
connection_list (both) |
Built — borco_pyside/core/connection_list.py |
No |
logging/ (both) |
Built — borco_pyside/logging/, see below |
No |
sys/windows/registry (both) |
Built — borco_core/platforms/windows/ |
No |
sys/windows/utils (1st): open in code editor, reveal in file explorer |
Reveal built — borco_pyside/file_browser.py; open-in-editor not carried |
TBD |
markdown/ viewer (1st) |
Built — rich_text_view |
No |
markdown/ editor (1st) |
Built differently — on pyside6-scintilla | No |
image_browser/ (1st): list model, view, delegate, single view |
Strip and lightbox built; a grid over a library is #403 | Yes — the one piece of the 1st snapshot that #403 could start from |
widgets/flow_layout, line_edit (1st) |
Built — borco_pyside/widgets/ |
No |
widgets/hidden_tool_button (1st): a button shown only on hover or press |
Not carried | TBD |
widgets/path_edit_widget (1st) |
Not carried; rehuco's path field is its own | TBD |
widgets/single_selection_widget (1st) |
Not carried | TBD |
core/settings, path_mixin, unique_keys_enum (1st) |
Not carried; rehuco has its own persistent-settings helpers | TBD |
core/exceptions.raise_with_stacklevel, core/datetime.utcnow (2nd) |
Not carried | TBD |
The in-app log surface
[[[pyside-ibo#log-stack]]]
What pyside-ibo's logging had, and where rehuco's borco_pyside/logging/ differs:
LogWidgetBridge, alogging.Handlerthat caches every record and replays them to a widget attached later. Carried asLogBridge; the sink takes a batch, not a record, and there can be several sinks, each scoped and cleared independently ([[appendices.logging#routing]]). pyside-ibo had one widget, whose clear also emptied the cache.LogModel,LogFilterModel,LogView, the level and message delegates,LogWidget/LogWindow. Carried. Level colours are classified byLogLevelBand.of([[appendices.logging#bands]]) rather than anifladder that missed levels between the named ones, painted as a low-alpha wash so one set works in both themes, and follow-tail reads the scrollbar position rather than the wheel.LogItem, a mutable dataclass that picked its own colour. Not carried;LogEntryis frozen and carries the scope and a run-long serial.
Importing its data
None — it defines no document format.