Beispiel #1
0
 def create_ui(self):
     fields_label = QLabel(_("Class fields"), self)
     self.layout.addWidget(fields_label, 0, 0)
     self._fields_tree = QTreeWidget(self)
     fields_label.setBuddy(self._fields_tree)
     self._fields_tree.currentItemChanged.connect(
         self.on_fields_tree_sel_changed)
     self.layout.addWidget(self._fields_tree, 1, 0)
     operator_label = QLabel(_("Operator"), self)
     self.layout.addWidget(operator_label, 0, 1)
     self._operator = QListWidget(self)
     operator_label.setBuddy(self._operator)
     self.layout.addWidget(self._operator, 1, 1)
     self._operator.currentRowChanged.connect(self.on_operator_choice)
     self._operator.setCurrentRow(0)
     add_button = QPushButton(_("&Add condition"), self)
     add_button.clicked.connect(self.on_add_clicked)
     self.layout.addWidget(add_button, 2, 0, 1, 3)
     criteria_label = QLabel(_("Current search criteria"), self)
     self.layout.addWidget(criteria_label, 3, 0, 1, 3)
     self._criteria_list = QListWidget(self)
     criteria_label.setBuddy(self._criteria_list)
     self.layout.addWidget(self._criteria_list, 4, 0, 1, 3)
     remove_button = QPushButton(_("&Remove condition"), self)
     remove_button.clicked.connect(self.on_remove_clicked)
     self.layout.addWidget(remove_button, 5, 0, 1, 3)
     distance_label = QLabel(_("Search objects to distance"), self)
     self.layout.addWidget(distance_label, 6, 0)
     self._distance_field = QSpinBox(self)
     self._distance_field.setMaximum(100000)
     self._distance_field.setSuffix(" " + _("meters"))
     self._distance_field.setSpecialValueText(_("No limit"))
     distance_label.setBuddy(self._distance_field)
     self.layout.addWidget(self._distance_field, 6, 1)
Beispiel #2
0
    def _createFilterTree(self, spatial_filters):
        av = self.model.activeView
        tally = self.model.statepoint.tallies[av.selectedTally]
        filters = tally.filters

        # create a tree for the filters
        self.treeLayout = QVBoxLayout()
        self.filterTree = QTreeWidget()
        self.treeLayout.addWidget(self.filterTree)
        self.treeExpander = Expander("Filters:", layout=self.treeLayout)
        self.treeExpander.expand()  # start with filters expanded

        header = QTreeWidgetItem(["Filters"])
        self.filterTree.setHeaderItem(header)
        self.filterTree.setItemHidden(header, True)
        self.filterTree.setColumnCount(1)

        self.filter_map = {}
        self.bin_map = {}

        for tally_filter in filters:
            filter_label = str(type(tally_filter)).split(".")[-1][:-2]
            filter_item = QTreeWidgetItem(self.filterTree, (filter_label,))
            self.filter_map[tally_filter] = filter_item

            # make checkable
            if not spatial_filters:
                filter_item.setFlags(QtCore.Qt.ItemIsUserCheckable)
                filter_item.setToolTip(0, "Only tallies with spatial filters are viewable.")
            else:
                filter_item.setFlags(filter_item.flags() | QtCore.Qt.ItemIsTristate | QtCore.Qt.ItemIsUserCheckable)
            filter_item.setCheckState(0, QtCore.Qt.Unchecked)

            if isinstance(tally_filter, MeshFilter):
                filter_item.setCheckState(0, QtCore.Qt.Checked)
                filter_item.setFlags(QtCore.Qt.ItemIsUserCheckable)
                filter_item.setToolTip(0, "All Mesh bins are selected automatically")
                continue

            def _bin_sort_val(bin):
                if isinstance(bin, Iterable) and all([isinstance(val, float) for val in bin]):
                    return np.sum(bin)
                else:
                    return bin

            for bin in sorted(tally_filter.bins, key=_bin_sort_val):
                item = QTreeWidgetItem(filter_item, [str(bin),])
                if not spatial_filters:
                    item.setFlags(QtCore.Qt.ItemIsUserCheckable)
                    item.setToolTip(0, "Only tallies with spatial filters are viewable.")
                else:
                    item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
                item.setCheckState(0, QtCore.Qt.Unchecked)

                bin = bin if not isinstance(bin, Iterable) else tuple(bin)
                self.bin_map[tally_filter, bin] = item

            # start with all filters selected if spatial filters are present
            if spatial_filters:
                filter_item.setCheckState(0, QtCore.Qt.Checked)
Beispiel #3
0
    def __init__(self, path, settings, session):
        QWidget.__init__(self)
        ABookCore.__init__(self, path, settings, session)

        self.signal = CourseTreeWidgetSignals()
        self.selectedList = []

        self.treeWidget = QTreeWidget()
        self.treeWidget.setHeaderLabels(['Name', "Course ID", "Chapter ID"])
        self.treeWidget.itemChanged.connect(self.checkbox_toggled)
        self.treeWidget.clicked.connect(self.loadResourceList)

        self.addDownloadTaskButton = QPushButton("Add to Downloader")
        self.addDownloadTaskButton.clicked.connect(self.addDownloadTask)

        self.importCourseButton = QPushButton("Import Courses")
        self.importCourseButton.clicked.connect(self.startImportCourseWidget)

        main_layout = QGridLayout()
        main_layout.addWidget(self.treeWidget, 0, 0, 1, 2)
        main_layout.addWidget(self.importCourseButton, 1, 0)
        main_layout.addWidget(self.addDownloadTaskButton, 1, 1)
        main_layout.setMargin(0)
        self.setLayout(main_layout)

        if settings['first_launch'] is True:
            settings['first_launch'] = False
            self.importCourseButton.click()
        else:
            self.createTreeRoot()
Beispiel #4
0
    def __init__(self):
        super(SelectTiVoWidget, self).__init__()

        self.tivos_found = []

        self.label = QLabel(self)

        self.label.setText('Below is a listing of all TiVos discovered on your'
                           ' network, which will refresh every 5 seconds. If y'
                           'ou do not see your TiVo, '
                           '<a href="#specify_ip">click here to specify an IP'
                           ' address.</a>')

        self.label.linkActivated.connect(self.specify_ip_address)

        self.tivo_listings = QTreeWidget(self)
        self.tivo_listings.itemDoubleClicked.connect(self.tivo_selected)
        self.tivo_listings.setHeaderLabels(["Name", "IP Address"])

        self.layout = QVBoxLayout(self)
        self.layout.addWidget(self.label)
        self.layout.addWidget(self.tivo_listings)

        self.setWindowTitle("Select TiVo")
        self.resize(512, 384)

        self.setModal(True)
Beispiel #5
0
 def __init__(self,
              parent,
              title,
              person,
              unsorted_objects,
              autoshow=True,
              progress_indicator=None):
     super().__init__(None)
     act = QAction("close", self)
     act.triggered.connect(self._do_close)
     act.setShortcut(QKeySequence("escape"))
     self.addAction(act)
     layout = QGridLayout()
     bar = QMenuBar(self)
     self._object_actions = bar.addMenu(_("Object actions"))
     property_actions = bar.addMenu(_("Property actions"))
     self._create_item(property_actions, _("Copy property value"), "ctrl+c",
                       self.on_copypropvalue_selected)
     self._create_item(property_actions, _("Copy property name"), "alt+c",
                       self.on_copypropname_selected)
     self._create_item(property_actions, _("Copy property name and value"),
                       "ctrl+alt+c", self.on_copypropline_selected)
     objects_label = QLabel(_("Objects"), self)
     layout.addWidget(objects_label, 0, 0)
     self._objects_list = QListWidget(self)
     self._objects_list.setAccessibleName(objects_label.text())
     self._objects_list.setContextMenuPolicy(Qt.CustomContextMenu)
     self._objects_list.currentRowChanged.connect(self.on_objects_listbox)
     self._objects_list.customContextMenuRequested.connect(
         self._on_objects_list_menu)
     objects_label.setBuddy(self._objects_list)
     layout.addWidget(self._objects_list, 1, 0)
     props_label = QLabel(_("Object properties"), self)
     layout.addWidget(props_label, 0, 1)
     self._props = QTreeWidget(self)
     self._props.setAccessibleName(props_label.text())
     props_label.setBuddy(self._props)
     layout.addWidget(self._props, 1, 1)
     goto_button = QPushButton(_("Go to"), self)
     goto_button.setDefault(True)
     goto_button.clicked.connect(self.on_goto_clicked)
     self._objects_list.itemActivated.connect(goto_button.click)
     layout.addWidget(goto_button, 2, 0)
     close_button = QPushButton(_("Close"), self)
     close_button.clicked.connect(self.close)
     layout.addWidget(close_button, 2, 1)
     self.setLayout(layout)
     self.setWindowTitle(title + _(" ({num_objects} objects shown)").format(
         num_objects=len(unsorted_objects)))
     self._person = person
     self._autoshow = autoshow
     self._progress_indicator = progress_indicator
     self._all_actions = []
     for member in object_actions.__dict__.values():
         if inspect.isclass(member) and issubclass(member, ObjectAction):
             self._all_actions.append(member)
     self._objects_list.setCurrentRow(0)
     self._sorter = ObjectsSorter(unsorted_objects, person)
     self._sorter.objects_sorted.connect(self._objects_sorted)
     self._sorter.start()
Beispiel #6
0
    def _init_widgets(self):
        self._tree = QTreeWidget()
        self._tree.setHeaderHidden(True)
        self._tree.itemDoubleClicked.connect(self.on_item_doubleclicked)

        layout = QVBoxLayout()
        layout.addWidget(self._tree)

        self.setLayout(layout)
Beispiel #7
0
    def initUI(self):
        self.listWidget = QListWidget()
        self.initDevices()

        self.treeWidget = QTreeWidget()
        self.treeWidget.itemPressed.connect(self.onItemPressed)
        self.treeWidget.setColumnCount(4)
        self.treeWidget.setColumnWidth(0, 250)
        self.treeWidget.setColumnWidth(1, 300)
        self.treeWidget.setColumnWidth(2, 300)
        self.treeWidget.setColumnWidth(3, 150)
        self.treeWidget.setHeaderLabels(["Service", "Service UUID", "Characteristic UUID", "Characteristic Property"])

        btn = QPushButton("Read Services")
        btn.clicked.connect(self.onPushButton)

        groupDevices = QGroupBox("Devices")
        groupDevices.setMaximumWidth(300)

        vbox = QVBoxLayout()
        vbox.addWidget(self.listWidget)
        vbox.addWidget(btn)
        groupDevices.setLayout(vbox)

        self.btnR = QPushButton("Read")
        self.btnR.clicked.connect(self.onReadButton)
        self.btnW = QPushButton("Write")
        self.btnW.clicked.connect(self.onWriteButton)
        self.lneI = QLineEdit()
        self.chkN = QCheckBox("Notify")
        self.chkN.toggled.connect(self.onNotifyCheck)
        hbox = QHBoxLayout()
        hbox.addWidget(self.btnR)
        hbox.addWidget(self.btnW)
        hbox.addWidget(self.lneI)
        hbox.addWidget(self.chkN)

        groupProperty = QGroupBox("Property")
        #groupProperty.setLayout(vbox)
        groupProperty.setLayout(hbox)

        groupServices = QGroupBox("Services")

        vbox = QVBoxLayout()
        vbox.addWidget(self.treeWidget)
        vbox.addWidget(groupProperty)
        groupServices.setLayout(vbox)

        hbox = QHBoxLayout()
        hbox.addWidget(groupDevices)
        hbox.addWidget(groupServices)
        self.setLayout(hbox)
        
        self.setGeometry(300, 300, 800, 600)
        self.setWindowTitle('BLE Discover')
        self.show()
Beispiel #8
0
    def setup_ui(self):
        layout = QGridLayout()

        table = QTreeWidget()
        table.setHeaderLabels(['name', 'width', 'height', 'ratio'])
        table.setSortingEnabled(True)
        items = []
        for size in self.manager.project.sizes:
            i = ComparingTreeWidgetItem(None, [
                f'{size.width}x{size.height}',
                str(size.width),
                str(size.height),
                str(size.ratio())
            ])
            i.__data__ = size
            items.append(i)
        table.addTopLevelItems(items)

        @table.currentItemChanged.connect
        def _(item, prev):
            del_btn.setEnabled(item is not None)

        layout.addWidget(table, 0, 0, 1, 2)

        add_btn = QPushButton('add new')

        @add_btn.clicked.connect
        def _(*args):
            diag = SizeInput(self.manager.project.sizes, self)
            if diag.exec_() != QDialog.Accepted:
                return
            size = diag.value
            self.manager.add_size(size)
            item = ComparingTreeWidgetItem(None, [
                f'{size.width}x{size.height}',
                str(size.width),
                str(size.height),
                str(size.ratio())
            ])
            table.addTopLevelItem(item)

        layout.addWidget(add_btn, 1, 0)

        del_btn = QPushButton('delete')
        del_btn.setEnabled(False)

        @del_btn.clicked.connect
        def _(*args):
            item = table.currentItem()
            size = item.__data__
            self.manager.del_size(size)
            shiboken2.delete(item)

        layout.addWidget(del_btn, 1, 1)

        self.setLayout(layout)
Beispiel #9
0
    def __init__(self):
        super().__init__()
        self.tree = QTreeWidget()
        self.tree.setHeaderHidden(True)
        layout = QVBoxLayout()
        layout.addWidget(self.tree)
        self.setLayout(layout)
        self.tree.setIndentation(0)

        self.sections = []
        self.define_sections()
        self.add_sections()
Beispiel #10
0
    def testWidgetIterator(self):
        treeWidget = QTreeWidget()
        treeWidget.setColumnCount(1)
        items = []
        for i in range(10):
            items.append(QTreeWidgetItem(None, ['item: %d' % i]))
        treeWidget.insertTopLevelItems(0, items)

        index = 0
        for it in QTreeWidgetItemIterator(treeWidget):
            self.assertEqual(it.value().text(0), 'item: %d' % index)
            index += 1
Beispiel #11
0
 def __init__(self):
     super().__init__()
     self.tree = QTreeWidget()
     self.tree.setHeaderHidden(True)
     self.tree.setPalette(get_verifone_color())
     self.setStyleSheet("background-color: rgba(3, 169, 229, 0)")
     layout = QVBoxLayout()
     self.buttonGroup = QButtonGroup()
     layout.addWidget(self.tree)        
     self.setLayout(layout)
     self.tree.setIndentation(0)
     self.setPalette(get_verifone_color())
     self.sections = []
     self.setFixedWidth(500)
Beispiel #12
0
    def testCase(self):
        treeWidget = QTreeWidget()
        treeWidget.setColumnCount(1)
        items = []
        for i in range(10):
            items.append(QTreeWidgetItem(None, ["item: %i" % i]))

        treeWidget.insertTopLevelItems(0, items);
        _iter = QTreeWidgetItemIterator(treeWidget)
        index = 0
        while(_iter.value()):
            item = _iter.value()
            self.assertTrue(item is items[index])
            index += 1
            _iter += 1
Beispiel #13
0
    def initializePage(self):
        if self.layout() != None:
            # print("clean up previous entries")
            while self.layout().count() > 0:
                self.layout().removeItem(self.layout().itemAt(0))

        self.tree = QTreeWidget()
        if self.wizard().defaultShare != None:
            self.tree.addTopLevelItem(
                MyTreeWidgetItem(self.tree,
                                 self.wizard().defaultShare))

        else:
            shares = self.wizard().getShares()
            if shares == None:
                print("No shares found...")
                return
            print(",".join([x.name for x in shares]))

            for m in shares:
                if m.name not in [
                        "ADMIN$", "C$", "IPC$", "NETLOGON", "SYSVOL"
                ]:
                    self.tree.addTopLevelItem(MyTreeWidgetItem(self.tree, m))

        shareListBox = QWidget()
        shareListBoxLayout = QVBoxLayout()
        self.tree.setHeaderLabel("Freigaben")
        self.tree.itemClicked.connect(self.treeViewItemClicked)
        shareListBoxLayout.addWidget(self.tree)
        shareListBox.setLayout(shareListBoxLayout)

        self.folderList = QListWidget()
        folderListBox = QWidget()
        folderListBoxLayout = QVBoxLayout()

        folderListHeaderMessage = "Verzeichnisinhalt"
        folderListBoxLayout.addWidget(QLabel(folderListHeaderMessage))

        folderListBoxLayout.addWidget(self.folderList)
        folderListBox.setLayout(folderListBoxLayout)

        layout = QHBoxLayout()
        layout.addWidget(shareListBox)
        layout.addWidget(folderListBox)
        self.setLayout(layout)
 def reset_model(self, index):
     """Setup model according to current relationship_class selected in combobox.
     """
     self.class_name, self.object_class_name_list = self.relationship_class_keys[
         index]
     object_class_name_list = self.object_class_name_list.split(",")
     self.model.set_horizontal_header_labels(object_class_name_list)
     self.existing_items_model.set_horizontal_header_labels(
         object_class_name_list)
     self.new_items_model.set_horizontal_header_labels(
         object_class_name_list)
     self.relationship_ids.clear()
     for db_map in self.db_maps:
         relationship_classes = self.db_map_rel_cls_lookup[db_map]
         rel_cls = relationship_classes.get(
             (self.class_name, self.object_class_name_list), None)
         if rel_cls is None:
             continue
         for relationship in self.db_mngr.get_items_by_field(
                 db_map, "relationship", "class_id", rel_cls["id"]):
             key = tuple(relationship["object_name_list"].split(","))
             self.relationship_ids[key] = relationship["id"]
     existing_items = list(self.relationship_ids)
     self.existing_items_model.reset_model(existing_items)
     self.model.refresh()
     self.model.modelReset.emit()
     for wg in self.splitter_widgets():
         wg.deleteLater()
     for name in object_class_name_list:
         tree_widget = QTreeWidget(self)
         tree_widget.setSelectionMode(QAbstractItemView.ExtendedSelection)
         tree_widget.setColumnCount(1)
         tree_widget.setIndentation(0)
         header_item = QTreeWidgetItem([name])
         header_item.setTextAlignment(0, Qt.AlignHCenter)
         tree_widget.setHeaderItem(header_item)
         objects = self.db_mngr.get_items_by_field(self.db_map, "object",
                                                   "class_name", name)
         items = [QTreeWidgetItem([obj["name"]]) for obj in objects]
         tree_widget.addTopLevelItems(items)
         tree_widget.resizeColumnToContents(0)
         self.splitter.addWidget(tree_widget)
     sizes = [wg.columnWidth(0) for wg in self.splitter_widgets()]
     self.splitter.setSizes(sizes)
     for widget in self.hidable_widgets:
         widget.show()
Beispiel #15
0
    def _crateSelectors(self):
        self.mLayout = QVBoxLayout(self)
        
        wsLayout = QVBoxLayout()
        alg = self.algManager
        self.wsSelector = WorkspaceChooser(alg)
        self.wsSelector.setMaximumHeight(70)
        groups = self.chartData.getDataGroups()
        self.wsSelector.addItems(groups)
        self.wsSelector.currentTextChanged.connect(self._updateAll)
        self.chartData.dataGroupAdded.connect(self.addNewGroup)
        self.mLayout.addWidget(QLabel('Workspaces'))
        self.mLayout.addWidget(self.wsSelector)
        self.chartData.allRemoved.connect(self._resetWorkspaces)
        
        self.chSelector = QTreeWidget()
        self.chSelector.setHeaderHidden(True)
        self.chSelector.itemClicked.connect(self.changeCurrentSelect)
        self.chSelector.itemChanged.connect(self.itemChanged)
        self.mLayout.addWidget(QLabel('Channels'))
        self.mLayout.addWidget(self.chSelector)
        
        self.sSelector = SignalChooser()
        self.sSelector.setHeaderHidden(True)
        self.sSelector.setDragEnabled(True)
        self.sSelector.setDropIndicatorShown(True)
        self.sSelector.setContextMenuPolicy(Qt.CustomContextMenu)
        self.createSignalPopupMenu(self.sSelector)
        self.sSelector.customContextMenuRequested.connect(self.onSignalContextMenu)
        self.sSelector.itemClicked.connect(self.changeCurrentSelect)
        self.sSelector.itemPressed.connect(self.signalPress)        
        self.sSelector.itemChanged.connect(self.itemChanged)
        self.mLayout.addWidget(QLabel('Signals'))
        self.mLayout.addWidget(self.sSelector)

        self.gSelector = SignalGroupsChooser(self.chartData, self.wsSelector)
        self.mLayout.addWidget(QLabel('Signal Groups'))
        self.mLayout.addWidget(self.gSelector)

        self.wsSelector.setCurrentRow(0)
        self.chartData.signalAdded.connect(self._updateAll)
        self.chartData.signalRemoved.connect(self._updateAll)
        self.chartData.signalGroupAdded.connect(self._updateAll)
        self.chartData.signalGroupRemoved.connect(self._updateAll)
        self.chartData.signalToGrupAdded.connect(self._updateAll)
        self.chartData.signalFromGroupRemoved.connect(self._updateAll)
    def _init_finds_tab(self, tab):
        finds_list = QTreeWidget()
        finds_list.setHeaderHidden(True)
        self._finds_list = finds_list

        layout = QVBoxLayout()
        layout.addWidget(finds_list)

        frame = QFrame()
        frame.setLayout(layout)

        import_button = QPushButton("Import List")
        import_button.clicked.connect(lambda: self._import_to_list(self._finds_list))
        layout.addWidget(import_button)

        tab.addTab(frame, 'Finds')

        self._finds_list.itemChanged.connect(self._on_explore_addr_changed)
Beispiel #17
0
    def add_tree_no_header(self, parent):
        tw = QTreeWidget()
        parent.addWidget(tw)
        tw.setHeaderHidden(True)
        tw.setAlternatingRowColors(True)

        i1 = QTreeWidgetItem(tw, ['Mammal'])
        i2 = QTreeWidgetItem(i1, ['Rodent'])
        i3 = QTreeWidgetItem(i2, ['Rat'])
        i3 = QTreeWidgetItem(i2, ['Beaver'])
        i2 = QTreeWidgetItem(i1, ['Primate'])
        i3 = QTreeWidgetItem(i2, ['Baboon'])
        i3 = QTreeWidgetItem(i2, ['Human'])
        i1 = QTreeWidgetItem(tw, ['Reptile'])
        i2 = QTreeWidgetItem(i1, ['Snake'])
        i3 = QTreeWidgetItem(i1, ['Crocodile'])

        self.add_expand_collapse_buttons(parent, tw)
Beispiel #18
0
    def add_tree_with_header(self, parent):
        tw = QTreeWidget()
        parent.addWidget(tw)
        tw.setHeaderLabels(['Type', 'Legs', 'Has Hair/Fur'])
        tw.setSortingEnabled(True)
        tw.setAlternatingRowColors(True)
        i1 = QTreeWidgetItem(tw, ['Mammal'])
        i2 = QTreeWidgetItem(i1, ['Rodent'])
        i3 = QTreeWidgetItem(i2, ['Rat', '4', 'True'])
        i3 = QTreeWidgetItem(i2, ['Beaver', '2', 'True'])
        i2 = QTreeWidgetItem(i1, ['Primate'])
        i3 = QTreeWidgetItem(i2, ['Baboon', '2', 'True'])
        i3 = QTreeWidgetItem(i2, ['Human', '2', 'True'])
        i1 = QTreeWidgetItem(tw, ['Reptile'])
        i2 = QTreeWidgetItem(i1, ['Snake', '0', 'False'])
        i3 = QTreeWidgetItem(i1, ['Crocodile', '4', 'False'])

        self.add_expand_collapse_buttons(parent, tw)
Beispiel #19
0
    def make_viewer(self, exif_reader):
        self.exif_reader = exif_reader
        ifds = self.exif_reader.get_exif()

        self.qw_tree = QTreeWidget(self)
        qt_util_init_tree(self.qw_tree, header_list=['ifd_name'])

        self.qw_stack = QStackedWidget(self)
        self.tree_type_to_stack_idx = {}
        for tree_item_type, (ifd_name, ifd) in enumerate(ifds.items()):
            # -----------------------
            # treeにifd nameを書き込んでroot_treeに登録する.
            # -----------------------
            qw_tree_item = QTreeWidgetItem(['{} ifd'.format(ifd_name), ''],
                                           type=tree_item_type)
            self.qw_tree.addTopLevelItem(qw_tree_item)

            # -----------------------
            # text_editにexif情報を書き込んでstacked_widgetに登録する.
            # -----------------------
            qw_text_edit = QTextEdit(self)
            qt_util_init_text_edit(qw_text_edit)
            qt_util_append_text_edit(qw_text_edit, None, head=True)
            for _, tag in ifd.items():
                qt_util_append_text_edit(qw_text_edit,
                                         tag,
                                         head=False,
                                         display_max_len=50)
            qt_util_reset_text_edit_cursor(qw_text_edit)

            idx = self.qw_stack.addWidget(qw_text_edit)
            self.tree_type_to_stack_idx[tree_item_type] = idx
        else:
            self.qw_tree.itemClicked.connect(self._tree_item_clicked)

        # -----------------------
        # widgetをlayoutに登録する.
        # -----------------------
        widgets = [self.qw_tree, self.qw_stack]
        self._make_layout(widgets)
        self._make_toolbar()

        self.show()  # widgetを表示する.
    def _init_widgets(self):

        # search box
        self._search_box = QLineEdit()

        # tree view
        self._treewidget = QTreeWidget()
        self._treewidget.setHeaderHidden(True)

        # refresh button
        self._apply_btn = QPushButton("Apply")
        self._apply_btn.clicked.connect(self._code_view.decompile)

        layout = QVBoxLayout()
        layout.addWidget(self._search_box)
        layout.addWidget(self._treewidget)
        layout.addWidget(self._apply_btn)

        self.setLayout(layout)
    def _init_widgets(self):

        # search box
        self._search_box = QLineEdit()

        # tree view
        self._treewidget = QTreeWidget()
        self._treewidget.setHeaderHidden(True)
        self._treewidget.itemChanged.connect(self._on_item_changed)

        # refresh button
        self._apply_btn = QPushButton("Apply")
        self._apply_btn.clicked.connect(self._on_apply_pressed)

        layout = QVBoxLayout()
        layout.addWidget(self._search_box)
        layout.addWidget(self._treewidget)
        layout.addWidget(self._apply_btn)

        self.setLayout(layout)
Beispiel #22
0
    def testSetItemWidget(self):

        treeWidget = QTreeWidget()
        treeWidget.setColumnCount(2)

        item = QTreeWidgetItem(['text of column 0', ''])
        treeWidget.insertTopLevelItem(0, item)
        # Adding QPushButton inside the method
        treeWidget.setItemWidget(item, 1,
                                 QPushButton('Push button on column 1'))

        # Getting the widget back
        w = treeWidget.itemWidget(treeWidget.itemAt(0, 1), 1)
        self.assertIsInstance(w, QPushButton)

        p = QPushButton('New independent button')
        # Adding QPushButton object from variable
        treeWidget.setItemWidget(item, 0, p)
        w = treeWidget.itemWidget(treeWidget.itemAt(0, 0), 0)
        self.assertIsInstance(w, QPushButton)
Beispiel #23
0
    def init_ui(self):

        self.vbox = QVBoxLayout()

        self.refresh = QPushButton('Refresh')
        self.refresh.clicked.connect(lambda: self.get_map())
        self.vbox.addWidget(self.refresh)

        self.tree = QTreeWidget()
        self.tree.itemDoubleClicked.connect(self.open_region)
        self.tree.setColumnCount(3)
        self.tree.header().setSectionResizeMode(QHeaderView.ResizeToContents)
        self.tree.header().setStretchLastSection(False)
        self.tree.setHeaderLabels(
            ['Memory Region', 'Start Address', 'End Address'])
        self.vbox.addWidget(self.tree)

        self.setLayout(self.vbox)
        self.setGeometry(100, 100, 500, 300)
        self.setWindowTitle("Memory Tree")
        self.show()
Beispiel #24
0
    def setup_ui(self):
        layout = QGridLayout()

        table = QTreeWidget()
        table.setHeaderLabels(['name', 'type', 'width', 'height'])
        table.setSortingEnabled(True)
        items = []
        for photo in self.manager.project.photos:
            if not photo.is_available():
                w = h = 'N/A!'
            else:
                w, h = photo.raw_size()
            i = ComparingTreeWidgetItem(
                None,
                [str(photo), type(photo).__name__,
                 str(w), str(h)])
            i.__data__ = photo
            items.append(i)
        table.addTopLevelItems(items)

        @table.currentItemChanged.connect
        def _(item, prev):
            del_btn.setEnabled(item is not None)

        layout.addWidget(table, 0, 0)

        del_btn = QPushButton('delete')
        del_btn.setEnabled(False)

        @del_btn.clicked.connect
        def _(*args):
            item = table.currentItem()
            size = item.__data__
            self.manager.del_photo(size)
            shiboken2.delete(item)

        layout.addWidget(del_btn, 1, 0)

        self.setLayout(layout)
Beispiel #25
0
    def __init__(self, parent=None, root_object=None):
        super(ObjectTreeDialog, self).__init__(parent)
        self.setWindowTitle("Object Tree")

        layout = QtWidgets.QVBoxLayout()

        # Tree widget for displaying our object hierarchy
        self.tree_widget = QTreeWidget()
        self.tree_widget_columns = [
            "TYPE", "OBJECT NAME", "TEXT", "ICONTEXT", "TITLE", "WINDOW_TITLE",
            "CLASSES", "POINTER_ADDRESS", "GEOMETRY"
        ]
        self.tree_widget.setColumnCount(len(self.tree_widget_columns))
        self.tree_widget.setHeaderLabels(self.tree_widget_columns)

        # Only show our type and object name columns.  The others we only use to store data so that
        # we can use the built-in QTreeWidget.findItems to query.
        for column_name in self.tree_widget_columns:
            if column_name == "TYPE" or column_name == "OBJECT NAME":
                continue

            column_index = self.tree_widget_columns.index(column_name)
            self.tree_widget.setColumnHidden(column_index, True)

        header = self.tree_widget.header()
        header.setSectionResizeMode(0, QHeaderView.ResizeToContents)
        header.setSectionResizeMode(1, QHeaderView.ResizeToContents)

        # Populate our object tree widget
        # If a root object wasn't specified, then use the Editor main window
        if not root_object:
            params = azlmbr.qt.QtForPythonRequestBus(
                azlmbr.bus.Broadcast, "GetQtBootstrapParameters")
            editor_id = QtWidgets.QWidget.find(params.mainWindowId)
            editor_main_window = wrapInstance(int(getCppPointer(editor_id)[0]),
                                              QtWidgets.QMainWindow)
            root_object = editor_main_window
        self.build_tree(root_object, self.tree_widget)

        # Listen for when the tree widget selection changes so we can update
        # selected item properties
        self.tree_widget.itemSelectionChanged.connect(
            self.on_tree_widget_selection_changed)

        # Split our tree widget with a properties view for showing more information about
        # a selected item. We also use a stacked layout for the properties view so that
        # when nothing has been selected yet, we can show a message informing the user
        # that something needs to be selected.
        splitter = QSplitter()
        splitter.addWidget(self.tree_widget)
        self.widget_properties = QWidget(self)
        self.stacked_layout = QtWidgets.QStackedLayout()
        self.widget_info = QWidget()
        form_layout = QtWidgets.QFormLayout()
        self.name_value = QLineEdit("")
        self.name_value.setReadOnly(True)
        self.type_value = QLabel("")
        self.geometry_value = QLabel("")
        self.text_value = QLabel("")
        self.icon_text_value = QLabel("")
        self.title_value = QLabel("")
        self.window_title_value = QLabel("")
        self.classes_value = QLabel("")
        form_layout.addRow("Name:", self.name_value)
        form_layout.addRow("Type:", self.type_value)
        form_layout.addRow("Geometry:", self.geometry_value)
        form_layout.addRow("Text:", self.text_value)
        form_layout.addRow("Icon Text:", self.icon_text_value)
        form_layout.addRow("Title:", self.title_value)
        form_layout.addRow("Window Title:", self.window_title_value)
        form_layout.addRow("Classes:", self.classes_value)
        self.widget_info.setLayout(form_layout)

        self.widget_properties.setLayout(self.stacked_layout)
        self.stacked_layout.addWidget(
            QLabel("Select an object to view its properties"))
        self.stacked_layout.addWidget(self.widget_info)
        splitter.addWidget(self.widget_properties)

        # Give our splitter stretch factor of 1 so it will expand to take more room over
        # the footer
        layout.addWidget(splitter, 1)

        # Create our popup widget for showing information when hovering over widgets
        self.hovered_widget = None
        self.inspect_mode = False
        self.inspect_popup = InspectPopup()
        self.inspect_popup.resize(100, 50)
        self.inspect_popup.hide()

        # Add a footer with a button to switch to widget inspect mode
        self.footer = QWidget()
        footer_layout = QtWidgets.QHBoxLayout()
        self.inspect_button = QPushButton("Pick widget to inspect")
        self.inspect_button.clicked.connect(self.on_inspect_clicked)
        footer_layout.addStretch(1)
        footer_layout.addWidget(self.inspect_button)
        self.footer.setLayout(footer_layout)
        layout.addWidget(self.footer)

        self.setLayout(layout)

        # Delete ourselves when the dialog is closed, so that we don't stay living in the background
        # since we install an event filter on the application
        self.setAttribute(Qt.WA_DeleteOnClose, True)

        # Listen to events at the application level so we can know when the mouse is moving
        app = QtWidgets.QApplication.instance()
        app.installEventFilter(self)
Beispiel #26
0
    def initUI(self):

        self.setWindowTitle("My Form")
        self.mainWindowWidget = QWidget(self)

        self.mainLeftWidget = QWidget(self)
        self.mainRightWidget = QWidget(self)
        self.i = 0
        self.vlayout_left = QVBoxLayout()
        self.vlayout_right = QVBoxLayout()
        self.hlayout_all = QHBoxLayout()
        showFilePath = QLineEdit(self)
        self.tools = ToolsWidget(self)
        # tools.setStyleSheet("background:rgb(0,255,255)")
        toolBoxTree = QTreeWidget(self)
        self.canvas = CanvasWidget(self)
        self.canvas.setText("label")
        # self.canvas.setStyleSheet("background:rgb(255,0,255)")
        self.vlayout_left.addWidget(self.tools)
        self.vlayout_left.addWidget(toolBoxTree)
        self.vlayout_left.setStretchFactor(self.tools, 1)
        self.vlayout_left.setStretchFactor(toolBoxTree, 1)
        self.vlayout_right.addWidget(showFilePath)
        self.vlayout_right.addWidget(self.canvas)
        # self.vlayout_right.setStretchFactor(showFilePath,1)
        # self.vlayout_right.setStretchFactor(showSrcPicture,1)

        self.mainLeftWidget.setLayout(self.vlayout_left)
        self.mainRightWidget.setLayout(self.vlayout_right)
        self.hlayout_all.addWidget(self.mainLeftWidget)
        self.hlayout_all.addWidget(self.mainRightWidget)
        self.hlayout_all.setStretchFactor(self.mainLeftWidget, 1)
        self.hlayout_all.setStretchFactor(self.mainRightWidget, 3)
        self.mainWindowWidget.setLayout(self.hlayout_all)
        self.setCentralWidget(self.mainWindowWidget)

        #菜单
        menu = self.menuBar()
        openMenu = menu.addMenu("&Open")
        oFAct = QAction("Open File", self)
        openMenu.addAction(oFAct)

        testMenu = menu.addMenu("&Test")
        test1 = QAction("Bezier", self)
        testMenu.addAction(test1)
        test2 = QAction("test2", self)
        testMenu.addAction(test2)

        toolMenu = menu.addMenu("&Tools")
        penTool = QAction("Pen", self)
        toolMenu.addAction(penTool)
        scissorTool = QAction("Scissor", self)
        toolMenu.addAction(scissorTool)

        # 连接槽函数
        # self.tools.generate_contour.clicked.connect(self.generateContour)
        self.tools.generate_contour.clicked.connect(self.b1Click)
        self.tools.b2.clicked.connect(self.b2Click)
        self.tools.b3.clicked.connect(self.b3Click)
        self.tools.b4.clicked.connect(self.b4Click)
        # 打开文件
        oFAct.triggered.connect(self.onOpenFile)
        test1.triggered.connect(self.test1)
        test2.triggered.connect(self.test2)
        penTool.triggered.connect(self.penToolClick)
        scissorTool.triggered.connect(self.scissorTool)
        pass
Beispiel #27
0
    def _init_widgets(self):
        layout = QGridLayout()
        row = 0

        validation_failures = set()

        # name

        name_label = QLabel(self)
        name_label.setText("Name")

        name_box = QLineEdit(self)
        name_box.setText(NameGenerator.random_name())

        def handle_name(txt):
            nonlocal validation_failures
            key = {'name'}
            if txt and not any(s.gui_data.name == txt
                               for s in self.instance.states):
                validation_failures -= key
            else:
                validation_failures |= key
            validation_update()

        name_box.textEdited.connect(handle_name)

        layout.addWidget(name_label, row, 0)
        layout.addWidget(name_box, row, 1)
        row += 1

        # address

        address_label = QLabel(self)
        address_label.setText("Address")

        address_box = QLineEdit(self)
        address_box.setText(
            hex(self.instance.project.entry
                ) if self._addr is None else hex(self._addr))

        def handle_address(_):
            nonlocal validation_failures
            key = {'addr'}
            if parse_address() is not None:
                validation_failures -= key
            else:
                validation_failures |= key
            validation_update()

        def parse_address():
            txt = address_box.text()
            try:
                return self.instance.project.kb.labels.lookup(txt)
            except KeyError:
                pass

            try:
                return int(txt, 16)
            except ValueError:
                return None

        address_box.textEdited.connect(handle_address)
        layout.addWidget(address_label, row, 0)
        layout.addWidget(address_box, row, 1)
        row += 1

        # template

        template_label = QLabel(self)
        template_label.setText("Template")

        template_combo = QComboBox()
        template_combo.addItem("Blank State", 'blank')
        template_combo.addItem("Call state", 'call')
        template_combo.addItem("Entry state", 'entry')
        template_combo.addItem("Full-init state", 'full')

        def handle_template(_):
            base_allowed = template_combo.currentData() in ('blank', 'call')
            base_state_combo.setHidden(not base_allowed)
            base_state_label.setHidden(not base_allowed)

        template_combo.currentIndexChanged.connect(handle_template)

        layout.addWidget(template_label, row, 0)
        layout.addWidget(template_combo, row, 1)
        row += 1

        # base state

        base_state_label = QLabel(self)
        base_state_label.setText('Base state')

        base_state_combo = QStateComboBox(self.instance, self)
        self._base_state_combo = base_state_combo

        layout.addWidget(base_state_label, row, 0)
        layout.addWidget(base_state_combo, row, 1)
        row += 1

        # mode

        mode_label = QLabel(self)
        mode_label.setText("Mode")

        mode_combo = QComboBox(self)
        mode_combo.addItem("Symbolic", "symbolic")
        mode_combo.addItem("Static", "static")
        mode_combo.addItem("Fast-path", "fastpath")
        mode_combo.addItem("Tracing", "tracing")
        self._mode_combo = mode_combo

        def mode_changed():
            self._options.clear()
            self._options.update(
                angr.sim_options.modes[mode_combo.currentData()])
            for child in children_items:
                child.setCheckState(
                    0, Qt.Checked
                    if child.text(0) in self._options else Qt.Unchecked)

        mode_combo.currentIndexChanged.connect(mode_changed)
        self._options.clear()
        self._options.update(angr.sim_options.modes[mode_combo.currentData()])

        layout.addWidget(mode_label, row, 0)
        layout.addWidget(mode_combo, row, 1)
        row += 1

        # options tree

        options_label = QLabel(self)
        options_label.setText("Options")

        options_tree = QTreeWidget(self)
        options_tree.setHeaderHidden(True)
        children_items = []
        for name, members in angr.sim_options.__dict__.items():
            if type(members) is not set:
                continue
            if name == 'resilience_options':
                continue
            parent = QTreeWidgetItem(options_tree)
            parent.setText(0, name)
            parent.setFlags(parent.flags() | Qt.ItemIsTristate
                            | Qt.ItemIsUserCheckable)
            for option in members:
                child = QTreeWidgetItem(parent)
                child.setText(0, option)
                child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
                child.setCheckState(
                    0, Qt.Checked if option in self._options else Qt.Unchecked)
                children_items.append(child)
        parent = QTreeWidgetItem(options_tree)
        parent.setText(0, "All options")
        parent.setFlags(parent.flags() | Qt.ItemIsTristate
                        | Qt.ItemIsUserCheckable)
        for option in {
                x
                for x in angr.sim_options.__dict__.values()
                if type(x) is str and is_option(x)
        }:
            child = QTreeWidgetItem(parent)
            child.setText(0, option)
            child.setFlags(child.flags() | Qt.ItemIsUserCheckable)
            child.setCheckState(
                0, Qt.Checked if option in self._options else Qt.Unchecked)
            children_items.append(child)

        def maintain_model(item: QTreeWidgetItem, _):
            option = item.text(0)
            if not is_option(option):
                return

            checked = item.checkState(0)
            if (option in self._options) == checked:
                return

            if checked:
                self._options.add(option)
            else:
                self._options.remove(option)

            for child in children_items:
                if child is not item and child.text(0) == option:
                    child.setCheckState(0, checked)

        options_tree.itemChanged.connect(maintain_model)

        layout.addWidget(options_label, row, 0)
        layout.addWidget(options_tree, row, 1)
        row += 1

        # options filter

        options_filter_label = QLabel(self)
        options_filter_label.setText("")

        options_filter_box = QLineEdit(self)
        options_filter_box.setPlaceholderText("Filter")

        def do_filter(text):
            for child in children_items:
                child.setHidden(text.upper() not in child.text(0))

        options_filter_box.textEdited.connect(do_filter)

        layout.addWidget(options_filter_label, row, 0)
        layout.addWidget(options_filter_box, row, 1)
        row += 1

        # buttons

        ok_button = QPushButton(self)
        ok_button.setText('OK')

        def do_ok():
            name = name_box.text()
            template = template_combo.currentData()
            addr = parse_address()
            base_state = base_state_combo.state
            mode = mode_combo.currentData()
            if template in ('blank', 'call') and base_state is not None:
                if template == 'blank':
                    self.state = self.instance.project.factory.blank_state(
                        addr=addr,
                        base_state=base_state,
                        options=self._options)
                else:
                    self.state = self.instance.project.factory.call_state(
                        addr, base_state=base_state, options=self._options)
                self.state.gui_data.base_name = base_state.gui_data.name
            else:
                if template == 'blank':
                    self.state = self.instance.project.factory.blank_state(
                        addr=addr, mode=mode, options=self._options)
                elif template == 'call':
                    self.state = self.instance.project.factory.call_state(
                        addr, mode=mode, options=self._options)
                elif template == 'entry':
                    self.state = self.instance.project.factory.entry_state(
                        mode=mode, options=self._options)
                else:
                    self.state = self.instance.project.factory.full_init_state(
                        mode=mode, options=self._options)
                self.state.gui_data.base_name = name
                self.state.gui_data.is_base = True

            self.state.gui_data.name = name
            self.state.gui_data.is_original = True

            if self._create_simgr:
                self.instance.workspace.create_simulation_manager(
                    self.state, name)

            self.close()

        ok_button.clicked.connect(do_ok)

        def validation_update():
            ok_button.setDisabled(bool(validation_failures))

        cancel_button = QPushButton(self)
        cancel_button.setText('Cancel')

        def do_cancel():
            self.close()

        cancel_button.clicked.connect(do_cancel)

        buttons_layout = QHBoxLayout()
        buttons_layout.addWidget(ok_button)
        buttons_layout.addWidget(cancel_button)

        self.main_layout.addLayout(layout)
        self.main_layout.addLayout(buttons_layout)
Beispiel #28
0
# ---------------------------
# Treeにitemに子itemを追加する
# ---------------------------
import sys
from PySide2.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem

app = QApplication(sys.argv)

qw_tree = QTreeWidget()
qw_tree.setHeaderLabels(["name", "tel", "mail"])
qw_tree_parent_item = QTreeWidgetItem(['family'])
qw_tree_parent_item.addChild(
    QTreeWidgetItem(['A', '111-111-111', '*****@*****.**']))  # Itemに子Itemを追加
qw_tree.addTopLevelItem(qw_tree_parent_item)
qw_tree.expandAll()  # TreeのItemを全て開く
qw_tree.show()

sys.exit(app.exec_())
 def __init__(self, parent, object_class_item, db_mngr, *db_maps):
     """
     Args:
         parent (SpineDBEditor): data store widget
         object_class_item (ObjectClassItem)
         db_mngr (SpineDBManager)
         *db_maps: database mappings
     """
     super().__init__(parent)
     self.object_class_item = object_class_item
     self.db_mngr = db_mngr
     self.db_maps = db_maps
     self.db_map = db_maps[0]
     self.db_maps_by_codename = {
         db_map.codename: db_map
         for db_map in db_maps
     }
     self.db_combo_box = QComboBox(self)
     self.header_widget = QWidget(self)
     self.group_name_line_edit = QLineEdit(self)
     header_layout = QHBoxLayout(self.header_widget)
     header_layout.addWidget(QLabel(f"Group name: "))
     header_layout.addWidget(self.group_name_line_edit)
     header_layout.addSpacing(32)
     header_layout.addWidget(QLabel("Database"))
     header_layout.addWidget(self.db_combo_box)
     self.non_members_tree = QTreeWidget(self)
     self.non_members_tree.setHeaderLabel("Non members")
     self.non_members_tree.setSelectionMode(QTreeWidget.ExtendedSelection)
     self.non_members_tree.setColumnCount(1)
     self.non_members_tree.setIndentation(0)
     self.members_tree = QTreeWidget(self)
     self.members_tree.setHeaderLabel("Members")
     self.members_tree.setSelectionMode(QTreeWidget.ExtendedSelection)
     self.members_tree.setColumnCount(1)
     self.members_tree.setIndentation(0)
     self.add_button = QToolButton()
     self.add_button.setToolTip("<p>Add selected non-members.</p>")
     self.add_button.setIcon(QIcon(":/icons/menu_icons/cube_plus.svg"))
     self.add_button.setIconSize(QSize(24, 24))
     self.add_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
     self.add_button.setText(">>")
     self.remove_button = QToolButton()
     self.remove_button.setToolTip("<p>Remove selected members.</p>")
     self.remove_button.setIcon(QIcon(":/icons/menu_icons/cube_minus.svg"))
     self.remove_button.setIconSize(QSize(24, 24))
     self.remove_button.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
     self.remove_button.setText("<<")
     self.vertical_button_widget = QWidget()
     vertical_button_layout = QVBoxLayout(self.vertical_button_widget)
     vertical_button_layout.addStretch()
     vertical_button_layout.addWidget(self.add_button)
     vertical_button_layout.addWidget(self.remove_button)
     vertical_button_layout.addStretch()
     self.button_box = QDialogButtonBox(self)
     self.button_box.setStandardButtons(QDialogButtonBox.Cancel
                                        | QDialogButtonBox.Ok)
     layout = QGridLayout(self)
     layout.addWidget(self.header_widget, 0, 0, 1, 3, Qt.AlignHCenter)
     layout.addWidget(self.non_members_tree, 1, 0)
     layout.addWidget(self.vertical_button_widget, 1, 1)
     layout.addWidget(self.members_tree, 1, 2)
     layout.addWidget(self.button_box, 2, 0, 1, 3)
     self.setAttribute(Qt.WA_DeleteOnClose)
     self.db_combo_box.addItems(list(self.db_maps_by_codename))
     self.db_map_object_ids = {
         db_map: {
             x["name"]: x["id"]
             for x in self.db_mngr.get_items_by_field(
                 self.db_map, "object", "class_id",
                 self.object_class_item.db_map_id(db_map))
         }
         for db_map in db_maps
     }
     self.reset_list_widgets(db_maps[0].codename)
     self.connect_signals()
Beispiel #30
0
from PySide2.QtWidgets import QTreeWidget

device_props_tree_widget = QTreeWidget()
#device_props_tree_widget.setExpanded(True)