Coder Social home page Coder Social logo

pothosware / pothosflow Goto Github PK

View Code? Open in Web Editor NEW
69.0 23.0 27.0 2.08 MB

GUI frontend and designer tool for the Pothos framework

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

License: Boost Software License 1.0

C++ 97.78% CMake 1.74% Shell 0.48%
gui block-design sdr qt graphical pothos dataflow pothos-framework

pothosflow's Introduction

Pothos Flow - graphical topology designer

Pothos Flow is the GUI frontend and designer tool for the Pothos framework.

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)

qtcolorpicker

The source for the qtcolorpicker is available in the pothos-gui source tree. qtcolorpicker is built as a stand-alone library and used under the terms of the GNU LESSER GENERAL PUBLIC LICENSE. See qtcolorpicker/LICENSE.LGPL

pothosflow's People

Contributors

ashley-b avatar bistromath avatar corecode avatar fiachantaw avatar guruofquality avatar hewittc avatar ncorgan avatar ra1nb0w avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  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  avatar  avatar  avatar

pothosflow's Issues

global cache for block descriptions

  • need to fill the cache at init time
  • need to query blockdesc given a path
    • the blockdesc lookup is performed when loading a block from saved state

type-string to color mapping dialog

  • Create a dialog in the about/help menu which displays the type names for the various colors used in the properties panel and IO ports.
  • This dialog is generated from the mappings that have passed through
    QColor typeStrToColor(const std::string &typeStr);
  • Put typeStrToColor declaration and implementation, and new color cache/color table in its own cpp/hpp files
  • add API call to query the mapping of type string to color
  • also, use the color cache/color table in the lookup to speed up results

message window logger splitter

message windows need to create poco logger splitters when registering themselves into the logging system. This avoids displacing an already registered subscribed logger.
The splitter should be removed and logger reconnected on destruction. Probably need a mutex as well.

Thoughts: Poco should make this automatic, so we dont need this bug.

cache block port configuration

in the case of evaluation errors, the gui need to know the available ports that should be on the block. We can usually determine this by the last good values or by the defaults. This information should be available when evaluation fails.

breakers support continued

  • auto combine breakers logic when moving objects between pages
  • support for breakers in the properties window to edit the node name
  • show all breaker connections in the properties window
  • jump to page context menu when right clicking on a breaker
    • the context menu lists all pages with breakers of the same node name

multi-line text edit widget and multi-line support

We need a text edit widget that be be a single line, expanded to multi-line when more text is entered or special button clicked; and can exec an external editor and monitor saves to resync after changes.

Also, the JSON value currently cannot support multi-line. We need to split the value into an array of strings (string per line). Currently in BlockPropertiesPanel:

newValue.replace("\n", ""); //cannot handle multi-line values

readonly file support

For readonly files we should:

  • Show that they are readonly in the title bar
  • Always force use of the save-as dialog when saving

stats visualization for connections

What stats would we like to display on a connection and what are there configuration options?

  • Example: Colourized connections based on data flow
  • Example: Numeric display of average throughput

objects pasted out of bounds

Objects can be pasted out of bounds:

  • provide a clipping mechanism in general so nothing can be drawn out of bounds
  • determine that the bounds are not in the drawing area and use a known good position

permanent affinity zones for the GUI

We should require two zones that can never be deleted -- only modified (partially):

  • gui - this zone represents the gui process, blocks can run directly in the gui with this affinity, and widget blocks must run in this zone
  • default - this is the localhost on the default port that pothos gui init spawns, this is the default process for blocks to be evaluated and executed in

These two zones should exist as options, but cannot be user modified.

properties panel: add tab support for properties

  • specify a tab name with a parameter (like advanced, or related controls)
  • properties panel creates tab widget when there are multiple tab names specified
  • modify block description parser and markup to include the tab name (just like preview flag)

signals and slots gui support

The signals and slots ports will need a graphical representation, allow for connections, disconnections, discerning between different signals and slots, etc...

The current thinking is to use the north position to provide a slot connection point, and the south position to provide a signal connection point. To select individual signals and slots by name, the user will have to configure the connection.

GraphEditor error report dialog

This dialog amalgamates evaluation errors on a GraphEditor, collecting the errors from all blocks.

  • Add an action to the view menu that triggers the view error report dialog.
  • The GraphEditor has the handler for this action and call the dialog factory.
  • The report should detail the graph page name, the block ID, the block title, and errors.

poco json serialization support

we use poco JSON array and object extensively in the gui support modules

  • create a module to support serialization of these two types

configuration panel for connections

we want to configure what a connection shows while the topology is executing

  • average rates, variance, bytes vs elements
  • current queue depth or average depth, etc

affinity panel deals with host uri table changes

  • Update the combo box in the panel based on the currently available list of host URIs.
  • Support adding in custom uris that the user places in the combo box
  • The original setting no matter what the uri list changes to is always valid to keep

graph widgets support

The graph will have live display widgets. We need to be able to:

  • query available widgets in the plugin registry
  • determine widget api for factory/control/config/feeding calls
  • standard way to access and edit the properties of a widget
  • widgets can have multiple input controls and display mechanisms
  • widgets should tie into the topology to deal with streams and registered calls

properties panel switching issues

dont switch properties panels when modifications are present, make the panel visible and provide a dialogue about uncommitted changes.

properties panel - support combo box + text edit

  • using the block description widget parameter setting: |widget ComboBox
  • comboBox -> setEditable(true)
  • allow 1 user-specified option + param options |option [name] key
  • when the user specifies options but not |widget ComboBox -- use a non user editable ComboBox

affinity zones editor panel

  • create zone of affinity to processors, numa nodes, and processes (local and remote)
  • ability to highlight/select groups of blocks and assign affinity zones
  • zones will probably be saved the global config, but affinity assignments will be saved with the topology

affinity zone integration

  • apply affinity zone to selection menu
  • color blocks based on affinity zone
  • topology executor - per zone server

block tree - search feature

Search through the available block resources, inspecting

  • category
  • block name
  • tags

...to produce a search result

message window logger designer panel

GUI controls to create custom message windows

  • choose logging sub-space filters
  • choose priority filters
  • Message windows saved with the global config
  • Message windows saved with individual topologies

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.