@@ -16,8 +16,6 @@ use cursive::{
1616 view:: { IntoBoxedView , Nameable , Resizable , Scrollable } ,
1717 views:: { Dialog , DummyView , LinearLayout , OnEventView , Panel , SelectView , TextView } ,
1818} ;
19- use log:: info;
20- // 移除对ostool的依赖导入
2119
2220use super :: editors:: * ;
2321use crate :: ui:: components:: editors:: depend_features_editor:: show_depend_features_editor;
@@ -632,6 +630,21 @@ fn enter_elem(s: &mut Cursive, elem: &ElementType) {
632630 path = app. key_string ( ) ;
633631 }
634632
633+ let mut hocked = false ;
634+ if let Some ( app_data) = s. user_data :: < AppData > ( ) {
635+ for hook in app_data. elem_hocks . iter ( ) . cloned ( ) {
636+ if hook. path == path {
637+ info ! ( "Found hock for path: {}, type: {}" , path, elem. struct_name) ;
638+ ( hook. callback ) ( s, & path) ;
639+ hocked = true ;
640+ break ;
641+ }
642+ }
643+ }
644+ if hocked {
645+ return ;
646+ }
647+
635648 match elem {
636649 ElementType :: Menu ( menu) => {
637650 info ! ( "Handling Menu: {}" , menu. title) ;
@@ -724,32 +737,34 @@ fn enter_elem(s: &mut Cursive, elem: &ElementType) {
724737 create_multi_select_from_array_item ( array_item, & enum_item. variants ) ;
725738
726739 show_multi_select ( s, & item. base . title , & multi_select_item) ;
727- } else if path == "features.depend_features"
728- || path == "system.features.depend_features"
729- {
730- let app_data = s. user_data :: < AppData > ( ) . unwrap ( ) ;
731- let mut depend_map = std:: collections:: HashMap :: new ( ) ;
732-
733- if let Some ( callback) = & app_data. depend_features_callback {
734- let get_depend_features = || callback ( ) ;
735- if let Ok ( features_map) = std:: panic:: catch_unwind (
736- std:: panic:: AssertUnwindSafe ( get_depend_features) ,
737- ) {
738- info ! ( "depend_features_callback returned: {:?}" , features_map) ;
739- depend_map = features_map;
740- }
741- } else {
742- info ! ( "depend_features_callback is not set" ) ;
743- }
744-
745- let depend_names: Vec < String > = depend_map. keys ( ) . cloned ( ) . collect ( ) ;
746- show_depend_features_editor (
747- s,
748- & item. base . title ,
749- & depend_names,
750- & depend_map,
751- ) ;
752- } else {
740+ }
741+ // else if path == "features.depend_features"
742+ // || path == "system.features.depend_features"
743+ // {
744+ // let app_data = s.user_data::<AppData>().unwrap();
745+ // let mut depend_map = std::collections::HashMap::new();
746+
747+ // if let Some(callback) = &app_data.depend_features_callback {
748+ // let get_depend_features = || callback();
749+ // if let Ok(features_map) = std::panic::catch_unwind(
750+ // std::panic::AssertUnwindSafe(get_depend_features),
751+ // ) {
752+ // info!("depend_features_callback returned: {:?}", features_map);
753+ // depend_map = features_map;
754+ // }
755+ // } else {
756+ // info!("depend_features_callback is not set");
757+ // }
758+
759+ // let depend_names: Vec<String> = depend_map.keys().cloned().collect();
760+ // show_depend_features_editor(
761+ // s,
762+ // &item.base.title,
763+ // &depend_names,
764+ // &depend_map,
765+ // );
766+ // }
767+ else {
753768 show_array_edit ( s, & item. base . key ( ) , & item. base . title , & array_item. values ) ;
754769 }
755770 }
0 commit comments