Commit graph

169 commits

Author SHA1 Message Date
Stéphane Cerveau
a5767b21fe graphmanager: Add node-double-clicked signal 2023-02-09 14:05:17 +01:00
Stéphane Cerveau
726a6f4d41 cargo: update gst/gtk/gst-plugin-gtk4 2022-11-29 08:42:12 +00:00
Stéphane Cerveau
6b657891c6 graphmanager: fix some lint issues with rust 1.63
Fix format and missing derive
2022-09-06 12:48:40 +02:00
Stéphane Cerveau
ebbc1d2261 app: update to rust 1.63 and fix some lint issues
Fix format! and missing derive
2022-09-06 12:48:40 +02:00
Stéphane Cerveau
1fe43d7da3 player: fix clippy error 2022-03-07 11:29:19 +01:00
Patrick José Pereira
0ee941efbe src: Use new wrappable argument 2022-02-21 08:49:31 +00:00
Patrick José Pereira
ed697a63e9 ui: treeview: Add wrappable feature 2022-02-21 08:49:31 +00:00
Stéphane Cerveau
39554d8d99 logger: add a popup menu to clear the logs
Add a way to clear the logs.
2022-02-21 08:34:34 +00:00
Stéphane Cerveau
aaaa58072c logger: display the most recent log on top
The most recent log arrives on top of the list and
is always visible.
2022-02-21 08:34:34 +00:00
Stéphane Cerveau
7762332700 preferences: add log level
Can now set the log level in the application
2022-02-21 08:34:34 +00:00
Stéphane Cerveau
28a9cfbd50 graphmanager: update link license
Add a license in GraphManager folder
2022-02-16 17:10:34 +01:00
Stéphane Cerveau
088aff1576 properties: cleanup Label creation 2022-02-10 14:38:13 +00:00
Stéphane Cerveau
57160b3bce about: display GStreamer version 2022-02-10 14:38:13 +00:00
Stéphane Cerveau
6cc908c109 graphview: add a format version to graphview 2022-02-10 14:38:13 +00:00
Stéphane Cerveau
f925c21b1d GPS: cleanup the license
Keep only the SPDX and mention the project
2022-02-09 11:28:59 +01:00
Stéphane Cerveau
0164d71bf2 graphmanager: cleanup the license
Keep only the SPDX and mention the project
2022-02-09 11:28:27 +01:00
Stéphane Cerveau
006ed2bae0 properties: preferences: unify behavior
Use a common create_dialog method in dialog.rs
Add an empty field in combo box to be able to remove
a property
Remove the close button.
2022-02-08 14:57:00 +01:00
Stéphane Cerveau
72dcde0ad3 graphmanager: update description on property remove
The node must update its description when
a property value has been removed.
2022-02-08 14:53:12 +01:00
Stéphane Cerveau
1eb49731e1 properties: fix the propery value with combo
The property is now the numerical value of the
enum or flags in an element's property
2022-02-08 14:34:23 +01:00
Stéphane Cerveau
935e6c7fb5 burger menu: right aligned 2022-02-08 14:17:31 +01:00
Stéphane Cerveau
78b2bd4a6f app: remove quit mentu entry
The quit menu entry is dispensable as
the application can be quit with cross
2022-02-08 14:13:18 +01:00
Stéphane Cerveau
402ac1f40f properties: display the number of elements found 2022-02-07 12:19:15 +01:00
Stéphane Cerveau
e3ac490a81 properties: add a way to display pipeline properties
Pipeline properties displays all elements in
the pipeline.
2022-02-07 12:19:15 +01:00
Stéphane Cerveau
4cb965fe7f player: handle EOS message 2022-02-07 12:19:15 +01:00
Stéphane Cerveau
f118ef7db0 player: detect gtk4paintablesink with deep-element-added
Connect to the deep-element-added signal from the pipeline
to detect the gtk4paintablesink presence.
2022-02-07 12:19:15 +01:00
Stéphane Cerveau
25d856a360 pipeline: rename to player
To avoid confusion with GStreamer pipeline and
GPS pipeline, renamed it player.
2022-02-07 12:19:15 +01:00
Stéphane Cerveau
59ecbb41a5 pipeline: can now support pad properties
Can set pad property which will be used during the
pipeline generation.

Change port name to src_* or sink_*

Caps become an hidden property

Remove the ':' to separate value field, it does not
work properly with URI

Add funny graphs
2022-02-07 12:19:15 +01:00
Stéphane Cerveau
7db3b333ac graphmanager: add API to change port name. 2022-02-07 12:19:15 +01:00
Stéphane Cerveau
a21350b4a0 graphmanager: can remove property
Add public remove_property to PropertyExt
2022-02-07 12:19:10 +01:00
Stéphane Cerveau
8059f73f51 elements: sort the favorites by alphabetical order 2022-02-03 12:56:54 +01:00
Stéphane Cerveau
b12ea9ebdd properties: follow the same layout as in preferences
Rework the UI to follow the same layout as in preferences
dialog
2022-02-01 16:14:52 +01:00
Stéphane Cerveau
c101ea6a37 preferences: add a preference dialog
Add a dialog to set user preference such
as gtk4paintablesink usage.
2022-02-01 16:14:52 +01:00
Stéphane Cerveau
247cf2c844 settings: use HashMap to save paned positions
Save the hashmap in the settings.toml file
2022-02-01 13:23:15 +01:00
Stéphane Cerveau
4cdf2fd70b app: support multiple preview in a Notebook
The preview is now a NoteBook and if multiple video
gtk4sink are available, a page is created for each of it.
2022-02-01 13:23:15 +01:00
Stéphane Cerveau
09f56de320 app: change the app title 2022-02-01 11:44:35 +01:00
Stéphane Cerveau
1c10424e9e pad: change the pad name log cat 2022-02-01 11:44:01 +01:00
Stéphane Cerveau
3a4a4e2bea ui: move gps.ui to dedicated folder 2022-01-31 19:31:45 +01:00
Stéphane Cerveau
7aac6cb08f gps.ui: add a label for "no "preview" 2022-01-31 17:33:19 +01:00
Stéphane Cerveau
9b768b7d56 app: display position/duration and seek scale
The user can now see the position and duration of the playback
The slider can now seek to the given position.
2022-01-31 17:32:54 +01:00
Stéphane Cerveau
8f72b9ac79 element: display the rank in the description 2022-01-31 13:37:22 +01:00
Stéphane Cerveau
18606b687c favorites: display properties as well
As in element list, display properties when selected
2022-01-28 16:16:29 +01:00
Stéphane Cerveau
b84483057b pipeline: add gtk4paintablesink
Add a way to draw whenever possible
the video render into the preview box
in UI
2022-01-28 16:01:01 +01:00
Stéphane Cerveau
42e0057829 app: use new graphview API
Use new APIs from unit test graphview changes
Update the TODO
2022-01-27 17:35:47 +01:00
Stéphane Cerveau
d19387f039 graphview: implement tests infra
- Implement test for graph creation, save and load.
- Change xml API
- Update public/private api
- Add a graphview clear API
2022-01-27 17:35:47 +01:00
Stéphane Cerveau
9cc40d2b7b grahview: add create_link methods to clarify API 2022-01-27 13:18:46 +01:00
Stéphane Cerveau
2ddd49fa0d tests: implement graphview unit test 2022-01-27 13:18:46 +01:00
Stéphane Cerveau
620f6bf699 graphview: implement link on mouse pointer
Draw a dash line following the mouse pointer
when an available port has been clicked.
2022-01-27 13:18:46 +01:00
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