//id here is the position index at the internal list of recent ISOs (m_Items) void RecentIsoManager::InsertIntoMenu( int id ) { if( m_Menu == NULL ) return; RecentItem& curitem( m_Items[id] ); int wxid=wxID_ANY; if (this->m_firstIdForMenuItems_or_wxID_ANY != wxID_ANY) wxid = this->m_firstIdForMenuItems_or_wxID_ANY + id; curitem.ItemPtr = m_Menu->AppendRadioItem( wxid, Path::GetFilename(curitem.Filename), curitem.Filename ); bool exists = wxFileExists( curitem.Filename ); if( m_cursel == id && exists ) curitem.ItemPtr->Check(); if ( !exists ) curitem.ItemPtr->Enable( false ); }
void RecentIsoManager::RemoveAllFromMenu() { if( m_Menu == NULL ) return; int cnt = m_Items.size(); for( int i=0; i<cnt; ++i ) { RecentItem& curitem( m_Items[i] ); if( curitem.ItemPtr == NULL ) continue; m_Menu->Destroy( curitem.ItemPtr ); curitem.ItemPtr = NULL; } if( m_Separator != NULL ) { m_Menu->Destroy( m_Separator ); m_Separator = NULL; } }
void debug_view_state::view_update() { // if our assumptions changed, revisit them if (m_recompute) recompute(); // get cycle count if we have an execute interface debug_view_state_source const &source(downcast<debug_view_state_source const &>(*m_source)); uint64_t const total_cycles(source.m_execintf ? source.m_execintf->total_cycles() : 0); bool const cycles_changed(m_last_update != total_cycles); // loop over rows auto it(m_state_list.begin()); screen_device const *const screen(machine().first_screen()); debug_view_char *dest(&m_viewdata[0]); for (int32_t index = 0, limit = m_topleft.y + m_visible.y; (index < limit) || (it != m_state_list.end()); ++index) { bool const visible((index >= m_topleft.y) && (index < limit)); uint32_t col(0); if (it != m_state_list.end()) { // advance to the next item state_item &curitem(*it++); // update item and get the effective string std::string valstr; switch (curitem.index()) { case REG_DIVIDER: curitem.m_symbol.clear(); curitem.m_symbol.resize(m_total.x, '-'); break; case REG_CYCLES: if (source.m_execintf) { curitem.update(source.m_execintf->cycles_remaining(), cycles_changed); valstr = string_format("%-8d", curitem.value()); } break; case REG_BEAMX: if (screen) { curitem.update(screen->hpos(), cycles_changed); valstr = string_format("%4d", curitem.value()); } break; case REG_BEAMY: if (screen) { curitem.update(screen->vpos(), cycles_changed); valstr = string_format("%4d", curitem.value()); } break; case REG_FRAME: if (screen) { curitem.update(screen->frame_number(), cycles_changed); valstr = string_format("%6d", curitem.value()); } break; default: curitem.update(source.m_stateintf->state_int(curitem.index()), cycles_changed); valstr = source.m_stateintf->state_string(curitem.index()); } // if this row is visible, add it to the buffer if (visible) { // see if we changed const uint8_t attrib(curitem.changed() ? DCA_CHANGED: DCA_NORMAL); // build up a string char temp[256]; uint32_t len(0); if (curitem.m_symbol.length() < (m_divider - 1)) { memset(&temp[len], ' ', m_divider - 1 - curitem.m_symbol.length()); len += m_divider - 1 - curitem.m_symbol.length(); } memcpy(&temp[len], curitem.m_symbol.c_str(), curitem.m_symbol.length()); len += curitem.m_symbol.length(); temp[len++] = ' '; temp[len++] = ' '; memcpy(&temp[len], valstr.c_str(), curitem.value_length()); len += curitem.value_length(); temp[len++] = ' '; temp[len] = 0; // copy data for (uint32_t effcol = m_topleft.x; (col < m_visible.x) && (effcol < len); ++dest, ++col) { dest->byte = temp[effcol++]; dest->attrib = attrib | ((effcol <= m_divider) ? DCA_ANCILLARY : DCA_NORMAL); } } } // fill the rest with blanks while (visible && (col < m_visible.x)) { dest->byte = ' '; dest->attrib = DCA_NORMAL; dest++; col++; } } // remember the last update m_last_update = total_cycles; }