Loading change_log.txt +8 −0 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,14 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with email address. email address. 2007-sept-6 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ + eeschema & pcbnew Programmable hotkeys update. some features are still subject to change (mainly path for config files: see 2007-aug-30 UPDATE)) The preference menu has a command to create and reread config hotkey files. the hotkey ? lists the current hotkeys. 2007-Sep-4 UPDATE Dick Hollenbeck <dick@softplc.com> 2007-Sep-4 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ ================================================================================ Loading common/common.cpp +1 −16 Original line number Original line Diff line number Diff line Loading @@ -265,7 +265,7 @@ void MyFree( void* pt_mem ) /**************************************************************/ /**************************************************************/ wxString ReturnPcbLayerName( int layer_number, bool is_filename, bool is_gui ) wxString ReturnPcbLayerName( int layer_number, bool is_filename ) /**************************************************************/ /**************************************************************/ /* Return the name of the layer number "layer_number". /* Return the name of the layer number "layer_number". Loading Loading @@ -305,21 +305,6 @@ wxString ReturnPcbLayerName( int layer_number, bool is_filename, bool is_gui ) else else layer_name = layer_name_list[layer_number]; layer_name = layer_name_list[layer_number]; if( is_gui ) { static const wxString hotkey_list[] = { wxT( "(PgDn)" ), wxT( "(F5)" ), wxT( "(F6)" ), wxT( "(F7)" ), wxT( "(F8)" ), wxT( "(F9)" ), wxT( "(F10)" ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " (PgUp)" ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ) }; layer_name += wxT( " " ) + hotkey_list[layer_number]; } return layer_name; return layer_name; } } Loading common/edaappl.cpp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include "worksheet.h" #include "worksheet.h" #include "id.h" #include "id.h" #include "build_version.h" #include "build_version.h" #include "hotkeys_basic.h" #include "bitmaps.h" #include "bitmaps.h" #include "Language.xpm" #include "Language.xpm" Loading common/hotkeys_basic.cpp +112 −38 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,7 @@ /* Some functions to handle hotkeys in kicad /* Some functions to handle hotkeys in kicad */ */ #include "fctsys.h" #include "fctsys.h" #include "common.h" #include "common.h" #include "wxstruct.h" #include "wxstruct.h" Loading @@ -11,7 +12,7 @@ #include "macros.h" #include "macros.h" /* Class to handle hotkey commnands. hotkeys have a default value /* 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 the real key code changed by user from a key code list file */ */ Ki_HotkeyInfo::Ki_HotkeyInfo( const wxChar* infomsg, int idcommand, int keycode ) Ki_HotkeyInfo::Ki_HotkeyInfo( const wxChar* infomsg, int idcommand, int keycode ) Loading @@ -30,7 +31,8 @@ struct hotkey_name_descr int m_KeyCode; int m_KeyCode; }; }; struct hotkey_name_descr s_Hotkey_Name_List[] = static struct hotkey_name_descr s_Hotkey_Name_List[] = { { { wxT( "F1" ), WXK_F1 }, { wxT( "F1" ), WXK_F1 }, { wxT( "F2" ), WXK_F2 }, { wxT( "F2" ), WXK_F2 }, Loading Loading @@ -136,7 +138,7 @@ wxString ReturnKeyNameFromKeyCode( int keycode ) /* /* * return the key name from the key code * return the key name from the key code * Only some wxWidgets key values are handled for function key * Only some wxWidgets key values are handled for function key ( see s_Hotkey_Name_List[] ) * @param key = key code (ascii value, or wxWidgets value for function keys) * @param key = key code (ascii value, or wxWidgets value for function keys) * @return the key name in a wxString * @return the key name in a wxString */ */ Loading Loading @@ -191,9 +193,41 @@ wxString AddHotkeyName( const wxString& text, Ki_HotkeyInfo** List, int CommandI } } /***********************************************************************/ /***********************************************************/ wxString AddHotkeyName( const wxString& text, struct Ki_HotkeyInfoSectionDescriptor* DescList, int CommandId ) /***********************************************************/ /* * Add the key name from the Command id value ( m_Idcommand member value) * @param List = pointer to a Ki_HotkeyInfoSectionDescriptor* DescrList 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; Ki_HotkeyInfo** List; for( ; DescList->m_HK_InfoList != NULL; DescList++ ) { List = DescList->m_HK_InfoList; keyname = ReturnKeyNameFromCommandId( List, CommandId ); if( !keyname.IsEmpty() ) { msg << wxT( " (" ) << keyname << wxT( ")" ); break; } } return msg; } /*************************************************************************/ wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId ) wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId ) /***********************************************************************/ /*************************************************************************/ /* /* * return the key name from the Command id value ( m_Idcommand member value) * return the key name from the Command id value ( m_Idcommand member value) Loading Loading @@ -225,7 +259,7 @@ static int ReturnKeyCodeFromKeyName( const wxString& keyname ) /* /* * return the key code from its key name * return the key code from its key name * Only some wxWidgets key values are handled for function key * Only some wxWidgets key values are handled for function key * @param keyname = wxString key name to find in s_Hotkey_Name_List[] * @param keyname = wxString key name to find in s_Hotkey_Name_List[], like F2 or space or an usual (ascii) char * @return the key code * @return the key code */ */ { { Loading @@ -246,21 +280,25 @@ static int ReturnKeyCodeFromKeyName( const wxString& keyname ) } } /****************************************************************************/ /********************************************************************************************/ void DisplayHotkeyList( WinEDA_DrawFrame* frame, Ki_HotkeyInfo** List ) void DisplayHotkeyList( WinEDA_DrawFrame* frame, struct Ki_HotkeyInfoSectionDescriptor* DescList ) /*****************************************************************************/ /***************************************************************************************/ /* /* * Displays the current hotkey list * Displays the current hotkey list * @param frame = current open frame * @param frame = current active frame * @param List = pointer to a Ki_HotkeyInfo list of commands * @param List = pointer to a Ki_HotkeyInfoSectionDescriptor list (Null terminated) * @return none * @return none */ */ { { wxString keyname; wxString keyname; Ki_HotkeyInfo** List; wxString msg = _( "Current hotkey list:\n\n" ); wxString msg = _( "Current hotkey list:\n\n" ); for( ; DescList->m_HK_InfoList != NULL; DescList++ ) { List = DescList->m_HK_InfoList; for( ; *List != NULL; List++ ) for( ; *List != NULL; List++ ) { { Ki_HotkeyInfo* hk_decr = *List; Ki_HotkeyInfo* hk_decr = *List; Loading @@ -268,6 +306,7 @@ void DisplayHotkeyList( WinEDA_DrawFrame* frame, Ki_HotkeyInfo** List ) keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode ); keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode ); msg += keyname + wxT( ": " ) + hk_decr->m_InfoMsg + wxT( "\n" ); msg += keyname + wxT( ": " ) + hk_decr->m_InfoMsg + wxT( "\n" ); } } } DisplayInfo( frame, msg ); DisplayInfo( frame, msg ); } } Loading Loading @@ -297,7 +336,8 @@ int GetCommandCodeFromHotkey( int key, Ki_HotkeyInfo** List ) /*************************************************************************/ /*************************************************************************/ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, Ki_HotkeyInfo** List, bool verbose ) struct Ki_HotkeyInfoSectionDescriptor* DescList, bool verbose ) /*************************************************************************/ /*************************************************************************/ /* /* Loading Loading @@ -371,13 +411,25 @@ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, } } } } /* print the last line */ /* print the last line of the info section */ if( !msg.IsEmpty() ) if( !msg.IsEmpty() ) msg += wxT( "\n" ); msg += wxT( "\n" ); msg += wxT( "#\n#\n" ); msg += wxT( "#\n#\n" ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); /* Print the current list */ /* Print the current hotkey list */ Ki_HotkeyInfo** List; for( ; DescList->m_HK_InfoList != NULL; DescList++ ) { if( DescList->m_Comment ) { fprintf( cfgfile, "# " ); fprintf( cfgfile, DescList->m_Comment ); fprintf( cfgfile, "\n" ); } fprintf( cfgfile, CONV_TO_UTF8( *DescList->m_SectionTag ) ); fprintf( cfgfile, "\n" ); List = DescList->m_HK_InfoList; for( ; *List != NULL; List++ ) for( ; *List != NULL; List++ ) { { Ki_HotkeyInfo* hk_decr = *List; Ki_HotkeyInfo* hk_decr = *List; Loading @@ -389,6 +441,7 @@ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, msg += keyname + wxT( ": " ) + infokey + wxT( "\n" ); msg += keyname + wxT( ": " ) + infokey + wxT( "\n" ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); } } } msg = wxT( "$Endlist\n" ); msg = wxT( "$Endlist\n" ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); Loading @@ -399,15 +452,17 @@ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, /********************************************************************************************/ /********************************************************************************************/ int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename, int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename, Ki_HotkeyInfo** CurrentHotkeyList, bool verbose ) struct Ki_HotkeyInfoSectionDescriptor* DescList, bool verbose ) /********************************************************************************************/ /********************************************************************************************/ /* /* * Read a configuration file (<file>.key) and fill the current hotkey list with hotkeys * 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 Filename = default full file name to create. If void, A filename will be asked * @param CurrentHotkeyList = current hotkey list to initialise. * @param DescList = current hotkey list descr. to initialise. * the input format is: shortcut "key" "function" * the input format is: shortcut "key" "function" * lines starting by # are ignored (comments) * lines starting by # are ignored (comments) * lines like [xxx] are tags (example: [common] or [libedit] which identify sections * * */ */ { { Loading Loading @@ -449,16 +504,35 @@ int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename, wxString keyname; wxString keyname; char Line[1024]; char Line[1024]; int LineNum = 0; int LineNum = 0; Ki_HotkeyInfo** CurrentHotkeyList = NULL; /* Read the file */ /* Read the file */ while( GetLine( cfgfile, Line, &LineNum ) != NULL ) while( GetLine( cfgfile, Line, &LineNum ) != NULL ) { { char* line_type, * keyname, * fctname; char* line_type, * keyname, * fctname; line_type = strtok( Line, " \t\n\r" ); line_type = strtok( Line, " \t\n\r" ); msg = CONV_FROM_UTF8( line_type ); msg = CONV_FROM_UTF8( line_type ); if( msg[0] == '[' ) // A tag is found. search infos in list { CurrentHotkeyList = NULL; Ki_HotkeyInfoSectionDescriptor* DList = DescList; for( ; DList->m_HK_InfoList != NULL; DList++ ) { if( *DList->m_SectionTag == msg ) { CurrentHotkeyList = DList->m_HK_InfoList; break; } } continue; } if( msg != wxT( "shortcut" ) ) if( msg != wxT( "shortcut" ) ) continue; continue; if( msg == wxT( "$Endlist" ) ) if( msg == wxT( "$Endlist" ) ) break; break; if( CurrentHotkeyList == NULL ) continue; /* Get the key name */ /* Get the key name */ strtok( NULL, "\"\n\r" ); strtok( NULL, "\"\n\r" ); Loading eeschema/eeconfig.cpp +3 −13 Original line number Original line Diff line number Diff line Loading @@ -11,12 +11,10 @@ #include "eeconfig.h" #include "eeconfig.h" #include "worksheet.h" #include "worksheet.h" #include "hotkeys_basic.h" #include "hotkeys_basic.h" #include "hotkeys.h" #include "id.h" #include "id.h" extern Ki_HotkeyInfo *s_Schematic_Hotkey_List[]; extern Ki_HotkeyInfo *s_LibEdit_Hotkey_List[]; /* Variables locales */ /* Variables locales */ Loading Loading @@ -80,11 +78,7 @@ wxString FullFileName; FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("eeschema"); FullFileName += wxT("eeschema"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; WriteHotkeyConfigFile(FullFileName, s_Schematic_Hotkey_List, true); WriteHotkeyConfigFile(FullFileName, s_Eeschema_Hokeys_Descr, true); FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("libedit"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; WriteHotkeyConfigFile(FullFileName, s_LibEdit_Hotkey_List, true); break; break; case ID_PREFERENCES_READ_CONFIG_HOTKEYS: case ID_PREFERENCES_READ_CONFIG_HOTKEYS: Loading @@ -107,11 +101,7 @@ bool Read_Hotkey_Config( WinEDA_DrawFrame * frame, bool verbose ) wxString FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; wxString FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("eeschema"); FullFileName += wxT("eeschema"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; frame->ReadHotkeyConfigFile(FullFileName, s_Schematic_Hotkey_List, verbose); frame->ReadHotkeyConfigFile(FullFileName, s_Eeschema_Hokeys_Descr, verbose); FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("libedit"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; frame->ReadHotkeyConfigFile(FullFileName, s_LibEdit_Hotkey_List, verbose); return TRUE; return TRUE; } } Loading Loading
change_log.txt +8 −0 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,14 @@ Started 2007-June-11 Please add newer entries at the top, list the date and your name with Please add newer entries at the top, list the date and your name with email address. email address. 2007-sept-6 UPDATE Jean-Pierre Charras <jean-pierre.charras@inpg.fr> ================================================================================ + eeschema & pcbnew Programmable hotkeys update. some features are still subject to change (mainly path for config files: see 2007-aug-30 UPDATE)) The preference menu has a command to create and reread config hotkey files. the hotkey ? lists the current hotkeys. 2007-Sep-4 UPDATE Dick Hollenbeck <dick@softplc.com> 2007-Sep-4 UPDATE Dick Hollenbeck <dick@softplc.com> ================================================================================ ================================================================================ Loading
common/common.cpp +1 −16 Original line number Original line Diff line number Diff line Loading @@ -265,7 +265,7 @@ void MyFree( void* pt_mem ) /**************************************************************/ /**************************************************************/ wxString ReturnPcbLayerName( int layer_number, bool is_filename, bool is_gui ) wxString ReturnPcbLayerName( int layer_number, bool is_filename ) /**************************************************************/ /**************************************************************/ /* Return the name of the layer number "layer_number". /* Return the name of the layer number "layer_number". Loading Loading @@ -305,21 +305,6 @@ wxString ReturnPcbLayerName( int layer_number, bool is_filename, bool is_gui ) else else layer_name = layer_name_list[layer_number]; layer_name = layer_name_list[layer_number]; if( is_gui ) { static const wxString hotkey_list[] = { wxT( "(PgDn)" ), wxT( "(F5)" ), wxT( "(F6)" ), wxT( "(F7)" ), wxT( "(F8)" ), wxT( "(F9)" ), wxT( "(F10)" ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " (PgUp)" ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ), wxT( " " ) }; layer_name += wxT( " " ) + hotkey_list[layer_number]; } return layer_name; return layer_name; } } Loading
common/edaappl.cpp +1 −0 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,7 @@ #include "worksheet.h" #include "worksheet.h" #include "id.h" #include "id.h" #include "build_version.h" #include "build_version.h" #include "hotkeys_basic.h" #include "bitmaps.h" #include "bitmaps.h" #include "Language.xpm" #include "Language.xpm" Loading
common/hotkeys_basic.cpp +112 −38 Original line number Original line Diff line number Diff line Loading @@ -4,6 +4,7 @@ /* Some functions to handle hotkeys in kicad /* Some functions to handle hotkeys in kicad */ */ #include "fctsys.h" #include "fctsys.h" #include "common.h" #include "common.h" #include "wxstruct.h" #include "wxstruct.h" Loading @@ -11,7 +12,7 @@ #include "macros.h" #include "macros.h" /* Class to handle hotkey commnands. hotkeys have a default value /* 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 the real key code changed by user from a key code list file */ */ Ki_HotkeyInfo::Ki_HotkeyInfo( const wxChar* infomsg, int idcommand, int keycode ) Ki_HotkeyInfo::Ki_HotkeyInfo( const wxChar* infomsg, int idcommand, int keycode ) Loading @@ -30,7 +31,8 @@ struct hotkey_name_descr int m_KeyCode; int m_KeyCode; }; }; struct hotkey_name_descr s_Hotkey_Name_List[] = static struct hotkey_name_descr s_Hotkey_Name_List[] = { { { wxT( "F1" ), WXK_F1 }, { wxT( "F1" ), WXK_F1 }, { wxT( "F2" ), WXK_F2 }, { wxT( "F2" ), WXK_F2 }, Loading Loading @@ -136,7 +138,7 @@ wxString ReturnKeyNameFromKeyCode( int keycode ) /* /* * return the key name from the key code * return the key name from the key code * Only some wxWidgets key values are handled for function key * Only some wxWidgets key values are handled for function key ( see s_Hotkey_Name_List[] ) * @param key = key code (ascii value, or wxWidgets value for function keys) * @param key = key code (ascii value, or wxWidgets value for function keys) * @return the key name in a wxString * @return the key name in a wxString */ */ Loading Loading @@ -191,9 +193,41 @@ wxString AddHotkeyName( const wxString& text, Ki_HotkeyInfo** List, int CommandI } } /***********************************************************************/ /***********************************************************/ wxString AddHotkeyName( const wxString& text, struct Ki_HotkeyInfoSectionDescriptor* DescList, int CommandId ) /***********************************************************/ /* * Add the key name from the Command id value ( m_Idcommand member value) * @param List = pointer to a Ki_HotkeyInfoSectionDescriptor* DescrList 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; Ki_HotkeyInfo** List; for( ; DescList->m_HK_InfoList != NULL; DescList++ ) { List = DescList->m_HK_InfoList; keyname = ReturnKeyNameFromCommandId( List, CommandId ); if( !keyname.IsEmpty() ) { msg << wxT( " (" ) << keyname << wxT( ")" ); break; } } return msg; } /*************************************************************************/ wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId ) wxString ReturnKeyNameFromCommandId( Ki_HotkeyInfo** List, int CommandId ) /***********************************************************************/ /*************************************************************************/ /* /* * return the key name from the Command id value ( m_Idcommand member value) * return the key name from the Command id value ( m_Idcommand member value) Loading Loading @@ -225,7 +259,7 @@ static int ReturnKeyCodeFromKeyName( const wxString& keyname ) /* /* * return the key code from its key name * return the key code from its key name * Only some wxWidgets key values are handled for function key * Only some wxWidgets key values are handled for function key * @param keyname = wxString key name to find in s_Hotkey_Name_List[] * @param keyname = wxString key name to find in s_Hotkey_Name_List[], like F2 or space or an usual (ascii) char * @return the key code * @return the key code */ */ { { Loading @@ -246,21 +280,25 @@ static int ReturnKeyCodeFromKeyName( const wxString& keyname ) } } /****************************************************************************/ /********************************************************************************************/ void DisplayHotkeyList( WinEDA_DrawFrame* frame, Ki_HotkeyInfo** List ) void DisplayHotkeyList( WinEDA_DrawFrame* frame, struct Ki_HotkeyInfoSectionDescriptor* DescList ) /*****************************************************************************/ /***************************************************************************************/ /* /* * Displays the current hotkey list * Displays the current hotkey list * @param frame = current open frame * @param frame = current active frame * @param List = pointer to a Ki_HotkeyInfo list of commands * @param List = pointer to a Ki_HotkeyInfoSectionDescriptor list (Null terminated) * @return none * @return none */ */ { { wxString keyname; wxString keyname; Ki_HotkeyInfo** List; wxString msg = _( "Current hotkey list:\n\n" ); wxString msg = _( "Current hotkey list:\n\n" ); for( ; DescList->m_HK_InfoList != NULL; DescList++ ) { List = DescList->m_HK_InfoList; for( ; *List != NULL; List++ ) for( ; *List != NULL; List++ ) { { Ki_HotkeyInfo* hk_decr = *List; Ki_HotkeyInfo* hk_decr = *List; Loading @@ -268,6 +306,7 @@ void DisplayHotkeyList( WinEDA_DrawFrame* frame, Ki_HotkeyInfo** List ) keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode ); keyname = ReturnKeyNameFromKeyCode( hk_decr->m_KeyCode ); msg += keyname + wxT( ": " ) + hk_decr->m_InfoMsg + wxT( "\n" ); msg += keyname + wxT( ": " ) + hk_decr->m_InfoMsg + wxT( "\n" ); } } } DisplayInfo( frame, msg ); DisplayInfo( frame, msg ); } } Loading Loading @@ -297,7 +336,8 @@ int GetCommandCodeFromHotkey( int key, Ki_HotkeyInfo** List ) /*************************************************************************/ /*************************************************************************/ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, Ki_HotkeyInfo** List, bool verbose ) struct Ki_HotkeyInfoSectionDescriptor* DescList, bool verbose ) /*************************************************************************/ /*************************************************************************/ /* /* Loading Loading @@ -371,13 +411,25 @@ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, } } } } /* print the last line */ /* print the last line of the info section */ if( !msg.IsEmpty() ) if( !msg.IsEmpty() ) msg += wxT( "\n" ); msg += wxT( "\n" ); msg += wxT( "#\n#\n" ); msg += wxT( "#\n#\n" ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); /* Print the current list */ /* Print the current hotkey list */ Ki_HotkeyInfo** List; for( ; DescList->m_HK_InfoList != NULL; DescList++ ) { if( DescList->m_Comment ) { fprintf( cfgfile, "# " ); fprintf( cfgfile, DescList->m_Comment ); fprintf( cfgfile, "\n" ); } fprintf( cfgfile, CONV_TO_UTF8( *DescList->m_SectionTag ) ); fprintf( cfgfile, "\n" ); List = DescList->m_HK_InfoList; for( ; *List != NULL; List++ ) for( ; *List != NULL; List++ ) { { Ki_HotkeyInfo* hk_decr = *List; Ki_HotkeyInfo* hk_decr = *List; Loading @@ -389,6 +441,7 @@ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, msg += keyname + wxT( ": " ) + infokey + wxT( "\n" ); msg += keyname + wxT( ": " ) + infokey + wxT( "\n" ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); } } } msg = wxT( "$Endlist\n" ); msg = wxT( "$Endlist\n" ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); fprintf( cfgfile, CONV_TO_UTF8( msg ) ); Loading @@ -399,15 +452,17 @@ int WinEDA_BasicFrame::WriteHotkeyConfigFile( const wxString& Filename, /********************************************************************************************/ /********************************************************************************************/ int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename, int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename, Ki_HotkeyInfo** CurrentHotkeyList, bool verbose ) struct Ki_HotkeyInfoSectionDescriptor* DescList, bool verbose ) /********************************************************************************************/ /********************************************************************************************/ /* /* * Read a configuration file (<file>.key) and fill the current hotkey list with hotkeys * 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 Filename = default full file name to create. If void, A filename will be asked * @param CurrentHotkeyList = current hotkey list to initialise. * @param DescList = current hotkey list descr. to initialise. * the input format is: shortcut "key" "function" * the input format is: shortcut "key" "function" * lines starting by # are ignored (comments) * lines starting by # are ignored (comments) * lines like [xxx] are tags (example: [common] or [libedit] which identify sections * * */ */ { { Loading Loading @@ -449,16 +504,35 @@ int WinEDA_BasicFrame::ReadHotkeyConfigFile( const wxString& Filename, wxString keyname; wxString keyname; char Line[1024]; char Line[1024]; int LineNum = 0; int LineNum = 0; Ki_HotkeyInfo** CurrentHotkeyList = NULL; /* Read the file */ /* Read the file */ while( GetLine( cfgfile, Line, &LineNum ) != NULL ) while( GetLine( cfgfile, Line, &LineNum ) != NULL ) { { char* line_type, * keyname, * fctname; char* line_type, * keyname, * fctname; line_type = strtok( Line, " \t\n\r" ); line_type = strtok( Line, " \t\n\r" ); msg = CONV_FROM_UTF8( line_type ); msg = CONV_FROM_UTF8( line_type ); if( msg[0] == '[' ) // A tag is found. search infos in list { CurrentHotkeyList = NULL; Ki_HotkeyInfoSectionDescriptor* DList = DescList; for( ; DList->m_HK_InfoList != NULL; DList++ ) { if( *DList->m_SectionTag == msg ) { CurrentHotkeyList = DList->m_HK_InfoList; break; } } continue; } if( msg != wxT( "shortcut" ) ) if( msg != wxT( "shortcut" ) ) continue; continue; if( msg == wxT( "$Endlist" ) ) if( msg == wxT( "$Endlist" ) ) break; break; if( CurrentHotkeyList == NULL ) continue; /* Get the key name */ /* Get the key name */ strtok( NULL, "\"\n\r" ); strtok( NULL, "\"\n\r" ); Loading
eeschema/eeconfig.cpp +3 −13 Original line number Original line Diff line number Diff line Loading @@ -11,12 +11,10 @@ #include "eeconfig.h" #include "eeconfig.h" #include "worksheet.h" #include "worksheet.h" #include "hotkeys_basic.h" #include "hotkeys_basic.h" #include "hotkeys.h" #include "id.h" #include "id.h" extern Ki_HotkeyInfo *s_Schematic_Hotkey_List[]; extern Ki_HotkeyInfo *s_LibEdit_Hotkey_List[]; /* Variables locales */ /* Variables locales */ Loading Loading @@ -80,11 +78,7 @@ wxString FullFileName; FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("eeschema"); FullFileName += wxT("eeschema"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; WriteHotkeyConfigFile(FullFileName, s_Schematic_Hotkey_List, true); WriteHotkeyConfigFile(FullFileName, s_Eeschema_Hokeys_Descr, true); FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("libedit"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; WriteHotkeyConfigFile(FullFileName, s_LibEdit_Hotkey_List, true); break; break; case ID_PREFERENCES_READ_CONFIG_HOTKEYS: case ID_PREFERENCES_READ_CONFIG_HOTKEYS: Loading @@ -107,11 +101,7 @@ bool Read_Hotkey_Config( WinEDA_DrawFrame * frame, bool verbose ) wxString FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; wxString FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("eeschema"); FullFileName += wxT("eeschema"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; frame->ReadHotkeyConfigFile(FullFileName, s_Schematic_Hotkey_List, verbose); frame->ReadHotkeyConfigFile(FullFileName, s_Eeschema_Hokeys_Descr, verbose); FullFileName = DEFAULT_HOTKEY_FILENAME_PATH; FullFileName += wxT("libedit"); FullFileName += DEFAULT_HOTKEY_FILENAME_EXT; frame->ReadHotkeyConfigFile(FullFileName, s_LibEdit_Hotkey_List, verbose); return TRUE; return TRUE; } } Loading