Exemple #1
0
    def __init__(self, main_window):
        """
        Initialize treeView object from Main Window.

        Args:
            main_window (QtWidgets.QMainWindow): [description]
        """
        self.main_window = main_window
        self.treeView = self.main_window.treeView
        self.cache_files = {}
        tree = self.treeView
        # https://doc.qt.io/archives/qt-4.8/qabstractitemview.html
        tree.selectionMode = QAbstractItemView.ExtendedSelection
        tree.setEditTriggers(QAbstractItemView.NoEditTriggers)
        tree.clicked.connect(self.tree_clicked)
        tree.doubleClicked.connect(self.tree_dblclicked)
        tree.expanded.connect(self.on_expanded)

        tree.setContextMenuPolicy(Qt.CustomContextMenu)
        tree.customContextMenuRequested.connect(self.open_menu)
        self.source_model = QtGui.QStandardItemModel()
        tree.setModel(self.source_model)
        self.selection_model = QItemSelectionModel(self.source_model)
        tree.setSelectionModel(self.selection_model)
        tree.selectionModel().selectionChanged.connect(
            self.on_selection_changed)
    def build_gui(self):
        self.setWindowFlags(Qt.Qt.Window)
        layout = QtGui.QGridLayout()
        layout.setSpacing(10)

        # Window layout
        #layout = QtGui.QVBoxLayout()
        self.setLayout(layout)

        self.show_button_neurite = QtGui.QPushButton('Show neurite')
        self.show_button_selected_neurite = QtGui.QPushButton(
            'Add selected neurite(s)')
        self.show_button_synapse = QtGui.QPushButton('Show synapse')
        self.clear_knossos_view_button = QtGui.QPushButton('Clear view')

        self.ssv_selector = QtGui.QListView()
        self.ssv_selector.setUniformItemSizes(True)  # better performance
        self.ssv_item_model = QtGui.QStandardItemModel(self.ssv_selector)

        self.syn_selector = QtGui.QListView()
        self.syn_selector.setUniformItemSizes(True)  # better performance
        self.syn_item_model = QtGui.QStandardItemModel(self.syn_selector)

        self.direct_ssv_id_input = QtGui.QLineEdit()
        self.direct_ssv_id_input.setValidator(QtGui.QIntValidator())
        self.direct_ssv_id_input.setMaxLength(8)

        self.direct_syn_id_input = QtGui.QLineEdit()
        self.direct_syn_id_input.setValidator(QtGui.QIntValidator())
        self.direct_syn_id_input.setMaxLength(8)

        # celltype
        self.celltype_field = QtGui.QLabel("CellType:      ", self)

        # synapse
        self.synapse_field1 = QTableWidget()
        self.synapse_field1.setRowCount(5)
        self.synapse_field1.setColumnCount(2)
        self.synapse_field1.setItem(0, 0, QTableWidgetItem("coordinate"))
        self.synapse_field1.setItem(0, 1, QTableWidgetItem(""))
        self.synapse_field1.setItem(1, 0, QTableWidgetItem("synaptic type"))
        self.synapse_field1.setItem(1, 1, QTableWidgetItem(""))
        self.synapse_field1.setItem(2, 0, QTableWidgetItem("syn. proba."))
        self.synapse_field1.setItem(2, 1, QTableWidgetItem(""))
        self.synapse_field1.setItem(3, 0, QTableWidgetItem("size [um^2]"))
        self.synapse_field1.setItem(3, 1, QTableWidgetItem(""))
        self.synapse_field1.setItem(4, 0, QTableWidgetItem("Object ID"))
        self.synapse_field1.setItem(4, 1, QTableWidgetItem(""))
        # self.synapse_field1.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)  # qt5
        header = self.synapse_field1.horizontalHeader()
        header.setSectionResizeMode(0, QtGui.QHeaderView.Stretch)
        header.setSectionResizeMode(1, QtGui.QHeaderView.ResizeToContents)
        self.synapse_field1.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)

        self.synapse_field2 = QTableWidget()
        self.synapse_field2.setRowCount(5)
        self.synapse_field2.setColumnCount(3)
        # TODO: sort by pre and post in 'on_syn_selector_changed' and replace neuron1 and neuron2 by pre and post
        self.synapse_field2.setItem(0, 1, QTableWidgetItem("neuron 1"))
        self.synapse_field2.setItem(0, 2, QTableWidgetItem("neuron 2"))
        self.synapse_field2.setItem(1, 0, QTableWidgetItem("SSV ID"))
        self.synapse_field2.setItem(2, 0, QTableWidgetItem("cell type"))
        self.synapse_field2.setItem(3, 0, QTableWidgetItem("cell comp."))
        self.synapse_field2.setItem(4, 0, QTableWidgetItem("spiness"))
        # self.synapse_field2.setEditTriggers(QtWidgets.QTableWidget.NoEditTriggers)  # qt5
        self.synapse_field2.setEditTriggers(
            QtGui.QAbstractItemView.NoEditTriggers)
        header = self.synapse_field2.horizontalHeader()
        header.setSectionResizeMode(0, QtGui.QHeaderView.Stretch)
        header.setSectionResizeMode(1, QtGui.QHeaderView.ResizeToContents)
        header.setSectionResizeMode(2, QtGui.QHeaderView.ResizeToContents)

        self.send_synapsetype_label_button = QtGui.QPushButton('Send')

        self.synapsetype_label = QtGui.QLabel()
        self.synapsetype_label.setText(
            "Synapse type label [-1: inhib.; 0: non-syn.; 1: "
            "excit.]:")
        self.synapsetype_label_text = QtGui.QLineEdit()
        self.send_button_response_label = QtGui.QLabel()
        self.send_button_response_label.setText(None)

        #self.exploration_mode_chk_box = QtGui.QCheckBox('Exploration mode')
        #self.exploration_mode_chk_box.setChecked(True)
        #self.ssv_selection_model =
        # QtGui.QItemSelectionModel(self.ssv_select_model)

        #self.selectionModel =
        # self.ssv_selector.selectionModel(self.ssv_selector)
        #self.ssv_selector.setSelectionModel(self.ssv_selection_model)
        #print('selection model: ' + str(self.ssv_selector.selectionModel()))

        self.ssv_selector.clicked.connect(self.on_ssv_selector_changed)
        self.syn_selector.clicked.connect(self.on_syn_selector_changed)

        self.populate_ssv_list()

        self.populate_syn_list()
        print('Connected to SyConnGate.')

        layout.addWidget(self.direct_ssv_id_input, 1, 0, 1, 1)
        layout.addWidget(self.direct_syn_id_input, 1, 1, 1, 1)
        layout.addWidget(self.ssv_selector, 2, 0, 1, 1)
        layout.addWidget(self.syn_selector, 2, 1, 1, 1)
        layout.addWidget(self.show_button_neurite, 3, 0, 1, 1)
        layout.addWidget(self.show_button_synapse, 3, 1, 1, 1)
        layout.addWidget(self.clear_knossos_view_button, 4, 0, 1, 1)
        layout.addWidget(self.show_button_selected_neurite, 5, 0, 1, 1)
        layout.addWidget(self.celltype_field, 1, 2, 1, 2)

        layout.addWidget(self.synapse_field1, 2, 2, 1, 1)
        layout.addWidget(self.synapse_field2, 3, 2, 1, 1)
        layout.addWidget(self.synapsetype_label, 4, 1, 1, 1)
        layout.addWidget(self.synapsetype_label_text, 4, 2, 1, 2)
        layout.addWidget(self.send_button_response_label, 5, 1, 1, 1)
        layout.addWidget(self.send_synapsetype_label_button, 5, 2, 1, 1)

        #self.ssv_select_model.itemChanged.connect(self.on_ssv_selector_changed)
        #self.selectionModel.selectionChanged.connect(self.on_ssv_selector_changed)

        self.show_button_neurite.clicked.connect(
            self.show_button_neurite_clicked)
        self.show_button_selected_neurite.clicked.connect(
            self.show_button_selected_neurite_clicked)
        self.show_button_synapse.clicked.connect(
            self.show_button_synapse_clicked)
        self.clear_knossos_view_button.clicked.connect(
            self.clear_knossos_view_button_clicked)
        self.send_synapsetype_label_button.clicked.connect(
            self.send_synapsetype_label_button_clicked)
        #self.exploration_mode_chk_box.stateChanged.connect(self.exploration_mode_changed)

        # self.setGeometry(300, 300, 450, 300)
        self.setWindowTitle('SyConn Viewer v2')
        self.show()