예제 #1
0
파일: window.py 프로젝트: ilyavlasoff/tau2
 def setup_data(self,
                event_params_model_data=[],
                tasks_params_model_data=[],
                tasks_quantity=0,
                events_quantity=0,
                use3mark_system=False):
     events_params_title = [
         'Нач. событие', 'Кон. событие', 'Оптим.', 'Пессим.'
     ]
     if use3mark_system:
         events_params_title.append('Наиб. вероятное')
     self.ui.tasksParamsTable.setModel(
         TableModel(tasks_params_model_data, events_params_title))
     self.ui.eventsParamsTable.setModel(
         TableModel(event_params_model_data, ['Директ. срок']))
     self.ui.timeReservesTable.setModel(
         TableModel([], ['Номера событий', 'Полный резерв времени']))
     self.ui.timeReservesTable.resizeColumnsToContents()
     self.ui.eventsResultsTable.setModel(TableModel([], []))
     self.ui.tasksResultsTable.setModel(TableModel([], []))
     self.ui.tasksQuantitySpinBox.setValue(tasks_quantity)
     self.ui.eventsQuantitySpinBox.setValue(events_quantity)
     if use3mark_system:
         self.ui.mark3SysRadio.setChecked(True)
     else:
         self.ui.mark2SysRadio.setChecked(True)
예제 #2
0
    def __init__(self, db=0, mode=0):
        super().__init__()

        layout = QGridLayout()
        #self.central_widget.setLayout(layout)
        self.resize(800, self.height())
        self.lb_find = QInvisibleButton('Поиск')
        self.lb_find.setFont(mainfont)
        self.te_find = QLineEdit()
        self.te_find.setFont(mainfont)
        self.pid = 0

        layout.addWidget(self.te_find, 0, 0, 1, 1)
        layout.addWidget(self.lb_find, 0, 0, 1, 1)
        #if mode:
        #   te.setReadOnly(False)
        self.lb_find.clicked.connect(self.button_pressed)
        self.te_find.returnPressed.connect(self.line_edit_return_pressed)

        self.database = db

        self.table = QTableView()  # Создаём таблицу
        self.table.doubleClicked.connect(self.viewPerson)
        #self.table = table

        self.model = TableModel(self.database.get_peoples())
        self.table.setModel(self.model)
        self.table.resizeRowsToContents()
        self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
        #self.table.setSelectionMode(QAbstractItemView.SingleSelection);
        self.model.dataChanged.connect(self.table.update)

        layout.addWidget(self.table)
        self.setLayout(layout)
예제 #3
0
    def __init__(self, parent=None):
        """ Initialize the AddressWidget. """
        super(AddressWidget, self).__init__(parent)

        self.tableModel = TableModel()
        self.newAddressTab = NewAddressTab()
        self.newAddressTab.sendDetails.connect(self.addEntry)

        self.addTab(self.newAddressTab, "Address Book")

        self.setupTabs()
예제 #4
0
    def line_edit_return_pressed(self):
        print(self.te_find.text())

        self.model = TableModel(self.database.get_peoples())

        self.proxy_model = QSortFilterProxyModel(self.model)
        self.proxy_model.setSourceModel(self.model)
        self.proxy_model.setFilterFixedString(self.te_find.text())
        self.proxy_model.setFilterKeyColumn(-1)

        self.table.setModel(self.proxy_model)
        self.table.update()
        self.table.resizeRowsToContents()

        #sender = self.sender()
        self.te_find.stackUnder(self.lb_find)
        self.lb_find.setFocus()
예제 #5
0
    def async_init(self):
        self.database = AllTables('database/objects')

        self.model = TableModel(self.database.get_peoples())
        self.table.setModel(self.model)
        self.table.resizeRowsToContents()
        self.table.setSelectionBehavior(QAbstractItemView.SelectRows)
        self.model.dataChanged.connect(self.table.update)

        # Работаем с выпадающим меню
        def openMenu(position):
            menu = QMenu()
            relAction = menu.addAction('Связи')
            menu.addSeparator()
            albAction = menu.addAction('Альбомы')
            menu.addSeparator()
            miniatureAction = menu.addAction('Миниатюра')
            menu.addSeparator()
            viewAction = menu.addAction('Просмотреть')
            addAction = menu.addAction('Добавить')
            editAction = menu.addAction('Редактировать')
            delAction = menu.addAction('Удалить')
            menu.addSeparator()
            drawGraphAction = menu.addAction('Построить дерево')
            menu.addSeparator()
            quitAction = menu.addAction('Выход')
            action = menu.exec_(self.table.mapToGlobal(position))

            if action == viewAction:
                self.viewPerson()

            if action == miniatureAction:
                p = self.get_selected_people()
                print('p = ' + str(p))
                if p is not None:
                    photo_ids = self.database.get_all_photo_ids(p['pid'])
                    path = 0
                    if photo_ids and type(photo_ids) == type(
                        []) and len(photo_ids) > 0:
                        path = self.database.get_photo_path(
                            p['pid'], photo_ids[0])
                    gm = GalleryMiniature(p['pid'], path)
                    gm.exec()

            if action == albAction:
                p = self.get_selected_people()
                if p is not None:
                    self.albuns = AlbumViewer(p['pid'], self.database, 1)
                    self.albuns.show()

            if action == addAction:
                self.personal_card = PersonalCard(
                    self.database.get_people(self.database.add_people({})),
                    self.database, 1)
                self.personal_card.exec_()

                self.line_edit_return_pressed()

            if action == editAction:
                p = self.get_selected_people()
                if p is not None:
                    self.personal_card = PersonalCard(p, self.database, 1)
                    self.personal_card.exec_()

                    self.line_edit_return_pressed()

            if action == delAction:
                res = QMessageBox.question(
                    self, 'ВНИМАНИЕ!!!',
                    "Вы действительно хотите выполнить удаление?",
                    QMessageBox.Yes | QMessageBox.No, QMessageBox.No)
                if res == QMessageBox.Yes:
                    select = self.table.selectionModel()
                    if select.hasSelection():
                        id_list = [
                            index.data() for index in
                            self.table.selectionModel().selection().indexes()
                            if index.column() == 0
                        ]
                        print(id_list)
                        self.database.del_people(id_list)
                        self.database.peoples.save()
                        for pid in id_list:
                            print('remove = ' + str(self.model.removeRow(pid)))

                    self.line_edit_return_pressed()

            if action == relAction:
                pid = self.get_selected_pid()
                backup_relations = copy.deepcopy(self.database.relations)
                self.relation_card = RelationCard(pid, self.database, 2)
                if not self.relation_card.exec_():
                    self.database.relations = backup_relations

            if action == drawGraphAction:
                print('draw graph')
                #dialog = MyDialog()
                #dialog.exec_()
                #engine = dialog.engine
                engine = 'dot'
                self.gd = GraphDrawer(self.database, engine)

            if action == quitAction:
                qApp.quit()

        self.table.setContextMenuPolicy(Qt.CustomContextMenu)
        self.table.customContextMenuRequested.connect(openMenu)
예제 #6
0
    def __init__(self, parent=None):
        super(ImageSimilarity, self).__init__(parent)

        #Build window
        self.setWindowTitle('Image Similarity Search')
        self.radio_pca = QRadioButton('PCA')
        self.radio_pca.setChecked(True)
        self.radio_deep = QRadioButton('Convolutional')
        self.button_load_weights = QPushButton('Load Weights')
        self.button_build_DB = QPushButton('Build Database')
        self.button_save_DB = QPushButton('Save Database')
        self.button_load_DB = QPushButton('Load Database')
        self.button_load_img = QPushButton('Load Image')
        self.button_search = QPushButton('Search')
        self.button_search.setEnabled(False)
        self.button_save_result = QPushButton('Save Result')
        self.button_save_result.setEnabled(False)
        self.spinbox = QSpinBox()
        self.spinbox.setMinimum(-1)
        self.spinbox.setMaximum(99999)
        self.spinbox.setValue(0)
        self.spinboxlabel = QLabel('Max. Distance:')
        self.spinboxlabel.setAlignment(Qt.AlignRight)
        self.searchlabel = QLabel('Query Image:')
        self.countlabel = QLabel('# of Hits:')
        self.table = QTableView()
        #self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
        self.table.horizontalHeader().setStretchLastSection(True)
        self.model = TableModel(parent=self)
        self.table.setModel(self.model)
        self.table.setSortingEnabled(True)
        self.table.setEditTriggers(QAbstractItemView.NoEditTriggers)

        hbox_radio = QHBoxLayout()
        hbox_radio.addWidget(self.radio_pca)
        hbox_radio.addWidget(self.radio_deep)
        hbox_radio.addWidget(self.button_load_weights)

        hbox_buttons = QHBoxLayout()
        hbox_buttons.addWidget(self.button_build_DB)
        hbox_buttons.addWidget(self.button_load_DB)
        hbox_buttons.addWidget(self.button_save_DB)
        hbox_buttons.addWidget(self.button_load_img)
        hbox_buttons.addWidget(self.button_search)
        hbox_buttons.addWidget(self.spinboxlabel)
        hbox_buttons.addWidget(self.spinbox)

        radio_widget = QWidget()
        radio_widget.setLayout(hbox_radio)

        button_widget = QWidget()
        button_widget.setLayout(hbox_buttons)

        external_layout = QVBoxLayout()
        external_layout.addWidget(radio_widget)
        external_layout.addWidget(button_widget)
        external_layout.addWidget(self.searchlabel)
        external_layout.addWidget(self.countlabel)
        external_layout.addWidget(self.table)
        external_layout.addWidget(self.button_save_result)

        self.setLayout(external_layout)

        #Connect signals and slots
        self.radio_pca.toggled.connect(lambda: self.switch_NN(self.radio_pca))
        self.radio_deep.toggled.connect(
            lambda: self.switch_NN(self.radio_deep))
        self.button_load_weights.clicked.connect(self.load_weights)
        self.button_build_DB.clicked.connect(self.build_DB)
        self.button_load_DB.clicked.connect(self.load_DB)
        self.button_save_DB.clicked.connect(self.save_DB)
        self.button_load_img.clicked.connect(self.load_image)
        self.button_search.clicked.connect(self.search)
        self.button_save_result.clicked.connect(self.save_search)

        #Build neural network
        self.encoder = build_pca_autoencoder()

        #See if a database already exists
        if not os.path.isfile(os.path.join(application_path, 'std_db_pca.db')):
            self.firstTimeStart(os.path.join(application_path,
                                             'std_db_pca.db'))
        else:
            self.database = load_database(
                os.path.join(application_path, 'std_db_pca.db'))