"""Clearly labeled destinations for workflows awaiting their own Qt pages."""
from PySide6.QtCore import Signal
from PySide6.QtWidgets import QPushButton, QTabWidget, QVBoxLayout, QWidget
from oci_policy_analysis.presentation.qt.pages.condition_tester import ConditionTesterPage
from oci_policy_analysis.presentation.qt.pages.maintenance import MaintenancePage
from oci_policy_analysis.presentation.qt.pages.reports import ReportsPage
from oci_policy_analysis.presentation.qt.widgets import label
[docs]
class PlannedWorkflowPage(QWidget):
"""Explain a planned workflow without presenting inactive controls as usable.
Args:
title: Workflow title.
description: Purpose and planned interaction.
"""
def __init__(self, title: str, description: str) -> None:
super().__init__()
layout = QVBoxLayout(self)
layout.setContentsMargins(0, 0, 0, 0)
layout.addWidget(label(title, 'eyebrow'))
layout.addWidget(label(description, wrap=True))
layout.addWidget(
label('Planned Qt workflow · No operation is performed on this page yet.', 'notice', wrap=True)
)
layout.addStretch()
[docs]
class ToolsPage(QTabWidget):
"""Group utility destinations in native tabs; reuse existing logging controls.
Args:
experience: Shared mode policy controlling advanced-only Maintenance.
cache: Shared cache manager used for saved snapshot maintenance.
Attributes:
show_logs: Request the shell's existing log dock.
show_logging_settings: Request the existing Overview logging settings.
"""
show_logs = Signal()
show_logging_settings = Signal()
def __init__(self, experience, cache) -> None:
super().__init__()
self.condition_tester = ConditionTesterPage()
self.addTab(self.condition_tester, 'Condition Tester')
self.reports = ReportsPage()
self.addTab(self.reports, 'Reports')
self.maintenance = MaintenancePage(cache)
self.addTab(self.maintenance, 'Maintenance')
experience.bind_advanced_tab(self, 2)
logging = QWidget()
layout = QVBoxLayout(logging)
layout.addWidget(label('Use the same live log and settings available on Overview.', wrap=True))
button = QPushButton('Show live log')
button.clicked.connect(self.show_logs.emit)
layout.addWidget(button)
button = QPushButton('Open logging settings')
button.clicked.connect(self.show_logging_settings.emit)
layout.addWidget(button)
layout.addStretch()
self.addTab(logging, 'Logging')