Commit 93b9d3fd authored by charras's avatar charras
Browse files

fixed 2 serious bugs in Libedit.

fixed redundant hot keys in Eeschema
parent 0084b53e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -12,6 +12,14 @@ email address.
    This makes it easier to preview the page in a browser.  Then autogenerate
    the *.h file from the html using a CMake script.

2009-Dec-2 UPDATE Wayne Stambaugh <stambaughw@verizon.net>
================================================================================
Compiler warning, object name, bug, and string fixes.
* Fixed EESchema options dialog focus bug so escape key now works in GTK.
* Rename schematic objects for improved readability.
* Fixed GCC compiler warnings in plot code.
* Added paragraph in UIpolicies.txt about setting dialog box sizes.
* Lots of message box string clean up.

2009-Nov-05 UPDATE Jean-Pierre Charras <jean-pierre.charras@gipsa-lab.inpg.fr>
================================================================================
+24 −22
Original line number Diff line number Diff line
@@ -39,6 +39,11 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
                DrawEntry = NULL;
                break;

            case COMPONENT_PIN_DRAW_TYPE:
                PlacePin( DC );
                DrawEntry = NULL;
                break;

            default:
                EndDrawGraphicItem( DC );
                break;
@@ -157,41 +162,38 @@ void WinEDA_LibeditFrame::OnLeftClick( wxDC* DC, const wxPoint& MousePos )
void WinEDA_LibeditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
{
    wxPoint        pos = GetPosition();
    LIB_DRAW_ITEM* DrawEntry = m_drawItem;

    if( m_component == NULL )
        return;

    if( ( DrawEntry == NULL ) || ( DrawEntry->m_Flags == 0 ) )
    if( ( m_drawItem == NULL ) || ( m_drawItem->m_Flags == 0 ) )
    {   // We can locate an item
        DrawEntry = m_drawItem =
        m_drawItem =
            m_component->LocateDrawItem( m_unit, m_convert, TYPE_NOT_INIT,
                                         GetScreen()->m_MousePosition );
        if( DrawEntry == NULL )
        if( m_drawItem == NULL )
        {
            DrawEntry = m_drawItem =
            m_drawItem =
                m_component->LocateDrawItem( m_unit, m_convert, TYPE_NOT_INIT,
                                             GetScreen()->m_Curseur );
        }
        if( DrawEntry == NULL )
        if( m_drawItem == NULL )
        {
            EditComponentProperties();
        }
    }

    if( DrawEntry )
        DrawEntry->DisplayInfo( this );
    if( m_drawItem )
        m_drawItem->DisplayInfo( this );
    else
        return;

    m_drawItem = DrawEntry;

    DrawPanel->m_IgnoreMouseEvents = TRUE;

    switch( DrawEntry->Type() )
    switch( m_drawItem->Type() )
    {
    case COMPONENT_PIN_DRAW_TYPE:
        if( DrawEntry->m_Flags == 0 )
        if( m_drawItem->m_Flags == 0 )
        {
            wxCommandEvent cmd( wxEVT_COMMAND_MENU_SELECTED );
            cmd.SetId( ID_LIBEDIT_EDIT_PIN );
@@ -202,35 +204,35 @@ void WinEDA_LibeditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
    case COMPONENT_ARC_DRAW_TYPE:
    case COMPONENT_CIRCLE_DRAW_TYPE:
    case COMPONENT_RECT_DRAW_TYPE:
        if( DrawEntry->m_Flags == 0 )
        if( m_drawItem->m_Flags == 0 )
        {
            EditGraphicSymbol( DC, DrawEntry );
            EditGraphicSymbol( DC, m_drawItem );
        }
        break;

    case COMPONENT_LINE_DRAW_TYPE:
    case COMPONENT_POLYLINE_DRAW_TYPE:
        if( DrawEntry->m_Flags == 0 )
        if( m_drawItem->m_Flags == 0 )
        {
            EditGraphicSymbol( DC, DrawEntry );
            EditGraphicSymbol( DC, m_drawItem );
        }
        else if( DrawEntry->m_Flags & IS_NEW )
        else if( m_drawItem->m_Flags & IS_NEW )
        {
            EndDrawGraphicItem( DC );
        }
        break;

    case COMPONENT_GRAPHIC_TEXT_DRAW_TYPE:
        if( DrawEntry->m_Flags == 0 )
        if( m_drawItem->m_Flags == 0 )
        {
            EditSymbolText( DC, DrawEntry );
            EditSymbolText( DC, m_drawItem );
        }
        break;

    case COMPONENT_FIELD_DRAW_TYPE:
        if( DrawEntry->m_Flags == 0 )
        if( m_drawItem->m_Flags == 0 )
        {
            EditField( DC, (LIB_FIELD*) DrawEntry );
            EditField( DC, (LIB_FIELD*) m_drawItem );
        }
        break;

@@ -239,7 +241,7 @@ void WinEDA_LibeditFrame::OnLeftDClick( wxDC* DC, const wxPoint& MousePos )
        wxString msg;
        msg.Printf( wxT( "WinEDA_LibeditFrame::OnLeftDClick Error: unknown \
StructType %d" ),
                    DrawEntry->Type() );
                    m_drawItem->Type() );
        DisplayError( this, msg );
        break;
    }
+4 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ void WinEDA_LibeditFrame::OnEditPin( wxCommandEvent& event )
    if( m_drawItem == NULL || m_drawItem->Type() != COMPONENT_PIN_DRAW_TYPE )
        return;

    int item_flags = m_drawItem->m_Flags;       // save flags to restore them after editing
    LIB_PIN* pin = (LIB_PIN*) m_drawItem;

    DIALOG_LIB_EDIT_PIN dlg( this );
@@ -131,6 +132,9 @@ void WinEDA_LibeditFrame::OnEditPin( wxCommandEvent& event )
    }

    pin->EnableEditMode( false, g_EditPinByPinIsOn );

    // Restore pin flags, that can be changed by the dialog editor
    pin->m_Flags = item_flags;
}


+6 −8
Original line number Diff line number Diff line
@@ -2,9 +2,8 @@
<!-- This file is used to autogenerate a *.h file, but you can load it into a browser to preview -->
<h1>Freerouter Guidelines:</h1>
<ol>
<li> in pcbnew: establish the number of layers, and save the new *.brd file.</li><br>

<li> in a text editor: load the board (*.brd) file, and edit the layer names and types.
<li> in pcbnew, using the Layers Setup dialog:</li><br>
 <li>choose the number of layers, and enter the name of each layer.</li><br>
    These should look something like this:
<ul>
    <li>Layer[0] Back signal</li>
@@ -13,14 +12,13 @@
    <li>Layer[3] H1_Signal signal</li>
    <li>Layer[4] Ground power</li>
    <li>Layer[15] Front signal</li>

</ul><br>
    Notice that after the layer name there is a layer type field, either 'signal' or 'power'.
    Notice that after the layer name there is a layer type field, either 'signal' or 'power'.<br>
    Any layer identified as 'power' will be removed from the layer menu in Freerouter,
    as this will be assumed to contain a power zone.
</li><br>
</li><br><br>

<li> in pcbnew: re-load the board, and establish board perimeter.</li><br>
<li> in pcbnew:  establish board perimeter.</li><br>

<li> in pcbnew: load in the netlist so you have all the components defined and instantiated.</li><br>

+13 −11
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ 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 HkAddNewTrack( wxT( "Add New Track/Segment" ), HK_ADD_NEW_TRACK, 'X' );
static Ki_HotkeyInfo HkAddNewTrack( wxT( "Add new track" ), HK_ADD_NEW_TRACK, 'X' );
static Ki_HotkeyInfo HkAddVia( wxT( "Add Via" ), HK_ADD_VIA, 'V' );
static Ki_HotkeyInfo HkAddMicroVia( wxT( "Add MicroVia" ), HK_ADD_MICROVIA, 'V'
                                    + GR_KB_CTRL );
@@ -97,7 +97,6 @@ static Ki_HotkeyInfo HkSwitchUnits( wxT( "Switch Units" ), HK_SWITCH_UNITS, 'U'
static Ki_HotkeyInfo HkTrackDisplayMode( wxT( "Track Display Mode" ),
                                         HK_SWITCH_TRACK_DISPLAY_MODE, 'K' );
static Ki_HotkeyInfo HkAddModule( wxT( "Add Module" ), HK_ADD_MODULE, 'O' );
static Ki_HotkeyInfo HkAddTrack( wxT( "Add Track or Via" ), HK_ADD_TRACK, 'J' );

// List of common hotkey descriptors
Ki_HotkeyInfo
@@ -122,7 +121,7 @@ Ki_HotkeyInfo* s_board_edit_Hotkey_List[] =
    &HkSwitch2InnerLayer2,     &HkSwitch2InnerLayer3,        &HkSwitch2InnerLayer4,
    &HkSwitch2InnerLayer5,     &HkSwitch2InnerLayer6,        &HkSwitch2ComponentLayer,
    &HkSwitch2NextCopperLayer, &HkSwitch2PreviousCopperLayer,&HkAddModule,
    &HkAddTrack,               NULL
    NULL
};

// List of hotkey descriptors for the module editor
@@ -318,11 +317,6 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct
        GetEventHandler()->ProcessEvent( cmd );
        break;

    case HK_ADD_TRACK:
        cmd.SetId( ID_TRACK_BUTT );
        GetEventHandler()->ProcessEvent( cmd );
        break;

    case HK_ZOOM_AUTO:
        cmd.SetId( ID_ZOOM_PAGE );
        GetEventHandler()->ProcessEvent( cmd );
@@ -468,9 +462,18 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct
        break;

    case HK_ADD_NEW_TRACK: // Start new track
        if( m_ID_current_state == ID_TRACK_BUTT && GetScreen()->m_Active_Layer
            <= CMP_N )
        if( GetScreen()->m_Active_Layer > CMP_N )
            break;

        if( m_ID_current_state != ID_TRACK_BUTT && ItemFree )
        {
            cmd.SetId( ID_TRACK_BUTT );
            GetEventHandler()->ProcessEvent( cmd );
        }

        if( m_ID_current_state != ID_TRACK_BUTT )
            break;
 
            if( ItemFree ) // no track in progress: 
            {
                TRACK* track = Begin_Route( NULL, DC );
@@ -487,7 +490,6 @@ void WinEDA_PcbFrame::OnHotKey( wxDC* DC, int hotkey, EDA_BaseStruct* DrawStruct
                    SetCurItem( track, false );
                DrawPanel->m_AutoPAN_Request = true;
            }
        }
        break;

    // Footprint edition: