Developer Guide

Extending iBridges‑GUI

iBridges‑GUI supports a modular plugin system that allows developers to add new functionality through custom tabs.
Your plugin is automatically detected and integrated into the main application at runtime.

A minimal example and template structure are available in the
plugin example repository.

Contributing

iBridges‑GUI is an open‑source project, and we welcome contributions of all kinds — from bug reports and feature ideas to full pull requests.

Main repository:
iBridges‑GUI on GitHub

Contribution workflow

  1. Fork the repository
  2. Create a feature branch from develop
  3. Implement your changes
  4. Submit a pull request back to develop

This workflow helps us review changes efficiently and maintain a clean development history.

Code structure overview

The core application lives in the
ibridgesgui
package. Its architecture is modular, separating UI, logic, and iRODS operations into clear components.

Top-level modules

These modules provide the core functionality used across the application:

  • __main__.py — application entry point
  • config.py — configuration handling
  • gui_utils.py — shared GUI helpers
  • threads.py — background worker threads
  • info.py — application metadata
  • irods_tree_model.py — iRODS tree model
  • login.py — authentication
  • logviewer.py — log viewer tab
  • welcome.py — startup screen
  • md_schemas/ — metadata schema definitions

browsertab/

Implements the iRODS browser tab using a model–controller–view structure:

  • browser_model.py — data model
  • browser_controller.py — navigation and logic
  • browser.py — UI
  • irods_browser_service.py — iRODS operations

searchtab/

Implements the search interface:

  • search_model.py — query state and results
  • search_controller.py — executes searches and handles filters
  • search.py — UI for building queries and viewing results

synctab/

Implements synchronization:

  • sync_model.py — sync state and configuration
  • sync_controller.py — sync logic and background tasks
  • sync.py — UI for managing sync jobs

ui_files/

Contains:

  • Qt Designer .ui files
  • auto‑generated Python wrappers
  • matching controller/view logic

This keeps UI layout editable without touching logic.

icons/

Contains all icons used in the GUI, including navigation arrows, sync indicators, loading animations, and the application logo.