//************************************************************************************************** // PnlAnaBase.hpp * // ---------------- * // Description : This class derives from the wxPanel class and provides a base class for all * // analysis panel classes. * // Started : 2004-04-26 * // Last Update : 2016-11-09 * // Copyright : (C) 2004-2016 MSWaters * //************************************************************************************************** //************************************************************************************************** // * // 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 3 of the License, or (at your option) any later version. * // * //************************************************************************************************** #ifndef PNLANABASE_HPP #define PNLANABASE_HPP // Application Includes #include "TypeDefs.hpp" #include "netlist/Component.hpp" #include "utility/PnlValue.hpp" #include "utility/StrUtils.hpp" // wxWidgets Library Includes #include // Local Constant Declarations // It's bad not using a layout manager but it's how it's done at present. I've invented the // pre-processor flag "LAYOUT_MNGR" to help transition to full use of layout managers. The idea is // to switch between layout manager and hard coded layout. Ie. keep the hard coded layout code until // I'm sure the new layout manager code works. //#define LAYOUT_MNGR //************************************************************************************************** class PnlAnaBase : public wxPanel { protected : // The analysis type of the panel eTypeCmd m_eAnaType; // An array containing the signal source components ArrayComponent m_oaCpntSrcs; // Error message wxString m_osErrMsg; // Sweep settings wxStaticBox m_oSbxSwpPars; PnlValue m_oPnlStart; PnlValue m_oPnlStop; PnlValue m_oPnlStep; // Radio control used for various purposes depending on the analysis type wxRadioBox m_oRbxSweep; // Parameters to be calculated wxStaticBox m_oSbxCalcPars; wxCheckBox m_oCbxVoltage; wxCheckBox m_oCbxCurrent; wxCheckBox m_oCbxPower; wxCheckBox m_oCbxResist; // Complex Parts wxStaticBox m_oSbxCpxPrt; wxCheckBox m_oCbxMag; wxCheckBox m_oCbxPhase; wxCheckBox m_oCbxReal; wxCheckBox m_oCbxImag; wxCheckBox m_oCbxMagDb; // Input signal source, value and units wxStaticBox m_oSbxSigSrc; wxChoice m_oChoSrcName; PnlValue m_oPnlSrcLvl; // .OPTIONS configuration dialog button wxButton m_oBtnOPTIONS; // Analysis temperature wxStaticBox m_oSbxTemp; PnlValue m_oPnlTemp; // Functions to create the display objects virtual void CreateBase ( void ); virtual void CreateScale ( void ); virtual void CreateInitC ( void ); virtual void CreateSigSrc( void ); virtual void CreateCpxPrt( void ); virtual void CreateTemp ( void ); virtual void DoLayout( void ); virtual void InitScale( void ) { } virtual bool bSetScale( eTypeScale eScale ); bool bSetInitC ( eTypeInitC eInitC ); void LoadSrcNames( ArrayComponent & roaCpnts, wxString osPrefixes ); bool bSetSrcCpnt ( Component & roCpnt ); void ToolTips ( void ); // ??? Not yet implemented public : // The last sweep source selected by the user static Component m_oCpntSwpSrc; PnlAnaBase( wxWindow * poWin ); ~PnlAnaBase( ); virtual bool bClear( void ); bool bIsOk( void ) { return( m_osErrMsg.IsEmpty( ) ); } bool bSetAnalysType( eTypeCmd eAnaType ); eTypeCmd eGetAnalysType( void ) { return( m_eAnaType ); } // Get or set the error message const wxString & rosGetErrMsg( void ) { return( m_osErrMsg ); } void SetErrMsg( const wxString & rosErrMsg ) { if( bIsOk( ) ) m_osErrMsg = rosErrMsg; } // Event handlers void OnSrcName( wxCommandEvent & roEvtCmd ); friend class NbkSimrBase; friend class NbkGnuCap; friend class NbkNgSpice; // In order to be able to react to a menu command, it must be given a // unique identifier such as a const or an enum. enum ePnlItemID { ID_PNL_START = 1, ID_PNL_STOP, ID_PNL_STEP, ID_RBX_SWEEP, ID_RBX_SCALE, ID_RBX_INITC, ID_CHO_SRCNAME, ID_PNL_SRCLVL, ID_CBX_MAG, ID_CBX_PHASE, ID_CBX_REAL, ID_CBX_IMAG, ID_CBX_MAGDB, ID_CBX_VOLT, ID_CBX_CURR, ID_CBX_PWR, ID_CBX_RES, ID_BTN_OPTIONS, ID_PNL_TEMP, ID_UNUSED, // Assigned to controls for which events are not used ID_FST = ID_PNL_START, ID_LST = ID_PNL_TEMP }; // Leave this as the last line as private access is envoked by macro wxDECLARE_EVENT_TABLE( ); }; //************************************************************************************************** #endif // PNLANABASE_HPP