kompas_window/app.py

157 lines
7.4 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.core.window import Window
from kivy.clock import Clock
from export_opened_to_raster import export_opened_to_raster # Импорт функции обработки
from save_to_iges import save_opened_to_iges # Импорт функции сохранения в IGES
from get_all_sheets import get_all_sheets # Импорт функции для получения всех листов
from project_support import project_support # Импорт функции Project Support
class MyApp(App):
def build(self):
# Устанавливаем размер окна (подходит для ПК)
Window.size = (800, 600)
# Главный контейнер (горизонтальный)
main_layout = BoxLayout(orientation='horizontal', spacing=10, padding=10)
# Левая панель (на одну треть экрана)
left_panel = BoxLayout(orientation='vertical', size_hint=(0.3, 1), spacing=10)
# Заголовок
header = Label(text="Kompas Saver", size_hint=(1, 0.1), font_size=24, bold=True)
# Кнопки слева
button1 = Button(text="Создать PDF", on_press=self.process_kompas)
button2 = Button(text="Сохранить в IGES", on_press=self.save_to_iges)
button3 = Button(text="Get All Sheets", on_press=self.get_all_sheets)
button4 = Button(text="Project Support", on_press=self.project_support)
# Добавляем заголовок и кнопки в левую панель
left_panel.add_widget(header)
left_panel.add_widget(button1)
left_panel.add_widget(button2)
left_panel.add_widget(button3)
left_panel.add_widget(button4)
# Правая панель (пространство для контента)
self.right_panel = BoxLayout(orientation='vertical', size_hint=(0.7, 1))
self.right_panel.add_widget(Label(text="Выберите действие", font_size=18))
# Добавляем левую и правую панели в главный контейнер
main_layout.add_widget(left_panel)
main_layout.add_widget(self.right_panel)
return main_layout
def show_content(self, instance):
# Очищаем правую панель
self.right_panel.clear_widgets()
# Добавляем контент в зависимости от нажатой кнопки
if instance.text == "Кнопка 4":
content = Label(text="Контент для Кнопки 4", font_size=18)
self.right_panel.add_widget(content)
def process_kompas(self, instance):
# Очищаем правую панель
self.right_panel.clear_widgets()
# Добавляем сообщение о начале обработки
self.right_panel.add_widget(Label(text="Обработка документов КОМПАС...", font_size=18))
# Запускаем обработку в отдельном потоке (чтобы не блокировать интерфейс)
Clock.schedule_once(lambda dt: self.run_kompas_processing(), 0.1)
def run_kompas_processing(self):
try:
# Вызываем функцию обработки документов КОМПАС
result = export_opened_to_raster()
# Обновляем правую панель с результатом
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=result, font_size=18))
except Exception as e:
# В случае ошибки выводим сообщение
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=f"Ошибка: {e}", font_size=18))
def save_to_iges(self, instance):
# Очищаем правую панель
self.right_panel.clear_widgets()
# Добавляем сообщение о начале сохранения
self.right_panel.add_widget(Label(text="Сохранение документов в IGES...", font_size=18))
# Запускаем сохранение в отдельном потоке (чтобы не блокировать интерфейс)
Clock.schedule_once(lambda dt: self.run_save_to_iges(), 0.1)
def run_save_to_iges(self):
try:
# Вызываем функцию сохранения в IGES
result = save_opened_to_iges()
# Обновляем правую панель с результатом
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=result, font_size=18))
except Exception as e:
# В случае ошибки выводим сообщение
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=f"Ошибка: {e}", font_size=18))
def get_all_sheets(self, instance):
# Очищаем правую панель
self.right_panel.clear_widgets()
# Добавляем сообщение о начале анализа
self.right_panel.add_widget(Label(text="Анализ документов...", font_size=18))
# Запускаем анализ в отдельном потоке (чтобы не блокировать интерфейс)
Clock.schedule_once(lambda dt: self.run_get_all_sheets(), 0.1)
def run_get_all_sheets(self):
try:
# Вызываем функцию для получения всех листов
result = get_all_sheets()
# Обновляем правую панель с результатом
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=result, font_size=18))
except Exception as e:
# В случае ошибки выводим сообщение
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=f"Ошибка: {e}", font_size=18))
def project_support(self, instance):
# Очищаем правую панель
self.right_panel.clear_widgets()
# Добавляем сообщение о начале поддержки проекта
self.right_panel.add_widget(Label(text="Поддержка проекта...", font_size=18))
# Запускаем поддержку проекта в отдельном потоке (чтобы не блокировать интерфейс)
Clock.schedule_once(lambda dt: self.run_project_support(), 0.1)
def run_project_support(self):
try:
# Вызываем функцию поддержки проекта
result = project_support()
# Обновляем правую панель с результатом
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=result, font_size=18))
except Exception as e:
# В случае ошибки выводим сообщение
self.right_panel.clear_widgets()
self.right_panel.add_widget(Label(text=f"Ошибка: {e}", font_size=18))
# Запуск приложения
if __name__ == '__main__':
MyApp().run()