void component_selection_widget::refresh()
{
    m_ui->lw_comps->clear();
    auto comp_iter = m_edit_ent->begin();
    while (comp_iter != m_edit_ent->end())
    {
        QIcon icon(m_icons[comp_iter->first].c_str());

        nsstring guid_ = hash_to_guid(comp_iter->first).substr(2);
        guid_[0] = toupper(guid_[0]);

        for (uint32 i = 0; i < guid_.size()-1; ++i)
        {
            if (guid_[i] == '_')
            {
                guid_[i] = ' ';
                guid_[i+1] = toupper(guid_[i+1]);
            }
        }

        QListWidgetItem * item = new QListWidgetItem(icon, guid_.c_str());
        item->setData(Qt::UserRole, comp_iter->first);
        m_ui->lw_comps->addItem(item);
        ++comp_iter;
    }
}
예제 #2
0
void select_res_dialog::show_type(uint32 guid_)
{
    bbtk.map()->make_current();
    m_ui.m_lw->clear();

    nsstring restype = hash_to_guid(guid_).substr(2);
    restype[0] = toupper(restype[0]);

    for (uint32 i = 0; i < restype.size()-1; ++i)
    {
        if (restype[i] == '_')
        {
            restype[i] = ' ';
            restype[i+1] = toupper(restype[i+1]);
        }
    }

    setWindowTitle(("Select " + restype).c_str());

    // show core resources
    auto manager = nse.core()->manager(nse.manager_id(guid_));
    if (manager != NULL)
    {
        auto res_iter = manager->begin();
        while (res_iter != manager->end())
        {
            nsresource * res = manager->get(res_iter->first);
            QListWidgetItem * lw_item = new QListWidgetItem(res->name().c_str());

            QString icon_path = res->icon_path().c_str();

            if (!icon_path.isEmpty())
                lw_item->setIcon(QIcon(icon_path));
            else
                lw_item->setIcon(QIcon(m_default_icons[guid_].c_str()));

            lw_item->setData(Qt::UserRole, res->plugin_id());
            lw_item->setData(Qt::UserRole+1, res->id());
            m_ui.m_lw->addItem(lw_item);
            ++res_iter;
        }
    }

    auto plg_iter = nse.plugins()->begin();
    while (plg_iter != nse.plugins()->end())
    {
        nsplugin * plg = nse.plugin(plg_iter->first);

        if (guid_ == type_to_hash(nsplugin))
        {
            QListWidgetItem * lw_item = new QListWidgetItem(plg->name().c_str());
            QString icon_path = plg->icon_path().c_str();

            if (!icon_path.isEmpty())
                lw_item->setIcon(QIcon(icon_path));
            else
                lw_item->setIcon(QIcon(m_default_icons[guid_].c_str()));

            lw_item->setData(Qt::UserRole, plg->plugin_id());
            lw_item->setData(Qt::UserRole+1, plg->id());
            m_ui.m_lw->addItem(lw_item);
        }
        else
        {
            auto manager = plg->manager(nse.manager_id(guid_));

            if (manager == NULL)
            {
                ++plg_iter;
                continue;
            }

            auto res_iter = manager->begin();
            while (res_iter != manager->end())
            {
                nsresource * res = manager->get(res_iter->first);
                QListWidgetItem * lw_item = new QListWidgetItem(res->name().c_str());

                QString icon_path = res->icon_path().c_str();

                if (!icon_path.isEmpty())
                    lw_item->setIcon(QIcon(icon_path));
                else
                    lw_item->setIcon(QIcon(m_default_icons[guid_].c_str()));

                lw_item->setData(Qt::UserRole, res->plugin_id());
                lw_item->setData(Qt::UserRole+1, res->id());
                m_ui.m_lw->addItem(lw_item);
                ++res_iter;
            }
        }
        ++plg_iter;
    }
}