Metadata-Version: 2.4
Name: GlavnaQt
Version: 0.2.2
Summary: PyQt6 app framework with event bus, layout management, and theming helpers
Author: Aaron Colichia
License-Expression: 0BSD
Project-URL: Homepage, https://latebrum.com/git/actx/GlavnaQt/
Project-URL: Repository, https://latebrum.com/git/actx/GlavnaQt/
Keywords: pyqt6,qt,gui,framework
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: PyQt6>=6.7
Requires-Dist: confuse>=2.0
Requires-Dist: platformdirs>=3.0
Requires-Dist: PyYAML>=6.0
Requires-Dist: tomli>=2.0; python_version < "3.11"
Requires-Dist: confumo==0.2.2
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == "dev"
Requires-Dist: twine>=6.0; extra == "dev"
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: pytest-qt>=4.4; extra == "dev"
Dynamic: license-file

# GlavnaQt

GlavnaQt is a PyQt6-based GUI framework for building desktop applications with customizable layouts and basic UI features.

## Features

- Layouts with splitters and sidebars (`CollapsibleSplitter`, `LayoutManager`)
- Framework-internal Qt signals (`FrameworkSignals`) kept separate from the app-level `EventBus`
- Configuration via `UIConfig` (Confumo)
- Status bar updates (`StatusBarManager`)
- Background tasks (`ThreadManager`, `TaskRunnable`)
- Light/dark theme support (`ThemeManager`, `ThemeWatcher`)
- Optional profiling (`profiler.py`) and logging (`logger.py`)

## Installation

For normal use, install the published package:

```bash
pip install GlavnaQt
```

For development from source, use a checkout from the canonical VPS host or public mirror, then create a virtual environment:

```bash
cd GlavnaQt
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -r requirements.txt
python glavnaqt/examples/example.py
```

## Usage

Start the example app:

```bash
python glavnaqt/examples/example.py
```

Cycle layouts:

```bash
python glavnaqt/examples/example.py --cycle-layouts
```

Load a data-only YAML/TOML layout file:

```bash
python glavnaqt/examples/example.py --layout-file layout.yaml
```

During local UI development, enable explicit data-layout hot reload:

```bash
python glavnaqt/examples/example.py --layout-file layout.yaml --dev-layout-hot-reload
```

Hot reload only recompiles the declarative layout data into `LayoutSpec`; it does not import or reload Python modules. During rebuilds, GlavnaQt preserves generic UI state for widgets with stable `objectName` values where feasible: splitter sizes/collapsed flags, tab or stack selection indexes, and scroll-bar positions.

Adjust application defaults in `glavnaqt/core/config.py`.

### Event APIs

GlavnaQt framework plumbing uses typed Qt signals on `FrameworkSignals`. Framework-owned events are not bridged through `EventBus`. Application-specific events that GlavnaQt does not own can continue to use `EventBus`, but downstream applications are responsible for triggering their own startup refreshes.

## Development

Run the local packaging check:

```bash
scripts/ci/check
```

Run the fuller local pass, including the optional Qt smoke import:

```bash
scripts/ci/full
```

For a tagged release candidate:

```bash
scripts/ci/release-check v0.1.0
```

## License

This repository ships under 0BSD; see `LICENSE` and `NOTICE`.

## Contact

Open an issue on the public Codeberg mirror.
