Exemple #1
0
    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>&nbsp;&emsp;{3}"
           .format(dirs.OS, dirs.OS_VER, dirs.USER_NAME, 
                 pyfda_lib.mod_version().replace("\n", "<br>&nbsp;&emsp;")))

         dir_string = ("<table><th style='font-size:large;'>Directories</th>"
                           "<tr><td><b>Home:</b></td><td>{0}</td></tr>"
                           "<tr><td><b>Install:&emsp;</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:&emsp;</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_()
Exemple #2
0
    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_()
Exemple #3
0
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() )
Exemple #4
0
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)
Exemple #5
0
    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>',''), ('&emsp;',' '), ('<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>&nbsp;&emsp;{0}</td></tr>"\
#                           .format( pyfda_lib.mod_version().replace("\n", "<br>&nbsp;&emsp;")))
         
         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:&emsp;</b></td><td>{1}</td></tr>"
                           "<tr><td><b>Config:&emsp;</b></td><td>{2}</td></tr>"
                           "<tr><td><b>User:&emsp;</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:&emsp;</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_()
Exemple #6
0
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
Exemple #7
0
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()
Exemple #8
0
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):
Exemple #9
0
    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>', ''), ('&emsp;', ' '), ('<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>&nbsp;&emsp;{0}</td></tr>"\
        #                           .format( pyfda_lib.mod_version().replace("\n", "<br>&nbsp;&emsp;")))

        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:&emsp;</b></td><td>{1}</td></tr>"
                         "<tr><td><b>Config:&emsp;</b></td><td>{2}</td></tr>"
                         "<tr><td><b>User:&emsp;</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:&emsp;</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_()
Exemple #10
0
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
Exemple #11
0
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):
Exemple #12
0
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: