|
@@ -1,3 +1,4 @@
|
|
|
|
|
+import threading
|
|
|
from PySide2 import QtCore
|
|
from PySide2 import QtCore
|
|
|
from PySide2.QtUiTools import QUiLoader
|
|
from PySide2.QtUiTools import QUiLoader
|
|
|
from PySide2.QtWidgets import *
|
|
from PySide2.QtWidgets import *
|
|
@@ -83,6 +84,11 @@ class FormWindow(Ui_Form, MdiActionWindow):
|
|
|
mdiArea:QMdiArea = mainWindow.mdiArea
|
|
mdiArea:QMdiArea = mainWindow.mdiArea
|
|
|
self.instan = instan
|
|
self.instan = instan
|
|
|
self.setWindowTitle(instan.Title)
|
|
self.setWindowTitle(instan.Title)
|
|
|
|
|
+ self.reportButton.clicked.connect(self.report_virtual_timing)
|
|
|
|
|
+ self.reportButton.setHidden(not instan._hasReportVirtualTimingButton)
|
|
|
|
|
+ if instan._hasCrossProbeMenu:
|
|
|
|
|
+ self.tableView.customContextMenuRequested.connect(self.right_click_menu)
|
|
|
|
|
+
|
|
|
self.tableView.setModel(FormWindow.get_form_model(self.instan.Form))
|
|
self.tableView.setModel(FormWindow.get_form_model(self.instan.Form))
|
|
|
self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
|
|
self.tableView.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
|
|
|
|
|
|
|
@@ -115,6 +121,28 @@ class FormWindow(Ui_Form, MdiActionWindow):
|
|
|
if width < win.width():
|
|
if width < win.width():
|
|
|
width = win.width()
|
|
width = win.width()
|
|
|
return width
|
|
return width
|
|
|
|
|
+
|
|
|
|
|
+ def right_click_menu(self, pos):
|
|
|
|
|
+ pop_menu = QMenu()
|
|
|
|
|
+ pop_menu.addAction(QAction('Crossprobe', pop_menu))
|
|
|
|
|
+ pop_menu.triggered.connect(self.crossprobe)
|
|
|
|
|
+ pop_menu.exec_(QCursor.pos())
|
|
|
|
|
+
|
|
|
|
|
+ def get_row(tableView:QTableView):
|
|
|
|
|
+ form_row = []
|
|
|
|
|
+ for col in range(tableView.model().columnCount()):
|
|
|
|
|
+ form_row.append(tableView.model().index(tableView.currentIndex().row(), col).data())
|
|
|
|
|
+ return form_row
|
|
|
|
|
+
|
|
|
|
|
+ def crossprobe(self, action):
|
|
|
|
|
+ form_row = FormWindow.get_row(self.tableView)
|
|
|
|
|
+ line_text_win = self.instan.CrossProbe(form_row)
|
|
|
|
|
+ LineEditWin(self.mainWindow, line_text_win)
|
|
|
|
|
+
|
|
|
|
|
+ def report_virtual_timing(self):
|
|
|
|
|
+ form_row = FormWindow.get_row(self.tableView)
|
|
|
|
|
+ thread = threading.Thread(target=self.instan.ReportVirtualTiming, args=(form_row, self.mainWindow.GUI,))
|
|
|
|
|
+ thread.start()
|
|
|
|
|
|
|
|
class MultiFormWin(Ui_Form, MdiActionWindow):
|
|
class MultiFormWin(Ui_Form, MdiActionWindow):
|
|
|
def __init__(self, mainWindow, instan:GuiType._GuiWinFormMulti) -> None:
|
|
def __init__(self, mainWindow, instan:GuiType._GuiWinFormMulti) -> None:
|
|
@@ -126,7 +154,7 @@ class MultiFormWin(Ui_Form, MdiActionWindow):
|
|
|
|
|
|
|
|
self.instan = instan
|
|
self.instan = instan
|
|
|
self.sheets.activated.connect(lambda index: MultiFormWin.activate_table_sheet(self.tableView, self.instan.Forms, index))
|
|
self.sheets.activated.connect(lambda index: MultiFormWin.activate_table_sheet(self.tableView, self.instan.Forms, index))
|
|
|
- self.reportButton.clicked.connect(self.report_table)
|
|
|
|
|
|
|
+ self.reportButton.clicked.connect(self.report_virtual_timing)
|
|
|
|
|
|
|
|
mdiArea:QMdiArea = mainWindow.mdiArea
|
|
mdiArea:QMdiArea = mainWindow.mdiArea
|
|
|
mdisub = mdiArea.addSubWindow(self)
|
|
mdisub = mdiArea.addSubWindow(self)
|
|
@@ -147,10 +175,17 @@ class MultiFormWin(Ui_Form, MdiActionWindow):
|
|
|
def activate_table_sheet(tableView, form_multi_instan, index):
|
|
def activate_table_sheet(tableView, form_multi_instan, index):
|
|
|
model = FormWindow.get_form_model(form_multi_instan.GetForm(index))
|
|
model = FormWindow.get_form_model(form_multi_instan.GetForm(index))
|
|
|
tableView.setModel(model)
|
|
tableView.setModel(model)
|
|
|
- print("active sheet")
|
|
|
|
|
|
|
|
|
|
- def report_table(self):
|
|
|
|
|
- print("report test")
|
|
|
|
|
|
|
+ def crossprobe(self, action):
|
|
|
|
|
+ form_row = FormWindow.get_row(self.tableView)
|
|
|
|
|
+ form_name = self.sheets.currentText()
|
|
|
|
|
+ line_text_win = self.instan.CrossProbe(form_name, form_row)
|
|
|
|
|
+ LineEditWin(self.mainWindow, line_text_win)
|
|
|
|
|
+
|
|
|
|
|
+ def report_virtual_timing(self):
|
|
|
|
|
+ form_row = FormWindow.get_row(self.tableView)
|
|
|
|
|
+ thread = threading.Thread(target=self.instan.ReportVirtualTiming, args=(self.sheets.currentText(), form_row, self.mainWindow.GUI,))
|
|
|
|
|
+ thread.start()
|
|
|
|
|
|
|
|
def init_multi_form_ui(self):
|
|
def init_multi_form_ui(self):
|
|
|
self.horizontalLayout_2 = QHBoxLayout()
|
|
self.horizontalLayout_2 = QHBoxLayout()
|
|
@@ -181,16 +216,18 @@ class MultiFormWin(Ui_Form, MdiActionWindow):
|
|
|
def right_click_menu(self, pos):
|
|
def right_click_menu(self, pos):
|
|
|
pop_menu = QMenu()
|
|
pop_menu = QMenu()
|
|
|
pop_menu.addAction(QAction('Crossprobe', pop_menu))
|
|
pop_menu.addAction(QAction('Crossprobe', pop_menu))
|
|
|
- pop_menu.triggered.connect(lambda action: print(self.tableView.currentIndex().data()))
|
|
|
|
|
|
|
+ pop_menu.triggered.connect(self.crossprobe)
|
|
|
pop_menu.exec_(QCursor.pos())
|
|
pop_menu.exec_(QCursor.pos())
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
|
|
|
class TreeWidgetItem(QTreeWidgetItem):
|
|
class TreeWidgetItem(QTreeWidgetItem):
|
|
|
def __init__(self, parent: int, tree_row:GuiType._GuiTreeRow):
|
|
def __init__(self, parent: int, tree_row:GuiType._GuiTreeRow):
|
|
|
super().__init__(parent)
|
|
super().__init__(parent)
|
|
|
self.tree_row = tree_row
|
|
self.tree_row = tree_row
|
|
|
|
|
|
|
|
-class LineTextWin(Ui_LineEdit, MdiActionWindow):
|
|
|
|
|
|
|
+
|
|
|
|
|
+class TextBrowserWin(Ui_LineEdit, MdiActionWindow):
|
|
|
def __init__(self, mainWindow, instance:GuiType._GuiWinText) -> None:
|
|
def __init__(self, mainWindow, instance:GuiType._GuiWinText) -> None:
|
|
|
super().__init__(mainWindow)
|
|
super().__init__(mainWindow)
|
|
|
self.setupUi(self)
|
|
self.setupUi(self)
|
|
@@ -205,6 +242,7 @@ class LineTextWin(Ui_LineEdit, MdiActionWindow):
|
|
|
self.mdisubwin.show()
|
|
self.mdisubwin.show()
|
|
|
self.mdisubwin.move(ensure_subwin_in_midarea(mainWindow.mdiArea, self))
|
|
self.mdisubwin.move(ensure_subwin_in_midarea(mainWindow.mdiArea, self))
|
|
|
|
|
|
|
|
|
|
+
|
|
|
class LineEditWin(Ui_LineEdit, MdiActionWindow):
|
|
class LineEditWin(Ui_LineEdit, MdiActionWindow):
|
|
|
def __init__(self, mainWindow, instance:GuiType._GuiWinLinedText) -> None:
|
|
def __init__(self, mainWindow, instance:GuiType._GuiWinLinedText) -> None:
|
|
|
super().__init__(mainWindow)
|
|
super().__init__(mainWindow)
|
|
@@ -453,7 +491,7 @@ class SubWindows(QObject):
|
|
|
GuiType._GuiWinFormMulti: lambda: MultiFormWin(self.ui, instance),
|
|
GuiType._GuiWinFormMulti: lambda: MultiFormWin(self.ui, instance),
|
|
|
GuiType._GuiSideBar: lambda: self.side_bar.init_win_data(instance),
|
|
GuiType._GuiSideBar: lambda: self.side_bar.init_win_data(instance),
|
|
|
GuiType._GuiWinForm: lambda: FormWindow(self.ui, instance),
|
|
GuiType._GuiWinForm: lambda: FormWindow(self.ui, instance),
|
|
|
- GuiType._GuiWinText: lambda: LineTextWin(self.ui, instance),
|
|
|
|
|
|
|
+ GuiType._GuiWinText: lambda: TextBrowserWin(self.ui, instance),
|
|
|
}
|
|
}
|
|
|
win_info.get(type(instance))()
|
|
win_info.get(type(instance))()
|
|
|
return
|
|
return
|