11use crate :: gui:: GuiSettingsContainer ;
2+ #[ cfg( feature = "self_update" ) ]
23use crate :: update:: { check_update, update} ;
34use eframe:: egui;
45use eframe:: egui:: { Align2 , InnerResponse , Vec2 , Visuals } ;
56use egui_theme_switch:: ThemeSwitch ;
7+ #[ cfg( feature = "self_update" ) ]
68use self_update:: restart:: restart;
9+ #[ cfg( feature = "self_update" ) ]
710use self_update:: update:: Release ;
11+ #[ cfg( feature = "self_update" ) ]
812use semver:: Version ;
913
1014pub fn settings_window (
1115 ctx : & egui:: Context ,
1216 gui_conf : & mut GuiSettingsContainer ,
13- new_release : & mut Option < Release > ,
17+ # [ cfg ( feature = "self_update" ) ] new_release : & mut Option < Release > ,
1418 settings_window_open : & mut bool ,
1519 update_text : & mut String ,
1620) -> Option < InnerResponse < Option < ( ) > > > {
@@ -19,53 +23,59 @@ pub fn settings_window(
1923 . anchor ( Align2 :: CENTER_CENTER , Vec2 { x : 0.0 , y : 0.0 } )
2024 . collapsible ( false )
2125 . show ( ctx, |ui| {
22- egui:: Grid :: new ( "settings" ) . striped ( true ) . show ( ui, |ui| {
23- if ui
24- . add ( ThemeSwitch :: new ( & mut gui_conf. theme_preference ) )
25- . changed ( )
26- {
27- ui. ctx ( ) . set_theme ( gui_conf. theme_preference ) ;
28- } ;
29- gui_conf. dark_mode = ui. visuals ( ) == & Visuals :: dark ( ) ;
30-
31- ui. end_row ( ) ;
32- ui. end_row ( ) ;
33-
34- if ui. button ( "Check for Updates" ) . clicked ( ) {
35- * new_release = check_update ( ) ;
36- }
26+ egui:: Grid :: new ( "theme settings" )
27+ . striped ( true )
28+ . show ( ui, |ui| {
29+ if ui
30+ . add ( ThemeSwitch :: new ( & mut gui_conf. theme_preference ) )
31+ . changed ( )
32+ {
33+ ui. ctx ( ) . set_theme ( gui_conf. theme_preference ) ;
34+ } ;
35+ gui_conf. dark_mode = ui. visuals ( ) == & Visuals :: dark ( ) ;
3736
38- let current_version = Version :: parse ( env ! ( "CARGO_PKG_VERSION" ) ) . unwrap ( ) ;
39- ui. label ( format ! ( "Current version: {}" , current_version) ) ;
37+ ui. end_row ( ) ;
38+ ui. end_row ( ) ;
39+ } ) ;
40+ #[ cfg( feature = "self_update" ) ]
41+ egui:: Grid :: new ( "update settings" )
42+ . striped ( true )
43+ . show ( ui, |ui| {
44+ if ui. button ( "Check for Updates" ) . clicked ( ) {
45+ * new_release = check_update ( ) ;
46+ }
4047
41- ui. end_row ( ) ;
48+ let current_version = Version :: parse ( env ! ( "CARGO_PKG_VERSION" ) ) . unwrap ( ) ;
49+ ui. label ( format ! ( "Current version: {}" , current_version) ) ;
4250
43- if let Some ( r) = & new_release {
44- ui. label ( format ! ( "New release: {}" , r. version) ) ;
4551 ui. end_row ( ) ;
46- if ui. button ( "Update" ) . clicked ( ) {
47- match update ( r. clone ( ) ) {
48- Ok ( _) => {
49- log:: info!( "Update done. {} >> {}" , current_version, r. version) ;
50- * new_release = None ;
51- * update_text =
52- "Update done. Please Restart Application." . to_string ( ) ;
53- }
54- Err ( err) => {
55- log:: error!( "{}" , err) ;
52+
53+ if let Some ( r) = & new_release {
54+ ui. label ( format ! ( "New release: {}" , r. version) ) ;
55+ ui. end_row ( ) ;
56+ if ui. button ( "Update" ) . clicked ( ) {
57+ match update ( r. clone ( ) ) {
58+ Ok ( _) => {
59+ log:: info!( "Update done. {} >> {}" , current_version, r. version) ;
60+ * new_release = None ;
61+ * update_text =
62+ "Update done. Please Restart Application." . to_string ( ) ;
63+ }
64+ Err ( err) => {
65+ log:: error!( "{}" , err) ;
66+ }
5667 }
5768 }
69+ } else {
70+ ui. label ( "" ) ;
71+ ui. end_row ( ) ;
72+ ui. horizontal ( |ui| {
73+ ui. disable ( ) ;
74+ let _ = ui. button ( "Update" ) ;
75+ } ) ;
76+ ui. label ( "You have the latest version" ) ;
5877 }
59- } else {
60- ui. label ( "" ) ;
61- ui. end_row ( ) ;
62- ui. horizontal ( |ui| {
63- ui. disable ( ) ;
64- let _ = ui. button ( "Update" ) ;
65- } ) ;
66- ui. label ( "You have the latest version" ) ;
67- }
68- } ) ;
78+ } ) ;
6979 ui. label ( update_text. clone ( ) ) ;
7080
7181 ui. horizontal ( |ui| {
@@ -79,6 +89,7 @@ pub fn settings_window(
7989 }
8090 } ) ;
8191
92+ #[ cfg( feature = "self_update" ) ]
8293 if !update_text. is_empty ( ) && ui. button ( "Restart" ) . clicked ( ) {
8394 restart ( ) ;
8495 ctx. request_repaint ( ) ; // Optional: Request repaint for immediate feedback
0 commit comments