переструктурирвоаны исходники проекта
This commit is contained in:
parent
abfc507e4e
commit
c32dc161f8
BIN
DebugVarEdit.exe
BIN
DebugVarEdit.exe
Binary file not shown.
16
README.md
16
README.md
@ -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
|
||||||
|
@ -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()
|
||||||
|
@ -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
|
@ -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,
|
@ -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
|
@ -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)
|
@ -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):
|
||||||
# Не структура и не массив — просто возвращаем пустой список
|
# Не структура и не массив — просто возвращаем пустой список
|
@ -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)
|
||||||
# Таблица переменных
|
# Таблица переменных
|
Loading…
Reference in New Issue
Block a user