164 lines
No EOL
9.6 KiB
Python
164 lines
No EOL
9.6 KiB
Python
"""
|
||
InstructionsDialog - диалог с инструкцией по использованию
|
||
"""
|
||
from PySide6.QtWidgets import (
|
||
QDialog, QVBoxLayout, QHBoxLayout, QLabel, QTextEdit,
|
||
QPushButton, QScrollArea
|
||
)
|
||
from PySide6.QtCore import Qt
|
||
from PySide6.QtGui import QFont
|
||
|
||
|
||
class InstructionsDialog(QDialog):
|
||
"""Диалог с подробной инструкцией пользователя"""
|
||
|
||
def __init__(self, parent):
|
||
super().__init__(parent)
|
||
|
||
self.setWindowTitle("Инструкция по использованию")
|
||
self.setMinimumSize(700, 500)
|
||
self.resize(750, 550)
|
||
|
||
self._create_ui()
|
||
|
||
def _create_ui(self):
|
||
"""Создаёт интерфейс диалога"""
|
||
layout = QVBoxLayout(self)
|
||
layout.setSpacing(10)
|
||
layout.setContentsMargins(15, 15, 15, 15)
|
||
|
||
# Заголовок
|
||
title_label = QLabel("Astro Session Watcher - Руководство пользователя")
|
||
title_font = QFont()
|
||
title_font.setPointSize(16)
|
||
title_font.setBold(True)
|
||
title_label.setFont(title_font)
|
||
title_label.setAlignment(Qt.AlignCenter)
|
||
layout.addWidget(title_label)
|
||
|
||
# Текст инструкции
|
||
text_edit = QTextEdit()
|
||
text_edit.setReadOnly(True)
|
||
text_edit.setFont(QFont("Consolas", 10))
|
||
|
||
instructions = """
|
||
======================= ASTRO SESSION WATCHER =======================
|
||
|
||
Приложение автоматически отслеживает появление новых фотографий в указанной папке,
|
||
сортирует их по объектам съемки и ведет подробный лог всего процесса.
|
||
|
||
📸 ДЛЯ ЧЕГО ЭТО НУЖНО?
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Когда вы снимаете астрономические объекты через EOS Utility или аналогичное ПО,
|
||
все фотографии сохраняются в одну папку. Astro Session Watcher помогает:
|
||
|
||
• Автоматически распределять снимки по папкам объектов
|
||
• Вести лог каждой сессии
|
||
• Не пропустить ни одного кадра при смене объекта
|
||
• Хранить историю оборудования и небесных тел
|
||
|
||
🚀 КАК ЭТО РАБОТАЕТ?
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
1. Вы выбираете папку, куда камера сохраняет снимки
|
||
2. Приложение создает папку сессии: "AstroSession_ГГГГ-ММ-ДД"
|
||
3. Каждый объект съемки получает свою подпапку внутри папки сессии
|
||
4. Когда вы меняете объект (нажимаете "Новая цель"), все накопленные
|
||
в папке наблюдения файлы автоматически ПЕРЕМЕЩАЮТСЯ в папку предыдущего объекта
|
||
5. При завершении сессии оставшиеся файлы также перемещаются в папку последнего объекта
|
||
|
||
📝 ПОШАГОВАЯ ИНСТРУКЦИЯ
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
█ 1. ПЕРВЫЙ ЗАПУСК (НАСТРОЙКА)
|
||
───────────────────────────────────────────────────────────────────────────────
|
||
|
||
• Откройте меню "Файл" → "Оборудование" и добавьте ваши камеры и объективы
|
||
• Откройте меню "Файл" → "Небесные тела" и добавьте объекты для наблюдения
|
||
• Все данные сохраняются автоматически в файлах настроек
|
||
|
||
█ 2. ЗАПУСК СЕССИИ
|
||
───────────────────────────────────────────────────────────────────────────────
|
||
|
||
1. Нажмите "Обзор" и выберите папку, куда камера сохраняет снимки
|
||
2. Выберите камеру и объектив из выпадающих списков
|
||
3. Введите название цели (или выберите из списка небесных тел)
|
||
4. Нажмите ▶ "Начать отслеживание"
|
||
|
||
✅ После запуска:
|
||
• Статус изменится на "● ON AIR" с мигающим красным текстом
|
||
• Кнопка "Новая цель" начнет мигать красным контуром
|
||
• В папке наблюдения создастся папка "AstroSession_дата"
|
||
• Внутри - папка с вашей первой целью
|
||
|
||
█ 3. СМЕНА ОБЪЕКТА ВО ВРЕМЯ СЕССИИ
|
||
───────────────────────────────────────────────────────────────────────────────
|
||
|
||
Когда вы заканчиваете снимать один объект и переходите к другому:
|
||
|
||
1. Нажмите кнопку "Новая цель" (или Ctrl+Shift+N)
|
||
2. Введите название нового объекта
|
||
3. Приложение автоматически:
|
||
• Переместит все накопленные файлы в папку предыдущего объекта
|
||
• Создаст новую папку для следующего объекта
|
||
• Сбросит счетчик файлов
|
||
• Продолжит отслеживание
|
||
|
||
💡 ВАЖНО: Если перед сменой объекта в папке наблюдения уже есть файлы,
|
||
они НЕ ПОТЕРЯЮТСЯ - все будут перемещены в папку текущего объекта!
|
||
|
||
█ 4. ЗАВЕРШЕНИЕ СЕССИИ
|
||
───────────────────────────────────────────────────────────────────────────────
|
||
|
||
1. Нажмите ■ "Остановить" (или Ctrl+X)
|
||
2. Приложение:
|
||
• Переместит все оставшиеся файлы в папку последнего объекта
|
||
• Запишет итоговый лог сессии
|
||
• Покажет диалог с предложением открыть папку сессии
|
||
• Восстановит интерфейс для новой сессии
|
||
|
||
⌨️ ГОРЯЧИЕ КЛАВИШИ
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Ctrl + O → Выбрать папку наблюдения
|
||
Ctrl + E → Управление оборудованием
|
||
Ctrl + B → Управление небесными телами
|
||
Ctrl + S → Начать сессию
|
||
Ctrl + X → Остановить сессию
|
||
Ctrl + F → Открыть папку текущей сессии
|
||
Ctrl + Shift+N → Создать новый объект
|
||
F1 → О программе
|
||
F2 → Эта инструкция
|
||
|
||
🔧 ФАЙЛЫ НАСТРОЕК
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
📄 astro_settings.json ← камеры, объективы, последняя папка
|
||
📄 celestial_bodies.json ← список небесных тел
|
||
|
||
Все файлы хранятся в папке с программой. Вы можете редактировать их вручную.
|
||
|
||
📧 ТЕХНИЧЕСКАЯ ПОДДЕРЖКА
|
||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||
|
||
Разработчик: Vic Sergeev
|
||
Версия: 0.3.0-alpha
|
||
|
||
При обнаружении ошибок или для предложений по улучшению:
|
||
• Сообщите разработчику
|
||
• Приложите файлы логов (SessionLog.txt, ObjectLog.txt)
|
||
"""
|
||
|
||
text_edit.setText(instructions)
|
||
layout.addWidget(text_edit)
|
||
|
||
# Кнопка закрытия
|
||
close_layout = QHBoxLayout()
|
||
close_layout.addStretch()
|
||
|
||
close_btn = QPushButton("Закрыть")
|
||
close_btn.clicked.connect(self.accept)
|
||
close_layout.addWidget(close_btn)
|
||
|
||
layout.addLayout(close_layout) |