示例#1
0
 // get selected software and/or driver
 //-------------------------------------------------
 //  get selected software and/or driver
 //-------------------------------------------------
 protected override void get_selection(out ui_software_info software, out ui_system_info system)
 {
     if (m_populated_favorites)
     {
         software = (ui_software_info)get_selection_ptr();
         system   = software != null?m_persistent_data.systems()[driver_list.find(software.driver.name)] : null;
     }
     else
     {
         software = null;
         system   = (ui_system_info)get_selection_ptr();
     }
 }
示例#2
0
        void populate_list(bool copydesc)
        {
            m_systems.reserve(driver_list.total());
            std.unordered_set <string> manufacturers;
            std.unordered_set <string> years;
            for (int x = 0; x < (int)driver_list.total(); ++x)
            {
                game_driver    driver = driver_list.driver((size_t)x);
                ui_system_info ins    = new ui_system_info(driver, x, false);
                m_systems.emplace_back(ins);
                if (driver != ___empty.driver____empty)
                {
                    if ((driver.flags & machine_flags.type.IS_BIOS_ROOT) != 0)
                    {
                        ++m_bios_count;
                    }

                    if ((driver.parent.Length >= 1 && driver.parent[0] != '0') || (driver.parent.Length >= 2 && driver.parent[1] != 0))  //if ((driver.parent[0] != '0') || driver.parent[1])
                    {
                        var parentindex = driver_list.find(driver.parent);
                        if (copydesc)
                        {
                            if (0 <= parentindex)
                            {
                                game_driver parentdriver = driver_list.driver((size_t)parentindex);
                                ins.is_clone = (parentdriver.flags & machine_flags.type.IS_BIOS_ROOT) == 0;
                                ins.parent   = parentdriver.type.fullname();
                            }
                            else
                            {
                                ins.is_clone = false;
                                ins.parent   = driver.parent;
                            }
                        }
                        else
                        {
                            ins.is_clone = (0 <= parentindex) && (driver_list.driver((size_t)parentindex).flags & machine_flags.type.IS_BIOS_ROOT) == 0;
                        }
                    }

                    if (copydesc)
                    {
                        ins.description = driver.type.fullname();
                    }

                    m_filter_data.add_manufacturer(driver.manufacturer);
                    m_filter_data.add_year(driver.year);
                }
            }
        }
示例#3
0
 menu_dats_view(mame_ui_manager mui, render_container container, ui_system_info system = null)
     : base(mui, container)
 {
     throw new emu_unimplemented();
 }
示例#4
0
        //-------------------------------------------------
        //  populate search list
        //-------------------------------------------------
        void populate_search()
        {
            // ensure search list is populated
            if (m_searchlist.empty())
            {
                var sorted = m_persistent_data.sorted_list();
                m_searchlist.reserve(sorted.size());
                foreach (ui_system_info info in sorted)
                {
                    m_searchlist.emplace_back(new std.pair <double, ui_system_info>(1.0, info));
                }
            }

            // keep track of what we matched against
            string ucs_search = ustr_from_utf8(normalize_unicode(m_search, unicode_normalization_form.D, true));  //const std::u32string ucs_search(ustr_from_utf8(normalize_unicode(m_search, unicode_normalization_form::D, true)));

            // check available search data
            if (m_persistent_data.is_available(system_list.available.AVAIL_UCS_SHORTNAME))
            {
                m_searched_fields |= (unsigned)system_list.available.AVAIL_UCS_SHORTNAME;
            }
            if (m_persistent_data.is_available(system_list.available.AVAIL_UCS_DESCRIPTION))
            {
                m_searched_fields |= (unsigned)system_list.available.AVAIL_UCS_DESCRIPTION;
            }
            if (m_persistent_data.is_available(system_list.available.AVAIL_UCS_MANUF_DESC))
            {
                m_searched_fields |= (unsigned)system_list.available.AVAIL_UCS_MANUF_DESC;
            }
            if (m_persistent_data.is_available(system_list.available.AVAIL_UCS_DFLT_DESC))
            {
                m_searched_fields |= (unsigned)system_list.available.AVAIL_UCS_DFLT_DESC;
            }
            if (m_persistent_data.is_available(system_list.available.AVAIL_UCS_MANUF_DFLT_DESC))
            {
                m_searched_fields |= (unsigned)system_list.available.AVAIL_UCS_MANUF_DFLT_DESC;
            }

            for (int i = 0; i < m_searchlist.Count; i++)  //for (std::pair<double, std::reference_wrapper<ui_system_info const> > &info : m_searchlist)
            {
                var info = m_searchlist[i];

                m_searchlist[i] = std.make_pair(1.0, info.second);
                ui_system_info sys = info.second;

                // match shortnames
                if ((m_searched_fields & (unsigned)system_list.available.AVAIL_UCS_SHORTNAME) != 0)
                {
                    m_searchlist[i] = std.make_pair(util.edit_distance(ucs_search, sys.ucs_shortname), info.second);
                }

                // match reading
                if (info.first != 0 && !sys.ucs_reading_description.empty())
                {
                    m_searchlist[i] = std.make_pair(std.min(util.edit_distance(ucs_search, sys.ucs_reading_description), info.first), info.second);

                    // match "<manufacturer> <reading>"
                    if (info.first != 0)
                    {
                        m_searchlist[i] = std.make_pair(std.min(util.edit_distance(ucs_search, sys.ucs_manufacturer_reading_description), info.first), info.second);
                    }
                }

                // match descriptions
                if (info.first != 0 && (m_searched_fields & (unsigned)system_list.available.AVAIL_UCS_DESCRIPTION) != 0)
                {
                    m_searchlist[i] = std.make_pair(std.min(util.edit_distance(ucs_search, sys.ucs_description), info.first), info.second);
                }

                // match "<manufacturer> <description>"
                if (info.first != 0 && (m_searched_fields & (unsigned)system_list.available.AVAIL_UCS_MANUF_DESC) != 0)
                {
                    m_searchlist[i] = std.make_pair(std.min(util.edit_distance(ucs_search, sys.ucs_manufacturer_description), info.first), info.second);
                }

                // match default description
                if (info.first != 0 && (m_searched_fields & (unsigned)system_list.available.AVAIL_UCS_DFLT_DESC) != 0 && !sys.ucs_default_description.empty())
                {
                    m_searchlist[i] = std.make_pair(std.min(util.edit_distance(ucs_search, sys.ucs_default_description), info.first), info.second);

                    // match "<manufacturer> <default description>"
                    if (info.first != 0 && (m_searched_fields & (unsigned)system_list.available.AVAIL_UCS_MANUF_DFLT_DESC) != 0)
                    {
                        m_searchlist[i] = std.make_pair(std.min(util.edit_distance(ucs_search, sys.ucs_manufacturer_default_description), info.first), info.second);
                    }
                }
            }

            // sort according to edit distance
            //std::stable_sort(
            //        m_searchlist.begin(),
            //        m_searchlist.end());
            //        [] (auto const &lhs, auto const &rhs) { return lhs.first < rhs.first; });
            m_searchlist.Sort((lhs, rhs) => { return(lhs.first.CompareTo(rhs.first)); });
        }
示例#5
0
 protected override string make_software_description(ui_software_info software, ui_system_info system)
 {
     // first line is system
     return(string_format(__("System: {0}"), system.description));  //return string_format(_("System: %1$-.100s"), system->description);
 }