Commit 7327197c authored by bennett78's avatar bennett78
Browse files

Added Backannotate Footprints from Stuff File Feature

parent e2770b40
Loading
Loading
Loading
Loading

bitmaps/backanno.xpm

0 → 100644
+31 −0
Original line number Original line Diff line number Diff line
/* XPM */
#ifndef XPMMAIN
extern const char *backanno_xpm[];

#else
const char *backanno_xpm[] = {
/* width height num_colors chars_per_pixel */
"    16    16        3            1",
/* colors */
"  c None",
". c yellow",
"# c black",
/* pixels */
"                ",
"      ....      ",
"     ......     ",
"    ...##...    ",
"   ....##....   ",
"  .####.......  ",
" ..#.###..##... ",
" .###########.. ",
" ...##....##... ",
" ...###.....#.. ",
"  ..#.#..##...  ",
"   .#.#.####.   ",
"    ........    ",
"     ......     ",
"      ....      ",
"                "
};
#endif
+1 −0
Original line number Original line Diff line number Diff line
@@ -8,6 +8,7 @@ set(EESCHEMA_SRCS
    affiche.cpp
    affiche.cpp
    annotate.cpp
    annotate.cpp
    annotate_dialog.cpp
    annotate_dialog.cpp
    backanno.cpp
    block.cpp
    block.cpp
    block_libedit.cpp
    block_libedit.cpp
    busentry.cpp
    busentry.cpp

eeschema/backanno.cpp

0 → 100644
+99 −0
Original line number Original line Diff line number Diff line
/****************************************************************
 * EESchema: backanno.cpp 
 *  (functions for backannotating Footprint info 
 ****************************************************************/

#include "fctsys.h"
#include "gr_basic.h"

#include "common.h"
#include "program.h"
#include "libcmp.h"
#include "general.h"

/* Variables Locales */

#include "dialog_backanno.cpp"

#include "protos.h"

/**************************************************************/
bool  WinEDA_SchematicFrame::ProcessStuffFile(FILE* StuffFile)
/**************************************************************/

/* get footprint info from each line in the Stuff File by Ref Desg
 */
{
    int                     LineNum = 0;
    char                    *cp, Ref[256], FootPrint[256], Line[1024];
    SCH_ITEM*               DrawList  = NULL;
    SCH_COMPONENT*          Cmp ; 
    PartTextStruct*         TextField ; 

    while( GetLine( StuffFile, Line, &LineNum, sizeof(Line) ) ) {
	if( sscanf( Line, "comp = \"%s module = \"%s", Ref, FootPrint) == 2 ) {
           for( cp=Ref; *cp ; cp++ )
	       if( *cp == '"' )
	           *cp = 0;
           for( cp=FootPrint; *cp ; cp++ )
	       if( *cp == '"' )
	           *cp = 0;
	   // printf("'%s' '%s'\n", Ref, FootPrint);
	   DrawList = WinEDA_SchematicFrame::FindComponentAndItem( 
		Ref, TRUE, 2, wxEmptyString, false);
	
	   if( DrawList == NULL )
		continue;	

	   if( DrawList->Type() == TYPE_SCH_COMPONENT ) {
		Cmp = (SCH_COMPONENT*) DrawList;
		TextField = &Cmp->m_Field[FOOTPRINT];
		TextField->m_Text = FootPrint;
	   }
    	}
    }

    return true;
}

/**************************************************************/
bool  WinEDA_SchematicFrame::ReadInputStuffFile()
/**************************************************************/

/* Backann footprint info to schematic.
 */
{
    wxString Line, filename;
    FILE* StuffFile;
    wxString                msg;

    filename = EDA_FileSelector(_("Load Stuff File"),
                                   wxEmptyString,        /* Chemin par defaut */
                                   wxEmptyString,        /* nom fichier par defaut */
                                   wxT( ".stf" ),        /* extension par defaut */
                                   wxT( "*.stf" ),       /* Masque d'affichage */
                                   this,
                                   wxFD_OPEN,
                                   FALSE
                                   );
    if ( filename.IsEmpty()) 
	return FALSE;

    Line = g_Main_Title + wxT(" ") + GetBuildVersion();
    Line += wxT(" ") + filename;
    SetTitle(Line);

    if( filename.IsEmpty() )
        return FALSE;

    StuffFile = wxFopen( filename, wxT( "rt" ) );
    if( StuffFile == NULL ) {
        msg.Printf( _( "Failed to open Stuff File <%s>" ), filename.GetData() );
        DisplayError( this, msg, 20 );
        return FALSE;
    }
    ProcessStuffFile( StuffFile );

    return TRUE;
}
+117 −0
Original line number Original line Diff line number Diff line
/////////////////////////////////////////////////////////////////////////////
// Name:        dialog_Backanno.cpp
// Purpose:
// Author:      Frank Bennett
// Modified by:
// Created:     Thu May  1 11:23:06 MDT 2008 
// RCS-ID:
// Copyright:   License GNU
// Licence:
/////////////////////////////////////////////////////////////////////////////


////@begin includes
////@end includes

#include "dialog_backanno.h"

////@begin XPM images
////@end XPM images

/*!
 * WinEDA_BackannoFrame type definition
 */

IMPLEMENT_DYNAMIC_CLASS( WinEDA_BackannoFrame, wxDialog )

/*!
 * WinEDA_BackannoFrame event table definition
 */

BEGIN_EVENT_TABLE( WinEDA_BackannoFrame, wxDialog )

////@begin WinEDA_BackannoFrame event table entries

////@end WinEDA_BackannoFrame event table entries

END_EVENT_TABLE()

/*!
 * WinEDA_BackannoFrame constructors
 */

WinEDA_BackannoFrame::WinEDA_BackannoFrame( )
{
}

WinEDA_BackannoFrame::WinEDA_BackannoFrame( WinEDA_SchematicFrame* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
    m_Parent = parent;
    Create(parent, id, caption, pos, size, style);
}

/*!
 * WinEDA_BackannoFrame creator
 */

bool WinEDA_BackannoFrame::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
{
////@begin WinEDA_BackannoFrame member initialisation
    m_NewTextCtrl = NULL;
////@end WinEDA_BackannoFrame member initialisation

////@begin WinEDA_BackannoFrame creation
    SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
    wxDialog::Create( parent, id, caption, pos, size, style );

    GetSizer()->Fit(this);
    GetSizer()->SetSizeHints(this);
    Centre();
////@end WinEDA_BackannoFrame creation

    m_NewTextCtrl->SetFocus();

    /*  does not work here, might work if moved elsewhere,
    //    see void DrcDialog::OnInitDialog( wxInitDialogEvent& event )
    // deselect the existing text, seems SetFocus() wants to emulate
    // Microsoft and select all text, which is not desireable here.
    m_NewTextCtrl->SetSelection(0,0);
    */

    return true;
}

/*!
 * Should we show tooltips?
 */

bool WinEDA_BackannoFrame::ShowToolTips()
{
    return true;
}

/*!
 * Get bitmap resources
 */

wxBitmap WinEDA_BackannoFrame::GetBitmapResource( const wxString& name )
{
    // Bitmap retrieval
////@begin WinEDA_BackannoFrame bitmap retrieval
    wxUnusedVar(name);
    return wxNullBitmap;
////@end WinEDA_BackannoFrame bitmap retrieval
}

/*!
 * Get icon resources
 */

wxIcon WinEDA_BackannoFrame::GetIconResource( const wxString& name )
{
    // Icon retrieval
////@begin WinEDA_BackannoFrame icon retrieval
    wxUnusedVar(name);
    return wxNullIcon;
////@end WinEDA_BackannoFrame icon retrieval
}
+105 −0
Original line number Original line Diff line number Diff line
/////////////////////////////////////////////////////////////////////////////
// Name:        dialog_backanno.h
// Purpose:     
// Author:      Frank Bennett
// Modified by: 
// Created:     Wed Apr 30 16:40:21 MDT 2008
// RCS-ID:      
// Copyright:   License GNU
// Licence:     
/////////////////////////////////////////////////////////////////////////////

#ifndef _DIALOG_BACKANNO_H_
#define _DIALOG_BACKANNO_H_

/*!
 * Includes
 */

////@begin includes
#include "wx/valtext.h"
////@end includes

/*!
 * Forward declarations
 */

////@begin forward declarations
////@end forward declarations

/*!
 * Control identifiers
 */

////@begin control identifiers
#define ID_DIALOG 10000
#define SYMBOL_WINEDA_BACKANNOFRAME_STYLE wxCAPTION|wxSYSTEM_MENU|wxCLOSE_BOX|MAYBE_RESIZE_BORDER
#define SYMBOL_WINEDA_BACKANNOFRAME_TITLE _("EESchema Back Annotate")
#define SYMBOL_WINEDA_BACKANNOFRAME_IDNAME ID_DIALOG
#define SYMBOL_WINEDA_BACKANNOFRAME_SIZE wxSize(400, 300)
#define SYMBOL_WINEDA_BACKANNOFRAME_POSITION wxDefaultPosition
#define ID_TEXTCTRL1 10008
#define BACKANNO_SHEET 10001
#define FIND_HIERARCHY 10002
#define FIND_NEXT 10005
#define FIND_MARKERS 10003
#define FIND_NEXT_MARKER 10006
#define LOCATE_IN_LIBRARIES 10004
////@end control identifiers

/*!
 * Compatibility
 */

#ifndef wxCLOSE_BOX
#define wxCLOSE_BOX 0x1000
#endif

/*!
 * WinEDA_BackannoFrame class declaration
 */

class WinEDA_BackannoFrame: public wxDialog
{    
    DECLARE_DYNAMIC_CLASS( WinEDA_BackannoFrame )
    DECLARE_EVENT_TABLE()

public:
    /// Constructors
    WinEDA_BackannoFrame( );
    WinEDA_BackannoFrame( WinEDA_SchematicFrame* parent, wxWindowID id = SYMBOL_WINEDA_BACKANNOFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_BACKANNOFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_BACKANNOFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_BACKANNOFRAME_SIZE, long style = SYMBOL_WINEDA_BACKANNOFRAME_STYLE );

    /// Creation
    bool Create( wxWindow* parent, wxWindowID id = SYMBOL_WINEDA_BACKANNOFRAME_IDNAME, const wxString& caption = SYMBOL_WINEDA_BACKANNOFRAME_TITLE, const wxPoint& pos = SYMBOL_WINEDA_BACKANNOFRAME_POSITION, const wxSize& size = SYMBOL_WINEDA_BACKANNOFRAME_SIZE, long style = SYMBOL_WINEDA_BACKANNOFRAME_STYLE );

////@begin WinEDA_BackannoFrame event handler declarations

    /// wxEVT_COMMAND_BUTTON_CLICKED event handler for BACKANNO_SHEET
    void OnBackannoSheetClick( wxCommandEvent& event );

////@end WinEDA_BackannoFrame event handler declarations

////@begin WinEDA_BackannoFrame member function declarations

    /// Retrieves bitmap resources
    wxBitmap GetBitmapResource( const wxString& name );

    /// Retrieves icon resources
    wxIcon GetIconResource( const wxString& name );
////@end WinEDA_BackannoFrame member function declarations

    /// Should we show tooltips?
    static bool ShowToolTips();

    void BackannoSchematicItem(wxCommandEvent& event);
    bool ReadInputStuffFile(const wxString & FullFileName);
    void LoadStuffFile( wxCommandEvent& event );

////@begin WinEDA_BackannoFrame member variables
    wxTextCtrl* m_NewTextCtrl;
////@end WinEDA_BackannoFrame member variables
	WinEDA_SchematicFrame * m_Parent;
};

#endif
    // _DIALOG_FIND_H_
Loading