def about_window(self): """ Display an "About" window with copyright and version infos """ def to_clipboard(my_string): """ Copy version info to clipboard """ mapping = [ ('<br>','\n'), ('<hr>','\n---------\n'), ('<b>',''), ('</b>','')] for k, v in mapping: my_string = my_string.replace(k, v) fb.clipboard.setText(my_string) info_string = ("<b><a href=https://www.github.com/chipmuenk/pyfda>pyfda</a> " "Version {0} (c) 2013 - 2018 Christian Münker</b><br>" "Design, analyze and synthesize digital filters<hr>".format(version.__version__)) versions_string =("<b>Operating System:</b> {0} {1}<br><b>User Name:</b> {2}<br><br>" "<b style='font-size:large;'>Imported Modules</b><br>  {3}" .format(dirs.OS, dirs.OS_VER, dirs.USER_NAME, pyfda_lib.mod_version().replace("\n", "<br>  "))) dir_string = ("<table><th style='font-size:large;'>Directories</th>" "<tr><td><b>Home:</b></td><td>{0}</td></tr>" "<tr><td><b>Install: </b></td><td>{1}</td></tr>" "<tr><td><b>Temp:</b></td><td>{2}</td></tr>"\ .format( dirs.HOME_DIR, dirs.INSTALL_DIR, dirs.TEMP_DIR)) dir_string += ("<br /><th style='font-size:large;'>Logging Files</th>" "<tr><td><b>Config:</b></td><td>{0}</td></tr>" "<tr><td><b>Output: </b></td><td>{1}</td></tr>" "</table>"\ .format(dirs.USER_LOG_CONF_FILE, dirs.LOG_DIR_FILE)) about_string = info_string + versions_string + dir_string #msg = QMessageBox.about(self, "About pyFDA", info_string) butClipboard = QPushButton(self) butClipboard.setIcon(QIcon(':/clipboard.svg')) butClipboard.setToolTip("Copy text to clipboard.") # butClipboard.adjustSize() # butClipboard.setFixedSize(self.checkLayout.sizeHint()) msg = QMessageBox(self) msg.setIconPixmap(QPixmap(':/pyfda_icon.svg').scaledToHeight(32, Qt.SmoothTransformation)) msg.addButton(butClipboard, QMessageBox.ActionRole) msg.setText(about_string) # msg.setInformativeText("This is additional information") #msg.setDetailedText(versions_string) # adds a button that opens another textwindow msg.setWindowTitle("About pyFDA") msg.setStandardButtons(QMessageBox.Ok) # | QMessageBox.Cancel butClipboard.clicked.connect(lambda: to_clipboard(about_string)) retval = msg.exec_()
def about_window(self): """ Display an "About" window with copyright and version infos """ def to_clipboard(my_string): """ Copy version info to clipboard """ mapping = [('<br>', '\n'), ('<hr>', '\n---------\n'), ('<b>', ''), ('</b>', '')] for k, v in mapping: my_string = my_string.replace(k, v) fb.clipboard.setText(my_string) info_string = ( "<b>pyfda</b> Version {0} (c) 2013 - 17 Christian Münker<br>" "Design, analyze and synthesize digital filters<hr>".format( version.__version__)) versions_string = ("<b>Operating System:</b> {0} {1}<br><br>" "<b>Imported Modules</b><br>{2}".format( dirs.OS, dirs.OS_VER, pyfda_lib.mod_version().replace("\n", "<br>"))) dir_string = ("<br><b>User Directories</b><br>Install : {0}<br>Temp : {1}<br>Home : {2}<br>"\ .format(dirs.INSTALL_DIR, dirs.TEMP_DIR, dirs.HOME_DIR)) dir_string += ("<br><b>User Files</b><br>Log. Config: {0}<br>Log. File: {1}"\ .format(dirs.USER_LOG_CONF_FILE, dirs.USER_LOG_FILE)) about_string = info_string + versions_string + dir_string #msg = QMessageBox.about(self, "About pyFDA", info_string) butClipboard = QPushButton("To Clipboard") msg = QMessageBox(self) msg.setIconPixmap( QPixmap(':/pyfda_icon.svg').scaledToHeight( 32, Qt.SmoothTransformation)) msg.addButton(butClipboard, QMessageBox.ActionRole) msg.setText(about_string) # msg.setInformativeText("This is additional information") #msg.setDetailedText(versions_string) # adds a button that opens another textwindow msg.setWindowTitle("About pyFDA") msg.setStandardButtons(QMessageBox.Ok) # | QMessageBox.Cancel butClipboard.clicked.connect(lambda: to_clipboard(about_string)) retval = msg.exec_()
import pyfda.filterbroker as fb from pyfda.pyfda_rc import params from pyfda.pyfda_lib import H_mag, mod_version, safe_eval from pyfda.pyfda_qt_lib import qget_cmb_box from pyfda.plot_widgets.mpl_widget import MplWidget from mpl_toolkits.mplot3d.axes3d import Axes3D from matplotlib import cm # Colormap from matplotlib.colors import LightSource #http://docs.enthought.com/mayavi/mayavi/mlab_running_scripts.html#running-mlab-scripts #http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html #http://docs.enthought.com/mayavi/mayavi/mlab.html#simple-scripting-with-mlab if mod_version('mayavi'): from mayavi import mlab MLAB = True else: MLAB = False class Plot_3D(QWidget): """ Class for various 3D-plots: - lin / log line plot of H(f) - lin / log surf plot of H(z) - optional display of poles / zeros """ # incoming, connected in sender widget (locally connected to self.process_signals() )
import pyfda.filterbroker as fb from pyfda.pyfda_rc import params from pyfda.pyfda_lib import H_mag, mod_version, safe_eval from pyfda.pyfda_qt_lib import qget_cmb_box from pyfda.plot_widgets.plot_utils import MplWidget from mpl_toolkits.mplot3d.axes3d import Axes3D from matplotlib import cm # Colormap from matplotlib.colors import LightSource #http://docs.enthought.com/mayavi/mayavi/mlab_running_scripts.html#running-mlab-scripts #http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html #http://docs.enthought.com/mayavi/mayavi/mlab.html#simple-scripting-with-mlab if mod_version('mayavi'): from mayavi import mlab MLAB = True else: MLAB = False class Plot3D(QWidget): """ Class for various 3D-plots: - lin / log line plot of H(f) - lin / log surf plot of H(z) - optional display of poles / zeros """ def __init__(self, parent): super(Plot3D, self).__init__(parent)
def about_window(self): """ Display an "About" window with copyright and version infos """ def to_clipboard(my_string): """ Copy version info to clipboard """ mapping = [('<br>','\n'),('<br />','\n'), ('</tr>','\n'), ('</th>','\n'), ('</table>','\n'), ('<hr>','\n---------\n'), ('<b>',''),('</b>',''),('<tr>',''), ('<td>',''),('</td>','\t'), ('<th>',''), (' ',' '), ('<table>','') ] for k, v in mapping: my_string = my_string.replace(k, v) fb.clipboard.setText(my_string) info_string = ("<b><a href=https://www.github.com/chipmuenk/pyfda>pyfda</a> " "Version {0} (c) 2013 - 2019 Christian Münker</b><br />" "Design, analyze and synthesize digital filters. Docs @ " "<a href=https://pyfda.rtfd.org>pyfda.rtfd.org</a>" " (<a href=https://media.readthedocs.org/pdf/pyfda/latest/pyfda.pdf>pdf</a>)<hr>"\ .format(version.__version__)) versions_string =("<b>OS:</b> {0} {1}<br><b>User Name:</b> {2}<br>" .format(dirs.OS, dirs.OS_VER, dirs.USER_NAME)) # dir_string = ("<table><th style='font-size:large;'>Imported Modules</th>" # "<tr><td>  {0}</td></tr>"\ # .format( pyfda_lib.mod_version().replace("\n", "<br>  "))) dir_string = ("<table><th style='font-size:large;'>Software Versions</th>") dir_string += pyfda_lib.mod_version() dir_string += ("<table><th style='font-size:large;'>Directories</th>" "<tr><td><b>Home:</b></td><td>{0}</td></tr>" "<tr><td><b>Install: </b></td><td>{1}</td></tr>" "<tr><td><b>Config: </b></td><td>{2}</td></tr>" "<tr><td><b>User: </b></td><td>{3}</td></tr>" "<tr><td><b>Temp:</b></td><td>{4}</td></tr>"\ .format( dirs.HOME_DIR, dirs.INSTALL_DIR, dirs.CONF_DIR, dirs.USER_DIRS, dirs.TEMP_DIR)) dir_string += ("<th style='font-size:large;'>Logging Files</th>" "<tr><td><b>Config:</b></td><td>{0}</td></tr>" "<tr><td><b>Output: </b></td><td>{1}</td></tr>" "</table>"\ .format(dirs.USER_LOG_CONF_DIR_FILE, dirs.LOG_DIR_FILE)) about_string = info_string + versions_string + dir_string #msg = QMessageBox.about(self, "About pyFDA", info_string) butClipboard = QPushButton(self) butClipboard.setIcon(QIcon(':/clipboard.svg')) butClipboard.setToolTip("Copy text to clipboard.") # butClipboard.adjustSize() # butClipboard.setFixedSize(self.checkLayout.sizeHint()) msg = QMessageBox(self) msg.setIconPixmap(QPixmap(':/pyfda_icon.svg').scaledToHeight(32, Qt.SmoothTransformation)) msg.addButton(butClipboard, QMessageBox.ActionRole) msg.setText(about_string) # msg.setInformativeText("This is additional information") #msg.setDetailedText(versions_string) # adds a button that opens another textwindow msg.setWindowTitle("About pyFDA") msg.setStandardButtons(QMessageBox.Ok) # | QMessageBox.Cancel # close Message box with close event triggered by "x" icon msg.closeEvent = self.closeEvent butClipboard.clicked.connect(lambda: to_clipboard(about_string)) retval = msg.exec_()
import pyfda.pyfda_lib as pyfda_lib import pyfda.pyfda_dirs as dirs import pyfda.filterbroker as fb from pyfda.pyfda_rc import params from pyfda.pyfda_io_lib import extract_file_ext from pyfda import qrc_resources # contains all icons import numpy as np try: import cPickle as pickle except: import pickle if pyfda_lib.mod_version('xlwt') == None: XLWT = False else: XLWT = True import xlwt if pyfda_lib.mod_version('xlsxwriter') == None: XLSX = False else: XLSX = True import xlsxwriter as xlsx #try: # import xlrd #except ImportError: # XLRD = False
from ..compat import (QtGui, QWidget, QLabel, QFont, QCheckBox, QFrame, QTableWidget, QTableWidgetItem, QTextBrowser, QTextCursor, QVBoxLayout, QHBoxLayout, QSplitter, Qt) import numpy as np from numpy import pi, log10 import scipy.signal as sig import pyfda.filterbroker as fb # importing filterbroker initializes all its globals import pyfda.filter_factory as ff # importing filterbroker initializes all its globals from pyfda.pyfda_lib import lin2unit, mod_version from pyfda.pyfda_rc import params # TODO: Passband and stopband info should show min / max values for each band if mod_version('docutils') is not None: from docutils.core import publish_string HAS_DOCUTILS = True else: HAS_DOCUTILS = False class FilterInfo(QWidget): """ Create widget for displaying infos about filter and filter design method """ def __init__(self, parent): super(FilterInfo, self).__init__(parent) self._construct_UI() self.load_dict()
from __future__ import print_function, division, unicode_literals, absolute_import import sys import logging logger = logging.getLogger(__name__) from ..compat import QTabWidget, QWidget, QVBoxLayout, QScrollArea, pyqtSignal, pyqtSlot SCROLL = True from pyfda.pyfda_rc import params from pyfda.pyfda_lib import mod_version from pyfda.input_widgets import (filter_specs, file_io, filter_coeffs, filter_info, filter_pz) if mod_version("myhdl"): from pyfda.hdl_generation import hdl_specs HAS_MYHDL = True else: HAS_MYHDL = False class InputTabWidgets(QWidget): """ Create a tabbed widget for various input subwidgets """ # signals as class variables (shared between instances if more than one exists) sig_rx = pyqtSignal(dict) sig_tx = pyqtSignal(dict) def __init__(self, parent):
def about_window(self): """ Display an "About" window with copyright and version infos """ def to_clipboard(my_string): """ Copy version info to clipboard """ mapping = [('<br>', '\n'), ('<br />', '\n'), ('</tr>', '\n'), ('</th>', '\n'), ('</table>', '\n'), ('<hr>', '\n---------\n'), ('<b>', ''), ('</b>', ''), ('<tr>', ''), ('<td>', ''), ('</td>', '\t'), ('<th>', ''), (' ', ' '), ('<table>', '')] for k, v in mapping: my_string = my_string.replace(k, v) fb.clipboard.setText(my_string) user_dirs_str = "" if dirs.USER_DIRS: for d in dirs.USER_DIRS: user_dirs_str += d + '<br />' info_string = ("<b><a href=https://www.github.com/chipmuenk/pyfda>pyfda</a> " "Version {0} (c) 2013 - 2019 Christian Münker</b><br />" "Design, analyze and synthesize digital filters. Docs @ " "<a href=https://pyfda.rtfd.org>pyfda.rtfd.org</a>" " (<a href=https://media.readthedocs.org/pdf/pyfda/latest/pyfda.pdf>pdf</a>)<hr>"\ .format(version.__version__)) versions_string = ( "<b>OS:</b> {0} {1}<br><b>User Name:</b> {2}<br>".format( dirs.OS, dirs.OS_VER, dirs.USER_NAME)) # dir_string = ("<table><th style='font-size:large;'>Imported Modules</th>" # "<tr><td>  {0}</td></tr>"\ # .format( pyfda_lib.mod_version().replace("\n", "<br>  "))) dir_string = ( "<table><th style='font-size:large;'>Software Versions</th>") dir_string += pyfda_lib.mod_version() dir_string += "</table>" dir_string += ("<table><th style='font-size:large;'>Directories</th>" "<tr><td><b>Home:</b></td><td>{0}</td></tr>" "<tr><td><b>Install: </b></td><td>{1}</td></tr>" "<tr><td><b>Config: </b></td><td>{2}</td></tr>" "<tr><td><b>User: </b></td><td>{3}</td></tr>" "<tr><td><b>Temp:</b></td><td>{4}</td></tr>"\ .format( dirs.HOME_DIR, dirs.INSTALL_DIR, dirs.CONF_DIR, user_dirs_str[:-6], dirs.TEMP_DIR)) dir_string += ("<th style='font-size:large;'>Logging Files</th>" "<tr><td><b>Config:</b></td><td>{0}</td></tr>" "<tr><td><b>Output: </b></td><td>{1}</td></tr>" "</table>"\ .format(dirs.USER_LOG_CONF_DIR_FILE, dirs.LOG_DIR_FILE)) about_string = info_string + versions_string + dir_string #msg = QMessageBox.about(self, "About pyFDA", info_string) butClipboard = QPushButton(self) butClipboard.setIcon(QIcon(':/clipboard.svg')) butClipboard.setToolTip("Copy text to clipboard.") # butClipboard.adjustSize() # butClipboard.setFixedSize(self.checkLayout.sizeHint()) msg = QMessageBox(self) msg.setIconPixmap( QPixmap(':/pyfda_icon.svg').scaledToHeight( 32, Qt.SmoothTransformation)) msg.addButton(butClipboard, QMessageBox.ActionRole) msg.setText(about_string) # msg.setInformativeText("This is additional information") #msg.setDetailedText(versions_string) # adds a button that opens another textwindow msg.setWindowTitle("About pyFDA") msg.setStandardButtons(QMessageBox.Ok) # | QMessageBox.Cancel # close Message box with close event triggered by "x" icon msg.closeEvent = self.closeEvent butClipboard.clicked.connect(lambda: to_clipboard(about_string)) retval = msg.exec_()
from ..compat import (QtGui, QWidget, QFont, QCheckBox, QFrame, QTableWidget, QTableWidgetItem, QTextBrowser, QTextCursor, QVBoxLayout, QHBoxLayout, QSplitter, Qt, pyqtSignal) import numpy as np from numpy import pi, log10 import scipy.signal as sig import pyfda.filterbroker as fb # importing filterbroker initializes all its globals import pyfda.filter_factory as ff # importing filterbroker initializes all its globals from pyfda.pyfda_lib import lin2unit, mod_version from pyfda.pyfda_rc import params # TODO: Passband and stopband info should show min / max values for each band if mod_version('docutils') is not None: from docutils.core import publish_string HAS_DOCUTILS = True else: HAS_DOCUTILS = False classes = {'Input_Info': 'Info'} #: Dict containing class name : display name class Input_Info(QWidget): """ Create widget for displaying infos about filter specs and filter design method """ sig_rx = pyqtSignal(object) # incoming signals from input_tab_widgets def __init__(self, parent):
from pyfda.pyfda_rc import params from pyfda.pyfda_lib import H_mag, mod_version, safe_eval from pyfda.pyfda_qt_lib import qget_cmb_box from pyfda.plot_widgets.mpl_widget import MplWidget from mpl_toolkits import mplot3d # import to register 3D projection from matplotlib import cm # Colormap from matplotlib.colors import LightSource classes = {'Plot_3D': '3D'} #: Dict containing class name : display name #http://docs.enthought.com/mayavi/mayavi/mlab_running_scripts.html#running-mlab-scripts #http://docs.enthought.com/mayavi/mayavi/auto/mlab_helper_functions.html #http://docs.enthought.com/mayavi/mayavi/mlab.html#simple-scripting-with-mlab if mod_version('mayavi'): from mayavi import mlab MLAB = True else: MLAB = False if mod_version('vispy'): from vispy import plot #(?) HAS_VISPY = True else: HAS_VISPY = False class Plot_3D(QWidget): """ Class for various 3D-plots: