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()