mirror of
https://gitlab.com/kicad/code/kicad.git
synced 2025-09-14 10:13:19 +02:00
Added hotkeys editor from David Turner, with a lot of enhancements and fixes Added pins connections info in intermediate netlist for each compoment. This is redundant, but some netlist formats (ORCADPCB, PSPICE) are very easy to create with this redundant info.
199 lines
3.7 KiB
C++
199 lines
3.7 KiB
C++
#include "hotkey_grid_table.h"
|
|
|
|
/*
|
|
* Reads the hotkey table from its stored format into a format suitable
|
|
* for a wxGrid.
|
|
*/
|
|
HotkeyGridTable::HotkeyGridTable( struct
|
|
Ki_HotkeyInfoSectionDescriptor* origin ) :
|
|
wxGridTableBase(),
|
|
m_hotkeys()
|
|
{
|
|
Ki_HotkeyInfoSectionDescriptor* section;
|
|
|
|
for( section = origin; section->m_HK_InfoList; section++ )
|
|
{
|
|
hotkey_spec spec( *section->m_SectionTag, 0 );
|
|
m_hotkeys.push_back( spec );
|
|
|
|
Ki_HotkeyInfo** info_ptr;
|
|
for( info_ptr = section->m_HK_InfoList; *info_ptr; info_ptr++ )
|
|
{
|
|
Ki_HotkeyInfo* info = *info_ptr;
|
|
hotkey_spec spec( *section->m_SectionTag,
|
|
new Ki_HotkeyInfo( info ) );
|
|
m_hotkeys.push_back( spec );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
HotkeyGridTable::hotkey_spec_vector& HotkeyGridTable::getHotkeys()
|
|
{
|
|
return m_hotkeys;
|
|
}
|
|
|
|
|
|
int HotkeyGridTable::GetNumberRows()
|
|
{
|
|
return m_hotkeys.size();
|
|
}
|
|
|
|
|
|
int HotkeyGridTable::GetNumberCols()
|
|
{
|
|
return 2;
|
|
}
|
|
|
|
|
|
bool HotkeyGridTable::IsEmptyCell( int row, int col )
|
|
{
|
|
return col == 1 && m_hotkeys[row].second == 0;
|
|
}
|
|
|
|
|
|
wxString HotkeyGridTable::GetValue( int row, int col )
|
|
{
|
|
if( col == 0 )
|
|
{
|
|
if( m_hotkeys[row].second == 0 )
|
|
{
|
|
// section header
|
|
return m_hotkeys[row].first;
|
|
}
|
|
else
|
|
{
|
|
return m_hotkeys[row].second->m_InfoMsg;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if( m_hotkeys[row].second == 0 )
|
|
{
|
|
return wxString();
|
|
}
|
|
else
|
|
{
|
|
return ReturnKeyNameFromKeyCode( m_hotkeys[row].second->m_KeyCode );
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::SetValue( int row, int col, const wxString& value )
|
|
{
|
|
}
|
|
|
|
|
|
wxString HotkeyGridTable::GetTypeName( int row, int col )
|
|
{
|
|
return wxGRID_VALUE_STRING;
|
|
}
|
|
|
|
|
|
bool HotkeyGridTable::CanGetValueAs( int row, int col, const wxString& typeName )
|
|
{
|
|
return typeName == wxGRID_VALUE_STRING && col == 2;
|
|
}
|
|
|
|
|
|
bool HotkeyGridTable::CanSetValueAs( int row, int col, const wxString& typeName )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
long HotkeyGridTable::GetValueAsLong( int row, int col )
|
|
{
|
|
return -1L;
|
|
}
|
|
|
|
|
|
double HotkeyGridTable::GetValueAsDouble( int row, int col )
|
|
{
|
|
return 0.0;
|
|
}
|
|
|
|
|
|
bool HotkeyGridTable::GetValueAsBool( int row, int col )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::SetValueAsLong( int row, int col, long value )
|
|
{
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::SetValueAsDouble( int row, int col, double value )
|
|
{
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::SetValueAsBool( int row, int col, bool value )
|
|
{
|
|
}
|
|
|
|
|
|
void* HotkeyGridTable::GetValueAsCustom( int row, int col )
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::SetValueAsCustom( int row, int col, void* value )
|
|
{
|
|
}
|
|
|
|
|
|
wxString HotkeyGridTable::GetColLabelValue( int col )
|
|
{
|
|
return col == 0 ? _( "Command" ) : _( "Hotkey" );
|
|
}
|
|
|
|
|
|
bool HotkeyGridTable::isHeader( int row )
|
|
{
|
|
return m_hotkeys[row].second == 0;
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::SetKeyCode( int row, long key )
|
|
{
|
|
m_hotkeys[row].second->m_KeyCode = key;
|
|
}
|
|
|
|
|
|
void HotkeyGridTable::RestoreFrom( struct
|
|
Ki_HotkeyInfoSectionDescriptor* origin )
|
|
{
|
|
int row = 0;
|
|
Ki_HotkeyInfoSectionDescriptor* section;
|
|
|
|
for( section = origin; section->m_HK_InfoList; section++ )
|
|
{
|
|
++row;
|
|
Ki_HotkeyInfo** info_ptr;
|
|
for( info_ptr = section->m_HK_InfoList; *info_ptr; info_ptr++ )
|
|
{
|
|
Ki_HotkeyInfo* info = *info_ptr;
|
|
m_hotkeys[row++].second->m_KeyCode = info->m_KeyCode;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
HotkeyGridTable::~HotkeyGridTable()
|
|
{
|
|
hotkey_spec_vector::iterator i;
|
|
|
|
for( i = m_hotkeys.begin(); i != m_hotkeys.end(); ++i )
|
|
{
|
|
if( i->second )
|
|
{
|
|
delete i->second;
|
|
}
|
|
}
|
|
}
|