Coder Social home page Coder Social logo

pothosware / pothoswidgets Goto Github PK

View Code? Open in Web Editor NEW
6.0 20.0 6.0 783 KB

Graphical widgets to supplement the Pothos GUI

Home Page: https://github.com/pothosware/PothosWidgets/wiki

License: Boost Software License 1.0

CMake 3.16% C++ 96.84%
pothos graphical widgets qt slider combobox spinbox chatbox pushbutton radio-buttons

pothoswidgets's Introduction

Graphical widgets to supplement the Pothos GUI

Documentation

Dependencies

  • Pothos library
  • QT5 C++ development libraries and headers

Building

Configure, build, and install with CMake

Licensing information

Use, modification and distribution is subject to the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

pothoswidgets's People

Contributors

bjorksteinsson avatar guruofquality avatar pavel-demin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pothoswidgets's Issues

fft plotters need a full-scale parameter

Currently fullscale is assumed to be 1.0. To better handle fixed point data (and really anything) there should be a parameter that specifies what is full-scale (defaulting to 1.0).

wave viewer - wait for all ports in sync mode

When in synchronous alignment mode, the wave plotter should ensure that the entire display is only refreshed after all N channels have arrived. Otherwise we are not necessarily looking at curves from the same time.

periodigram: peak hold and average

  • peak hold is an extra trace with configurable life-time to peak over
  • average alters the channel to avaerage over a specified life-time
  • need to select which trace peak hold is active on: None, CH0, or custom list
  • need to select which channels average is on: None, CH0, or custom list
  • need to configure history duration (in seconds?) for both features

stream intercept widget - debug tool

Allow the user to step through a stream with a push button, triggered by the presense of messages and labels. The widget will display the contents of the object (at least the data type).

radio group cant use label to drag

This may be cause by the fact that QGroupBox is checkable (which is disabled in this case), so its eating the events and not forwarding them...

duplicate and report ComboBox bug to Qt


    /*!
     * FIXME -- This is almost certainly a Qt bug-workaround.
     * Changing this widget's parent causes a segfault in QComboBox.
     * Start with no parent, set parent, clear parent, set again -> segfault.
     * The workaround is to create a new QComboBox and restore its state.
     */
    bool event(QEvent *e)
    {
        if (e->type() == QEvent::ParentAboutToChange)
        {
            const auto oldIndex = _comboBox->currentIndex();
            QStringList oldItems; for (int i = 0; i < _comboBox->count(); i++) oldItems.push_back(_comboBox->itemText(i));
            delete _comboBox;
            _comboBox = (new QComboBox(this));
            layout()->addWidget(_comboBox);
            _comboBox->addItems(oldItems);
            _comboBox->setCurrentIndex(oldIndex);
        }
        return QWidget::event(e);
    }

plotters should accumulate input to avoid contention issue

Set the bins per display or points per wave plotter and the input sits on all the buffer resources waiting for more. Set the size back and it resumes plotting. We should in general address the issue of buffer requirements through the API, however in this case, accumulating to a render buffer at the display rate is very reasonable

pushbutton widget

  • two modes: click or toggle
  • signals for clicked and toggled
  • slot for label
  • slot for value

flexible datatype plotter widgets

  • remove dtype from constructor and available params
  • accept incoming buffers from streams and packet messages
  • accept dtype from the incoming buffer

2d image display widget

This widget displays an image passed in via message. The message should contain a matrix. Exact format to be determined.

drop down control widget

  • dropdown/radiobuttons/combobox sort of widget that chooses from a set of enumerated options
  • setter for the available options
  • output message port for changed value

display plotters range controls

Provide these settings in the regular block properties panel. Possibly a context menu or built-in plot control panel as well.

  • Y axis auto scale
  • reference level
  • dynamic range

Colored square for status visualization

We want an easy way to visualize the state of something. Like active/inactive, fail/pass, 0/1/tristate, etc.

The colored square block has an input slot which takes an arbitrary value of arbitrary type. The user configures the block with a map of possible values to a hex color code. The block performs the lookup to set the color.

Example configs:

  • {true : "blue", false : "red"}
  • {1 : "#000000", 2: "#ffffff", 3: "gray"}

QString conversion+serialization support module

This will allow QString-based signals and slots from a Qt widget to be used in an ecosystem outside of Qt which would use std::string. Supporting this lowers the amount of code wrapping because users can directly register QWidget slots that take QStrings and it will "just work".

  • conversions between QString and std:string
  • serialization for QString

slider control widget

  • typical linear slider
  • logarithmic scaling option
  • vertical/horizontal
  • setters for min, max, step
  • output message for value on change

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.