kicad/eeschema/eeschema_settings.h

371 lines
9.8 KiB
C++

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2020-2024 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
*/
#ifndef _EESCHEMA_SETTINGS_H
#define _EESCHEMA_SETTINGS_H
#include <wx/aui/framemanager.h>
#include <settings/app_settings.h>
#include <sim/sim_preferences.h>
using KIGFX::COLOR4D;
extern const wxAuiPaneInfo& defaultNetNavigatorPaneInfo();
extern const wxAuiPaneInfo& defaultPropertiesPaneInfo( wxWindow* aWindow );
extern const wxAuiPaneInfo& defaultSchSelectionFilterPaneInfo( wxWindow* aWindow );
enum LINE_MODE
{
LINE_MODE_FREE = 0,
LINE_MODE_90 = 1,
LINE_MODE_45 = 2,
LINE_MODE_COUNT,
};
class EESCHEMA_SETTINGS : public APP_SETTINGS_BASE
{
public:
struct APPEARANCE
{
wxString edit_symbol_visible_columns;
int edit_symbol_width;
int edit_symbol_height;
wxString edit_sheet_visible_columns;
int edit_sheet_width;
int edit_sheet_height;
wxString edit_label_visible_columns;
int edit_label_width;
int edit_label_height;
int erc_severities;
bool footprint_preview;
bool print_sheet_reference;
wxString default_font;
bool show_hidden_pins;
bool show_hidden_fields;
bool show_directive_labels;
bool show_erc_warnings;
bool show_erc_errors;
bool show_erc_exclusions;
bool show_op_voltages;
bool show_op_currents;
bool show_illegal_symbol_lib_dialog;
bool show_page_limits;
bool show_sexpr_file_convert_warning;
bool show_sheet_filename_case_sensitivity_dialog;
};
struct AUI_PANELS
{
int hierarchy_panel_docked_width; // width of hierarchy tree panel and pane when docked
int hierarchy_panel_docked_height; // height of hierarchy tree panel and pane when docked
int hierarchy_panel_float_width; // width of hierarchy tree panel when floating
int hierarchy_panel_float_height; // height of hierarchy tree panel when floating
int search_panel_height; // height of the search panel
int search_panel_width; // width of the search panel
int search_panel_dock_direction; // docking direction of the search panel
bool schematic_hierarchy_float; // show hierarchy tree panel as floating
bool show_schematic_hierarchy; // show hierarchy tree pane
bool show_search; // show the search panel
wxSize net_nav_panel_docked_size;
wxPoint net_nav_panel_float_pos;
wxSize net_nav_panel_float_size;
bool float_net_nav_panel;
bool show_net_nav_panel;
int properties_panel_width;
float properties_splitter;
bool show_properties;
};
struct AUTOPLACE_FIELDS
{
bool enable;
bool allow_rejustify;
bool align_to_grid;
};
struct BOM_PLUGIN_SETTINGS
{
BOM_PLUGIN_SETTINGS() = default;
BOM_PLUGIN_SETTINGS( const wxString& aName, const wxString& aPath ) :
name( aName ),
path( aPath )
{}
wxString name;
wxString path;
wxString command;
};
struct NETLIST_PLUGIN_SETTINGS
{
NETLIST_PLUGIN_SETTINGS() = default;
NETLIST_PLUGIN_SETTINGS( const wxString& aName, const wxString& aPath ) :
name( aName ),
path( aPath )
{}
wxString name;
wxString path;
wxString command;
};
struct DRAWING
{
int default_bus_thickness;
int default_junction_size;
int default_line_thickness;
int default_repeat_offset_x;
int default_repeat_offset_y;
int default_wire_thickness;
int default_text_size;
int pin_symbol_size;
double text_offset_ratio;
COLOR4D default_sheet_border_color;
COLOR4D default_sheet_background_color;
wxString field_names;
int line_mode;
int repeat_label_increment;
bool intersheets_ref_show;
bool intersheets_ref_own_page;
bool intersheets_ref_short;
wxString intersheets_ref_prefix;
wxString intersheets_ref_suffix;
bool auto_start_wires;
std::vector<double> junction_size_mult_list;
// Pulldown index for user default junction dot size (e.g. smallest = 0, small = 1, etc)
int junction_size_choice;
};
struct INPUT
{
bool drag_is_move;
bool esc_clears_net_highlight;
};
struct SELECTION
{
int selection_thickness;
int highlight_thickness;
bool draw_selected_children;
bool fill_shapes;
};
struct PAGE_SETTINGS
{
bool export_paper;
bool export_revision;
bool export_date;
bool export_title;
bool export_company;
bool export_comment1;
bool export_comment2;
bool export_comment3;
bool export_comment4;
bool export_comment5;
bool export_comment6;
bool export_comment7;
bool export_comment8;
bool export_comment9;
};
struct PANEL_ANNOTATE
{
bool automatic;
bool recursive;
int scope;
int options;
int method;
int messages_filter;
int sort_order;
};
struct PANEL_BOM
{
wxString selected_plugin;
std::vector<BOM_PLUGIN_SETTINGS> plugins;
};
struct PANEL_FIELD_EDITOR
{
std::map<std::string, int> field_widths;
int width;
int height;
int page;
wxString export_filename;
int selection_mode;
int scope;
};
struct PANEL_LIB_VIEW
{
int lib_list_width;
int cmp_list_width;
bool show_pin_electrical_type;
bool show_pin_numbers;
WINDOW_SETTINGS window;
};
struct PANEL_NETLIST
{
std::vector<NETLIST_PLUGIN_SETTINGS> plugins;
};
struct PANEL_PLOT
{
bool background_color;
bool color;
wxString color_theme;
int format;
bool frame_reference;
int hpgl_paper_size;
double hpgl_pen_size;
int hpgl_origin;
bool pdf_property_popups;
bool pdf_metadata;
bool open_file_after_plot;
};
struct PANEL_SYM_CHOOSER
{
int sash_pos_h;
int sash_pos_v;
int width;
int height;
int sort_mode;
bool keep_symbol;
bool place_all_units;
};
struct DIALOG_IMPORT_GRAPHICS
{
bool interactive_placement;
wxString last_file;
double dxf_line_width;
int dxf_line_width_units;
int origin_units;
double origin_x;
double origin_y;
int dxf_units;
};
struct SIMULATOR
{
struct VIEW
{
int plot_panel_width;
int plot_panel_height;
int signal_panel_height;
int cursors_panel_height;
int measurements_panel_height;
bool white_background;
};
VIEW view;
WINDOW_SETTINGS window;
SIM_PREFERENCES preferences;
};
struct FIND_REPLACE_EXTRA
{
bool search_all_fields;
bool search_all_pins;
bool search_current_sheet_only;
bool search_selected_only;
bool replace_references;
};
EESCHEMA_SETTINGS();
virtual ~EESCHEMA_SETTINGS() {}
virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
static std::vector<BOM_PLUGIN_SETTINGS> DefaultBomPlugins();
protected:
virtual std::string getLegacyFrameName() const override { return "SchematicFrame"; }
private:
bool migrateBomSettings();
nlohmann::json bomSettingsToJson() const;
static std::vector<BOM_PLUGIN_SETTINGS> bomSettingsFromJson( const nlohmann::json& aObj );
nlohmann::json netlistSettingsToJson() const;
static std::vector<NETLIST_PLUGIN_SETTINGS> netlistSettingsFromJson( const nlohmann::json& aObj );
public:
APPEARANCE m_Appearance;
AUTOPLACE_FIELDS m_AutoplaceFields;
AUI_PANELS m_AuiPanels;
DRAWING m_Drawing;
FIND_REPLACE_EXTRA m_FindReplaceExtra;
INPUT m_Input;
PAGE_SETTINGS m_PageSettings;
PANEL_ANNOTATE m_AnnotatePanel;
PANEL_BOM m_BomPanel;
PANEL_FIELD_EDITOR m_FieldEditorPanel;
PANEL_LIB_VIEW m_LibViewPanel;
PANEL_NETLIST m_NetlistPanel;
PANEL_PLOT m_PlotPanel;
PANEL_SYM_CHOOSER m_SymChooserPanel;
DIALOG_IMPORT_GRAPHICS m_ImportGraphics;
SELECTION m_Selection;
SIMULATOR m_Simulator;
bool m_RescueNeverShow;
wxString m_lastSymbolLibDir;
};
#endif