def analyzeFileList(files: list, item: QtWidgets.QTreeWidgetItem): if (item.childCount() > 0): for i in range(item.childCount()): files = analyzeFileList(files, item.child(i)) else: files.append(item) return files
def populatebomtree(): global bom, assy_top, assy_bot, viewtop, bomcolumns, selectionset bom = pandas.read_csv(os.path.join(BASE_FOLDER, 'Assembly\\bom.csv'), header=0) assy_top = pandas.read_csv(os.path.join(BASE_FOLDER, 'Assembly\\PnP_front.csv'), header=0) assy_bot = pandas.read_csv(os.path.join(BASE_FOLDER, 'Assembly\\PnP_back.csv'), header=0) tw = window.treeWidget_bom tw.clearSelection() tw.clear() assy_side = assy_top if viewtop else assy_bot for index, row in bom.iterrows(): selected = str.split(row['Parts'], ', ') pnp_refdes = assy_side['Name'] pnp_count = 0 parts_thisside = '' for refdes in selected: pnp_row = assy_side[pnp_refdes == refdes] if len(pnp_row) > 0: if (selectionset == None) or (refdes in selectionset): if pnp_count == 0: twi = QTreeWidgetItem(tw, row.filter(bomcolumns).tolist()) parts_thisside = parts_thisside + ',' + refdes if pnp_count > 0 else refdes pnp_count = pnp_count + 1 twi.addChild( QTreeWidgetItem(twi, [pnp_row['Name'].values[0]])) if 0 < pnp_count < len(selected): twi.setData(0, Qt.DisplayRole, parts_thisside) if pnp_count == 1: twi.removeChild(twi.child(0))
def selectNoneSubChild(self, child: QtWidgets.QTreeWidgetItem) -> None: for i in range(child.childCount()): item = child.child(i) if (item.text(1) == ""): self.treeWidget.itemWidget( item, 2).setCheckedWithoutInternalChecking(False) self.selectNoneSubChild(item) else: self.treeWidget.itemWidget( item, 2).setCheckedWithoutInternalChecking(False)
def invertSelectionSubChild(self, child: QtWidgets.QTreeWidgetItem) -> None: for i in range(child.childCount()): item = child.child(i) if (item.text(1) == ""): self.treeWidget.itemWidget( item, 2).setCheckedWithoutInternalChecking(not ( self.treeWidget.itemWidget(item, 2).isChecked())) self.invertSelectionSubChild(item) else: self.treeWidget.itemWidget(item, 2).setChecked(not ( self.treeWidget.itemWidget(item, 2).isChecked()))
def changeState(checkbox: CheckBoxAction, item: QtWidgets.QTreeWidgetItem): if (checkbox.avoidInternalChecking): checkbox.avoidInternalChecking = False item.setDisabled(not (checkbox.isChecked())) else: item.setDisabled(not (checkbox.isChecked())) for i in range(item.childCount()): subitem = item.child(i) subcheckbox = subitem.treeWidget().itemWidget( subitem, 2) if (subcheckbox): subitem.setDisabled(not (subcheckbox.isChecked())) subcheckbox.setChecked(checkbox.isChecked()) else: log("[ WARN ] Unable to disable/enable other checkboxes" )