@@ -18,13 +18,16 @@ use time::UtcOffset;
18
18
use crate :: {
19
19
app_config:: { deserialize_config, AppConfigVersion } ,
20
20
config:: { build_globset, load_project_config, ProjectObject , ProjectObjectNode } ,
21
+ diff:: DiffAlg ,
21
22
jobs:: {
22
23
objdiff:: { start_build, ObjDiffConfig } ,
23
24
Job , JobQueue , JobResult , JobStatus ,
24
25
} ,
25
26
views:: {
26
27
appearance:: { appearance_window, Appearance } ,
27
- config:: { config_ui, project_window, ConfigViewState , DEFAULT_WATCH_PATTERNS } ,
28
+ config:: {
29
+ config_ui, diff_options_window, project_window, ConfigViewState , DEFAULT_WATCH_PATTERNS ,
30
+ } ,
28
31
data_diff:: data_diff_ui,
29
32
demangle:: { demangle_window, DemangleViewState } ,
30
33
function_diff:: function_diff_ui,
@@ -42,6 +45,7 @@ pub struct ViewState {
42
45
pub show_appearance_config : bool ,
43
46
pub show_demangle : bool ,
44
47
pub show_project_config : bool ,
48
+ pub show_diff_options : bool ,
45
49
}
46
50
47
51
/// The configuration for a single object file.
@@ -98,6 +102,10 @@ pub struct AppConfig {
98
102
pub watch_patterns : Vec < Glob > ,
99
103
#[ serde( default ) ]
100
104
pub recent_projects : Vec < PathBuf > ,
105
+ #[ serde( default ) ]
106
+ pub code_alg : DiffAlg ,
107
+ #[ serde( default ) ]
108
+ pub data_alg : DiffAlg ,
101
109
102
110
#[ serde( skip) ]
103
111
pub objects : Vec < ProjectObject > ,
@@ -133,6 +141,8 @@ impl Default for AppConfig {
133
141
auto_update_check : true ,
134
142
watch_patterns : DEFAULT_WATCH_PATTERNS . iter ( ) . map ( |s| Glob :: new ( s) . unwrap ( ) ) . collect ( ) ,
135
143
recent_projects : vec ! [ ] ,
144
+ code_alg : Default :: default ( ) ,
145
+ data_alg : Default :: default ( ) ,
136
146
objects : vec ! [ ] ,
137
147
object_nodes : vec ! [ ] ,
138
148
watcher_change : false ,
@@ -398,6 +408,7 @@ impl eframe::App for App {
398
408
diff_state,
399
409
config_state,
400
410
show_project_config,
411
+ show_diff_options,
401
412
} = view_state;
402
413
403
414
egui:: TopBottomPanel :: top ( "top_panel" ) . show ( ctx, |ui| {
@@ -443,6 +454,10 @@ impl eframe::App for App {
443
454
}
444
455
} ) ;
445
456
ui. menu_button ( "Diff Options" , |ui| {
457
+ if ui. button ( "Algorithm…" ) . clicked ( ) {
458
+ * show_diff_options = !* show_diff_options;
459
+ ui. close_menu ( ) ;
460
+ }
446
461
let mut config = config. write ( ) . unwrap ( ) ;
447
462
let response = ui
448
463
. checkbox ( & mut config. rebuild_on_changes , "Rebuild on changes" )
@@ -493,6 +508,7 @@ impl eframe::App for App {
493
508
project_window ( ctx, config, show_project_config, config_state, appearance) ;
494
509
appearance_window ( ctx, show_appearance_config, appearance) ;
495
510
demangle_window ( ctx, show_demangle, demangle_state, appearance) ;
511
+ diff_options_window ( ctx, config, show_diff_options, appearance) ;
496
512
497
513
self . post_update ( ) ;
498
514
0 commit comments