157 lines
7.4 KiB
Python
157 lines
7.4 KiB
Python
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() |