[bugfix] For some unknown reason QPushButtons in event table caused
segmentation fault
This commit is contained in:
		
							parent
							
								
									0018ae10d0
								
							
						
					
					
						commit
						d310cf3ff7
					
				
							
								
								
									
										20
									
								
								QtPyLoT.py
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								QtPyLoT.py
									
									
									
									
									
								
							| @ -2227,20 +2227,26 @@ class MainWindow(QMainWindow): | |||||||
|         Build and initiate event table (3rd tab [index=2]) containing information of every event. |         Build and initiate event table (3rd tab [index=2]) containing information of every event. | ||||||
|         ''' |         ''' | ||||||
| 
 | 
 | ||||||
|         def set_enabled(item, enabled=True, checkable=False): |         def set_enabled(item, selectable=True, checkable=False): | ||||||
|             # modify item flags depending on case needed |             # modify item flags depending on case needed | ||||||
|             if enabled and not checkable: |             if selectable and not checkable: | ||||||
|                 item.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) |                 item.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsSelectable) | ||||||
|             elif enabled and checkable: |             elif selectable and checkable: | ||||||
|                 item.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsSelectable) |                 item.setFlags(QtCore.Qt.ItemIsEnabled | QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsSelectable) | ||||||
|             else: |             else: | ||||||
|                 item.setFlags(QtCore.Qt.ItemIsSelectable) |                 item.setFlags(QtCore.Qt.ItemIsEnabled) | ||||||
| 
 | 
 | ||||||
|         if self.project: |         if self.project: | ||||||
|             eventlist = self.project.eventlist |             eventlist = self.project.eventlist | ||||||
|         else: |         else: | ||||||
|             eventlist = [] |             eventlist = [] | ||||||
| 
 | 
 | ||||||
|  |         def cell_clicked(row=None, column=None): | ||||||
|  |             table = self.project._table | ||||||
|  |             event = self.project.getEventFromPath(table[row][1].text()) | ||||||
|  |             if column == 0: | ||||||
|  |                 self.remove_event(event) | ||||||
|  | 
 | ||||||
|         def cell_changed(row=None, column=None): |         def cell_changed(row=None, column=None): | ||||||
|             # connected to cell changes in event table |             # connected to cell changes in event table | ||||||
|             # changes attributes of the corresponding event |             # changes attributes of the corresponding event | ||||||
| @ -2304,7 +2310,7 @@ class MainWindow(QMainWindow): | |||||||
|                 event_nautopicks = len(event.pylot_autopicks) |                 event_nautopicks = len(event.pylot_autopicks) | ||||||
| 
 | 
 | ||||||
|             # init table items for current row |             # init table items for current row | ||||||
|             item_delete = QtGui.QPushButton() |             item_delete = QtGui.QTableWidgetItem() | ||||||
|             item_delete.setIcon(del_icon) |             item_delete.setIcon(del_icon) | ||||||
|             item_path = QtGui.QTableWidgetItem() |             item_path = QtGui.QTableWidgetItem() | ||||||
|             item_time = QtGui.QTableWidgetItem() |             item_time = QtGui.QTableWidgetItem() | ||||||
| @ -2321,7 +2327,7 @@ class MainWindow(QMainWindow): | |||||||
|             item_notes = QtGui.QTableWidgetItem() |             item_notes = QtGui.QTableWidgetItem() | ||||||
| 
 | 
 | ||||||
|             # manipulate items |             # manipulate items | ||||||
|             item_delete.clicked.connect(lambda ev=event: self.remove_event(ev)) |             #item_delete.clicked.connect(lambda ev=event: self.remove_event(ev)) | ||||||
|             item_ref.setBackground(self._colors['ref']) |             item_ref.setBackground(self._colors['ref']) | ||||||
|             item_test.setBackground(self._colors['test']) |             item_test.setBackground(self._colors['test']) | ||||||
|             item_path.setText(event.path) |             item_path.setText(event.path) | ||||||
| @ -2341,6 +2347,7 @@ class MainWindow(QMainWindow): | |||||||
|             set_enabled(item_path, True, False) |             set_enabled(item_path, True, False) | ||||||
|             set_enabled(item_nmp, True, False) |             set_enabled(item_nmp, True, False) | ||||||
|             set_enabled(item_nap, True, False) |             set_enabled(item_nap, True, False) | ||||||
|  |             set_enabled(item_delete, False, False) | ||||||
|             if event.pylot_picks: |             if event.pylot_picks: | ||||||
|                 set_enabled(item_ref, True, True) |                 set_enabled(item_ref, True, True) | ||||||
|                 set_enabled(item_test, True, True) |                 set_enabled(item_test, True, True) | ||||||
| @ -2372,6 +2379,7 @@ class MainWindow(QMainWindow): | |||||||
|         header.setResizeMode(QtGui.QHeaderView.ResizeToContents) |         header.setResizeMode(QtGui.QHeaderView.ResizeToContents) | ||||||
|         header.setStretchLastSection(True) |         header.setStretchLastSection(True) | ||||||
|         self.event_table.cellChanged[int, int].connect(cell_changed) |         self.event_table.cellChanged[int, int].connect(cell_changed) | ||||||
|  |         self.event_table.cellClicked[int, int].connect(cell_clicked) | ||||||
| 
 | 
 | ||||||
|         self.events_layout.addWidget(self.event_table) |         self.events_layout.addWidget(self.event_table) | ||||||
|         self.tabs.setCurrentIndex(tabindex) |         self.tabs.setCurrentIndex(tabindex) | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user