Files
Seth Hillbrand 0b2d4d4879 Revise Copyright statement to align with TLF
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo.  Avoids needing to
repeatly update.

Also updates AUTHORS.txt from current repo with contributor names
2025-01-01 14:12:04 -08:00

236 lines
5.8 KiB
C++

/*
* This program source code file is part of KiCad, a free EDA CAD application.
*
* Copyright (C) 2020 Jon Evans <[email protected]>
* 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 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 _COMMON_SETTINGS_H
#define _COMMON_SETTINGS_H
#include <settings/environment.h>
#include <settings/json_settings.h>
enum class MOUSE_DRAG_ACTION
{
// WARNING: these are encoded as integers in the file, so don't change their values.
DRAG_ANY = -2,
DRAG_SELECTED,
SELECT,
ZOOM,
PAN,
NONE
};
enum class ICON_THEME
{
LIGHT,
DARK,
AUTO
};
class KICOMMON_API COMMON_SETTINGS : public JSON_SETTINGS
{
public:
struct APPEARANCE
{
bool show_scrollbars;
double canvas_scale;
ICON_THEME icon_theme;
bool use_icons_in_menus;
bool apply_icon_scale_to_fonts;
double hicontrast_dimming_factor;
int text_editor_zoom;
int toolbar_icon_size;
bool grid_striping;
};
struct AUTO_BACKUP
{
bool enabled; ///< Automatically back up the project when files are saved
bool backup_on_autosave; ///< Trigger a backup on autosave
int limit_total_files; ///< Maximum number of backup archives to retain
int limit_daily_files; ///< Maximum files to keep per day, 0 for unlimited
int min_interval; ///< Minimum time, in seconds, between subsequent backups
/// Maximum total size of backups (bytes), 0 for unlimited
unsigned long long limit_total_size;
};
struct ENVIRONMENT
{
ENV_VAR_MAP vars;
};
struct INPUT
{
bool focus_follow_sch_pcb;
bool auto_pan;
int auto_pan_acceleration;
bool center_on_zoom;
bool immediate_actions;
bool warp_mouse_on_move;
bool horizontal_pan;
bool hotkey_feedback;
bool zoom_acceleration;
int zoom_speed;
bool zoom_speed_auto;
int scroll_modifier_zoom;
int scroll_modifier_pan_h;
int scroll_modifier_pan_v;
MOUSE_DRAG_ACTION drag_left;
MOUSE_DRAG_ACTION drag_middle;
MOUSE_DRAG_ACTION drag_right;
bool reverse_scroll_zoom;
bool reverse_scroll_pan_h;
};
struct GRAPHICS
{
int cairo_aa_mode;
int opengl_aa_mode;
};
struct SESSION
{
bool remember_open_files;
std::vector<wxString> pinned_symbol_libs;
std::vector<wxString> pinned_fp_libs;
std::vector<wxString> pinned_design_block_libs;
};
struct SYSTEM
{
int autosave_interval;
wxString text_editor;
wxString file_explorer;
int file_history_size;
wxString language;
wxString pdf_viewer_name;
bool use_system_pdf_viewer;
wxString working_dir;
int clear_3d_cache_interval;
};
struct DO_NOT_SHOW_AGAIN
{
bool zone_fill_warning;
bool env_var_overwrite_warning;
bool scaled_3d_models_warning;
bool data_collection_prompt;
bool update_check_prompt;
};
struct NETCLASS_PANEL
{
int sash_pos;
wxString eeschema_visible_columns;
wxString pcbnew_visible_columns;
};
struct PACKAGE_MANAGER
{
int sash_pos;
};
struct GIT_REPOSITORY
{
wxString name;
wxString path;
wxString authType;
wxString username;
wxString ssh_path;
bool active;
bool checkValid;
};
struct GIT
{
std::vector<GIT_REPOSITORY> repositories;
bool useDefaultAuthor;
wxString authorName;
wxString authorEmail;
};
struct API
{
wxString python_interpreter;
bool enable_server;
};
COMMON_SETTINGS();
virtual ~COMMON_SETTINGS() {}
virtual bool MigrateFromLegacy( wxConfigBase* aLegacyConfig ) override;
/**
* Creates the built-in environment variables and sets their default values
*/
void InitializeEnvironment();
private:
bool migrateSchema0to1();
bool migrateSchema1to2();
bool migrateSchema2to3();
struct LEGACY_3D_SEARCH_PATH
{
wxString m_Alias; // alias to the base path
wxString m_Pathvar; // base path as stored in the config file
wxString m_Pathexp; // expanded base path
wxString m_Description; // description of the aliased path
};
static bool getLegacy3DHollerith( const std::string& aString, size_t& aIndex,
wxString& aResult );
bool readLegacy3DResolverCfg( const wxString& aPath,
std::vector<LEGACY_3D_SEARCH_PATH>& aSearchPaths );
public:
APPEARANCE m_Appearance;
AUTO_BACKUP m_Backup;
ENVIRONMENT m_Env;
INPUT m_Input;
GRAPHICS m_Graphics;
SESSION m_Session;
SYSTEM m_System;
DO_NOT_SHOW_AGAIN m_DoNotShowAgain;
NETCLASS_PANEL m_NetclassPanel;
PACKAGE_MANAGER m_PackageManager;
GIT m_Git;
API m_Api;
};
#endif