def build_tree(self):
        """Rebuilds model's contents."""
        def append_filter_items(parent_item, filters, filter_type):
            for id_, is_on in filters[filter_type].items():
                filter_item = QStandardItem(
                    self._connection.id_to_name(id_, filter_type))
                filter_item.setData(id_, self._ID_ROLE)
                filter_item.setData(Qt.Checked if is_on else Qt.Unchecked,
                                    Qt.CheckStateRole)
                filter_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable
                                     | Qt.ItemIsUserCheckable)
                parent_item.appendRow(filter_item)

        self.clear()
        self._connection.fetch_database_items()
        for resource_label, filters_by_type in self._connection.resource_filters.items(
        ):
            root_item = QStandardItem(resource_label)
            root_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
            self.appendRow(root_item)
            for name, type_ in self._FILTER_TYPES.items():
                filter_parent = QStandardItem(name)
                filter_parent.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable)
                select_all_item = QStandardItem(self._SELECT_ALL)
                select_all_item.setData(False, Qt.CheckStateRole)
                select_all_item.setFlags(Qt.ItemIsEnabled | Qt.ItemIsSelectable
                                         | Qt.ItemIsUserCheckable)
                filter_parent.appendRow(select_all_item)
                root_item.appendRow(filter_parent)
                if type_ in filters_by_type:
                    append_filter_items(filter_parent, filters_by_type, type_)
                    self._set_all_selected_item(resource_label, filter_parent)
예제 #2
0
 def search_shot(self, source_model, search_text):
     '''
     search shot
     :param source_model: source model
     :param search_text: text
     :return:
     '''
     sequence_item_temp_list = []
     for sequence_index in range(source_model.rowCount()):
         sequence_item = source_model.item(sequence_index, 0)
         sequence_item_temp = QStandardItem(sequence_item.text())
         sequence_item_temp.setEditable(False)
         for shot_name_index in range(sequence_item.rowCount()):
             shot_name_item = sequence_item.child(shot_name_index, 0)
             shot_name = shot_name_item.text()
             if search_text in shot_name:
                 shot_name_item_temp = shot_name_item.clone()
                 retrieving = QStandardItem("Retrieving Tasks...")
                 retrieving.setEditable(False)
                 shot_name_item_temp.appendRow(retrieving)
                 shot_name_item_temp.setEditable(False)
                 sequence_item_temp.appendRow(shot_name_item_temp)
         if sequence_item_temp.hasChildren():
             sequence_item_temp_list.append(sequence_item_temp)
     source_model.clear()
     for item in sequence_item_temp_list:
         source_model.appendRow(item)
예제 #3
0
    def tab_asset_search_init(self):
        '''
        init asset list in treeView(Only for search!)
        :return:
        '''
        self.source_asset_model.clear()

        asset_type_list = [
            'Chr', 'Env', 'Prp', 'Flg', 'Crd', 'Scn', 'Uif', 'Asb'
        ]

        for asset_type in asset_type_list:
            asset_type_item = QStandardItem(asset_type)
            asset_type_item.setEditable(False)

            asset_entity_list = self.sg.get_asset_list(self.project_name,
                                                       asset_type)
            if asset_entity_list:
                for asset_entity in asset_entity_list:
                    asset_name = asset_entity['code']
                    asset_name_chinesename = asset_entity['sg_chinesename']
                    if asset_name_chinesename:
                        asset_name = asset_name + "|" + asset_name_chinesename
                    asset_name_item = QStandardItem(asset_name)
                    asset_name_item.setEditable(False)

                    # append the next level item
                    retrieving = QStandardItem("Retrieving Tasks...")
                    retrieving.setEditable(False)
                    asset_name_item.appendRow(retrieving)

                    asset_type_item.appendRow(asset_name_item)

            self.source_asset_model.appendRow(asset_type_item)
예제 #4
0
    def tab_shot_search_init(self):
        '''
        init shot list in treeView(Only for search!)
        :return:
        '''
        self.source_shot_model.clear()
        sequence_entity_list = self.sg.get_sequence_list(self.project_name)
        if sequence_entity_list:
            for sequence_entity in sequence_entity_list:
                sequence_name = sequence_entity['code']
                sequence_name_item = QStandardItem(sequence_name)
                sequence_name_item.setEditable(False)

                # find the shot below sequence
                shot_entity_list = self.sg.get_sequence_shot_list(
                    self.project_name, sequence_name)
                if shot_entity_list:
                    for shot_entity in shot_entity_list:
                        shot_name = shot_entity['code']
                        shot_name_item = QStandardItem(shot_name)
                        shot_name_item.setEditable(False)

                        # append the next level item
                        retrieving = QStandardItem("Retrieving Tasks...")
                        retrieving.setEditable(False)
                        shot_name_item.appendRow(retrieving)

                        sequence_name_item.appendRow(shot_name_item)

                self.source_shot_model.appendRow(sequence_name_item)
예제 #5
0
 def search_asset(self, source_model, search_text):
     '''
     search asset
     :param source_model: source model
     :param search_text: text
     :return:
     '''
     asset_type_item_temp_list = []
     for asset_type_index in range(source_model.rowCount()):
         asset_type_item = source_model.item(asset_type_index, 0)
         asset_type_item_temp = QStandardItem(asset_type_item.text())
         asset_type_item_temp.setEditable(False)
         for asset_name_index in range(asset_type_item.rowCount()):
             asset_name_item = asset_type_item.child(asset_name_index, 0)
             asset_name = asset_name_item.text()
             if search_text in asset_name:
                 asset_name_item_temp = asset_name_item.clone()
                 retrieving = QStandardItem("Retrieving Tasks...")
                 retrieving.setEditable(False)
                 asset_name_item_temp.appendRow(retrieving)
                 asset_name_item_temp.setEditable(False)
                 asset_type_item_temp.appendRow(asset_name_item_temp)
         if asset_type_item_temp.hasChildren():
             asset_type_item_temp_list.append(asset_type_item_temp)
     source_model.clear()
     for item in asset_type_item_temp_list:
         source_model.appendRow(item)
 def _add_morpheme(self, tree: QtGui.QStandardItem, morpheme: Morpheme):
     text_item = MorphemeTextItem(morpheme)
     gloss_item = MorphemeGlossItem(morpheme)
     self.morpheme_text_items.update({morpheme.dict_id: text_item})
     self.morpheme_gloss_items.update({morpheme.dict_id: gloss_item})
     tree.appendRow([
         text_item,
         gloss_item,
         RemoveButton(morpheme),
     ])
예제 #7
0
 def add_existing_faction(self, faction):
     self.dispos.factions.append(faction)
     item = QStandardItem()
     item.setText(faction.name)
     item.setData(faction, QtCore.Qt.UserRole)
     for spawn in faction.spawns:
         spawn_item = QStandardItem()
         self._set_item_name_and_decoration(spawn_item, spawn)
         item.appendRow(spawn_item)
     self.appendRow(item)
예제 #8
0
 def init_qud_object(self, model: QStandardItemModel,
                     qud_object: QudObject):
     item = QStandardItem(qud_object.name)
     if not qud_object.is_leaf:
         for child in qud_object.children:
             item.appendRow(self.init_qud_object(model, child))
     if qud_object.is_specified('tag_BaseObject'):
         item.setSelectable(False)
     item.setData(qud_object)
     return item
예제 #9
0
def add_child(num_children, nesting_level):
    result = []
    if nesting_level == 0:
        return result
    for i in range(num_children):
        child = QStandardItem("Child num {}, nesting Level {}".format(
            i + 1, nesting_level))
        if i == 0:
            child.appendRow(add_child(num_children, nesting_level - 1))
        result.append(child)
    return result
예제 #10
0
 def _populate_model_from_dispos(self, dispos):
     self.clear()
     for faction in dispos.factions:
         item = QStandardItem()
         item.setText(faction.name)
         item.setData(faction, QtCore.Qt.UserRole)
         for spawn in faction.spawns:
             spawn_item = QStandardItem()
             self._set_item_name_and_decoration(spawn_item, spawn)
             item.appendRow(spawn_item)
         self.appendRow(item)
예제 #11
0
 def _update_data_for_item(item: QStandardItem):
     if not item.data(_EXPANDABLE_ROLE):
         return
     if not item.data(_HAS_LOADED_DATA_ROLE):
         node = item.data(_GET_NODE_ROLE)
         for child, name, key in node.children():
             if hasattr(child, "children"):
                 child_item = _create_expandable_item(child, name, key)
             else:
                 child_item = _create_standard_item(child, name, key)
             item.appendRow(child_item)
         item.setData(True, _HAS_LOADED_DATA_ROLE)
예제 #12
0
def add_dict_item(key, val, parent):
    if type(val) is dict:
        child = QStandardItem('"' + key + '": { ... }')
        for key, val in val.items():
            add_dict_item(key, val, child)
    elif type(val) is list:
        child = QStandardItem('"' + key + '": [ ... ]')
        for item in val:
            child.appendRow(QStandardItem('"' + item + '"'))
    else:
        child = QStandardItem('"' + key + '": "' + str(val) + '"')
    parent.appendRow(child)
예제 #13
0
    def sequence_expanded(self, index):
        '''
        sequence treeView expanded
        :param index: index of the model
        :return:
        '''
        # dynamic load data from shotgun server database
        item = self.source_sequence_model.itemFromIndex(index)
        item.removeRows(0, item.rowCount())
        sequence_level_struct_item = []
        self.get_upper_level_item(self.source_sequence_model,
                                  sequence_level_struct_item, index)
        item_level = len(sequence_level_struct_item)
        # search item from shotgun server
        if item_level == 1:
            # this is the top level
            sequence_name = sequence_level_struct_item[0]
            # find the step below sequence
            sequence_task_list = self.sg.get_sequence_task_list(
                self.project_name, sequence_name)
            sequence_step_name_set = set()
            if sequence_task_list:
                for sequence_task in sequence_task_list:
                    sequence_task_step = sequence_task['step']
                    if sequence_task_step:
                        sequence_task_step_name = sequence_task_step['name']
                        # remove all duplicate name in step by using set()
                        sequence_step_name_set.add(sequence_task_step_name)
                for step_name in sequence_step_name_set:
                    sequence_task_step_name_item = QStandardItem(step_name)
                    sequence_task_step_name_item.setEditable(False)

                    # append the next level item
                    retrieving = QStandardItem("Retrieving Tasks...")
                    retrieving.setEditable(False)
                    sequence_task_step_name_item.appendRow(retrieving)

                    item.appendRow(sequence_task_step_name_item)
                    sequence_level_struct_item.append(step_name)

        elif item_level == 2:
            sequence_name = sequence_level_struct_item[0]
            sequence_step_name = sequence_level_struct_item[1]
            sequence_task_list = self.sg.get_sequence_task_list(
                self.project_name, sequence_name, sequence_step_name)
            if sequence_task_list:
                for sequence_task in sequence_task_list:
                    sequence_task_name = sequence_task['content']
                    sequence_task_name_item = QStandardItem(sequence_task_name)
                    sequence_task_name_item.setEditable(False)

                    item.appendRow(sequence_task_name_item)
예제 #14
0
 def _build_item_for_tree_node(self, key, node):
     item = QStandardItem()
     if type(node) == dict:
         # Node is a category.
         item.setText(key)
         for child_key, value in node.items():
             child = self._build_item_for_tree_node(child_key, value)
             item.appendRow(child)
     else:
         # Node is a module.
         item.setText(key)
         item.setData(node)
     return item
예제 #15
0
    def addCollectionItem(self, collection, item):
        items = self.collectionsModel.findItems(collection)
        if not items:
            parent = QStandardItem(collection)
            parent.setEditable(False)
            parent.setIcon(self.folder_icon)
            self.collectionsModel.appendRow(parent)
        else:
            parent = items.pop(0)

        newItem = QStandardItem()
        newItem.setText(item.method + " " + item.url)
        newItem.setEditable(False)
        newItem.setData(item, Qt.UserRole)
        parent.appendRow(newItem)
예제 #16
0
    def populate_template_model(self, populate):
        """Add all tool template specs to a single QTreeView.
        If items is None or an empty list, model is cleared.

        Args:
            populate (bool): False to clear model, True to populate.
        """
        self.template_model.clear()
        self.template_model.setHorizontalHeaderItem(
            0, QStandardItem("Template specification"))  # Add header
        # Add category items
        source_file_category_item = QStandardItem("Source files")
        input_category_item = QStandardItem("Input files")
        opt_input_category_item = QStandardItem("Optional input files")
        output_category_item = QStandardItem("Output files")
        self.template_model.appendRow(source_file_category_item)
        self.template_model.appendRow(input_category_item)
        self.template_model.appendRow(opt_input_category_item)
        self.template_model.appendRow(output_category_item)
        if populate:
            if self.source_file_model.rowCount() > 0:
                for row in range(self.source_file_model.rowCount()):
                    text = self.source_file_model.item(row).data(
                        Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    source_file_category_item.appendRow(qitem)
            if self.input_file_model.rowCount() > 0:
                for row in range(self.input_file_model.rowCount()):
                    text = self.input_file_model.item(row).data(Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    input_category_item.appendRow(qitem)
            if self.opt_input_file_model.rowCount() > 0:
                for row in range(self.opt_input_file_model.rowCount()):
                    text = self.opt_input_file_model.item(row).data(
                        Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    opt_input_category_item.appendRow(qitem)
            if self.output_file_model.rowCount() > 0:
                for row in range(self.output_file_model.rowCount()):
                    text = self.output_file_model.item(row).data(
                        Qt.DisplayRole)
                    qitem = QStandardItem(text)
                    qitem.setFlags(~Qt.ItemIsEditable)
                    qitem.setData(QFileIconProvider().icon(QFileInfo(text)),
                                  Qt.DecorationRole)
                    output_category_item.appendRow(qitem)
예제 #17
0
    def tab_shot_init(self):
        '''
        init shot list in treeView
        :return:
        '''
        self.source_shot_model.clear()
        sequence_entity_list = self.sg.get_sequence_list(self.project_name)
        if sequence_entity_list:
            for sequence_entity in sequence_entity_list:
                sequence_name = sequence_entity['code']
                sequence_name_item = QStandardItem(sequence_name)
                sequence_name_item.setEditable(False)

                retrieving = QStandardItem("Retrieving Tasks...")
                retrieving.setEditable(False)
                sequence_name_item.appendRow(retrieving)

                self.source_shot_model.appendRow(sequence_name_item)
예제 #18
0
 def setup_tree(self):
     for name in self.main_dic:
         if name != 'main dir':
             base_name = self.main_dic[name]
             base = QStandardItem(name)
             if 'icon' in base_name:
                 icon = QIcon(base_name['icon'])
                 base.setIcon(icon)
             if 'children' in base_name:
                 for child_dic in base_name['children']:
                     for child in child_dic:
                         child_item = QStandardItem(child)
                         if 'icon' in child_dic[child]:
                             icon = QIcon(child_dic[child]['icon'])
                             child_item.setIcon(icon)
                         child_item.setFlags(Qt.ItemIsSelectable
                                             | Qt.ItemIsEnabled)
                         base.appendRow(child_item)
             self.model.appendRow(base)
예제 #19
0
    def tab_asset_init(self):
        '''
        init asset list in treeView
        :return:
        '''
        self.source_asset_model.clear()

        asset_type_list = [
            'Chr', 'Env', 'Prp', 'Flg', 'Crd', 'Scn', 'Uif', 'Asb'
        ]

        for asset_type in asset_type_list:
            asset_type_item = QStandardItem(asset_type)
            asset_type_item.setEditable(False)
            # append the next level item
            retrieving = QStandardItem("Retrieving Tasks...")
            retrieving.setEditable(False)
            asset_type_item.appendRow(retrieving)

            self.source_asset_model.appendRow(asset_type_item)
예제 #20
0
 def search_mytask(self, source_model, search_text):
     '''
     search mytask
     :param source_model: source model
     :param search_text: text
     :return:
     '''
     mytask_type_item_temp_list = []
     for mytask_type_index in range(source_model.rowCount()):
         mytask_type_item = source_model.item(mytask_type_index, 0)
         mytask_type_item_temp = QStandardItem(mytask_type_item.text())
         mytask_type_item_temp.setEditable(False)
         for mytask_name_index in range(mytask_type_item.rowCount()):
             mytask_name_item = mytask_type_item.child(mytask_name_index, 0)
             mytask_name = mytask_name_item.text()
             if search_text in mytask_name:
                 mytask_name_item_temp = mytask_name_item.clone()
                 if mytask_name_item.hasChildren():
                     for mytask_name_index in range(
                             mytask_name_item.rowCount()):
                         mytask_step_item = mytask_name_item.child(
                             mytask_name_index, 0)
                         mytask_step_item_temp = mytask_step_item.clone()
                         if mytask_step_item.hasChildren():
                             for mytask_step_index in range(
                                     mytask_step_item.rowCount()):
                                 mytask_step_task_item = mytask_step_item.child(
                                     mytask_step_index, 0)
                                 mytask_step_task_item_temp = mytask_step_task_item.clone(
                                 )
                                 mytask_step_item_temp.appendRow(
                                     mytask_step_task_item_temp)
                         mytask_name_item_temp.appendRow(
                             mytask_step_item_temp)
                 mytask_name_item_temp.setEditable(False)
                 mytask_type_item_temp.appendRow(mytask_name_item_temp)
         if mytask_type_item_temp.hasChildren():
             mytask_type_item_temp_list.append(mytask_type_item_temp)
     source_model.clear()
     for item in mytask_type_item_temp_list:
         source_model.appendRow(item)
예제 #21
0
    def updateTreeView(self):
        self.model.clear()
        self.model.setHorizontalHeaderLabels(self.tagName)
        
        for i in range(self.noOfAddedData):
            parent1 = QStandardItem('Samle No {}.'.format(i+1))  # sample no 1,2,3,----
            showThisData = self.dataPoints[i]
            maximumIteam = max(len(self.tagNameDict[self.tagName[0]]),len(self.tagNameDict[self.tagName[1]]),len(self.tagNameDict[self.tagName[2]]))

            for j in range(maximumIteam):
                currentRow=[]
                for tn in self.tagName:
                    if(j<len(self.tagNameDict[tn])):  # because 0 to len-1
                        x=str(self.tagNameDict[tn][j])
                        y=str(showThisData[tn][j])
                        child =QStandardItem((x+': {}').format(y))
                    else:
                        child =QStandardItem("")                        
                    currentRow.append(child)
                parent1.appendRow(currentRow)
            self.model.appendRow(parent1)
예제 #22
0
    def parse_recipe(self, recipe):

        self.clear()
        self.setColumnCount(1)
        #self.setHorizontalHeaderLabels(['item','detail'])
        self.setHorizontalHeaderLabels(['Action'])
        self.parentItem = self.invisibleRootItem()

        parentItem = self.parentItem

        for m, v in recipe.get('metadata', {}).items():
            item = QStandardItem('{}: {}'.format(m, v))
            parentItem.appendRow(item)

        fp = FuturaRecipePrettifier(findMainWindow().loader)

        for action in recipe.get('actions', []):
            item = QStandardItem(sections[action['action']])
            parentItem.appendRow(item)
            for task in action['tasks']:
                this_task = QStandardItem(fp.format(task))
                item.appendRow(this_task)
예제 #23
0
    def setup_openCL(self):
        self.platforms = pyopencl.get_platforms()
        self.devices = [platform.get_devices() for platform in self.platforms]

        # populate treeview
        self.treeView_model = QStandardItemModel()
        self.treeView_model.setHorizontalHeaderLabels(["Platform"
                                                       ])  # , 'Device'])
        self.treeView_openCL.setModel(self.treeView_model)
        self.treeView_openCL.setUniformRowHeights(True)

        # connect command
        # self.treeView_model.itemChanged.connect(self.create_run_command)

        for i, platform in enumerate(self.platforms):
            parent = QStandardItem(platform.name)
            for d in self.devices[i]:
                parent.appendRow(QStandardItem(d.name))
            self.treeView_model.appendRow(parent)
            # span container columns
            self.treeView_openCL.setFirstColumnSpanned(
                i, self.treeView_openCL.rootIndex(), True)

        self.treeView_openCL.expandAll()
예제 #24
0
파일: store_tree.py 프로젝트: shatsky/niudu
 def add_store_path(self, path, parent=None):
     if parent is None:
         parent = self.model().invisibleRootItem()
     store_icon_pixmap = QPixmap()
     #hash = get_command_output('nix-hash --type sha1 --to-base16 '+path[11:11+32]).strip()
     hash = ctypes_wrapper.nix_build_hash_base32_to_base16_c_str(
         bytes(path[11:11 + 32], 'ascii'))[5:]
     store_icon_pixmap.loadFromData(
         pydenticon_generator.generate(hash.decode(), 20, 20))
     #print(image)
     store_path_icon = QIcon(store_icon_pixmap)
     item = QStandardItem(
         store_path_icon,
         path[len('/nix/store/681354n3k44r8z90m35hm8945vsp95h1-'):])
     #item.setIcon(colorify_icon(item.icon(), None))
     item.setData(path)
     if path in self.system_pkgs_store_paths:
         font = QFont()
         font.setBold(True)
         item.setFont(font)
     parent.appendRow(item)
     dummy_item = QStandardItem('')
     item.appendRow(dummy_item)
     return item
예제 #25
0
 def build(self):
     for db_map in self.db_maps:
         db_map_item = QStandardItem(db_map.codename)
         self.appendRow(db_map_item)
         for cmd in self.db_mngr.undo_stack[db_map].commands():
             cmd_item = QStandardItem(cmd.text())
             db_map_item.appendRow(cmd_item)
             for key, items in cmd.data().items():
                 key_item = QStandardItem(str(key))
                 cmd_item.appendRow(key_item)
                 for item in items:
                     key_item.appendRow(QStandardItem(item))
예제 #26
0
    def __init__(self, parent=None):
        super().__init__(parent)

        self.setColumnCount(1)

        root = self.invisibleRootItem()
        group1 = QStandardItem("group1")
        group1.setText("group1")
        value1 = QStandardItem("value1")
        value1.setText("value1")
        value2 = QStandardItem("value2")
        value2.setText("value2")
        group1.appendRow(value1)
        group1.appendRow(value2)

        subgroup1 = QStandardItem("subgroup1")
        subgroup1.setText("subgroup1")
        group1.appendRow(subgroup1)
        sg1value1 = QStandardItem("sg1value1")
        sg1value1.setText("sg1value1")
        subgroup1.appendRow(sg1value1)

        root.appendRow(group1)
예제 #27
0
파일: summary.py 프로젝트: shatsky/niudu
class SummaryView(QTreeView):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.model = QStandardItemModel()
        self.setModel(self.model)
        self.setHeaderHidden(True)
        self.expanded.connect(self.expanded__handler)
        self.profiles = []

    def update(self, store_path):
        self.store_path = store_path
        self.model.removeRows(0, self.model.rowCount())
        self.model.invisibleRootItem().appendRow(
            QStandardItem('Store path: {0}'.format(store_path)))

        deps_item = QStandardItem('Dependencies')
        self.model.invisibleRootItem().appendRow(deps_item)

        direct_deps_item = QStandardItem('Direct')
        deps_item.appendRow(direct_deps_item)

        self.immediate_direct_deps_item = QStandardItem('Immediate')
        direct_deps_item.appendRow(self.immediate_direct_deps_item)
        dummy_item = QStandardItem('')
        self.immediate_direct_deps_item.appendRow(dummy_item)

        self.remote_direct_deps_item = QStandardItem('Remote')
        direct_deps_item.appendRow(self.remote_direct_deps_item)
        self.remote_direct_deps_item.appendRow(dummy_item)

        reverse_deps_item = QStandardItem('Reverse')
        deps_item.appendRow(reverse_deps_item)

        self.immediate_reverse_deps_item = QStandardItem('Immediate')
        reverse_deps_item.appendRow(self.immediate_reverse_deps_item)
        self.immediate_reverse_deps_item.appendRow(dummy_item)

        self.remote_reverse_deps_item = QStandardItem('Remote')
        reverse_deps_item.appendRow(self.remote_reverse_deps_item)
        self.remote_reverse_deps_item.appendRow(dummy_item)

    def expanded__handler(self, index):
        parent_item = self.model.itemFromIndex(index)
        if parent_item is self.immediate_direct_deps_item:
            self.immediate_direct_deps_item__load()
        elif parent_item is self.immediate_reverse_deps_item:
            self.immediate_reverse_deps_item__load()
        elif parent_item is self.remote_direct_deps_item:
            self.immediate_direct_deps_item__load()
            self.remote_direct_deps_item__load()
        elif parent_item is self.remote_reverse_deps_item:
            self.immediate_reverse_deps_item__load()
            self.remote_reverse_deps_item__load()

    def immediate_direct_deps_item__load(self):
        parent_item = self.immediate_direct_deps_item
        parent_item.removeRows(0, parent_item.rowCount())
        self.immediate_direct_deps = []
        for dep in iter_command_output_lines(
                'nix-store --query --references ' + self.store_path):
            if dep == self.store_path:
                continue
            self.immediate_direct_deps.append(dep)
            parent_item.appendRow(QStandardItem(dep))

    def immediate_reverse_deps_item__load(self):
        parent_item = self.immediate_reverse_deps_item
        parent_item.removeRows(0, parent_item.rowCount())
        self.immediate_reverse_deps = []
        for dep in iter_command_output_lines('nix-store --query --referrers ' +
                                             self.store_path):
            if dep == self.store_path:
                continue
            self.immediate_reverse_deps.append(dep)
            item = QStandardItem(dep)
            if dep in self.profiles:
                font = QFont()
                font.setBold(True)
                item.setFont(font)
            parent_item.appendRow(item)

    def remote_direct_deps_item__load(self):
        parent_item = self.remote_direct_deps_item
        parent_item.removeRows(0, parent_item.rowCount())
        for dep in iter_command_output_lines(
                'nix-store --query --requisites ' + self.store_path):
            if dep == self.store_path or dep in self.immediate_direct_deps:
                continue
            self.immediate_direct_deps.append(dep)
            parent_item.appendRow(QStandardItem(dep))

    def remote_reverse_deps_item__load(self):
        parent_item = self.remote_reverse_deps_item
        parent_item.removeRows(0, parent_item.rowCount())
        for dep in iter_command_output_lines(
                'nix-store --query --referrers-closure ' + self.store_path):
            if dep == self.store_path or dep in self.immediate_reverse_deps:
                continue
            self.immediate_reverse_deps.append(dep)
            item = QStandardItem(dep)
            if dep in self.profiles:
                font = QFont()
                font.setBold(True)
                item.setFont(font)
            parent_item.appendRow(item)
예제 #28
0
    def asset_expanded(self, index):
        '''
        asset treeView expanded
        :param index: index of the model
        :return:
        '''
        item = self.source_asset_model.itemFromIndex(index)
        asset_level_struct_item = []
        self.get_upper_level_item(self.source_asset_model,
                                  asset_level_struct_item, index)

        item_level = len(asset_level_struct_item)

        if item_level == 1:
            search_text = self.lineEditAssetSearch.text()
            if search_text:
                return
            item.removeRows(0, item.rowCount())
            # this is the top level
            _asset_type = asset_level_struct_item[0]
            asset_entity_list = self.sg.get_asset_list(self.project_name,
                                                       _asset_type)
            if asset_entity_list:
                for asset_entity in asset_entity_list:
                    asset_name = asset_entity['code']
                    asset_name_chinesename = asset_entity['sg_chinesename']
                    if asset_name_chinesename:
                        asset_name = asset_name + "|" + asset_name_chinesename
                    asset_name_item = QStandardItem(asset_name)
                    asset_name_item.setEditable(False)

                    # append the next level item
                    retrieving = QStandardItem("Retrieving Tasks...")
                    retrieving.setEditable(False)
                    asset_name_item.appendRow(retrieving)

                    item.appendRow(asset_name_item)
            else:
                # if this level not item then show Retrieving Task...
                retrieving = QStandardItem("Retrieving Tasks...")
                retrieving.setEditable(False)
                item.appendRow(retrieving)

        elif item_level == 2:
            item.removeRows(0, item.rowCount())
            asset_name = asset_level_struct_item[1]
            asset_task_list = self.sg.get_asset_task_list(
                self.project_name, asset_name)
            asset_step_name_set = set()
            if asset_task_list:
                for asset_task in asset_task_list:
                    asset_task_step = asset_task['step']
                    if asset_task_step:
                        asset_task_step_name = asset_task_step['name']
                        # remove all duplicate name in step by using set()
                        asset_step_name_set.add(asset_task_step_name)
                for step_name in asset_step_name_set:
                    asset_task_step_name_item = QStandardItem(step_name)
                    asset_task_step_name_item.setEditable(False)

                    # append the next level item
                    retrieving = QStandardItem("Retrieving Tasks...")
                    retrieving.setEditable(False)
                    asset_task_step_name_item.appendRow(retrieving)

                    item.appendRow(asset_task_step_name_item)
                    asset_level_struct_item.append(step_name)

        elif item_level == 3:
            item.removeRows(0, item.rowCount())
            asset_name = asset_level_struct_item[1]
            asset_step_name = asset_level_struct_item[2]
            asset_task_list = self.sg.get_asset_task_list(
                self.project_name, asset_name, asset_step_name)
            if asset_task_list:
                for asset_task in asset_task_list:
                    asset_task_name = asset_task['content']
                    asset_task_name_item = QStandardItem(asset_task_name)
                    asset_task_name_item.setEditable(False)

                    item.appendRow(asset_task_name_item)
예제 #29
0
파일: summary.py 프로젝트: shatsky/niudu
    def update(self, store_path):
        self.store_path = store_path
        self.model.removeRows(0, self.model.rowCount())
        self.model.invisibleRootItem().appendRow(
            QStandardItem('Store path: {0}'.format(store_path)))

        deps_item = QStandardItem('Dependencies')
        self.model.invisibleRootItem().appendRow(deps_item)

        direct_deps_item = QStandardItem('Direct')
        deps_item.appendRow(direct_deps_item)

        self.immediate_direct_deps_item = QStandardItem('Immediate')
        direct_deps_item.appendRow(self.immediate_direct_deps_item)
        dummy_item = QStandardItem('')
        self.immediate_direct_deps_item.appendRow(dummy_item)

        self.remote_direct_deps_item = QStandardItem('Remote')
        direct_deps_item.appendRow(self.remote_direct_deps_item)
        self.remote_direct_deps_item.appendRow(dummy_item)

        reverse_deps_item = QStandardItem('Reverse')
        deps_item.appendRow(reverse_deps_item)

        self.immediate_reverse_deps_item = QStandardItem('Immediate')
        reverse_deps_item.appendRow(self.immediate_reverse_deps_item)
        self.immediate_reverse_deps_item.appendRow(dummy_item)

        self.remote_reverse_deps_item = QStandardItem('Remote')
        reverse_deps_item.appendRow(self.remote_reverse_deps_item)
        self.remote_reverse_deps_item.appendRow(dummy_item)
예제 #30
0
    return result


if __name__ == '__main__':
    app = QApplication(sys.argv)
    model_size = 100000
    list = []
    source_model = QStandardItemModel()
    horizontal_header_list = [
        "First Column with spacing", "Second Column with spacing"
    ]
    source_model.setHorizontalHeaderLabels(horizontal_header_list)
    for i in range(model_size):
        first_item = QStandardItem("FancyTextNumber {}".format(i))
        if i == 0:
            first_item.appendRow(add_child(2, 2))
        second_item = QStandardItem("FancyRow2TextNumber {}".format(i))
        if i % 2 == 0:
            first_item.setBackground(Qt.red)
        row = [first_item, second_item]
        source_model.invisibleRootItem().appendRow(row)
        list.append("FancyTextNumber {}".format(i))

    # Needed by QMLModelViewClient
    role_names = {
        Qt.DisplayRole: QByteArray(b'_text'),
        Qt.BackgroundRole: QByteArray(b'_color')
    }
    source_model.setItemRoleNames(role_names)

    roles = [Qt.DisplayRole, Qt.BackgroundRole]