You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							204 lines
						
					
					
						
							6.8 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							204 lines
						
					
					
						
							6.8 KiB
						
					
					
				| /* | |
|  * This program source code file is part of KiCad, a free EDA CAD application. | |
|  * | |
|  * Copyright (C) 2013 NBEE Embedded Systems SL, Miguel Angel Ajo <miguelangel@ajo.es> | |
|  * Copyright The KiCad Developers, see AUTHORS.txt for contributors. | |
|  * | |
|  * This program is free software; you can redistribute it and/or | |
|  * modify it under the terms of the GNU General Public License | |
|  * as published by the Free Software Foundation; either version 2 | |
|  * of the License, or (at your option) any later version. | |
|  * | |
|  * This program is distributed in the hope that it will be useful, | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | |
|  * GNU General Public License for more details. | |
|  * | |
|  * You should have received a copy of the GNU General Public License | |
|  * along with this program; if not, you may find one here: | |
|  * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html | |
|  * or you may search the http://www.gnu.org website for the version 2 license, | |
|  * or you may write to the Free Software Foundation, Inc., | |
|  * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA | |
|  */ | |
| 
 | |
| 
 | |
| /** | |
|  * @file  footprint_wizard.h | |
|  * @brief Class FOOTPRINT_WIZARD and FOOTPRINT_WIZARDS | |
|  */ | |
| 
 | |
| #ifndef FOOTPRINT_WIZARD_H | |
| #define FOOTPRINT_WIZARD_H | |
|  | |
| #include <vector> | |
| #include <pcb_edit_frame.h> | |
|  | |
| // Allowable parameter types for PCB wizards | |
| const wxString WIZARD_PARAM_UNITS_MM        = wxT( "mm" );          // Millimetres | |
| const wxString WIZARD_PARAM_UNITS_MILS      = wxT( "mils" );        // Mils / thou | |
| const wxString WIZARD_PARAM_UNITS_FLOAT     = wxT( "float" );       // Floating point (dimensionless) | |
| const wxString WIZARD_PARAM_UNITS_INTEGER   = wxT( "integer" );     // Integer (dimensionless) | |
| const wxString WIZARD_PARAM_UNITS_BOOL      = wxT( "bool" );        // Boolean option | |
| const wxString WIZARD_PARAM_UNITS_RADIANS   = wxT( "radians" );     // Angle (radians) | |
| const wxString WIZARD_PARAM_UNITS_DEGREES   = wxT( "degrees" );     // Angle (degrees) | |
| const wxString WIZARD_PARAM_UNITS_PERCENT   = wxT( "%" );           // Percent (0% -> 100%) | |
| const wxString WIZARD_PARAM_UNITS_STRING    = wxT( "string" );      // String | |
|  | |
| /** | |
|  * The parent class from where any footprint wizard class must derive. | |
|  */ | |
| class FOOTPRINT_WIZARD | |
| { | |
| public: | |
|     FOOTPRINT_WIZARD() {} | |
|     virtual ~FOOTPRINT_WIZARD(); | |
| 
 | |
|     /** | |
|      * @return the name of the wizard. | |
|      */ | |
|     virtual wxString GetName() = 0; | |
| 
 | |
|     /** | |
|      * @return an svg image of the wizard to be rendered. | |
|      */ | |
|     virtual wxString GetImage() = 0; | |
| 
 | |
|     /** | |
|      * @return a description of the footprint wizard. | |
|      */ | |
|     virtual wxString GetDescription() = 0; | |
| 
 | |
|     /** | |
|      * @return the number of parameter pages that this wizard will show to the user. | |
|      */ | |
|     virtual int GetNumParameterPages() = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want the name of. | |
|      * @return a string with the page name. | |
|      */ | |
|     virtual wxString GetParameterPageName( int aPage ) = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want the parameter names of. | |
|      * @return an array string with the parameter names on a certain page. | |
|      */ | |
|     virtual wxArrayString GetParameterNames( int aPage ) = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want the parameter types of. | |
|      * @return an array string with the parameter types on a certain page | |
|      *          "IU" for internal units, "UNITS" for units (0,1,2,3...,N). | |
|      */ | |
|     virtual wxArrayString GetParameterTypes( int aPage ) = 0; | |
| 
 | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want the parameter values of. | |
|      * @return an array of parameter values. | |
|      */ | |
|     virtual wxArrayString GetParameterValues( int aPage ) = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want to know the errors of. | |
|      * @return an array of errors (if any) for the parameters, empty strings for OK parameters. | |
|      */ | |
|     virtual wxArrayString GetParameterErrors( int aPage ) = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want to know the hints of. | |
|      * @return an array of hints (if any) for the parameters, empty string for no hints. | |
|      */ | |
|     virtual wxArrayString GetParameterHints( int aPage ) = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want to know the designators of. | |
|      * @return an array of designators (blank strings for no designators. | |
|      */ | |
|     virtual wxArrayString GetParameterDesignators( int aPage ) = 0; | |
| 
 | |
|     /** | |
|      * @param aPage is the page we want to set the parameters in. | |
|      * @param aValues are the values we want to set into the parameters. | |
|      * @return an array of parameter values. | |
|      */ | |
|     virtual wxString SetParameterValues( int aPage, wxArrayString& aValues ) = 0; | |
| 
 | |
|     /** | |
|      * Reset all wizard parameters to default values. | |
|      */ | |
|     virtual void ResetParameters() = 0; | |
| 
 | |
|     /** | |
|      * Build the footprint itself and returns it to the caller function. | |
|      * | |
|      * @param aMessage is storage for messages (if any) generated by the footprint generator. | |
|      * @return a footprint built from the parameters given to the class. | |
|      */ | |
|     virtual FOOTPRINT* GetFootprint( wxString* aMessage ) = 0; | |
| 
 | |
|     /** | |
|      * Get the object from where this wizard constructs. | |
|      * | |
|      * @return it's a void pointer as it could be a PyObject or any other. | |
|      */ | |
|     virtual void* GetObject() = 0; | |
| 
 | |
|     /** | |
|      * The standard method of a "FOOTPRINT_WIZARD" to register itself into | |
|      * the FOOTPRINT_WIZARD_LIST singleton manager | |
|      */ | |
|     void register_wizard(); | |
| }; | |
| 
 | |
| 
 | |
| class FOOTPRINT_WIZARD_LIST | |
| { | |
| public: | |
| 
 | |
|     /** | |
|      * A footprint wizard calls this static method when it wants to register itself | |
|      * into the system wizards. | |
|      * | |
|      * @note If it is already registered, this function does nothing if an existing wizard | |
|      * with the same name exists, this existing wizard will be unregistered. | |
|      * | |
|      * @param aWizard is the footprint wizard to be registered. | |
|      */ | |
|     static void                 register_wizard( FOOTPRINT_WIZARD* aWizard ); | |
| 
 | |
|     /** | |
|      * Unregister an object which builds a wizard. | |
|      * | |
|      * Lookup in the vector calling GetObject until find, then removed and deleted. | |
|      * | |
|      * @param aObject is the footprint wizard object to be unregistered. | |
|      */ | |
|     static bool                 deregister_object( void* aObject ); | |
| 
 | |
|     /** | |
|      * @param aName is the footprint wizard name. | |
|      * @return a wizard object by it's name or NULL if it isn't available. | |
|      */ | |
|     static FOOTPRINT_WIZARD*    GetWizard( const wxString& aName ); | |
| 
 | |
|     /** | |
|      * @param aIndex is the wizard index in list. | |
|      * @return a wizard object by it's number or NULL if it isn't available. | |
|      */ | |
|     static FOOTPRINT_WIZARD*    GetWizard( int aIndex ); | |
| 
 | |
|     /** | |
|      * @return the number of wizards available into the system | |
|      */ | |
|     static int                  GetWizardsCount(); | |
| 
 | |
| private: | |
|     /** | |
|      * FOOTPRINT_WIZARD system wide static list | |
|      */ | |
|     static std::vector<FOOTPRINT_WIZARD*> m_FootprintWizards; | |
| }; | |
| 
 | |
| #endif /* PCBNEW_FOOTPRINT_WIZARDS_H */
 |