переструктурирвоаны исходники проекта

This commit is contained in:
Razvalyaev 2025-07-15 13:31:18 +03:00
parent abfc507e4e
commit c32dc161f8
11 changed files with 43 additions and 43 deletions

Binary file not shown.

View File

@ -86,15 +86,15 @@
```bash ```bash
Src Src
├── DebugVarEdit_GUI.py # Главное окно ├── DebugVarEdit_GUI.py # Главное окно
├── VariableTable.py # Таблица выбранных переменных ├── var_table.py # Таблица выбранных переменных
├── VariableSelector.py # Окно выбора переменных ├── var_selector_window.py # Окно выбора переменных
├── selectTable.py # Таблица переменных в окне выбора переменных ├── var_selector_table.py # Таблица переменных в окне выбора переменных
├── scanVarGUI.py # Отображение процесса сканирования переменных ├── scan_progress_gui.py # Отображение процесса сканирования переменных
├── scanVar.py # Сканирование переменных среди .c/.h файлов ├── scan_vars.py # Сканирование переменных среди .c/.h файлов
├── generateVars.py # Генерация debug_vars.c ├── generate_debug_vars.py # Генерация debug_vars.c
├── myXML.py # Утилиты для XML ├── myXML.py # Утилиты для XML
├── parseMakefile.py # Парсинг makefile на .c/.h файлы ├── makefile_parser.py # Парсинг makefile на .c/.h файлы
├── setupVars.py # Подготовка переменных для окна выбора переменных ├── var_setup.py # Подготовка переменных для окна выбора переменных
├── libclang.dll # Бибилиотека clang ├── libclang.dll # Бибилиотека clang
├── icon.ico # Иконка ├── icon.ico # Иконка
build build

View File

@ -1,19 +1,19 @@
# build command # build command
# pyinstaller --onefile --name DebugVarEdit --add-binary "build/libclang.dll;build" --distpath ./ --workpath ./build_temp --specpath ./build_temp setupVars_GUI.py # pyinstaller --onefile --name DebugVarEdit --add-binary "build/libclang.dll;build" --distpath ./ --workpath ./build_temp --specpath ./build_temp var_setup_GUI.py
import sys import sys
import os import os
import subprocess import subprocess
import lxml.etree as ET import lxml.etree as ET
from generateVars import type_map from generate_debug_vars import type_map
from enum import IntEnum from enum import IntEnum
import threading import threading
from generateVars import run_generate from generate_debug_vars import run_generate
import setupVars import var_setup
from VariableSelector import VariableSelectorDialog from var_selector_window import var_selector_windowDialog
from VariableTable import VariableTableWidget, rows from var_table import var_tableWidget, rows
from scanVarGUI import ProcessOutputWindow from scan_progress_gui import ProcessOutputWindow
import scanVars import scan_vars
import myXML import myXML
import time import time
@ -63,7 +63,7 @@ class VarEditor(QWidget):
def initUI(self): def initUI(self):
self.setWindowTitle(var_edit_title) self.setWindowTitle(var_edit_title)
base_path = scanVars.get_base_path() base_path = scan_vars.get_base_path()
icon_path = os.path.join(base_path, "icon.ico") icon_path = os.path.join(base_path, "icon.ico")
if os.path.exists(icon_path): if os.path.exists(icon_path):
self.setWindowIcon(QIcon(icon_path)) self.setWindowIcon(QIcon(icon_path))
@ -134,7 +134,7 @@ class VarEditor(QWidget):
btn_open_output = QPushButton(open_output_title) btn_open_output = QPushButton(open_output_title)
btn_open_output.clicked.connect(self.__open_output_file_with_program) btn_open_output.clicked.connect(self.__open_output_file_with_program)
# Таблица # Таблица
self.table = VariableTableWidget() self.table = var_tableWidget()
# Основной layout # Основной layout
layout = QVBoxLayout() layout = QVBoxLayout()
layout.addLayout(xml_layout) layout.addLayout(xml_layout)
@ -208,7 +208,7 @@ class VarEditor(QWidget):
# Создаём окно с кнопкой "Готово" # Создаём окно с кнопкой "Готово"
self.proc_win = ProcessOutputWindow(self.proj_path, self.makefile_path, self.xml_path, self.proc_win = ProcessOutputWindow(self.proj_path, self.makefile_path, self.xml_path,
on_done_callback=self.__after_scanvars_finished) on_done_callback=self.__after_scan_vars_finished)
self.proc_win.start_scan() self.proc_win.start_scan()
@ -302,11 +302,11 @@ class VarEditor(QWidget):
structs_path_full = myXML.make_absolute_path(structs_path, self.proj_path) structs_path_full = myXML.make_absolute_path(structs_path, self.proj_path)
if structs_path_full and os.path.isfile(structs_path_full): if structs_path_full and os.path.isfile(structs_path_full):
self.structs_path = structs_path_full self.structs_path = structs_path_full
self.structs, self.typedef_map = setupVars.parse_structs(structs_path_full) self.structs, self.typedef_map = var_setup.parse_structs(structs_path_full)
else: else:
self.structs_path = None self.structs_path = None
self.vars_list = setupVars.parse_vars(self.xml_path, self.typedef_map) self.vars_list = var_setup.parse_vars(self.xml_path, self.typedef_map)
self.table.populate(self.vars_list, self.structs, self.write_to_xml) self.table.populate(self.vars_list, self.structs, self.write_to_xml)
except Exception as e: except Exception as e:
QMessageBox.warning(self, "Ошибка", f"Ошибка при чтении XML:\n{e}") QMessageBox.warning(self, "Ошибка", f"Ошибка при чтении XML:\n{e}")
@ -404,7 +404,7 @@ class VarEditor(QWidget):
self.update() self.update()
def __after_scanvars_finished(self): def __after_scan_vars_finished(self):
if not os.path.isfile(self.xml_path): if not os.path.isfile(self.xml_path):
self.makefile_path = None self.makefile_path = None
self.structs_path = None self.structs_path = None
@ -443,7 +443,7 @@ class VarEditor(QWidget):
QMessageBox.warning(self, "Нет переменных", f"Сначала загрузите переменные ({scan_title}).") QMessageBox.warning(self, "Нет переменных", f"Сначала загрузите переменные ({scan_title}).")
return return
dlg = VariableSelectorDialog(self.table, self.vars_list, self.structs, self.typedef_map, self.xml_path, self) dlg = var_selector_windowDialog(self.table, self.vars_list, self.structs, self.typedef_map, self.xml_path, self)
if dlg.exec_(): if dlg.exec_():
self.write_to_xml() self.write_to_xml()
self.update() self.update()

View File

@ -1,7 +1,7 @@
# build command # build command
# pyinstaller --onefile --distpath . --workpath ./build --specpath ./build generateVars.py # pyinstaller --onefile --distpath . --workpath ./build --specpath ./build generate_debug_vars.py
# start script # start script
# generateVars.exe F:\Work\Projects\TMS\TMS_new_bus\ Src/DebugTools/vars.xml Src/DebugTools # generate_debug_vars.exe F:\Work\Projects\TMS\TMS_new_bus\ Src/DebugTools/vars.xml Src/DebugTools
import sys import sys
import os import os

View File

@ -6,8 +6,8 @@ import sys
import contextlib import contextlib
import io import io
import json import json
from scanVars import run_scan from scan_vars import run_scan
from VariableTable import VariableTableWidget, rows from var_table import var_tableWidget, rows
from PySide2.QtWidgets import ( from PySide2.QtWidgets import (
QApplication, QWidget, QTableWidget, QTableWidgetItem, QApplication, QWidget, QTableWidget, QTableWidgetItem,

View File

@ -1,7 +1,7 @@
# build command # build command
# pyinstaller --onefile scanVars.py --add-binary "F:\Work\Projects\TMS\TMS_new_bus\Src\DebugTools/build/libclang.dll;." --distpath . --workpath ./build --specpath ./build # pyinstaller --onefile scan_vars.py --add-binary "F:\Work\Projects\TMS\TMS_new_bus\Src\DebugTools/build/libclang.dll;." --distpath . --workpath ./build --specpath ./build
# start script # start script
# scanVars.exe F:\Work\Projects\TMS\TMS_new_bus\ F:\Work\Projects\TMS\TMS_new_bus\Debug\makefile # scan_vars.exe F:\Work\Projects\TMS\TMS_new_bus\ F:\Work\Projects\TMS\TMS_new_bus\Debug\makefile
import os import os
import sys import sys
@ -11,7 +11,7 @@ from clang import cindex
from clang.cindex import Config from clang.cindex import Config
import lxml.etree as ET import lxml.etree as ET
from xml.dom import minidom from xml.dom import minidom
from parseMakefile import parse_makefile from makefile_parser import parse_makefile
from collections import deque from collections import deque
import argparse import argparse
import myXML import myXML

View File

@ -6,16 +6,16 @@ from PySide2.QtWidgets import (
) )
from PySide2.QtGui import QKeySequence, QKeyEvent from PySide2.QtGui import QKeySequence, QKeyEvent
from PySide2.QtCore import Qt, QStringListModel, QSettings from PySide2.QtCore import Qt, QStringListModel, QSettings
import VariableTable import var_table
import setupVars import var_setup
import myXML import myXML
import time import time
import selectTable import var_selector_table
array_re = re.compile(r'^(\w+)\[(\d+)\]$') array_re = re.compile(r'^(\w+)\[(\d+)\]$')
class VariableSelectorDialog(QDialog): class var_selector_windowDialog(QDialog):
def __init__(self, table, all_vars, structs, typedefs, xml_path=None, parent=None): def __init__(self, table, all_vars, structs, typedefs, xml_path=None, parent=None):
super().__init__(parent) super().__init__(parent)
self.setWindowTitle("Выбор переменных") self.setWindowTitle("Выбор переменных")
@ -55,10 +55,10 @@ class VariableSelectorDialog(QDialog):
self.btn_accept = QPushButton("Применить") self.btn_accept = QPushButton("Применить")
# Создаем экземпляр вашего готового виджета # Создаем экземпляр вашего готового виджета
self.vars_widget = selectTable.VariableSelectWidget(self) self.vars_widget = var_selector_table.VariableSelectWidget(self)
self.vars_widget.tree.itemDoubleClicked.connect(self.on_left_tree_double_click) self.vars_widget.tree.itemDoubleClicked.connect(self.on_left_tree_double_click)
self.vars_widget.setObjectName("LeftTable") self.vars_widget.setObjectName("LeftTable")
self.selected_vars_widget = selectTable.VariableSelectWidget(self) self.selected_vars_widget = var_selector_table.VariableSelectWidget(self)
self.selected_vars_widget.tree.itemDoubleClicked.connect(self.on_rigth_tree_double_click) self.selected_vars_widget.tree.itemDoubleClicked.connect(self.on_rigth_tree_double_click)
self.selected_vars_widget.setObjectName("RightTable") self.selected_vars_widget.setObjectName("RightTable")
@ -107,7 +107,7 @@ class VariableSelectorDialog(QDialog):
self.selected_vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked()) self.selected_vars_widget.set_autocomplete(self.autocomplete_checkbox.isChecked())
# --- Код в конце __init__ --- # --- Код в конце __init__ ---
self.expanded_vars = setupVars.expand_vars(self.all_vars, self.structs, self.typedefs) self.expanded_vars = var_setup.expand_vars(self.all_vars, self.structs, self.typedefs)
self.update_vars_widget() self.update_vars_widget()
def on_move_right(self): def on_move_right(self):
@ -147,7 +147,7 @@ class VariableSelectorDialog(QDialog):
t_start = time.perf_counter() t_start = time.perf_counter()
t1 = time.perf_counter() t1 = time.perf_counter()
self.selected_vars, self.unselected_vars = setupVars.split_vars_by_show_flag(self.expanded_vars) self.selected_vars, self.unselected_vars = var_setup.split_vars_by_show_flag(self.expanded_vars)
t2 = time.perf_counter() t2 = time.perf_counter()
self.vars_widget.set_data(self.unselected_vars) self.vars_widget.set_data(self.unselected_vars)

View File

@ -2,9 +2,9 @@ import sys
import os import os
import re import re
import lxml.etree as ET import lxml.etree as ET
from generateVars import map_type_to_pt, get_iq_define, type_map from generate_debug_vars import map_type_to_pt, get_iq_define, type_map
from enum import IntEnum from enum import IntEnum
import scanVars import scan_vars
import myXML import myXML
import pickle import pickle
@ -291,7 +291,7 @@ def expand_struct_recursively(prefix, type_str, structs, typedefs, var_attrs, de
return process_array(prefix, type_str, structs, typedefs, var_attrs, depth) return process_array(prefix, type_str, structs, typedefs, var_attrs, depth)
# Ищем структуру по имени типа # Ищем структуру по имени типа
base_type = scanVars.strip_ptr_and_array(type_str) base_type = scan_vars.strip_ptr_and_array(type_str)
fields = structs.get(base_type) fields = structs.get(base_type)
if not isinstance(fields, dict): if not isinstance(fields, dict):
# Не структура и не массив — просто возвращаем пустой список # Не структура и не массив — просто возвращаем пустой список

View File

@ -6,7 +6,7 @@ from PySide2.QtWidgets import (
from PySide2.QtGui import QColor, QBrush, QPalette from PySide2.QtGui import QColor, QBrush, QPalette
from PySide2.QtCore import Qt from PySide2.QtCore import Qt
from enum import IntEnum from enum import IntEnum
from generateVars import type_map from generate_debug_vars import type_map
import time import time
from typing import Dict, List from typing import Dict, List
@ -61,7 +61,7 @@ class FilterDialog(QDialog):
class VariableTableWidget(QTableWidget): class var_tableWidget(QTableWidget):
def __init__(self, parent=None): def __init__(self, parent=None):
super().__init__(0, 8, parent) super().__init__(0, 8, parent)
# Таблица переменных # Таблица переменных