# This file configures filters and plotting routines for pyFDA
# ------------------------------------------------------------------
# - Encoding should be either UTF-8 without BOM or standard ASCII
# - All lines starting with # or ; are regarded as comments,
#   inline comments are not allowed
# - [Section] starts a new section
# - Options and values are separated by a ":" or "=" (e.g. dir1 : /home),
#   values are optional
# - Values are "sanitized" by removing [], ' and "
# - Values are split at commas, semicolons or CRs into a list of values
# - Values starting with a { are converted to a dict
# - "Interpolation" i.e. referencing values within the config file via e.g. ${dir1}
#   or ${Common:user_dir1} can be used


###################
[Common]
###################
# Stop pyfda when the parsed conf file has a lower version than required

version = 4

#------------------------------------------------------------------------------
# Define variables than can be referenced in other sections by preceding the
# section name, e.g. fir_df1 = ${Common:FIR} is resolved to 
# fir_df1 = [Equiripple, Firwin, Manual, MA]
#------------------------------------------------------------------------------

# 
IIR = [Bessel, Butter, Cheby1, Cheby2, Ellip]
FIR = [Equiripple, Firwin, Manual, MA]

#------------------------------------------------------------------------------
# Add paths for special tools (optional):
#------------------------------------------------------------------------------
# yosys = "D:\Programme\yosys-win32-mxebin-0.9\yosys.exe"


#------------------------------------------------------------------------------
# Add user directory(s) to sys.path (optional):
#------------------------------------------------------------------------------
#
# Specify relative or absolute path(s) to one or more user directories. These
# directories are searched for the following subdirectories which must be named 
# like the corresponding pyfda directories:
#
# input_widgets    # widgets for specifying filter parameters
# plot_widgets     # widgets for plotting filter properties
# filter_widgets   # widgets for controlling filter design algorithms
# fixpoint_widgets # widgets for specifying fixpoint filters
#
# These subdirectories need to contain an (usually empty) 
# __init__.py file to be recognized as python modules.
#
# When a specified directory cannot be found, only a warning is issued.
#------------------------------------------------------------------------------
# Uncomment and specify your user directory (optional):
#
#user_dirs = "D:\Daten\design\python\git\pyfda\pyfda\widget_templates",
#             "/home/muenker/Daten/design/python/user_pyfda"
             
###############################################################################
# The following sections define which classes will be imported by specifying 
# the module names (= file names without .py suffix). The actual class names are
# obtained from a module level attribute "classes" in each module which can be a:
#
# - String, e.g. classes = "MyClassName"
# - List, e.g.   classes = ["MyClassName1", "MyClassName2"]
# - Dict, e.g.   classes = {"MyClassName1":"DisplayName1", "MyClassName2":"DisplayName2"}
#
# When no display name is given, the class name is used for tab labels, combo boxes etc.
#
# Modules are searched in all directories defined in sys.path and the user dir(s)
# and their subdirectories containing __init__.py files (subpackages) with the 
# names listed above ("input_widgets" etc.)
#
# In addition to specifying only the module name, options can be passed as key-
# value combinations. Unknown options just raise a warning.


########################
[Input Widgets]
########################
# Try to import from the following input widget modules (files) from sys.path
# and subdirectories / subpackages named "input_widgets".

input_specs
input_coeffs
input_pz
input_info
input_fixpoint_specs

########################
[Plot Widgets]
########################
# Try to import from the following plot widget modules (files) from sys.path
# and subdirectories / subpackages named "plot_widgets".

plot_hf : {'opt1':'aaa', 'opt2':'bbb'}
plot_phi
plot_tau_g
plot_pz
plot_impz
plot_3d
# myplot # this could be the name of your user module

########################
[Filter Widgets]
########################
# The specified filter design modules (files) are searched for in sys.path 
# and in subdirectories / subpackages named "filter_widgets".
#
# The optional 'fix' argument defines one or more fixpoint implementations for
# the filter design. Unknown fixpoint implementations only raise a warning.
# In the "Fixpoint Widgets" section, fixpoint implementation can be assigned
# to filter designs as well.

# --- IIR ---
# super_filter : {'fix':['iir_cascade', 'iir_df1']}
# bessel : {'fix':['iir_cascade', 'iir_df1']}
bessel
butter
# cheby1 : "yet another option"
cheby1
# cheby2 : {'fix':'iir_special'}
cheby2
ellip
# ellip_zero # too specialized for general usage

# --- FIR ---
equiripple
firwin 
ma
# delay # still buggy
# savitzky_golay # not implemented yet

# --- Manual (both FIR and IIR) ---
manual


########################
[Fixpoint Widgets]
########################
# Try to import from the following fixpoint widget modules (files) from sys.path 
# and subdirectories / subpackages named "fixpoint_widgets".
#
# Value is a filter design or a list of filter designs for which the fixpoint 
# widget can be used.

fir_df.fir_df_pyfixp_ui = ${Common:FIR}
iir_df1.iir_df1_pyfixp_ui = ${Common:IIR}
# fir_df.fir_df_nmigen_ui = ${Common:FIR}
# fx_delay = ['Equiripple', 'Delay'] # need to fix fx_delay and Delay modules