mirror of
				https://github.com/johrpan/musicus.git
				synced 2025-10-26 11:47:25 +01:00 
			
		
		
		
	Update gtk-rs crates
This commit is contained in:
		
							parent
							
								
									3a27113bda
								
							
						
					
					
						commit
						ff17549b8b
					
				
					 39 changed files with 324 additions and 313 deletions
				
			
		
							
								
								
									
										397
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										397
									
								
								Cargo.lock
									
										
									
										generated
									
									
									
								
							|  | @ -69,26 +69,26 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "cairo-rs" | name = "cairo-rs" | ||||||
| version = "0.14.9" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "33b5725979db0c586d98abad2193cdb612dd40ef95cd26bd99851bf93b3cb482" | checksum = "129e928d3eda625f53ce257589efbe5143416875fd01bddd08c8c6feb8b9962b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cairo-sys-rs", |  "cairo-sys-rs", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "thiserror", |  "thiserror", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "cairo-sys-rs" | name = "cairo-sys-rs" | ||||||
| version = "0.14.9" | version = "0.15.1" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "b448b876970834fda82ba3aeaccadbd760206b75388fc5c1b02f1e343b697570" | checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -99,18 +99,9 @@ checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "cfg-expr" | name = "cfg-expr" | ||||||
| version = "0.8.1" | version = "0.10.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "b412e83326147c2bb881f8b40edfbf9905b9b8abaebd0e47ca190ba62fda8f0e" | checksum = "5e068cb2806bbc15b439846dc16c5f89f8599f2c3e4d73d4449d38f9b2f0b6c5" | ||||||
| dependencies = [ |  | ||||||
|  "smallvec", |  | ||||||
| ] |  | ||||||
| 
 |  | ||||||
| [[package]] |  | ||||||
| name = "cfg-expr" |  | ||||||
| version = "0.9.1" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "3431df59f28accaf4cb4eed4a9acc66bea3f3c3753aa6cdc2f024174ef232af7" |  | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "smallvec", |  "smallvec", | ||||||
| ] | ] | ||||||
|  | @ -281,60 +272,61 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gdk-pixbuf" | name = "gdk-pixbuf" | ||||||
| version = "0.14.0" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "534192cb8f01daeb8fab2c8d4baa8f9aae5b7a39130525779f5c2608e235b10f" | checksum = "678516f1baef591d270ca10587c01a12542a731a7879cc62391a18191a470831" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  |  "bitflags", | ||||||
|  "gdk-pixbuf-sys", |  "gdk-pixbuf-sys", | ||||||
|  "gio", |  "gio", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gdk-pixbuf-sys" | name = "gdk-pixbuf-sys" | ||||||
| version = "0.14.0" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f097c0704201fbc8f69c1762dc58c6947c8bb188b8ed0bc7e65259f1894fe590" | checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "gio-sys", |  "gio-sys", | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gdk4" | name = "gdk4" | ||||||
| version = "0.3.1" | version = "0.4.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "f97a162c17214d1bf981af3f683156a0b1667dd1927057c4f0a68513251ecf0f" | checksum = "d4a2fc0bd03d59383fc10b71a8cb731a1fac2998732a36a0c03e9b1de1513218" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cairo-rs", |  "cairo-rs", | ||||||
|  "gdk-pixbuf", |  "gdk-pixbuf", | ||||||
|  "gdk4-sys", |  "gdk4-sys", | ||||||
|  "gio", |  "gio", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "pango", |  "pango", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gdk4-sys" | name = "gdk4-sys" | ||||||
| version = "0.3.1" | version = "0.4.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "9498f4e06969fb96a4e4234dfe1d308a3ac6b120b3c6d93e3ec5c77fe88bc6d5" | checksum = "48a39e34abe35ee2cf54a1e29dd983accecd113ad30bdead5050418fa92f2a1b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cairo-sys-rs", |  "cairo-sys-rs", | ||||||
|  "gdk-pixbuf-sys", |  "gdk-pixbuf-sys", | ||||||
|  "gio-sys", |  "gio-sys", | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "graphene-sys", |  | ||||||
|  "libc", |  "libc", | ||||||
|  "pango-sys", |  "pango-sys", | ||||||
|  "system-deps 5.0.0", |  "pkg-config", | ||||||
|  |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -371,9 +363,9 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gettext-rs" | name = "gettext-rs" | ||||||
| version = "0.5.0" | version = "0.7.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "1b95fa19cca70adf9888150e979839ae9bd58f85a1a42e4753699112875189e1" | checksum = "e49ea8a8fad198aaa1f9655a2524b64b70eb06b2f3ff37da407566c93054f364" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "gettext-sys", |  "gettext-sys", | ||||||
|  "locale_config", |  "locale_config", | ||||||
|  | @ -381,25 +373,26 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gettext-sys" | name = "gettext-sys" | ||||||
| version = "0.19.9" | version = "0.21.3" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "e034c4ba5bb796730a6cc5eb0d654c16885006a7c3d6c6603581ed809434f153" | checksum = "c63ce2e00f56a206778276704bbe38564c8695249fdc8f354b4ef71c57c3839d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cc", |  "cc", | ||||||
|  |  "temp-dir", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gio" | name = "gio" | ||||||
| version = "0.14.8" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "711c3632b3ebd095578a9c091418d10fed492da9443f58ebc8f45efbeb215cb0" | checksum = "76cd21a7a674ea811749661012512b0ba5237ba404ccbcab2850db5537549b64" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "futures-channel", |  "futures-channel", | ||||||
|  "futures-core", |  "futures-core", | ||||||
|  "futures-io", |  "futures-io", | ||||||
|  "gio-sys", |  "gio-sys", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "once_cell", |  "once_cell", | ||||||
|  "thiserror", |  "thiserror", | ||||||
|  | @ -407,14 +400,14 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gio-sys" | name = "gio-sys" | ||||||
| version = "0.14.0" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "c0a41df66e57fcc287c4bcf74fc26b884f31901ea9792ec75607289b456f48fa" | checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
|  "winapi", |  "winapi", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | @ -439,21 +432,22 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "glib" | name = "glib" | ||||||
| version = "0.14.8" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "7c515f1e62bf151ef6635f528d05b02c11506de986e43b34a5c920ef0b3796a4" | checksum = "a826fad715b57834920839d7a594c3b5e416358c7d790bdaba847a40d7c1d96d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "futures-channel", |  "futures-channel", | ||||||
|  "futures-core", |  "futures-core", | ||||||
|  "futures-executor", |  "futures-executor", | ||||||
|  "futures-task", |  "futures-task", | ||||||
|  "glib-macros 0.14.1", |  "glib-macros 0.15.10", | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "once_cell", |  "once_cell", | ||||||
|  "smallvec", |  "smallvec", | ||||||
|  |  "thiserror", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -463,8 +457,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039" | checksum = "41486a26d1366a8032b160b59065a59fb528530a46a49f627e7048fb8c064039" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "heck", |  "heck 0.3.3", | ||||||
|  "itertools 0.9.0", |  "itertools", | ||||||
|  "proc-macro-crate 0.1.5", |  "proc-macro-crate 0.1.5", | ||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  | @ -474,12 +468,12 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "glib-macros" | name = "glib-macros" | ||||||
| version = "0.14.1" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "2aad66361f66796bfc73f530c51ef123970eb895ffba991a234fcf7bea89e518" | checksum = "dac4d47c544af67747652ab1865ace0ffa1155709723ac4f32e97587dd4735b2" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "heck", |  "heck 0.4.0", | ||||||
|  "proc-macro-crate 1.1.3", |  "proc-macro-crate 1.1.3", | ||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  | @ -499,12 +493,12 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "glib-sys" | name = "glib-sys" | ||||||
| version = "0.14.0" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "1c1d60554a212445e2a858e42a0e48cece1bd57b311a19a9468f70376cf554ae" | checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -520,48 +514,48 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gobject-sys" | name = "gobject-sys" | ||||||
| version = "0.14.0" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "aa92cae29759dae34ab5921d73fff5ad54b3d794ab842c117e36cafc7994c3f5" | checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "graphene-rs" | name = "graphene-rs" | ||||||
| version = "0.14.8" | version = "0.15.1" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "e3380f132530ef9eb9e0a2bac180e30390aa5e49892d20294f822a974117a563" | checksum = "7c54f9fbbeefdb62c99f892dfca35f83991e2cb5b46a8dc2a715e58612f85570" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "graphene-sys", |  "graphene-sys", | ||||||
|  "libc", |  "libc", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "graphene-sys" | name = "graphene-sys" | ||||||
| version = "0.14.8" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "9a9ac7450b3aa80792513a3c029920a2ede419de13fb5169a4e51b07a5685332" | checksum = "fa691fc7337ba1df599afb55c3bcb85c04f1b3f17362570e9bb0ff0d1bc3028a" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "pkg-config", |  "pkg-config", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gsk4" | name = "gsk4" | ||||||
| version = "0.3.1" | version = "0.4.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "eff59ca46c4fc5087fd7a0c3770a71ea4b6e94f8c24c12e2c2e8538f9f6fd764" | checksum = "14d5a47a78c682bb67496b562495ed84972c0512ba0654888c4dc92b80a85bd3" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cairo-rs", |  "cairo-rs", | ||||||
|  "gdk4", |  "gdk4", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "graphene-rs", |  "graphene-rs", | ||||||
|  "gsk4-sys", |  "gsk4-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  | @ -570,38 +564,39 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gsk4-sys" | name = "gsk4-sys" | ||||||
| version = "0.3.1" | version = "0.4.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "13aa53ce70234da02f9954339d988d5ab853d746a8f47a4ae17735ff873545b5" | checksum = "e31d21d7ce02ba261bb24c50c4ab238a10b41a2c97c32afffae29471b7cca69b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cairo-sys-rs", |  "cairo-sys-rs", | ||||||
|  "gdk4-sys", |  "gdk4-sys", | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "graphene-sys", |  "graphene-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "pango-sys", |  "pango-sys", | ||||||
|  "system-deps 5.0.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer" | name = "gstreamer" | ||||||
| version = "0.17.4" | version = "0.18.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "c6a255f142048ba2c4a4dce39106db1965abe355d23f4b5335edea43a553faa4" | checksum = "cd58af6f8b268fc335122a3ccc66efa0cd56584948f49a37e5feef0b89dfc29b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
|  "futures-channel", |  "futures-channel", | ||||||
|  "futures-core", |  "futures-core", | ||||||
|  "futures-util", |  "futures-util", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer-sys", |  "gstreamer-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "muldiv", |  "muldiv", | ||||||
|  "num-integer", |  "num-integer", | ||||||
|  "num-rational", |  "num-rational", | ||||||
|  "once_cell", |  "once_cell", | ||||||
|  |  "option-operations", | ||||||
|  "paste", |  "paste", | ||||||
|  "pretty-hex", |  "pretty-hex", | ||||||
|  "thiserror", |  "thiserror", | ||||||
|  | @ -609,27 +604,27 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-audio-sys" | name = "gstreamer-audio-sys" | ||||||
| version = "0.17.0" | version = "0.18.3" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "d066ddfd05f63836f35ac4a5830d5bb2f7f3d6c33c870e9b15c667d20f65d7f6" | checksum = "a34258fb53c558c0f41dad194037cbeaabf49d347570df11b8bd1c4897cf7d7c" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "gstreamer-base-sys", |  "gstreamer-base-sys", | ||||||
|  "gstreamer-sys", |  "gstreamer-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-base" | name = "gstreamer-base" | ||||||
| version = "0.17.2" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "2c0c1d8c62eb5d08fb80173609f2eea71d385393363146e4e78107facbd67715" | checksum = "224f35f36582407caf58ded74854526beeecc23d0cf64b8d1c3e00584ed6863f" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gstreamer-base-sys", |  "gstreamer-base-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  | @ -637,25 +632,25 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-base-sys" | name = "gstreamer-base-sys" | ||||||
| version = "0.17.0" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "28169a7b58edb93ad8ac766f0fa12dcd36a2af4257a97ee10194c7103baf3e27" | checksum = "a083493c3c340e71fa7c66eebda016e9fafc03eb1b4804cf9b2bad61994b078e" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "gstreamer-sys", |  "gstreamer-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-pbutils" | name = "gstreamer-pbutils" | ||||||
| version = "0.17.2" | version = "0.18.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "04cce8a8d8fb28bd5ea00433e8ea2e45a09a68e8b8b9ebe3d6552b33cb49c1b0" | checksum = "330684c49f79775d7acce8bef5a7a7475f02374c9c6cead39ced3ad423fc8ea9" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gstreamer-pbutils-sys", |  "gstreamer-pbutils-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  | @ -664,27 +659,27 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-pbutils-sys" | name = "gstreamer-pbutils-sys" | ||||||
| version = "0.17.0" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "b6b7507a2c0294755b530e41a402884f326b9dbdc322039aeabac9759c149d65" | checksum = "36f79839066fbcc6d1a8690b2f85d5cc5cdc0984f36d4054f5cc67a7ad3ab72d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "gstreamer-audio-sys", |  "gstreamer-audio-sys", | ||||||
|  "gstreamer-sys", |  "gstreamer-sys", | ||||||
|  "gstreamer-video-sys", |  "gstreamer-video-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-player" | name = "gstreamer-player" | ||||||
| version = "0.17.0" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "c503dba6f79b5cd8a4be5329119892c196db013ce66fce16079a7df8ce819a3a" | checksum = "5f14ee02352ba73cadebe640bfb33f12fe8d03cbcad816a102d55a0251fb99bb" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gstreamer-player-sys", |  "gstreamer-player-sys", | ||||||
|  "gstreamer-video", |  "gstreamer-video", | ||||||
|  | @ -694,40 +689,40 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-player-sys" | name = "gstreamer-player-sys" | ||||||
| version = "0.17.0" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "3e50bed2a120574750ea1370163df21b50762d0b4967f569fdc58232f4c930d5" | checksum = "1f9b674b39a4d0e18710f6e3d2b109f1793d8028ee4e39da3909b55b4529d399" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "gstreamer-sys", |  "gstreamer-sys", | ||||||
|  "gstreamer-video-sys", |  "gstreamer-video-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-sys" | name = "gstreamer-sys" | ||||||
| version = "0.17.3" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "a81704feeb3e8599913bdd1e738455c2991a01ff4a1780cb62200993e454cc3e" | checksum = "e3517a65d3c2e6f8905b456eba5d53bda158d664863aef960b44f651cb7d33e2" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-video" | name = "gstreamer-video" | ||||||
| version = "0.17.2" | version = "0.18.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "e3447ee95c8e79daec0b163260cf6a3de9bc19ff47a01b533787f900074a3476" | checksum = "9418adfc72dafa1ad9eb106527ce4804887d101027c4528ec28c7d29cc899519" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cfg-if", |  "cfg-if", | ||||||
|  "futures-channel", |  "futures-channel", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gstreamer-base", |  "gstreamer-base", | ||||||
|  "gstreamer-video-sys", |  "gstreamer-video-sys", | ||||||
|  | @ -737,16 +732,16 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gstreamer-video-sys" | name = "gstreamer-video-sys" | ||||||
| version = "0.17.0" | version = "0.18.3" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "b81608f4182bdddd5bd33aaaa341d5544eda12b067a3dab75b1b7d2de01a3ba7" | checksum = "33331b1675e73b5b000c796354278eca7fdde9327015971d9f41afe28b96e0dc" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "gstreamer-base-sys", |  "gstreamer-base-sys", | ||||||
|  "gstreamer-sys", |  "gstreamer-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -757,9 +752,9 @@ checksum = "da5bf7748fd4cd0b2490df8debcc911809dbcbee4ece9531b96c29a9c729de5a" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gtk4" | name = "gtk4" | ||||||
| version = "0.3.1" | version = "0.4.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "58a04f421d1485ba4739e723199f5828bca05ab4e622ed39a96a342b6b1a6a3d" | checksum = "eb5d40303dabe4608fc260de2bd7563da6f85bc90af956323f0cd8ae0abcfe03" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "cairo-rs", |  "cairo-rs", | ||||||
|  | @ -768,7 +763,7 @@ dependencies = [ | ||||||
|  "gdk-pixbuf", |  "gdk-pixbuf", | ||||||
|  "gdk4", |  "gdk4", | ||||||
|  "gio", |  "gio", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "graphene-rs", |  "graphene-rs", | ||||||
|  "gsk4", |  "gsk4", | ||||||
|  "gtk4-macros", |  "gtk4-macros", | ||||||
|  | @ -780,37 +775,36 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gtk4-macros" | name = "gtk4-macros" | ||||||
| version = "0.3.1" | version = "0.4.7" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "5068d4354af02454f44687adc613100aa98ae11e273cdcac84f89dc08be2b4a1" | checksum = "7f3c4aa605fb3d78205c7aef0eeaa6db61d8cc4dd05a465dc6ffdfdaee84f825" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "anyhow", | ||||||
|  "heck", |  | ||||||
|  "itertools 0.10.3", |  | ||||||
|  "proc-macro-crate 1.1.3", |  "proc-macro-crate 1.1.3", | ||||||
|  "proc-macro-error", |  "proc-macro-error", | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  |  "quick-xml", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn", |  "syn", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "gtk4-sys" | name = "gtk4-sys" | ||||||
| version = "0.3.1" | version = "0.4.5" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "e20a64c8f0ddcff8902ff04c130747f2fb7834a43530f75d03d6c71335733b49" | checksum = "c47c075e8f795c38f6e9a47b51a73eab77b325f83c0154979ed4d4245c36490d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "cairo-sys-rs", |  "cairo-sys-rs", | ||||||
|  "gdk-pixbuf-sys", |  "gdk-pixbuf-sys", | ||||||
|  "gdk4-sys", |  "gdk4-sys", | ||||||
|  "gio-sys", |  "gio-sys", | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "graphene-sys", |  "graphene-sys", | ||||||
|  "gsk4-sys", |  "gsk4-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "pango-sys", |  "pango-sys", | ||||||
|  "system-deps 5.0.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -822,6 +816,12 @@ dependencies = [ | ||||||
|  "unicode-segmentation", |  "unicode-segmentation", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "heck" | ||||||
|  | version = "0.4.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "itertools" | name = "itertools" | ||||||
| version = "0.9.0" | version = "0.9.0" | ||||||
|  | @ -831,15 +831,6 @@ dependencies = [ | ||||||
|  "either", |  "either", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] |  | ||||||
| name = "itertools" |  | ||||||
| version = "0.10.3" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" |  | ||||||
| dependencies = [ |  | ||||||
|  "either", |  | ||||||
| ] |  | ||||||
| 
 |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "lazy_static" | name = "lazy_static" | ||||||
| version = "1.4.0" | version = "1.4.0" | ||||||
|  | @ -848,14 +839,14 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "libadwaita" | name = "libadwaita" | ||||||
| version = "0.1.0-beta-1" | version = "0.1.1" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "cef1e2d4b5490caff8a1d44648f68721ab917f765a7fa1d0226fcdac42d86552" | checksum = "f2ae453d28e3b91f03749f02b1531e8cfe315a1d0762b77a61797d2ab80bb87d" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "gdk-pixbuf", |  "gdk-pixbuf", | ||||||
|  "gdk4", |  "gdk4", | ||||||
|  "gio", |  "gio", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gtk4", |  "gtk4", | ||||||
|  "libadwaita-sys", |  "libadwaita-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  | @ -865,17 +856,17 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "libadwaita-sys" | name = "libadwaita-sys" | ||||||
| version = "0.1.0-beta-1" | version = "0.1.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "7a165d8c96824753ec072b70a9149790efa3d5abb07e130cda7eb04ef2006d4c" | checksum = "f18b6ac4cadd252a89f5cba0a5a4e99836131795d6fad37b859ac79e8cb7d2c8" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "gdk4-sys", |  "gdk4-sys", | ||||||
|  "gio-sys", |  "gio-sys", | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "gtk4-sys", |  "gtk4-sys", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -996,7 +987,7 @@ dependencies = [ | ||||||
|  "gdk4", |  "gdk4", | ||||||
|  "gettext-rs", |  "gettext-rs", | ||||||
|  "gio", |  "gio", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gtk-macros", |  "gtk-macros", | ||||||
|  "gtk4", |  "gtk4", | ||||||
|  | @ -1014,7 +1005,7 @@ version = "0.1.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "fragile", |  "fragile", | ||||||
|  "gio", |  "gio", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gstreamer-player", |  "gstreamer-player", | ||||||
|  "log", |  "log", | ||||||
|  | @ -1043,7 +1034,7 @@ name = "musicus_import" | ||||||
| version = "0.1.0" | version = "0.1.0" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "base64", |  "base64", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "gstreamer", |  "gstreamer", | ||||||
|  "gstreamer-pbutils", |  "gstreamer-pbutils", | ||||||
|  "log", |  "log", | ||||||
|  | @ -1126,13 +1117,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "pango" | name = "option-operations" | ||||||
| version = "0.14.8" | version = "0.4.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "546fd59801e5ca735af82839007edd226fe7d3bb06433ec48072be4439c28581" | checksum = "95d6113415f41b268f1195907427519769e40ee6f28cbb053795098a2c16f447" | ||||||
|  | dependencies = [ | ||||||
|  |  "paste", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "pango" | ||||||
|  | version = "0.15.10" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "bitflags", |  "bitflags", | ||||||
|  "glib 0.14.8", |  "glib 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "once_cell", |  "once_cell", | ||||||
|  "pango-sys", |  "pango-sys", | ||||||
|  | @ -1140,14 +1140,14 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "pango-sys" | name = "pango-sys" | ||||||
| version = "0.14.0" | version = "0.15.10" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "2367099ca5e761546ba1d501955079f097caa186bb53ce0f718dca99ac1942fe" | checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "glib-sys 0.14.0", |  "glib-sys 0.15.10", | ||||||
|  "gobject-sys 0.14.0", |  "gobject-sys 0.15.10", | ||||||
|  "libc", |  "libc", | ||||||
|  "system-deps 3.2.0", |  "system-deps 6.0.2", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
|  | @ -1247,6 +1247,15 @@ dependencies = [ | ||||||
|  "unicode-xid", |  "unicode-xid", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "quick-xml" | ||||||
|  | version = "0.22.0" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b" | ||||||
|  | dependencies = [ | ||||||
|  |  "memchr", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "quote" | name = "quote" | ||||||
| version = "1.0.17" | version = "1.0.17" | ||||||
|  | @ -1388,31 +1397,13 @@ version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" | checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b" | ||||||
| 
 | 
 | ||||||
| [[package]] |  | ||||||
| name = "strum" |  | ||||||
| version = "0.21.0" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" |  | ||||||
| 
 |  | ||||||
| [[package]] | [[package]] | ||||||
| name = "strum_macros" | name = "strum_macros" | ||||||
| version = "0.18.0" | version = "0.18.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" | checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "heck", |  "heck 0.3.3", | ||||||
|  "proc-macro2", |  | ||||||
|  "quote", |  | ||||||
|  "syn", |  | ||||||
| ] |  | ||||||
| 
 |  | ||||||
| [[package]] |  | ||||||
| name = "strum_macros" |  | ||||||
| version = "0.21.1" |  | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" |  | ||||||
| checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" |  | ||||||
| dependencies = [ |  | ||||||
|  "heck", |  | ||||||
|  "proc-macro2", |  "proc-macro2", | ||||||
|  "quote", |  "quote", | ||||||
|  "syn", |  "syn", | ||||||
|  | @ -1435,10 +1426,10 @@ version = "1.3.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" | checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "heck", |  "heck 0.3.3", | ||||||
|  "pkg-config", |  "pkg-config", | ||||||
|  "strum 0.18.0", |  "strum", | ||||||
|  "strum_macros 0.18.0", |  "strum_macros", | ||||||
|  "thiserror", |  "thiserror", | ||||||
|  "toml", |  "toml", | ||||||
|  "version-compare 0.0.10", |  "version-compare 0.0.10", | ||||||
|  | @ -1446,34 +1437,22 @@ dependencies = [ | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "system-deps" | name = "system-deps" | ||||||
| version = "3.2.0" | version = "6.0.2" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "480c269f870722b3b08d2f13053ce0c2ab722839f472863c3e2d61ff3a1c2fa6" | checksum = "a1a45a1c4c9015217e12347f2a411b57ce2c4fc543913b14b6fe40483328e709" | ||||||
| dependencies = [ | dependencies = [ | ||||||
|  "anyhow", |  "cfg-expr", | ||||||
|  "cfg-expr 0.8.1", |  "heck 0.4.0", | ||||||
|  "heck", |  | ||||||
|  "itertools 0.10.3", |  | ||||||
|  "pkg-config", |  "pkg-config", | ||||||
|  "strum 0.21.0", |  | ||||||
|  "strum_macros 0.21.1", |  | ||||||
|  "thiserror", |  | ||||||
|  "toml", |  "toml", | ||||||
|  "version-compare 0.0.11", |  "version-compare 0.1.0", | ||||||
| ] | ] | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "system-deps" | name = "temp-dir" | ||||||
| version = "5.0.0" | version = "0.1.11" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "18db855554db7bd0e73e06cf7ba3df39f97812cb11d3f75e71c39bf45171797e" | checksum = "af547b166dd1ea4b472165569fc456cfb6818116f854690b0ff205e636523dab" | ||||||
| dependencies = [ |  | ||||||
|  "cfg-expr 0.9.1", |  | ||||||
|  "heck", |  | ||||||
|  "pkg-config", |  | ||||||
|  "toml", |  | ||||||
|  "version-compare 0.0.11", |  | ||||||
| ] |  | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "thiserror" | name = "thiserror" | ||||||
|  | @ -1571,9 +1550,9 @@ checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "version-compare" | name = "version-compare" | ||||||
| version = "0.0.11" | version = "0.1.0" | ||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "1c18c859eead79d8b95d09e4678566e8d70105c4e7b251f707a03df32442661b" | checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" | ||||||
| 
 | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "version_check" | name = "version_check" | ||||||
|  |  | ||||||
|  | @ -5,10 +5,10 @@ edition = "2021" | ||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
| fragile = "1.0.0" | fragile = "1.0.0" | ||||||
| gio = "0.14.0" | gio = "0.15.10" | ||||||
| glib = "0.14.0" | glib = "0.15.10" | ||||||
| gstreamer = "0.17.0" | gstreamer = "0.18.7" | ||||||
| gstreamer-player = "0.17.0" | gstreamer-player = "0.18.0" | ||||||
| log = { version = "0.4.14", features = ["std"] } | log = { version = "0.4.14", features = ["std"] } | ||||||
| musicus_database = { version = "0.1.0", path = "../database" } | musicus_database = { version = "0.1.0", path = "../database" } | ||||||
| musicus_import = { version = "0.1.0", path = "../import" } | musicus_import = { version = "0.1.0", path = "../import" } | ||||||
|  | @ -16,4 +16,4 @@ thiserror = "1.0.23" | ||||||
| tokio = { version = "1.4.0", features = ["sync"] } | tokio = { version = "1.4.0", features = ["sync"] } | ||||||
| 
 | 
 | ||||||
| [target.'cfg(target_os = "linux")'.dependencies] | [target.'cfg(target_os = "linux")'.dependencies] | ||||||
| mpris-player = "0.6.0" | mpris-player = "0.6.1" | ||||||
|  |  | ||||||
|  | @ -352,7 +352,7 @@ impl Player { | ||||||
|         let uri = glib::filename_to_uri(&path, None) |         let uri = glib::filename_to_uri(&path, None) | ||||||
|             .map_err(|_| Error::Other(format!("Failed to create URI from path: {}", path)))?; |             .map_err(|_| Error::Other(format!("Failed to create URI from path: {}", path)))?; | ||||||
| 
 | 
 | ||||||
|         self.player.set_uri(&uri); |         self.player.set_uri(Some(&uri)); | ||||||
| 
 | 
 | ||||||
|         if self.is_playing() { |         if self.is_playing() { | ||||||
|             self.player.play(); |             self.player.play(); | ||||||
|  |  | ||||||
|  | @ -5,9 +5,9 @@ edition = "2021" | ||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
| base64 = "0.13.0" | base64 = "0.13.0" | ||||||
| glib = "0.14.0" | glib = "0.15.10" | ||||||
| gstreamer = "0.17.0" | gstreamer = "0.18.7" | ||||||
| gstreamer-pbutils = "0.17.0" | gstreamer-pbutils = "0.18.7" | ||||||
| log = "0.4.14" | log = "0.4.14" | ||||||
| once_cell = "1.5.2" | once_cell = "1.5.2" | ||||||
| rand = "0.7.3" | rand = "0.7.3" | ||||||
|  |  | ||||||
|  | @ -118,13 +118,13 @@ pub(super) fn new() -> Result<ImportSession> { | ||||||
|         for track in &tracks_clone { |         for track in &tracks_clone { | ||||||
|             info!("Starting to rip track {}.", track.number); |             info!("Starting to rip track {}.", track.number); | ||||||
| 
 | 
 | ||||||
|             cdparanoiasrc.set_property("track", &track.number)?; |             cdparanoiasrc.set_property("track", &track.number); | ||||||
| 
 | 
 | ||||||
|             // The filesink needs to be reset to be able to change the file location.
 |             // The filesink needs to be reset to be able to change the file location.
 | ||||||
|             filesink.set_state(gstreamer::State::Null)?; |             filesink.set_state(gstreamer::State::Null)?; | ||||||
| 
 | 
 | ||||||
|             let path = track.path.to_str().unwrap(); |             let path = track.path.to_str().unwrap(); | ||||||
|             filesink.set_property("location", &path)?; |             filesink.set_property("location", &path); | ||||||
| 
 | 
 | ||||||
|             // This will also affect the filesink as expected.
 |             // This will also affect the filesink as expected.
 | ||||||
|             pipeline.set_state(gstreamer::State::Playing)?; |             pipeline.set_state(gstreamer::State::Playing)?; | ||||||
|  |  | ||||||
|  | @ -5,15 +5,15 @@ edition = "2021" | ||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
| anyhow = "1.0.33" | anyhow = "1.0.33" | ||||||
| adw = { package = "libadwaita", version = "0.1.0-alpha-6" } | adw = { package = "libadwaita", version = "0.1.1" } | ||||||
| async-trait = "0.1.42" | async-trait = "0.1.42" | ||||||
| futures-channel = "0.3.5" | futures-channel = "0.3.5" | ||||||
| gdk = { package = "gdk4", version = "0.3.0" } | gdk = { package = "gdk4", version = "0.4.7" } | ||||||
| gettext-rs = { version = "0.5.0", features = ["gettext-system"] } | gettext-rs = { version = "0.7.0", features = ["gettext-system"] } | ||||||
| gio = "0.14.0" | gio = "0.15.10" | ||||||
| glib = "0.14.0" | glib = "0.15.10" | ||||||
| gstreamer = "0.17.0" | gstreamer = "0.18.7" | ||||||
| gtk = { package = "gtk4", version = "0.3.0" } | gtk = { package = "gtk4", version = "0.4.7" } | ||||||
| gtk-macros = "0.3.0" | gtk-macros = "0.3.0" | ||||||
| log = "0.4.14" | log = "0.4.14" | ||||||
| musicus_backend = { version = "0.1.0", path = "../backend" } | musicus_backend = { version = "0.1.0", path = "../backend" } | ||||||
|  |  | ||||||
|  | @ -2,8 +2,7 @@ use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::{Editor, EntryRow, Section, Widget}; | use crate::widgets::{Editor, EntryRow, Section, Widget}; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use gtk::{builders::ListBoxBuilder, glib::clone, prelude::*}; | ||||||
| use gtk::prelude::*; |  | ||||||
| use musicus_backend::db::{generate_id, Ensemble}; | use musicus_backend::db::{generate_id, Ensemble}; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
| 
 | 
 | ||||||
|  | @ -24,7 +23,7 @@ impl Screen<Option<Ensemble>, Ensemble> for EnsembleEditor { | ||||||
|         let editor = Editor::new(); |         let editor = Editor::new(); | ||||||
|         editor.set_title("Ensemble"); |         editor.set_title("Ensemble"); | ||||||
| 
 | 
 | ||||||
|         let list = gtk::ListBoxBuilder::new() |         let list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  |  | ||||||
|  | @ -2,8 +2,7 @@ use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::{Editor, EntryRow, Section, Widget}; | use crate::widgets::{Editor, EntryRow, Section, Widget}; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use gtk::{glib::clone, prelude::*, builders::ListBoxBuilder}; | ||||||
| use gtk::prelude::*; |  | ||||||
| use musicus_backend::db::{generate_id, Instrument}; | use musicus_backend::db::{generate_id, Instrument}; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
| 
 | 
 | ||||||
|  | @ -24,7 +23,7 @@ impl Screen<Option<Instrument>, Instrument> for InstrumentEditor { | ||||||
|         let editor = Editor::new(); |         let editor = Editor::new(); | ||||||
|         editor.set_title("Instrument/Role"); |         editor.set_title("Instrument/Role"); | ||||||
| 
 | 
 | ||||||
|         let list = gtk::ListBoxBuilder::new() |         let list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  |  | ||||||
|  | @ -3,7 +3,8 @@ use crate::selectors::{EnsembleSelector, InstrumentSelector, PersonSelector}; | ||||||
| use crate::widgets::{ButtonRow, Editor, Section, Widget}; | use crate::widgets::{ButtonRow, Editor, Section, Widget}; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use gtk::builders::ButtonBuilder; | ||||||
|  | use gtk::{builders::ListBoxBuilder, glib::clone}; | ||||||
| use log::error; | use log::error; | ||||||
| use musicus_backend::db::{Ensemble, Instrument, Performance, Person, PersonOrEnsemble}; | use musicus_backend::db::{Ensemble, Instrument, Performance, Person, PersonOrEnsemble}; | ||||||
| use std::cell::RefCell; | use std::cell::RefCell; | ||||||
|  | @ -29,7 +30,7 @@ impl Screen<Option<Performance>, Performance> for PerformanceEditor { | ||||||
|         editor.set_title("Performance"); |         editor.set_title("Performance"); | ||||||
|         editor.set_may_save(false); |         editor.set_may_save(false); | ||||||
| 
 | 
 | ||||||
|         let performer_list = gtk::ListBoxBuilder::new() |         let performer_list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  | @ -45,12 +46,12 @@ impl Screen<Option<Performance>, Performance> for PerformanceEditor { | ||||||
|             "Select either a person or an ensemble as a performer.", |             "Select either a person or an ensemble as a performer.", | ||||||
|         )); |         )); | ||||||
| 
 | 
 | ||||||
|         let role_list = gtk::ListBoxBuilder::new() |         let role_list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let reset_role_button = gtk::ButtonBuilder::new() |         let reset_role_button = ButtonBuilder::new() | ||||||
|             .icon_name("user-trash-symbolic") |             .icon_name("user-trash-symbolic") | ||||||
|             .valign(gtk::Align::Center) |             .valign(gtk::Align::Center) | ||||||
|             .visible(false) |             .visible(false) | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ use crate::widgets::{Editor, EntryRow, Section, Widget}; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
| use gtk::prelude::*; | use gtk::{builders::ListBoxBuilder, prelude::*}; | ||||||
| use musicus_backend::db::{generate_id, Person}; | use musicus_backend::db::{generate_id, Person}; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
| 
 | 
 | ||||||
|  | @ -25,7 +25,7 @@ impl Screen<Option<Person>, Person> for PersonEditor { | ||||||
|         let editor = Editor::new(); |         let editor = Editor::new(); | ||||||
|         editor.set_title("Person"); |         editor.set_title("Person"); | ||||||
| 
 | 
 | ||||||
|         let list = gtk::ListBoxBuilder::new() |         let list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::performance::PerformanceEditor; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::selectors::WorkSelector; | use crate::selectors::WorkSelector; | ||||||
| use crate::widgets::{List, Widget}; | use crate::widgets::{List, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
|  | @ -97,7 +98,7 @@ impl Screen<Option<Recording>, Recording> for RecordingEditor { | ||||||
|         this.performance_list.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { |         this.performance_list.set_make_widget_cb(clone!(@weak this => @default-panic, move |index| { | ||||||
|             let performance = &this.performances.borrow()[index]; |             let performance = &this.performances.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|             let delete_button = gtk::Button::from_icon_name(Some("user-trash-symbolic")); |             let delete_button = gtk::Button::from_icon_name("user-trash-symbolic"); | ||||||
|             delete_button.set_valign(gtk::Align::Center); |             delete_button.set_valign(gtk::Align::Center); | ||||||
| 
 | 
 | ||||||
|             delete_button.connect_clicked(clone!(@weak this =>  move |_| { |             delete_button.connect_clicked(clone!(@weak this =>  move |_| { | ||||||
|  | @ -110,7 +111,7 @@ impl Screen<Option<Recording>, Recording> for RecordingEditor { | ||||||
|                 this.performance_list.update(length); |                 this.performance_list.update(length); | ||||||
|             })); |             })); | ||||||
| 
 | 
 | ||||||
|             let edit_button = gtk::Button::from_icon_name(Some("document-edit-symbolic")); |             let edit_button = gtk::Button::from_icon_name("document-edit-symbolic"); | ||||||
|             edit_button.set_valign(gtk::Align::Center); |             edit_button.set_valign(gtk::Align::Center); | ||||||
| 
 | 
 | ||||||
|             edit_button.connect_clicked(clone!(@weak this =>  move |_| { |             edit_button.connect_clicked(clone!(@weak this =>  move |_| { | ||||||
|  | @ -128,7 +129,7 @@ impl Screen<Option<Recording>, Recording> for RecordingEditor { | ||||||
|                 }); |                 }); | ||||||
|             })); |             })); | ||||||
| 
 | 
 | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .focusable(false) |                 .focusable(false) | ||||||
|                 .activatable_widget(&edit_button) |                 .activatable_widget(&edit_button) | ||||||
|                 .title(&performance.get_title()) |                 .title(&performance.get_title()) | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::work_part::WorkPartEditor; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::selectors::{InstrumentSelector, PersonSelector}; | use crate::selectors::{InstrumentSelector, PersonSelector}; | ||||||
| use crate::widgets::{List, Widget}; | use crate::widgets::{List, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
|  | @ -111,7 +112,7 @@ impl Screen<Option<Work>, Work> for WorkEditor { | ||||||
|             clone!(@weak this =>  @default-panic, move |index| { |             clone!(@weak this =>  @default-panic, move |index| { | ||||||
|                 let instrument = &this.instruments.borrow()[index]; |                 let instrument = &this.instruments.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let delete_button = gtk::Button::from_icon_name(Some("user-trash-symbolic")); |                 let delete_button = gtk::Button::from_icon_name("user-trash-symbolic"); | ||||||
|                 delete_button.set_valign(gtk::Align::Center); |                 delete_button.set_valign(gtk::Align::Center); | ||||||
| 
 | 
 | ||||||
|                 delete_button.connect_clicked(clone!(@strong this => move |_| { |                 delete_button.connect_clicked(clone!(@strong this => move |_| { | ||||||
|  | @ -124,7 +125,7 @@ impl Screen<Option<Work>, Work> for WorkEditor { | ||||||
|                     this.instrument_list.update(length); |                     this.instrument_list.update(length); | ||||||
|                 })); |                 })); | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .title(&instrument.name) |                     .title(&instrument.name) | ||||||
|                     .build(); |                     .build(); | ||||||
| 
 | 
 | ||||||
|  | @ -152,7 +153,7 @@ impl Screen<Option<Work>, Work> for WorkEditor { | ||||||
|             .set_make_widget_cb(clone!(@weak this => @default-panic,  move |index| { |             .set_make_widget_cb(clone!(@weak this => @default-panic,  move |index| { | ||||||
|                 let part = &this.parts.borrow()[index]; |                 let part = &this.parts.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let delete_button = gtk::Button::from_icon_name(Some("user-trash-symbolic")); |                 let delete_button = gtk::Button::from_icon_name("user-trash-symbolic"); | ||||||
|                 delete_button.set_valign(gtk::Align::Center); |                 delete_button.set_valign(gtk::Align::Center); | ||||||
| 
 | 
 | ||||||
|                 delete_button.connect_clicked(clone!(@weak this =>  move |_| { |                 delete_button.connect_clicked(clone!(@weak this =>  move |_| { | ||||||
|  | @ -165,7 +166,7 @@ impl Screen<Option<Work>, Work> for WorkEditor { | ||||||
|                     this.part_list.update(length); |                     this.part_list.update(length); | ||||||
|                 })); |                 })); | ||||||
| 
 | 
 | ||||||
|                 let edit_button = gtk::Button::from_icon_name(Some("document-edit-symbolic")); |                 let edit_button = gtk::Button::from_icon_name("document-edit-symbolic"); | ||||||
|                 edit_button.set_valign(gtk::Align::Center); |                 edit_button.set_valign(gtk::Align::Center); | ||||||
| 
 | 
 | ||||||
|                 edit_button.connect_clicked(clone!(@weak this =>  move |_| { |                 edit_button.connect_clicked(clone!(@weak this =>  move |_| { | ||||||
|  | @ -183,7 +184,7 @@ impl Screen<Option<Work>, Work> for WorkEditor { | ||||||
|                     }); |                     }); | ||||||
|                 })); |                 })); | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .focusable(false) |                     .focusable(false) | ||||||
|                     .title(&part.title) |                     .title(&part.title) | ||||||
|                     .activatable_widget(&edit_button) |                     .activatable_widget(&edit_button) | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ use super::medium_preview::MediumPreview; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::selectors::MediumSelector; | use crate::selectors::MediumSelector; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use glib::clone; | use glib::clone; | ||||||
| use gtk_macros::get_widget; | use gtk_macros::get_widget; | ||||||
|  | @ -64,7 +65,7 @@ impl ImportScreen { | ||||||
|         let this = self; |         let this = self; | ||||||
| 
 | 
 | ||||||
|         for medium in mediums { |         for medium in mediums { | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .activatable(true) |                 .activatable(true) | ||||||
|                 .title(&medium.name) |                 .title(&medium.name) | ||||||
|                 .subtitle(&format!("{} Tracks", medium.tracks.len())) |                 .subtitle(&format!("{} Tracks", medium.tracks.len())) | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| use super::track_set_editor::{TrackData, TrackSetData, TrackSetEditor}; | use super::track_set_editor::{TrackData, TrackSetData, TrackSetEditor}; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::{List, Widget}; | use crate::widgets::{List, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use anyhow::Result; | use anyhow::Result; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -102,13 +103,13 @@ impl Screen<(Arc<ImportSession>, Option<Medium>), Medium> for MediumEditor { | ||||||
|                 let title = track_set.recording.work.get_title(); |                 let title = track_set.recording.work.get_title(); | ||||||
|                 let subtitle = track_set.recording.get_performers(); |                 let subtitle = track_set.recording.get_performers(); | ||||||
| 
 | 
 | ||||||
|                 let edit_image = gtk::Image::from_icon_name(Some("document-edit-symbolic")); |                 let edit_image = gtk::Image::from_icon_name("document-edit-symbolic"); | ||||||
|                 let edit_button = gtk::Button::new(); |                 let edit_button = gtk::Button::new(); | ||||||
|                 edit_button.set_has_frame(false); |                 edit_button.set_has_frame(false); | ||||||
|                 edit_button.set_valign(gtk::Align::Center); |                 edit_button.set_valign(gtk::Align::Center); | ||||||
|                 edit_button.set_child(Some(&edit_image)); |                 edit_button.set_child(Some(&edit_image)); | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .focusable(false) |                     .focusable(false) | ||||||
|                     .title(&title) |                     .title(&title) | ||||||
|                     .subtitle(&subtitle) |                     .subtitle(&subtitle) | ||||||
|  |  | ||||||
|  | @ -1,9 +1,11 @@ | ||||||
| use super::medium_editor::MediumEditor; | use super::medium_editor::MediumEditor; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use anyhow::{anyhow, Result}; | use anyhow::{anyhow, Result}; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::{ListBoxBuilder, FrameBuilder}; | ||||||
| use gtk::prelude::*; | use gtk::prelude::*; | ||||||
| use gtk_macros::get_widget; | use gtk_macros::get_widget; | ||||||
| use musicus_backend::db::Medium; | use musicus_backend::db::Medium; | ||||||
|  | @ -139,13 +141,13 @@ impl MediumPreview { | ||||||
|             if track.recording.id != last_recording_id { |             if track.recording.id != last_recording_id { | ||||||
|                 last_recording_id = &track.recording.id; |                 last_recording_id = &track.recording.id; | ||||||
| 
 | 
 | ||||||
|                 let list = gtk::ListBoxBuilder::new() |                 let list = ListBoxBuilder::new() | ||||||
|                     .selection_mode(gtk::SelectionMode::None) |                     .selection_mode(gtk::SelectionMode::None) | ||||||
|                     .margin_bottom(12) |                     .margin_bottom(12) | ||||||
|                     .css_classes(vec![String::from("boxed-list")]) |                     .css_classes(vec![String::from("boxed-list")]) | ||||||
|                     .build(); |                     .build(); | ||||||
| 
 | 
 | ||||||
|                 let header = adw::ActionRowBuilder::new() |                 let header = ActionRowBuilder::new() | ||||||
|                     .activatable(false) |                     .activatable(false) | ||||||
|                     .title(&track.recording.work.get_title()) |                     .title(&track.recording.work.get_title()) | ||||||
|                     .subtitle(&track.recording.get_performers()) |                     .subtitle(&track.recording.get_performers()) | ||||||
|  | @ -172,7 +174,7 @@ impl MediumPreview { | ||||||
|                     parts.join(", ") |                     parts.join(", ") | ||||||
|                 }; |                 }; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(false) |                     .activatable(false) | ||||||
|                     .title(&title) |                     .title(&title) | ||||||
|                     .subtitle(&import_tracks[track.source_index].name) |                     .subtitle(&import_tracks[track.source_index].name) | ||||||
|  | @ -184,7 +186,7 @@ impl MediumPreview { | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         if let Some(list) = &last_list { |         if let Some(list) = &last_list { | ||||||
|             let frame = gtk::FrameBuilder::new().margin_bottom(12).build(); |             let frame = FrameBuilder::new().margin_bottom(12).build(); | ||||||
| 
 | 
 | ||||||
|             frame.set_child(Some(list)); |             frame.set_child(Some(list)); | ||||||
|             self.medium_box.append(&frame); |             self.medium_box.append(&frame); | ||||||
|  |  | ||||||
|  | @ -1,7 +1,9 @@ | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::ListBoxBuilder; | ||||||
| use gtk_macros::get_widget; | use gtk_macros::get_widget; | ||||||
| use musicus_backend::db::Recording; | use musicus_backend::db::Recording; | ||||||
| use std::cell::RefCell; | use std::cell::RefCell; | ||||||
|  | @ -29,7 +31,7 @@ impl Screen<(Recording, Vec<usize>), Vec<usize>> for TrackEditor { | ||||||
|         get_widget!(builder, gtk::Button, select_button); |         get_widget!(builder, gtk::Button, select_button); | ||||||
|         get_widget!(builder, adw::Clamp, clamp); |         get_widget!(builder, adw::Clamp, clamp); | ||||||
| 
 | 
 | ||||||
|         let parts_list = gtk::ListBoxBuilder::new() |         let parts_list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  | @ -66,7 +68,7 @@ impl Screen<(Recording, Vec<usize>), Vec<usize>> for TrackEditor { | ||||||
|                 } |                 } | ||||||
|             })); |             })); | ||||||
| 
 | 
 | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .focusable(false) |                 .focusable(false) | ||||||
|                 .title(&part.title) |                 .title(&part.title) | ||||||
|                 .activatable_widget(&check) |                 .activatable_widget(&check) | ||||||
|  |  | ||||||
|  | @ -1,7 +1,9 @@ | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::ListBoxBuilder; | ||||||
| use gtk_macros::get_widget; | use gtk_macros::get_widget; | ||||||
| use musicus_backend::import::ImportSession; | use musicus_backend::import::ImportSession; | ||||||
| use std::cell::RefCell; | use std::cell::RefCell; | ||||||
|  | @ -29,7 +31,7 @@ impl Screen<Arc<ImportSession>, Vec<usize>> for TrackSelector { | ||||||
|         get_widget!(builder, gtk::Button, select_button); |         get_widget!(builder, gtk::Button, select_button); | ||||||
|         get_widget!(builder, adw::Clamp, clamp); |         get_widget!(builder, adw::Clamp, clamp); | ||||||
| 
 | 
 | ||||||
|         let track_list = gtk::ListBoxBuilder::new() |         let track_list = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  | @ -76,7 +78,7 @@ impl Screen<Arc<ImportSession>, Vec<usize>> for TrackSelector { | ||||||
|                 } |                 } | ||||||
|             })); |             })); | ||||||
| 
 | 
 | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .focusable(false) |                 .focusable(false) | ||||||
|                 .title(&track.name) |                 .title(&track.name) | ||||||
|                 .activatable_widget(&check) |                 .activatable_widget(&check) | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ use super::track_selector::TrackSelector; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::selectors::RecordingSelector; | use crate::selectors::RecordingSelector; | ||||||
| use crate::widgets::{List, Widget}; | use crate::widgets::{List, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -138,13 +139,13 @@ impl Screen<Arc<ImportSession>, TrackSetData> for TrackSetEditor { | ||||||
|             let tracks = this.session.tracks(); |             let tracks = this.session.tracks(); | ||||||
|             let track_name = &tracks[track.track_source].name; |             let track_name = &tracks[track.track_source].name; | ||||||
| 
 | 
 | ||||||
|             let edit_image = gtk::Image::from_icon_name(Some("document-edit-symbolic")); |             let edit_image = gtk::Image::from_icon_name("document-edit-symbolic"); | ||||||
|             let edit_button = gtk::Button::new(); |             let edit_button = gtk::Button::new(); | ||||||
|             edit_button.set_has_frame(false); |             edit_button.set_has_frame(false); | ||||||
|             edit_button.set_valign(gtk::Align::Center); |             edit_button.set_valign(gtk::Align::Center); | ||||||
|             edit_button.set_child(Some(&edit_image)); |             edit_button.set_child(Some(&edit_image)); | ||||||
| 
 | 
 | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .focusable(false) |                 .focusable(false) | ||||||
|                 .title(&title) |                 .title(&title) | ||||||
|                 .subtitle(track_name) |                 .subtitle(track_name) | ||||||
|  |  | ||||||
|  | @ -22,8 +22,8 @@ mod resources; | ||||||
| 
 | 
 | ||||||
| fn main() { | fn main() { | ||||||
|     gettextrs::setlocale(gettextrs::LocaleCategory::LcAll, ""); |     gettextrs::setlocale(gettextrs::LocaleCategory::LcAll, ""); | ||||||
|     gettextrs::bindtextdomain("musicus", config::LOCALEDIR); |     gettextrs::bindtextdomain("musicus", config::LOCALEDIR).unwrap(); | ||||||
|     gettextrs::textdomain("musicus"); |     gettextrs::textdomain("musicus").unwrap(); | ||||||
| 
 | 
 | ||||||
|     gstreamer::init().expect("Failed to initialize GStreamer!"); |     gstreamer::init().expect("Failed to initialize GStreamer!"); | ||||||
|     gtk::init().expect("Failed to initialize GTK!"); |     gtk::init().expect("Failed to initialize GTK!"); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use crate::widgets::Widget; | ||||||
| use futures_channel::oneshot; | use futures_channel::oneshot; | ||||||
| use futures_channel::oneshot::{Receiver, Sender}; | use futures_channel::oneshot::{Receiver, Sender}; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::StackBuilder; | ||||||
| use gtk::prelude::*; | use gtk::prelude::*; | ||||||
| use musicus_backend::Backend; | use musicus_backend::Backend; | ||||||
| use std::cell::{Cell, RefCell}; | use std::cell::{Cell, RefCell}; | ||||||
|  | @ -96,7 +97,7 @@ impl Navigator { | ||||||
|         W: IsA<gtk::Window>, |         W: IsA<gtk::Window>, | ||||||
|         E: IsA<gtk::Widget>, |         E: IsA<gtk::Widget>, | ||||||
|     { |     { | ||||||
|         let widget = gtk::StackBuilder::new() |         let widget = StackBuilder::new() | ||||||
|             .hhomogeneous(false) |             .hhomogeneous(false) | ||||||
|             .vhomogeneous(false) |             .vhomogeneous(false) | ||||||
|             .interpolate_size(true) |             .interpolate_size(true) | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ use crate::editors::EnsembleEditor; | ||||||
| use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | ||||||
| use crate::widgets; | use crate::widgets; | ||||||
| use crate::widgets::{List, Section, Widget}; | use crate::widgets::{List, Section, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -74,7 +75,7 @@ impl Screen<Ensemble, ()> for EnsembleScreen { | ||||||
|             clone!(@weak this => @default-panic,  move |index| { |             clone!(@weak this => @default-panic,  move |index| { | ||||||
|                 let recording = &this.recordings.borrow()[index]; |                 let recording = &this.recordings.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&recording.work.get_title()) |                     .title(&recording.work.get_title()) | ||||||
|                     .subtitle(&recording.get_performers()) |                     .subtitle(&recording.get_performers()) | ||||||
|  | @ -104,7 +105,7 @@ impl Screen<Ensemble, ()> for EnsembleScreen { | ||||||
|             .set_make_widget_cb(clone!(@weak this => @default-panic,  move |index| { |             .set_make_widget_cb(clone!(@weak this => @default-panic,  move |index| { | ||||||
|                 let medium = &this.mediums.borrow()[index]; |                 let medium = &this.mediums.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&medium.name) |                     .title(&medium.name) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -4,9 +4,11 @@ use crate::import::SourceSelector; | ||||||
| use crate::navigator::{NavigationHandle, Navigator, NavigatorWindow, Screen}; | use crate::navigator::{NavigationHandle, Navigator, NavigatorWindow, Screen}; | ||||||
| use crate::preferences::Preferences; | use crate::preferences::Preferences; | ||||||
| use crate::widgets::{List, PlayerBar, Widget}; | use crate::widgets::{List, PlayerBar, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::AboutDialogBuilder; | ||||||
| use gtk_macros::get_widget; | use gtk_macros::get_widget; | ||||||
| use musicus_backend::db::PersonOrEnsemble; | use musicus_backend::db::PersonOrEnsemble; | ||||||
| use std::cell::RefCell; | use std::cell::RefCell; | ||||||
|  | @ -95,7 +97,7 @@ impl Screen<(), ()> for MainScreen { | ||||||
|             .set_make_widget_cb(clone!(@weak this =>  @default-panic, move |index| { |             .set_make_widget_cb(clone!(@weak this =>  @default-panic, move |index| { | ||||||
|                 let poe = &this.poes.borrow()[index]; |                 let poe = &this.poes.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&poe.get_title()) |                     .title(&poe.get_title()) | ||||||
|                     .build(); |                     .build(); | ||||||
|  | @ -193,7 +195,7 @@ impl Widget for MainScreen { | ||||||
| impl MainScreen { | impl MainScreen { | ||||||
|     /// Show a dialog with information on this application.
 |     /// Show a dialog with information on this application.
 | ||||||
|     fn show_about_dialog(&self) { |     fn show_about_dialog(&self) { | ||||||
|         let dialog = gtk::AboutDialogBuilder::new() |         let dialog = AboutDialogBuilder::new() | ||||||
|             .transient_for(&self.handle.window) |             .transient_for(&self.handle.window) | ||||||
|             .modal(true) |             .modal(true) | ||||||
|             .logo_icon_name("de.johrpan.musicus") |             .logo_icon_name("de.johrpan.musicus") | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets; | use crate::widgets; | ||||||
| use crate::widgets::{List, Section, Widget}; | use crate::widgets::{List, Section, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -74,7 +75,7 @@ impl Screen<Medium, ()> for MediumScreen { | ||||||
|                     parts.join(", ") |                     parts.join(", ") | ||||||
|                 }; |                 }; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .margin_start(12) |                     .margin_start(12) | ||||||
|                     .selectable(false) |                     .selectable(false) | ||||||
|                     .title(&title) |                     .title(&title) | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ use crate::editors::PersonEditor; | ||||||
| use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | ||||||
| use crate::widgets; | use crate::widgets; | ||||||
| use crate::widgets::{List, Section, Widget}; | use crate::widgets::{List, Section, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -80,7 +81,7 @@ impl Screen<Person, ()> for PersonScreen { | ||||||
|             .set_make_widget_cb(clone!(@weak this =>  @default-panic, move |index| { |             .set_make_widget_cb(clone!(@weak this =>  @default-panic, move |index| { | ||||||
|                 let work = &this.works.borrow()[index]; |                 let work = &this.works.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&work.title) |                     .title(&work.title) | ||||||
|                     .build(); |                     .build(); | ||||||
|  | @ -108,7 +109,7 @@ impl Screen<Person, ()> for PersonScreen { | ||||||
|             clone!(@weak this =>  @default-panic, move |index| { |             clone!(@weak this =>  @default-panic, move |index| { | ||||||
|                 let recording = &this.recordings.borrow()[index]; |                 let recording = &this.recordings.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&recording.work.get_title()) |                     .title(&recording.work.get_title()) | ||||||
|                     .subtitle(&recording.get_performers()) |                     .subtitle(&recording.get_performers()) | ||||||
|  | @ -138,7 +139,7 @@ impl Screen<Person, ()> for PersonScreen { | ||||||
|             .set_make_widget_cb(clone!(@weak this => @default-panic,  move |index| { |             .set_make_widget_cb(clone!(@weak this => @default-panic,  move |index| { | ||||||
|                 let medium = &this.mediums.borrow()[index]; |                 let medium = &this.mediums.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&medium.name) |                     .title(&medium.name) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use crate::editors::RecordingEditor; | ||||||
| use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | ||||||
| use crate::widgets; | use crate::widgets; | ||||||
| use crate::widgets::{List, Section, Widget}; | use crate::widgets::{List, Section, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -84,7 +85,7 @@ impl Screen<Recording, ()> for RecordingScreen { | ||||||
|                     title_parts.join(", ") |                     title_parts.join(", ") | ||||||
|                 }; |                 }; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .title(&title) |                     .title(&title) | ||||||
|                     .build(); |                     .build(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1,7 +1,9 @@ | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::{HeaderBarBuilder, StatusPageBuilder}; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::{BoxBuilder, ButtonBuilder}; | ||||||
| use gtk::prelude::*; | use gtk::prelude::*; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
| 
 | 
 | ||||||
|  | @ -15,20 +17,20 @@ pub struct WelcomeScreen { | ||||||
| 
 | 
 | ||||||
| impl Screen<(), ()> for WelcomeScreen { | impl Screen<(), ()> for WelcomeScreen { | ||||||
|     fn new(_: (), handle: NavigationHandle<()>) -> Rc<Self> { |     fn new(_: (), handle: NavigationHandle<()>) -> Rc<Self> { | ||||||
|         let widget = gtk::BoxBuilder::new() |         let widget = BoxBuilder::new() | ||||||
|             .orientation(gtk::Orientation::Vertical) |             .orientation(gtk::Orientation::Vertical) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let header = adw::HeaderBarBuilder::new() |         let header = HeaderBarBuilder::new() | ||||||
|             .title_widget(&adw::WindowTitle::new("Musicus", "")) |             .title_widget(&adw::WindowTitle::new("Musicus", "")) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let button = gtk::ButtonBuilder::new() |         let button = ButtonBuilder::new() | ||||||
|             .halign(gtk::Align::Center) |             .halign(gtk::Align::Center) | ||||||
|             .label(&gettext("Select folder")) |             .label(&gettext("Select folder")) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let welcome = adw::StatusPageBuilder::new() |         let welcome = StatusPageBuilder::new() | ||||||
|             .icon_name("folder-music-symbolic") |             .icon_name("folder-music-symbolic") | ||||||
|             .title(&gettext("Welcome to Musicus!")) |             .title(&gettext("Welcome to Musicus!")) | ||||||
|             .description(&gettext( |             .description(&gettext( | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ use crate::editors::WorkEditor; | ||||||
| use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | use crate::navigator::{NavigationHandle, NavigatorWindow, Screen}; | ||||||
| use crate::widgets; | use crate::widgets; | ||||||
| use crate::widgets::{List, Section, Widget}; | use crate::widgets::{List, Section, Widget}; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -69,7 +70,7 @@ impl Screen<Work, ()> for WorkScreen { | ||||||
|             clone!(@weak this =>  @default-panic, move |index| { |             clone!(@weak this =>  @default-panic, move |index| { | ||||||
|                 let recording = &this.recordings.borrow()[index]; |                 let recording = &this.recordings.borrow()[index]; | ||||||
| 
 | 
 | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&recording.work.get_title()) |                     .title(&recording.work.get_title()) | ||||||
|                     .subtitle(&recording.get_performers()) |                     .subtitle(&recording.get_performers()) | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::selector::Selector; | ||||||
| use crate::editors::EnsembleEditor; | use crate::editors::EnsembleEditor; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -41,7 +42,7 @@ impl Screen<(), Ensemble> for EnsembleSelector { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this => @default-panic,  move |ensemble| { |             .set_make_widget(clone!(@weak this => @default-panic,  move |ensemble| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&ensemble.name) |                     .title(&ensemble.name) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::selector::Selector; | ||||||
| use crate::editors::InstrumentEditor; | use crate::editors::InstrumentEditor; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -41,7 +42,7 @@ impl Screen<(), Instrument> for InstrumentSelector { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this =>  @default-panic, move |instrument| { |             .set_make_widget(clone!(@weak this =>  @default-panic, move |instrument| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&instrument.name) |                     .title(&instrument.name) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -1,6 +1,7 @@ | ||||||
| use super::selector::Selector; | use super::selector::Selector; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -30,7 +31,7 @@ impl Screen<(), Medium> for MediumSelector { | ||||||
|         })); |         })); | ||||||
| 
 | 
 | ||||||
|         this.selector.set_make_widget(clone!(@weak this =>  @default-panic, move |poe| { |         this.selector.set_make_widget(clone!(@weak this =>  @default-panic, move |poe| { | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .activatable(true) |                 .activatable(true) | ||||||
|                 .title(&poe.get_title()) |                 .title(&poe.get_title()) | ||||||
|                 .build(); |                 .build(); | ||||||
|  | @ -103,7 +104,7 @@ impl Screen<PersonOrEnsemble, Medium> for MediumSelectorMediumScreen { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this =>  @default-panic, move |medium| { |             .set_make_widget(clone!(@weak this =>  @default-panic, move |medium| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&medium.name) |                     .title(&medium.name) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::selector::Selector; | ||||||
| use crate::editors::PersonEditor; | use crate::editors::PersonEditor; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -41,7 +42,7 @@ impl Screen<(), Person> for PersonSelector { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this =>  @default-panic, move |person| { |             .set_make_widget(clone!(@weak this =>  @default-panic, move |person| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&person.name_lf()) |                     .title(&person.name_lf()) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::selector::Selector; | ||||||
| use crate::editors::{PersonEditor, RecordingEditor, WorkEditor}; | use crate::editors::{PersonEditor, RecordingEditor, WorkEditor}; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -52,7 +53,7 @@ impl Screen<(), Recording> for RecordingSelector { | ||||||
|         })); |         })); | ||||||
| 
 | 
 | ||||||
|         this.selector.set_make_widget(clone!(@weak this =>  @default-panic, move |person| { |         this.selector.set_make_widget(clone!(@weak this =>  @default-panic, move |person| { | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .activatable(true) |                 .activatable(true) | ||||||
|                 .title(&person.name_lf()) |                 .title(&person.name_lf()) | ||||||
|                 .build(); |                 .build(); | ||||||
|  | @ -127,7 +128,7 @@ impl Screen<Person, Work> for RecordingSelectorWorkScreen { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this =>  @default-panic, move |work| { |             .set_make_widget(clone!(@weak this =>  @default-panic, move |work| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&work.title) |                     .title(&work.title) | ||||||
|                     .build(); |                     .build(); | ||||||
|  | @ -190,7 +191,7 @@ impl Screen<Work, Recording> for RecordingSelectorRecordingScreen { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this =>  @default-panic, move |recording| { |             .set_make_widget(clone!(@weak this =>  @default-panic, move |recording| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&recording.get_performers()) |                     .title(&recording.get_performers()) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ use super::selector::Selector; | ||||||
| use crate::editors::{PersonEditor, WorkEditor}; | use crate::editors::{PersonEditor, WorkEditor}; | ||||||
| use crate::navigator::{NavigationHandle, Screen}; | use crate::navigator::{NavigationHandle, Screen}; | ||||||
| use crate::widgets::Widget; | use crate::widgets::Widget; | ||||||
|  | use adw::builders::ActionRowBuilder; | ||||||
| use adw::prelude::*; | use adw::prelude::*; | ||||||
| use gettextrs::gettext; | use gettextrs::gettext; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | @ -46,7 +47,7 @@ impl Screen<(), Work> for WorkSelector { | ||||||
|         })); |         })); | ||||||
| 
 | 
 | ||||||
|         this.selector.set_make_widget(clone!(@weak this =>  @default-panic, move |person| { |         this.selector.set_make_widget(clone!(@weak this =>  @default-panic, move |person| { | ||||||
|             let row = adw::ActionRowBuilder::new() |             let row = ActionRowBuilder::new() | ||||||
|                 .activatable(true) |                 .activatable(true) | ||||||
|                 .title(&person.name_lf()) |                 .title(&person.name_lf()) | ||||||
|                 .build(); |                 .build(); | ||||||
|  | @ -117,7 +118,7 @@ impl Screen<Person, Work> for WorkSelectorWorkScreen { | ||||||
| 
 | 
 | ||||||
|         this.selector |         this.selector | ||||||
|             .set_make_widget(clone!(@weak this =>  @default-panic, move |work| { |             .set_make_widget(clone!(@weak this =>  @default-panic, move |work| { | ||||||
|                 let row = adw::ActionRowBuilder::new() |                 let row = ActionRowBuilder::new() | ||||||
|                     .activatable(true) |                     .activatable(true) | ||||||
|                     .title(&work.title) |                     .title(&work.title) | ||||||
|                     .build(); |                     .build(); | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| use super::Widget; | use super::Widget; | ||||||
| use adw::prelude::*; | use adw::{prelude::*, builders::ActionRowBuilder}; | ||||||
|  | use gtk::builders::ButtonBuilder; | ||||||
| 
 | 
 | ||||||
| /// A list box row with a single button.
 | /// A list box row with a single button.
 | ||||||
| pub struct ButtonRow { | pub struct ButtonRow { | ||||||
|  | @ -13,12 +14,12 @@ pub struct ButtonRow { | ||||||
| impl ButtonRow { | impl ButtonRow { | ||||||
|     /// Create a new button row.
 |     /// Create a new button row.
 | ||||||
|     pub fn new(title: &str, label: &str) -> Self { |     pub fn new(title: &str, label: &str) -> Self { | ||||||
|         let button = gtk::ButtonBuilder::new() |         let button = ButtonBuilder::new() | ||||||
|             .valign(gtk::Align::Center) |             .valign(gtk::Align::Center) | ||||||
|             .label(label) |             .label(label) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let widget = adw::ActionRowBuilder::new() |         let widget = ActionRowBuilder::new() | ||||||
|             .focusable(false) |             .focusable(false) | ||||||
|             .activatable_widget(&button) |             .activatable_widget(&button) | ||||||
|             .title(title) |             .title(title) | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| use adw::prelude::*; | use adw::{prelude::*, builders::ActionRowBuilder}; | ||||||
|  | use gtk::builders::EntryBuilder; | ||||||
| 
 | 
 | ||||||
| /// A list box row with an entry.
 | /// A list box row with an entry.
 | ||||||
| pub struct EntryRow { | pub struct EntryRow { | ||||||
|  | @ -12,12 +13,12 @@ pub struct EntryRow { | ||||||
| impl EntryRow { | impl EntryRow { | ||||||
|     /// Create a new entry row.
 |     /// Create a new entry row.
 | ||||||
|     pub fn new(title: &str) -> Self { |     pub fn new(title: &str) -> Self { | ||||||
|         let entry = gtk::EntryBuilder::new() |         let entry = EntryBuilder::new() | ||||||
|             .hexpand(true) |             .hexpand(true) | ||||||
|             .valign(gtk::Align::Center) |             .valign(gtk::Align::Center) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let widget = adw::ActionRowBuilder::new() |         let widget = ActionRowBuilder::new() | ||||||
|             .focusable(false) |             .focusable(false) | ||||||
|             .activatable_widget(&entry) |             .activatable_widget(&entry) | ||||||
|             .title(title) |             .title(title) | ||||||
|  |  | ||||||
|  | @ -12,8 +12,8 @@ glib::wrapper! { | ||||||
| impl IndexedListModel { | impl IndexedListModel { | ||||||
|     /// Set the length of the list model.
 |     /// Set the length of the list model.
 | ||||||
|     pub fn set_length(&self, length: u32) { |     pub fn set_length(&self, length: u32) { | ||||||
|         let old_length = self.property("length").unwrap().get::<u32>().unwrap(); |         let old_length = self.property("length"); | ||||||
|         self.set_property("length", &length).unwrap(); |         self.set_property("length", &length); | ||||||
|         self.items_changed(0, old_length, length); |         self.items_changed(0, old_length, length); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -43,7 +43,7 @@ mod indexed_list_model_imp { | ||||||
|     impl ObjectImpl for IndexedListModel { |     impl ObjectImpl for IndexedListModel { | ||||||
|         fn properties() -> &'static [glib::ParamSpec] { |         fn properties() -> &'static [glib::ParamSpec] { | ||||||
|             static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| { |             static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| { | ||||||
|                 vec![glib::ParamSpec::new_uint( |                 vec![glib::ParamSpecUInt::new( | ||||||
|                     "length", |                     "length", | ||||||
|                     "Length", |                     "Length", | ||||||
|                     "Length", |                     "Length", | ||||||
|  | @ -109,7 +109,7 @@ impl ItemIndex { | ||||||
| 
 | 
 | ||||||
|     /// Get the value of the item index..
 |     /// Get the value of the item index..
 | ||||||
|     pub fn get(&self) -> u32 { |     pub fn get(&self) -> u32 { | ||||||
|         self.property("value").unwrap().get::<u32>().unwrap() |         self.property("value") | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -132,7 +132,7 @@ mod item_index_imp { | ||||||
|     impl ObjectImpl for ItemIndex { |     impl ObjectImpl for ItemIndex { | ||||||
|         fn properties() -> &'static [glib::ParamSpec] { |         fn properties() -> &'static [glib::ParamSpec] { | ||||||
|             static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| { |             static PROPERTIES: Lazy<Vec<glib::ParamSpec>> = Lazy::new(|| { | ||||||
|                 vec![glib::ParamSpec::new_uint( |                 vec![glib::ParamSpecUInt::new( | ||||||
|                     "value", |                     "value", | ||||||
|                     "Value", |                     "Value", | ||||||
|                     "Value", |                     "Value", | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| use super::indexed_list_model::{IndexedListModel, ItemIndex}; | use super::indexed_list_model::{IndexedListModel, ItemIndex}; | ||||||
| use glib::clone; | use glib::clone; | ||||||
|  | use gtk::builders::ListBoxBuilder; | ||||||
| use gtk::prelude::*; | use gtk::prelude::*; | ||||||
| use std::cell::{Cell, RefCell}; | use std::cell::{Cell, RefCell}; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
|  | @ -27,7 +28,7 @@ impl List { | ||||||
|         // let factory = gtk::SignalListItemFactory::new();
 |         // let factory = gtk::SignalListItemFactory::new();
 | ||||||
|         // let widget = gtk::ListView::new(Some(&selection), Some(&factory));
 |         // let widget = gtk::ListView::new(Some(&selection), Some(&factory));
 | ||||||
| 
 | 
 | ||||||
|         let widget = gtk::ListBoxBuilder::new() |         let widget = ListBoxBuilder::new() | ||||||
|             .selection_mode(gtk::SelectionMode::None) |             .selection_mode(gtk::SelectionMode::None) | ||||||
|             .css_classes(vec![String::from("boxed-list")]) |             .css_classes(vec![String::from("boxed-list")]) | ||||||
|             .build(); |             .build(); | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| use super::Widget; | use super::Widget; | ||||||
| use gtk::prelude::*; | use gtk::{prelude::*, builders::ButtonBuilder}; | ||||||
| use gtk_macros::get_widget; | use gtk_macros::get_widget; | ||||||
| 
 | 
 | ||||||
| /// A widget displaying a title, a framed child widget and, if needed, some
 | /// A widget displaying a title, a framed child widget and, if needed, some
 | ||||||
|  | @ -46,7 +46,7 @@ impl Section { | ||||||
|     /// situations where the widget is visible. The new button will be packed
 |     /// situations where the widget is visible. The new button will be packed
 | ||||||
|     /// to the end of the title box.
 |     /// to the end of the title box.
 | ||||||
|     pub fn add_action<F: Fn() + 'static>(&self, icon_name: &str, cb: F) { |     pub fn add_action<F: Fn() + 'static>(&self, icon_name: &str, cb: F) { | ||||||
|         let button = gtk::ButtonBuilder::new() |         let button = ButtonBuilder::new() | ||||||
|             .has_frame(false) |             .has_frame(false) | ||||||
|             .valign(gtk::Align::Center) |             .valign(gtk::Align::Center) | ||||||
|             .margin_top(12) |             .margin_top(12) | ||||||
|  |  | ||||||
|  | @ -1,7 +1,9 @@ | ||||||
| use crate::navigator::Navigator; | use crate::navigator::Navigator; | ||||||
| use crate::screens::{MainScreen, WelcomeScreen}; | use crate::screens::{MainScreen, WelcomeScreen}; | ||||||
|  | use adw::builders::HeaderBarBuilder; | ||||||
|  | use adw::prelude::*; | ||||||
| use glib::clone; | use glib::clone; | ||||||
| use gtk::prelude::*; | use gtk::builders::{BoxBuilder, SpinnerBuilder}; | ||||||
| use musicus_backend::{Backend, BackendState}; | use musicus_backend::{Backend, BackendState}; | ||||||
| use std::rc::Rc; | use std::rc::Rc; | ||||||
| 
 | 
 | ||||||
|  | @ -21,15 +23,15 @@ impl Window { | ||||||
|         window.set_title(Some("Musicus")); |         window.set_title(Some("Musicus")); | ||||||
|         window.set_default_size(1000, 707); |         window.set_default_size(1000, 707); | ||||||
| 
 | 
 | ||||||
|         let loading_screen = gtk::BoxBuilder::new() |         let loading_screen = BoxBuilder::new() | ||||||
|             .orientation(gtk::Orientation::Vertical) |             .orientation(gtk::Orientation::Vertical) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let header = adw::HeaderBarBuilder::new() |         let header = HeaderBarBuilder::new() | ||||||
|             .title_widget(&adw::WindowTitle::new("Musicus", "")) |             .title_widget(&adw::WindowTitle::new("Musicus", "")) | ||||||
|             .build(); |             .build(); | ||||||
| 
 | 
 | ||||||
|         let spinner = gtk::SpinnerBuilder::new() |         let spinner = SpinnerBuilder::new() | ||||||
|             .hexpand(true) |             .hexpand(true) | ||||||
|             .vexpand(true) |             .vexpand(true) | ||||||
|             .halign(gtk::Align::Center) |             .halign(gtk::Align::Center) | ||||||
|  | @ -43,7 +45,7 @@ impl Window { | ||||||
|         loading_screen.append(&spinner); |         loading_screen.append(&spinner); | ||||||
| 
 | 
 | ||||||
|         let navigator = Navigator::new(Rc::clone(&backend), &window, &loading_screen); |         let navigator = Navigator::new(Rc::clone(&backend), &window, &loading_screen); | ||||||
|         adw::traits::ApplicationWindowExt::set_content(&window, Some(&navigator.widget)); |         window.set_content(Some(&navigator.widget)); | ||||||
| 
 | 
 | ||||||
|         let this = Rc::new(Self { |         let this = Rc::new(Self { | ||||||
|             backend, |             backend, | ||||||
|  | @ -52,13 +54,14 @@ impl Window { | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         // Listen for backend state changes.
 |         // Listen for backend state changes.
 | ||||||
|         this.backend.set_state_cb(clone!(@weak this => move |state| { |         this.backend | ||||||
|             match state { |             .set_state_cb(clone!(@weak this => move |state| { | ||||||
|                 BackendState::Loading => this.navigator.reset(), |                 match state { | ||||||
|                 BackendState::NoMusicLibrary => this.show_welcome_screen(), |                     BackendState::Loading => this.navigator.reset(), | ||||||
|                 BackendState::Ready => this.show_main_screen(), |                     BackendState::NoMusicLibrary => this.show_welcome_screen(), | ||||||
|             } |                     BackendState::Ready => this.show_main_screen(), | ||||||
|         })); |                 } | ||||||
|  |             })); | ||||||
| 
 | 
 | ||||||
|         // Initialize the backend.
 |         // Initialize the backend.
 | ||||||
|         Rc::clone(&this.backend).init().unwrap(); |         Rc::clone(&this.backend).init().unwrap(); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue