Commit Graph

25 Commits

Author SHA1 Message Date
Tom A. Wagner
2343ef824e application: Set PreferDark color scheme
Run the app in dark mode by default, unless the user explicitely wants light mode.
2023-08-28 20:58:54 +02:00
Tom A. Wagner
af4051c3c2 ui: Port to libadwaita
This ports the application to libadwaita, enabling us to use the libadwaita stylesheet and
widgets to better implement the Gnome Human Interface Guidelines.
2023-08-28 19:47:37 +02:00
Tom A. Wagner
14f17b3f24 Stop using deprecated gtk::StyleContext::add_provider_for_display function 2023-08-17 21:00:18 +02:00
Tom A. Wagner
0b3b124cdf graph: Refactor graph item management into new graph_manager object
The graph widgets management (watching a glib receiver, adding and removing
Nodes, Ports and Links) currently done in the `Application` and `GraphView`
objects has been extracted into a new GraphManager object, which watches the
receiver instead, pushes changes directly to the widgets, and reacts to their signals.

This seperates widget logic and management logic cleanly instead of both
being mixed into the GraphView, and also reduces the code size for the
Application object.
2023-08-01 09:15:40 +02:00
Tom A. Wagner
a9ad1cccf0 fix clippy warnings 2023-08-01 09:13:16 +02:00
Tom A. Wagner
f986902929 graph: Move link data into new GObject subclass 2023-07-27 14:16:42 +02:00
Tom A. Wagner
475a83fab7 Restructure view module into ui folder, graph specific widgets into graph subfolder 2023-07-27 14:16:42 +02:00
Tom A. Wagner
146fb65dc5 Update gtk and glib dependencies 2023-02-12 20:23:56 +01:00
Tom A. Wagner
b115e6f50c zooming: Add support for zooming via zoom gesture (two finger touchpad/touchscreen zooming) 2022-11-09 19:21:32 +00:00
Tom A. Wagner
727326aca4 zooming: Add a control widget that allows for changing the zoom level of the graph
The new widget sits in the headerbar, and allows for changing the zoom level with "+" and "-" buttons, via text entry, and a dropdown where a list of predefined levels can be clicked.
2022-11-09 19:21:32 +00:00
Tom A. Wagner
637ce104df view: Node,Port: Store pipewire Id as property on node, and make its name a property too. 2022-07-21 19:14:17 +02:00
Tom A. Wagner
52e48cc0a7 Adjust license headers to reflect gpl-3.0-only license. 2022-04-19 10:14:01 +02:00
Tom A. Wagner
76ad8d11d7 Change application id to org.pipewire.Helvum 2022-01-28 10:14:21 +01:00
Tom A. Wagner
4075b66865 deps: Update gtk-rs to latest release 2022-01-17 12:00:00 +01:00
Tom A. Wagner
92dcfd61a1 Add gpl snippets to the start of each rust source file. 2021-10-03 11:27:36 +02:00
Roger Roger
487dc3b2d3 Group nodes into columns by major type 2021-08-18 07:23:50 +00:00
Tom A. Wagner
b719e0d2ec Add simple flatpak manifest 2021-07-22 11:35:12 +02:00
Tom A. Wagner
179665778d view: Draw a dashed line for links that are not active 2021-07-08 13:37:37 +02:00
Tom A. Wagner
7977481689 Fix some pedantic clippy warnings 2021-06-26 12:10:36 +02:00
Tom A. Wagner
907ef328d2 Move state to pipewire thread instead of the gtk thread.
This will allow easier state-keeping later, when setting up info-listeners on structs.
2021-06-06 09:20:07 +02:00
Tom A. Wagner
118c1ca28c Get node_from, node_to ids from state instead of props when a new link appears.
This is more reliable than assuming the link carries the id of its nodes, as there have been cases where a link was created without those
properties set.
Instead, we can just pull them from the state via the port ids of the link.
2021-06-04 10:30:31 +02:00
Mathias Rav
6d60095da8 Move CSS to its own file 2021-05-09 21:53:27 +02:00
Tom A. Wagner
a5d8c871ee Update dependencies 2021-05-08 18:42:49 +02:00
Tom A. Wagner
13f02ad317 Toggle links on and off when ports are connected by the user.
This extends the `Application` struct to keep more advanced state.
This state is then used to determine the needed information to create
or delete a link between the two connected ports.

A message to create/delete the link is then send to the pipewire thread,
which executed the request.
2021-05-08 18:06:52 +02:00
Tom A. Wagner
be240231c0 Merge Controller and View structs into one Application struct.
The `View` sturct was mostly a layer of indirection, and the controller benefitted by absorbing the gtk::Application
subclass parts, so now those two are merged into a new gtk::Application subclass.
2021-05-08 18:06:52 +02:00