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
- Fork the repository
- Create a feature branch from
develop
- Implement your changes
- 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
popup_widgets/
Reusable dialogs for:
- creating collections
- creating directories
- uploading/downloading
- renaming
- metadata editing
- configuration checks
- resource tree dialogs
Each dialog has its own file, making them easy to reuse or extend.
ui_files/
Contains:
- Qt Designer
.uifiles
- 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.