consolidator

Форк
0
/
GuidsWindowOld.py 
125 строк · 5.1 Кб
1
import os
2
import sys
3
from PySide6.QtCore import (Slot)
4
from PySide6.QtWidgets import (
5
    QDialog
6
    ,QListWidget
7
    ,QListWidgetItem
8
    ,QTextEdit
9
    ,QPushButton
10
    ,QLabel
11
    )
12
from PySide6.QtUiTools import QUiLoader
13
import pandas as pd
14
from GuidsSync import GuidsSync,GuidDescr
15
import time
16

17
class GuidsWindowOld(QDialog):
18
    
19
    normalButtonColor="background-color: rgb(236, 236, 236);"
20
    warningButtonColor = "background-color: rgb(255, 179, 48);"
21
    
22
    guids={}
23
    
24
    def __init__(self, guidsDir:str, syncModule:GuidsSync=None) -> None:
25
        super().__init__()
26
        loader = QUiLoader()
27
        self.local_dir = guidsDir
28
        self.remote_dir = None
29
        self.sync_module = syncModule
30
        try:
31
            if not os.path.isdir(guidsDir): raise Exception(f"Директория справочников '{guidsDir}' отсутсвует.")
32
            self.files = [f for f in os.listdir(guidsDir) if "~$" not in f and ".xlsx" in f]
33
            for file in self.files:
34
                fullName = f"{guidsDir}\\{file}"
35
                key = file.replace(".xlsx","")
36
                self.guids[key]=fullName
37
            try:
38
                self.cur_path = sys._MEIPASS
39
            except:
40
                self.cur_path = os.path.dirname(os.path.realpath(__file__))
41
            
42
            self.GuidsDialog:QDialog = loader.load(f"{self.cur_path}\\GuidsWindowOld.ui", None)
43
            self.guidsList:QListWidget = self.GuidsDialog.guidsList
44
            self.textGuid:QTextEdit = self.GuidsDialog.textGuid
45
            self.remoteGuidsButton:QPushButton = self.GuidsDialog.remoteGuidsButton
46
            self.localGuidsButton:QPushButton = self.GuidsDialog.localGuidsButton
47
            self.syncWarningLabel:QLabel = self.GuidsDialog.syncWarningLabel
48
            self.reload_guids_list()
49
            self.guidsList.itemSelectionChanged.connect(self.list_item_selected)
50
            self.guidsList.itemDoubleClicked.connect(self.list_item_dbl_click)
51
            self.remoteGuidsButton.clicked.connect(self.remote_guids_button_clicked)
52
            self.localGuidsButton.clicked.connect(self.local_guids_button_clicked)
53
            self.check_guids_modified()
54
        except : raise
55
        
56
    def show(self):
57
        self.GuidsDialog.exec()
58
        
59
    def check_guids_modified(self):
60
        try:
61
            if self.sync_module is None: 
62
                self.remoteGuidsButton.setStyleSheet(self.normalButtonColor)
63
                self.localGuidsButton.setStyleSheet(self.normalButtonColor)
64
                self.remoteGuidsButton.setDisabled(True)
65
                self.localGuidsButton.setDisabled(True)
66
                # raise Exception("Модуль синхронизации справочников не инициализирован")
67
            else:
68
                self.syncWarningLabel.hide()
69
                check_result=self.sync_module.check()
70
                self.remoteGuidsButton.setStyleSheet(self.warningButtonColor if check_result[0] else self.normalButtonColor)
71
                self.localGuidsButton.setStyleSheet(self.warningButtonColor if check_result[1] else self.normalButtonColor)
72
            
73
        except: raise
74
        
75
    def reload_guids_list(self):
76
        """ Перезагрузка списка справочника """
77
        try:
78
            self.guidsList.addItems(self.guids.keys())
79
        except: raise
80
        
81
    @Slot()
82
    def list_item_selected(self):
83
        """ Обработчик выбора справочника из списка """
84
        try:
85
            list:QListWidget = self.sender()
86
            selected:QListWidgetItem = list.selectedItems()[0]
87
            key = selected.data(0)
88
            # print(key)
89
            df = pd.read_excel(self.guids[key])
90
            table=df.to_html(index=False,header=True,justify="center",na_rep="",decimal=",")
91
            html=f"""<html>
92
                <head>
93
                <style>
94
                table, th, td {{font-size:11pt; font-family: sans-serif; border:1px solid black; border-collapse:collapse; text-align:left;}}
95
                th, td {{padding: 3px;}}
96
                </style>
97
                </head>
98
                <body>{table}</body>
99
                </html>"""
100
            self.textGuid.setHtml(html)
101
        except: raise
102
        
103
    @Slot()
104
    def list_item_dbl_click(self):
105
        """ Обработчик двойного клика по названию справочника """
106
        list:QListWidget = self.sender()
107
        selected:QListWidgetItem = list.selectedItems()[0]
108
        key = selected.data(0)
109
        os.system(f'start EXCEL.exe "{self.guids[key]}"')
110
        self.sync_module.reconnect()
111
        self.check_guids_modified()
112
        
113
    def remote_guids_button_clicked(self):
114
        try:
115
            self.sync_module.get_from_remote()
116
            self.check_guids_modified()
117
            self.sync_module.send_to_remote()
118
            self.remoteGuidsButton.setStyleSheet(self.normalButtonColor)            
119
        except: raise
120
        
121
    def local_guids_button_clicked(self):
122
        try:
123
            self.sync_module.send_to_remote()
124
            self.localGuidsButton.setStyleSheet(self.normalButtonColor)
125
        except: raise

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.