# czyt1988/saribbon architecture

> Architecture diagram of the GitHub repository czyt1988/saribbon, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/czyt1988/saribbon
- Repository: https://github.com/czyt1988/saribbon

## Overview

SARibbon is a Qt ribbon-interface library for desktop applications. An application creates a ribbon main window, organizes commands into categories and panels, and presents them as ribbon actions; users select or trigger those actions to invoke application behavior. The graph also captures documented customization, themes, galleries, color widgets, action search/management, and Python bindings. Core structure is supported by the README and sampled APIs/demos; unsampled subsystem links are omitted where implementation wiring cannot be confirmed.

Main entry points: [`src/SARibbonBar/SARibbonBar.cpp`](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonBar.cpp) (Ribbon Bar), [`src/SARibbonBar/SARibbonMainWindow.cpp`](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonMainWindow.cpp) (Ribbon Main Window), [`src/SARibbonBar/SARibbonToolButton.cpp`](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonToolButton.cpp) (Ribbon Actions), [`src/SARibbonBar/SARibbonCategory.cpp`](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonCategory.cpp) (Category Pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ribbon["Ribbon Interface"]
  node_mainwindow["Ribbon Main Window"]
  node_ribbonbar["Ribbon Bar<br/>[SARibbonBar.cpp]"]
  node_category["Category Pages"]
  node_panel["Command Panels<br/>[SARibbonPanel.cpp]"]
  node_actions["Ribbon Actions"]
  node_layout["Adaptive Layout"]
end

subgraph group_features["Ribbon Features"]
  node_customize["Ribbon Customization"]
  node_themes["Theme Manager"]
  node_gallery["Gallery Widget"]
  node_color["Color Widgets<br/>[SAColorMenu.cpp]"]
  node_actionmgr["Action Manager"]
  node_quickaccess["Quick Access Bar"]
  node_frameless["Frameless Support"]
end

subgraph group_integration["Application Integration"]
  node_elementfactory["Element Factory"]
  node_qt["Qt Framework"]
end

subgraph group_bindings["Python Bindings"]
  node_pyqt5["PyQt5 Binding<br/>[pyproject.toml]"]
  node_pyqt6["PyQt6 Binding<br/>[pyproject.toml]"]
  node_pyside6["PySide6 Binding<br/>[__init__.py]"]
end

node_developer(("Application Developer"))
node_user(("Desktop User"))

node_developer -->|"creates"| node_mainwindow
node_mainwindow -->|"provides"| node_ribbonbar
node_developer -->|"configures"| node_ribbonbar
node_ribbonbar -->|"adds pages"| node_category
node_category -->|"adds panels"| node_panel
node_panel -->|"presents commands"| node_actions
node_user -->|"triggers"| node_actions
node_actions -->|"signals command"| node_developer
node_ribbonbar -->|"lays out"| node_layout
node_developer -->|"customizes"| node_customize
node_developer -->|"selects theme"| node_themes
node_developer -->|"adds gallery"| node_gallery
node_developer -->|"adds color controls"| node_color
node_ribbonbar -->|"registers actions"| node_actionmgr
node_developer -->|"adds shortcuts"| node_quickaccess
node_mainwindow -.->|"uses when enabled"| node_frameless
node_developer -->|"sets factory"| node_elementfactory
node_elementfactory -->|"creates elements"| node_ribbonbar
node_mainwindow -->|"uses widgets"| node_qt
node_pyqt5 -.->|"exposes API"| node_ribbonbar
node_pyqt6 -.->|"exposes API"| node_ribbonbar
node_pyside6 -.->|"exposes API"| node_ribbonbar

click node_mainwindow "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonMainWindow.cpp"
click node_ribbonbar "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonBar.cpp"
click node_category "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonCategory.cpp"
click node_panel "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonPanel.cpp"
click node_actions "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonToolButton.cpp"
click node_layout "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonBarLayout.cpp"
click node_customize "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonCustomizeDialog.cpp"
click node_themes "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonThemeManager.cpp"
click node_gallery "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonGallery.cpp"
click node_color "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/colorWidgets/SAColorMenu.cpp"
click node_actionmgr "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonActionsManager.cpp"
click node_quickaccess "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonQuickAccessBar.cpp"
click node_frameless "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SAFramelessHelper.cpp"
click node_elementfactory "https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonElementManager.cpp"
click node_pyqt5 "https://github.com/czyt1988/saribbon/blob/master/pyproject.toml"
click node_pyqt6 "https://github.com/czyt1988/saribbon/blob/master/pyqt6/pyproject.toml"
click node_pyside6 "https://github.com/czyt1988/saribbon/blob/master/pyside6/PySideSARibbon/__init__.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_mainwindow,node_ribbonbar,node_category,node_panel,node_actions,node_layout,node_user toneBlue
class node_customize,node_themes,node_gallery,node_color,node_actionmgr,node_quickaccess,node_frameless toneAmber
class node_elementfactory,node_qt toneMint
class node_pyqt5,node_pyqt6,node_pyside6 toneRose
class node_developer toneIndigo
```

## Components

### Ribbon Interface

- [Ribbon Main Window](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonMainWindow.cpp): `src/SARibbonBar/SARibbonMainWindow.cpp`
- [Ribbon Bar](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonBar.cpp): `src/SARibbonBar/SARibbonBar.cpp`
- [Category Pages](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonCategory.cpp): `src/SARibbonBar/SARibbonCategory.cpp`
- [Command Panels](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonPanel.cpp): `src/SARibbonBar/SARibbonPanel.cpp`
- [Ribbon Actions](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonToolButton.cpp): `src/SARibbonBar/SARibbonToolButton.cpp`
- [Adaptive Layout](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonBarLayout.cpp): `src/SARibbonBar/SARibbonBarLayout.cpp`

### Ribbon Features

- [Ribbon Customization](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonCustomizeDialog.cpp): `src/SARibbonBar/SARibbonCustomizeDialog.cpp`
- [Theme Manager](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonThemeManager.cpp): `src/SARibbonBar/SARibbonThemeManager.cpp`
- [Gallery Widget](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonGallery.cpp): `src/SARibbonBar/SARibbonGallery.cpp`
- [Color Widgets](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/colorWidgets/SAColorMenu.cpp): `src/SARibbonBar/colorWidgets/SAColorMenu.cpp`
- [Action Manager](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonActionsManager.cpp): `src/SARibbonBar/SARibbonActionsManager.cpp`
- [Quick Access Bar](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonQuickAccessBar.cpp): `src/SARibbonBar/SARibbonQuickAccessBar.cpp`
- [Frameless Support](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SAFramelessHelper.cpp): `src/SARibbonBar/SAFramelessHelper.cpp`

### Application Integration

- [Element Factory](https://github.com/czyt1988/saribbon/blob/master/src/SARibbonBar/SARibbonElementManager.cpp): `src/SARibbonBar/SARibbonElementManager.cpp`
- **Qt Framework**

### Python Bindings

- [PyQt5 Binding](https://github.com/czyt1988/saribbon/blob/master/pyproject.toml): `pyproject.toml`
- [PyQt6 Binding](https://github.com/czyt1988/saribbon/blob/master/pyqt6/pyproject.toml): `pyqt6/pyproject.toml`
- [PySide6 Binding](https://github.com/czyt1988/saribbon/blob/master/pyside6/PySideSARibbon/__init__.py): `pyside6/PySideSARibbon/__init__.py`

### Other components

- **Application Developer**
- **Desktop User**

## Connections

- Application Developer → Ribbon Main Window: creates
- Ribbon Main Window → Ribbon Bar: provides
- Application Developer → Ribbon Bar: configures
- Ribbon Bar → Category Pages: adds pages
- Category Pages → Command Panels: adds panels
- Command Panels → Ribbon Actions: presents commands
- Desktop User → Ribbon Actions: triggers
- Ribbon Actions → Application Developer: signals command
- Ribbon Bar → Adaptive Layout: lays out
- Application Developer → Ribbon Customization: customizes
- Application Developer → Theme Manager: selects theme
- Application Developer → Gallery Widget: adds gallery
- Application Developer → Color Widgets: adds color controls
- Ribbon Bar → Action Manager: registers actions
- Application Developer → Quick Access Bar: adds shortcuts
- Ribbon Main Window → Frameless Support: uses when enabled
- Application Developer → Element Factory: sets factory
- Element Factory → Ribbon Bar: creates elements
- Ribbon Main Window → Qt Framework: uses widgets
- PyQt5 Binding → Ribbon Bar: exposes API
- PyQt6 Binding → Ribbon Bar: exposes API
- PySide6 Binding → Ribbon Bar: exposes API
