286 lines
9.6 KiB
C++
286 lines
9.6 KiB
C++
/*********************************************************/
|
|
/* cvstruct.h */
|
|
/*********************************************************/
|
|
|
|
#ifndef CVSTRUCT_H
|
|
#define CVSTRUCT_H
|
|
|
|
#include "wx/listctrl.h"
|
|
#include <wx/filename.h>
|
|
#include "param_config.h"
|
|
#include "cvpcb.h"
|
|
|
|
/* Forward declarations of all top-level window classes. */
|
|
class FOOTPRINTS_LISTBOX;
|
|
class COMPONENTS_LISTBOX;
|
|
class WinEDA_DisplayFrame;
|
|
|
|
|
|
#include "id.h"
|
|
|
|
|
|
/**
|
|
* Command IDs for the component library viewer.
|
|
*
|
|
* Please add IDs that are unique to the component library viewer here and
|
|
* not in the global id.h file. This will prevent the entire project from
|
|
* being rebuilt when adding new commands to the component library viewer.
|
|
*/
|
|
enum id_cvpcb_frm
|
|
{
|
|
ID_CVPCB_QUIT = ID_END_LIST,
|
|
ID_CVPCB_READ_INPUT_NETLIST,
|
|
ID_CVPCB_SAVEQUITCVPCB,
|
|
ID_CVPCB_CREATE_CONFIGWINDOW,
|
|
ID_CVPCB_CREATE_SCREENCMP,
|
|
ID_CVPCB_GOTO_FIRSTNA,
|
|
ID_CVPCB_GOTO_PREVIOUSNA,
|
|
ID_CVPCB_DEL_ASSOCIATIONS,
|
|
ID_CVPCB_AUTO_ASSOCIE,
|
|
ID_CVPCB_COMPONENT_LIST,
|
|
ID_CVPCB_FOOTPRINT_LIST,
|
|
ID_CVPCB_CREATE_STUFF_FILE,
|
|
ID_CVPCB_SHOW3D_FRAME,
|
|
ID_CVPCB_FOOTPRINT_DISPLAY_FULL_LIST,
|
|
ID_CVPCB_FOOTPRINT_DISPLAY_FILTERED_LIST,
|
|
ID_CVPCB_CONFIG_KEEP_OPEN_ON_SAVE
|
|
};
|
|
|
|
|
|
/**
|
|
* The CVPcb application main window.
|
|
*/
|
|
class WinEDA_CvpcbFrame : public WinEDA_BasicFrame
|
|
{
|
|
public:
|
|
|
|
bool m_KeepCvpcbOpen;
|
|
FOOTPRINTS_LISTBOX* m_FootprintList;
|
|
COMPONENTS_LISTBOX* m_ListCmp;
|
|
WinEDA_DisplayFrame* DrawFrame;
|
|
WinEDA_Toolbar* m_HToolBar;
|
|
wxFileName m_NetlistFileName;
|
|
wxArrayString m_ModuleLibNames;
|
|
wxArrayString m_AliasLibNames;
|
|
wxString m_UserLibraryPath;
|
|
wxString m_NetlistFileExtension;
|
|
wxString m_DocModulesFileName;
|
|
FOOTPRINT_LIST m_footprints;
|
|
COMPONENT_LIST m_components;
|
|
|
|
protected:
|
|
int m_undefinedComponentCnt;
|
|
bool m_modified;
|
|
bool m_rightJustify;
|
|
bool m_isEESchemaNetlist;
|
|
PARAM_CFG_ARRAY m_projectFileParams;
|
|
|
|
public:
|
|
WinEDA_CvpcbFrame( const wxString& title,
|
|
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
|
|
~WinEDA_CvpcbFrame();
|
|
|
|
void OnLeftClick( wxListEvent& event );
|
|
void OnLeftDClick( wxListEvent& event );
|
|
void OnSelectComponent( wxListEvent& event );
|
|
|
|
void Update_Config( wxCommandEvent& event );
|
|
void OnQuit( wxCommandEvent& event );
|
|
void OnCloseWindow( wxCloseEvent& Event );
|
|
void OnSize( wxSizeEvent& SizeEvent );
|
|
void OnChar( wxKeyEvent& event );
|
|
void ReCreateHToolbar();
|
|
virtual void ReCreateMenuBar();
|
|
void SetLanguage( wxCommandEvent& event );
|
|
|
|
void ToFirstNA( wxCommandEvent& event );
|
|
void ToPreviousNA( wxCommandEvent& event );
|
|
void DelAssociations( wxCommandEvent& event );
|
|
void SaveQuitCvpcb( wxCommandEvent& event );
|
|
void LoadNetList( wxCommandEvent& event );
|
|
void ConfigCvpcb( wxCommandEvent& event );
|
|
void OnKeepOpenOnSave( wxCommandEvent& event );
|
|
void DisplayModule( wxCommandEvent& event );
|
|
void AssocieModule( wxCommandEvent& event );
|
|
void WriteStuffList( wxCommandEvent& event );
|
|
void DisplayDocFile( wxCommandEvent& event );
|
|
void OnSelectFilteringFootprint( wxCommandEvent& event );
|
|
|
|
void OnUpdateKeepOpenOnSave( wxUpdateUIEvent& event );
|
|
|
|
void SetNewPkg( const wxString& package );
|
|
void BuildCmpListBox();
|
|
void BuildFOOTPRINTS_LISTBOX();
|
|
void CreateScreenCmp();
|
|
int SaveNetList( const wxString& FullFileName );
|
|
int SaveComponentList( const wxString& FullFileName );
|
|
bool ReadNetList();
|
|
int rdpcad();
|
|
int ReadSchematicNetlist();
|
|
int ReadFootprintFilterList( FILE* f );
|
|
int ReadViewlogicWirList();
|
|
int ReadViewlogicNetList();
|
|
void LoadProjectFile( const wxString& FileName );
|
|
void SaveProjectFile( const wxString& fileName );
|
|
virtual void LoadSettings();
|
|
virtual void SaveSettings();
|
|
|
|
PARAM_CFG_ARRAY& GetProjectFileParameters( void );
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
|
|
/*********************************************************************/
|
|
/* ListBox (base class) to display lists of components or footprints */
|
|
/*********************************************************************/
|
|
class ITEMS_LISTBOX_BASE : public wxListView
|
|
{
|
|
public:
|
|
ITEMS_LISTBOX_BASE( WinEDA_CvpcbFrame* aParent, wxWindowID aId,
|
|
const wxPoint& aLocation, const wxSize& aSize );
|
|
|
|
~ITEMS_LISTBOX_BASE();
|
|
|
|
int GetSelection();
|
|
void OnSize( wxSizeEvent& event );
|
|
|
|
virtual WinEDA_CvpcbFrame* GetParent();
|
|
};
|
|
|
|
/******************************************/
|
|
/* ListBox showing the list of footprints */
|
|
/******************************************/
|
|
|
|
class FOOTPRINTS_LISTBOX : public ITEMS_LISTBOX_BASE
|
|
{
|
|
private:
|
|
wxArrayString m_FullFootprintList;
|
|
wxArrayString m_FilteredFootprintList;
|
|
public:
|
|
wxArrayString* m_ActiveFootprintList;
|
|
bool m_UseFootprintFullList;
|
|
|
|
public:
|
|
FOOTPRINTS_LISTBOX( WinEDA_CvpcbFrame* parent, wxWindowID id,
|
|
const wxPoint& loc, const wxSize& size,
|
|
int nbitems, wxString choice[] );
|
|
~FOOTPRINTS_LISTBOX();
|
|
|
|
int GetCount();
|
|
void SetSelection( unsigned index, bool State = TRUE );
|
|
void SetString( unsigned linecount, const wxString& text );
|
|
void AppendLine( const wxString& text );
|
|
void SetFootprintFullList( FOOTPRINT_LIST& list );
|
|
void SetFootprintFilteredList( COMPONENT* Component,
|
|
FOOTPRINT_LIST& list );
|
|
void SetActiveFootprintList( bool FullList, bool Redraw = FALSE );
|
|
|
|
wxString GetSelectedFootprint();
|
|
wxString OnGetItemText( long item, long column ) const;
|
|
|
|
// Events functions:
|
|
void OnLeftClick( wxListEvent& event );
|
|
void OnLeftDClick( wxListEvent& event );
|
|
void OnChar( wxKeyEvent& event );
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
/****************************************************/
|
|
/* ListBox showing the list of schematic components */
|
|
/****************************************************/
|
|
|
|
class COMPONENTS_LISTBOX : public ITEMS_LISTBOX_BASE
|
|
{
|
|
public:
|
|
wxArrayString m_ComponentList;
|
|
WinEDA_CvpcbFrame* m_Parent;
|
|
|
|
public:
|
|
|
|
COMPONENTS_LISTBOX( WinEDA_CvpcbFrame* parent, wxWindowID id,
|
|
const wxPoint& loc, const wxSize& size,
|
|
int nbitems, wxString choice[] );
|
|
|
|
~COMPONENTS_LISTBOX();
|
|
|
|
void Clear();
|
|
int GetCount();
|
|
wxString OnGetItemText( long item, long column ) const;
|
|
void SetSelection( unsigned index, bool State = TRUE );
|
|
void SetString( unsigned linecount, const wxString& text );
|
|
void AppendLine( const wxString& text );
|
|
|
|
// Events functions:
|
|
void OnChar( wxKeyEvent& event );
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
|
|
/*******************************************************/
|
|
/* class WinEDA_DisplayFrame: used to display footprints */
|
|
/*******************************************************/
|
|
|
|
class WinEDA_DisplayFrame : public WinEDA_BasePcbFrame
|
|
{
|
|
public:
|
|
|
|
public:
|
|
WinEDA_DisplayFrame( WinEDA_CvpcbFrame* father,
|
|
const wxString& title,
|
|
const wxPoint& pos, const wxSize& size,
|
|
long style = KICAD_DEFAULT_DRAWFRAME_STYLE );
|
|
|
|
~WinEDA_DisplayFrame();
|
|
|
|
void OnCloseWindow( wxCloseEvent& Event );
|
|
void RedrawActiveWindow( wxDC* DC, bool EraseBg );
|
|
void ReCreateHToolbar();
|
|
void ReCreateVToolbar();
|
|
void RecreateMenuBar();
|
|
void OnLeftClick( wxDC* DC, const wxPoint& MousePos );
|
|
void OnLeftDClick( wxDC* DC, const wxPoint& MousePos );
|
|
bool OnRightClick( const wxPoint& MousePos, wxMenu* PopMenu );
|
|
void SetToolbars();
|
|
void GeneralControle( wxDC* DC, wxPoint Mouse );
|
|
void InstallOptionsDisplay( wxCommandEvent& event );
|
|
MODULE* Get_Module( const wxString& CmpName );
|
|
|
|
void Process_Settings( wxCommandEvent& event );
|
|
void Show3D_Frame( wxCommandEvent& event );
|
|
|
|
/* SaveCopyInUndoList() virtual
|
|
* currently: do nothing in cvpcb.
|
|
* but but be defined because it is a pure virtual in WinEDA_BasePcbFrame
|
|
*/
|
|
virtual void SaveCopyInUndoList( BOARD_ITEM* aItemToCopy,
|
|
UndoRedoOpType aTypeCommand = UR_UNSPECIFIED,
|
|
const wxPoint& aTransformPoint = wxPoint( 0, 0 ) )
|
|
{
|
|
}
|
|
|
|
|
|
/** Function SaveCopyInUndoList (overloaded).
|
|
* Creates a new entry in undo list of commands.
|
|
* add a list of pickers to handle a list of items
|
|
* @param aItemsList = the list of items modified by the command to undo
|
|
* @param aTypeCommand = command type (see enum UndoRedoOpType)
|
|
* @param aTransformPoint = the reference point of the transformation,
|
|
* for commands like move
|
|
*/
|
|
virtual void SaveCopyInUndoList( PICKED_ITEMS_LIST& aItemsList,
|
|
UndoRedoOpType aTypeCommand,
|
|
const wxPoint& aTransformPoint = wxPoint( 0, 0 ) )
|
|
{
|
|
// currently: do nothing in cvpcb.
|
|
}
|
|
|
|
|
|
DECLARE_EVENT_TABLE()
|
|
};
|
|
|
|
|
|
#endif //#ifndef CVSTRUCT_H
|