전역 변수로 채널 정보 및 파일 경로 저장, RX 및 TX 변환기에서 채널 처리 방식 수정

This commit is contained in:
3minbe 2025-02-20 14:04:15 +09:00
parent e27abe2a32
commit 35cc1669b1
3 changed files with 29 additions and 31 deletions

View File

@ -74,9 +74,14 @@ import json
import subprocess import subprocess
import shutil # 파일 복사를 위해 shutil 모듈 추가 import shutil # 파일 복사를 위해 shutil 모듈 추가
# 전역 변수로 채널 정보와 파일 경로를 저장
channel_info = {}
file_paths = []
class MainView(QtWidgets.QMainWindow): class MainView(QtWidgets.QMainWindow):
def __init__(self): def __init__(self):
super().__init__() super().__init__()
global channel_info, file_paths
if hasattr(sys, '_MEIPASS'): if hasattr(sys, '_MEIPASS'):
base_path = sys._MEIPASS # 실행 파일 내에서 파일 경로 설정 base_path = sys._MEIPASS # 실행 파일 내에서 파일 경로 설정
@ -87,8 +92,8 @@ class MainView(QtWidgets.QMainWindow):
self.setWindowIcon(QtGui.QIcon(icon_path)) # 프로그램 아이콘 설정 self.setWindowIcon(QtGui.QIcon(icon_path)) # 프로그램 아이콘 설정
self.version = "1.0.0" # 프로그램 버전 설정 self.version = "1.0.0" # 프로그램 버전 설정
self.default_save_path = os.path.join(os.path.expanduser("~"), "Desktop") # 바탕화면 경로 설정 self.default_save_path = os.path.join(os.path.expanduser("~"), "Desktop") # 바탕화면 경로 설정
self.file_paths = [] # 파일 경로 저장 리스트 self.file_paths = file_paths # 파일 경로 저장 리스트
self.channel_info = {} # 채널 정보 초기화 self.channel_info = channel_info # 채널 정보 초기화
self.channel_options = ["CH0", "CH1", "CH2", "CH3", "CH4", "CH5"] # 채널 옵션 설정 self.channel_options = ["CH0", "CH1", "CH2", "CH3", "CH4", "CH5"] # 채널 옵션 설정
self.loadSettings() # 설정 로드 self.loadSettings() # 설정 로드
self.setupUI(base_path) # UI 설정 self.setupUI(base_path) # UI 설정
@ -98,15 +103,13 @@ class MainView(QtWidgets.QMainWindow):
self.tree.itemSelectionChanged.connect(self.onFileSelectionChanged) self.tree.itemSelectionChanged.connect(self.onFileSelectionChanged)
def loadSettings(self): def loadSettings(self):
global channel_info, file_paths
self.settings_file = "settings.json" self.settings_file = "settings.json"
if os.path.exists(self.settings_file): if os.path.exists(self.settings_file):
with open(self.settings_file, "r", encoding="utf-8") as file: with open(self.settings_file, "r", encoding="utf-8") as file:
self.settings = json.load(file) # 설정 파일 로드 self.settings = json.load(file) # 설정 파일 로드
self.default_save_path = self.settings.get("default_save_path", os.path.join(os.path.expanduser("~"), "Desktop")) self.default_save_path = self.settings.get("default_save_path", os.path.join(os.path.expanduser("~"), "Desktop"))
self.last_opened_dir = self.settings.get("last_opened_dir", os.path.expanduser("~")) self.last_opened_dir = self.settings.get("last_opened_dir", os.path.expanduser("~"))
# JSON 파일 내의 file_paths와 channel_info 정보 지우기
self.settings["file_paths"] = []
self.settings["channel_info"] = {}
self.saveSettings() self.saveSettings()
else: else:
self.settings = {"theme": "light"} # 기본 설정 self.settings = {"theme": "light"} # 기본 설정
@ -114,6 +117,7 @@ class MainView(QtWidgets.QMainWindow):
self.last_opened_dir = os.path.expanduser("~") self.last_opened_dir = os.path.expanduser("~")
def saveSettings(self): def saveSettings(self):
global channel_info, file_paths
self.settings["default_save_path"] = self.default_save_path self.settings["default_save_path"] = self.default_save_path
self.settings["file_paths"] = self.file_paths self.settings["file_paths"] = self.file_paths
self.settings["last_opened_dir"] = self.last_opened_dir self.settings["last_opened_dir"] = self.last_opened_dir
@ -356,6 +360,7 @@ class MainView(QtWidgets.QMainWindow):
dialog.move(dialog_geometry.topLeft()) dialog.move(dialog_geometry.topLeft())
def FilesOpen(self): def FilesOpen(self):
global file_paths
file_paths, _ = QtWidgets.QFileDialog.getOpenFileNames( file_paths, _ = QtWidgets.QFileDialog.getOpenFileNames(
self, "파일 열기", self.last_opened_dir, "DBC 파일 (*.dbc);;모든 파일 (*.*)" self, "파일 열기", self.last_opened_dir, "DBC 파일 (*.dbc);;모든 파일 (*.*)"
) )
@ -512,6 +517,7 @@ class MainView(QtWidgets.QMainWindow):
self.alert_text.append("") # 한 줄 띄우기 self.alert_text.append("") # 한 줄 띄우기
def convertFiles(self): def convertFiles(self):
global channel_info, file_paths
if not self.file_paths: if not self.file_paths:
self.showWarning("경고", "변환할 파일이 없습니다") self.showWarning("경고", "변환할 파일이 없습니다")
self.updateAlertText("변환 실패", ["변환할 파일이 없습니다"]) self.updateAlertText("변환 실패", ["변환할 파일이 없습니다"])
@ -532,26 +538,26 @@ class MainView(QtWidgets.QMainWindow):
os.makedirs(tx_output_dir, exist_ok=True) os.makedirs(tx_output_dir, exist_ok=True)
os.makedirs(common_output_dir, exist_ok=True) os.makedirs(common_output_dir, exist_ok=True)
os.makedirs(dbc_output_dir, exist_ok=True) # DBC 파일 저장 경로 생성 os.makedirs(dbc_output_dir, exist_ok=True) # DBC 파일 저장 경로 생성
channel_info = self.settings.get("channel_info", {}).get(os.path.basename(file_path), "CH0") channel = channel_info.get(os.path.basename(file_path), "CH0")
try: try:
shutil.copy(file_path, dbc_output_dir) # DBC 파일 복사 shutil.copy(file_path, dbc_output_dir) # DBC 파일 복사
if hasattr(sys, '_MEIPASS'): if hasattr(sys, '_MEIPASS'):
script_path = os.path.join(sys._MEIPASS, "DBC_Converter_RX.py") script_path = os.path.join(sys._MEIPASS, "DBC_Converter_RX.py")
else: else:
script_path = "DBC_Converter_RX.py" script_path = "DBC_Converter_RX.py"
subprocess.run(["python", script_path, file_path, rx_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True) subprocess.run(["python", script_path, file_path, rx_output_dir, channel], check=True)
if hasattr(sys, '_MEIPASS'): if hasattr(sys, '_MEIPASS'):
script_path = os.path.join(sys._MEIPASS, "DBC_Converter_TX.py") script_path = os.path.join(sys._MEIPASS, "DBC_Converter_TX.py")
else: else:
script_path = "DBC_Converter_TX.py" script_path = "DBC_Converter_TX.py"
subprocess.run(["python", script_path, file_path, tx_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True) subprocess.run(["python", script_path, file_path, tx_output_dir, channel], check=True)
if hasattr(sys, '_MEIPASS'): if hasattr(sys, '_MEIPASS'):
script_path = os.path.join(sys._MEIPASS, "DBC_Converter_Common.py") script_path = os.path.join(sys._MEIPASS, "DBC_Converter_Common.py")
else: else:
script_path = "DBC_Converter_Common.py" script_path = "DBC_Converter_Common.py"
subprocess.run(["python", script_path, file_path, common_output_dir, json.dumps({os.path.basename(file_path): channel_info})], check=True) subprocess.run(["python", script_path, file_path, common_output_dir, channel], check=True)
self.updateAlertText(f"변환 성공", [file_path]) self.updateAlertText(f"변환 성공", [file_path])
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
@ -609,12 +615,10 @@ class MainView(QtWidgets.QMainWindow):
dialog.close() dialog.close()
def updateChannelInfo(self, directory, filename, channel): def updateChannelInfo(self, directory, filename, channel):
global channel_info
file_path = os.path.join(directory, filename) file_path = os.path.join(directory, filename)
file_name = os.path.basename(file_path) file_name = os.path.basename(file_path)
if "channel_info" not in self.settings: channel_info[file_name] = channel
self.settings["channel_info"] = {}
self.settings["channel_info"][file_name] = channel
self.saveSettings() self.saveSettings()
print(f"[INFO] Updated channel info for {file_name} to {channel}") print(f"[INFO] Updated channel info for {file_name} to {channel}")
@ -623,8 +627,6 @@ class MainView(QtWidgets.QMainWindow):
def onClose(self, event): def onClose(self, event):
self.file_paths = [] # 파일 경로 초기화 self.file_paths = [] # 파일 경로 초기화
self.settings["file_paths"] = [] # 설정 파일 경로 초기화
self.settings["channel_info"] = {} # 채널 정보 초기화
self.saveSettings() # 설정 저장 self.saveSettings() # 설정 저장
event.accept() # 종료 이벤트 수락 event.accept() # 종료 이벤트 수락

View File

@ -195,19 +195,17 @@ if __name__ == "__main__":
output_dir = sys.argv[2] output_dir = sys.argv[2]
channel = sys.argv[3] channel = sys.argv[3]
channel = json.loads(channel) if channel == "CH0":
if list(channel.values())[-1] == "CH0":
channel = 0 channel = 0
elif list(channel.values())[-1] == "CH1": elif channel == "CH1":
channel = 1 channel = 1
elif list(channel.values())[-1] == "CH2": elif channel == "CH2":
channel = 2 channel = 2
elif list(channel.values())[-1] == "CH3": elif channel == "CH3":
channel = 3 channel = 3
elif list(channel.values())[-1] == "CH4": elif channel == "CH4":
channel = 4 channel = 4
elif list(channel.values())[-1] == "CH5": elif channel == "CH5":
channel = 5 channel = 5
else: else:
print("[ERROR] Invalid channel specified. Must be one of CH0, CH1, CH2, CH3, CH4, or CH5.") print("[ERROR] Invalid channel specified. Must be one of CH0, CH1, CH2, CH3, CH4, or CH5.")

View File

@ -173,19 +173,17 @@ if __name__ == "__main__":
output_dir = sys.argv[2] output_dir = sys.argv[2]
channel = sys.argv[3] channel = sys.argv[3]
channel = json.loads(channel) if channel == "CH0":
if list(channel.values())[-1] == "CH0":
channel = 0 channel = 0
elif list(channel.values())[-1] == "CH1": elif channel == "CH1":
channel = 1 channel = 1
elif list(channel.values())[-1] == "CH2": elif channel == "CH2":
channel = 2 channel = 2
elif list(channel.values())[-1] == "CH3": elif channel == "CH3":
channel = 3 channel = 3
elif list(channel.values())[-1] == "CH4": elif channel == "CH4":
channel = 4 channel = 4
elif list(channel.values())[-1] == "CH5": elif channel == "CH5":
channel = 5 channel = 5
else: else:
print("[ERROR] Invalid channel specified. Must be one of CH0, CH1, CH2, CH3, CH4, or CH5.") print("[ERROR] Invalid channel specified. Must be one of CH0, CH1, CH2, CH3, CH4, or CH5.")