class MainWidget(qg.QDialog):

    def __init__(self, design, sketches, layers, operations, jointop=None,buffer = .01):
        super(MainWidget, self).__init__()
        self.design = design
        self.sketches = sketches
        self.layers = layers
        self.operations = operations

        self.operation_list = DraggableTreeWidget()
        self.operation_list.linklist(self.operations)

        self.table = Table(JointRow(self.get_sketches, self.get_layers),Delegate)
        table_control= TableControl(self.table, self)

        button_ok = qg.QPushButton('Ok')
        button_cancel = qg.QPushButton('Cancel')

        button_ok.clicked.connect(self.accept)
        button_cancel.clicked.connect(self.reject)
                
                
        self.buffer_val = qg.QLineEdit()                
                
        sublayout2 = qg.QHBoxLayout()
        sublayout2.addStretch()
        sublayout2.addWidget(button_ok)
        sublayout2.addWidget(button_cancel)
        sublayout2.addStretch()

        layout = qg.QVBoxLayout()
        layout.addWidget(qg.QLabel('Device'))
        layout.addWidget(self.operation_list)
        layout.addWidget(table_control)
        layout.addWidget(qg.QLabel('Buffer'))
        layout.addWidget(self.buffer_val)
        layout.addLayout(sublayout2)
        
        self.setLayout(layout)

        if jointop is not None:
            try:
                op_ref, output_ii = jointop.operation_links['parent'][0]
                op_ii = design.operation_index(op_ref)
                self.operation_list.selectIndeces([(op_ii, output_ii)])
            except(IndexError, KeyError):
                pass

            try:
                fixed_ref, fixed_output_ii = jointop.operation_links[
                    'fixed'][0]
                fixed_ii = design.operation_index(fixed_ref)
                self.fixed.selectIndeces([(fixed_ii, fixed_output_ii)])
            except(IndexError, KeyError):
                pass

            for item in jointop.joint_defs:
                sketch = self.design.sketches[item.sketch]
                joint_layer = self.design.return_layer_definition().getlayer(
                    item.joint_layer)
                sublaminate_layers = [self.design.return_layer_definition().getlayer(
                    item2) for item2 in item.sublaminate_layers]
                self.table.row_add(
                    sketch,
                    joint_layer,
                    sublaminate_layers,
                    item.width)            
        else:
            self.table.row_add_empty()
        self.buffer_val.setText(str(buffer))

        self.table.resizeColumnsToContents()
        self.table.reset_min_width()
        self.table.setHorizontalScrollBarPolicy(qc.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)

    def contact_sketch(self):
        try:
            return self.sketchwidget.itemlist.selectedItems()[0].value
        except IndexError:
            return None


    def get_sketches(self):
        return self.sketches

    def get_layers(self):
        return self.layers

    def acceptdata(self):
        jointdefs = []
        for ii in range(self.table.rowCount()):
            sketch = self.table.item(ii, 0).data(qc.Qt.ItemDataRole.UserRole)
            joint_layer = self.table.item(
                ii, 1).data(
                qc.Qt.ItemDataRole.UserRole)
            sublaminate_layers = self.table.item(
                ii, 2).data(
                qc.Qt.ItemDataRole.UserRole)
            width = (self.table.item(ii, 3).data(qc.Qt.ItemDataRole.UserRole))
            jointdefs.append(JointDef(sketch.id,joint_layer.id,[item.id for item in sublaminate_layers],width))
        operation_links = {}
        operation_links['parent'] = self.operation_list.currentRefs()
        sketch_links = {}
        return operation_links,sketch_links,jointdefs,float(self.buffer_val.text())
class MainWidget(qg.QDialog):

    def __init__(self, design, sketches, layers, operations, jointop=None,sketch = None):
        super(MainWidget, self).__init__()
        self.design = design
        self.sketches = sketches
        self.layers = layers
        self.operations = operations

        self.operation_list = DraggableTreeWidget()
        self.operation_list.linklist(self.operations)

        self.fixed = DraggableTreeWidget()
        self.fixed.linklist(self.operations)

        self.table = Table(JointRow(self.get_sketches, self.get_layers),Delegate)
        table_control= TableControl(self.table, self)


        self.sketchwidget = SketchListManager(self.design,name='Contact Points Sketch')
        for ii in range(self.sketchwidget.itemlist.count()):
            item = self.sketchwidget.itemlist.item(ii)
            if item.value == sketch:
                item.setSelected(True)

        button_ok = qg.QPushButton('Ok')
        button_cancel = qg.QPushButton('Cancel')

        button_ok.clicked.connect(self.accept)
        button_cancel.clicked.connect(self.reject)
                
        sublayout1 = qg.QHBoxLayout()
        sublayout1_1 = qg.QVBoxLayout()
        sublayout1_2 = qg.QVBoxLayout()
        sublayout1_3 = qg.QVBoxLayout()

        sublayout1_1.addWidget(qg.QLabel('Device'))
        sublayout1_1.addWidget(self.operation_list)
        sublayout1_2.addWidget(qg.QLabel('Fixed Region'))
        sublayout1_2.addWidget(self.fixed)
        sublayout1_3.addWidget(self.sketchwidget)

        sublayout1.addLayout(sublayout1_1)
        sublayout1.addLayout(sublayout1_2)
        sublayout1.addLayout(sublayout1_3)

        sublayout2 = qg.QHBoxLayout()
        sublayout2.addStretch()
        sublayout2.addWidget(button_ok)
        sublayout2.addWidget(button_cancel)
        sublayout2.addStretch()

        layout = qg.QVBoxLayout()
        layout.addLayout(sublayout1)
        layout.addWidget(table_control)
        layout.addLayout(sublayout2)
        
        self.setLayout(layout)

        if jointop is not None:
            try:
                op_ref, output_ii = jointop.operation_links['parent'][0]
                op_ii = design.operation_index(op_ref)
                self.operation_list.selectIndeces([(op_ii, output_ii)])
            except(IndexError, KeyError):
                pass

            try:
                fixed_ref, fixed_output_ii = jointop.operation_links[
                    'fixed'][0]
                fixed_ii = design.operation_index(fixed_ref)
                self.fixed.selectIndeces([(fixed_ii, fixed_output_ii)])
            except(IndexError, KeyError):
                pass

            for item in jointop.joint_defs:
                sketch = self.design.sketches[item.sketch]
                joint_layer = self.design.return_layer_definition().getlayer(
                    item.joint_layer)
                sublaminate_layers = [self.design.return_layer_definition().getlayer(
                    item2) for item2 in item.sublaminate_layers]
                self.table.row_add(
                    sketch,
                    joint_layer,
                    sublaminate_layers,
                    item.width,
                    item.stiffness,
                    item.damping,
                    item.preload_angle,
                    item.limit_negative,
                    item.limit_positive)            
        else:
            self.table.row_add_empty()

        self.table.resizeColumnsToContents()
        self.table.reset_min_width()
        self.table.setHorizontalScrollBarPolicy(qc.Qt.ScrollBarAlwaysOff)

    def contact_sketch(self):
        try:
            return self.sketchwidget.itemlist.selectedItems()[0].value
        except IndexError:
            return None


    def get_sketches(self):
        return self.sketches

    def get_layers(self):
        return self.layers

    def acceptdata(self):
        jointdefs = []
        for ii in range(self.table.rowCount()):
            sketch = self.table.item(ii, 0).data(qc.Qt.UserRole)
            joint_layer = self.table.item(
                ii, 1).data(
                qc.Qt.UserRole)
            sublaminate_layers = self.table.item(
                ii, 2).data(
                qc.Qt.UserRole)
            width = (self.table.item(ii, 3).data(qc.Qt.UserRole))
            stiffness = (
                self.table.item(
                    ii, 4).data(
                    qc.Qt.UserRole))
            damping = (
                self.table.item(
                    ii,
                    5).data(
                    qc.Qt.UserRole))
            preload_angle = (self.table.item(ii, 6).data(qc.Qt.UserRole))
            limit_negative = (self.table.item(ii, 7).data(qc.Qt.UserRole))
            limit_positive = (self.table.item(ii, 8).data(qc.Qt.UserRole))
            jointdefs.append(JointDef(sketch.id,
                                      joint_layer.id,
                                      [item.id for item in sublaminate_layers],
                                      width,
                                      stiffness,
                                      damping,
                                      preload_angle,limit_negative,limit_positive))
        operation_links = {}
        operation_links['parent'] = self.operation_list.currentRefs()
        operation_links['fixed'] = self.fixed.currentRefs()
        sketch_links = {}
        sketch_links['contact_points'] = [self.contact_sketch().id]
        return operation_links,sketch_links,jointdefs
class MainWidget(qg.QDialog):

    def __init__(self, design, sketches, layers, operations, jointop=None,sketch = None):
        super(MainWidget, self).__init__()
        self.design = design
        self.sketches = sketches
        self.layers = layers
        self.operations = operations

        self.operation_list = DraggableTreeWidget()
        self.operation_list.linklist(self.operations)

        self.fixed = DraggableTreeWidget()
        self.fixed.linklist(self.operations)

        self.table = Table(JointRow(self.get_sketches, self.get_layers),Delegate)
        table_control= TableControl(self.table, self)


        self.sketchwidget = SketchListManager(self.design,name='Contact Points Sketch')
        for ii in range(self.sketchwidget.itemlist.count()):
            item = self.sketchwidget.itemlist.item(ii)
            if item.value == sketch:
                item.setSelected(True)

        button_ok = qg.QPushButton('Ok')
        button_cancel = qg.QPushButton('Cancel')

        button_ok.clicked.connect(self.accept)
        button_cancel.clicked.connect(self.reject)
                
        sublayout1 = qg.QHBoxLayout()
        sublayout1_1 = qg.QVBoxLayout()
        sublayout1_2 = qg.QVBoxLayout()
        sublayout1_3 = qg.QVBoxLayout()

        sublayout1_1.addWidget(qg.QLabel('Device'))
        sublayout1_1.addWidget(self.operation_list)
        sublayout1_2.addWidget(qg.QLabel('Fixed Region'))
        sublayout1_2.addWidget(self.fixed)
        sublayout1_3.addWidget(self.sketchwidget)

        sublayout1.addLayout(sublayout1_1)
        sublayout1.addLayout(sublayout1_2)
        sublayout1.addLayout(sublayout1_3)

        sublayout2 = qg.QHBoxLayout()
        sublayout2.addStretch()
        sublayout2.addWidget(button_ok)
        sublayout2.addWidget(button_cancel)
        sublayout2.addStretch()

        layout = qg.QVBoxLayout()
        layout.addLayout(sublayout1)
        layout.addWidget(table_control)
        layout.addLayout(sublayout2)
        
        self.setLayout(layout)

        if jointop is not None:
            try:
                op_ref, output_ii = jointop.operation_links['parent'][0]
                op_ii = design.operation_index(op_ref)
                self.operation_list.selectIndeces([(op_ii, output_ii)])
            except(IndexError, KeyError):
                pass

            try:
                fixed_ref, fixed_output_ii = jointop.operation_links[
                    'fixed'][0]
                fixed_ii = design.operation_index(fixed_ref)
                self.fixed.selectIndeces([(fixed_ii, fixed_output_ii)])
            except(IndexError, KeyError):
                pass

            for item in jointop.joint_defs:
                sketch = self.design.sketches[item.sketch]
                joint_layer = self.design.return_layer_definition().getlayer(
                    item.joint_layer)
                sublaminate_layers = [self.design.return_layer_definition().getlayer(
                    item2) for item2 in item.sublaminate_layers]
                self.table.row_add(
                    sketch,
                    joint_layer,
                    sublaminate_layers,
                    item.width,
                    item.stiffness,
                    item.damping,
                    item.preload_angle,
                    item.limit_negative,
                    item.limit_positive)            
        else:
            self.table.row_add_empty()

        self.table.resizeColumnsToContents()
        self.table.reset_min_width()
        self.table.setHorizontalScrollBarPolicy(qc.Qt.ScrollBarPolicy.ScrollBarAlwaysOff)

    def contact_sketch(self):
        try:
            return self.sketchwidget.itemlist.selectedItems()[0].value
        except IndexError:
            return None


    def get_sketches(self):
        return self.sketches

    def get_layers(self):
        return self.layers

    def acceptdata(self):
        jointdefs = []
        for ii in range(self.table.rowCount()):
            sketch = self.table.item(ii, 0).data(qc.Qt.ItemDataRole.UserRole)
            joint_layer = self.table.item(
                ii, 1).data(
                qc.Qt.ItemDataRole.UserRole)
            sublaminate_layers = self.table.item(
                ii, 2).data(
                qc.Qt.ItemDataRole.UserRole)
            width = (self.table.item(ii, 3).data(qc.Qt.ItemDataRole.UserRole))
            stiffness = (
                self.table.item(
                    ii, 4).data(
                    qc.Qt.ItemDataRole.UserRole))
            damping = (
                self.table.item(
                    ii,
                    5).data(
                    qc.Qt.ItemDataRole.UserRole))
            preload_angle = (self.table.item(ii, 6).data(qc.Qt.ItemDataRole.UserRole))
            limit_negative = (self.table.item(ii, 7).data(qc.Qt.ItemDataRole.UserRole))
            limit_positive = (self.table.item(ii, 8).data(qc.Qt.ItemDataRole.UserRole))
            jointdefs.append(JointDef(sketch.id,
                                      joint_layer.id,
                                      [item.id for item in sublaminate_layers],
                                      width,
                                      stiffness,
                                      damping,
                                      preload_angle,limit_negative,limit_positive))
        operation_links = {}
        operation_links['parent'] = self.operation_list.currentRefs()
        operation_links['fixed'] = self.fixed.currentRefs()
        sketch_links = {}
        sketch_links['contact_points'] = [self.contact_sketch().id]
        return operation_links,sketch_links,jointdefs
Exemple #4
0
class MainWidget(qg.QDialog):
    def __init__(self,
                 design,
                 sketches,
                 layers,
                 operations,
                 jointop=None,
                 buffer=.01):
        super(MainWidget, self).__init__()
        self.design = design
        self.sketches = sketches
        self.layers = layers
        self.operations = operations

        self.operation_list = DraggableTreeWidget()
        self.operation_list.linklist(self.operations)

        self.table = Table(JointRow(self.get_sketches, self.get_layers),
                           Delegate)
        table_control = TableControl(self.table, self)

        button_ok = qg.QPushButton('Ok')
        button_cancel = qg.QPushButton('Cancel')

        button_ok.clicked.connect(self.accept)
        button_cancel.clicked.connect(self.reject)

        self.buffer_val = qg.QLineEdit()

        sublayout2 = qg.QHBoxLayout()
        sublayout2.addStretch()
        sublayout2.addWidget(button_ok)
        sublayout2.addWidget(button_cancel)
        sublayout2.addStretch()

        layout = qg.QVBoxLayout()
        layout.addWidget(qg.QLabel('Device'))
        layout.addWidget(self.operation_list)
        layout.addWidget(table_control)
        layout.addWidget(qg.QLabel('Buffer'))
        layout.addWidget(self.buffer_val)
        layout.addLayout(sublayout2)

        self.setLayout(layout)

        if jointop is not None:
            try:
                op_ref, output_ii = jointop.operation_links['parent'][0]
                op_ii = design.operation_index(op_ref)
                self.operation_list.selectIndeces([(op_ii, output_ii)])
            except (IndexError, KeyError):
                pass

            try:
                fixed_ref, fixed_output_ii = jointop.operation_links['fixed'][
                    0]
                fixed_ii = design.operation_index(fixed_ref)
                self.fixed.selectIndeces([(fixed_ii, fixed_output_ii)])
            except (IndexError, KeyError):
                pass

            for item in jointop.joint_defs:
                sketch = self.design.sketches[item.sketch]
                joint_layer = self.design.return_layer_definition().getlayer(
                    item.joint_layer)
                sublaminate_layers = [
                    self.design.return_layer_definition().getlayer(item2)
                    for item2 in item.sublaminate_layers
                ]
                self.table.row_add(sketch, joint_layer, sublaminate_layers,
                                   item.width)
        else:
            self.table.row_add_empty()
        self.buffer_val.setText(str(buffer))

        self.table.resizeColumnsToContents()
        self.table.reset_min_width()
        self.table.setHorizontalScrollBarPolicy(qc.Qt.ScrollBarAlwaysOff)

    def contact_sketch(self):
        try:
            return self.sketchwidget.itemlist.selectedItems()[0].value
        except IndexError:
            return None

    def get_sketches(self):
        return self.sketches

    def get_layers(self):
        return self.layers

    def acceptdata(self):
        jointdefs = []
        for ii in range(self.table.rowCount()):
            sketch = self.table.item(ii, 0).data(qc.Qt.UserRole)
            joint_layer = self.table.item(ii, 1).data(qc.Qt.UserRole)
            sublaminate_layers = self.table.item(ii, 2).data(qc.Qt.UserRole)
            width = (self.table.item(ii, 3).data(qc.Qt.UserRole))
            jointdefs.append(
                JointDef(sketch.id, joint_layer.id,
                         [item.id for item in sublaminate_layers], width))
        operation_links = {}
        operation_links['parent'] = self.operation_list.currentRefs()
        sketch_links = {}
        return operation_links, sketch_links, jointdefs, float(
            self.buffer_val.text())