# idris-p/graphing-calculator architecture

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

- Interactive diagram: https://gitdiagram.com/idris-p/graphing-calculator
- Repository: https://github.com/idris-p/graphing-calculator

## Overview

This is a single-file Tkinter graphing calculator. The principal workflow is entering equations, plotting them on a Cartesian canvas, and adjusting zoom or line colours; separate menus provide symbolic differentiation/integration and display settings. The sampled source confirms plotting and SymPy calculus calls, while language, fullscreen, and theme capabilities are documented in the README. Because the application is monolithic and excerpts are incomplete, the graph uses the same exact source path for its logical components and omits uncertain internal wiring.

Main entry points: [`graphing_calculator.py`](https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py) (Tkinter interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_user(("Calculator user"))
node_interface["Tkinter interface"]
node_plotting["Equation plotting"]
node_calculus["Calculus solver"]
node_settings["Display settings"]
node_sympy["SymPy"]

node_user -->|"enters equations"| node_interface
node_interface -->|"requests plots"| node_plotting
node_interface -->|"requests operations"| node_calculus
node_interface -->|"changes preferences"| node_settings
node_calculus -->|"differentiates or integrates"| node_sympy

click node_interface "https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py"
click node_plotting "https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py"
click node_calculus "https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py"
click node_settings "https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.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_user toneBlue
class node_interface,node_plotting,node_calculus,node_settings toneTeal
class node_sympy toneIndigo
```

## Components

### Other components

- **Calculator user**
- [Tkinter interface](https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py): `graphing_calculator.py`
- [Equation plotting](https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py): `graphing_calculator.py`
- [Calculus solver](https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py): `graphing_calculator.py`
- [Display settings](https://github.com/idris-p/graphing-calculator/blob/main/graphing_calculator.py): `graphing_calculator.py`
- **SymPy**

## Connections

- Calculator user → Tkinter interface: enters equations
- Tkinter interface → Equation plotting: requests plots
- Tkinter interface → Calculus solver: requests operations
- Tkinter interface → Display settings: changes preferences
- Calculus solver → SymPy: differentiates or integrates
