Skip to content

Commit de2fa38

Browse files
committed
docs: adding design document
1 parent 2d4331d commit de2fa38

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

docs/development/design.md

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
# Design Document for LoopStructural Plugin
2+
## Overview
3+
The LoopStructural plugin is designed to integrate geological modeling capabilities from LoopStructural into QGIS. It provides tools for visualizing, managing, and analyzing geological data, enabling users to create and refine geological models directly within the QGIS environment.
4+
5+
### Design Choices
6+
1. Modular Architecture
7+
The plugin is structured into multiple modules, each responsible for specific functionalities:
8+
9+
- GUI Module: Contains user interface components such as dialogs, widgets, and tabs for interacting with the plugin.
10+
- Main Module: Handles core functionalities like data management, model management, and project handling.
11+
- Processing Module: Provides processing algorithms and tools for geological data analysis.
12+
- Toolbelt Module: Includes utility functions like logging and preferences management.
13+
- Resources Module: Stores static resources such as images, translations, and help files.
14+
15+
This modular design ensures separation of concerns, making the codebase easier to maintain and extend.
16+
17+
2. Integration with QGIS
18+
The plugin leverages QGIS's PyQt-based framework for GUI development and its processing framework for data analysis. Key integration points include:
19+
20+
- Use of QgsCollapsibleGroupBox for organizing UI components.
21+
- Implementation of custom processing algorithms using the Processing module.
22+
- Utilization of QGIS's vector and raster layers for geological data representation.
23+
24+
3. Dynamic UI Components
25+
The plugin dynamically generates UI components based on the data provided by the data_manager. For example:
26+
27+
- Fault adjacency tables are created dynamically based on unique faults retrieved from the data manager.
28+
- Stratigraphic units tables are similarly generated, allowing users to interact with geological units.
29+
30+
4. Custom Interactivity
31+
Interactive elements like QPushButton are used extensively in the UI. These buttons allow users to perform actions such as toggling states or cycling through options (e.g., changing colors to represent different statuses).
32+
33+
5. Extensibility
34+
The plugin is designed to be extensible, allowing developers to add new features or modify existing ones with minimal impact on the overall architecture. Examples include:
35+
36+
- Adding new tabs or widgets to the GUI.
37+
- Extending the data_manager to support additional geological data types.
38+
- Implementing new processing algorithms in the Processing module.
39+
40+
6. Resource Management
41+
Static resources such as images and translations are stored in the resources module. This ensures that all assets are centralized and easily accessible.
42+
43+
7. Testing
44+
The plugin includes a tests directory with unit tests for various components. This ensures that changes to the codebase do not introduce regressions.
45+
46+
## Key Components
47+
### GUI Module
48+
- Fault Adjacency Tab: Displays a table of faults with interactive buttons for adjacency settings.
49+
- Stratigraphic Units Tab: Similar to the fault adjacency tab but focused on stratigraphic units.
50+
- Visualization Widgets: Tools for rendering geological models and features.
51+
### Main Module
52+
- Data Manager: Handles loading, saving, and querying geological data.
53+
- Model Manager: Manages geological models, including their creation and modification.
54+
### Processing Module
55+
- Provider: Implements custom processing algorithms for geological data analysis.
56+
### Toolbelt Module
57+
- Log Handler: Provides logging utilities for debugging and monitoring.
58+
- Preferences: Manages user preferences and settings.
59+
## Future Enhancements
60+
- Support for additional geological data types.
61+
- Improved visualization capabilities using advanced rendering libraries.
62+
- Enhanced interactivity with more intuitive UI components.

0 commit comments

Comments
 (0)