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.
|
|
/*
* This program source code file is part of KiCad, a free EDA CAD application. * * Copyright (C) 2020 Jon Evans <jon@craftyjon.com> * Copyright (C) 2020 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 3 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef PCBNEW_SETTINGS_H_
#define PCBNEW_SETTINGS_H_
#include <settings/app_settings.h>
#include <pcb_display_options.h>
namespace PNS{ class ROUTING_SETTINGS;}
enum class MAGNETIC_OPTIONS{ NO_EFFECT, CAPTURE_CURSOR_IN_TRACK_TOOL, CAPTURE_ALWAYS};
struct MAGNETIC_SETTINGS{ MAGNETIC_OPTIONS pads; MAGNETIC_OPTIONS tracks; bool graphics;
MAGNETIC_SETTINGS() : pads( MAGNETIC_OPTIONS::CAPTURE_CURSOR_IN_TRACK_TOOL ), tracks( MAGNETIC_OPTIONS::CAPTURE_CURSOR_IN_TRACK_TOOL ), graphics( false ) { }};
enum class TRACK_DRAG_ACTION{ MOVE, DRAG, DRAG_FREE_ANGLE};
#if defined(KICAD_SCRIPTING) && defined(KICAD_SCRIPTING_ACTION_MENU)
typedef std::vector<std::pair<wxString, bool>> ACTION_PLUGIN_SETTINGS_LIST;#endif
class PCBNEW_SETTINGS : public APP_SETTINGS_BASE{public: struct AUI_PANELS { int appearance_panel_tab; int right_panel_width; bool show_layer_manager; };
struct DIALOG_CLEANUP { bool cleanup_vias; bool delete_dangling_vias; bool cleanup_tracks_in_pad; bool cleanup_unconnected; bool cleanup_short_circuits; bool merge_segments; };
struct DIALOG_DRC { bool refill_zones; bool test_all_track_errors; bool test_footprints; int severities; };
struct DIALOG_EXPORT_IDF { bool auto_adjust; int ref_units; double ref_x; double ref_y; bool units_mils; };
struct DIALOG_EXPORT_STEP { int origin_mode; int origin_units; double origin_x; double origin_y; bool no_virtual; };
struct DIALOG_EXPORT_SVG { bool black_and_white; bool mirror; bool one_file; bool plot_board_edges; int page_size; wxString output_dir; std::vector<int> layers; };
struct DIALOG_EXPORT_VRML { int units; bool copy_3d_models; bool use_relative_paths; bool use_plain_pcb; int ref_units; double ref_x; double ref_y; };
struct DIALOG_FOOTPRINT_WIZARD_LIST { int width; int height; };
struct DIALOG_GENERATE_DRILL { bool merge_pth_npth; bool minimal_header; bool mirror; bool unit_drill_is_inch; bool use_route_for_oval_holes; int drill_file_type; int map_file_type; int zeros_format; };
struct DIALOG_IMPORT_GRAPHICS { int layer; bool interactive_placement; wxString last_file; double line_width; int line_width_units; int origin_units; double origin_x; double origin_y; int dxf_units; };
struct DIALOG_NETLIST { int report_filter; bool update_footprints; bool delete_shorting_tracks; bool delete_extra_footprints; bool delete_single_pad_nets; bool associate_by_ref_sch; };
struct DIALOG_PLACE_FILE { int units; int file_options; int file_format; bool include_board_edge; };
struct DIALOG_PLOT { int all_layers_on_one_page; int pads_drill_mode; double fine_scale_x; double fine_scale_y; double ps_fine_width_adjust; bool check_zones_before_plotting; bool mirror; };
struct DIALOG_REANNOTATE { bool sort_on_fp_location; bool remove_front_prefix; bool remove_back_prefix; bool update_schematic; bool exclude_locked; int grid_index; int sort_code; int annotation_choice; int report_severity; wxString front_refdes_start; wxString back_refdes_start; wxString front_prefix; wxString back_prefix; wxString exclude_list; wxString report_file_name; };
struct FOOTPRINT_CHOOSER { int width; int height; int sash_h; int sash_v; };
struct ZONES { int hatching_style; wxString net_filter; int net_sort_mode; double clearance; double min_thickness; double thermal_relief_gap; double thermal_relief_copper_width; };
PCBNEW_SETTINGS();
virtual ~PCBNEW_SETTINGS();
virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
AUI_PANELS m_AuiPanels;
DIALOG_CLEANUP m_Cleanup;
DIALOG_DRC m_DrcDialog;
DIALOG_EXPORT_IDF m_ExportIdf;
DIALOG_EXPORT_STEP m_ExportStep;
DIALOG_EXPORT_SVG m_ExportSvg;
DIALOG_EXPORT_VRML m_ExportVrml;
DIALOG_FOOTPRINT_WIZARD_LIST m_FootprintWizardList;
DIALOG_GENERATE_DRILL m_GenDrill;
DIALOG_IMPORT_GRAPHICS m_ImportGraphics;
DIALOG_NETLIST m_NetlistDialog;
DIALOG_PLACE_FILE m_PlaceFile;
DIALOG_PLOT m_Plot;
DIALOG_REANNOTATE m_Reannotate;
FOOTPRINT_CHOOSER m_FootprintChooser;
ZONES m_Zones;
WINDOW_SETTINGS m_FootprintViewer;
WINDOW_SETTINGS m_FootprintWizard;
PCB_DISPLAY_OPTIONS m_Display;
MAGNETIC_SETTINGS m_MagneticItems;
TRACK_DRAG_ACTION m_TrackDragAction;
bool m_Use45DegreeGraphicSegments; // True to constraint graphic lines to horizontal,
// vertical and 45º
bool m_FlipLeftRight; // True: Flip footprints across Y axis
// False: Flip footprints across X axis
bool m_PolarCoords;
int m_RotationAngle;
double m_PlotLineWidth;
bool m_ShowPageLimits;
wxString m_FootprintTextShownColumns;
std::unique_ptr<PNS::ROUTING_SETTINGS> m_PnsSettings;
bool m_FootprintViewerAutoZoom; ///< Should the footprint viewer auto zoom on select
double m_FootprintViewerZoom; ///< The last zoom level in the footprint viewer
wxString m_lastFootprintLibDir;
wxString m_lastFootprint3dDir;
#if defined(KICAD_SCRIPTING) && defined(KICAD_SCRIPTING_ACTION_MENU)
ACTION_PLUGIN_SETTINGS_LIST m_VisibleActionPlugins;#endif
protected:
virtual std::string getLegacyFrameName() const override { return "PcbFrame"; }
};
#endif
|