1
- // SPDX-FileCopyrightText: 2022 Deren Vural
1
+ // SPDX-FileCopyrightText: 2024 Deren Vural
2
2
// SPDX-License-Identifier: GPL-3.0-or-later
3
3
4
4
/*
19
19
*/
20
20
21
21
// Imports
22
- use adwaita :: { gio , glib , prelude :: * , ViewStack , ViewSwitcherBar } ;
23
- use gio :: Settings ;
24
- use glib :: {
25
- once_cell :: sync :: Lazy , once_cell :: sync :: OnceCell , subclass :: InitializingObject ,
26
- subclass :: Signal , subclass :: SignalType , translate :: FromGlib , FromVariant , ParamSpec , SourceId ,
27
- ToValue , Value ,
22
+ // std
23
+ use std :: sync :: {
24
+ OnceLock , Arc , Mutex , MutexGuard
25
+ } ;
26
+ use std :: cell :: {
27
+ Cell , OnceCell , RefCell
28
28
} ;
29
+ use std:: rc:: Rc ;
30
+ // gtk-rs
29
31
use gtk:: {
30
- subclass:: prelude:: * , Align , CompositeTemplate , Grid , Label , LayoutChild , Orientation ,
31
- TemplateChild ,
32
+ subclass:: prelude:: * ,
33
+ Align , CompositeTemplate , Grid , Label , LayoutChild , Orientation , TemplateChild
34
+ } ;
35
+ use adwaita:: {
36
+ gio, glib,
37
+ prelude:: * ,
38
+ ViewStack , ViewSwitcherBar
39
+ } ;
40
+ use gio:: Settings ;
41
+ use glib:: {
42
+ subclass:: Signal ,
43
+ translate:: FromGlib ,
44
+ subclass:: InitializingObject , ParamSpec , SourceId ,
45
+ variant:: FromVariant , variant:: Variant ,
46
+ value:: ToValue , value:: Value ,
47
+ ControlFlow :: Continue
32
48
} ;
33
- use std:: { cell:: Cell , cell:: RefCell , rc:: Rc , sync:: Arc , sync:: Mutex , sync:: MutexGuard } ;
34
49
35
50
// Modules
36
51
use crate :: { modificationwindow:: ModificationWindow , provider:: Provider } ;
@@ -114,7 +129,10 @@ impl GpuPage {
114
129
* Notes:
115
130
*
116
131
*/
117
- pub fn get_setting < T : FromVariant > ( & self , name : & str ) -> T {
132
+ pub fn get_setting < T : FromVariant > (
133
+ & self ,
134
+ name : & str
135
+ ) -> T {
118
136
// Return the value of the property
119
137
match self . settings . get ( ) {
120
138
Some ( settings) => settings. get :: < T > ( name) ,
@@ -138,7 +156,11 @@ impl GpuPage {
138
156
* Notes:
139
157
*
140
158
*/
141
- pub fn update_setting < T : ToVariant > ( & self , name : & str , value : T ) {
159
+ pub fn update_setting < T : Into < Variant > + Clone > (
160
+ & self ,
161
+ name : & str ,
162
+ value : T
163
+ ) {
142
164
// Fetch settings
143
165
match self . settings . get ( ) {
144
166
Some ( settings) => match settings. set ( name, & value) {
@@ -165,7 +187,10 @@ impl GpuPage {
165
187
* Notes:
166
188
*
167
189
*/
168
- pub fn replace_stack ( & self , stack : Option < & ViewStack > ) {
190
+ pub fn replace_stack (
191
+ & self ,
192
+ stack : Option < & ViewStack >
193
+ ) {
169
194
self . view_switcher . set_stack ( stack) ;
170
195
}
171
196
@@ -462,26 +487,27 @@ impl GpuPage {
462
487
}
463
488
Err ( err) => {
464
489
println ! ( "panicked when fetching gpu data: `{}`" , err) ;
465
- return Continue ( false ) ;
490
+ return Continue ;
466
491
}
467
492
}
468
493
}
469
494
}
470
495
}
471
496
None => {
472
497
println ! ( "panicked when fetching current provider.." ) ;
473
- return Continue ( false ) ;
498
+ return Continue ;
474
499
}
475
500
}
476
501
477
- Continue ( true )
502
+ Continue
478
503
} ) ;
479
504
480
505
// !!UNSAFE CODE HERE!!!!UNSAFE CODE HERE!!!!UNSAFE CODE HERE!!!!UNSAFE CODE HERE!!
481
506
// Save ID of recurring closure
482
- unsafe {
483
- self . refreshid . set ( id. as_raw ( ) ) ;
484
- }
507
+ self . refreshid . set ( id. as_raw ( ) ) ;
508
+ // unsafe {
509
+ // self.refreshid.set(id.as_raw());
510
+ // }
485
511
// !!UNSAFE CODE HERE!!!!UNSAFE CODE HERE!!!!UNSAFE CODE HERE!!!!UNSAFE CODE HERE!!
486
512
}
487
513
@@ -607,13 +633,14 @@ impl ObjectImpl for GpuPage {
607
633
* Notes:
608
634
*
609
635
*/
610
- fn constructed ( & self , obj : & Self :: Type ) {
636
+ fn constructed ( & self ) {
611
637
// println!("CONSTRUCTED");//TEST
612
638
// Call "constructed" on parent
613
- self . parent_constructed ( obj ) ;
639
+ self . parent_constructed ( ) ;
614
640
615
641
// Setup
616
642
self . refreshid . set ( 0 ) ;
643
+ let _obj: glib:: BorrowedObject < super :: GpuPage > = self . obj ( ) ;
617
644
//obj.setup_settings();
618
645
//obj.load_properties();//TODO
619
646
//obj.setup_widgets();
@@ -646,20 +673,18 @@ impl ObjectImpl for GpuPage {
646
673
* glib::ParamSpecObject::builder("formatter").build(),
647
674
*/
648
675
fn properties ( ) -> & ' static [ ParamSpec ] {
649
- //println!(" PROPERTIES");//TEST
650
- static PROPERTIES : Lazy < Vec < ParamSpec > > = Lazy :: new ( || {
676
+ static PROPERTIES : OnceLock < Vec < ParamSpec > > = OnceLock :: new ( ) ;
677
+ PROPERTIES . get_or_init ( || {
651
678
vec ! [
652
679
glib:: ParamSpecString :: builder( "uuid" ) . build( ) ,
653
680
glib:: ParamSpecString :: builder( "name" ) . build( ) ,
654
- glib:: ParamSpecObject :: builder( "provider" , glib :: Type :: OBJECT ) . build( ) ,
655
- glib:: ParamSpecUInt :: builder( "refreshid" ) . build( ) ,
681
+ glib:: ParamSpecObject :: builder:: < Provider > ( "provider" ) . build( ) ,
682
+ glib:: ParamSpecUInt :: builder( "refreshid" ) . build( )
656
683
]
657
- } ) ;
684
+ } )
658
685
659
686
//println!("PROPERTIES: {:?}", PROPERTIES);//TEST
660
687
//println!("trying to add `base_call`: {:?}", glib::ParamSpecString::builder("base_call").build());//TEST
661
-
662
- PROPERTIES . as_ref ( )
663
688
}
664
689
665
690
/**
@@ -678,7 +703,12 @@ impl ObjectImpl for GpuPage {
678
703
* Notes:
679
704
*
680
705
*/
681
- fn set_property ( & self , _obj : & Self :: Type , _id : usize , value : & Value , pspec : & ParamSpec ) {
706
+ fn set_property (
707
+ & self ,
708
+ _id : usize ,
709
+ value : & Value ,
710
+ pspec : & ParamSpec
711
+ ) {
682
712
//println!("setting: {:?}", pspec.name());//TEST
683
713
684
714
// println!("setting: {:?}", pspec.name());//TEST
@@ -744,7 +774,11 @@ impl ObjectImpl for GpuPage {
744
774
* Notes:
745
775
*
746
776
*/
747
- fn property ( & self , _obj : & Self :: Type , _id : usize , pspec : & ParamSpec ) -> Value {
777
+ fn property (
778
+ & self ,
779
+ _id : usize ,
780
+ pspec : & ParamSpec
781
+ ) -> Value {
748
782
//println!("getting: {:?}", pspec.name());//TEST
749
783
750
784
match pspec. name ( ) {
@@ -792,15 +826,17 @@ impl ObjectImpl for GpuPage {
792
826
* SignalType::from(i32::static_type())
793
827
*/
794
828
fn signals ( ) -> & ' static [ Signal ] {
795
- static SIGNALS : Lazy < Vec < Signal > > = Lazy :: new ( || {
796
- vec ! [ Signal :: builder(
797
- "update-views" ,
798
- & [ SignalType :: from( i32 :: static_type( ) ) ] ,
799
- SignalType :: from( i32 :: static_type( ) ) ,
800
- )
801
- . build( ) ]
802
- } ) ;
803
- SIGNALS . as_ref ( )
829
+ static SIGNALS : OnceLock < Vec < Signal > > = OnceLock :: new ( ) ;
830
+ SIGNALS . get_or_init ( || {
831
+ vec ! [
832
+ Signal :: builder( "update-all-views" )
833
+ . param_types( [ i32 :: static_type( ) ] )
834
+ . return_type:: <i32 >( )
835
+ . build( )
836
+ ]
837
+ } )
838
+
839
+ //println!("PROPERTIES: {:?}", PROPERTIES);//TEST
804
840
}
805
841
}
806
842
0 commit comments