Commit graph

172 commits

Author SHA1 Message Date
Stéphane Cerveau cf8c8ab585 graphview: remove all links when node is deleted
The node can have more links than one, so all the links
must be destroyed when the node is destroyed.

Cleanup the code and panic if a link does not have
the node or port described in it.
2022-01-27 13:18:46 +01:00
Stéphane Cerveau a8e7b039a0 pipeline: can now communicate with app
Tell the status of pipeline in the status bar.
2022-01-27 13:18:46 +01:00
Stéphane Cerveau ee66f53171 pipeline: Able to render a graph and check for error
If the pipeline can not be created, display an error dialog
when checking it.
2022-01-27 13:18:46 +01:00
Stéphane Cerveau 5c25417569 pipeline: set state to stop when error
Do not display a dialog when an error happens,
only a log error is sufficient.
2022-01-27 13:18:46 +01:00
Stéphane Cerveau 13421b4d5b app: display the caps as a tooltip on port
The port can now display a tooltip
with the port
2022-01-27 13:18:46 +01:00
Stéphane Cerveau 375d01c0cd port: Rework the way to add a port/node
Allow to tell than a port has been added with its property
2022-01-27 13:18:46 +01:00
Stéphane Cerveau f483b51c9e app: Use the new PropertyExt interface from Graphview 2022-01-27 13:18:46 +01:00
Stéphane Cerveau 17ecce9748 port: support properties
Allow port to have a property set
and store it in the xml file

Introduce PropertyExt

Rewrote the port layout
2022-01-27 13:18:46 +01:00
Stéphane Cerveau b360f4a13a node: update the layout and use GtkGrid
The node uses a GrkGrid to display
ports, name and description.
2022-01-27 13:18:46 +01:00
Stéphane Cerveau 39815eb8d9 properties: support more properties
Support enum and flags properties in
addition to numerous and string ones.
2022-01-27 13:18:46 +01:00
Stéphane Cerveau 24e5e947d5 properties: fix regression with gst 0.18
Fix alignement
2022-01-20 16:17:06 +01:00
Stéphane Cerveau 45d5f19c10 gps: use it as a whole module
Namespace the use of gps
2022-01-20 15:32:30 +01:00
Stéphane Cerveau a2503ce86b ui: introduce a new module
- Cleanup up app.rs and use the new module ui
- Remove display_plugin_list
- Can now render a graph and get the
parse launch line.
2022-01-20 15:32:30 +01:00
Stéphane Cerveau 71e68b846f app: Display a tooltip on node
Handle node-added signal to set
a tooltip on each node.
2022-01-20 12:04:24 +01:00
Stéphane Cerveau 548f4cb3fc graphview: add "node-added" signal
Signal the app that a node has been added
correctly.
2022-01-20 12:04:24 +01:00
Stéphane Cerveau 6dd37b95e4 app: display plugin description in property box
On element selection, the property view display
the description
2022-01-20 12:04:24 +01:00
Stéphane Cerveau 7f4a4b438d app: add an element notebook for all and favorites
Can now see all elements and favorites from the main window
2022-01-20 12:04:24 +01:00
Stéphane Cerveau 8f83721047 app: redesign the UI to have a dashboard
The dashboard contains:

- GStreamer elements
- Element's property
- Preview
2022-01-19 13:32:33 +01:00
Stéphane Cerveau 7abc0190cd gstreamer-rs: move to 0.18.1 release 2022-01-19 12:24:13 +01:00
Stéphane Cerveau 2182fd56ed main: update license header 2022-01-19 11:56:21 +01:00
Stéphane Cerveau a572d04958 app: use create_node_with_port API
Instead of add_new_node_with_port
2022-01-19 11:56:05 +01:00
Stéphane Cerveau 6c31bc3912 graphview: add documentation and refactor the code
Add documentation to public method.
Publish method which are public
Use SelectionExt trait.
Rename add_node_with_port to create_node_with_port
2022-01-19 11:55:13 +01:00
Stéphane Cerveau ade3f14902 graphview: update css for node and port
Change border style and
port presence entries
2022-01-18 17:43:01 +01:00
Stéphane Cerveau 0f0f9d6fc0 app: port support update
Connect the port to the element pad
capabilities.
Can now create a port only if the element
supports the request pad
Can only delete a port which is a "sometimes"
port/pad.

Introduce GPS module.
2022-01-18 17:43:01 +01:00
Stéphane Cerveau 4bae12c011 graphview: introduce PortPresence
The port presence helps to know
if the port can be deleted or not.

XML Format break.
2022-01-18 16:39:39 +01:00
Stéphane Cerveau e5334b1d5e graphview: Remove the link in remove_port
Remove the link when removing a port from a
node.

Update documentation
2022-01-18 16:39:39 +01:00
Stéphane Cerveau 7a37e5b736 app: Use new "node" api from graphview 2022-01-18 16:39:39 +01:00
Stéphane Cerveau 9ef073d3c3 graphview: update node API
Update doc for `node` and take u32
in argument.
2022-01-18 16:39:39 +01:00
Stéphane Cerveau 2548040463 graphview: port to gtk4 version 0.4.1 2022-01-17 14:40:09 +01:00
Stéphane Cerveau 21e5e4b4cb app: port to gtk4 version 0.4.1 2022-01-17 14:40:09 +01:00
Stéphane Cerveau fdfd739831 pipeline: fix a small issue with properties
Line formatting was wrong with properties set
ie filesrc location.
2022-01-17 14:40:09 +01:00
Stéphane Cerveau 72d4ddadb7 graphmanager: save the position as an attribute
The position should not be an hidden property
but a regular attribute.
2022-01-17 10:39:11 +01:00
Stéphane Cerveau 34b134107e graphmanager: use logger instead of println 2022-01-14 09:50:45 +01:00
Stéphane Cerveau 1e13bbdca6 logger: use of simplelog crate
Logs are now visible in 2 different place
the treeview in the bottom and in a log file
with log level.
2022-01-14 09:50:45 +01:00
Stéphane Cerveau 0cd2490cbb pipeline: cleanup the start_pipeline error handling
Cleanup the code to handle GStreamer set_state
failure.
2022-01-12 18:49:13 +01:00
Stéphane Cerveau 1a8e893169 app: load/save node position
Able to load and save the node position
in the XML file.
Autosave/autoload the current graph
in the settings folder.
2022-01-12 18:49:13 +01:00
Stéphane Cerveau e9b905230a graphview: save position as a hidden property
- Save/load node position in XML file
- Introduce a graph ID
2022-01-12 18:49:10 +01:00
Stéphane Cerveau 198847cb54 app: code cleanup
Use simplified anyhow result
Rewrite the expect/error messages.
Refactor the start pipeline API
Rename the treeview ids
2022-01-12 11:15:52 +01:00
Stéphane Cerveau 2a7137e6dc graphview: code cleanup
Remove dead code
Rewrite error message
Use simplified anyhow result for xml
methods
2022-01-12 11:15:52 +01:00
Stéphane Cerveau 27eeab7b40 logger: add column for log level
Add a column to separate the message
from the log level.
2022-01-12 11:15:52 +01:00
Stéphane Cerveau a6a5d796ca gps.ui: Use a stock icon for clear
Clear graph on button clicked.
2022-01-12 11:15:52 +01:00
Stéphane Cerveau e8259f3773 pipeline: fix multiple input pads
Can now generate a pipeline with multiple input
pads such as a compositor.
2022-01-12 11:15:52 +01:00
Stéphane Cerveau 81ca9ca3a3 about: display about dialog
display a custom and clean about dialog
with the infrastructure based on meson to
genetate the config.rs
2022-01-12 11:15:52 +01:00
Stéphane Cerveau c1ba09814b app: rework menu and actions
Use one popover menu parent with the mainwindow
Centralize the actions definition
Cleanup the code for more readabilty.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 9884a776b3 app: rework the UI dimension
Add GtkPaned between the logs and the graph
Load/save app dimensions.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 3731a92d51 logger: implement a logger with treeview
Any log should be now visible in the logger
tree view according to the level.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau d291c93352 app: add graph pop menu
Add a pop menu to add new plugin to the graph
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 158f9eb899 favorites: implement a favorite list
The right panel can now store a favorite list which is
saved into a settings file in the user config directory.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau c16102928b pluginlist: avoid mulitple init
Allow only one initialization of the plugin
list.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 914fc1f077 pipeline: move render_gst to this module
Remove render_gst from graphview and define
it in pipeline.
This will allow to isolate properly the graphmanager
module.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau a15c9c7353 GPSApp: Able to clear the graph with new
Able to clear with new file and load
a preconfigured graph with clear button
2022-01-11 20:48:53 +01:00
Stéphane Cerveau a0bb503b27 graphview: can now select nodes and links
Nodes and links can be selected and deleted
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 7d08abaca8 GPSApp: Can now request pads on element
Add menu entries to add new pad/port to an element/node.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 6756b34919 plugindialogs: rename module and support properties in element
rename pluginlist module to plugindialogs
Add display_plugin_properties to modify properties
from an element.
Add a way to modify the location if element is URI_TYPE_SRC
Able to remove a node from the graph
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 6c7dccd450 graphview: display contextual menu on right click
display a contextual menu if user clicks a node or port with a right
click.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau bc7f4424ca main: add a common init method
Rename the application to gst-pipeline-studio and
add an init method to initialize
gstreamer and x11
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 6397ebff74 GPS: add GST render to parse launch format
The player is able to take the graph description and
build a string which will be passed to the
GStreamer parse launch engine.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau f1149a6b5e pipeline: implement parse launch playback
Can now play/pause/stop a playback from
a parse launch description GST pipeline.

rename getters in pipeline.rs
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 52286ada4a GPS: Add xml save/load in graphview
Can now save and load in XML
graphs/nodes/ports/links
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 5f91fbaef7 GPS: introduce the graphmanager
Introduce the first version of a graph manager
with:
- Graphview
- Node
- Port
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 25b2d1f8bf GPS: port to GTK4 2022-01-11 20:48:53 +01:00
Stéphane Cerveau b36fd0aebe pluginlist: can now select and double click element
Treeview row actions:
 - A selection will display element information.
 - A double click add a new element in the app.graph structure.

The plugin list dialog is an item from gps.ui
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 0851f0545b GPS: introduce the graph object
The graph object stores information about the graphical
representation of a gst pipeline including
the element box, the pads and the connections.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 05749a7009 GPS: introduce an app structure 2022-01-11 20:48:53 +01:00
Stéphane Cerveau 6351f1f43f GPS: Add a dialog to select the elements
This dialog allows to select and see element
and its details.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 859f936796 GPS: add GStreamer support
Can now get the GStreamer element's list
from the registry.
2022-01-11 20:48:53 +01:00
Stéphane Cerveau 20c537f61b GPS: change license to GPLv3 2021-12-02 10:28:24 +01:00
Stéphane Cerveau bdd183075e mainwindow: connect button to actions
Connect:

- add plugin dialog
- open file dialog
- about dialog
2021-11-18 12:35:56 +01:00
Stéphane Cerveau 12e7958886 mainwindow: can now draw a vector of rectangles. 2021-11-17 12:43:02 +01:00
Stéphane Cerveau 52718e0388 mainwindow: can draw a rectangle at mouse position 2021-11-04 14:25:25 +01:00
Stéphane Cerveau 465ac78c08 gps: Add first UI design with glade 2021-10-22 13:00:05 +02:00
Stéphane Cerveau 56f62f172c rust: init the project 2021-10-12 10:33:51 +02:00