Analyze.py 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import os
  2. import threading
  3. from PySide2.QtWidgets import *
  4. from PySide2.QtCore import *
  5. from PySide2.QtGui import *
  6. from ui.ui_Analyze import Ui_AnalyzeWindow
  7. from ui.AddFile import AddFileWindow,AddPathWindow,FileCategory,FolderCategory
  8. import GuiType
  9. class AnalyzeWindow(Ui_AnalyzeWindow, QDialog):
  10. def __init__(self, mainWindow, shell_execute) -> None:
  11. super().__init__(mainWindow)
  12. self.add_file_win = None
  13. self.setupUi(self)
  14. self.init_tableWidget()
  15. self.bnt_AddFile.clicked.connect(self.add_file_windows)
  16. self.bnt_AddPath.clicked.connect(self.add_path_windows)
  17. self.bnt_Remove.clicked.connect(lambda: self.tableWidget.removeRow(self.tableWidget.currentRow()))
  18. self.bnt_RemoveAll.clicked.connect(self.remove_all)
  19. self.btn_OK.clicked.connect(self.click_ok)
  20. self.btn_Apply.clicked.connect(self.apply)
  21. self.GUI_shell_execute = shell_execute
  22. self.tableWidget.mousePressEvent = self.click_table_widget
  23. self.move(mainWindow.x()+(mainWindow.width()-self.width())/2,mainWindow.y()+(mainWindow.height()-self.height())/2)
  24. self.show()
  25. def init_tableWidget(self):
  26. self.tableWidget.itemSelectionChanged.connect(self.itemSelectionChanged)
  27. self.tableWidget.horizontalHeader().setSectionResizeMode(0, QHeaderView.Fixed)
  28. self.tableWidget.horizontalHeader().setSectionResizeMode(1,QHeaderView.Stretch)
  29. fontMetrics = QFontMetrics(self.tableWidget.font())
  30. textWidth = fontMetrics.width(FileCategory.SystemVerilog_2012.text)
  31. self.tableWidget.setColumnWidth(0, textWidth+30)
  32. def add_file_windows(self):
  33. add_file_win = AddFileWindow(self, os.getcwd())
  34. add_file_win.add_file_sig.connect(self.add_file)
  35. add_file_win.exec_()
  36. def add_path_windows(self):
  37. add_path_win = AddPathWindow(self, os.getcwd())
  38. add_path_win.add_file_sig.connect(self.add_path)
  39. add_path_win.exec_()
  40. def click_table_widget(self, event:QMouseEvent):
  41. p = event.pos()
  42. index = self.tableWidget.indexAt(p)
  43. if index.row() == -1:
  44. self.tableWidget.clearSelection()
  45. else:
  46. QTableWidget.mousePressEvent(self.tableWidget, event)
  47. def itemClicked(self):
  48. print("itemClicked")
  49. def clicked(self):
  50. print("clicked")
  51. def itemSelectionChanged(self):
  52. if self.tableWidget.selectedItems():
  53. self.bnt_Remove.setEnabled(True)
  54. else:
  55. self.bnt_Remove.setEnabled(False)
  56. def add_file(self, text, path):
  57. row = self.tableWidget.rowCount()
  58. self.tableWidget.insertRow(row)
  59. comBox = QComboBox()
  60. comBox.addItems(FileCategory.get_all_text())
  61. comBox.setCurrentText(text)
  62. self.tableWidget.setCellWidget(row,0,comBox)
  63. self.tableWidget.setItem(row,1, QTableWidgetItem(path))
  64. def add_path(self, text, path):
  65. row = self.tableWidget.rowCount()
  66. self.tableWidget.insertRow(row)
  67. self.tableWidget.setItem(row,0, QTableWidgetItem(text))
  68. self.tableWidget.setItem(row,1, QTableWidgetItem(path))
  69. def remove_all(self):
  70. row_count = self.tableWidget.rowCount()
  71. for _ in range(row_count):
  72. self.tableWidget.removeRow(0)
  73. def get_all_path(self):
  74. dat = []
  75. for i in range(self.tableWidget.rowCount()):
  76. file_category_widget:QComboBox = self.tableWidget.cellWidget(i, 0)
  77. # 下拉控件单元格
  78. if file_category_widget:
  79. file_category_text = file_category_widget.currentText()
  80. category_simple = FileCategory.get_category(file_category_text).simple
  81. # 纯文本单元格,Search Path
  82. else:
  83. # file_category = self.tableWidget.item(i, 0).text()
  84. category_simple = FolderCategory.Search_Path.simple
  85. file_path = self.tableWidget.item(i, 1).text()
  86. dat.append([category_simple, file_path])
  87. return dat
  88. def apply(self):
  89. args = self.get_all_path()
  90. try:
  91. thread = threading.Thread(target=self.GUI_shell_execute, args=(f"_GUI.Analyze({args})",))
  92. thread.start()
  93. except Exception as e:
  94. print(e)
  95. def click_ok(self):
  96. self.apply()
  97. self.close()