reworked with tkinter, UI improements needed
This commit is contained in:
parent
d3878857af
commit
3ae07ca289
26 changed files with 1488 additions and 1751 deletions
|
|
@ -1,164 +1,152 @@
|
|||
"""
|
||||
InstructionsDialog - диалог с инструкцией по использованию
|
||||
InstructionsDialog - диалог с инструкцией на английском (tkinter)
|
||||
"""
|
||||
from PySide6.QtWidgets import (
|
||||
QDialog, QVBoxLayout, QHBoxLayout, QLabel, QTextEdit,
|
||||
QPushButton, QScrollArea
|
||||
)
|
||||
from PySide6.QtCore import Qt
|
||||
from PySide6.QtGui import QFont
|
||||
|
||||
import tkinter as tk
|
||||
from tkinter import ttk
|
||||
|
||||
|
||||
class InstructionsDialog(QDialog):
|
||||
"""Диалог с подробной инструкцией пользователя"""
|
||||
class InstructionsDialog(tk.Toplevel):
|
||||
"""Диалог с подробной инструкцией пользователя на английском"""
|
||||
|
||||
def __init__(self, parent):
|
||||
super().__init__(parent)
|
||||
self.parent = parent
|
||||
|
||||
self.setWindowTitle("Инструкция по использованию")
|
||||
self.setMinimumSize(700, 500)
|
||||
self.resize(750, 550)
|
||||
self.title("Instructions")
|
||||
self.geometry("750x600")
|
||||
self.minsize(700, 500)
|
||||
self.transient(parent)
|
||||
self.grab_set()
|
||||
|
||||
self._create_ui()
|
||||
self._center_window()
|
||||
|
||||
def _create_ui(self):
|
||||
"""Создаёт интерфейс диалога"""
|
||||
layout = QVBoxLayout(self)
|
||||
layout.setSpacing(10)
|
||||
layout.setContentsMargins(15, 15, 15, 15)
|
||||
# Main frame
|
||||
main_frame = ttk.Frame(self, padding="15")
|
||||
main_frame.pack(fill='both', expand=True)
|
||||
|
||||
# Заголовок
|
||||
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)
|
||||
# Title
|
||||
ttk.Label(main_frame, text="Astro Session Watcher - User Guide", font=('Segoe UI', 16, 'bold')).pack(pady=(0, 10))
|
||||
|
||||
# Текст инструкции
|
||||
text_edit = QTextEdit()
|
||||
text_edit.setReadOnly(True)
|
||||
text_edit.setFont(QFont("Consolas", 10))
|
||||
# Text with scrollbar
|
||||
text_frame = ttk.Frame(main_frame)
|
||||
text_frame.pack(fill='both', expand=True)
|
||||
|
||||
instructions = """
|
||||
======================= ASTRO SESSION WATCHER =======================
|
||||
scrollbar = ttk.Scrollbar(text_frame)
|
||||
scrollbar.pack(side='right', fill='y')
|
||||
|
||||
Приложение автоматически отслеживает появление новых фотографий в указанной папке,
|
||||
сортирует их по объектам съемки и ведет подробный лог всего процесса.
|
||||
self.text_widget = tk.Text(text_frame, yscrollcommand=scrollbar.set, wrap='word',
|
||||
bg='#1e1e1e', fg='#e0e0e0', font=('Consolas', 10))
|
||||
self.text_widget.pack(fill='both', expand=True)
|
||||
scrollbar.config(command=self.text_widget.yview)
|
||||
|
||||
📸 ДЛЯ ЧЕГО ЭТО НУЖНО?
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
# Instructions text
|
||||
instructions = """======================= ASTRO SESSION WATCHER =======================
|
||||
|
||||
Когда вы снимаете астрономические объекты через EOS Utility или аналогичное ПО,
|
||||
все фотографии сохраняются в одну папку. Astro Session Watcher помогает:
|
||||
The application automatically tracks new photos in the selected folder,
|
||||
sorts them by observation targets and maintains detailed logs.
|
||||
|
||||
• Автоматически распределять снимки по папкам объектов
|
||||
• Вести лог каждой сессии
|
||||
• Не пропустить ни одного кадра при смене объекта
|
||||
• Хранить историю оборудования и небесных тел
|
||||
📸 WHAT IS IT FOR?
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
🚀 КАК ЭТО РАБОТАЕТ?
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
• Automatically distribute shots into target folders
|
||||
• Keep a log of each session
|
||||
• Don't miss a single frame when changing targets
|
||||
• Store equipment and celestial bodies history
|
||||
|
||||
1. Вы выбираете папку, куда камера сохраняет снимки
|
||||
2. Приложение создает папку сессии: "AstroSession_ГГГГ-ММ-ДД"
|
||||
3. Каждый объект съемки получает свою подпапку внутри папки сессии
|
||||
4. Когда вы меняете объект (нажимаете "Новая цель"), все накопленные
|
||||
в папке наблюдения файлы автоматически ПЕРЕМЕЩАЮТСЯ в папку предыдущего объекта
|
||||
5. При завершении сессии оставшиеся файлы также перемещаются в папку последнего объекта
|
||||
🚀 HOW IT WORKS?
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
📝 ПОШАГОВАЯ ИНСТРУКЦИЯ
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
1. Select the folder where your camera saves photos
|
||||
2. The app creates a session folder: "AstroSession_YYYY-MM-DD"
|
||||
3. Each target gets its own subfolder inside the session folder
|
||||
4. When you change target (press "New Target"), all accumulated files are moved
|
||||
5. When you end the session, remaining files are moved to the last target
|
||||
|
||||
█ 1. ПЕРВЫЙ ЗАПУСК (НАСТРОЙКА)
|
||||
───────────────────────────────────────────────────────────────────────────────
|
||||
📝 STEP-BY-STEP GUIDE
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
• Откройте меню "Файл" → "Оборудование" и добавьте ваши камеры и объективы
|
||||
• Откройте меню "Файл" → "Небесные тела" и добавьте объекты для наблюдения
|
||||
• Все данные сохраняются автоматически в файлах настроек
|
||||
█ 1. FIRST LAUNCH (SETUP)
|
||||
───────────────────────────────────────────────────────────────────
|
||||
|
||||
█ 2. ЗАПУСК СЕССИИ
|
||||
───────────────────────────────────────────────────────────────────────────────
|
||||
• Go to "File" → "Equipment" and add your cameras and lenses/telescopes
|
||||
• Go to "File" → "Celestial Bodies" and add your observation targets
|
||||
• All data is saved automatically in config files
|
||||
|
||||
1. Нажмите "Обзор" и выберите папку, куда камера сохраняет снимки
|
||||
2. Выберите камеру и объектив из выпадающих списков
|
||||
3. Введите название цели (или выберите из списка небесных тел)
|
||||
4. Нажмите ▶ "Начать отслеживание"
|
||||
█ 2. STARTING A SESSION
|
||||
───────────────────────────────────────────────────────────────────
|
||||
|
||||
✅ После запуска:
|
||||
• Статус изменится на "● ON AIR" с мигающим красным текстом
|
||||
• Кнопка "Новая цель" начнет мигать красным контуром
|
||||
• В папке наблюдения создастся папка "AstroSession_дата"
|
||||
• Внутри - папка с вашей первой целью
|
||||
1. Click "Browse" and select the folder where your camera saves photos
|
||||
2. Select camera and lens/telescope from dropdowns
|
||||
3. Enter target name (or select from celestial bodies list)
|
||||
4. Click "▶ Start Tracking"
|
||||
|
||||
█ 3. СМЕНА ОБЪЕКТА ВО ВРЕМЯ СЕССИИ
|
||||
───────────────────────────────────────────────────────────────────────────────
|
||||
✅ After launch:
|
||||
• Status changes to "● ON AIR" with blinking
|
||||
• "New Target" button becomes active
|
||||
• Session folder "AstroSession_date" is created
|
||||
• Inside - folder with your first target
|
||||
|
||||
Когда вы заканчиваете снимать один объект и переходите к другому:
|
||||
█ 3. CHANGING TARGET DURING SESSION
|
||||
───────────────────────────────────────────────────────────────────
|
||||
|
||||
1. Нажмите кнопку "Новая цель" (или Ctrl+Shift+N)
|
||||
2. Введите название нового объекта
|
||||
3. Приложение автоматически:
|
||||
• Переместит все накопленные файлы в папку предыдущего объекта
|
||||
• Создаст новую папку для следующего объекта
|
||||
• Сбросит счетчик файлов
|
||||
• Продолжит отслеживание
|
||||
1. Click "New Target" button (or Ctrl+Shift+N)
|
||||
2. Enter new target name
|
||||
3. The app automatically moves all accumulated files to the previous target
|
||||
4. Creates new folder for the next target
|
||||
5. Resets file counter
|
||||
6. Continues tracking
|
||||
|
||||
💡 ВАЖНО: Если перед сменой объекта в папке наблюдения уже есть файлы,
|
||||
они НЕ ПОТЕРЯЮТСЯ - все будут перемещены в папку текущего объекта!
|
||||
💡 IMPORTANT: If there are files in the watch folder before changing target,
|
||||
they will NOT be lost - all will be moved!
|
||||
|
||||
█ 4. ЗАВЕРШЕНИЕ СЕССИИ
|
||||
───────────────────────────────────────────────────────────────────────────────
|
||||
█ 4. ENDING A SESSION
|
||||
───────────────────────────────────────────────────────────────────
|
||||
|
||||
1. Нажмите ■ "Остановить" (или Ctrl+X)
|
||||
2. Приложение:
|
||||
• Переместит все оставшиеся файлы в папку последнего объекта
|
||||
• Запишет итоговый лог сессии
|
||||
• Покажет диалог с предложением открыть папку сессии
|
||||
• Восстановит интерфейс для новой сессии
|
||||
1. Click "■ Stop" (or Ctrl+X)
|
||||
2. The app moves all remaining files to the last target
|
||||
3. Writes final session log
|
||||
4. Shows dialog with option to open session folder
|
||||
5. Restores interface for new session
|
||||
|
||||
⌨️ ГОРЯЧИЕ КЛАВИШИ
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
⌨️ HOTKEYS
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Ctrl + O → Выбрать папку наблюдения
|
||||
Ctrl + E → Управление оборудованием
|
||||
Ctrl + B → Управление небесными телами
|
||||
Ctrl + S → Начать сессию
|
||||
Ctrl + X → Остановить сессию
|
||||
Ctrl + F → Открыть папку текущей сессии
|
||||
Ctrl + Shift+N → Создать новый объект
|
||||
F1 → О программе
|
||||
F2 → Эта инструкция
|
||||
Ctrl + O → Select watch folder
|
||||
Ctrl + E → Equipment management
|
||||
Ctrl + B → Celestial bodies management
|
||||
Ctrl + S → Start session
|
||||
Ctrl + X → Stop session
|
||||
Ctrl + F → Open current session folder
|
||||
Ctrl + Shift+N → Create new target
|
||||
F1 → About
|
||||
F2 → This instruction
|
||||
|
||||
🔧 ФАЙЛЫ НАСТРОЕК
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
🔧 CONFIG FILES
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
📄 astro_settings.json ← камеры, объективы, последняя папка
|
||||
📄 celestial_bodies.json ← список небесных тел
|
||||
📄 astro_settings.json ← cameras, lenses, last folder
|
||||
📄 celestial_bodies.json ← list of celestial bodies
|
||||
|
||||
Все файлы хранятся в папке с программой. Вы можете редактировать их вручную.
|
||||
All files are stored in the program folder. You can edit them manually.
|
||||
|
||||
📧 ТЕХНИЧЕСКАЯ ПОДДЕРЖКА
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
|
||||
Разработчик: Vic Sergeev
|
||||
Версия: 0.3.0-alpha
|
||||
|
||||
При обнаружении ошибок или для предложений по улучшению:
|
||||
• Сообщите разработчику
|
||||
• Приложите файлы логов (SessionLog.txt, ObjectLog.txt)
|
||||
📧 TECHNICAL SUPPORT
|
||||
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
||||
Text me: norvicdev@gmail.com
|
||||
Developer: Vic Sergeev
|
||||
Version: 0.4.0-alpha
|
||||
"""
|
||||
|
||||
text_edit.setText(instructions)
|
||||
layout.addWidget(text_edit)
|
||||
self.text_widget.insert('1.0', instructions)
|
||||
self.text_widget.config(state='disabled')
|
||||
|
||||
# Кнопка закрытия
|
||||
close_layout = QHBoxLayout()
|
||||
close_layout.addStretch()
|
||||
# Close button
|
||||
ttk.Button(main_frame, text="Close", command=self.destroy).pack(pady=10)
|
||||
|
||||
close_btn = QPushButton("Закрыть")
|
||||
close_btn.clicked.connect(self.accept)
|
||||
close_layout.addWidget(close_btn)
|
||||
|
||||
layout.addLayout(close_layout)
|
||||
def _center_window(self):
|
||||
self.update_idletasks()
|
||||
x = self.parent.winfo_x() + (self.parent.winfo_width() // 2) - (self.winfo_width() // 2)
|
||||
y = self.parent.winfo_y() + (self.parent.winfo_height() // 2) - (self.winfo_height() // 2)
|
||||
self.geometry(f'+{x}+{y}')
|
||||
Loading…
Add table
Add a link
Reference in a new issue