more work on hotkeys. many features are ok.
This commit is contained in:
parent
90e28dd1ac
commit
f5eae50680
|
@ -4,6 +4,15 @@ Started 2007-June-11
|
|||
Please add newer entries at the top, list the date and your name with
|
||||
email address.
|
||||
|
||||
2007-aug-30 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr>
|
||||
================================================================================
|
||||
+ eeschema & pcbnew
|
||||
more about programmable hotkeys.
|
||||
Most existing hotkeys are programmable and displayed in popup menus or tools
|
||||
Work still in progress but most features are ok.
|
||||
some features are not fixed (mainly the configuration files path, which is
|
||||
currently the home directory under unix systems and kicad/template under windows))
|
||||
|
||||
|
||||
2007-Aug-29 UPDATE Dick Hollenbeck <dick@softplc.com>
|
||||
================================================================================
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/*********************/
|
||||
/* hotkeys_basic.cpp */
|
||||
/*********************/
|
||||
/*********************/
|
||||
/* hotkeys_basic.cpp */
|
||||
/*********************/
|
||||
|
||||
/* Some functions to handle hotkeys in kicad
|
||||
*/
|
||||
*/
|
||||
#include "fctsys.h"
|
||||
#include "common.h"
|
||||
#include "wxstruct.h"
|
||||
|
@ -11,384 +11,477 @@
|
|||
#include "macros.h"
|
||||
|
||||
/* Class to handle hotkey commnands. hotkeys have a default value
|
||||
This class allows (for the future..) the real key code changed by user(from a key code list file, TODO)
|
||||
*/
|
||||
* This class allows (for the future..) the real key code changed by user(from a key code list file, TODO)
|
||||
*/
|
||||
|
||||
Ki_HotkeyInfo::Ki_HotkeyInfo(const wxChar * infomsg, int idcommand, int keycode)
|
||||
Ki_HotkeyInfo::Ki_HotkeyInfo( const wxChar* infomsg, int idcommand, int keycode )
|
||||
{
|
||||
m_KeyCode = keycode; // Key code (ascii value for ascii keys or wxWidgets code for function key
|
||||
m_InfoMsg = infomsg; // info message.
|
||||
m_Idcommand = idcommand; // internal id for the corresponding command (see hotkey_id_commnand list)
|
||||
m_KeyCode = keycode; // Key code (ascii value for ascii keys or wxWidgets code for function key
|
||||
m_InfoMsg = infomsg; // info message.
|
||||
m_Idcommand = idcommand; // internal id for the corresponding command (see hotkey_id_commnand list)
|
||||
}
|
||||
|
||||
|
||||
/* class to handle the printable name and the keycode
|
||||
*/
|
||||
struct hotkey_name_descr {
|
||||
wxChar * m_Name;
|
||||
int m_KeyCode;
|
||||
*/
|
||||
struct hotkey_name_descr
|
||||
{
|
||||
wxChar* m_Name;
|
||||
int m_KeyCode;
|
||||
};
|
||||
|
||||
struct hotkey_name_descr s_Notkey_Name_List[] = {
|
||||
{wxT("F1"), WXK_F1},
|
||||
{wxT("F2"), WXK_F2},
|
||||
{wxT("F3"), WXK_F3},
|
||||
{wxT("F4"), WXK_F4},
|
||||
{wxT("F5"), WXK_F5},
|
||||
{wxT("F6"), WXK_F6},
|
||||
{wxT("F7"), WXK_F7},
|
||||
{wxT("F8"), WXK_F8},
|
||||
{wxT("F9"), WXK_F9},
|
||||
{wxT("F10"), WXK_F10},
|
||||
{wxT("F11"), WXK_F11},
|
||||
{wxT("F12"), WXK_F12},
|
||||
struct hotkey_name_descr s_Hotkey_Name_List[] =
|
||||
{
|
||||
{ wxT( "F1" ), WXK_F1 },
|
||||
{ wxT( "F2" ), WXK_F2 },
|
||||
{ wxT( "F3" ), WXK_F3 },
|
||||
{ wxT( "F4" ), WXK_F4 },
|
||||
{ wxT( "F5" ), WXK_F5 },
|
||||
{ wxT( "F6" ), WXK_F6 },
|
||||
{ wxT( "F7" ), WXK_F7 },
|
||||
{ wxT( "F8" ), WXK_F8 },
|
||||
{ wxT( "F9" ), WXK_F9 },
|
||||
{ wxT( "F10" ), WXK_F10 },
|
||||
{ wxT( "F11" ), WXK_F11 },
|
||||
{ wxT( "F12" ), WXK_F12 },
|
||||
|
||||
{wxT("Esc"), WXK_ESCAPE},
|
||||
{wxT("Delete"), WXK_DELETE},
|
||||
{wxT("Esc"), WXK_ESCAPE},
|
||||
{wxT("Tab"), '\t'},
|
||||
{wxT("Backspace"), WXK_BACK},
|
||||
{wxT("Insert"), WXK_INSERT},
|
||||
{ wxT( "Esc" ), WXK_ESCAPE },
|
||||
{ wxT( "Delete" ), WXK_DELETE },
|
||||
{ wxT( "Esc" ), WXK_ESCAPE },
|
||||
{ wxT( "Tab" ), '\t' },
|
||||
{ wxT( "Backspace" ), WXK_BACK },
|
||||
{ wxT( "Insert" ), WXK_INSERT },
|
||||
|
||||
{wxT("End"), WXK_END},
|
||||
{wxT("Page Up"), WXK_PAGEUP},
|
||||
{wxT("Page Down"), WXK_PAGEDOWN},
|
||||
{wxT("+"), WXK_ADD},
|
||||
{wxT("-"), WXK_SUBTRACT},
|
||||
{ wxT( "End" ), WXK_END },
|
||||
{ wxT( "Page Up" ), WXK_PAGEUP },
|
||||
{ wxT( "Page Down" ), WXK_PAGEDOWN },
|
||||
{ wxT( "+" ), WXK_ADD },
|
||||
{ wxT( "-" ), WXK_SUBTRACT },
|
||||
|
||||
{wxT("space"), ' '},
|
||||
{wxT("?"), '?'},
|
||||
{wxT("A"), 'A'},
|
||||
{wxT("B"), 'B'},
|
||||
{wxT("C"), 'C'},
|
||||
{wxT("D"), 'D'},
|
||||
{wxT("E"), 'E'},
|
||||
{wxT("F"), 'F'},
|
||||
{wxT("G"), 'G'},
|
||||
{wxT("H"), 'H'},
|
||||
{wxT("I"), 'I'},
|
||||
{wxT("J"), 'J'},
|
||||
{wxT("K"), 'K'},
|
||||
{wxT("L"), 'L'},
|
||||
{wxT("M"), 'M'},
|
||||
{wxT("N"), 'N'},
|
||||
{wxT("O"), 'O'},
|
||||
{wxT("P"), 'P'},
|
||||
{wxT("Q"), 'Q'},
|
||||
{wxT("R"), 'R'},
|
||||
{wxT("S"), 'S'},
|
||||
{wxT("T"), 'T'},
|
||||
{wxT("U"), 'U'},
|
||||
{wxT("V"), 'V'},
|
||||
{wxT("W"), 'W'},
|
||||
{wxT("X"), 'X'},
|
||||
{wxT("Y"), 'Y'},
|
||||
{wxT("Z"), 'Z'},
|
||||
{ wxT( "Up" ), WXK_UP },
|
||||
{ wxT( "Down" ), WXK_DOWN },
|
||||
{ wxT( "Left" ), WXK_LEFT },
|
||||
{ wxT( "Right" ), WXK_RIGHT },
|
||||
|
||||
{wxT("Ctrl A"), GR_KB_CTRL + 'A'},
|
||||
{wxT("Ctrl B"), GR_KB_CTRL + 'B'},
|
||||
{wxT("Ctrl C"), GR_KB_CTRL + 'C'},
|
||||
{wxT("Ctrl D"), GR_KB_CTRL + 'D'},
|
||||
{wxT("Ctrl E"), GR_KB_CTRL + 'E'},
|
||||
{wxT("Ctrl F"), GR_KB_CTRL + 'F'},
|
||||
{wxT("Ctrl G"), GR_KB_CTRL + 'G'},
|
||||
{wxT("Ctrl H"), GR_KB_CTRL + 'H'},
|
||||
{wxT("Ctrl I"), GR_KB_CTRL + 'I'},
|
||||
{wxT("Ctrl J"), GR_KB_CTRL + 'J'},
|
||||
{wxT("Ctrl K"), GR_KB_CTRL + 'K'},
|
||||
{wxT("Ctrl L"), GR_KB_CTRL + 'L'},
|
||||
{wxT("Ctrl M"), GR_KB_CTRL + 'M'},
|
||||
{wxT("Ctrl N"), GR_KB_CTRL + 'N'},
|
||||
{wxT("Ctrl O"), GR_KB_CTRL + 'O'},
|
||||
{wxT("Ctrl P"), GR_KB_CTRL + 'P'},
|
||||
{wxT("Ctrl Q"), GR_KB_CTRL + 'Q'},
|
||||
{wxT("Ctrl R"), GR_KB_CTRL + 'R'},
|
||||
{wxT("Ctrl S"), GR_KB_CTRL + 'S'},
|
||||
{wxT("Ctrl T"), GR_KB_CTRL + 'T'},
|
||||
{wxT("Ctrl U"), GR_KB_CTRL + 'U'},
|
||||
{wxT("Ctrl V"), GR_KB_CTRL + 'V'},
|
||||
{wxT("Ctrl W"), GR_KB_CTRL + 'W'},
|
||||
{wxT("Ctrl X"), GR_KB_CTRL + 'X'},
|
||||
{wxT("Ctrl Y"), GR_KB_CTRL + 'Y'},
|
||||
{wxT("Ctrl Z"), GR_KB_CTRL + 'Z'},
|
||||
{ wxT( "space" ), ' ' },
|
||||
{ wxT( "?" ), '?' },
|
||||
{ wxT( "!" ), '!' },
|
||||
{ wxT( ":" ), ':' },
|
||||
{ wxT( "," ), ',' },
|
||||
{ wxT( "*" ), '*' },
|
||||
{ wxT( "+" ), '+' },
|
||||
{ wxT( "-" ), '-' },
|
||||
{ wxT( "\%" ), '%' },
|
||||
{ wxT( "A" ), 'A' },
|
||||
{ wxT( "B" ), 'B' },
|
||||
{ wxT( "C" ), 'C' },
|
||||
{ wxT( "D" ), 'D' },
|
||||
{ wxT( "E" ), 'E' },
|
||||
{ wxT( "F" ), 'F' },
|
||||
{ wxT( "G" ), 'G' },
|
||||
{ wxT( "H" ), 'H' },
|
||||
{ wxT( "I" ), 'I' },
|
||||
{ wxT( "J" ), 'J' },
|
||||
{ wxT( "K" ), 'K' },
|
||||
{ wxT( "L" ), 'L' },
|
||||
{ wxT( "M" ), 'M' },
|
||||
{ wxT( "N" ), 'N' },
|
||||
{ wxT( "O" ), 'O' },
|
||||
{ wxT( "P" ), 'P' },
|
||||
{ wxT( "Q" ), 'Q' },
|
||||
{ wxT( "R" ), 'R' },
|
||||
{ wxT( "S" ), 'S' },
|
||||
{ wxT( "T" ), 'T' },
|
||||
{ wxT( "U" ), 'U' },
|
||||
{ wxT( "V" ), 'V' },
|
||||
{ wxT( "W" ), 'W' },
|
||||
{ wxT( "X" ), 'X' },
|
||||
{ wxT( "Y" ), 'Y' },
|
||||
{ wxT( "Z" ), 'Z' },
|
||||
|
||||
{wxT(""), 0} // Do not change: end of list
|
||||
{ wxT( "Ctrl A" ), GR_KB_CTRL + 'A' },
|
||||
{ wxT( "Ctrl B" ), GR_KB_CTRL + 'B' },
|
||||
{ wxT( "Ctrl C" ), GR_KB_CTRL + 'C' },
|
||||
{ wxT( "Ctrl D" ), GR_KB_CTRL + 'D' },
|
||||
{ wxT( "Ctrl E" ), GR_KB_CTRL + 'E' },
|
||||
{ wxT( "Ctrl F" ), GR_KB_CTRL + 'F' },
|
||||
{ wxT( "Ctrl G" ), GR_KB_CTRL + 'G' },
|
||||
{ wxT( "Ctrl H" ), GR_KB_CTRL + 'H' },
|
||||
{ wxT( "Ctrl I" ), GR_KB_CTRL + 'I' },
|
||||
{ wxT( "Ctrl J" ), GR_KB_CTRL + 'J' },
|
||||
{ wxT( "Ctrl K" ), GR_KB_CTRL + 'K' },
|
||||
{ wxT( "Ctrl L" ), GR_KB_CTRL + 'L' },
|
||||
{ wxT( "Ctrl M" ), GR_KB_CTRL + 'M' },
|
||||
{ wxT( "Ctrl N" ), GR_KB_CTRL + 'N' },
|
||||
{ wxT( "Ctrl O" ), GR_KB_CTRL + 'O' },
|
||||
{ wxT( "Ctrl P" ), GR_KB_CTRL + 'P' },
|
||||
{ wxT( "Ctrl Q" ), GR_KB_CTRL + 'Q' },
|
||||
{ wxT( "Ctrl R" ), GR_KB_CTRL + 'R' },
|
||||
{ wxT( "Ctrl S" ), GR_KB_CTRL + 'S' },
|
||||
{ wxT( "Ctrl T" ), GR_KB_CTRL + 'T' },
|
||||
{ wxT( "Ctrl U" ), GR_KB_CTRL + 'U' },
|
||||
{ wxT( "Ctrl V" ), GR_KB_CTRL + 'V' },
|
||||
{ wxT( "Ctrl W" ), GR_KB_CTRL + 'W' },
|
||||
{ wxT( "Ctrl X" ), GR_KB_CTRL + 'X' },
|
||||
{ wxT( "Ctrl Y" ), GR_KB_CTRL + 'Y' },
|
||||
{ wxT( "Ctrl Z" ), GR_KB_CTRL + 'Z' },
|
||||
|
||||
{ wxT( "" ), 0 } // Do not change: end of list
|
||||
};
|
||||
|
||||
|
||||
/****************************************************/
|
||||
wxString ReturnKeyNameFromKeyCode(int keycode)
|
||||
wxString ReturnKeyNameFromKeyCode( int keycode )
|
||||
/****************************************************/
|
||||
|
||||
/*
|
||||
* return the key name from the key code
|
||||
* Only some wxWidgets key values are handled for function key
|
||||
* @param key = key code (ascii value, or wxWidgets value for function keys)
|
||||
* @return the key name in a wxString
|
||||
*/
|
||||
* return the key name from the key code
|
||||
* Only some wxWidgets key values are handled for function key
|
||||
* @param key = key code (ascii value, or wxWidgets value for function keys)
|
||||
* @return the key name in a wxString
|
||||
*/
|
||||
{
|
||||
wxString keyname, modifier, fullkeyname;
|
||||
int ii;
|
||||
wxString keyname, modifier, fullkeyname;
|
||||
int ii;
|
||||
|
||||
if ( (keycode & GR_KB_CTRL) != 0 ) modifier << wxT("Ctrl ");
|
||||
if ( (keycode & GR_KB_ALT) != 0 ) modifier << wxT("Alt ");
|
||||
if ( (keycode & GR_KB_SHIFT) != 0 ) modifier << wxT("Shift ");
|
||||
if( (keycode & GR_KB_CTRL) != 0 )
|
||||
modifier << wxT( "Ctrl " );
|
||||
if( (keycode & GR_KB_ALT) != 0 )
|
||||
modifier << wxT( "Alt " );
|
||||
if( (keycode & GR_KB_SHIFT) != 0 )
|
||||
modifier << wxT( "Shift " );
|
||||
|
||||
keycode &= ~(GR_KB_CTRL|GR_KB_ALT|GR_KB_SHIFT);
|
||||
for ( ii = 0; ; ii++)
|
||||
{
|
||||
if ( s_Notkey_Name_List[ii].m_KeyCode == 0 )
|
||||
{
|
||||
keyname = wxT("<unknown>");
|
||||
break;
|
||||
}
|
||||
if ( s_Notkey_Name_List[ii].m_KeyCode == keycode)
|
||||
{
|
||||
keyname = s_Notkey_Name_List[ii].m_Name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fullkeyname = modifier + keyname;
|
||||
return fullkeyname;
|
||||
keycode &= ~(GR_KB_CTRL | GR_KB_ALT | GR_KB_SHIFT);
|
||||
for( ii = 0; ; ii++ )
|
||||
{
|
||||
if( s_Hotkey_Name_List[ii].m_KeyCode == 0 )
|
||||
{
|
||||
keyname = wxT( "<unknown>" );
|
||||
break;
|
||||
}
|
||||
if( s_Hotkey_Name_List[ii].m_KeyCode == keycode )
|
||||
{
|
||||
keyname = s_Hotkey_Name_List[ii].m_Name;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
fullkeyname = modifier + keyname;
|
||||
return fullkeyname;
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
static int ReturnKeyCodeFromKeyName(const wxString & keyname)
|
||||
/************************************************************/
|
||||
/*
|
||||
* return the key code from its key name
|
||||
* Only some wxWidgets key values are handled for function key
|
||||
* @param keyname = wxString key name to find in s_Notkey_Name_List[]
|
||||
* @return the key code
|
||||
*/
|
||||
{
|
||||
int ii, keycode = 0;
|
||||
|
||||
for ( ii = 0; ; ii++)
|
||||
{
|
||||
if ( s_Notkey_Name_List[ii].m_KeyCode == 0 ) break;
|
||||
if ( s_Notkey_Name_List[ii].m_Name == keyname)
|
||||
{
|
||||
keycode = s_Notkey_Name_List[ii].m_KeyCode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return keycode;
|
||||
/**********************************************************************************/
|
||||
wxString AddHotkeyName( const wxString& text, Ki_HotkeyInfo** List, int CommandId )
|
||||
/**********************************************************************************/
|
||||
|
||||
/*
|
||||
* Add the key name from the Command id value ( m_Idcommand member value)
|
||||
* @param List = pointer to a Ki_HotkeyInfo list of commands
|
||||
* @param CommandId = Command Id value
|
||||
* @return text (key name) in a wxString if found or text without modification
|
||||
*/
|
||||
{
|
||||
wxString msg = text;
|
||||
wxString keyname = ReturnKeyNameFromCommandId( List, CommandId );
|
||||
|
||||
if( !keyname.IsEmpty() )
|
||||
msg << wxT( " (" ) << keyname << wxT( ")" );
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************/
|
||||
wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId )
|
||||
/***********************************************************************/
|
||||
|
||||
/*
|
||||
* return the key name from the Command id value ( m_Idcommand member value)
|
||||
* @param List = pointer to a Ki_HotkeyInfo list of commands
|
||||
* @param CommandId = Command Id value
|
||||
* @return the key name in a wxString
|
||||
*/
|
||||
{
|
||||
wxString keyname;
|
||||
|
||||
for( ; *List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo* hk_decr = *List;
|
||||
if( hk_decr->m_Idcommand == CommandId )
|
||||
{
|
||||
keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return keyname;
|
||||
}
|
||||
|
||||
|
||||
/************************************************************/
|
||||
static int ReturnKeyCodeFromKeyName( const wxString& keyname )
|
||||
/************************************************************/
|
||||
|
||||
/*
|
||||
* return the key code from its key name
|
||||
* Only some wxWidgets key values are handled for function key
|
||||
* @param keyname = wxString key name to find in s_Hotkey_Name_List[]
|
||||
* @return the key code
|
||||
*/
|
||||
{
|
||||
int ii, keycode = 0;
|
||||
|
||||
for( ii = 0; ; ii++ )
|
||||
{
|
||||
if( s_Hotkey_Name_List[ii].m_KeyCode == 0 ) // End of list reached
|
||||
break;
|
||||
if( keyname.CmpNoCase( s_Hotkey_Name_List[ii].m_Name ) == 0 )
|
||||
{
|
||||
keycode = s_Hotkey_Name_List[ii].m_KeyCode;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return keycode;
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
void DisplayHotkeyList(WinEDA_DrawFrame * frame, Ki_HotkeyInfo ** List)
|
||||
void DisplayHotkeyList( WinEDA_DrawFrame* frame, Ki_HotkeyInfo** List )
|
||||
/*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Displays the current hotkey list
|
||||
* @param frame = current open frame
|
||||
* @param List = pointer to a Ki_HotkeyInfo list of commands
|
||||
* @return none
|
||||
*/
|
||||
* Displays the current hotkey list
|
||||
* @param frame = current open frame
|
||||
* @param List = pointer to a Ki_HotkeyInfo list of commands
|
||||
* @return none
|
||||
*/
|
||||
{
|
||||
wxString keyname;
|
||||
|
||||
wxString msg = _("Current hotkey list:\n\n");
|
||||
for ( ; * List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo * hk_decr = * List;
|
||||
msg += _("key ");
|
||||
keyname = ReturnKeyNameFromKeyCode(hk_decr->m_KeyCode);
|
||||
msg += keyname + wxT(": ") + hk_decr->m_InfoMsg + wxT("\n");
|
||||
}
|
||||
DisplayInfo(frame, msg);
|
||||
wxString keyname;
|
||||
|
||||
wxString msg = _( "Current hotkey list:\n\n" );
|
||||
|
||||
for( ; *List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo* hk_decr = *List;
|
||||
msg += _( "key " );
|
||||
keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode );
|
||||
msg += keyname + wxT( ": " ) + hk_decr->m_InfoMsg + wxT( "\n" );
|
||||
}
|
||||
|
||||
DisplayInfo( frame, msg );
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************/
|
||||
int GetCommandCodeFromHotkey(int key, Ki_HotkeyInfo ** List)
|
||||
int GetCommandCodeFromHotkey( int key, Ki_HotkeyInfo** List )
|
||||
/******************************************************************/
|
||||
|
||||
/*
|
||||
* Return an id identifier fron a key code for OnHotKey() function
|
||||
* @param key = key code (ascii value, or wxWidgets value for function keys
|
||||
* @param List = pointer to a Ki_HotkeyInfo list of commands
|
||||
* @return the corresponding function identifier from the Ki_HotkeyInfo List
|
||||
*/
|
||||
* Return an id identifier fron a key code for OnHotKey() function
|
||||
* @param key = key code (ascii value, or wxWidgets value for function keys
|
||||
* @param List = pointer to a Ki_HotkeyInfo list of commands
|
||||
* @return the corresponding function identifier from the Ki_HotkeyInfo List
|
||||
*/
|
||||
{
|
||||
for ( ; * List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo * hk_decr = * List;
|
||||
if ( hk_decr->m_KeyCode == key ) return hk_decr->m_Idcommand;
|
||||
}
|
||||
|
||||
return 0;
|
||||
for( ; *List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo* hk_decr = *List;
|
||||
if( hk_decr->m_KeyCode == key )
|
||||
return hk_decr->m_Idcommand;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*************************************************************************/
|
||||
int WinEDA_BasicFrame::WriteHotkeyConfigFile(const wxString & Filename,
|
||||
Ki_HotkeyInfo ** List, bool verbose)
|
||||
int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename,
|
||||
Ki_HotkeyInfo** List, bool verbose )
|
||||
/*************************************************************************/
|
||||
|
||||
/*
|
||||
* Create a configuration file (*.key) from the current hotkey list
|
||||
* @param Filename = default full file name to create. If void, A filename will be asked
|
||||
* @param List = pointer to the current hotkey list.
|
||||
* the ouput format is: shortcut "key" "function"
|
||||
* lines starting by # are comments
|
||||
*
|
||||
*/
|
||||
*
|
||||
*/
|
||||
{
|
||||
wxString FullFilename = Filename;
|
||||
FILE * cfgfile;
|
||||
wxString msg;
|
||||
if ( FullFilename.IsEmpty() || verbose)
|
||||
{
|
||||
wxString Mask, Path, Ext;
|
||||
Ext = DEFAULT_HOTKEY_FILENAME_EXT;
|
||||
Mask = wxT("*") + Ext;
|
||||
Path = DEFAULT_HOTKEY_FILENAME_PATH;
|
||||
FullFilename = EDA_FileSelector( _("Hotkey configuration file:"),
|
||||
Path, /* Chemin par defaut */
|
||||
FullFilename, /* nom fichier par defaut */
|
||||
Ext, /* extension par defaut */
|
||||
Mask, /* Masque d'affichage */
|
||||
this,
|
||||
wxFD_SAVE,
|
||||
TRUE
|
||||
);
|
||||
}
|
||||
if ( FullFilename.IsEmpty() ) return 0;
|
||||
|
||||
cfgfile = wxFopen(FullFilename, wxT("wt"));
|
||||
|
||||
if ( cfgfile == NULL )
|
||||
{
|
||||
if ( verbose )
|
||||
{
|
||||
msg = _("Unable to create ") + FullFilename;
|
||||
DisplayError(this, msg);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
wxString keyname, infokey;
|
||||
|
||||
msg = wxT("$hotkey list\n");
|
||||
fprintf(cfgfile, CONV_TO_UTF8(msg));
|
||||
|
||||
/* print the allowed keys, for info
|
||||
*/
|
||||
msg = wxT("# "); msg += _("Allowed keys:\n");
|
||||
fprintf(cfgfile, CONV_TO_UTF8(msg));
|
||||
msg.Empty();
|
||||
for ( int ii = 0; ; ii ++ )
|
||||
{
|
||||
if ( s_Notkey_Name_List[ii].m_KeyCode == 0 ) break;;
|
||||
if ( msg.IsEmpty() ) msg = wxT("# ");
|
||||
else msg += wxT(", ");
|
||||
msg += s_Notkey_Name_List[ii].m_Name;
|
||||
if ( msg.Len() > 60 )
|
||||
{
|
||||
msg += wxT("\n");
|
||||
fprintf(cfgfile, CONV_TO_UTF8(msg));
|
||||
msg.Empty();
|
||||
}
|
||||
}
|
||||
/* print the last line */
|
||||
if ( ! msg.IsEmpty() ) msg += wxT("\n");
|
||||
msg += wxT("#\n#\n");
|
||||
fprintf(cfgfile, CONV_TO_UTF8(msg));
|
||||
|
||||
/* Print the current list */
|
||||
for ( ; * List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo * hk_decr = * List;
|
||||
msg = wxT("shortcut ");
|
||||
keyname = ReturnKeyNameFromKeyCode(hk_decr->m_KeyCode);
|
||||
AddDelimiterString( keyname );
|
||||
infokey = hk_decr->m_InfoMsg;
|
||||
AddDelimiterString( infokey );
|
||||
msg += keyname + wxT(": ") + infokey + wxT("\n");
|
||||
fprintf(cfgfile, CONV_TO_UTF8(msg));
|
||||
}
|
||||
msg = wxT("$Endlist\n");
|
||||
fprintf(cfgfile, CONV_TO_UTF8(msg));
|
||||
fclose(cfgfile);
|
||||
return 1;
|
||||
wxString FullFilename = Filename;
|
||||
FILE* cfgfile;
|
||||
wxString msg;
|
||||
|
||||
if( FullFilename.IsEmpty() || verbose )
|
||||
{
|
||||
wxString Mask, Path, Ext;
|
||||
Ext = DEFAULT_HOTKEY_FILENAME_EXT;
|
||||
Mask = wxT( "*" ) + Ext;
|
||||
Path = DEFAULT_HOTKEY_FILENAME_PATH;
|
||||
FullFilename = EDA_FileSelector( _( "Hotkey configuration file:" ),
|
||||
Path, /* Chemin par defaut */
|
||||
FullFilename, /* nom fichier par defaut */
|
||||
Ext, /* extension par defaut */
|
||||
Mask, /* Masque d'affichage */
|
||||
this,
|
||||
wxFD_SAVE,
|
||||
TRUE
|
||||
);
|
||||
}
|
||||
if( FullFilename.IsEmpty() )
|
||||
return 0;
|
||||
|
||||
cfgfile = wxFopen( FullFilename, wxT( "wt" ) );
|
||||
|
||||
if( cfgfile == NULL )
|
||||
{
|
||||
if( verbose )
|
||||
{
|
||||
msg = _( "Unable to create " ) + FullFilename;
|
||||
DisplayError( this, msg );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
wxString keyname, infokey;
|
||||
|
||||
msg = wxT( "$hotkey list\n" );
|
||||
fprintf( cfgfile, CONV_TO_UTF8( msg ) );
|
||||
|
||||
/* print the allowed keys, for info
|
||||
*/
|
||||
msg = wxT( "# " ); msg += _( "Allowed keys:\n" );
|
||||
fprintf( cfgfile, CONV_TO_UTF8( msg ) );
|
||||
msg.Empty();
|
||||
for( int ii = 0; ; ii++ )
|
||||
{
|
||||
if( s_Hotkey_Name_List[ii].m_KeyCode == 0 )
|
||||
break;;
|
||||
if( msg.IsEmpty() )
|
||||
msg = wxT( "# " );
|
||||
else
|
||||
msg += wxT( ", " );
|
||||
msg += s_Hotkey_Name_List[ii].m_Name;
|
||||
if( msg.Len() > 60 )
|
||||
{
|
||||
msg += wxT( "\n" );
|
||||
fprintf( cfgfile, CONV_TO_UTF8( msg ) );
|
||||
msg.Empty();
|
||||
}
|
||||
}
|
||||
|
||||
/* print the last line */
|
||||
if( !msg.IsEmpty() )
|
||||
msg += wxT( "\n" );
|
||||
msg += wxT( "#\n#\n" );
|
||||
fprintf( cfgfile, CONV_TO_UTF8( msg ) );
|
||||
|
||||
/* Print the current list */
|
||||
for( ; *List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo* hk_decr = *List;
|
||||
msg = wxT( "shortcut " );
|
||||
keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode );
|
||||
AddDelimiterString( keyname );
|
||||
infokey = hk_decr->m_InfoMsg;
|
||||
AddDelimiterString( infokey );
|
||||
msg += keyname + wxT( ": " ) + infokey + wxT( "\n" );
|
||||
fprintf( cfgfile, CONV_TO_UTF8( msg ) );
|
||||
}
|
||||
|
||||
msg = wxT( "$Endlist\n" );
|
||||
fprintf( cfgfile, CONV_TO_UTF8( msg ) );
|
||||
fclose( cfgfile );
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
/********************************************************************************************/
|
||||
int WinEDA_BasicFrame::ReadHotkeyConfigFile(const wxString & Filename,
|
||||
Ki_HotkeyInfo ** CurrentHotkeyList, bool verbose)
|
||||
int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename,
|
||||
Ki_HotkeyInfo** CurrentHotkeyList, bool verbose )
|
||||
/********************************************************************************************/
|
||||
|
||||
/*
|
||||
* Read a configuration file (<file>.key) and fill the current hotkey list with hotkeys
|
||||
* @param Filename = default full file name to create. If void, A filename will be asked
|
||||
* @param CurrentHotkeyList = current hotkey list to initialise.
|
||||
* the input format is: shortcut "key" "function"
|
||||
* lines starting by # are ignored (comments)
|
||||
*
|
||||
*/
|
||||
*
|
||||
*/
|
||||
{
|
||||
wxString FullFilename = Filename;
|
||||
FILE * cfgfile;
|
||||
wxString msg;
|
||||
if ( FullFilename.IsEmpty() || verbose )
|
||||
{
|
||||
wxString Mask, Path, Ext;
|
||||
Ext = DEFAULT_HOTKEY_FILENAME_EXT;
|
||||
Mask = wxT("*") + Ext;
|
||||
Path = DEFAULT_HOTKEY_FILENAME_PATH;
|
||||
FullFilename = EDA_FileSelector( _("Hotkey configuration file:"),
|
||||
Path, /* Chemin par defaut */
|
||||
FullFilename, /* nom fichier par defaut */
|
||||
Ext, /* extension par defaut */
|
||||
Mask, /* Masque d'affichage */
|
||||
this,
|
||||
wxFD_OPEN,
|
||||
TRUE
|
||||
);
|
||||
if ( FullFilename.IsEmpty() ) return 0;
|
||||
}
|
||||
wxString FullFilename = Filename;
|
||||
FILE* cfgfile;
|
||||
wxString msg;
|
||||
|
||||
cfgfile = wxFopen(FullFilename, wxT("rt"));
|
||||
|
||||
if ( cfgfile == NULL )
|
||||
{
|
||||
if ( verbose )
|
||||
{
|
||||
msg = _("Unable to read ") + FullFilename;
|
||||
DisplayError(this, msg);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
wxString keyname;
|
||||
char Line[1024];
|
||||
int LineNum = 0;
|
||||
/* Read the file */
|
||||
if( FullFilename.IsEmpty() || verbose )
|
||||
{
|
||||
wxString Mask, Path, Ext;
|
||||
Ext = DEFAULT_HOTKEY_FILENAME_EXT;
|
||||
Mask = wxT( "*" ) + Ext;
|
||||
Path = DEFAULT_HOTKEY_FILENAME_PATH;
|
||||
FullFilename = EDA_FileSelector( _( "Hotkey configuration file:" ),
|
||||
Path, /* Chemin par defaut */
|
||||
FullFilename, /* nom fichier par defaut */
|
||||
Ext, /* extension par defaut */
|
||||
Mask, /* Masque d'affichage */
|
||||
this,
|
||||
wxFD_OPEN,
|
||||
TRUE
|
||||
);
|
||||
if( FullFilename.IsEmpty() )
|
||||
return 0;
|
||||
}
|
||||
|
||||
cfgfile = wxFopen( FullFilename, wxT( "rt" ) );
|
||||
|
||||
if( cfgfile == NULL )
|
||||
{
|
||||
if( verbose )
|
||||
{
|
||||
msg = _( "Unable to read " ) + FullFilename;
|
||||
DisplayError( this, msg );
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
wxString keyname;
|
||||
char Line[1024];
|
||||
int LineNum = 0;
|
||||
/* Read the file */
|
||||
while( GetLine( cfgfile, Line, &LineNum ) != NULL )
|
||||
{
|
||||
char * line_type, * keyname, *fctname;
|
||||
line_type = strtok(Line, " \t\n\r");
|
||||
msg = CONV_FROM_UTF8(line_type);
|
||||
if( msg != wxT("shortcut") ) continue;
|
||||
if( msg == wxT("$Endlist") ) break;
|
||||
char* line_type, * keyname, * fctname;
|
||||
line_type = strtok( Line, " \t\n\r" );
|
||||
msg = CONV_FROM_UTF8( line_type );
|
||||
if( msg != wxT( "shortcut" ) )
|
||||
continue;
|
||||
if( msg == wxT( "$Endlist" ) )
|
||||
break;
|
||||
|
||||
/* Get the key name */
|
||||
strtok(NULL, "\"\n\r");
|
||||
keyname = strtok(NULL, "\"\n\r");
|
||||
strtok(NULL, "\"\n\r");
|
||||
/* Get the command name */
|
||||
fctname = strtok(NULL, "\"\n\r");
|
||||
msg = CONV_FROM_UTF8(fctname);
|
||||
/* search the hotkey in current hotkey list */
|
||||
for (Ki_HotkeyInfo ** List = CurrentHotkeyList; * List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo * hk_decr = * List;
|
||||
if (hk_decr->m_InfoMsg == msg )
|
||||
{
|
||||
msg = CONV_FROM_UTF8(keyname);
|
||||
int code = ReturnKeyCodeFromKeyName(msg);
|
||||
if ( code ) hk_decr->m_KeyCode = code;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(cfgfile);
|
||||
return 1;
|
||||
/* Get the key name */
|
||||
strtok( NULL, "\"\n\r" );
|
||||
keyname = strtok( NULL, "\"\n\r" );
|
||||
strtok( NULL, "\"\n\r" );
|
||||
/* Get the command name */
|
||||
fctname = strtok( NULL, "\"\n\r" );
|
||||
msg = CONV_FROM_UTF8( fctname );
|
||||
/* search the hotkey in current hotkey list */
|
||||
for( Ki_HotkeyInfo** List = CurrentHotkeyList; *List != NULL; List++ )
|
||||
{
|
||||
Ki_HotkeyInfo* hk_decr = *List;
|
||||
if( hk_decr->m_InfoMsg == msg )
|
||||
{
|
||||
msg = CONV_FROM_UTF8( keyname );
|
||||
int code = ReturnKeyCodeFromKeyName( msg );
|
||||
if( code )
|
||||
hk_decr->m_KeyCode = code;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fclose( cfgfile );
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -294,6 +294,9 @@ void WinEDA_DrawFrame::GeneralControle( wxDC* DC, wxPoint MousePositionInPixels
|
|||
|
||||
switch( g_KeyPressed )
|
||||
{
|
||||
case 0:
|
||||
break;
|
||||
|
||||
case EDA_PANNING_UP_KEY:
|
||||
OnZoom( ID_ZOOM_PANNING_UP );
|
||||
curpos = m_CurrentScreen->m_Curseur;
|
||||
|
@ -315,23 +318,16 @@ void WinEDA_DrawFrame::GeneralControle( wxDC* DC, wxPoint MousePositionInPixels
|
|||
break;
|
||||
|
||||
case EDA_ZOOM_IN_FROM_MOUSE:
|
||||
case WXK_F1:
|
||||
OnZoom( ID_ZOOM_PLUS_KEY );
|
||||
curpos = m_CurrentScreen->m_Curseur;
|
||||
break;
|
||||
|
||||
case EDA_ZOOM_OUT_FROM_MOUSE:
|
||||
case WXK_F2:
|
||||
OnZoom( ID_ZOOM_MOINS_KEY );
|
||||
curpos = m_CurrentScreen->m_Curseur;
|
||||
break;
|
||||
|
||||
case WXK_F3:
|
||||
OnZoom( ID_ZOOM_REDRAW_KEY );
|
||||
break;
|
||||
|
||||
case EDA_ZOOM_CENTER_FROM_MOUSE:
|
||||
case WXK_F4:
|
||||
OnZoom( ID_ZOOM_CENTER_KEY );
|
||||
curpos = m_CurrentScreen->m_Curseur;
|
||||
break;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/***********************************/
|
||||
/* eeschema.cpp - module principal */
|
||||
/***********************************/
|
||||
/***********************************/
|
||||
/* eeschema.cpp - module principal */
|
||||
/***********************************/
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation
|
||||
|
@ -26,51 +26,57 @@
|
|||
|
||||
|
||||
/* Routines locales */
|
||||
static void CreateScreens(void);
|
||||
static void CreateScreens( void );
|
||||
|
||||
// Global variables
|
||||
wxString g_Main_Title( wxT("EESchema") );
|
||||
wxString g_Main_Title( wxT( "EESchema" ) );
|
||||
|
||||
/************************************/
|
||||
/* Called to initialize the program */
|
||||
/************************************/
|
||||
/************************************/
|
||||
/* Called to initialize the program */
|
||||
/************************************/
|
||||
|
||||
// Create a new application object: this macro will allow wxWindows to create
|
||||
// the application object during program execution (it's better than using a
|
||||
// static object for many reasons) and also declares the accessor function
|
||||
// wxGetApp() which will return the reference of the right type (i.e. MyApp and
|
||||
// not wxApp)
|
||||
IMPLEMENT_APP(WinEDA_App)
|
||||
IMPLEMENT_APP( WinEDA_App )
|
||||
|
||||
bool WinEDA_App::OnInit(void)
|
||||
bool WinEDA_App::OnInit( void )
|
||||
{
|
||||
wxString FFileName;
|
||||
EDA_Appl = this;
|
||||
wxString FFileName;
|
||||
|
||||
g_DebugLevel = 0; // Debug level */
|
||||
EDA_Appl = this;
|
||||
|
||||
InitEDA_Appl( wxT("eeschema") );
|
||||
g_DebugLevel = 0; // Debug level */
|
||||
|
||||
if ( m_Checker && m_Checker->IsAnotherRunning() )
|
||||
InitEDA_Appl( wxT( "eeschema" ) );
|
||||
|
||||
if( m_Checker && m_Checker->IsAnotherRunning() )
|
||||
{
|
||||
if ( ! IsOK(NULL, _("Eeschema is already running, Continue?") ) )
|
||||
return false;
|
||||
if( !IsOK( NULL, _( "Eeschema is already running, Continue?" ) ) )
|
||||
return false;
|
||||
}
|
||||
|
||||
if(argc > 1 ) FFileName = argv[1];
|
||||
if( argc > 1 )
|
||||
FFileName = argv[1];
|
||||
|
||||
CreateScreens();
|
||||
CreateScreens();
|
||||
|
||||
/* init EESCHEMA */
|
||||
GetSettings(); // read current setup
|
||||
SeedLayers();
|
||||
/* init EESCHEMA */
|
||||
GetSettings(); // read current setup
|
||||
SeedLayers();
|
||||
Read_Hotkey_Config( SchematicFrame, false ); /* Must be called before creating the main frame
|
||||
* in order to display the real hotkeys in menus
|
||||
* or tool tips */
|
||||
|
||||
// Create main frame (schematic frame) :
|
||||
SchematicFrame = new WinEDA_SchematicFrame(NULL, this,
|
||||
wxT("EESchema"), wxPoint(0,0), wxSize(600,400) );
|
||||
// Create main frame (schematic frame) :
|
||||
SchematicFrame = new WinEDA_SchematicFrame( NULL, this,
|
||||
wxT( "EESchema" ),
|
||||
wxPoint( 0, 0 ), wxSize( 600, 400 ) );
|
||||
|
||||
SetTopWindow(SchematicFrame);
|
||||
SchematicFrame->Show(TRUE);
|
||||
SetTopWindow( SchematicFrame );
|
||||
SchematicFrame->Show( TRUE );
|
||||
|
||||
if( CreateServer( SchematicFrame, KICAD_SCH_PORT_SERVICE_NUMBER ) )
|
||||
{
|
||||
|
@ -78,49 +84,47 @@ wxString FFileName;
|
|||
// sends EESCHEMA a command
|
||||
SetupServerFunction( RemoteCommand );
|
||||
}
|
||||
|
||||
SchematicFrame->Zoom_Automatique(TRUE);
|
||||
Read_Hotkey_Config(SchematicFrame, false);
|
||||
|
||||
/* Load file specified in the command line. */
|
||||
if( ! FFileName.IsEmpty() )
|
||||
{
|
||||
ChangeFileNameExt(FFileName, g_SchExtBuffer);
|
||||
wxSetWorkingDirectory( wxPathOnly(FFileName) );
|
||||
if ( SchematicFrame->DrawPanel )
|
||||
if ( SchematicFrame->LoadOneEEProject(FFileName, FALSE) <= 0 )
|
||||
SchematicFrame->DrawPanel->Refresh(TRUE); // File not found or error
|
||||
}
|
||||
SchematicFrame->Zoom_Automatique( TRUE );
|
||||
|
||||
else
|
||||
{
|
||||
Read_Config(wxEmptyString, TRUE); // Read config file ici si pas de fichier a charger
|
||||
if ( SchematicFrame->DrawPanel )
|
||||
SchematicFrame->DrawPanel->Refresh(TRUE);
|
||||
}
|
||||
/* Load file specified in the command line. */
|
||||
if( !FFileName.IsEmpty() )
|
||||
{
|
||||
ChangeFileNameExt( FFileName, g_SchExtBuffer );
|
||||
wxSetWorkingDirectory( wxPathOnly( FFileName ) );
|
||||
if( SchematicFrame->DrawPanel )
|
||||
if( SchematicFrame->LoadOneEEProject( FFileName, FALSE ) <= 0 )
|
||||
SchematicFrame->DrawPanel->Refresh( TRUE ); // File not found or error
|
||||
}
|
||||
else
|
||||
{
|
||||
Read_Config( wxEmptyString, TRUE ); // Read config file ici si pas de fichier a charger
|
||||
if( SchematicFrame->DrawPanel )
|
||||
SchematicFrame->DrawPanel->Refresh( TRUE );
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
/******************************/
|
||||
static void CreateScreens(void)
|
||||
static void CreateScreens( void )
|
||||
/******************************/
|
||||
|
||||
/*
|
||||
Fonction d'init des écrans utilisés dans EESchema:
|
||||
*/
|
||||
* Fonction d'init des écrans utilisés dans EESchema:
|
||||
*/
|
||||
{
|
||||
/* creation des ecrans Sch , Lib */
|
||||
/* creation des ecrans Sch , Lib */
|
||||
|
||||
if(ScreenSch == NULL )
|
||||
ScreenSch = new SCH_SCREEN(SCHEMATIC_FRAME);
|
||||
ScreenSch->m_FileName = g_DefaultSchematicFileName;
|
||||
ScreenSch->m_Date = GenDate();
|
||||
ActiveScreen = ScreenSch;
|
||||
if( ScreenSch == NULL )
|
||||
ScreenSch = new SCH_SCREEN( SCHEMATIC_FRAME );
|
||||
ScreenSch->m_FileName = g_DefaultSchematicFileName;
|
||||
ScreenSch->m_Date = GenDate();
|
||||
ActiveScreen = ScreenSch;
|
||||
|
||||
if(ScreenLib == NULL )
|
||||
ScreenLib = new SCH_SCREEN(LIBEDITOR_FRAME);
|
||||
ScreenLib->SetZoom(4);
|
||||
ScreenLib->m_UndoRedoCountMax = 10;
|
||||
if( ScreenLib == NULL )
|
||||
ScreenLib = new SCH_SCREEN( LIBEDITOR_FRAME );
|
||||
ScreenLib->SetZoom( 4 );
|
||||
ScreenLib->m_UndoRedoCountMax = 10;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/***************/
|
||||
/* hotkeys.cpp */
|
||||
/***************/
|
||||
/***************/
|
||||
/* hotkeys.cpp */
|
||||
/***************/
|
||||
|
||||
#include "fctsys.h"
|
||||
|
||||
|
@ -13,318 +13,370 @@
|
|||
|
||||
#include "id.h"
|
||||
|
||||
#include "hotkeys_basic.h"
|
||||
#include "hotkeys.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
enum hotkey_id_commnand {
|
||||
HK_NOT_FOUND = 0,
|
||||
HK_RESET_LOCAL_COORD,
|
||||
HK_HELP,
|
||||
HK_ZOOM_IN,
|
||||
HK_ZOOM_OUT,
|
||||
HK_ZOOM_REDRAW,
|
||||
HK_ZOOM_CENTER,
|
||||
HK_NEXT_SEARCH,
|
||||
HK_DELETE,
|
||||
HK_REPEAT_LAST,
|
||||
HK_MOVEBLOCK_TO_DRAGBLOCK,
|
||||
HK_ROTATE_COMPONENT,
|
||||
HK_MIRROR_X_COMPONENT,
|
||||
HK_MIRROR_Y_COMPONENT,
|
||||
HK_ORIENT_NORMAL_COMPONENT,
|
||||
HK_MOVE_COMPONENT,
|
||||
HK_ADD_NEW_COMPONENT,
|
||||
HK_BEGIN_WIRE
|
||||
};
|
||||
/* How to add a new hotkey:
|
||||
* add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION (see hotkeys.h).
|
||||
* add a new Ki_HotkeyInfo entry like:
|
||||
* static Ki_HotkeyInfo HkMyNewEntry(wxT("Command Label"), MY_NEW_ID_FUNCTION, default key value);
|
||||
* "Command Label" is the name used in hotkey list display, and the identifier in the hotkey list file
|
||||
* MY_NEW_ID_FUNCTION is an equivalent id function used in the switch in OnHotKey() function.
|
||||
* default key value is the default hotkey for this command. Can be overrided by the user hotkey list file
|
||||
* add the HkMyNewEntry pointer in the s_Schematic_Hotkey_List list ( or/and the s_LibEdit_Hotkey_List list)
|
||||
* Add the new code in the switch in OnHotKey() function.
|
||||
* when the variable PopupOn is true, an item is currently edited.
|
||||
* This can be usefull if the new function cannot be executed while an item is currently being edited
|
||||
* ( For example, one cannot start a new wire when a component is moving.)
|
||||
*
|
||||
* Note: If an hotkey is a special key be sure the corresponding wxWidget keycode (WXK_XXXX)
|
||||
* is handled in the hotkey_name_descr s_Hotkey_Name_List list (see hotkeys_basic.cpp)
|
||||
* and see this list for some ascii keys (space ...)
|
||||
*/
|
||||
|
||||
|
||||
/* local variables */
|
||||
/* Hotkey list: */
|
||||
static Ki_HotkeyInfo HkBeginWire(wxT("begin Wire"), HK_BEGIN_WIRE, 'W');
|
||||
static Ki_HotkeyInfo HkAddComponent(wxT("Add Component"), HK_ADD_NEW_COMPONENT, 'A');
|
||||
static Ki_HotkeyInfo HkMirrorYComponent(wxT("Mirror Y Component"), HK_MIRROR_Y_COMPONENT, 'Y');
|
||||
static Ki_HotkeyInfo HkMirrorXComponent(wxT("Mirror X Component"), HK_MIRROR_X_COMPONENT, 'X');
|
||||
static Ki_HotkeyInfo HkOrientNormalComponent(wxT("Orient Normal Component"), HK_ORIENT_NORMAL_COMPONENT, 'N');
|
||||
static Ki_HotkeyInfo HkRotateComponent(wxT("Rotate Component"), HK_ROTATE_COMPONENT, 'R');
|
||||
static Ki_HotkeyInfo HkMoveComponent(wxT("Move Component"), HK_MOVE_COMPONENT, 'M');
|
||||
static Ki_HotkeyInfo HkMove2Drag(wxT("Switch move block to drag block"), HK_MOVEBLOCK_TO_DRAGBLOCK, '\t');
|
||||
static Ki_HotkeyInfo HkInsert(wxT("Repeat Last Item"), HK_REPEAT_LAST, WXK_INSERT);
|
||||
static Ki_HotkeyInfo HkDelete(wxT("Delete Item"), HK_DELETE, WXK_DELETE);
|
||||
static Ki_HotkeyInfo HkResetLocalCoord(wxT("Reset local coord."), HK_RESET_LOCAL_COORD, ' ');
|
||||
static Ki_HotkeyInfo HkNextSearch(wxT("Next Search"), HK_NEXT_SEARCH, WXK_F5);
|
||||
static Ki_HotkeyInfo HkZoomCenter(wxT("Zoom Center"), HK_ZOOM_CENTER, WXK_F4);
|
||||
static Ki_HotkeyInfo HkZoomRedraw(wxT("Zoom Redraw"), HK_ZOOM_REDRAW, WXK_F3);
|
||||
static Ki_HotkeyInfo HkZoomOut(wxT("Zoom Out"), HK_ZOOM_OUT, WXK_F2);
|
||||
static Ki_HotkeyInfo HkZoomIn(wxT("Zoom In"), HK_ZOOM_IN, WXK_F1);
|
||||
static Ki_HotkeyInfo HkHelp(wxT("Help: this message"), HK_HELP, '?');
|
||||
static Ki_HotkeyInfo HkBeginWire( wxT( "begin Wire" ), HK_BEGIN_WIRE, 'W' );
|
||||
static Ki_HotkeyInfo HkAddComponent( wxT( "Add Component" ), HK_ADD_NEW_COMPONENT, 'A' );
|
||||
static Ki_HotkeyInfo HkMirrorYComponent( wxT(
|
||||
"Mirror Y Component" ), HK_MIRROR_Y_COMPONENT, 'Y' );
|
||||
static Ki_HotkeyInfo HkMirrorXComponent( wxT(
|
||||
"Mirror X Component" ), HK_MIRROR_X_COMPONENT, 'X' );
|
||||
static Ki_HotkeyInfo HkOrientNormalComponent( wxT(
|
||||
"Orient Normal Component" ),
|
||||
HK_ORIENT_NORMAL_COMPONENT, 'N' );
|
||||
static Ki_HotkeyInfo HkRotateComponent( wxT( "Rotate Component" ), HK_ROTATE_COMPONENT, 'R' );
|
||||
static Ki_HotkeyInfo HkMoveComponent( wxT( "Move Component" ), HK_MOVE_COMPONENT, 'M' );
|
||||
static Ki_HotkeyInfo HkMove2Drag( wxT(
|
||||
"Switch move block to drag block" ),
|
||||
HK_MOVEBLOCK_TO_DRAGBLOCK, '\t' );
|
||||
static Ki_HotkeyInfo HkInsert( wxT( "Repeat Last Item" ), HK_REPEAT_LAST, WXK_INSERT );
|
||||
static Ki_HotkeyInfo HkDelete( wxT( "Delete Item" ), HK_DELETE, WXK_DELETE );
|
||||
static Ki_HotkeyInfo HkResetLocalCoord( wxT( "Reset local coord." ), HK_RESET_LOCAL_COORD, ' ' );
|
||||
static Ki_HotkeyInfo HkNextSearch( wxT( "Next Search" ), HK_NEXT_SEARCH, WXK_F5 );
|
||||
static Ki_HotkeyInfo HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 );
|
||||
static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 );
|
||||
static Ki_HotkeyInfo HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 );
|
||||
static Ki_HotkeyInfo HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, WXK_F1 );
|
||||
static Ki_HotkeyInfo HkHelp( wxT( "Help: this message" ), HK_HELP, '?' );
|
||||
|
||||
// List of hotkey descriptors for schematic
|
||||
Ki_HotkeyInfo *s_Schematic_Hotkey_List[] = {
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkNextSearch, &HkResetLocalCoord,
|
||||
&HkDelete, &HkInsert, &HkMove2Drag,
|
||||
&HkMoveComponent, &HkAddComponent,
|
||||
&HkRotateComponent, &HkMirrorXComponent, &HkMirrorYComponent, & HkOrientNormalComponent,
|
||||
&HkBeginWire,
|
||||
NULL
|
||||
Ki_HotkeyInfo* s_Schematic_Hotkey_List[] = {
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkNextSearch, &HkResetLocalCoord,
|
||||
&HkDelete, &HkInsert, &HkMove2Drag,
|
||||
&HkMoveComponent, &HkAddComponent,
|
||||
&HkRotateComponent, &HkMirrorXComponent, &HkMirrorYComponent, &HkOrientNormalComponent,
|
||||
&HkBeginWire,
|
||||
NULL
|
||||
};
|
||||
|
||||
// Library editor:
|
||||
static Ki_HotkeyInfo HkInsertPin(wxT("Repeat Pin"), HK_REPEAT_LAST, WXK_INSERT);
|
||||
static Ki_HotkeyInfo HkInsertPin( wxT( "Repeat Pin" ), HK_REPEAT_LAST, WXK_INSERT );
|
||||
|
||||
// List of hotkey descriptors for libray editor
|
||||
Ki_HotkeyInfo *s_LibEdit_Hotkey_List[] =
|
||||
Ki_HotkeyInfo* s_LibEdit_Hotkey_List[] =
|
||||
{
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkResetLocalCoord,
|
||||
&HkInsertPin,
|
||||
NULL
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkResetLocalCoord,
|
||||
&HkInsertPin,
|
||||
NULL
|
||||
};
|
||||
|
||||
/***********************************************************/
|
||||
void WinEDA_SchematicFrame::OnHotKey(wxDC * DC, int hotkey,
|
||||
EDA_BaseStruct * DrawStruct)
|
||||
void WinEDA_SchematicFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||
EDA_BaseStruct* DrawStruct )
|
||||
/***********************************************************/
|
||||
|
||||
/* Hot keys. Some commands are relatives to the item under the mouse cursor
|
||||
Commands are case insensitive
|
||||
Zoom commands are not managed here
|
||||
*/
|
||||
* Commands are case insensitive
|
||||
*/
|
||||
{
|
||||
bool PopupOn = m_CurrentScreen->GetCurItem() &&
|
||||
m_CurrentScreen->GetCurItem()->m_Flags;
|
||||
bool RefreshToolBar = FALSE; // We must refresh tool bar when the undo/redo tool state is modified
|
||||
|
||||
if ( hotkey == 0 ) return;
|
||||
bool PopupOn = m_CurrentScreen->GetCurItem()
|
||||
&& m_CurrentScreen->GetCurItem()->m_Flags;
|
||||
bool RefreshToolBar = FALSE; // We must refresh tool bar when the undo/redo tool state is modified
|
||||
|
||||
wxPoint MousePos = m_CurrentScreen->m_MousePosition;
|
||||
if( hotkey == 0 )
|
||||
return;
|
||||
|
||||
wxPoint MousePos = m_CurrentScreen->m_MousePosition;
|
||||
|
||||
// Remap the control key Ctrl A (0x01) to GR_KB_CTRL + 'A' (easier to handle...)
|
||||
if( (hotkey & GR_KB_CTRL) != 0 )
|
||||
hotkey += 'A' - 1;
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') )
|
||||
hotkey += 'A' - 'a';
|
||||
|
||||
// Search command from key :
|
||||
int CommandCode = GetCommandCodeFromHotkey( hotkey, s_Schematic_Hotkey_List );
|
||||
|
||||
// Remap the control key Ctrl A (0x01) to GR_KB_CTRL + 'A' (easier to handle...)
|
||||
if ( (hotkey & GR_KB_CTRL) != 0 ) hotkey += 'A' - 1;
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') ) hotkey += 'A' - 'a';
|
||||
|
||||
// Search command from key :
|
||||
int CommandCode = GetCommandCodeFromHotkey(hotkey, s_Schematic_Hotkey_List);
|
||||
switch( CommandCode )
|
||||
{
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList(this, s_Schematic_Hotkey_List);
|
||||
break;
|
||||
{
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_RESET_LOCAL_COORD: /* Reset the relative coord */
|
||||
m_CurrentScreen->m_O_Curseur = m_CurrentScreen->m_Curseur;
|
||||
break;
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList( this, s_Schematic_Hotkey_List );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_IN:
|
||||
case HK_ZOOM_OUT:
|
||||
case HK_ZOOM_REDRAW:
|
||||
case HK_ZOOM_CENTER:
|
||||
break;
|
||||
case HK_RESET_LOCAL_COORD: /* Reset the relative coord */
|
||||
m_CurrentScreen->m_O_Curseur = m_CurrentScreen->m_Curseur;
|
||||
break;
|
||||
|
||||
case HK_MOVEBLOCK_TO_DRAGBLOCK: // Switch to drag mode, when block moving
|
||||
HandleBlockEndByPopUp(BLOCK_DRAG, DC);
|
||||
break;
|
||||
case HK_ZOOM_IN:
|
||||
OnZoom( ID_ZOOM_PLUS_KEY );
|
||||
break;
|
||||
|
||||
case HK_DELETE:
|
||||
if ( PopupOn ) break;
|
||||
RefreshToolBar = LocateAndDeleteItem(this, DC);
|
||||
m_CurrentScreen->SetModify();
|
||||
m_CurrentScreen->SetCurItem( NULL);
|
||||
TestDanglingEnds(m_CurrentScreen->EEDrawList, DC);
|
||||
break;
|
||||
case HK_ZOOM_OUT:
|
||||
OnZoom( ID_ZOOM_MOINS_KEY );
|
||||
break;
|
||||
|
||||
case HK_REPEAT_LAST:
|
||||
if ( g_ItemToRepeat && (g_ItemToRepeat->m_Flags == 0) )
|
||||
{
|
||||
RepeatDrawItem(DC);
|
||||
}
|
||||
else wxBell();
|
||||
break;
|
||||
case HK_ZOOM_REDRAW:
|
||||
OnZoom( ID_ZOOM_REDRAW_KEY );
|
||||
break;
|
||||
|
||||
case HK_NEXT_SEARCH :
|
||||
if ( g_LastSearchIsMarker ) WinEDA_SchematicFrame::FindMarker(1);
|
||||
else FindSchematicItem(wxEmptyString, 2);
|
||||
break;
|
||||
case HK_ZOOM_CENTER:
|
||||
OnZoom( ID_ZOOM_CENTER_KEY );
|
||||
break;
|
||||
|
||||
case HK_ADD_NEW_COMPONENT: // Add component
|
||||
if ( DrawStruct && DrawStruct->m_Flags ) break;
|
||||
// switch to m_ID_current_state = ID_COMPONENT_BUTT;
|
||||
if ( m_ID_current_state != ID_COMPONENT_BUTT ) SetToolID( ID_COMPONENT_BUTT, wxCURSOR_PENCIL, _("Add Component"));
|
||||
OnLeftClick(DC, MousePos);
|
||||
break;
|
||||
case HK_MOVEBLOCK_TO_DRAGBLOCK: // Switch to drag mode, when block moving
|
||||
HandleBlockEndByPopUp( BLOCK_DRAG, DC );
|
||||
break;
|
||||
|
||||
case HK_BEGIN_WIRE: // Add wire
|
||||
if ( DrawStruct ) // An item is selected. If edited and not a wire, a new command is not possible
|
||||
{
|
||||
if ( DrawStruct->m_Flags ) // Item selected and edition in progress
|
||||
{
|
||||
if (DrawStruct->m_StructType == DRAW_SEGMENT_STRUCT_TYPE )
|
||||
{
|
||||
EDA_DrawLineStruct * segment = (EDA_DrawLineStruct *)DrawStruct;
|
||||
if ( segment->m_Layer != LAYER_WIRE ) break;
|
||||
}
|
||||
else break;
|
||||
}
|
||||
}
|
||||
// switch to m_ID_current_state = ID_WIRE_BUTT;
|
||||
if ( m_ID_current_state != ID_WIRE_BUTT ) SetToolID( ID_WIRE_BUTT, wxCURSOR_PENCIL, _("Add Wire"));
|
||||
OnLeftClick(DC, MousePos);
|
||||
case HK_DELETE:
|
||||
if( PopupOn )
|
||||
break;
|
||||
RefreshToolBar = LocateAndDeleteItem( this, DC );
|
||||
m_CurrentScreen->SetModify();
|
||||
m_CurrentScreen->SetCurItem( NULL );
|
||||
TestDanglingEnds( m_CurrentScreen->EEDrawList, DC );
|
||||
break;
|
||||
|
||||
case HK_REPEAT_LAST:
|
||||
if( g_ItemToRepeat && (g_ItemToRepeat->m_Flags == 0) )
|
||||
{
|
||||
RepeatDrawItem( DC );
|
||||
}
|
||||
else
|
||||
wxBell();
|
||||
break;
|
||||
|
||||
case HK_NEXT_SEARCH:
|
||||
if( g_LastSearchIsMarker )
|
||||
WinEDA_SchematicFrame::FindMarker( 1 );
|
||||
else
|
||||
FindSchematicItem( wxEmptyString, 2 );
|
||||
break;
|
||||
|
||||
case HK_ADD_NEW_COMPONENT: // Add component
|
||||
if( DrawStruct && DrawStruct->m_Flags )
|
||||
break;
|
||||
|
||||
case HK_ROTATE_COMPONENT: // Component Rotation
|
||||
if ( DrawStruct == NULL )
|
||||
{
|
||||
DrawStruct = PickStruct( GetScreen()->m_Curseur,
|
||||
GetScreen()->EEDrawList, LIBITEM|TEXTITEM|LABELITEM );
|
||||
if ( DrawStruct == NULL ) break;
|
||||
if ( DrawStruct->m_StructType == DRAW_LIB_ITEM_STRUCT_TYPE )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if ( DrawStruct == NULL ) break;
|
||||
}
|
||||
switch (DrawStruct->m_StructType)
|
||||
{
|
||||
case DRAW_LIB_ITEM_STRUCT_TYPE:
|
||||
if ( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList(DrawStruct, IS_CHANGED);
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct *) DrawStruct, DC, CMP_ROTATE_COUNTERCLOCKWISE );
|
||||
break;
|
||||
// switch to m_ID_current_state = ID_COMPONENT_BUTT;
|
||||
if( m_ID_current_state != ID_COMPONENT_BUTT )
|
||||
SetToolID( ID_COMPONENT_BUTT, wxCURSOR_PENCIL, _( "Add Component" ) );
|
||||
OnLeftClick( DC, MousePos );
|
||||
break;
|
||||
|
||||
case DRAW_TEXT_STRUCT_TYPE:
|
||||
case DRAW_LABEL_STRUCT_TYPE:
|
||||
case DRAW_GLOBAL_LABEL_STRUCT_TYPE:
|
||||
if ( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList(DrawStruct, IS_CHANGED);
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
ChangeTextOrient( (DrawTextStruct*)DrawStruct, DC);
|
||||
break;
|
||||
|
||||
default:;
|
||||
}
|
||||
break;
|
||||
case HK_BEGIN_WIRE: // Add wire
|
||||
if( DrawStruct ) // An item is selected. If edited and not a wire, a new command is not possible
|
||||
{
|
||||
if( DrawStruct->m_Flags ) // Item selected and edition in progress
|
||||
{
|
||||
if( DrawStruct->m_StructType == DRAW_SEGMENT_STRUCT_TYPE )
|
||||
{
|
||||
EDA_DrawLineStruct* segment = (EDA_DrawLineStruct*) DrawStruct;
|
||||
if( segment->m_Layer != LAYER_WIRE )
|
||||
break;
|
||||
}
|
||||
else
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
case HK_MIRROR_Y_COMPONENT: // Mirror Y (Component)
|
||||
if ( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if ( DrawStruct )
|
||||
{
|
||||
if ( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList(DrawStruct, IS_CHANGED);
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct *) DrawStruct, DC, CMP_MIROIR_Y );
|
||||
}
|
||||
break;
|
||||
// switch to m_ID_current_state = ID_WIRE_BUTT;
|
||||
if( m_ID_current_state != ID_WIRE_BUTT )
|
||||
SetToolID( ID_WIRE_BUTT, wxCURSOR_PENCIL, _( "Add Wire" ) );
|
||||
OnLeftClick( DC, MousePos );
|
||||
break;
|
||||
|
||||
case HK_MIRROR_X_COMPONENT: // Mirror X (Component)
|
||||
if ( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if ( DrawStruct )
|
||||
{
|
||||
if ( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList(DrawStruct, IS_CHANGED);
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct *) DrawStruct, DC, CMP_MIROIR_X );
|
||||
}
|
||||
break;
|
||||
case HK_ROTATE_COMPONENT: // Component Rotation
|
||||
if( DrawStruct == NULL )
|
||||
{
|
||||
DrawStruct = PickStruct( GetScreen()->m_Curseur,
|
||||
GetScreen()->EEDrawList, LIBITEM | TEXTITEM | LABELITEM );
|
||||
if( DrawStruct == NULL )
|
||||
break;
|
||||
if( DrawStruct->m_StructType == DRAW_LIB_ITEM_STRUCT_TYPE )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if( DrawStruct == NULL )
|
||||
break;
|
||||
}
|
||||
|
||||
case HK_ORIENT_NORMAL_COMPONENT: // Orient 0, no mirror (Component)
|
||||
if ( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if ( DrawStruct )
|
||||
{
|
||||
if ( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList(DrawStruct, IS_CHANGED);
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct *) DrawStruct, DC, CMP_NORMAL );
|
||||
TestDanglingEnds(m_CurrentScreen->EEDrawList, DC);
|
||||
}
|
||||
break;
|
||||
switch( DrawStruct->m_StructType )
|
||||
{
|
||||
case DRAW_LIB_ITEM_STRUCT_TYPE:
|
||||
if( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList( DrawStruct, IS_CHANGED );
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
|
||||
case HK_MOVE_COMPONENT: // Start move Component
|
||||
if ( PopupOn ) break;
|
||||
if ( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if ( DrawStruct && (DrawStruct->m_Flags ==0) )
|
||||
{
|
||||
m_CurrentScreen->SetCurItem(DrawStruct);
|
||||
Process_Move_Item(m_CurrentScreen->GetCurItem(), DC);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ( RefreshToolBar ) SetToolbars();
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct*) DrawStruct, DC, CMP_ROTATE_COUNTERCLOCKWISE );
|
||||
break;
|
||||
|
||||
case DRAW_TEXT_STRUCT_TYPE:
|
||||
case DRAW_LABEL_STRUCT_TYPE:
|
||||
case DRAW_GLOBAL_LABEL_STRUCT_TYPE:
|
||||
if( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList( DrawStruct, IS_CHANGED );
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
ChangeTextOrient( (DrawTextStruct*) DrawStruct, DC );
|
||||
break;
|
||||
|
||||
default:
|
||||
;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case HK_MIRROR_Y_COMPONENT: // Mirror Y (Component)
|
||||
if( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if( DrawStruct )
|
||||
{
|
||||
if( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList( DrawStruct, IS_CHANGED );
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct*) DrawStruct, DC, CMP_MIROIR_Y );
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_MIRROR_X_COMPONENT: // Mirror X (Component)
|
||||
if( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if( DrawStruct )
|
||||
{
|
||||
if( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList( DrawStruct, IS_CHANGED );
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct*) DrawStruct, DC, CMP_MIROIR_X );
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_ORIENT_NORMAL_COMPONENT: // Orient 0, no mirror (Component)
|
||||
if( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if( DrawStruct )
|
||||
{
|
||||
if( DrawStruct->m_Flags == 0 )
|
||||
{
|
||||
SaveCopyInUndoList( DrawStruct, IS_CHANGED );
|
||||
RefreshToolBar = TRUE;
|
||||
}
|
||||
CmpRotationMiroir(
|
||||
(EDA_SchComponentStruct*) DrawStruct, DC, CMP_NORMAL );
|
||||
TestDanglingEnds( m_CurrentScreen->EEDrawList, DC );
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_MOVE_COMPONENT: // Start move Component
|
||||
if( PopupOn )
|
||||
break;
|
||||
if( DrawStruct == NULL )
|
||||
DrawStruct = LocateSmallestComponent( GetScreen() );
|
||||
if( DrawStruct && (DrawStruct->m_Flags ==0) )
|
||||
{
|
||||
m_CurrentScreen->SetCurItem( DrawStruct );
|
||||
Process_Move_Item( m_CurrentScreen->GetCurItem(), DC );
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if( RefreshToolBar )
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************/
|
||||
void WinEDA_LibeditFrame::OnHotKey(wxDC * DC, int hotkey,
|
||||
EDA_BaseStruct * DrawStruct)
|
||||
void WinEDA_LibeditFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||
EDA_BaseStruct* DrawStruct )
|
||||
/***********************************************************/
|
||||
|
||||
/* Hot keys for the component editot. Some commands are relatives to the item under the mouse cursor
|
||||
Commands are case insensitive
|
||||
Zoom commands are not managed here
|
||||
*/
|
||||
* Commands are case insensitive
|
||||
*/
|
||||
{
|
||||
bool RefreshToolBar = FALSE; // We must refresh tool bar when the undo/redo tool state is modified
|
||||
|
||||
if ( hotkey == 0 ) return;
|
||||
bool RefreshToolBar = FALSE; // We must refresh tool bar when the undo/redo tool state is modified
|
||||
|
||||
wxPoint MousePos = m_CurrentScreen->m_MousePosition;
|
||||
if( hotkey == 0 )
|
||||
return;
|
||||
|
||||
wxPoint MousePos = m_CurrentScreen->m_MousePosition;
|
||||
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') )
|
||||
hotkey += 'A' - 'a';
|
||||
int CommandCode = GetCommandCodeFromHotkey( hotkey, s_LibEdit_Hotkey_List );
|
||||
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') ) hotkey += 'A' - 'a';
|
||||
int CommandCode = GetCommandCodeFromHotkey(hotkey, s_LibEdit_Hotkey_List);
|
||||
switch( CommandCode )
|
||||
{
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList(this, s_LibEdit_Hotkey_List);
|
||||
break;
|
||||
{
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_ZOOM_IN:
|
||||
case HK_ZOOM_OUT:
|
||||
case HK_ZOOM_REDRAW:
|
||||
case HK_ZOOM_CENTER:
|
||||
case HK_RESET_LOCAL_COORD:
|
||||
break;
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList( this, s_LibEdit_Hotkey_List );
|
||||
break;
|
||||
|
||||
case HK_REPEAT_LAST:
|
||||
if ( LibItemToRepeat && (LibItemToRepeat->m_Flags == 0) &&
|
||||
(LibItemToRepeat->m_StructType == COMPONENT_PIN_DRAW_TYPE) )
|
||||
{
|
||||
RepeatPinItem(DC, (LibDrawPin*) LibItemToRepeat);
|
||||
}
|
||||
else wxBell();
|
||||
break;
|
||||
}
|
||||
case HK_RESET_LOCAL_COORD: /* Reset the relative coord */
|
||||
m_CurrentScreen->m_O_Curseur = m_CurrentScreen->m_Curseur;
|
||||
break;
|
||||
|
||||
if ( RefreshToolBar ) SetToolbars();
|
||||
case HK_ZOOM_IN:
|
||||
OnZoom( ID_ZOOM_PLUS_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_OUT:
|
||||
OnZoom( ID_ZOOM_MOINS_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_REDRAW:
|
||||
OnZoom( ID_ZOOM_REDRAW_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_CENTER:
|
||||
OnZoom( ID_ZOOM_CENTER_KEY );
|
||||
break;
|
||||
|
||||
case HK_REPEAT_LAST:
|
||||
if( LibItemToRepeat && (LibItemToRepeat->m_Flags == 0)
|
||||
&& (LibItemToRepeat->m_StructType == COMPONENT_PIN_DRAW_TYPE) )
|
||||
{
|
||||
RepeatPinItem( DC, (LibDrawPin*) LibItemToRepeat );
|
||||
}
|
||||
else
|
||||
wxBell();
|
||||
break;
|
||||
}
|
||||
|
||||
if( RefreshToolBar )
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,35 @@
|
|||
/***************/
|
||||
/* hotkeys.h */
|
||||
/***************/
|
||||
#ifndef KOTKEYS_H
|
||||
#define KOTKEYS_H
|
||||
|
||||
#include "hotkeys_basic.h"
|
||||
|
||||
enum hotkey_id_commnand {
|
||||
HK_NOT_FOUND = 0,
|
||||
HK_RESET_LOCAL_COORD,
|
||||
HK_HELP,
|
||||
HK_ZOOM_IN,
|
||||
HK_ZOOM_OUT,
|
||||
HK_ZOOM_REDRAW,
|
||||
HK_ZOOM_CENTER,
|
||||
HK_NEXT_SEARCH,
|
||||
HK_DELETE,
|
||||
HK_REPEAT_LAST,
|
||||
HK_MOVEBLOCK_TO_DRAGBLOCK,
|
||||
HK_ROTATE_COMPONENT,
|
||||
HK_MIRROR_X_COMPONENT,
|
||||
HK_MIRROR_Y_COMPONENT,
|
||||
HK_ORIENT_NORMAL_COMPONENT,
|
||||
HK_MOVE_COMPONENT,
|
||||
HK_ADD_NEW_COMPONENT,
|
||||
HK_BEGIN_WIRE
|
||||
};
|
||||
|
||||
// List of hotkey descriptors for schematic
|
||||
extern Ki_HotkeyInfo* s_Schematic_Hotkey_List[];
|
||||
// List of hotkey descriptors for libray editor
|
||||
extern Ki_HotkeyInfo* s_LibEdit_Hotkey_List[];
|
||||
|
||||
#endif // KOTKEYS_H
|
|
@ -16,6 +16,7 @@
|
|||
|
||||
#include "protos.h"
|
||||
#include "id.h"
|
||||
#include "hotkeys.h"
|
||||
|
||||
#include "bitmaps.h"
|
||||
|
||||
|
@ -272,24 +273,31 @@ void AddMenusForComponent( wxMenu* PopMenu, EDA_SchComponentStruct* Component )
|
|||
/* Add menu commands for a component
|
||||
*/
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
EDA_LibComponentStruct* LibEntry;
|
||||
|
||||
LibEntry = FindLibPart( Component->m_ChipName.GetData(), wxEmptyString, FIND_ROOT );
|
||||
|
||||
if( !Component->m_Flags )
|
||||
{
|
||||
msg = AddHotkeyName( _( "Move Component" ), s_Schematic_Hotkey_List, HK_MOVE_COMPONENT );
|
||||
ADD_MENUITEM( PopMenu, ID_POPUP_SCH_MOVE_CMP_REQUEST,
|
||||
_( "Move Component (M)" ), move_xpm );
|
||||
msg, move_xpm );
|
||||
}
|
||||
|
||||
// add menu orient et sous menu:
|
||||
wxMenu* orientmenu = new wxMenu;
|
||||
msg = AddHotkeyName( _( "Rotate +" ), s_Schematic_Hotkey_List, HK_ROTATE_COMPONENT );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_ROTATE_CMP_COUNTERCLOCKWISE,
|
||||
_( "Rotate + (R)" ), rotate_pos_xpm );
|
||||
msg, rotate_pos_xpm );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_ROTATE_CMP_CLOCKWISE, _( "Rotate -" ), rotate_neg_xpm );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_MIROR_X_CMP, _( "Mirror -- (X)" ), mirror_V_xpm );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_MIROR_Y_CMP, _( "Mirror || (Y)" ), mirror_H_xpm );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_ORIENT_NORMAL_CMP, _( "Normal (N)" ), normal_xpm );
|
||||
msg = AddHotkeyName( _( "Mirror --" ), s_Schematic_Hotkey_List, HK_MIRROR_X_COMPONENT );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_MIROR_X_CMP, msg, mirror_V_xpm );
|
||||
msg = AddHotkeyName( _( "Mirror ||" ), s_Schematic_Hotkey_List, HK_MIRROR_Y_COMPONENT );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_MIROR_Y_CMP, msg, mirror_H_xpm );
|
||||
msg = AddHotkeyName( _( "Normal" ), s_Schematic_Hotkey_List, HK_ORIENT_NORMAL_COMPONENT );
|
||||
ADD_MENUITEM( orientmenu, ID_POPUP_SCH_ORIENT_NORMAL_CMP, msg, normal_xpm );
|
||||
ADD_MENUITEM_WITH_SUBMENU( PopMenu, orientmenu,
|
||||
ID_POPUP_SCH_GENERIC_ORIENT_CMP, _(
|
||||
"Orient Component" ), orient_xpm );
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/********************************************/
|
||||
/* tool_lib.cpp: construction des toolbars */
|
||||
/********************************************/
|
||||
/********************************************/
|
||||
/* tool_lib.cpp: construction des toolbars */
|
||||
/********************************************/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
@ -11,6 +11,7 @@
|
|||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "hotkeys.h"
|
||||
|
||||
#define BITMAP wxBitmap
|
||||
|
||||
|
@ -34,243 +35,245 @@
|
|||
|
||||
|
||||
/****************************************************/
|
||||
void WinEDA_LibeditFrame::ReCreateVToolbar(void)
|
||||
void WinEDA_LibeditFrame::ReCreateVToolbar( void )
|
||||
/****************************************************/
|
||||
{
|
||||
if( m_VToolBar == NULL )
|
||||
{
|
||||
m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE);
|
||||
if( m_VToolBar == NULL )
|
||||
{
|
||||
m_VToolBar = new WinEDA_Toolbar( TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE );
|
||||
|
||||
// Set up toolbar
|
||||
m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString,
|
||||
BITMAP(cursor_xpm),
|
||||
_("deselect current tool"), wxITEM_CHECK );
|
||||
m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE);
|
||||
// Set up toolbar
|
||||
m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString,
|
||||
BITMAP( cursor_xpm ),
|
||||
_( "deselect current tool" ), wxITEM_CHECK );
|
||||
m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_PIN_BUTT, wxEmptyString,
|
||||
BITMAP(pin_xpm),
|
||||
_("Add Pins"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_PIN_BUTT, wxEmptyString,
|
||||
BITMAP( pin_xpm ),
|
||||
_( "Add Pins" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_BODY_TEXT_BUTT, wxEmptyString,
|
||||
BITMAP(add_text_xpm),
|
||||
_("Add graphic text"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_BODY_TEXT_BUTT, wxEmptyString,
|
||||
BITMAP( add_text_xpm ),
|
||||
_( "Add graphic text" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_BODY_RECT_BUTT, wxEmptyString,
|
||||
BITMAP(add_rectangle_xpm),
|
||||
_("Add rectangles"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_BODY_RECT_BUTT, wxEmptyString,
|
||||
BITMAP( add_rectangle_xpm ),
|
||||
_( "Add rectangles" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_BODY_CIRCLE_BUTT, wxEmptyString,
|
||||
BITMAP(add_circle_xpm),
|
||||
_("Add circles"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_BODY_CIRCLE_BUTT, wxEmptyString,
|
||||
BITMAP( add_circle_xpm ),
|
||||
_( "Add circles" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_BODY_ARC_BUTT, wxEmptyString,
|
||||
BITMAP(add_arc_xpm),
|
||||
_("Add arcs"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_BODY_ARC_BUTT, wxEmptyString,
|
||||
BITMAP( add_arc_xpm ),
|
||||
_( "Add arcs" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_BODY_LINE_BUTT, wxEmptyString,
|
||||
BITMAP(add_polygon_xpm),
|
||||
_( "Add lines and polygons"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_BODY_LINE_BUTT, wxEmptyString,
|
||||
BITMAP( add_polygon_xpm ),
|
||||
_( "Add lines and polygons" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP(anchor_xpm),
|
||||
_("Move part anchor"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_ANCHOR_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP( anchor_xpm ),
|
||||
_( "Move part anchor" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_IMPORT_BODY_BUTT, wxEmptyString,
|
||||
BITMAP(import_xpm),
|
||||
_("Import existing drawings"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_IMPORT_BODY_BUTT, wxEmptyString,
|
||||
BITMAP( import_xpm ),
|
||||
_( "Import existing drawings" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_EXPORT_BODY_BUTT, wxEmptyString,
|
||||
BITMAP(export_xpm),
|
||||
_("Export current drawing"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_EXPORT_BODY_BUTT, wxEmptyString,
|
||||
BITMAP( export_xpm ),
|
||||
_( "Export current drawing" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_LIBEDIT_DELETE_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP(delete_body_xpm),
|
||||
_("Delete items"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_LIBEDIT_DELETE_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP( delete_body_xpm ),
|
||||
_( "Delete items" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->Realize();
|
||||
}
|
||||
m_VToolBar->Realize();
|
||||
}
|
||||
|
||||
SetToolbars();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/*************************************************/
|
||||
void WinEDA_LibeditFrame::ReCreateHToolbar( void )
|
||||
/*************************************************/
|
||||
|
||||
/*************************************************/
|
||||
void WinEDA_LibeditFrame::ReCreateHToolbar(void)
|
||||
/*************************************************/
|
||||
/* Create or update the main Horizontal Toolbar for the schematic library editor
|
||||
*/
|
||||
{
|
||||
int ii;
|
||||
int ii;
|
||||
wxString msg;
|
||||
|
||||
// Create the toolbar if not exists
|
||||
if ( m_HToolBar == NULL )
|
||||
{
|
||||
m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE);
|
||||
SetToolBar(m_HToolBar);
|
||||
// Create the toolbar if not exists
|
||||
if( m_HToolBar == NULL )
|
||||
{
|
||||
m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE );
|
||||
SetToolBar( m_HToolBar );
|
||||
|
||||
// Set up toolbar
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_SAVE_CURRENT_LIB, wxEmptyString, BITMAP(save_library_xpm),
|
||||
_("Save current loaded library on disk (file update)") );
|
||||
// Set up toolbar
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_SAVE_CURRENT_LIB, wxEmptyString, BITMAP( save_library_xpm ),
|
||||
_( "Save current loaded library on disk (file update)" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString, BITMAP(library_xpm),
|
||||
_("Select working library") );
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString, BITMAP( library_xpm ),
|
||||
_( "Select working library" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_DELETE_PART, wxEmptyString, BITMAP(delete_xpm),
|
||||
_("Delete part in current library") );
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_DELETE_PART, wxEmptyString, BITMAP( delete_xpm ),
|
||||
_( "Delete part in current library" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_NEW_PART, wxEmptyString, BITMAP(new_component_xpm),
|
||||
_("New part") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_NEW_PART, wxEmptyString, BITMAP( new_component_xpm ),
|
||||
_( "New part" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_SELECT_PART, BITMAP(add_component_xpm),
|
||||
_("Select part to edit") );
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_SELECT_PART, BITMAP( add_component_xpm ),
|
||||
_( "Select part to edit" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_SAVE_CURRENT_PART, wxEmptyString,
|
||||
BITMAP(save_part_in_mem_xpm),
|
||||
_("Save current part into current loaded library (in memory)") );
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_SAVE_CURRENT_PART, wxEmptyString,
|
||||
BITMAP( save_part_in_mem_xpm ),
|
||||
_( "Save current part into current loaded library (in memory)" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_IMPORT_PART, wxEmptyString, BITMAP(import_xpm),
|
||||
_("import part"));
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_IMPORT_PART, wxEmptyString, BITMAP( import_xpm ),
|
||||
_( "import part" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_EXPORT_PART, wxEmptyString, BITMAP(export_xpm),
|
||||
_("export part"));
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_EXPORT_PART, wxEmptyString, BITMAP( export_xpm ),
|
||||
_( "export part" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART,
|
||||
wxEmptyString, BITMAP(new_library_xpm),
|
||||
_("Create a new library an save current part into"));
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART,
|
||||
wxEmptyString, BITMAP( new_library_xpm ),
|
||||
_( "Create a new library an save current part into" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_UNDO, wxEmptyString, BITMAP(undo_xpm),
|
||||
_("Undo last edition"));
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_REDO, wxEmptyString, BITMAP(redo_xpm),
|
||||
_("Redo the last undo command"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_UNDO, wxEmptyString, BITMAP( undo_xpm ),
|
||||
_( "Undo last edition" ) );
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_REDO, wxEmptyString, BITMAP( redo_xpm ),
|
||||
_( "Redo the last undo command" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_GET_FRAME_EDIT_PART, BITMAP(part_properties_xpm),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Edit Part Properties"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_GET_FRAME_EDIT_PART, BITMAP( part_properties_xpm ),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Edit Part Properties" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_CHECK_PART, BITMAP(erc_xpm),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Test duplicate pins"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_CHECK_PART, BITMAP( erc_xpm ),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Test duplicate pins" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, BITMAP(zoom_in_xpm),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("zoom + (F1)"));
|
||||
m_HToolBar->AddSeparator();
|
||||
msg = AddHotkeyName( _( "zoom +" ), s_LibEdit_Hotkey_List, HK_ZOOM_IN );
|
||||
m_HToolBar->AddTool( ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString,
|
||||
BITMAP(zoom_out_xpm),
|
||||
_("zoom - (F2)"));
|
||||
msg = AddHotkeyName( _( "zoom -" ), s_LibEdit_Hotkey_List, HK_ZOOM_OUT );
|
||||
m_HToolBar->AddTool( ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString,
|
||||
BITMAP(repaint_xpm),
|
||||
_("redraw (F3)"));
|
||||
msg = AddHotkeyName( _( "redraw" ), s_LibEdit_Hotkey_List, HK_ZOOM_REDRAW );
|
||||
m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( repaint_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString,
|
||||
BITMAP(zoom_optimal_xpm),
|
||||
_("auto zoom") );
|
||||
m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString,
|
||||
BITMAP( zoom_optimal_xpm ),
|
||||
_( "auto zoom" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString,
|
||||
BITMAP(morgan1_xpm),
|
||||
_("show as \"De Morgan\" normal part"), wxITEM_CHECK);
|
||||
m_HToolBar->ToggleTool(ID_DE_MORGAN_NORMAL_BUTT,
|
||||
(CurrentConvert <= 1) ? TRUE : FALSE);
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_DE_MORGAN_NORMAL_BUTT, wxEmptyString,
|
||||
BITMAP( morgan1_xpm ),
|
||||
_( "show as \"De Morgan\" normal part" ), wxITEM_CHECK );
|
||||
m_HToolBar->ToggleTool( ID_DE_MORGAN_NORMAL_BUTT,
|
||||
(CurrentConvert <= 1) ? TRUE : FALSE );
|
||||
|
||||
m_HToolBar->AddTool(ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString,
|
||||
BITMAP(morgan2_xpm),
|
||||
_("show as \"De Morgan\" convert part"), wxITEM_CHECK);
|
||||
m_HToolBar->ToggleTool(ID_DE_MORGAN_CONVERT_BUTT,
|
||||
(CurrentConvert >= 2) ? TRUE : FALSE );
|
||||
m_HToolBar->AddTool( ID_DE_MORGAN_CONVERT_BUTT, wxEmptyString,
|
||||
BITMAP( morgan2_xpm ),
|
||||
_( "show as \"De Morgan\" convert part" ), wxITEM_CHECK );
|
||||
m_HToolBar->ToggleTool( ID_DE_MORGAN_CONVERT_BUTT,
|
||||
(CurrentConvert >= 2) ? TRUE : FALSE );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_VIEW_DOC, BITMAP(datasheet_xpm),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Documents"));
|
||||
m_HToolBar->EnableTool(ID_LIBEDIT_VIEW_DOC, FALSE);
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_VIEW_DOC, BITMAP( datasheet_xpm ),
|
||||
wxNullBitmap,
|
||||
FALSE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Documents" ) );
|
||||
m_HToolBar->EnableTool( ID_LIBEDIT_VIEW_DOC, FALSE );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_SelpartBox = new WinEDAChoiceBox(m_HToolBar, ID_LIBEDIT_SELECT_PART_NUMBER,
|
||||
wxDefaultPosition, wxSize(LISTBOX_WIDTH, -1));
|
||||
m_HToolBar->AddControl(m_SelpartBox);
|
||||
m_HToolBar->AddSeparator();
|
||||
m_SelpartBox = new WinEDAChoiceBox( m_HToolBar, ID_LIBEDIT_SELECT_PART_NUMBER,
|
||||
wxDefaultPosition, wxSize( LISTBOX_WIDTH, -1 ) );
|
||||
m_HToolBar->AddControl( m_SelpartBox );
|
||||
|
||||
m_SelAliasBox = new WinEDAChoiceBox(m_HToolBar, ID_LIBEDIT_SELECT_ALIAS,
|
||||
wxDefaultPosition, wxSize(LISTBOX_WIDTH, -1));
|
||||
m_HToolBar->AddControl(m_SelAliasBox);
|
||||
m_SelAliasBox = new WinEDAChoiceBox( m_HToolBar, ID_LIBEDIT_SELECT_ALIAS,
|
||||
wxDefaultPosition, wxSize( LISTBOX_WIDTH, -1 ) );
|
||||
m_HToolBar->AddControl( m_SelAliasBox );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_EDIT_PIN_BY_PIN, BITMAP(pin2pin_xpm),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Edit pins part per part (Carefully use!)"));
|
||||
m_HToolBar->ToggleTool(ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn);
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, BITMAP( pin2pin_xpm ),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Edit pins part per part (Carefully use!)" ) );
|
||||
m_HToolBar->ToggleTool( ID_LIBEDIT_EDIT_PIN_BY_PIN, g_EditPinByPinIsOn );
|
||||
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect
|
||||
// the changes
|
||||
m_HToolBar->Realize();
|
||||
}
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect the changes
|
||||
m_HToolBar->Realize();
|
||||
}
|
||||
else /* Toolbar already created, it only must be updated */
|
||||
{
|
||||
m_SelAliasBox->Clear();
|
||||
m_SelpartBox->Clear();
|
||||
}
|
||||
|
||||
else /* Toolbar deja créé, mise a jour des affichages */
|
||||
{
|
||||
m_SelAliasBox->Clear();
|
||||
m_SelpartBox->Clear();
|
||||
}
|
||||
/* Update the part selection box */
|
||||
int jj = 1;
|
||||
if( CurrentLibEntry )
|
||||
jj = CurrentLibEntry->m_UnitCount;
|
||||
if( jj > 1 )
|
||||
for( ii = 0; ii < jj; ii++ )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf( _( "Part %c" ), 'A' + ii );
|
||||
m_SelpartBox->Append( msg );
|
||||
}
|
||||
|
||||
/* Update the part selection box */
|
||||
int jj = 1;
|
||||
if( CurrentLibEntry ) jj = CurrentLibEntry->m_UnitCount;
|
||||
if ( jj > 1 )
|
||||
for ( ii = 0; ii < jj ; ii ++ )
|
||||
{
|
||||
wxString msg;
|
||||
msg.Printf(_("Part %c"), 'A' + ii);
|
||||
m_SelpartBox->Append(msg);
|
||||
}
|
||||
else m_SelpartBox->Append( wxEmptyString );
|
||||
m_SelpartBox->SetSelection( ( CurrentUnit > 0 ) ? CurrentUnit-1 : 0);
|
||||
|
||||
if( CurrentLibEntry)
|
||||
{
|
||||
if ( CurrentLibEntry->m_UnitCount > 1 ) m_SelpartBox->Enable(TRUE);
|
||||
else m_SelpartBox->Enable(FALSE);
|
||||
m_SelAliasBox->Append(CurrentLibEntry->m_Name.m_Text);
|
||||
m_SelAliasBox->SetSelection( 0 );
|
||||
int count = CurrentLibEntry->m_AliasList.GetCount();
|
||||
if ( count > 0 ) /* Update the part selection box */
|
||||
{
|
||||
m_SelAliasBox->Enable(TRUE);
|
||||
for ( ii = 0, jj = 1; ii < count; ii += ALIAS_NEXT, jj++ )
|
||||
{
|
||||
m_SelAliasBox->Append(CurrentLibEntry->m_AliasList[ii]);
|
||||
if ( CurrentAliasName == CurrentLibEntry->m_AliasList[ii])
|
||||
m_SelAliasBox->SetSelection( jj );
|
||||
}
|
||||
}
|
||||
else m_SelAliasBox->Enable(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_SelAliasBox->Enable(FALSE);
|
||||
m_SelpartBox->Enable(FALSE);
|
||||
}
|
||||
else
|
||||
m_SelpartBox->Append( wxEmptyString );
|
||||
m_SelpartBox->SetSelection( ( CurrentUnit > 0 ) ? CurrentUnit - 1 : 0 );
|
||||
|
||||
// Doit etre placé apres Realize():
|
||||
SetToolbars();
|
||||
if( CurrentLibEntry )
|
||||
{
|
||||
if( CurrentLibEntry->m_UnitCount > 1 )
|
||||
m_SelpartBox->Enable( TRUE );
|
||||
else
|
||||
m_SelpartBox->Enable( FALSE );
|
||||
m_SelAliasBox->Append( CurrentLibEntry->m_Name.m_Text );
|
||||
m_SelAliasBox->SetSelection( 0 );
|
||||
int count = CurrentLibEntry->m_AliasList.GetCount();
|
||||
if( count > 0 ) /* Update the part selection box */
|
||||
{
|
||||
m_SelAliasBox->Enable( TRUE );
|
||||
for( ii = 0, jj = 1; ii < count; ii += ALIAS_NEXT, jj++ )
|
||||
{
|
||||
m_SelAliasBox->Append( CurrentLibEntry->m_AliasList[ii] );
|
||||
if( CurrentAliasName == CurrentLibEntry->m_AliasList[ii] )
|
||||
m_SelAliasBox->SetSelection( jj );
|
||||
}
|
||||
}
|
||||
else
|
||||
m_SelAliasBox->Enable( FALSE );
|
||||
}
|
||||
else
|
||||
{
|
||||
m_SelAliasBox->Enable( FALSE );
|
||||
m_SelpartBox->Enable( FALSE );
|
||||
}
|
||||
|
||||
// Must be called AFTER Realize():
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************/
|
||||
/* toolsch.cpp; vreate toolbars for schematic frame */
|
||||
/*****************************************************/
|
||||
/*****************************************************/
|
||||
/* toolsch.cpp; vreate toolbars for schematic frame */
|
||||
/*****************************************************/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
@ -11,10 +11,11 @@
|
|||
#include "general.h"
|
||||
|
||||
#include "protos.h"
|
||||
#include "hotkeys.h"
|
||||
|
||||
#define BITMAP wxBitmap
|
||||
|
||||
#include "bitmaps.h" /* general bitmaps */
|
||||
#include "bitmaps.h" /* general bitmaps */
|
||||
|
||||
/* Specific bitmaps */
|
||||
#include "cvpcb.xpm"
|
||||
|
@ -36,292 +37,300 @@
|
|||
|
||||
|
||||
/**************************************************************/
|
||||
void WinEDA_SchematicFrame::ReCreateHToolbar(void)
|
||||
void WinEDA_SchematicFrame::ReCreateHToolbar( void )
|
||||
/**************************************************************/
|
||||
/* Create Horizontal (main) Toolbar
|
||||
*/
|
||||
|
||||
/* Create the main Horizontal Toolbar for the schematic editor
|
||||
*/
|
||||
{
|
||||
if ( m_HToolBar != NULL ) return;
|
||||
if( m_HToolBar != NULL )
|
||||
return;
|
||||
|
||||
m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE);
|
||||
SetToolBar(m_HToolBar);
|
||||
wxString msg;
|
||||
m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE );
|
||||
SetToolBar( m_HToolBar );
|
||||
|
||||
// Set up toolbar
|
||||
m_HToolBar->AddTool(ID_NEW_PROJECT, wxEmptyString, BITMAP(new_xpm),
|
||||
_("New schematic project"));
|
||||
// Set up toolbar
|
||||
m_HToolBar->AddTool( ID_NEW_PROJECT, wxEmptyString, BITMAP( new_xpm ),
|
||||
_( "New schematic project" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LOAD_PROJECT, wxEmptyString, BITMAP(open_xpm),
|
||||
_("Open schematic project"));
|
||||
m_HToolBar->AddTool( ID_LOAD_PROJECT, wxEmptyString, BITMAP( open_xpm ),
|
||||
_( "Open schematic project" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_SAVE_PROJECT, wxEmptyString, BITMAP(save_project_xpm),
|
||||
_("Save schematic project"));
|
||||
m_HToolBar->AddTool( ID_SAVE_PROJECT, wxEmptyString, BITMAP( save_project_xpm ),
|
||||
_( "Save schematic project" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_SHEET_SET, wxEmptyString, BITMAP(sheetset_xpm),
|
||||
_("page settings (size, texts)") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_SHEET_SET, wxEmptyString, BITMAP( sheetset_xpm ),
|
||||
_( "page settings (size, texts)" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_TO_LIBRARY, wxEmptyString, BITMAP(libedit_xpm),
|
||||
_("go to library editor") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_TO_LIBRARY, wxEmptyString, BITMAP( libedit_xpm ),
|
||||
_( "go to library editor" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_TO_LIBVIEW, wxEmptyString, BITMAP(library_browse_xpm),
|
||||
_("go to library browse") );
|
||||
m_HToolBar->AddTool( ID_TO_LIBVIEW, wxEmptyString, BITMAP( library_browse_xpm ),
|
||||
_( "go to library browse" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_HIERARCHY, wxEmptyString, BITMAP(hierarchy_nav_xpm),
|
||||
_("Schematic Hierarchy Navigator") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_HIERARCHY, wxEmptyString, BITMAP( hierarchy_nav_xpm ),
|
||||
_( "Schematic Hierarchy Navigator" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddSeparator();
|
||||
|
||||
m_HToolBar->AddTool(wxID_CUT, wxEmptyString, BITMAP(cut_button),
|
||||
_("Cut selected item") );
|
||||
m_HToolBar->AddTool( wxID_CUT, wxEmptyString, BITMAP( cut_button ),
|
||||
_( "Cut selected item" ) );
|
||||
|
||||
m_HToolBar->AddTool(wxID_COPY, wxEmptyString, BITMAP(copy_button),
|
||||
_("Copy selected item") );
|
||||
m_HToolBar->AddTool( wxID_COPY, wxEmptyString, BITMAP( copy_button ),
|
||||
_( "Copy selected item" ) );
|
||||
|
||||
m_HToolBar->AddTool(wxID_PASTE, wxEmptyString, BITMAP(paste_xpm),
|
||||
_("Paste") );
|
||||
m_HToolBar->AddTool( wxID_PASTE, wxEmptyString, BITMAP( paste_xpm ),
|
||||
_( "Paste" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_SCHEMATIC_UNDO, wxEmptyString, BITMAP(undo_xpm),
|
||||
_("Undo last edition"));
|
||||
m_HToolBar->AddTool(ID_SCHEMATIC_REDO, wxEmptyString, BITMAP(redo_xpm),
|
||||
_("Redo the last undo command"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_SCHEMATIC_UNDO, wxEmptyString, BITMAP( undo_xpm ),
|
||||
_( "Undo last edition" ) );
|
||||
m_HToolBar->AddTool( ID_SCHEMATIC_REDO, wxEmptyString, BITMAP( redo_xpm ),
|
||||
_( "Redo the last undo command" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_GEN_PRINT, wxEmptyString, BITMAP(print_button),
|
||||
_("Print schematic") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, BITMAP( print_button ),
|
||||
_( "Print schematic" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_TO_CVPCB, wxEmptyString, BITMAP(cvpcb_xpm),
|
||||
_("Run Cvpcb") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_TO_CVPCB, wxEmptyString, BITMAP( cvpcb_xpm ),
|
||||
_( "Run Cvpcb" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_TO_PCB, wxEmptyString, BITMAP(pcbnew_xpm),
|
||||
_("Run Pcbnew") );
|
||||
m_HToolBar->AddTool( ID_TO_PCB, wxEmptyString, BITMAP( pcbnew_xpm ),
|
||||
_( "Run Pcbnew" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm),
|
||||
_("zoom + (F1)"));
|
||||
m_HToolBar->AddSeparator();
|
||||
msg = AddHotkeyName( _( "zoom +" ), s_Schematic_Hotkey_List, HK_ZOOM_IN );
|
||||
m_HToolBar->AddTool( ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP(zoom_out_xpm),
|
||||
_("zoom - (F2)"));
|
||||
msg = AddHotkeyName( _( "zoom -" ), s_Schematic_Hotkey_List, HK_ZOOM_OUT );
|
||||
m_HToolBar->AddTool( ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP(repaint_xpm),
|
||||
_("redraw (F3)") );
|
||||
msg = AddHotkeyName( _( "redraw" ), s_Schematic_Hotkey_List, HK_ZOOM_REDRAW );
|
||||
m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( repaint_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP(zoom_optimal_xpm),
|
||||
_("auto zoom") );
|
||||
m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP( zoom_optimal_xpm ),
|
||||
_( "auto zoom" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_FIND_ITEMS, wxEmptyString, BITMAP(find_xpm),
|
||||
_("Find components and texts") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, BITMAP( find_xpm ),
|
||||
_( "Find components and texts" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_GET_NETLIST, wxEmptyString, BITMAP(netlist_xpm),
|
||||
_("Netlist generation") );
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, BITMAP( netlist_xpm ),
|
||||
_( "Netlist generation" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_GET_ANNOTATE, wxEmptyString, BITMAP(annotate_xpm),
|
||||
_("Schematic Annotation") );
|
||||
m_HToolBar->AddTool( ID_GET_ANNOTATE, wxEmptyString, BITMAP( annotate_xpm ),
|
||||
_( "Schematic Annotation" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_GET_ERC, wxEmptyString, BITMAP(erc_xpm),
|
||||
_("Schematic Electric Rules Check") );
|
||||
m_HToolBar->AddTool( ID_GET_ERC, wxEmptyString, BITMAP( erc_xpm ),
|
||||
_( "Schematic Electric Rules Check" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_GET_TOOLS, wxEmptyString, BITMAP(tools_xpm),
|
||||
_("Bill of material and/or Crossreferences") );
|
||||
m_HToolBar->AddTool( ID_GET_TOOLS, wxEmptyString, BITMAP( tools_xpm ),
|
||||
_( "Bill of material and/or Crossreferences" ) );
|
||||
|
||||
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect
|
||||
// the changes
|
||||
m_HToolBar->Realize();
|
||||
SetToolbars();
|
||||
// after adding the tools to the toolbar, must call Realize() to reflect the changes
|
||||
m_HToolBar->Realize();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/*************************************************/
|
||||
void WinEDA_SchematicFrame::ReCreateVToolbar(void)
|
||||
void WinEDA_SchematicFrame::ReCreateVToolbar( void )
|
||||
/*************************************************/
|
||||
|
||||
/* Create Vertical Right Toolbar
|
||||
*/
|
||||
*/
|
||||
{
|
||||
if( m_VToolBar ) return;
|
||||
m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE);
|
||||
if( m_VToolBar )
|
||||
return;
|
||||
m_VToolBar = new WinEDA_Toolbar( TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE );
|
||||
|
||||
// Set up toolbar
|
||||
m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString,
|
||||
BITMAP(cursor_xpm), wxEmptyString, wxITEM_CHECK );
|
||||
m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE);
|
||||
// Set up toolbar
|
||||
m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString,
|
||||
BITMAP( cursor_xpm ), wxEmptyString, wxITEM_CHECK );
|
||||
m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE );
|
||||
|
||||
m_VToolBar->AddTool(ID_HIERARCHY_PUSH_POP_BUTT, wxEmptyString,
|
||||
BITMAP(hierarchy_cursor_xpm),
|
||||
_("Hierarchy Push/Pop"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_HIERARCHY_PUSH_POP_BUTT, wxEmptyString,
|
||||
BITMAP( hierarchy_cursor_xpm ),
|
||||
_( "Hierarchy Push/Pop" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_COMPONENT_BUTT, wxEmptyString,
|
||||
BITMAP(add_component_xpm),
|
||||
_("Add components"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_COMPONENT_BUTT, wxEmptyString,
|
||||
BITMAP( add_component_xpm ),
|
||||
_( "Add components" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_PLACE_POWER_BUTT, wxEmptyString,
|
||||
BITMAP(add_power_xpm),
|
||||
_("Add powers"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_PLACE_POWER_BUTT, wxEmptyString,
|
||||
BITMAP( add_power_xpm ),
|
||||
_( "Add powers" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_WIRE_BUTT, wxEmptyString,
|
||||
BITMAP(add_line_xpm),
|
||||
_("Add wires"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_WIRE_BUTT, wxEmptyString,
|
||||
BITMAP( add_line_xpm ),
|
||||
_( "Add wires" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_BUS_BUTT, wxEmptyString,
|
||||
BITMAP(add_bus_xpm),
|
||||
_("Add bus"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_BUS_BUTT, wxEmptyString,
|
||||
BITMAP( add_bus_xpm ),
|
||||
_( "Add bus" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_WIRETOBUS_ENTRY_BUTT, wxEmptyString,
|
||||
BITMAP(add_line2bus_xpm),
|
||||
_("Add wire to bus entry"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_WIRETOBUS_ENTRY_BUTT, wxEmptyString,
|
||||
BITMAP( add_line2bus_xpm ),
|
||||
_( "Add wire to bus entry" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_BUSTOBUS_ENTRY_BUTT, wxEmptyString,
|
||||
BITMAP(add_bus2bus_xpm),
|
||||
_("Add bus to bus entry"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_BUSTOBUS_ENTRY_BUTT, wxEmptyString,
|
||||
BITMAP( add_bus2bus_xpm ),
|
||||
_( "Add bus to bus entry" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_NOCONN_BUTT, wxEmptyString,
|
||||
BITMAP(noconn_button),
|
||||
_("Add no connect flag"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_NOCONN_BUTT, wxEmptyString,
|
||||
BITMAP( noconn_button ),
|
||||
_( "Add no connect flag" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_LABEL_BUTT, wxEmptyString,
|
||||
BITMAP(add_line_label_xpm),
|
||||
_("Add wire or bus label"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_LABEL_BUTT, wxEmptyString,
|
||||
BITMAP( add_line_label_xpm ),
|
||||
_( "Add wire or bus label" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_GLABEL_BUTT, wxEmptyString,
|
||||
BITMAP(add_glabel_xpm),
|
||||
_("Add global label"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_GLABEL_BUTT, wxEmptyString,
|
||||
BITMAP( add_glabel_xpm ),
|
||||
_( "Add global label" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_JUNCTION_BUTT, wxEmptyString,
|
||||
BITMAP(add_junction_xpm),
|
||||
_("Add junction"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_JUNCTION_BUTT, wxEmptyString,
|
||||
BITMAP( add_junction_xpm ),
|
||||
_( "Add junction" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_SHEET_SYMBOL_BUTT, wxEmptyString,
|
||||
BITMAP(add_hierar_symbol_xpm),
|
||||
_("Add hierarchical symbol (sheet)") , wxITEM_CHECK);
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_SHEET_SYMBOL_BUTT, wxEmptyString,
|
||||
BITMAP( add_hierar_symbol_xpm ),
|
||||
_( "Add hierarchical symbol (sheet)" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_IMPORT_GLABEL_BUTT, wxEmptyString,
|
||||
BITMAP(import_glabel_xpm),
|
||||
_("import glabel from sheet & create pinsheet"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_IMPORT_GLABEL_BUTT, wxEmptyString,
|
||||
BITMAP( import_glabel_xpm ),
|
||||
_( "import glabel from sheet & create pinsheet" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_SHEET_LABEL_BUTT, wxEmptyString,
|
||||
BITMAP(add_hierar_pin_xpm),
|
||||
_("Add hierachical pin to sheet"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_SHEET_LABEL_BUTT, wxEmptyString,
|
||||
BITMAP( add_hierar_pin_xpm ),
|
||||
_( "Add hierachical pin to sheet" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_LINE_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP(add_dashed_line_xpm),
|
||||
_("Add graphic line or polygon") , wxITEM_CHECK);
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_LINE_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP( add_dashed_line_xpm ),
|
||||
_( "Add graphic line or polygon" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP(add_text_xpm),
|
||||
_("Add graphic text (comment)"), wxITEM_CHECK );
|
||||
m_VToolBar->AddTool( ID_TEXT_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP( add_text_xpm ),
|
||||
_( "Add graphic text (comment)" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_SCHEMATIC_DELETE_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP(delete_body_xpm),
|
||||
_("Delete items"), wxITEM_CHECK );
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_SCHEMATIC_DELETE_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP( delete_body_xpm ),
|
||||
_( "Delete items" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->Realize();
|
||||
SetToolbars();
|
||||
m_VToolBar->Realize();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/****************************************************************/
|
||||
void WinEDA_SchematicFrame::ReCreateOptToolbar(void)
|
||||
void WinEDA_SchematicFrame::ReCreateOptToolbar( void )
|
||||
/****************************************************************/
|
||||
|
||||
/* Create Vertical Left Toolbar (Option Toolbar)
|
||||
*/
|
||||
*/
|
||||
{
|
||||
if( m_OptionsToolBar )
|
||||
return;
|
||||
|
||||
if ( m_OptionsToolBar ) return;
|
||||
// creation du tool bar options
|
||||
m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE );
|
||||
|
||||
// creation du tool bar options
|
||||
m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE);
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, wxEmptyString,
|
||||
BITMAP( grid_xpm ),
|
||||
_( "Display Grid OFF" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, wxEmptyString,
|
||||
BITMAP(grid_xpm),
|
||||
_("Display Grid OFF"), wxITEM_CHECK );
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
|
||||
BITMAP( unit_inch_xpm ),
|
||||
_( "Units = Inch" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
|
||||
BITMAP(unit_inch_xpm),
|
||||
_("Units = Inch"), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
|
||||
BITMAP(unit_mm_xpm),
|
||||
_("Units = mm"), wxITEM_CHECK );
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
|
||||
BITMAP( unit_mm_xpm ),
|
||||
_( "Units = mm" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString,
|
||||
BITMAP(cursor_shape_xpm),
|
||||
_("Change Cursor Shape"), wxITEM_CHECK );
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, wxEmptyString,
|
||||
BITMAP( cursor_shape_xpm ),
|
||||
_( "Change Cursor Shape" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddSeparator();
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_HIDDEN_PINS, wxEmptyString,
|
||||
BITMAP(hidden_pin_xpm),
|
||||
_("Show Hidden Pins"), wxITEM_CHECK );
|
||||
m_OptionsToolBar->AddSeparator();
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_HIDDEN_PINS, wxEmptyString,
|
||||
BITMAP( hidden_pin_xpm ),
|
||||
_( "Show Hidden Pins" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddSeparator();
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_BUS_WIRES_ORIENT, wxEmptyString,
|
||||
BITMAP(lines90_xpm),
|
||||
_("HV orientation for Wires and Bus"), wxITEM_CHECK );
|
||||
m_OptionsToolBar->AddSeparator();
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_BUS_WIRES_ORIENT, wxEmptyString,
|
||||
BITMAP( lines90_xpm ),
|
||||
_( "HV orientation for Wires and Bus" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->Realize();
|
||||
m_OptionsToolBar->Realize();
|
||||
|
||||
SetToolbars();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************************/
|
||||
void WinEDA_SchematicFrame::OnSelectOptionToolbar(wxCommandEvent& event)
|
||||
void WinEDA_SchematicFrame::OnSelectOptionToolbar( wxCommandEvent& event )
|
||||
/*******************************************************************************************/
|
||||
{
|
||||
if ( DrawPanel == NULL ) return;
|
||||
if( DrawPanel == NULL )
|
||||
return;
|
||||
|
||||
int id = event.GetId();
|
||||
wxClientDC dc(DrawPanel);
|
||||
int id = event.GetId();
|
||||
wxClientDC dc( DrawPanel );
|
||||
|
||||
DrawPanel->PrepareGraphicContext(&dc);
|
||||
switch ( id )
|
||||
{
|
||||
case ID_TB_OPTIONS_SHOW_GRID:
|
||||
g_ShowGrid = m_Draw_Grid = m_OptionsToolBar->GetToolState(id);
|
||||
ReDrawPanel();
|
||||
break;
|
||||
DrawPanel->PrepareGraphicContext( &dc );
|
||||
|
||||
case ID_TB_OPTIONS_SELECT_UNIT_MM:
|
||||
g_UnitMetric = MILLIMETRE;
|
||||
Affiche_Status_Box(); /* Reaffichage des coord curseur */
|
||||
break;
|
||||
switch( id )
|
||||
{
|
||||
case ID_TB_OPTIONS_SHOW_GRID:
|
||||
g_ShowGrid = m_Draw_Grid = m_OptionsToolBar->GetToolState( id );
|
||||
ReDrawPanel();
|
||||
break;
|
||||
|
||||
case ID_TB_OPTIONS_SELECT_UNIT_INCH:
|
||||
g_UnitMetric = INCHES;
|
||||
Affiche_Status_Box(); /* Reaffichage des coord curseur */
|
||||
break;
|
||||
case ID_TB_OPTIONS_SELECT_UNIT_MM:
|
||||
g_UnitMetric = MILLIMETRE;
|
||||
Affiche_Status_Box(); /* Reaffichage des coord curseur */
|
||||
break;
|
||||
|
||||
case ID_TB_OPTIONS_SELECT_CURSOR:
|
||||
DrawPanel->CursorOff(&dc);
|
||||
g_CursorShape = m_OptionsToolBar->GetToolState(id);
|
||||
DrawPanel->CursorOn(&dc);
|
||||
break;
|
||||
case ID_TB_OPTIONS_SELECT_UNIT_INCH:
|
||||
g_UnitMetric = INCHES;
|
||||
Affiche_Status_Box(); /* Reaffichage des coord curseur */
|
||||
break;
|
||||
|
||||
case ID_TB_OPTIONS_HIDDEN_PINS:
|
||||
g_ShowAllPins = m_OptionsToolBar->GetToolState(id);
|
||||
DrawPanel->ReDraw(&dc, TRUE);
|
||||
break;
|
||||
case ID_TB_OPTIONS_SELECT_CURSOR:
|
||||
DrawPanel->CursorOff( &dc );
|
||||
g_CursorShape = m_OptionsToolBar->GetToolState( id );
|
||||
DrawPanel->CursorOn( &dc );
|
||||
break;
|
||||
|
||||
case ID_TB_OPTIONS_BUS_WIRES_ORIENT:
|
||||
g_HVLines = m_OptionsToolBar->GetToolState(id);
|
||||
break;
|
||||
case ID_TB_OPTIONS_HIDDEN_PINS:
|
||||
g_ShowAllPins = m_OptionsToolBar->GetToolState( id );
|
||||
DrawPanel->ReDraw( &dc, TRUE );
|
||||
break;
|
||||
|
||||
default:
|
||||
DisplayError(this, wxT("OnSelectOptionToolbar() error") );
|
||||
break;
|
||||
}
|
||||
case ID_TB_OPTIONS_BUS_WIRES_ORIENT:
|
||||
g_HVLines = m_OptionsToolBar->GetToolState( id );
|
||||
break;
|
||||
|
||||
SetToolbars();
|
||||
default:
|
||||
DisplayError( this, wxT( "OnSelectOptionToolbar() error" ) );
|
||||
break;
|
||||
}
|
||||
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
COMMON_GLOBL wxString g_BuildVersion
|
||||
#ifdef EDA_BASE
|
||||
(wxT("(2007-08-21)"))
|
||||
(wxT("(2007-08-30)"))
|
||||
#endif
|
||||
;
|
||||
|
||||
|
|
|
@ -1,43 +1,44 @@
|
|||
/*******************/
|
||||
/* hotkeys_basic.h */
|
||||
/*******************/
|
||||
/*******************/
|
||||
/* hotkeys_basic.h */
|
||||
/*******************/
|
||||
|
||||
/* Some functions to handle hotkeys in kicad
|
||||
*/
|
||||
*/
|
||||
|
||||
#ifndef HOTKEYS_BASIC_H
|
||||
#define HOTKEYS_BASIC_H
|
||||
|
||||
#define DEFAULT_HOTKEY_FILENAME_EXT wxT(".key")
|
||||
#define DEFAULT_HOTKEY_FILENAME_EXT wxT( ".key" )
|
||||
|
||||
/* define default path for config key file */
|
||||
#ifdef __WINDOWS__
|
||||
#define DEFAULT_HOTKEY_FILENAME_PATH EDA_Appl->m_BinDir + wxT("../template/")
|
||||
#define DEFAULT_HOTKEY_FILENAME_PATH EDA_Appl->m_BinDir + wxT( "../template/" )
|
||||
#else
|
||||
#define DEFAULT_HOTKEY_FILENAME_PATH wxGetHomeDir() + wxT("/")
|
||||
#define DEFAULT_HOTKEY_FILENAME_PATH wxGetHomeDir() + wxT( "/" )
|
||||
#endif
|
||||
|
||||
|
||||
/* Class to handle hotkey commnands. hotkeys have a default value
|
||||
This class allows (for the future..) the real key code changed by user(from a key code list file, TODO)
|
||||
*/
|
||||
* This class allows (for the future..) the real key code changed by user(from a key code list file, TODO)
|
||||
*/
|
||||
class Ki_HotkeyInfo
|
||||
{
|
||||
public:
|
||||
int m_KeyCode; // Key code (ascii value for ascii keys or wxWidgets code for function key
|
||||
wxString m_InfoMsg; // info message.
|
||||
int m_Idcommand; // internal id for the corresponding command (see hotkey_id_commnand list)
|
||||
int m_KeyCode; // Key code (ascii value for ascii keys or wxWidgets code for function key
|
||||
wxString m_InfoMsg; // info message.
|
||||
int m_Idcommand; // internal id for the corresponding command (see hotkey_id_commnand list)
|
||||
|
||||
public:
|
||||
Ki_HotkeyInfo(const wxChar * infomsg, int idcommand, int keycode);
|
||||
Ki_HotkeyInfo( const wxChar* infomsg, int idcommand, int keycode );
|
||||
};
|
||||
|
||||
/* Functions:
|
||||
*/
|
||||
wxString ReturnKeyNameFromKeyCode(int keycode);
|
||||
void DisplayHotkeyList(WinEDA_DrawFrame * frame, Ki_HotkeyInfo ** List);
|
||||
int GetCommandCodeFromHotkey(int key, Ki_HotkeyInfo ** List);
|
||||
*/
|
||||
wxString ReturnKeyNameFromKeyCode( int keycode );
|
||||
wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId );
|
||||
wxString AddHotkeyName( const wxString& text, Ki_HotkeyInfo** List, int CommandId );
|
||||
void DisplayHotkeyList( WinEDA_DrawFrame* frame, Ki_HotkeyInfo** List );
|
||||
int GetCommandCodeFromHotkey( int key, Ki_HotkeyInfo** List );
|
||||
|
||||
|
||||
#endif // HOTKEYS_BASIC_H
|
||||
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -25,16 +25,16 @@
|
|||
/* classe D_PAD : constructeur */
|
||||
/*******************************/
|
||||
|
||||
D_PAD::D_PAD( MODULE* parent ) :
|
||||
D_PAD::D_PAD( MODULE* parent ) :
|
||||
BOARD_ITEM( parent, TYPEPAD )
|
||||
{
|
||||
m_NumPadName = 0;
|
||||
m_Masque_Layer = CUIVRE_LAYER;
|
||||
m_NetCode = 0; /* Numero de net pour comparaisons rapides */
|
||||
m_DrillShape = CIRCLE; // Drill shape = circle
|
||||
|
||||
m_NumPadName = 0;
|
||||
m_Masque_Layer = CUIVRE_LAYER;
|
||||
m_NetCode = 0; /* Numero de net pour comparaisons rapides */
|
||||
m_DrillShape = CIRCLE; // Drill shape = circle
|
||||
|
||||
m_Size.x = m_Size.y = 500;
|
||||
|
||||
|
||||
if( m_Parent && (m_Parent->m_StructType == TYPEMODULE) )
|
||||
{
|
||||
m_Pos = ( (MODULE*) m_Parent )->m_Pos;
|
||||
|
@ -73,7 +73,6 @@ void D_PAD::ComputeRayon( void )
|
|||
break;
|
||||
|
||||
case RECT:
|
||||
case SPECIAL_PAD:
|
||||
case TRAPEZE:
|
||||
m_Rayon = (int) (sqrt( (float) m_Size.y * m_Size.y
|
||||
+ (float) m_Size.x * m_Size.x ) / 2);
|
||||
|
@ -90,16 +89,16 @@ const wxPoint D_PAD::ReturnShapePos( void )
|
|||
{
|
||||
if( (m_Offset.x == 0) && (m_Offset.y == 0) )
|
||||
return m_Pos;
|
||||
|
||||
|
||||
wxPoint shape_pos;
|
||||
int dX, dY;
|
||||
|
||||
dX = m_Offset.x;
|
||||
|
||||
dX = m_Offset.x;
|
||||
dY = m_Offset.y;
|
||||
|
||||
|
||||
RotatePoint( &dX, &dY, m_Orient );
|
||||
|
||||
shape_pos.x = m_Pos.x + dX;
|
||||
|
||||
shape_pos.x = m_Pos.x + dX;
|
||||
shape_pos.y = m_Pos.y + dY;
|
||||
|
||||
return shape_pos;
|
||||
|
@ -410,7 +409,6 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
|
|||
break;
|
||||
|
||||
case RECT:
|
||||
case SPECIAL_PAD:
|
||||
case TRAPEZE:
|
||||
{
|
||||
int ddx, ddy;
|
||||
|
@ -464,7 +462,7 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
|
|||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
|
||||
default:
|
||||
break;
|
||||
|
@ -486,7 +484,7 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
|
|||
switch( m_DrillShape )
|
||||
{
|
||||
case CIRCLE:
|
||||
if( (hole / zoom) > 1 ) /* draw hole if its size is enought */
|
||||
if( (hole / zoom) > 1 ) /* draw hole if its size is enought */
|
||||
GRFilledCircle( &panel->m_ClipBox, DC, cx0, cy0, hole, 0, color, color );
|
||||
break;
|
||||
|
||||
|
@ -517,7 +515,7 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
|
|||
}
|
||||
|
||||
GRSetDrawMode( DC, draw_mode );
|
||||
|
||||
|
||||
/* Trace du symbole "No connect" ( / ou \ ou croix en X) si necessaire : */
|
||||
if( m_Netname.IsEmpty() && DisplayOpt.DisplayPadNoConn )
|
||||
{
|
||||
|
@ -531,26 +529,26 @@ void D_PAD::Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int
|
|||
GRLine( &panel->m_ClipBox, DC, cx0 + dx0, cy0 - dx0,
|
||||
cx0 - dx0, cy0 + dx0, 0, nc_color );
|
||||
}
|
||||
|
||||
|
||||
/* Trace de la reference */
|
||||
if( !frame->m_DisplayPadNum )
|
||||
return;
|
||||
|
||||
|
||||
dx = MIN( m_Size.x, m_Size.y ); /* dx = text size */
|
||||
if( (dx / zoom) > 12 ) /* size must be enought to draw 2 chars */
|
||||
{
|
||||
wxString buffer;
|
||||
|
||||
|
||||
ReturnStringPadName( buffer );
|
||||
dy = buffer.Len();
|
||||
|
||||
|
||||
/* Draw text with an angle between -90 deg and + 90 deg */
|
||||
NORMALIZE_ANGLE_90( angle );
|
||||
if( dy < 2 )
|
||||
dy = 2; /* text min size is 2 char */
|
||||
|
||||
|
||||
dx = (dx * 9 ) / (dy * 13 ); /* Text size ajusted to pad size */
|
||||
|
||||
|
||||
DrawGraphicText( panel, DC, wxPoint( ux0, uy0 ),
|
||||
WHITE, buffer, angle, wxSize( dx, dx ),
|
||||
GR_TEXT_HJUSTIFY_CENTER, GR_TEXT_VJUSTIFY_CENTER );
|
||||
|
@ -795,7 +793,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
MODULE* Module;
|
||||
wxString Line;
|
||||
int pos = 1;
|
||||
|
||||
|
||||
/* Pad messages */
|
||||
static const wxString Msg_Pad_Shape[6] =
|
||||
{ wxT( "??? " ), wxT( "Circ" ), wxT( "Rect" ), wxT( "Oval" ), wxT( "trap" ), wxT( "spec" ) };
|
||||
|
@ -805,7 +803,7 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
wxT( "??? " ), wxT( "cmp " ), wxT( "cu " ), wxT( "cmp+cu " ), wxT( "int " ),
|
||||
wxT( "cmp+int " ), wxT( "cu+int " ), wxT( "all " ), wxT( "No copp" )
|
||||
};
|
||||
|
||||
|
||||
static const wxString Msg_Pad_Attribut[5] =
|
||||
{ wxT( "norm" ), wxT( "smd " ), wxT( "conn" ), wxT( "hole" ), wxT( "????" ) };
|
||||
|
||||
|
@ -910,16 +908,12 @@ void D_PAD::Display_Infos( WinEDA_DrawFrame* frame )
|
|||
|
||||
pos += 6;
|
||||
Affiche_1_Parametre( frame, pos, Msg_Pad_Shape[m_PadShape], wxEmptyString, DARKGREEN );
|
||||
/* Affichage en couleur diff si pad stack ou non */
|
||||
|
||||
if( m_Attribut & PAD_STACK )
|
||||
Affiche_1_Parametre( frame, -1, wxEmptyString, Msg_Pad_Attribut[m_Attribut & 15], RED );
|
||||
else
|
||||
Affiche_1_Parametre( frame,
|
||||
-1,
|
||||
wxEmptyString,
|
||||
Msg_Pad_Attribut[m_Attribut & 15],
|
||||
DARKGREEN );
|
||||
Affiche_1_Parametre( frame,
|
||||
-1,
|
||||
wxEmptyString,
|
||||
Msg_Pad_Attribut[m_Attribut & 15],
|
||||
DARKGREEN );
|
||||
|
||||
valeur_param( m_Size.x, Line );
|
||||
pos += 6;
|
||||
|
@ -978,12 +972,12 @@ bool D_PAD::HitTest( const wxPoint& ref_pos )
|
|||
|
||||
wxPoint shape_pos = ReturnShapePos();
|
||||
|
||||
deltaX = ref_pos.x - shape_pos.x;
|
||||
deltaX = ref_pos.x - shape_pos.x;
|
||||
deltaY = ref_pos.y - shape_pos.y;
|
||||
|
||||
/* Test rapide: le point a tester doit etre a l'interieur du cercle exinscrit ... */
|
||||
if( (abs( deltaX ) > m_Rayon )
|
||||
|| (abs( deltaY ) > m_Rayon) )
|
||||
|| (abs( deltaY ) > m_Rayon) )
|
||||
return false;
|
||||
|
||||
/* calcul des demi dim dx et dy */
|
||||
|
@ -1006,35 +1000,38 @@ bool D_PAD::HitTest( const wxPoint& ref_pos )
|
|||
return true;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
#if defined(DEBUG)
|
||||
#if defined (DEBUG)
|
||||
|
||||
/**
|
||||
* Function Show
|
||||
* is used to output the object tree, currently for debugging only.
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* of nesting of this object within the overall tree.
|
||||
* @param os The ostream& to output to.
|
||||
*/
|
||||
void D_PAD::Show( int nestLevel, std::ostream& os )
|
||||
{
|
||||
char padname[5] = { m_Padname[0], m_Padname[1], m_Padname[2], m_Padname[3], 0 };
|
||||
|
||||
|
||||
char layerMask[16];
|
||||
|
||||
sprintf( layerMask, "0x%08X", m_Masque_Layer );
|
||||
|
||||
|
||||
// for now, make it look like XML:
|
||||
NestedSpace( nestLevel, os ) << '<' << GetClass().Lower().mb_str() <<
|
||||
" num=\"" << padname << '"' <<
|
||||
" net=\"" << m_Netname.mb_str() << '"' <<
|
||||
" layerMask=\"" << layerMask << '"' << m_Pos << "/>\n";
|
||||
|
||||
" num=\"" << padname << '"' <<
|
||||
" net=\"" << m_Netname.mb_str() << '"' <<
|
||||
" layerMask=\"" << layerMask << '"' << m_Pos << "/>\n";
|
||||
|
||||
// NestedSpace( nestLevel+1, os ) << m_Text.mb_str() << '\n';
|
||||
|
||||
|
||||
// NestedSpace( nestLevel, os ) << "</" << GetClass().Lower().mb_str() << ">\n";
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
|
|
@ -4,20 +4,19 @@
|
|||
|
||||
class Pcb3D_GLCanvas;
|
||||
|
||||
/* forme des pastilles : (parametre .forme) */
|
||||
/* Pad shape id : ( .m_PadShape member) */
|
||||
#define CIRCLE 1
|
||||
#define RECT 2
|
||||
#define OVALE 3
|
||||
#define TRAPEZE 4 // trapeze: traversante ou surfacique
|
||||
#define SPECIAL_PAD 5 // description libre
|
||||
#define TRAPEZE 4 // trapezoid
|
||||
|
||||
/* Attributs des PADS */
|
||||
#define STANDARD 0 // pad classique
|
||||
#define SMD 1 // surfacique, generation d'un masque d'empatement
|
||||
#define CONN 2 // surfacique, peut etre dore
|
||||
/* PADS attributes */
|
||||
#define STANDARD 0 // Usual pad
|
||||
#define SMD 1 // Smd pad, appears on the layer paste (default)
|
||||
#define CONN 2 // Like smd, does not appear on the layer paste (default)
|
||||
// reserved, but not yet really used:
|
||||
#define P_HOLE 3 // trou simple, utile sur pad stack
|
||||
#define MECA 4 // PAD "mecanique" (fixation, zone cuivre...)
|
||||
#define PAD_STACK 0x80 // bit 7 de .attrib (flag)
|
||||
|
||||
/* Definition type Structure d'un pad */
|
||||
class D_PAD : public BOARD_ITEM
|
||||
|
@ -26,41 +25,41 @@ public:
|
|||
union
|
||||
{
|
||||
unsigned long m_NumPadName;
|
||||
char m_Padname[4]; /* nom (numero) de la pastille (assimilable a un long)*/
|
||||
char m_Padname[4]; /* Pad name (4 char) or a long identifier
|
||||
* (used in pad name comparisons because this is faster than string comparison)
|
||||
*/
|
||||
};
|
||||
|
||||
wxString m_Netname; /* Net Name */
|
||||
|
||||
int m_Masque_Layer; // (Bit a Bit :1= cuivre, 15= cmp,
|
||||
// 2..14 = interne
|
||||
// 16 .. 31 = couches non cuivre
|
||||
|
||||
int m_PadShape; // forme CERCLE, RECT, OVALE, TRAPEZE ou libre
|
||||
int m_DrillShape; // forme CERCLE, OVAL
|
||||
|
||||
wxPoint m_Pos; // Position de reference du pad
|
||||
|
||||
wxSize m_Drill; // Drill diam (drill shape = CIRCLE) or drill size(shape = OVAL)
|
||||
// for drill shape = CIRCLE, drill diam = m_Drill.x
|
||||
|
||||
wxSize m_Offset; // Offset de la forme (pastilles excentrees)
|
||||
wxSize m_Size; // Dimensions X et Y ( si orient 0 x = axe X
|
||||
// y = axe Y
|
||||
|
||||
wxSize m_DeltaSize; // delta sur formes rectangle -> trapezes
|
||||
|
||||
wxPoint m_Pos0; // Coord relatives a l'ancre du pad en orientation 0
|
||||
|
||||
int m_Rayon; // rayon du cercle exinscrit du pad
|
||||
int m_Attribut; // NORMAL, SMD, CONN, Bit 7 = STACK
|
||||
int m_Orient; // en 1/10 degres
|
||||
|
||||
int m_NetCode; /* Numero de net pour comparaisons rapides */
|
||||
int m_logical_connexion; // variable utilisee lors du calcul du chevelu:
|
||||
// contient de numero de block pour une connexion type ratsnet
|
||||
|
||||
int m_physical_connexion; // variable utilisee lors du calcul de la connexit<69>
|
||||
// contient de numero de block pour une connexion type piste
|
||||
wxString m_Netname; /* Net Name */
|
||||
|
||||
int m_Masque_Layer; // Bitwise layer :1= copper layer, 15= cmp,
|
||||
// 2..14 = internal layers
|
||||
// 16 .. 31 = technical layers
|
||||
|
||||
int m_PadShape; // Shape: CIRCLE, RECT, OVAL, TRAPEZOID
|
||||
int m_DrillShape; // Shape CIRCLE, OVAL
|
||||
|
||||
wxPoint m_Pos; // pad Position on board
|
||||
wxSize m_Drill; // Drill diam (drill shape = CIRCLE) or drill size(shape = OVAL)
|
||||
// for drill shape = CIRCLE, drill diam = m_Drill.x
|
||||
|
||||
wxSize m_Offset; // Offset de la forme (pastilles excentrees)
|
||||
wxSize m_Size; // X and Y size ( relative to orient 0)
|
||||
|
||||
wxSize m_DeltaSize; // delta sur formes rectangle -> trapezes
|
||||
|
||||
wxPoint m_Pos0; // Initial Pad position (i.e. pas position relative to the module anchor, orientation 0
|
||||
|
||||
int m_Rayon; // rayon du cercle exinscrit du pad
|
||||
int m_Attribut; // NORMAL, SMD, CONN
|
||||
int m_Orient; // in 1/10 degrees
|
||||
|
||||
int m_NetCode; // Net number for fast comparisons
|
||||
int m_logical_connexion; // variable used in rastnest computations
|
||||
// handle block number in ratsnet connection
|
||||
|
||||
int m_physical_connexion; // variable used in rastnest computations
|
||||
// handle block number in track connection
|
||||
|
||||
public:
|
||||
D_PAD( MODULE* parent );
|
||||
|
@ -69,9 +68,9 @@ public:
|
|||
|
||||
void Copy( D_PAD* source );
|
||||
|
||||
D_PAD* Next( void ) { return (D_PAD*) Pnext; }
|
||||
D_PAD* Next( void ) { return (D_PAD*) Pnext; }
|
||||
|
||||
/* supprime du chainage la structure Struct */
|
||||
/* remove from linked list */
|
||||
void UnLink( void );
|
||||
|
||||
/* Reading and writing data on files */
|
||||
|
@ -82,11 +81,11 @@ public:
|
|||
void Draw( WinEDA_DrawPanel* panel, wxDC* DC, const wxPoint& offset, int draw_mode );
|
||||
void Draw3D( Pcb3D_GLCanvas* glcanvas );
|
||||
|
||||
// autres
|
||||
// others
|
||||
void SetPadName( const wxString& name ); // Change pad name
|
||||
wxString ReturnStringPadName( void ); // Return pad name as string in a wxString
|
||||
void ReturnStringPadName( wxString& text ); // Return pad name as string in a buffer
|
||||
void ComputeRayon( void ); // met a jour m_Rayon, rayon du cercle exinscrit
|
||||
void ComputeRayon( void ); // compute m_Rayon, rayon du cercle exinscrit
|
||||
const wxPoint ReturnShapePos( void ); // retourne la position
|
||||
|
||||
/**
|
||||
|
@ -95,9 +94,9 @@ public:
|
|||
* about this object into the frame's message panel.
|
||||
* Is virtual from EDA_BaseStruct.
|
||||
* @param frame A WinEDA_BasePcbFrame in which to print status information.
|
||||
*/
|
||||
*/
|
||||
void Display_Infos( WinEDA_DrawFrame* frame );
|
||||
|
||||
|
||||
/**
|
||||
* Function HitTest
|
||||
* tests if the given wxPoint is within the bounds of this object.
|
||||
|
@ -105,8 +104,9 @@ public:
|
|||
* @return bool - true if a hit, else false
|
||||
*/
|
||||
bool HitTest( const wxPoint& refPos );
|
||||
|
||||
#if defined(DEBUG)
|
||||
|
||||
#if defined (DEBUG)
|
||||
|
||||
/**
|
||||
* Function GetClass
|
||||
* returns the class name.
|
||||
|
@ -117,16 +117,17 @@ public:
|
|||
return wxT( "PAD" );
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Function Show
|
||||
* is used to output the object tree, currently for debugging only.
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* @param nestLevel An aid to prettier tree indenting, and is the level
|
||||
* of nesting of this object within the overall tree.
|
||||
* @param os The ostream& to output to.
|
||||
*/
|
||||
virtual void Show( int nestLevel, std::ostream& os );
|
||||
|
||||
#endif
|
||||
|
||||
};
|
||||
|
||||
typedef class D_PAD * LISTE_PAD;
|
||||
|
|
|
@ -215,51 +215,6 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
|
|||
|
||||
switch( g_KeyPressed )
|
||||
{
|
||||
case WXK_NUMPAD_SUBTRACT:
|
||||
case WXK_SUBTRACT:
|
||||
case '-':
|
||||
ll = GetScreen()->m_Active_Layer;
|
||||
if( ll > CMP_N )
|
||||
break;
|
||||
if( ll <= CUIVRE_N )
|
||||
break;
|
||||
if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) // Single layer
|
||||
ll = CUIVRE_N;
|
||||
if( ll == CMP_N )
|
||||
ll = MAX( CUIVRE_N, m_Pcb->m_BoardSettings->m_CopperLayerCount - 2 );
|
||||
else if( ll > CUIVRE_N )
|
||||
ll--;
|
||||
GetScreen()->m_Active_Layer = ll;
|
||||
if( DisplayOpt.ContrastModeDisplay )
|
||||
DrawPanel->Refresh( TRUE );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD_ADD:
|
||||
case WXK_ADD:
|
||||
case '+':
|
||||
ll = GetScreen()->m_Active_Layer;
|
||||
if( ll >= CMP_N )
|
||||
break;
|
||||
ll++;
|
||||
if( ll >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1 )
|
||||
ll = CMP_N;
|
||||
if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) // Single layer
|
||||
ll = CUIVRE_N;
|
||||
GetScreen()->m_Active_Layer = ll;
|
||||
if( DisplayOpt.ContrastModeDisplay )
|
||||
DrawPanel->Refresh( TRUE );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD0:
|
||||
case WXK_PAGEUP:
|
||||
SwitchLayer( DC, CMP_N );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD9:
|
||||
case WXK_PAGEDOWN:
|
||||
SwitchLayer( DC, CUIVRE_N );
|
||||
break;
|
||||
|
||||
case EDA_PANNING_UP_KEY:
|
||||
OnZoom( ID_ZOOM_PANNING_UP );
|
||||
curpos = m_CurrentScreen->m_Curseur;
|
||||
|
@ -281,51 +236,20 @@ void WinEDA_BasePcbFrame::GeneralControle( wxDC* DC, wxPoint Mouse )
|
|||
break;
|
||||
|
||||
case EDA_ZOOM_IN_FROM_MOUSE:
|
||||
case WXK_F1:
|
||||
OnZoom( ID_ZOOM_PLUS_KEY );
|
||||
oldpos = curpos = GetScreen()->m_Curseur;
|
||||
break;
|
||||
|
||||
case EDA_ZOOM_OUT_FROM_MOUSE:
|
||||
case WXK_F2:
|
||||
OnZoom( ID_ZOOM_MOINS_KEY );
|
||||
oldpos = curpos = GetScreen()->m_Curseur;
|
||||
break;
|
||||
|
||||
case WXK_F3:
|
||||
OnZoom( ID_ZOOM_REDRAW_KEY );
|
||||
break;
|
||||
|
||||
case EDA_ZOOM_CENTER_FROM_MOUSE:
|
||||
case WXK_F4:
|
||||
OnZoom( ID_ZOOM_CENTER_KEY );
|
||||
oldpos = curpos = GetScreen()->m_Curseur;
|
||||
break;
|
||||
|
||||
case WXK_F5:
|
||||
SwitchLayer( DC, LAYER_N_2 );
|
||||
break;
|
||||
|
||||
case WXK_F6:
|
||||
SwitchLayer( DC, LAYER_N_3 );
|
||||
break;
|
||||
|
||||
case WXK_F7:
|
||||
SwitchLayer( DC, LAYER_N_4 );
|
||||
break;
|
||||
|
||||
case WXK_F8:
|
||||
SwitchLayer( DC, LAYER_N_5 );
|
||||
break;
|
||||
|
||||
case WXK_F9:
|
||||
SwitchLayer( DC, LAYER_N_6 );
|
||||
break;
|
||||
|
||||
case WXK_F10:
|
||||
SwitchLayer( DC, LAYER_N_7 );
|
||||
break;
|
||||
|
||||
case WXK_NUMPAD8: /* Deplacement curseur vers le haut */
|
||||
case WXK_UP:
|
||||
Mouse.y -= delta.y;
|
||||
|
|
|
@ -123,7 +123,7 @@ bool WinEDA_PadPropertiesFrame::Create( wxWindow* parent, wxWindowID id, const w
|
|||
////@end WinEDA_PadPropertiesFrame member initialisation
|
||||
|
||||
////@begin WinEDA_PadPropertiesFrame creation
|
||||
SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
|
||||
SetExtraStyle(wxWS_EX_BLOCK_EVENTS);
|
||||
wxDialog::Create( parent, id, caption, pos, size, style );
|
||||
|
||||
CreateControls();
|
||||
|
@ -144,7 +144,7 @@ void WinEDA_PadPropertiesFrame::CreateControls()
|
|||
{
|
||||
SetFont(*g_DialogFont);
|
||||
////@begin WinEDA_PadPropertiesFrame content construction
|
||||
// Generated by DialogBlocks, 03/08/2006 10:35:29 (unregistered)
|
||||
// Generated by DialogBlocks, 27/08/2007 21:03:59 (unregistered)
|
||||
|
||||
WinEDA_PadPropertiesFrame* itemDialog1 = this;
|
||||
|
||||
|
@ -172,46 +172,42 @@ void WinEDA_PadPropertiesFrame::CreateControls()
|
|||
m_DrillShapeBoxSizer = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(m_DrillShapeBoxSizer, 0, wxGROW|wxTOP, 5);
|
||||
|
||||
wxString m_DrillShapeCtrlStrings[] = {
|
||||
_("Circle"),
|
||||
_("Oval")
|
||||
};
|
||||
m_DrillShapeCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_DRILL_SHAPE, _("Drill Shape:"), wxDefaultPosition, wxDefaultSize, 2, m_DrillShapeCtrlStrings, 1, wxRA_SPECIFY_COLS );
|
||||
wxArrayString m_DrillShapeCtrlStrings;
|
||||
m_DrillShapeCtrlStrings.Add(_("Circle"));
|
||||
m_DrillShapeCtrlStrings.Add(_("Oval"));
|
||||
m_DrillShapeCtrl = new wxRadioBox( itemDialog1, ID_RADIOBOX_DRILL_SHAPE, _("Drill Shape:"), wxDefaultPosition, wxDefaultSize, m_DrillShapeCtrlStrings, 1, wxRA_SPECIFY_COLS );
|
||||
m_DrillShapeCtrl->SetSelection(0);
|
||||
m_DrillShapeBoxSizer->Add(m_DrillShapeCtrl, 0, wxGROW|wxALL, 5);
|
||||
|
||||
m_PadOptSizer = new wxBoxSizer(wxVERTICAL);
|
||||
itemBoxSizer2->Add(m_PadOptSizer, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxString m_PadOrientStrings[] = {
|
||||
_("0"),
|
||||
_("90"),
|
||||
_("-90"),
|
||||
_("180"),
|
||||
_("User")
|
||||
};
|
||||
m_PadOrient = new wxRadioBox( itemDialog1, ID_LISTBOX_ORIENT_PAD, _("Pad Orient:"), wxDefaultPosition, wxDefaultSize, 5, m_PadOrientStrings, 1, wxRA_SPECIFY_COLS );
|
||||
wxArrayString m_PadOrientStrings;
|
||||
m_PadOrientStrings.Add(_("0"));
|
||||
m_PadOrientStrings.Add(_("90"));
|
||||
m_PadOrientStrings.Add(_("-90"));
|
||||
m_PadOrientStrings.Add(_("180"));
|
||||
m_PadOrientStrings.Add(_("User"));
|
||||
m_PadOrient = new wxRadioBox( itemDialog1, ID_LISTBOX_ORIENT_PAD, _("Pad Orient:"), wxDefaultPosition, wxDefaultSize, m_PadOrientStrings, 1, wxRA_SPECIFY_COLS );
|
||||
m_PadOrient->SetSelection(0);
|
||||
m_PadOptSizer->Add(m_PadOrient, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxString m_PadShapeStrings[] = {
|
||||
_("Circle"),
|
||||
_("Oval"),
|
||||
_("Rect"),
|
||||
_("Trapezoidal")
|
||||
};
|
||||
m_PadShape = new wxRadioBox( itemDialog1, ID_LISTBOX_SHAPE_PAD, _("Pad Shape:"), wxDefaultPosition, wxDefaultSize, 4, m_PadShapeStrings, 1, wxRA_SPECIFY_COLS );
|
||||
wxArrayString m_PadShapeStrings;
|
||||
m_PadShapeStrings.Add(_("Circle"));
|
||||
m_PadShapeStrings.Add(_("Oval"));
|
||||
m_PadShapeStrings.Add(_("Rect"));
|
||||
m_PadShapeStrings.Add(_("Trapezoidal"));
|
||||
m_PadShape = new wxRadioBox( itemDialog1, ID_LISTBOX_SHAPE_PAD, _("Pad Shape:"), wxDefaultPosition, wxDefaultSize, m_PadShapeStrings, 1, wxRA_SPECIFY_COLS );
|
||||
m_PadShape->SetSelection(0);
|
||||
m_PadOptSizer->Add(m_PadShape, 0, wxGROW|wxALL, 5);
|
||||
|
||||
wxString m_PadTypeStrings[] = {
|
||||
_("Standard"),
|
||||
_("SMD"),
|
||||
_("Conn"),
|
||||
_("Hole"),
|
||||
_("Mechanical")
|
||||
};
|
||||
m_PadType = new wxRadioBox( itemDialog1, ID_LISTBOX_TYPE_PAD, _("Pad Type:"), wxDefaultPosition, wxDefaultSize, 5, m_PadTypeStrings, 1, wxRA_SPECIFY_COLS );
|
||||
wxArrayString m_PadTypeStrings;
|
||||
m_PadTypeStrings.Add(_("Standard"));
|
||||
m_PadTypeStrings.Add(_("SMD"));
|
||||
m_PadTypeStrings.Add(_("Conn"));
|
||||
m_PadTypeStrings.Add(_("Hole"));
|
||||
m_PadTypeStrings.Add(_("Mechanical"));
|
||||
m_PadType = new wxRadioBox( itemDialog1, ID_LISTBOX_TYPE_PAD, _("Pad Type:"), wxDefaultPosition, wxDefaultSize, m_PadTypeStrings, 1, wxRA_SPECIFY_COLS );
|
||||
m_PadType->SetSelection(0);
|
||||
m_PadOptSizer->Add(m_PadType, 0, wxGROW|wxALL, 5);
|
||||
|
||||
|
@ -228,61 +224,61 @@ void WinEDA_PadPropertiesFrame::CreateControls()
|
|||
|
||||
wxStaticBox* itemStaticBoxSizer18Static = new wxStaticBox(itemDialog1, wxID_ANY, _("Layers:"));
|
||||
wxStaticBoxSizer* itemStaticBoxSizer18 = new wxStaticBoxSizer(itemStaticBoxSizer18Static, wxVERTICAL);
|
||||
itemBoxSizer15->Add(itemStaticBoxSizer18, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
itemBoxSizer15->Add(itemStaticBoxSizer18, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerCu = new wxCheckBox( itemDialog1, ID_CHECKBOX, _("Copper layer"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerCu->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerCu, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerCu, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
|
||||
|
||||
m_PadLayerCmp = new wxCheckBox( itemDialog1, ID_CHECKBOX1, _("Comp layer"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerCmp->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerCmp, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerCmp, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
||||
|
||||
itemStaticBoxSizer18->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
|
||||
|
||||
m_PadLayerAdhCmp = new wxCheckBox( itemDialog1, ID_CHECKBOX2, _("Adhesive Cmp"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerAdhCmp->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerAdhCmp, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerAdhCmp, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
|
||||
|
||||
m_PadLayerAdhCu = new wxCheckBox( itemDialog1, ID_CHECKBOX3, _("Adhesive Copper"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerAdhCu->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerAdhCu, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerAdhCu, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerPateCmp = new wxCheckBox( itemDialog1, ID_CHECKBOX4, _("Solder paste Cmp"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerPateCmp->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerPateCmp, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerPateCmp, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerPateCu = new wxCheckBox( itemDialog1, ID_CHECKBOX5, _("Solder paste Copper"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerPateCu->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerPateCu, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerPateCu, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerSilkCmp = new wxCheckBox( itemDialog1, ID_CHECKBOX6, _("Silkscreen Cmp"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerSilkCmp->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerSilkCmp, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerSilkCmp, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerSilkCu = new wxCheckBox( itemDialog1, ID_CHECKBOX7, _("Silkscreen Copper"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerSilkCu->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerSilkCu, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerSilkCu, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerMaskCmp = new wxCheckBox( itemDialog1, ID_CHECKBOX8, _("Solder mask Cmp"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerMaskCmp->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerMaskCmp, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerMaskCmp, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerMaskCu = new wxCheckBox( itemDialog1, ID_CHECKBOX9, _("Solder mask Copper"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerMaskCu->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerMaskCu, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerMaskCu, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerECO1 = new wxCheckBox( itemDialog1, ID_CHECKBOX10, _("E.C.O.1 layer"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerECO1->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerECO1, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerECO1, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerECO2 = new wxCheckBox( itemDialog1, ID_CHECKBOX11, _("E.C.O.2 layer"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerECO2->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerECO2, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerECO2, 0, wxGROW|wxLEFT|wxRIGHT, 5);
|
||||
|
||||
m_PadLayerDraft = new wxCheckBox( itemDialog1, ID_CHECKBOX12, _("Draft layer"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );
|
||||
m_PadLayerDraft->SetValue(false);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerDraft, 0, wxGROW|wxALL, 5);
|
||||
itemStaticBoxSizer18->Add(m_PadLayerDraft, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 5);
|
||||
|
||||
////@end WinEDA_PadPropertiesFrame content construction
|
||||
|
||||
|
@ -381,11 +377,6 @@ void WinEDA_PadPropertiesFrame::OnListboxShapePadSelected( wxCommandEvent& event
|
|||
m_PadDeltaSizeCtrl->Enable(TRUE, TRUE);
|
||||
m_PadSizeCtrl->Enable(TRUE, TRUE);
|
||||
break;
|
||||
|
||||
case 4: //SPECIAL_PAD:
|
||||
m_PadDeltaSizeCtrl->Enable(FALSE, FALSE);
|
||||
m_PadSizeCtrl->Enable(TRUE, TRUE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -39,12 +39,6 @@ class wxBoxSizer;
|
|||
|
||||
////@begin control identifiers
|
||||
#define ID_DIALOG 10000
|
||||
// #define SYMBOL_WINEDA_PADPROPERTIESFRAME_STYLE wxCAPTION|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_TITLE _("Pad properties")
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_IDNAME ID_DIALOG
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_POSITION wxDefaultPosition
|
||||
#define ID_TEXTCTRL_PADNUM 10001
|
||||
#define ID_TEXTCTRL_NETNAME 10002
|
||||
#define ID_RADIOBOX_DRILL_SHAPE 10019
|
||||
|
@ -64,6 +58,11 @@ class wxBoxSizer;
|
|||
#define ID_CHECKBOX10 10016
|
||||
#define ID_CHECKBOX11 10017
|
||||
#define ID_CHECKBOX12 10018
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_TITLE _("Pad properties")
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_IDNAME ID_DIALOG
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_SIZE wxSize(400, 300)
|
||||
#define SYMBOL_WINEDA_PADPROPERTIESFRAME_POSITION wxDefaultPosition
|
||||
////@end control identifiers
|
||||
|
||||
/*!
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<?xml version="1.0" encoding="windows-1252"?>
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<anthemion-project version="1.0.0.0" xmlns="http://www.anthemion.co.uk">
|
||||
<header>
|
||||
<long name="name_counter">0</long>
|
||||
|
@ -6,7 +6,6 @@
|
|||
<string name="title">""</string>
|
||||
<string name="author">""</string>
|
||||
<string name="description">""</string>
|
||||
<long name="doc_count">39</long>
|
||||
<string name="xrc_filename">""</string>
|
||||
<bool name="convert_images_to_xpm">0</bool>
|
||||
<bool name="inline_images">0</bool>
|
||||
|
@ -18,6 +17,7 @@
|
|||
<string name="copyright_string">"License GNU"</string>
|
||||
<string name="resource_prefix">""</string>
|
||||
<bool name="use_two_step_construction">0</bool>
|
||||
<bool name="use_enums">0</bool>
|
||||
<string name="current_platform">"<All platforms>"</string>
|
||||
<string name="target_wx_version">"<Any>"</string>
|
||||
<string name="cpp_header_comment">"/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -43,12 +43,6 @@
|
|||
// Licence:
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
"</string>
|
||||
<string name="cpp_function_comment">"
|
||||
/*!
|
||||
* %BODY%
|
||||
*/
|
||||
|
||||
"</string>
|
||||
<string name="cpp_symbols_file_comment">"/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: %SYMBOLS-FILENAME%
|
||||
|
@ -82,6 +76,14 @@
|
|||
#include "wx/wx.h"
|
||||
#endif
|
||||
|
||||
"</string>
|
||||
<string name="cpp_function_declaration_comment">" /// %BODY%
|
||||
"</string>
|
||||
<string name="cpp_function_implementation_comment">"
|
||||
/*!
|
||||
* %BODY%
|
||||
*/
|
||||
|
||||
"</string>
|
||||
<string name="resource_file_header">"app_resources.h"</string>
|
||||
<string name="resource_file_implementation">"app_resources.cpp"</string>
|
||||
|
@ -93,17 +95,20 @@
|
|||
<string name="external_symbol_filenames">""</string>
|
||||
<string name="configuration">"<None>"</string>
|
||||
<string name="source_encoding">"<System>"</string>
|
||||
<string name="xrc_encoding">"utf-8"</string>
|
||||
<string name="project_encoding">"<System>"</string>
|
||||
<string name="resource_archive">""</string>
|
||||
<long name="text_file_type">0</long>
|
||||
<bool name="use_tabs">0</bool>
|
||||
<long name="indent_size">4</long>
|
||||
<string name="whitespace_after_return_type">" "</string>
|
||||
<string name="resource_xrc_cpp">""</string>
|
||||
<bool name="use_resource_archive">0</bool>
|
||||
<bool name="use_generated_xrc_cpp">0</bool>
|
||||
<bool name="always_generate_xrc">1</bool>
|
||||
<bool name="archive_xrc_files">1</bool>
|
||||
<bool name="archive_image_files">1</bool>
|
||||
<bool name="archive_all_image_files">0</bool>
|
||||
<bool name="xrc_retain_relative_paths">1</bool>
|
||||
</header>
|
||||
<data>
|
||||
|
@ -181,7 +186,7 @@
|
|||
<long name="is-transient">1</long>
|
||||
<long name="owns-file">1</long>
|
||||
<long name="title-mode">0</long>
|
||||
<long name="locked">0</long>
|
||||
<long name="locked">1</long>
|
||||
<document>
|
||||
<string name="title">"Windows"</string>
|
||||
<string name="type">"html-document"</string>
|
||||
|
@ -205,6 +210,8 @@
|
|||
<long name="base-id">10000</long>
|
||||
<bool name="use-id-prefix">0</bool>
|
||||
<string name="id-prefix">""</string>
|
||||
<bool name="use-id-suffix">0</bool>
|
||||
<string name="id-suffix">""</string>
|
||||
<long name="use-xrc">0</long>
|
||||
<string name="proxy-Id name">"ID_DIALOG"</string>
|
||||
<long name="proxy-Id value">10000</long>
|
||||
|
@ -258,6 +265,7 @@
|
|||
<long name="proxy-Y">-1</long>
|
||||
<long name="proxy-Width">400</long>
|
||||
<long name="proxy-Height">300</long>
|
||||
<bool name="proxy-AUI manager">0</bool>
|
||||
<string name="proxy-Event sources">""</string>
|
||||
<document>
|
||||
<string name="title">"wxBoxSizer H"</string>
|
||||
|
@ -314,6 +322,11 @@
|
|||
<string name="proxy-Id name">"wxID_STATIC"</string>
|
||||
<long name="proxy-Id value">5105</long>
|
||||
<string name="proxy-Class">"wxStaticText"</string>
|
||||
<string name="proxy-Base class">"wxStaticText"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">""</string>
|
||||
<string name="proxy-Label">"Pad Num :"</string>
|
||||
<long name="proxy-Wrapping width">-1</long>
|
||||
|
@ -373,6 +386,11 @@
|
|||
<string name="proxy-Id name">"ID_TEXTCTRL_PADNUM"</string>
|
||||
<long name="proxy-Id value">10001</long>
|
||||
<string name="proxy-Class">"wxTextCtrl"</string>
|
||||
<string name="proxy-Base class">"wxTextCtrl"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadNumCtrl"</string>
|
||||
<string name="proxy-Initial value">""</string>
|
||||
<long name="proxy-Max length">0</long>
|
||||
|
@ -399,7 +417,7 @@
|
|||
<bool name="proxy-wxTE_CENTRE">0</bool>
|
||||
<bool name="proxy-wxTE_RIGHT">0</bool>
|
||||
<bool name="proxy-wxHSCROLL">0</bool>
|
||||
<bool name="proxy-wxTE_LINEWRAP">0</bool>
|
||||
<bool name="proxy-wxTE_CHARWRAP">0</bool>
|
||||
<bool name="proxy-wxTE_WORDWRAP">0</bool>
|
||||
<bool name="proxy-wxNO_BORDER">0</bool>
|
||||
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
|
||||
|
@ -428,6 +446,7 @@
|
|||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
<string name="proxy-Custom arguments">""</string>
|
||||
<string name="proxy-Custom ctor arguments">""</string>
|
||||
<bool name="proxy-wxTE_LINEWRAP">0</bool>
|
||||
</document>
|
||||
<document>
|
||||
<string name="title">"wxStaticText: wxID_STATIC"</string>
|
||||
|
@ -443,6 +462,11 @@
|
|||
<string name="proxy-Id name">"wxID_STATIC"</string>
|
||||
<long name="proxy-Id value">5105</long>
|
||||
<string name="proxy-Class">"wxStaticText"</string>
|
||||
<string name="proxy-Base class">"wxStaticText"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">""</string>
|
||||
<string name="proxy-Label">"Pad Net Name :"</string>
|
||||
<long name="proxy-Wrapping width">-1</long>
|
||||
|
@ -502,6 +526,11 @@
|
|||
<string name="proxy-Id name">"ID_TEXTCTRL_NETNAME"</string>
|
||||
<long name="proxy-Id value">10002</long>
|
||||
<string name="proxy-Class">"wxTextCtrl"</string>
|
||||
<string name="proxy-Base class">"wxTextCtrl"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadNetNameCtrl"</string>
|
||||
<string name="proxy-Initial value">""</string>
|
||||
<long name="proxy-Max length">0</long>
|
||||
|
@ -528,7 +557,7 @@
|
|||
<bool name="proxy-wxTE_CENTRE">0</bool>
|
||||
<bool name="proxy-wxTE_RIGHT">0</bool>
|
||||
<bool name="proxy-wxHSCROLL">0</bool>
|
||||
<bool name="proxy-wxTE_LINEWRAP">0</bool>
|
||||
<bool name="proxy-wxTE_CHARWRAP">0</bool>
|
||||
<bool name="proxy-wxTE_WORDWRAP">0</bool>
|
||||
<bool name="proxy-wxNO_BORDER">0</bool>
|
||||
<bool name="proxy-wxSIMPLE_BORDER">0</bool>
|
||||
|
@ -557,6 +586,7 @@
|
|||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
<string name="proxy-Custom arguments">""</string>
|
||||
<string name="proxy-Custom ctor arguments">""</string>
|
||||
<bool name="proxy-wxTE_LINEWRAP">0</bool>
|
||||
</document>
|
||||
<document>
|
||||
<string name="title">"wxBoxSizer V"</string>
|
||||
|
@ -625,6 +655,11 @@
|
|||
<string name="proxy-Id name">"ID_RADIOBOX_DRILL_SHAPE"</string>
|
||||
<long name="proxy-Id value">10019</long>
|
||||
<string name="proxy-Class">"wxRadioBox"</string>
|
||||
<string name="proxy-Base class">"wxRadioBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_DrillShapeCtrl"</string>
|
||||
<string name="proxy-Label">"Drill Shape:"</string>
|
||||
<long name="proxy-Major dimension count">1</long>
|
||||
|
@ -705,6 +740,11 @@
|
|||
<string name="proxy-Id name">"ID_LISTBOX_ORIENT_PAD"</string>
|
||||
<long name="proxy-Id value">10003</long>
|
||||
<string name="proxy-Class">"wxRadioBox"</string>
|
||||
<string name="proxy-Base class">"wxRadioBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadOrient"</string>
|
||||
<string name="proxy-Label">"Pad Orient:"</string>
|
||||
<long name="proxy-Major dimension count">1</long>
|
||||
|
@ -759,6 +799,11 @@
|
|||
<string name="proxy-Id name">"ID_LISTBOX_SHAPE_PAD"</string>
|
||||
<long name="proxy-Id value">10004</long>
|
||||
<string name="proxy-Class">"wxRadioBox"</string>
|
||||
<string name="proxy-Base class">"wxRadioBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadShape"</string>
|
||||
<string name="proxy-Label">"Pad Shape:"</string>
|
||||
<long name="proxy-Major dimension count">1</long>
|
||||
|
@ -813,6 +858,11 @@
|
|||
<string name="proxy-Id name">"ID_LISTBOX_TYPE_PAD"</string>
|
||||
<long name="proxy-Id value">10005</long>
|
||||
<string name="proxy-Class">"wxRadioBox"</string>
|
||||
<string name="proxy-Base class">"wxRadioBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadType"</string>
|
||||
<string name="proxy-Label">"Pad Type:"</string>
|
||||
<long name="proxy-Major dimension count">1</long>
|
||||
|
@ -893,6 +943,11 @@
|
|||
<string name="proxy-Id name">"wxID_OK"</string>
|
||||
<long name="proxy-Id value">5100</long>
|
||||
<string name="proxy-Class">"wxButton"</string>
|
||||
<string name="proxy-Base class">"wxButton"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">""</string>
|
||||
<string name="proxy-Label">"&OK"</string>
|
||||
<bool name="proxy-Default">0</bool>
|
||||
|
@ -947,6 +1002,11 @@
|
|||
<string name="proxy-Id name">"wxID_CANCEL"</string>
|
||||
<long name="proxy-Id value">5101</long>
|
||||
<string name="proxy-Class">"wxButton"</string>
|
||||
<string name="proxy-Base class">"wxButton"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">""</string>
|
||||
<string name="proxy-Label">"&Cancel"</string>
|
||||
<bool name="proxy-Default">0</bool>
|
||||
|
@ -1000,21 +1060,22 @@
|
|||
<string name="proxy-Id name">"wxID_ANY"</string>
|
||||
<string name="proxy-Id value">"-1"</string>
|
||||
<string name="proxy-Label">"Layers:"</string>
|
||||
<string name="proxy-Member variable name">""</string>
|
||||
<string name="proxy-Sizer member variable name">""</string>
|
||||
<string name="proxy-Foreground colour">""</string>
|
||||
<string name="proxy-Font">""</string>
|
||||
<bool name="proxy-Hidden">0</bool>
|
||||
<bool name="proxy-Enabled">1</bool>
|
||||
<string name="proxy-Static box class">"wxStaticBox"</string>
|
||||
<string name="proxy-Orientation">"Vertical"</string>
|
||||
<string name="proxy-Member variable name">""</string>
|
||||
<string name="proxy-AlignH">"Centre"</string>
|
||||
<string name="proxy-AlignV">"Centre"</string>
|
||||
<long name="proxy-Stretch factor">0</long>
|
||||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1033,6 +1094,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX"</string>
|
||||
<long name="proxy-Id value">10006</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerCu"</string>
|
||||
<string name="proxy-Label">"Copper layer"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1065,7 +1131,7 @@
|
|||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1086,6 +1152,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX1"</string>
|
||||
<long name="proxy-Id value">10007</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerCmp"</string>
|
||||
<string name="proxy-Label">"Comp layer"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1117,7 +1188,7 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
|
@ -1165,6 +1236,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX2"</string>
|
||||
<long name="proxy-Id value">10008</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerAdhCmp"</string>
|
||||
<string name="proxy-Label">"Adhesive Cmp"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1197,7 +1273,7 @@
|
|||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1218,6 +1294,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX3"</string>
|
||||
<long name="proxy-Id value">10009</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerAdhCu"</string>
|
||||
<string name="proxy-Label">"Adhesive Copper"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1249,8 +1330,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1271,6 +1352,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX4"</string>
|
||||
<long name="proxy-Id value">10010</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerPateCmp"</string>
|
||||
<string name="proxy-Label">"Solder paste Cmp"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1302,8 +1388,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1324,6 +1410,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX5"</string>
|
||||
<long name="proxy-Id value">10011</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerPateCu"</string>
|
||||
<string name="proxy-Label">"Solder paste Copper"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1355,8 +1446,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1377,6 +1468,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX6"</string>
|
||||
<long name="proxy-Id value">10012</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerSilkCmp"</string>
|
||||
<string name="proxy-Label">"Silkscreen Cmp"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1408,8 +1504,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1430,6 +1526,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX7"</string>
|
||||
<long name="proxy-Id value">10013</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerSilkCu"</string>
|
||||
<string name="proxy-Label">"Silkscreen Copper"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1461,8 +1562,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1483,6 +1584,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX8"</string>
|
||||
<long name="proxy-Id value">10014</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerMaskCmp"</string>
|
||||
<string name="proxy-Label">"Solder mask Cmp"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1514,8 +1620,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1536,6 +1642,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX9"</string>
|
||||
<long name="proxy-Id value">10015</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerMaskCu"</string>
|
||||
<string name="proxy-Label">"Solder mask Copper"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1567,8 +1678,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1589,6 +1700,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX10"</string>
|
||||
<long name="proxy-Id value">10016</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerECO1"</string>
|
||||
<string name="proxy-Label">"E.C.O.1 layer"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1620,8 +1736,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1642,6 +1758,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX11"</string>
|
||||
<long name="proxy-Id value">10017</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerECO2"</string>
|
||||
<string name="proxy-Label">"E.C.O.2 layer"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1673,8 +1794,8 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">0</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
|
||||
|
@ -1695,6 +1816,11 @@
|
|||
<string name="proxy-Id name">"ID_CHECKBOX12"</string>
|
||||
<long name="proxy-Id value">10018</long>
|
||||
<string name="proxy-Class">"wxCheckBox"</string>
|
||||
<string name="proxy-Base class">"wxCheckBox"</string>
|
||||
<bool name="proxy-External implementation">1</bool>
|
||||
<bool name="proxy-Separate files">0</bool>
|
||||
<string name="proxy-Implementation filename">""</string>
|
||||
<string name="proxy-Header filename">""</string>
|
||||
<string name="proxy-Member variable name">"m_PadLayerDraft"</string>
|
||||
<string name="proxy-Label">"Draft layer"</string>
|
||||
<bool name="proxy-Initial value">0</bool>
|
||||
|
@ -1726,7 +1852,7 @@
|
|||
<long name="proxy-Border">5</long>
|
||||
<bool name="proxy-wxLEFT">1</bool>
|
||||
<bool name="proxy-wxRIGHT">1</bool>
|
||||
<bool name="proxy-wxTOP">1</bool>
|
||||
<bool name="proxy-wxTOP">0</bool>
|
||||
<bool name="proxy-wxBOTTOM">1</bool>
|
||||
<bool name="proxy-wxSHAPED">0</bool>
|
||||
<bool name="proxy-wxADJUST_MINSIZE">0</bool>
|
||||
|
|
|
@ -160,12 +160,6 @@ int tmp;
|
|||
m_PadSizeCtrl->Enable(TRUE, TRUE);
|
||||
m_PadShape->SetSelection(3);
|
||||
break;
|
||||
|
||||
case SPECIAL_PAD:
|
||||
m_PadDeltaSizeCtrl->Enable(FALSE, FALSE);
|
||||
m_PadSizeCtrl->Enable(TRUE, TRUE);
|
||||
m_PadShape->SetSelection(4);
|
||||
break;
|
||||
}
|
||||
|
||||
// Selection du type
|
||||
|
@ -416,9 +410,6 @@ bool error = FALSE;
|
|||
|
||||
case TRAPEZE:
|
||||
break;
|
||||
|
||||
case SPECIAL_PAD:
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( CurrentPad->m_Attribut )
|
||||
|
|
|
@ -174,9 +174,8 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
|
|||
else
|
||||
GetScreen()->m_FileName = FullFileName;
|
||||
|
||||
/////////////////////////
|
||||
/* Lecture Fichier PCB */
|
||||
/////////////////////////
|
||||
/* Start read PCB file
|
||||
*/
|
||||
|
||||
source = wxFopen( GetScreen()->m_FileName, wxT( "rt" ) );
|
||||
if( source == NULL )
|
||||
|
@ -187,7 +186,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
|
|||
}
|
||||
|
||||
|
||||
/* Lecture de l'entete et TEST si PCB format ASCII */
|
||||
/* Read header and TEST if it is a PCB file format */
|
||||
GetLine( source, cbuf, &ii );
|
||||
if( strncmp( cbuf, "PCBNEW-BOARD", 12 ) != 0 )
|
||||
{
|
||||
|
@ -199,7 +198,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
|
|||
SetTitle( GetScreen()->m_FileName );
|
||||
SetLastProject( GetScreen()->m_FileName );
|
||||
|
||||
// Rechargement de la configuration:
|
||||
// Reload the corresponding configuration file:
|
||||
wxSetWorkingDirectory( wxPathOnly( GetScreen()->m_FileName ) );
|
||||
if( Append )
|
||||
ReadPcbFile( DC, source, TRUE );
|
||||
|
@ -207,7 +206,7 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
|
|||
{
|
||||
Read_Config( GetScreen()->m_FileName );
|
||||
|
||||
// Mise a jour du toolbar d'options
|
||||
// Update the option toolbar
|
||||
m_DisplayPcbTrackFill = DisplayOpt.DisplayPcbTrackFill;
|
||||
m_DisplayModText = DisplayOpt.DisplayModText;
|
||||
m_DisplayModEdge = DisplayOpt.DisplayModEdge;
|
||||
|
@ -227,11 +226,12 @@ int WinEDA_PcbFrame::LoadOnePcbFile( const wxString& FullFileName, wxDC* DC, boo
|
|||
wxGetCwd().GetData(), DIR_SEP, PcbExtBuffer.GetData() );
|
||||
}
|
||||
|
||||
/* liste des pads recalculee avec Affichage des messages d'erreur */
|
||||
/* Rebuild the new pad list (for drc and ratsnet control ...) */
|
||||
build_liste_pads();
|
||||
|
||||
m_Pcb->Display_Infos( this );
|
||||
|
||||
/* reset the auto save timer */
|
||||
g_SaveTime = time( NULL );
|
||||
|
||||
|
||||
|
|
|
@ -9,78 +9,110 @@
|
|||
#include "common.h"
|
||||
#include "pcbnew.h"
|
||||
#include "id.h"
|
||||
#include "hotkeys_basic.h"
|
||||
#include "hotkeys.h"
|
||||
|
||||
#include "protos.h"
|
||||
|
||||
/* Routines locales */
|
||||
|
||||
enum hotkey_id_commnand {
|
||||
HK_NOT_FOUND = 0,
|
||||
HK_RESET_LOCAL_COORD,
|
||||
HK_HELP,
|
||||
HK_ZOOM_IN,
|
||||
HK_ZOOM_OUT,
|
||||
HK_ZOOM_REDRAW,
|
||||
HK_ZOOM_CENTER,
|
||||
HK_DELETE,
|
||||
HK_BACK_SPACE,
|
||||
HK_ROTATE_FOOTPRINT,
|
||||
HK_MOVE_FOOTPRINT,
|
||||
HK_DRAG_FOOTPRINT,
|
||||
HK_FLIP_FOOTPRINT,
|
||||
HK_LOCK_UNLOCK_FOOTPRINT,
|
||||
HK_ADD_VIA, HK_END_TRACK,
|
||||
HK_SAVE_BOARD, HK_LOAD_BOARD,
|
||||
HK_SWITCH_UNITS, HK_SWITCH_TRACK_DISPLAY_MODE,
|
||||
HK_FIND_ITEM
|
||||
};
|
||||
|
||||
/* How to add a new hotkey:
|
||||
* add a new id in the enum hotkey_id_commnand like MY_NEW_ID_FUNCTION.
|
||||
* add a new Ki_HotkeyInfo entry like:
|
||||
* static Ki_HotkeyInfo HkMyNewEntry(wxT("Command Label"), MY_NEW_ID_FUNCTION, default key value);
|
||||
* "Command Label" is the name used in hotkey list display, and the identifier in the hotkey list file
|
||||
* MY_NEW_ID_FUNCTION is an equivalent id function used in the switch in OnHotKey() function.
|
||||
* default key value is the default hotkey for this command. Can be overrided by the user hotkey list file
|
||||
* add the HkMyNewEntry pointer in the s_board_edit_Hotkey_List list ( or/and the s_module_edit_Hotkey_List list)
|
||||
* Add the new code in the switch in OnHotKey() function.
|
||||
* when the variable PopupOn is true, an item is currently edited.
|
||||
* This can be usefull if the new function cannot be executed while an item is currently being edited
|
||||
* ( For example, one cannot start a new wire when a component is moving.)
|
||||
*
|
||||
* Note: If an hotkey is a special key be sure the corresponding wxWidget keycode (WXK_XXXX)
|
||||
* is handled in the hotkey_name_descr s_Hotkey_Name_List list (see hotkeys_basic.cpp)
|
||||
* and see this list for some ascii keys (space ...)
|
||||
*/
|
||||
|
||||
/* local variables */
|
||||
/* Hotkey list: */
|
||||
static Ki_HotkeyInfo HkSavefile(wxT("Save board"), HK_SAVE_BOARD, 'S' + GR_KB_CTRL);
|
||||
static Ki_HotkeyInfo HkLoadfile(wxT("Load board"), HK_LOAD_BOARD, 'L' + GR_KB_CTRL);
|
||||
static Ki_HotkeyInfo HkFindItem(wxT("Find Item"), HK_FIND_ITEM, 'F' + GR_KB_CTRL);
|
||||
static Ki_HotkeyInfo HkBackspace(wxT("Delete track segment"), HK_BACK_SPACE, WXK_BACK);
|
||||
static Ki_HotkeyInfo HkAddVia(wxT("Add Via"), HK_ADD_VIA, 'V');
|
||||
static Ki_HotkeyInfo HkEndTrack(wxT("End Track"), HK_END_TRACK, WXK_END);
|
||||
static Ki_HotkeyInfo HkFlipFootprint(wxT("Flip Footprint"), HK_FLIP_FOOTPRINT, 'F');
|
||||
static Ki_HotkeyInfo HkRotateFootprint(wxT("Rotate Footprint"), HK_ROTATE_FOOTPRINT, 'R');
|
||||
static Ki_HotkeyInfo HkMoveFootprint(wxT("Move Footprint"), HK_MOVE_FOOTPRINT, 'M');
|
||||
static Ki_HotkeyInfo HkDragFootprint(wxT("Drag Footprint"), HK_DRAG_FOOTPRINT, 'G');
|
||||
static Ki_HotkeyInfo HkLock_Unlock_Footprint(wxT("Lock/Unlock Footprint"), HK_LOCK_UNLOCK_FOOTPRINT, 'L');
|
||||
static Ki_HotkeyInfo HkDelete(wxT("Delete Track or Footprint"), HK_DELETE, WXK_DELETE);
|
||||
static Ki_HotkeyInfo HkResetLocalCoord(wxT("Reset local coord."), HK_RESET_LOCAL_COORD, ' ');
|
||||
static Ki_HotkeyInfo HkZoomCenter(wxT("Zoom Center"), HK_ZOOM_CENTER, WXK_F4);
|
||||
static Ki_HotkeyInfo HkZoomRedraw(wxT("Zoom Redraw"), HK_ZOOM_REDRAW, WXK_F3);
|
||||
static Ki_HotkeyInfo HkZoomOut(wxT("Zoom Out"), HK_ZOOM_OUT, WXK_F2);
|
||||
static Ki_HotkeyInfo HkZoomIn(wxT("Zoom In"), HK_ZOOM_IN, WXK_F1);
|
||||
static Ki_HotkeyInfo HkHelp(wxT("Help: this message"), HK_HELP, '?');
|
||||
static Ki_HotkeyInfo HkSwitchUnits(wxT("Switch Units"), HK_SWITCH_UNITS, 'U');
|
||||
static Ki_HotkeyInfo HkTrackDisplayMode(wxT("Track Display Mode"), HK_SWITCH_TRACK_DISPLAY_MODE, 'F');
|
||||
static Ki_HotkeyInfo HkSwitch2CopperLayer( wxT(
|
||||
"Switch to Copper layer" ),
|
||||
HK_SWITCH_LAYER_TO_COPPER, '-' );
|
||||
static Ki_HotkeyInfo HkSwitch2ComponentLayer( wxT(
|
||||
"Switch to Component layer" ),
|
||||
HK_SWITCH_LAYER_TO_COMPONENT, '+' );
|
||||
static Ki_HotkeyInfo HkSwitch2InnerLayer1( wxT(
|
||||
"Switch to Inner layer 1" ),
|
||||
HK_SWITCH_LAYER_TO_INNER1, WXK_F5 );
|
||||
static Ki_HotkeyInfo HkSwitch2InnerLayer2( wxT(
|
||||
"Switch to Inner layer 2" ),
|
||||
HK_SWITCH_LAYER_TO_INNER2, WXK_F6 );
|
||||
static Ki_HotkeyInfo HkSwitch2InnerLayer3( wxT(
|
||||
"Switch to Inner layer 3" ),
|
||||
HK_SWITCH_LAYER_TO_INNER3, WXK_F7 );
|
||||
static Ki_HotkeyInfo HkSwitch2InnerLayer4( wxT(
|
||||
"Switch to Inner layer 4" ),
|
||||
HK_SWITCH_LAYER_TO_INNER4, WXK_F8 );
|
||||
static Ki_HotkeyInfo HkSwitch2InnerLayer5( wxT(
|
||||
"Switch to Inner layer 5" ),
|
||||
HK_SWITCH_LAYER_TO_INNER5, WXK_F9 );
|
||||
static Ki_HotkeyInfo HkSwitch2InnerLayer6( wxT(
|
||||
"Switch to Inner layer 6" ),
|
||||
HK_SWITCH_LAYER_TO_INNER6, WXK_F10 );
|
||||
|
||||
static Ki_HotkeyInfo HkSavefile( wxT( "Save board" ), HK_SAVE_BOARD, 'S' + GR_KB_CTRL );
|
||||
static Ki_HotkeyInfo HkLoadfile( wxT( "Load board" ), HK_LOAD_BOARD, 'L' + GR_KB_CTRL );
|
||||
static Ki_HotkeyInfo HkFindItem( wxT( "Find Item" ), HK_FIND_ITEM, 'F' + GR_KB_CTRL );
|
||||
static Ki_HotkeyInfo HkBackspace( wxT( "Delete track segment" ), HK_BACK_SPACE, WXK_BACK );
|
||||
static Ki_HotkeyInfo HkAddVia( wxT( "Add Via" ), HK_ADD_VIA, 'V' );
|
||||
static Ki_HotkeyInfo HkEndTrack( wxT( "End Track" ), HK_END_TRACK, WXK_END );
|
||||
static Ki_HotkeyInfo HkFlipFootprint( wxT( "Flip Footprint" ), HK_FLIP_FOOTPRINT, 'F' );
|
||||
static Ki_HotkeyInfo HkRotateFootprint( wxT( "Rotate Footprint" ), HK_ROTATE_FOOTPRINT, 'R' );
|
||||
static Ki_HotkeyInfo HkMoveFootprint( wxT( "Move Footprint" ), HK_MOVE_FOOTPRINT, 'M' );
|
||||
static Ki_HotkeyInfo HkDragFootprint( wxT( "Drag Footprint" ), HK_DRAG_FOOTPRINT, 'G' );
|
||||
static Ki_HotkeyInfo HkLock_Unlock_Footprint( wxT(
|
||||
"Lock/Unlock Footprint" ),
|
||||
HK_LOCK_UNLOCK_FOOTPRINT, 'L' );
|
||||
static Ki_HotkeyInfo HkDelete( wxT( "Delete Track or Footprint" ), HK_DELETE, WXK_DELETE );
|
||||
static Ki_HotkeyInfo HkResetLocalCoord( wxT( "Reset local coord." ), HK_RESET_LOCAL_COORD, ' ' );
|
||||
static Ki_HotkeyInfo HkZoomCenter( wxT( "Zoom Center" ), HK_ZOOM_CENTER, WXK_F4 );
|
||||
static Ki_HotkeyInfo HkZoomRedraw( wxT( "Zoom Redraw" ), HK_ZOOM_REDRAW, WXK_F3 );
|
||||
static Ki_HotkeyInfo HkZoomOut( wxT( "Zoom Out" ), HK_ZOOM_OUT, WXK_F2 );
|
||||
static Ki_HotkeyInfo HkZoomIn( wxT( "Zoom In" ), HK_ZOOM_IN, WXK_F1 );
|
||||
static Ki_HotkeyInfo HkHelp( wxT( "Help: this message" ), HK_HELP, '?' );
|
||||
static Ki_HotkeyInfo HkSwitchUnits( wxT( "Switch Units" ), HK_SWITCH_UNITS, 'U' );
|
||||
static Ki_HotkeyInfo HkTrackDisplayMode( wxT(
|
||||
"Track Display Mode" ),
|
||||
HK_SWITCH_TRACK_DISPLAY_MODE, 'F' );
|
||||
|
||||
|
||||
// List of hotkey descriptors for pcbnew
|
||||
Ki_HotkeyInfo *s_board_edit_Hotkey_List[] = {
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkResetLocalCoord, &HkSwitchUnits, &HkTrackDisplayMode,
|
||||
&HkDelete, &HkBackspace,
|
||||
&HkAddVia, &HkEndTrack,
|
||||
&HkMoveFootprint, &HkFlipFootprint,
|
||||
&HkRotateFootprint, &HkDragFootprint,
|
||||
&HkLock_Unlock_Footprint,
|
||||
&HkSavefile, &HkLoadfile, &HkFindItem,
|
||||
NULL
|
||||
Ki_HotkeyInfo* s_board_edit_Hotkey_List[] = {
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkResetLocalCoord, &HkSwitchUnits, &HkTrackDisplayMode,
|
||||
&HkDelete, &HkBackspace,
|
||||
&HkAddVia, &HkEndTrack,
|
||||
&HkMoveFootprint, &HkFlipFootprint,
|
||||
&HkRotateFootprint, &HkDragFootprint,
|
||||
&HkLock_Unlock_Footprint,
|
||||
&HkSavefile, &HkLoadfile, &HkFindItem,
|
||||
&HkSwitch2CopperLayer,
|
||||
&HkSwitch2InnerLayer1,
|
||||
&HkSwitch2InnerLayer2,
|
||||
&HkSwitch2InnerLayer3,
|
||||
&HkSwitch2InnerLayer4,
|
||||
&HkSwitch2InnerLayer5,
|
||||
&HkSwitch2InnerLayer6,
|
||||
&HkSwitch2ComponentLayer,
|
||||
NULL
|
||||
};
|
||||
|
||||
Ki_HotkeyInfo *s_module_edit_Hotkey_List[] = {
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkSwitchUnits, &HkResetLocalCoord,
|
||||
&HkDelete, &HkBackspace,
|
||||
NULL
|
||||
// List of hotkey descriptors for the module editor
|
||||
Ki_HotkeyInfo* s_module_edit_Hotkey_List[] = {
|
||||
&HkHelp,
|
||||
&HkZoomIn, &HkZoomOut, &HkZoomRedraw, &HkZoomCenter,
|
||||
&HkSwitchUnits, &HkResetLocalCoord,
|
||||
&HkDelete, &HkBackspace,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
|
@ -88,16 +120,19 @@ Ki_HotkeyInfo *s_module_edit_Hotkey_List[] = {
|
|||
void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
||||
EDA_BaseStruct* DrawStruct )
|
||||
/***********************************************************/
|
||||
|
||||
/* Hot keys. Some commands are relatives to the item under the mouse cursor
|
||||
Commands are case insensitive
|
||||
Zoom commands are not managed here
|
||||
*/
|
||||
* Commands are case insensitive
|
||||
* Zoom commands are not managed here
|
||||
* @param DC = current device context
|
||||
* @param hotkey = hothey code (ascii or wxWidget code for special keys)
|
||||
* @param DrawStruct = NULL or pointer on a EDA_BaseStruct under the mouse cursor
|
||||
*/
|
||||
|
||||
{
|
||||
|
||||
bool PopupOn = GetScreen()->GetCurItem()
|
||||
&& GetScreen()->GetCurItem()->m_Flags;
|
||||
|
||||
|
||||
bool ItemFree = (GetScreen()->GetCurItem() == 0 )
|
||||
|| (GetScreen()->GetCurItem()->m_Flags == 0);
|
||||
|
||||
|
@ -106,214 +141,290 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey,
|
|||
|
||||
MODULE* module = NULL;
|
||||
|
||||
// Remap the control key Ctrl A (0x01) to GR_KB_CTRL + 'A' (easier to handle...)
|
||||
if ( (hotkey & GR_KB_CTRL) != 0 ) hotkey += 'A' - 1;
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') ) hotkey += 'A' - 'a';
|
||||
|
||||
int CommandCode = GetCommandCodeFromHotkey(hotkey, s_board_edit_Hotkey_List);
|
||||
// Remap the control key Ctrl A (0x01) to GR_KB_CTRL + 'A' (easier to handle...)
|
||||
if( (hotkey & GR_KB_CTRL) != 0 )
|
||||
hotkey += 'A' - 1;
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') )
|
||||
hotkey += 'A' - 'a';
|
||||
|
||||
int CommandCode = GetCommandCodeFromHotkey( hotkey, s_board_edit_Hotkey_List );
|
||||
int ll;
|
||||
|
||||
switch( CommandCode )
|
||||
{
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList(this, s_board_edit_Hotkey_List);
|
||||
break;
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_ZOOM_IN:
|
||||
case HK_ZOOM_OUT:
|
||||
case HK_ZOOM_REDRAW:
|
||||
case HK_ZOOM_CENTER:
|
||||
break;
|
||||
case HK_SWITCH_LAYER_TO_PREVIOUS:
|
||||
ll = GetScreen()->m_Active_Layer;
|
||||
if( ll > CMP_N )
|
||||
break;
|
||||
if( ll <= CUIVRE_N )
|
||||
break;
|
||||
if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) // Single layer
|
||||
ll = CUIVRE_N;
|
||||
if( ll == CMP_N )
|
||||
ll = MAX( CUIVRE_N, m_Pcb->m_BoardSettings->m_CopperLayerCount - 2 );
|
||||
else if( ll > CUIVRE_N )
|
||||
ll--;
|
||||
SwitchLayer( DC, ll );
|
||||
break;
|
||||
|
||||
case HK_RESET_LOCAL_COORD: /*Reset the relative coord */
|
||||
GetScreen()->m_O_Curseur = GetScreen()->m_Curseur;
|
||||
break;
|
||||
case HK_SWITCH_LAYER_TO_NEXT:
|
||||
ll = GetScreen()->m_Active_Layer;
|
||||
if( ll >= CMP_N )
|
||||
break;
|
||||
ll++;
|
||||
if( ll >= m_Pcb->m_BoardSettings->m_CopperLayerCount - 1 )
|
||||
ll = CMP_N;
|
||||
if( m_Pcb->m_BoardSettings->m_CopperLayerCount <= 1 ) // Single layer
|
||||
ll = CUIVRE_N;
|
||||
SwitchLayer( DC, ll );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_COMPONENT:
|
||||
SwitchLayer( DC, CMP_N );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_COPPER:
|
||||
SwitchLayer( DC, CUIVRE_N );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_INNER1:
|
||||
SwitchLayer( DC, LAYER_N_2 );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_INNER2:
|
||||
SwitchLayer( DC, LAYER_N_3 );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_INNER3:
|
||||
SwitchLayer( DC, LAYER_N_4 );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_INNER4:
|
||||
SwitchLayer( DC, LAYER_N_5 );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_INNER5:
|
||||
SwitchLayer( DC, LAYER_N_6 );
|
||||
break;
|
||||
|
||||
case HK_SWITCH_LAYER_TO_INNER6:
|
||||
SwitchLayer( DC, LAYER_N_7 );
|
||||
break;
|
||||
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList( this, s_board_edit_Hotkey_List );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_IN:
|
||||
OnZoom( ID_ZOOM_PLUS_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_OUT:
|
||||
OnZoom( ID_ZOOM_MOINS_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_REDRAW:
|
||||
OnZoom( ID_ZOOM_REDRAW_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_CENTER:
|
||||
OnZoom( ID_ZOOM_CENTER_KEY );
|
||||
break;
|
||||
|
||||
|
||||
case HK_SWITCH_UNITS:
|
||||
g_UnitMetric = (g_UnitMetric == INCHES ) ? MILLIMETRE : INCHES;
|
||||
break;
|
||||
case HK_RESET_LOCAL_COORD: /*Reset the relative coord */
|
||||
GetScreen()->m_O_Curseur = GetScreen()->m_Curseur;
|
||||
break;
|
||||
|
||||
case HK_SWITCH_TRACK_DISPLAY_MODE:
|
||||
DisplayOpt.DisplayPcbTrackFill ^= 1; DisplayOpt.DisplayPcbTrackFill &= 1;
|
||||
GetScreen()->SetRefreshReq();
|
||||
break;
|
||||
|
||||
case HK_DELETE:
|
||||
OnHotkeyDeleteItem( DC, DrawStruct );
|
||||
break;
|
||||
case HK_SWITCH_UNITS:
|
||||
g_UnitMetric = (g_UnitMetric == INCHES ) ? MILLIMETRE : INCHES;
|
||||
break;
|
||||
|
||||
case HK_BACK_SPACE:
|
||||
if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N )
|
||||
{
|
||||
bool ItemFree = (GetScreen()->GetCurItem() == NULL )
|
||||
|| (GetScreen()->GetCurItem()->m_Flags == 0);
|
||||
if( ItemFree )
|
||||
{
|
||||
// no track is currently being edited - select a segment and remove it.
|
||||
DrawStruct = PcbGeneralLocateAndDisplay();
|
||||
case HK_SWITCH_TRACK_DISPLAY_MODE:
|
||||
DisplayOpt.DisplayPcbTrackFill ^= 1; DisplayOpt.DisplayPcbTrackFill &= 1;
|
||||
GetScreen()->SetRefreshReq();
|
||||
break;
|
||||
|
||||
// don't let backspace delete modules!!
|
||||
if( DrawStruct && (DrawStruct->m_StructType == TYPETRACK
|
||||
|| DrawStruct->m_StructType == TYPEVIA) )
|
||||
Delete_Segment( DC, (TRACK*) DrawStruct );
|
||||
GetScreen()->SetModify();
|
||||
}
|
||||
else if( GetScreen()->GetCurItem()->m_StructType == TYPETRACK )
|
||||
{
|
||||
// then an element is being edited - remove the last segment.
|
||||
GetScreen()->SetCurItem(Delete_Segment( DC, (TRACK*) GetScreen()->GetCurItem() ) );
|
||||
GetScreen()->SetModify();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case HK_DELETE:
|
||||
OnHotkeyDeleteItem( DC, DrawStruct );
|
||||
break;
|
||||
|
||||
case HK_END_TRACK:
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
End_Route( (TRACK*) (GetScreen()->GetCurItem()), DC );
|
||||
break;
|
||||
case HK_BACK_SPACE:
|
||||
if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer <= CMP_N )
|
||||
{
|
||||
bool ItemFree = (GetScreen()->GetCurItem() == NULL )
|
||||
|| (GetScreen()->GetCurItem()->m_Flags == 0);
|
||||
if( ItemFree )
|
||||
{
|
||||
// no track is currently being edited - select a segment and remove it.
|
||||
DrawStruct = PcbGeneralLocateAndDisplay();
|
||||
|
||||
case HK_FIND_ITEM:
|
||||
{
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_FIND_ITEMS );
|
||||
Process_Special_Functions( evt );
|
||||
}
|
||||
break;
|
||||
// don't let backspace delete modules!!
|
||||
if( DrawStruct && (DrawStruct->m_StructType == TYPETRACK
|
||||
|| DrawStruct->m_StructType == TYPEVIA) )
|
||||
Delete_Segment( DC, (TRACK*) DrawStruct );
|
||||
GetScreen()->SetModify();
|
||||
}
|
||||
else if( GetScreen()->GetCurItem()->m_StructType == TYPETRACK )
|
||||
{
|
||||
// then an element is being edited - remove the last segment.
|
||||
GetScreen()->SetCurItem( Delete_Segment( DC, (TRACK*) GetScreen()->GetCurItem() ) );
|
||||
GetScreen()->SetModify();
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_LOAD_BOARD:
|
||||
{
|
||||
// try not to duplicate save, load code etc.
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_LOAD_FILE );
|
||||
Files_io( evt );
|
||||
}
|
||||
break;
|
||||
case HK_END_TRACK:
|
||||
DrawPanel->MouseToCursorSchema();
|
||||
End_Route( (TRACK*) ( GetScreen()->GetCurItem() ), DC );
|
||||
break;
|
||||
|
||||
case HK_SAVE_BOARD:
|
||||
{
|
||||
// try not to duplicate save, load code etc.
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_SAVE_BOARD );
|
||||
Files_io( evt );
|
||||
}
|
||||
break;
|
||||
case HK_FIND_ITEM:
|
||||
{
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_FIND_ITEMS );
|
||||
Process_Special_Functions( evt );
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_ADD_VIA: // Switch to alternate layer and Place a via if a track is in progress
|
||||
if( m_ID_current_state != ID_TRACK_BUTT )
|
||||
return;
|
||||
if( ItemFree )
|
||||
{
|
||||
Other_Layer_Route( NULL, DC );
|
||||
break;
|
||||
}
|
||||
if( GetScreen()->GetCurItem()->m_StructType != TYPETRACK )
|
||||
return;
|
||||
if( (GetScreen()->GetCurItem()->m_Flags & IS_NEW) == 0 )
|
||||
return;
|
||||
Other_Layer_Route( (TRACK*) GetScreen()->GetCurItem(), DC );
|
||||
if( DisplayOpt.ContrastModeDisplay )
|
||||
GetScreen()->SetRefreshReq();
|
||||
break;
|
||||
case HK_LOAD_BOARD:
|
||||
{
|
||||
// try not to duplicate save, load code etc.
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_LOAD_FILE );
|
||||
Files_io( evt );
|
||||
}
|
||||
break;
|
||||
|
||||
// Footprint edition:
|
||||
case HK_LOCK_UNLOCK_FOOTPRINT: // toggle module "MODULE_is_LOCKED" status:
|
||||
// get any module, locked or not locked and toggle its locked status
|
||||
if( ItemFree )
|
||||
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY );
|
||||
else if( GetScreen()->GetCurItem()->m_StructType == TYPEMODULE )
|
||||
module = (MODULE*) GetScreen()->GetCurItem();
|
||||
if( module )
|
||||
{
|
||||
GetScreen()->SetCurItem(module);
|
||||
module->SetLocked( !module->IsLocked() );
|
||||
module->Display_Infos( this );
|
||||
}
|
||||
break;
|
||||
case HK_SAVE_BOARD:
|
||||
{
|
||||
// try not to duplicate save, load code etc.
|
||||
wxCommandEvent evt;
|
||||
evt.SetId( ID_SAVE_BOARD );
|
||||
Files_io( evt );
|
||||
}
|
||||
break;
|
||||
|
||||
case HK_DRAG_FOOTPRINT: // Start move (and drag) module
|
||||
case HK_MOVE_FOOTPRINT: // Start move module
|
||||
if( PopupOn )
|
||||
break;
|
||||
case HK_ADD_VIA: // Switch to alternate layer and Place a via if a track is in progress
|
||||
if( m_ID_current_state != ID_TRACK_BUTT )
|
||||
return;
|
||||
if( ItemFree )
|
||||
{
|
||||
Other_Layer_Route( NULL, DC );
|
||||
break;
|
||||
}
|
||||
if( GetScreen()->GetCurItem()->m_StructType != TYPETRACK )
|
||||
return;
|
||||
if( (GetScreen()->GetCurItem()->m_Flags & IS_NEW) == 0 )
|
||||
return;
|
||||
Other_Layer_Route( (TRACK*) GetScreen()->GetCurItem(), DC );
|
||||
if( DisplayOpt.ContrastModeDisplay )
|
||||
GetScreen()->SetRefreshReq();
|
||||
break;
|
||||
|
||||
case HK_ROTATE_FOOTPRINT: // Rotation
|
||||
case HK_FLIP_FOOTPRINT: // move to other side
|
||||
if( ItemFree )
|
||||
{
|
||||
module = Locate_Prefered_Module( m_Pcb,
|
||||
CURSEUR_OFF_GRILLE | IGNORE_LOCKED | VISIBLE_ONLY
|
||||
#if defined (USE_MATCH_LAYER)
|
||||
| MATCH_LAYER
|
||||
#endif
|
||||
);
|
||||
if( module == NULL ) // no footprint found
|
||||
{
|
||||
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE );
|
||||
if( module )
|
||||
{
|
||||
// a footprint is found, but locked or on an other layer
|
||||
if( module->IsLocked() )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
msg.Printf( _("Footprint %s found, but locked"),
|
||||
module->m_Reference->m_Text.GetData() );
|
||||
|
||||
DisplayInfo( this, msg );
|
||||
}
|
||||
module = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( GetScreen()->GetCurItem()->m_StructType == TYPEMODULE )
|
||||
{
|
||||
module = (MODULE*) GetScreen()->GetCurItem();
|
||||
// Footprint edition:
|
||||
case HK_LOCK_UNLOCK_FOOTPRINT: // toggle module "MODULE_is_LOCKED" status:
|
||||
// get any module, locked or not locked and toggle its locked status
|
||||
if( ItemFree )
|
||||
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE | VISIBLE_ONLY );
|
||||
else if( GetScreen()->GetCurItem()->m_StructType == TYPEMODULE )
|
||||
module = (MODULE*) GetScreen()->GetCurItem();
|
||||
if( module )
|
||||
{
|
||||
GetScreen()->SetCurItem( module );
|
||||
module->SetLocked( !module->IsLocked() );
|
||||
module->Display_Infos( this );
|
||||
}
|
||||
break;
|
||||
|
||||
// @todo: might need to add a layer check in if() below
|
||||
if( (GetScreen()->GetCurItem()->m_Flags == 0)
|
||||
&& module->IsLocked() )
|
||||
module = NULL; // do not move, rotate ... it.
|
||||
}
|
||||
if( module == NULL )
|
||||
break;
|
||||
case HK_DRAG_FOOTPRINT: // Start move (and drag) module
|
||||
case HK_MOVE_FOOTPRINT: // Start move module
|
||||
if( PopupOn )
|
||||
break;
|
||||
|
||||
/* I'd like to make sending to EESCHEMA edge triggered, but the
|
||||
simple mouse click on a module when the arrow icon is in play
|
||||
does not set GetCurItem() at this time, nor does a mouse click
|
||||
when the local ratsnest icon is in play set GetCurItem(), and these
|
||||
actions also call SendMessageToEESCHEMA().
|
||||
if( GetScreen()->GetCurItem() != module )
|
||||
*/
|
||||
{
|
||||
// Send the module via socket to EESCHEMA's search facility.
|
||||
SendMessageToEESCHEMA( module );
|
||||
|
||||
GetScreen()->SetCurItem(module);
|
||||
}
|
||||
case HK_ROTATE_FOOTPRINT: // Rotation
|
||||
case HK_FLIP_FOOTPRINT: // move to other side
|
||||
if( ItemFree )
|
||||
{
|
||||
module = Locate_Prefered_Module( m_Pcb,
|
||||
CURSEUR_OFF_GRILLE | IGNORE_LOCKED | VISIBLE_ONLY
|
||||
#if defined (USE_MATCH_LAYER)
|
||||
| MATCH_LAYER
|
||||
#endif
|
||||
);
|
||||
if( module == NULL ) // no footprint found
|
||||
{
|
||||
module = Locate_Prefered_Module( m_Pcb, CURSEUR_OFF_GRILLE );
|
||||
if( module )
|
||||
{
|
||||
// a footprint is found, but locked or on an other layer
|
||||
if( module->IsLocked() )
|
||||
{
|
||||
wxString msg;
|
||||
|
||||
switch( CommandCode )
|
||||
{
|
||||
case HK_ROTATE_FOOTPRINT: // Rotation
|
||||
Rotate_Module( DC, module, 900, TRUE );
|
||||
break;
|
||||
msg.Printf( _( "Footprint %s found, but locked" ),
|
||||
module->m_Reference->m_Text.GetData() );
|
||||
|
||||
case HK_FLIP_FOOTPRINT: // move to other side
|
||||
Change_Side_Module( module, DC );
|
||||
break;
|
||||
DisplayInfo( this, msg );
|
||||
}
|
||||
module = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( GetScreen()->GetCurItem()->m_StructType == TYPEMODULE )
|
||||
{
|
||||
module = (MODULE*) GetScreen()->GetCurItem();
|
||||
|
||||
case HK_DRAG_FOOTPRINT: // Start move (and drag) module
|
||||
g_Drag_Pistes_On = TRUE;
|
||||
// fall through
|
||||
case HK_MOVE_FOOTPRINT: // Start move module
|
||||
StartMove_Module( module, DC );
|
||||
break;
|
||||
}
|
||||
module->Display_Infos( this );
|
||||
break;
|
||||
// @todo: might need to add a layer check in if() below
|
||||
if( (GetScreen()->GetCurItem()->m_Flags == 0)
|
||||
&& module->IsLocked() )
|
||||
module = NULL; // do not move, rotate ... it.
|
||||
}
|
||||
if( module == NULL )
|
||||
break;
|
||||
|
||||
/* I'd like to make sending to EESCHEMA edge triggered, but the
|
||||
* simple mouse click on a module when the arrow icon is in play
|
||||
* does not set GetCurItem() at this time, nor does a mouse click
|
||||
* when the local ratsnest icon is in play set GetCurItem(), and these
|
||||
* actions also call SendMessageToEESCHEMA().
|
||||
* if( GetScreen()->GetCurItem() != module )
|
||||
*/
|
||||
{
|
||||
// Send the module via socket to EESCHEMA's search facility.
|
||||
SendMessageToEESCHEMA( module );
|
||||
|
||||
GetScreen()->SetCurItem( module );
|
||||
}
|
||||
|
||||
switch( CommandCode )
|
||||
{
|
||||
case HK_ROTATE_FOOTPRINT: // Rotation
|
||||
Rotate_Module( DC, module, 900, TRUE );
|
||||
break;
|
||||
|
||||
case HK_FLIP_FOOTPRINT: // move to other side
|
||||
Change_Side_Module( module, DC );
|
||||
break;
|
||||
|
||||
case HK_DRAG_FOOTPRINT: // Start move (and drag) module
|
||||
g_Drag_Pistes_On = TRUE;
|
||||
|
||||
// fall through
|
||||
case HK_MOVE_FOOTPRINT: // Start move module
|
||||
StartMove_Module( module, DC );
|
||||
break;
|
||||
}
|
||||
|
||||
module->Display_Infos( this );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -331,35 +442,47 @@ void WinEDA_ModuleEditFrame::OnHotKey( wxDC* DC, int hotkey,
|
|||
if( hotkey == 0 )
|
||||
return;
|
||||
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') ) hotkey += 'A' - 'a';
|
||||
/* Convert lower to upper case (the usual toupper function has problem with non ascii codes like function keys */
|
||||
if( (hotkey >= 'a') && (hotkey <= 'z') )
|
||||
hotkey += 'A' - 'a';
|
||||
|
||||
int CommandCode = GetCommandCodeFromHotkey( hotkey, s_module_edit_Hotkey_List );
|
||||
|
||||
int CommandCode = GetCommandCodeFromHotkey(hotkey, s_module_edit_Hotkey_List);
|
||||
switch( CommandCode )
|
||||
{
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList(this, s_module_edit_Hotkey_List);
|
||||
break;
|
||||
default:
|
||||
case HK_NOT_FOUND:
|
||||
return;
|
||||
break;
|
||||
|
||||
case HK_RESET_LOCAL_COORD: /*Reset the relative coord */
|
||||
GetScreen()->m_O_Curseur = GetScreen()->m_Curseur;
|
||||
break;
|
||||
case HK_HELP: // Display Current hotkey list
|
||||
DisplayHotkeyList( this, s_module_edit_Hotkey_List );
|
||||
break;
|
||||
|
||||
case HK_RESET_LOCAL_COORD: /*Reset the relative coord */
|
||||
GetScreen()->m_O_Curseur = GetScreen()->m_Curseur;
|
||||
break;
|
||||
|
||||
|
||||
case HK_SWITCH_UNITS:
|
||||
g_UnitMetric = (g_UnitMetric == INCHES ) ? MILLIMETRE : INCHES;
|
||||
break;
|
||||
case HK_SWITCH_UNITS:
|
||||
g_UnitMetric = (g_UnitMetric == INCHES ) ? MILLIMETRE : INCHES;
|
||||
break;
|
||||
|
||||
case HK_ZOOM_IN:
|
||||
case HK_ZOOM_OUT:
|
||||
case HK_ZOOM_REDRAW:
|
||||
case HK_ZOOM_CENTER:
|
||||
break;
|
||||
case HK_ZOOM_IN:
|
||||
OnZoom( ID_ZOOM_PLUS_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_OUT:
|
||||
OnZoom( ID_ZOOM_MOINS_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_REDRAW:
|
||||
OnZoom( ID_ZOOM_REDRAW_KEY );
|
||||
break;
|
||||
|
||||
case HK_ZOOM_CENTER:
|
||||
OnZoom( ID_ZOOM_CENTER_KEY );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -419,6 +542,6 @@ bool WinEDA_PcbFrame::OnHotkeyDeleteItem( wxDC* DC, EDA_BaseStruct* DrawStruct )
|
|||
}
|
||||
|
||||
GetScreen()->SetModify();
|
||||
GetScreen()->SetCurItem(NULL);
|
||||
GetScreen()->SetCurItem( NULL );
|
||||
return TRUE;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
/***************/
|
||||
/* hotkeys.h */
|
||||
/***************/
|
||||
#ifndef KOTKEYS_H
|
||||
#define KOTKEYS_H
|
||||
|
||||
#include "hotkeys_basic.h"
|
||||
|
||||
enum hotkey_id_commnand {
|
||||
HK_NOT_FOUND = 0,
|
||||
HK_RESET_LOCAL_COORD,
|
||||
HK_HELP,
|
||||
HK_ZOOM_IN,
|
||||
HK_ZOOM_OUT,
|
||||
HK_ZOOM_REDRAW,
|
||||
HK_ZOOM_CENTER,
|
||||
HK_DELETE,
|
||||
HK_BACK_SPACE,
|
||||
HK_ROTATE_FOOTPRINT,
|
||||
HK_MOVE_FOOTPRINT,
|
||||
HK_DRAG_FOOTPRINT,
|
||||
HK_FLIP_FOOTPRINT,
|
||||
HK_LOCK_UNLOCK_FOOTPRINT,
|
||||
HK_ADD_VIA, HK_END_TRACK,
|
||||
HK_SAVE_BOARD, HK_LOAD_BOARD,
|
||||
HK_SWITCH_UNITS, HK_SWITCH_TRACK_DISPLAY_MODE,
|
||||
HK_FIND_ITEM,
|
||||
HK_SWITCH_LAYER_TO_COPPER,
|
||||
HK_SWITCH_LAYER_TO_COMPONENT,
|
||||
HK_SWITCH_LAYER_TO_NEXT,
|
||||
HK_SWITCH_LAYER_TO_PREVIOUS,
|
||||
HK_SWITCH_LAYER_TO_INNER1,
|
||||
HK_SWITCH_LAYER_TO_INNER2,
|
||||
HK_SWITCH_LAYER_TO_INNER3,
|
||||
HK_SWITCH_LAYER_TO_INNER4,
|
||||
HK_SWITCH_LAYER_TO_INNER5,
|
||||
HK_SWITCH_LAYER_TO_INNER6
|
||||
};
|
||||
|
||||
// List of hotkey descriptors for pcbnew
|
||||
extern Ki_HotkeyInfo* s_board_edit_Hotkey_List[];
|
||||
// List of hotkey descriptors for the module editor
|
||||
extern Ki_HotkeyInfo* s_module_edit_Hotkey_List[];
|
||||
|
||||
#endif // KOTKEYS_H
|
|
@ -183,11 +183,11 @@ wxMenuBar * menuBar = GetMenuBar();
|
|||
configmenu->Append(item);
|
||||
|
||||
configmenu->AppendSeparator();
|
||||
item = new wxMenuItem(configmenu, ID_PREFERENCES_CREATE_CONFIG_HOTKEYS, _("Create Eeschema &Hotkey config file"),
|
||||
item = new wxMenuItem(configmenu, ID_PREFERENCES_CREATE_CONFIG_HOTKEYS, _("Create Pcbnew &Hotkey config file"),
|
||||
_("Create or Recreate the hotkey config file from current hotkey list") );
|
||||
item->SetBitmap(save_setup_xpm);
|
||||
configmenu->Append(item);
|
||||
item = new wxMenuItem(configmenu, ID_PREFERENCES_READ_CONFIG_HOTKEYS, _("Reread &Eeschema Hotkey config file"),
|
||||
item = new wxMenuItem(configmenu, ID_PREFERENCES_READ_CONFIG_HOTKEYS, _("Reread &Pcbnew Hotkey config file"),
|
||||
_("Reread the hotkey config file") );
|
||||
item->SetBitmap( reload_xpm);
|
||||
configmenu->Append(item);
|
||||
|
|
|
@ -58,6 +58,10 @@ bool WinEDA_App::OnInit( void )
|
|||
|
||||
Read_Config( FFileName );
|
||||
g_DrawBgColor = BLACK;
|
||||
Read_Hotkey_Config( m_PcbFrame, false ); /* Must be called before creating the main frame
|
||||
* in order to display the real hotkeys
|
||||
* in menus or tool tips */
|
||||
|
||||
|
||||
/* allocation de la memoire pour le fichier et autres buffers: */
|
||||
/* On reserve BUFMEMSIZE octets de ram pour calcul */
|
||||
|
@ -79,7 +83,6 @@ bool WinEDA_App::OnInit( void )
|
|||
|
||||
SetTopWindow( m_PcbFrame );
|
||||
m_PcbFrame->Show( TRUE );
|
||||
Read_Hotkey_Config(m_PcbFrame, false);
|
||||
|
||||
if( CreateServer( m_PcbFrame, KICAD_PCB_PORT_SERVICE_NUMBER ) )
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*****************************************************************/
|
||||
/* too_modeit.cpp: construction du menu de l'editeur de modules */
|
||||
/*****************************************************************/
|
||||
/*****************************************************************/
|
||||
/* too_modeit.cpp: construction du menu de l'editeur de modules */
|
||||
/*****************************************************************/
|
||||
|
||||
#include "fctsys.h"
|
||||
#include "gr_basic.h"
|
||||
|
@ -16,6 +16,8 @@
|
|||
|
||||
#include "id.h"
|
||||
|
||||
#include "hotkeys.h"
|
||||
|
||||
#include "Module_Check.xpm"
|
||||
#include "Import_Module.xpm"
|
||||
#include "Export_Module.xpm"
|
||||
|
@ -32,277 +34,284 @@
|
|||
#endif
|
||||
|
||||
/***************************************************/
|
||||
void WinEDA_ModuleEditFrame::ReCreateHToolbar(void)
|
||||
void WinEDA_ModuleEditFrame::ReCreateHToolbar( void )
|
||||
/***************************************************/
|
||||
/* Create the main horizontal toolbar for the footprint editor */
|
||||
{
|
||||
// Cecreate the toolbar
|
||||
if ( m_HToolBar != NULL ) return;
|
||||
if( m_HToolBar != NULL )
|
||||
return;
|
||||
|
||||
m_HToolBar = new WinEDA_Toolbar(TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE);
|
||||
wxString msg;
|
||||
|
||||
SetToolBar(m_HToolBar);
|
||||
m_HToolBar = new WinEDA_Toolbar( TOOLBAR_MAIN, this, ID_H_TOOLBAR, TRUE );
|
||||
|
||||
// Set up toolbar
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString,
|
||||
BITMAP(open_library_xpm),
|
||||
_("Select working library"));
|
||||
SetToolBar( m_HToolBar );
|
||||
|
||||
m_HToolBar->AddTool(ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, BITMAP(save_library_xpm),
|
||||
_("Save Module in working library"));
|
||||
// Set up toolbar
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_SELECT_CURRENT_LIB, wxEmptyString,
|
||||
BITMAP( open_library_xpm ),
|
||||
_( "Select working library" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString,
|
||||
BITMAP(new_library_xpm),
|
||||
_("Create new library and save current module"));
|
||||
m_HToolBar->AddTool( ID_MODEDIT_SAVE_LIBMODULE, wxEmptyString, BITMAP( save_library_xpm ),
|
||||
_( "Save Module in working library" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_DELETE_PART, wxEmptyString,
|
||||
BITMAP(delete_xpm),
|
||||
_("Delete part in current library"));
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_CREATE_NEW_LIB_AND_SAVE_CURRENT_PART, wxEmptyString,
|
||||
BITMAP( new_library_xpm ),
|
||||
_( "Create new library and save current module" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_MODEDIT_NEW_MODULE, wxEmptyString,
|
||||
BITMAP(new_footprint_xpm),
|
||||
_("New Module"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_DELETE_PART, wxEmptyString,
|
||||
BITMAP( delete_xpm ),
|
||||
_( "Delete part in current library" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_MODEDIT_LOAD_MODULE, wxEmptyString,
|
||||
BITMAP(module_xpm),
|
||||
_("Load module from lib"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_MODEDIT_NEW_MODULE, wxEmptyString,
|
||||
BITMAP( new_footprint_xpm ),
|
||||
_( "New Module" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString,
|
||||
BITMAP(load_module_board_xpm),
|
||||
_("Load module from current board"));
|
||||
m_HToolBar->AddTool( ID_MODEDIT_LOAD_MODULE, wxEmptyString,
|
||||
BITMAP( module_xpm ),
|
||||
_( "Load module from lib" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_MODEDIT_UPDATE_MODULE_IN_BOARD, wxEmptyString,
|
||||
BITMAP(update_module_board_xpm),
|
||||
_("Update module in current board"));
|
||||
|
||||
m_HToolBar->AddTool(ID_MODEDIT_INSERT_MODULE_IN_BOARD, wxEmptyString,
|
||||
BITMAP(insert_module_board_xpm),
|
||||
_("Insert module into current board"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_MODEDIT_LOAD_MODULE_FROM_BOARD, wxEmptyString,
|
||||
BITMAP( load_module_board_xpm ),
|
||||
_( "Load module from current board" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_IMPORT_PART, wxEmptyString,
|
||||
BITMAP(import_module_xpm),
|
||||
_("import module"));
|
||||
m_HToolBar->AddTool( ID_MODEDIT_UPDATE_MODULE_IN_BOARD, wxEmptyString,
|
||||
BITMAP( update_module_board_xpm ),
|
||||
_( "Update module in current board" ) );
|
||||
|
||||
m_HToolBar->AddTool(ID_LIBEDIT_EXPORT_PART, wxEmptyString,
|
||||
BITMAP(export_module_xpm),
|
||||
_("export module"));
|
||||
m_HToolBar->AddTool( ID_MODEDIT_INSERT_MODULE_IN_BOARD, wxEmptyString,
|
||||
BITMAP( insert_module_board_xpm ),
|
||||
_( "Insert module into current board" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_IMPORT_PART, wxEmptyString,
|
||||
BITMAP( import_module_xpm ),
|
||||
_( "import module" ) );
|
||||
|
||||
m_HToolBar->AddTool( ID_LIBEDIT_EXPORT_PART, wxEmptyString,
|
||||
BITMAP( export_module_xpm ),
|
||||
_( "export module" ) );
|
||||
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_MODEDIT_UNDO, wxEmptyString, BITMAP(undo_xpm),
|
||||
_("Undo last edition"));
|
||||
m_HToolBar->AddTool(ID_MODEDIT_REDO, wxEmptyString, BITMAP(redo_xpm),
|
||||
_("Redo the last undo command"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_MODEDIT_UNDO, wxEmptyString, BITMAP( undo_xpm ),
|
||||
_( "Undo last edition" ) );
|
||||
m_HToolBar->AddTool( ID_MODEDIT_REDO, wxEmptyString, BITMAP( redo_xpm ),
|
||||
_( "Redo the last undo command" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString,
|
||||
BITMAP(module_options_xpm),
|
||||
_("Module Properties"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_MODEDIT_EDIT_MODULE_PROPERTIES, wxEmptyString,
|
||||
BITMAP( module_options_xpm ),
|
||||
_( "Module Properties" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_GEN_PRINT, wxEmptyString, BITMAP(print_button),
|
||||
_("Print Module"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_GEN_PRINT, wxEmptyString, BITMAP( print_button ),
|
||||
_( "Print Module" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP(zoom_in_xpm),
|
||||
_("zoom + (F1)"));
|
||||
m_HToolBar->AddSeparator();
|
||||
msg = AddHotkeyName( _( "zoom +" ), s_module_edit_Hotkey_List, HK_ZOOM_IN );
|
||||
m_HToolBar->AddTool( ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_MOINS_BUTT, wxEmptyString,BITMAP(zoom_out_xpm),
|
||||
_("zoom - (F2)"));
|
||||
msg = AddHotkeyName( _( "zoom -" ), s_module_edit_Hotkey_List, HK_ZOOM_OUT );
|
||||
m_HToolBar->AddTool( ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_REDRAW_BUTT, wxEmptyString,BITMAP(repaint_xpm),
|
||||
_("redraw (F3)"));
|
||||
msg = AddHotkeyName( _( "redraw" ), s_module_edit_Hotkey_List, HK_ZOOM_REDRAW );
|
||||
m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( repaint_xpm ),
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool(ID_ZOOM_PAGE_BUTT, wxEmptyString,BITMAP(zoom_optimal_xpm),
|
||||
_("auto zoom"));
|
||||
m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP( zoom_optimal_xpm ),
|
||||
_( "auto zoom" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_MODEDIT_PAD_SETTINGS, wxEmptyString,
|
||||
BITMAP(options_pad_xpm),
|
||||
_("Pad Settings"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_MODEDIT_PAD_SETTINGS, wxEmptyString,
|
||||
BITMAP( options_pad_xpm ),
|
||||
_( "Pad Settings" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool(ID_MODEDIT_CHECK, wxEmptyString, BITMAP(module_check_xpm),
|
||||
_("Module Check"));
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_MODEDIT_CHECK, wxEmptyString, BITMAP( module_check_xpm ),
|
||||
_( "Module Check" ) );
|
||||
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect
|
||||
// the changes
|
||||
m_HToolBar->Realize();
|
||||
SetToolbars();
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect
|
||||
// the changes
|
||||
m_HToolBar->Realize();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/********************************************************/
|
||||
void WinEDA_ModuleEditFrame::ReCreateVToolbar(void)
|
||||
void WinEDA_ModuleEditFrame::ReCreateVToolbar( void )
|
||||
/********************************************************/
|
||||
{
|
||||
if( m_VToolBar ) return;
|
||||
if( m_VToolBar )
|
||||
return;
|
||||
|
||||
m_VToolBar = new WinEDA_Toolbar(TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE);
|
||||
m_VToolBar = new WinEDA_Toolbar( TOOLBAR_TOOL, this, ID_V_TOOLBAR, FALSE );
|
||||
|
||||
// Set up toolbar
|
||||
m_VToolBar->AddTool(ID_NO_SELECT_BUTT, wxEmptyString,
|
||||
BITMAP(cursor_xpm), wxEmptyString, wxITEM_CHECK );
|
||||
m_VToolBar->ToggleTool(ID_NO_SELECT_BUTT, TRUE);
|
||||
// Set up toolbar
|
||||
m_VToolBar->AddTool( ID_NO_SELECT_BUTT, wxEmptyString,
|
||||
BITMAP( cursor_xpm ), wxEmptyString, wxITEM_CHECK );
|
||||
m_VToolBar->ToggleTool( ID_NO_SELECT_BUTT, TRUE );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_MODEDIT_ADD_PAD, wxEmptyString,
|
||||
BITMAP(pad_xpm),
|
||||
_("Add Pads"), wxITEM_CHECK);
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_MODEDIT_ADD_PAD, wxEmptyString,
|
||||
BITMAP( pad_xpm ),
|
||||
_( "Add Pads" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_LINE_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP(add_polygon_xpm),
|
||||
_("Add graphic line or polygon"), wxITEM_CHECK);
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_LINE_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP( add_polygon_xpm ),
|
||||
_( "Add graphic line or polygon" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_PCB_CIRCLE_BUTT, wxEmptyString,
|
||||
BITMAP(add_circle_xpm),
|
||||
_("Add graphic circle"), wxITEM_CHECK);
|
||||
m_VToolBar->AddTool( ID_PCB_CIRCLE_BUTT, wxEmptyString,
|
||||
BITMAP( add_circle_xpm ),
|
||||
_( "Add graphic circle" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_PCB_ARC_BUTT, wxEmptyString,
|
||||
BITMAP(add_arc_xpm),
|
||||
_("Add graphic arc"), wxITEM_CHECK);
|
||||
m_VToolBar->AddTool( ID_PCB_ARC_BUTT, wxEmptyString,
|
||||
BITMAP( add_arc_xpm ),
|
||||
_( "Add graphic arc" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddTool(ID_TEXT_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP(add_text_xpm),
|
||||
_("Add Text"), wxITEM_CHECK);
|
||||
m_VToolBar->AddTool( ID_TEXT_COMMENT_BUTT, wxEmptyString,
|
||||
BITMAP( add_text_xpm ),
|
||||
_( "Add Text" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_MODEDIT_PLACE_ANCHOR, wxEmptyString,
|
||||
BITMAP(anchor_xpm),
|
||||
_("Place anchor"), wxITEM_CHECK);
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_MODEDIT_PLACE_ANCHOR, wxEmptyString,
|
||||
BITMAP( anchor_xpm ),
|
||||
_( "Place anchor" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool(ID_MODEDIT_DELETE_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP(delete_body_xpm),
|
||||
_("Delete items"), wxITEM_CHECK);
|
||||
m_VToolBar->AddSeparator();
|
||||
m_VToolBar->AddTool( ID_MODEDIT_DELETE_ITEM_BUTT, wxEmptyString,
|
||||
BITMAP( delete_body_xpm ),
|
||||
_( "Delete items" ), wxITEM_CHECK );
|
||||
|
||||
m_VToolBar->Realize();
|
||||
m_VToolBar->Realize();
|
||||
|
||||
SetToolbars();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************/
|
||||
void WinEDA_ModuleEditFrame::ReCreateOptToolbar(void)
|
||||
void WinEDA_ModuleEditFrame::ReCreateOptToolbar( void )
|
||||
/*********************************************************/
|
||||
{
|
||||
if( m_OptionsToolBar )
|
||||
return;
|
||||
|
||||
if ( m_OptionsToolBar ) return;
|
||||
// creation du tool bar options
|
||||
m_OptionsToolBar = new WinEDA_Toolbar( TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE );
|
||||
|
||||
// creation du tool bar options
|
||||
m_OptionsToolBar = new WinEDA_Toolbar(TOOLBAR_OPTION, this, ID_OPT_TOOLBAR, FALSE);
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_GRID, BITMAP( grid_xpm ),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Display Grid OFF" ) );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_GRID, BITMAP(grid_xpm),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Display Grid OFF"));
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString,
|
||||
BITMAP( polar_coord_xpm ),
|
||||
_( "Display Polar Coord ON" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_POLAR_COORD, wxEmptyString,
|
||||
BITMAP(polar_coord_xpm),
|
||||
_("Display Polar Coord ON"), wxITEM_CHECK);
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
|
||||
BITMAP( unit_inch_xpm ),
|
||||
_( "Units = Inch" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_INCH, wxEmptyString,
|
||||
BITMAP(unit_inch_xpm),
|
||||
_("Units = Inch"), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
|
||||
BITMAP(unit_mm_xpm),
|
||||
_("Units = mm"), wxITEM_CHECK );
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_UNIT_MM, wxEmptyString,
|
||||
BITMAP( unit_mm_xpm ),
|
||||
_( "Units = mm" ), wxITEM_CHECK );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SELECT_CURSOR, BITMAP(cursor_shape_xpm),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Change Cursor Shape"));
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SELECT_CURSOR, BITMAP( cursor_shape_xpm ),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Change Cursor Shape" ) );
|
||||
|
||||
m_OptionsToolBar->AddSeparator();
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_PADS_SKETCH,
|
||||
BITMAP(pad_sketch_xpm),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Show Pads Sketch"));
|
||||
m_OptionsToolBar->AddSeparator();
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_PADS_SKETCH,
|
||||
BITMAP( pad_sketch_xpm ),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Show Pads Sketch" ) );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
|
||||
BITMAP(text_sketch_xpm),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Show Texts Sketch"));
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_TEXT_SKETCH,
|
||||
BITMAP( text_sketch_xpm ),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Show Texts Sketch" ) );
|
||||
|
||||
m_OptionsToolBar->AddTool(ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH,
|
||||
BITMAP(show_mod_edge_xpm),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject *) NULL,
|
||||
_("Show Edges Sketch"));
|
||||
m_OptionsToolBar->AddTool( ID_TB_OPTIONS_SHOW_MODULE_EDGE_SKETCH,
|
||||
BITMAP( show_mod_edge_xpm ),
|
||||
wxNullBitmap,
|
||||
TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Show Edges Sketch" ) );
|
||||
|
||||
m_OptionsToolBar->Realize();
|
||||
m_OptionsToolBar->Realize();
|
||||
|
||||
SetToolbars();
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************/
|
||||
void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar(void)
|
||||
void WinEDA_ModuleEditFrame::ReCreateAuxiliaryToolbar( void )
|
||||
/*********************************************************/
|
||||
{
|
||||
int ii;
|
||||
wxString msg;
|
||||
int ii;
|
||||
wxString msg;
|
||||
|
||||
if ( m_AuxiliaryToolBar == NULL )
|
||||
{
|
||||
m_AuxiliaryToolBar = new WinEDA_Toolbar(TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE);
|
||||
if( m_AuxiliaryToolBar == NULL )
|
||||
{
|
||||
m_AuxiliaryToolBar = new WinEDA_Toolbar( TOOLBAR_AUX, this, ID_AUX_TOOLBAR, TRUE );
|
||||
|
||||
// Set up toolbar
|
||||
m_AuxiliaryToolBar->AddSeparator();
|
||||
// Set up toolbar
|
||||
m_AuxiliaryToolBar->AddSeparator();
|
||||
|
||||
// Boite de selection du pas de grille
|
||||
m_SelGridBox = new WinEDAChoiceBox(m_AuxiliaryToolBar,
|
||||
ID_ON_GRID_SELECT,
|
||||
wxPoint(-1,-1), wxSize(LISTBOX_WIDTH , -1));
|
||||
m_AuxiliaryToolBar->AddControl( m_SelGridBox);
|
||||
// Boite de selection du pas de grille
|
||||
m_SelGridBox = new WinEDAChoiceBox( m_AuxiliaryToolBar,
|
||||
ID_ON_GRID_SELECT,
|
||||
wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ) );
|
||||
m_AuxiliaryToolBar->AddControl( m_SelGridBox );
|
||||
|
||||
// Boite de selection du Zoom
|
||||
m_AuxiliaryToolBar->AddSeparator();
|
||||
m_SelZoomBox = new WinEDAChoiceBox(m_AuxiliaryToolBar,
|
||||
ID_ON_ZOOM_SELECT,
|
||||
wxPoint(-1,-1), wxSize(LISTBOX_WIDTH , -1));
|
||||
msg = _("Auto");
|
||||
m_SelZoomBox->Append(msg);
|
||||
for ( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ )
|
||||
{
|
||||
msg.Printf(_("Zoom %d"), ii);
|
||||
m_SelZoomBox->Append(msg);
|
||||
}
|
||||
m_SelZoomBox->Append(wxT(""));
|
||||
// Boite de selection du Zoom
|
||||
m_AuxiliaryToolBar->AddSeparator();
|
||||
m_SelZoomBox = new WinEDAChoiceBox( m_AuxiliaryToolBar,
|
||||
ID_ON_ZOOM_SELECT,
|
||||
wxPoint( -1, -1 ), wxSize( LISTBOX_WIDTH, -1 ) );
|
||||
msg = _( "Auto" );
|
||||
m_SelZoomBox->Append( msg );
|
||||
for( int jj = 0, ii = 1; ii <= m_ZoomMaxValue; ii <<= 1, jj++ )
|
||||
{
|
||||
msg.Printf( _( "Zoom %d" ), ii );
|
||||
m_SelZoomBox->Append( msg );
|
||||
}
|
||||
|
||||
m_AuxiliaryToolBar->AddControl( m_SelZoomBox);
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect
|
||||
// the changes
|
||||
m_AuxiliaryToolBar->Realize();
|
||||
}
|
||||
m_SelZoomBox->Append( wxT( "" ) );
|
||||
|
||||
// mise a jour des affichages
|
||||
m_SelGridBox->Clear();
|
||||
for ( ii = 0; g_GridList[ii].x > 0; ii++ )
|
||||
{
|
||||
double value = To_User_Unit(g_UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT);
|
||||
if ( g_UnitMetric == INCHES )
|
||||
msg.Printf(_("Grid %.1f"), value * 1000);
|
||||
else
|
||||
msg.Printf(_("Grid %.3f"), value);
|
||||
m_SelGridBox->Append(msg);
|
||||
}
|
||||
m_SelGridBox->Append( _("User Grid") );
|
||||
m_AuxiliaryToolBar->AddControl( m_SelZoomBox );
|
||||
|
||||
SetToolbars();
|
||||
// after adding the buttons to the toolbar, must call Realize() to reflect
|
||||
// the changes
|
||||
m_AuxiliaryToolBar->Realize();
|
||||
}
|
||||
|
||||
// mise a jour des affichages
|
||||
m_SelGridBox->Clear();
|
||||
for( ii = 0; g_GridList[ii].x > 0; ii++ )
|
||||
{
|
||||
double value = To_User_Unit( g_UnitMetric, g_GridList[ii].x, PCB_INTERNAL_UNIT );
|
||||
if( g_UnitMetric == INCHES )
|
||||
msg.Printf( _( "Grid %.1f" ), value * 1000 );
|
||||
else
|
||||
msg.Printf( _( "Grid %.3f" ), value );
|
||||
m_SelGridBox->Append( msg );
|
||||
}
|
||||
|
||||
m_SelGridBox->Append( _( "User Grid" ) );
|
||||
|
||||
SetToolbars();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
#include "wx/ownerdrw.h"
|
||||
#include "wx/menuitem.h"
|
||||
|
||||
#include "hotkeys.h"
|
||||
|
||||
#define MUWAVE_ENBL
|
||||
|
||||
#include "mw_Add_Stub.xpm"
|
||||
|
@ -50,7 +52,7 @@
|
|||
"Show active layer selections\nand select layer pair for route and place via" )
|
||||
|
||||
/* Data to build the layer pair indicator button */
|
||||
static wxBitmap* LayerPairBitmap = NULL;
|
||||
static wxBitmap* LayerPairBitmap = NULL;
|
||||
static const char s_BitmapLayerIcon[16][16] = {
|
||||
// 0 = draw pixel with active layer color
|
||||
// 1 = draw pixel with top layer color (top/bottom layer used in autoroute and place via)
|
||||
|
@ -166,7 +168,7 @@ void WinEDA_PcbFrame::PrepareLayerIndicator( void )
|
|||
ColorRefs[color].m_Red,
|
||||
ColorRefs[color].m_Green,
|
||||
ColorRefs[color].m_Blue
|
||||
);
|
||||
);
|
||||
iconDC.SetPen( pen );
|
||||
}
|
||||
iconDC.DrawPoint( jj, ii );
|
||||
|
@ -199,9 +201,10 @@ void WinEDA_PcbFrame::PrepareLayerIndicator( void )
|
|||
void WinEDA_PcbFrame::ReCreateHToolbar( void )
|
||||
/******************************************/
|
||||
|
||||
// Create the main horizontal toolbar
|
||||
/* Create the main horizontal toolbar for the board editor */
|
||||
{
|
||||
int ii;
|
||||
int ii;
|
||||
wxString msg;
|
||||
|
||||
if( m_HToolBar != NULL )
|
||||
{ // simple mise a jour de la liste des fichiers anciens
|
||||
|
@ -264,19 +267,25 @@ void WinEDA_PcbFrame::ReCreateHToolbar( void )
|
|||
_( "Plot (HPGL, PostScript, or GERBER format)" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
msg = AddHotkeyName( _( "zoom +" ), s_board_edit_Hotkey_List, HK_ZOOM_IN );
|
||||
m_HToolBar->AddTool( ID_ZOOM_PLUS_BUTT, wxEmptyString, BITMAP( zoom_in_xpm ),
|
||||
_( "zoom + (F1)" ) );
|
||||
msg );
|
||||
|
||||
msg = AddHotkeyName( _( "zoom -" ), s_board_edit_Hotkey_List, HK_ZOOM_OUT );
|
||||
m_HToolBar->AddTool( ID_ZOOM_MOINS_BUTT, wxEmptyString, BITMAP( zoom_out_xpm ),
|
||||
_( "zoom - (F2)" ) );
|
||||
msg );
|
||||
|
||||
msg = AddHotkeyName( _( "redraw" ), s_board_edit_Hotkey_List, HK_ZOOM_REDRAW );
|
||||
m_HToolBar->AddTool( ID_ZOOM_REDRAW_BUTT, wxEmptyString, BITMAP( repaint_xpm ),
|
||||
_( "redraw (F3)" ) );
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddTool( ID_ZOOM_PAGE_BUTT, wxEmptyString, BITMAP( zoom_optimal_xpm ),
|
||||
_( "auto zoom" ) );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
msg = AddHotkeyName( _( "Find components and texts" ), s_board_edit_Hotkey_List, HK_FIND_ITEM );
|
||||
m_HToolBar->AddTool( ID_FIND_ITEMS, wxEmptyString, BITMAP( find_xpm ),
|
||||
_( "Find components and texts (Ctrl-F)" ) );
|
||||
msg );
|
||||
|
||||
m_HToolBar->AddSeparator();
|
||||
m_HToolBar->AddTool( ID_GET_NETLIST, wxEmptyString, BITMAP( netlist_xpm ),
|
||||
|
@ -499,7 +508,7 @@ void WinEDA_PcbFrame::ReCreateAuxVToolbar( void )
|
|||
wxNullBitmap, TRUE,
|
||||
-1, -1, (wxObject*) NULL,
|
||||
_( "Create stub (arc) of specified length for microwave applications" )
|
||||
);
|
||||
);
|
||||
|
||||
m_AuxVToolBar->AddTool( ID_PCB_MUWAVE_TOOL_FUNCTION_SHAPE_CMD,
|
||||
BITMAP( mw_Add_Shape_xpm ),
|
||||
|
|
Loading…
Reference in New Issue