diff --git a/eeschema/eeschema_id.h b/eeschema/eeschema_id.h index b8948320d8..8646173317 100644 --- a/eeschema/eeschema_id.h +++ b/eeschema/eeschema_id.h @@ -95,17 +95,18 @@ enum id_eeschema_frm ID_POPUP_START_RANGE, ID_POPUP_SCH_DELETE, ID_POPUP_SCH_BREAK_WIRE, + ID_POPUP_SCH_BEGIN_WIRE, + ID_POPUP_SCH_BEGIN_BUS, + ID_POPUP_END_LINE, ID_POPUP_SCH_DELETE_CONNECTION, ID_POPUP_SCH_DELETE_NODE, ID_POPUP_SCH_DELETE_CMP, - ID_POPUP_SCH_UNUSED_2, ID_POPUP_SCH_ENTRY_SELECT_SLASH, ID_POPUP_SCH_ENTRY_SELECT_ANTISLASH, ID_POPUP_SCH_INIT_CMP, ID_POPUP_SCH_SET_SHAPE_TEXT, - ID_POPUP_END_LINE, ID_POPUP_SCH_END_SHEET, ID_POPUP_SCH_RESIZE_SHEET, ID_POPUP_SCH_CLEANUP_SHEET, diff --git a/eeschema/hotkeys.cpp b/eeschema/hotkeys.cpp index 274d1631dd..28cde8f179 100644 --- a/eeschema/hotkeys.cpp +++ b/eeschema/hotkeys.cpp @@ -130,14 +130,17 @@ static EDA_HOTKEY HkRedo( wxT( "Redo" ), HK_REDO, GR_KB_SHIFT + GR_KB_CTRL + 'Z' #endif // Schematic editor +static EDA_HOTKEY HkBeginWire( wxT( "Begin Wire" ), HK_BEGIN_WIRE, 'W', ID_WIRE_BUTT ); +static EDA_HOTKEY HkBeginBus( wxT( "Begin Bus" ), HK_BEGIN_BUS, 'B', ID_BUS_BUTT ); +static EDA_HOTKEY HkEndLineWireBus( wxT( "End Line Wire Bus" ), HK_END_CURR_LINEWIREBUS, 'K', + ID_POPUP_END_LINE ); + static EDA_HOTKEY HkAddLabel( wxT( "Add Label" ), HK_ADD_LABEL, 'L', ID_LABEL_BUTT ); static EDA_HOTKEY HkAddHierarchicalLabel( wxT( "Add Hierarchical Label" ), HK_ADD_HLABEL, 'H', ID_HIERLABEL_BUTT ); static EDA_HOTKEY HkAddGlobalLabel( wxT( "Add Global Label" ), HK_ADD_GLABEL, GR_KB_CTRL + 'L', ID_GLABEL_BUTT ); static EDA_HOTKEY HkAddJunction( wxT( "Add Junction" ), HK_ADD_JUNCTION, 'J', ID_JUNCTION_BUTT ); -static EDA_HOTKEY HkBeginWire( wxT( "Draw Wire" ), HK_BEGIN_WIRE, 'W', ID_WIRE_BUTT ); -static EDA_HOTKEY HkBeginBus( wxT( "Draw Bus" ), HK_BEGIN_BUS, 'B', ID_BUS_BUTT ); static EDA_HOTKEY HkAddComponent( wxT( "Add Component" ), HK_ADD_NEW_COMPONENT, 'A', ID_SCH_PLACE_COMPONENT ); static EDA_HOTKEY HkAddPower( wxT( "Add Power" ), HK_ADD_NEW_POWER, 'P', @@ -240,6 +243,7 @@ EDA_HOTKEY* s_Schematic_Hotkey_List[] = &HkEditComponentFootprint, &HkBeginWire, &HkBeginBus, + &HkEndLineWireBus, &HkAddLabel, &HkAddHierarchicalLabel, &HkAddGlobalLabel, @@ -373,13 +377,21 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, case HK_DELETE: if( notBusy ) DeleteItemAtCrossHair( aDC ); - break; case HK_REPEAT_LAST: if( notBusy && m_itemToRepeat && ( m_itemToRepeat->GetFlags() == 0 ) ) RepeatDrawItem( aDC ); + break; + case HK_END_CURR_LINEWIREBUS: + // this key terminates a new line/bus/wire in progress + if( aItem && aItem->IsNew() && + aItem->Type() == SCH_LINE_T ) + { + cmd.SetId( hotKey->m_IdMenuEvent ); + GetEventHandler()->ProcessEvent( cmd ); + } break; case HK_UNDO: @@ -390,7 +402,6 @@ void SCH_EDIT_FRAME::OnHotKey( wxDC* aDC, int aHotKey, const wxPoint& aPosition, cmd.SetId( hotKey->m_IdMenuEvent ); GetEventHandler()->ProcessEvent( cmd ); } - break; case HK_FIND_NEXT_ITEM: diff --git a/eeschema/hotkeys.h b/eeschema/hotkeys.h index 2e7147b76b..966b085ede 100644 --- a/eeschema/hotkeys.h +++ b/eeschema/hotkeys.h @@ -34,6 +34,7 @@ enum hotkey_id_commnand { HK_ADD_NEW_POWER, HK_BEGIN_WIRE, HK_BEGIN_BUS, + HK_END_CURR_LINEWIREBUS, HK_ADD_WIRE_ENTRY, HK_ADD_BUS_ENTRY, HK_ADD_LABEL, diff --git a/eeschema/onrightclick.cpp b/eeschema/onrightclick.cpp index 49bf5b374a..791561ab7a 100644 --- a/eeschema/onrightclick.cpp +++ b/eeschema/onrightclick.cpp @@ -99,7 +99,8 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) } } - // If Command in progress: add "cancel" and "end tool" menu + // If a command is in progress: add "cancel" and "end tool" menu + // If if( GetToolId() != ID_NO_TOOL_SELECTED ) { if( item && item->GetFlags() ) @@ -114,6 +115,24 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu ) } PopMenu->AppendSeparator(); + + switch( GetToolId() ) + { + case ID_WIRE_BUTT: + AddMenusForWire( PopMenu, NULL, this ); + if( item == NULL ) + PopMenu->AppendSeparator(); + break; + + case ID_BUS_BUTT: + AddMenusForBus( PopMenu, NULL, this ); + if( item == NULL ) + PopMenu->AppendSeparator(); + break; + + default: + break; + } } else { @@ -533,14 +552,22 @@ void SCH_EDIT_FRAME::addJunctionMenuEntries( wxMenu* aMenu, SCH_JUNCTION* aJunct void AddMenusForWire( wxMenu* PopMenu, SCH_LINE* Wire, SCH_EDIT_FRAME* frame ) { - bool is_new = Wire->IsNew(); SCH_SCREEN* screen = frame->GetScreen(); wxPoint pos = screen->GetCrossHairPosition(); wxString msg; + if( Wire == NULL ) + { + msg = AddHotkeyName( _( "Begin Wire" ), s_Schematic_Hokeys_Descr, HK_BEGIN_WIRE ); + AddMenuItem( PopMenu, ID_POPUP_SCH_BEGIN_WIRE, msg, KiBitmap( add_line_xpm ) ); + return; + } + + bool is_new = Wire->IsNew(); if( is_new ) { - AddMenuItem( PopMenu, ID_POPUP_END_LINE, _( "Wire End" ), KiBitmap( apply_xpm ) ); + msg = AddHotkeyName( _( "Wire End" ), s_Schematic_Hokeys_Descr, HK_END_CURR_LINEWIREBUS ); + AddMenuItem( PopMenu, ID_POPUP_END_LINE, msg, KiBitmap( apply_xpm ) ); return; } @@ -576,13 +603,21 @@ void AddMenusForWire( wxMenu* PopMenu, SCH_LINE* Wire, SCH_EDIT_FRAME* frame ) void AddMenusForBus( wxMenu* PopMenu, SCH_LINE* Bus, SCH_EDIT_FRAME* frame ) { - bool is_new = Bus->IsNew(); wxPoint pos = frame->GetScreen()->GetCrossHairPosition(); wxString msg; + if( Bus == NULL ) + { + msg = AddHotkeyName( _( "Begin Bus" ), s_Schematic_Hokeys_Descr, HK_BEGIN_BUS ); + AddMenuItem( PopMenu, ID_POPUP_SCH_BEGIN_BUS, msg, KiBitmap( add_bus_xpm ) ); + return; + } + + bool is_new = Bus->IsNew(); if( is_new ) { - AddMenuItem( PopMenu, ID_POPUP_END_LINE, _( "Bus End" ), KiBitmap( apply_xpm ) ); + msg = AddHotkeyName( _( "Bus End" ), s_Schematic_Hokeys_Descr, HK_END_CURR_LINEWIREBUS ); + AddMenuItem( PopMenu, ID_POPUP_END_LINE, msg, KiBitmap( apply_xpm ) ); return; } diff --git a/eeschema/schedit.cpp b/eeschema/schedit.cpp index 6fc86aee1f..b52c3fe664 100644 --- a/eeschema/schedit.cpp +++ b/eeschema/schedit.cpp @@ -68,6 +68,8 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) case ID_POPUP_CANCEL_CURRENT_COMMAND: case ID_POPUP_SCH_ENTRY_SELECT_SLASH: case ID_POPUP_SCH_ENTRY_SELECT_ANTISLASH: + case ID_POPUP_SCH_BEGIN_WIRE: + case ID_POPUP_SCH_BEGIN_BUS: case ID_POPUP_END_LINE: case ID_POPUP_SCH_SET_SHAPE_TEXT: case ID_POPUP_SCH_CLEANUP_SHEET: @@ -161,8 +163,17 @@ void SCH_EDIT_FRAME::Process_Special_Functions( wxCommandEvent& event ) EndSegment( &dc ); break; - case ID_POPUP_SCH_SET_SHAPE_TEXT: + case ID_POPUP_SCH_BEGIN_WIRE: + m_canvas->MoveCursorToCrossHair(); + OnLeftClick( &dc, screen->GetCrossHairPosition() ); + break; + case ID_POPUP_SCH_BEGIN_BUS: + m_canvas->MoveCursorToCrossHair(); + OnLeftClick( &dc, screen->GetCrossHairPosition() ); + break; + + case ID_POPUP_SCH_SET_SHAPE_TEXT: // Not used break; diff --git a/eeschema/schframe.cpp b/eeschema/schframe.cpp index 826ec01283..92be307df2 100644 --- a/eeschema/schframe.cpp +++ b/eeschema/schframe.cpp @@ -902,6 +902,16 @@ void SCH_EDIT_FRAME::addCurrentItemToList( wxDC* aDC ) undoItem = sheet; } + else if( item->Type() == SCH_FIELD_T ) + { + SCH_COMPONENT* cmp = (SCH_COMPONENT*) item->GetParent(); + + wxCHECK_RET( (cmp != NULL) && (cmp->Type() == SCH_COMPONENT_T), + wxT( "Cannot place field in invalid schematic component object." ) ); + + undoItem = cmp; + } + if( item->IsNew() ) { if( item->Type() == SCH_SHEET_T ) @@ -932,8 +942,18 @@ void SCH_EDIT_FRAME::addCurrentItemToList( wxDC* aDC ) } else { + // Here, item is not a basic schematic item, but an item inside + // a parent basic schematic item, + // currently: sheet pin or component field. + // currently, only a sheet pin can be found as new item, + // because new component fields have a specific handling, and do not appears here SaveCopyInUndoList( undoItem, UR_CHANGED ); - ( (SCH_SHEET*)undoItem )->AddPin( (SCH_SHEET_PIN*) item ); + + if( item->Type() == SCH_SHEET_PIN_T ) + ( (SCH_SHEET*)undoItem )->AddPin( (SCH_SHEET_PIN*) item ); + else + wxLogMessage(wxT( "addCurrentItemToList: expected type = SCH_SHEET_PIN_T, actual type = %d" ), + item->Type() ); } } else diff --git a/template/stm32f100-discovery-shield/meta/board_stm32vl_discovery.png b/template/stm32f100-discovery-shield/meta/board_stm32vl_discovery.png new file mode 100644 index 0000000000..29087b72d7 Binary files /dev/null and b/template/stm32f100-discovery-shield/meta/board_stm32vl_discovery.png differ diff --git a/template/stm32f100-discovery-shield/meta/info.html b/template/stm32f100-discovery-shield/meta/info.html index 97aee6a8f5..ca0599df50 100644 --- a/template/stm32f100-discovery-shield/meta/info.html +++ b/template/stm32f100-discovery-shield/meta/info.html @@ -13,7 +13,8 @@ This project includes a PCB edge defined as the same size as the STM32F100 Disco board with the connectors placed correctly to align the two boards. All IO present on the Discovery board is connected to the project through 0.1" expansion headers.

-





+





(c)2012 Kerusey Karyu
diff --git a/template/stm32f100-discovery-shield/meta/stm32f0discovery.png b/template/stm32f100-discovery-shield/meta/stm32f0discovery.png deleted file mode 100644 index eca124197d..0000000000 Binary files a/template/stm32f100-discovery-shield/meta/stm32f0discovery.png and /dev/null differ diff --git a/template/stm32f100-discovery-shield/stm32f100-discovery-shield.brd b/template/stm32f100-discovery-shield/stm32f100-discovery-shield.brd index bc78755006..1d78725fe5 100644 --- a/template/stm32f100-discovery-shield/stm32f100-discovery-shield.brd +++ b/template/stm32f100-discovery-shield/stm32f100-discovery-shield.brd @@ -1,6 +1,6 @@ -PCBNEW-BOARD Version 1 date 2012-10-20 20:10:51 +PCBNEW-BOARD Version 1 date 22/10/2012 08:11:40 -# Created by Pcbnew(2012-10-17 BZR 3773)-testing +# Created by Pcbnew(2012-10-20 BZR 3775)-testing $GENERAL encoding utf-8 @@ -21,7 +21,7 @@ $EndGENERAL $SHEETDESCR Sheet A3 16535 11693 Title "STM32 Value Line Discovery - Shiled board" -Date "20 oct 2012" +Date "22 oct 2012" Rev "1.0" Comp "" Comment1 "" @@ -32,8 +32,8 @@ $EndSHEETDESCR $SETUP Layers 2 -Layer[0] Dolna signal -Layer[15] Gorna signal +Layer[0] Back signal +Layer[15] Front signal TrackWidth 100 TrackClearence 100 ZoneClearence 200