svghmi/detachable_pages.ysl2
branchsvghmi
changeset 2885 f398896b7ebf
parent 2877 682bce953795
child 2886 6c82fad8be65
equal deleted inserted replaced
2884:50b9832c51fc 2885:f398896b7ebf
     1 // detachable_elements.ysl2
     1 // detachable_pages.ysl2
     2 //
     2 //
     3 // compute what elements are required by pages
     3 // compute what elements are required by pages
     4 // and decide where to cut when removing/attaching 
     4 // and decide where to cut when removing/attaching 
     5 // pages elements on page switch
     5 // pages elements on page switch
     6 
     6 
    96     param "descend";
    96     param "descend";
    97     param "ancest";
    97     param "ancest";
    98     result "string-length($ancest) > 0 and starts-with($descend,$ancest)";
    98     result "string-length($ancest) > 0 and starts-with($descend,$ancest)";
    99 }
    99 }
   100 
   100 
       
   101 
   101 template "svg:*", mode="page_desc" {
   102 template "svg:*", mode="page_desc" {
   102     const "desc", "func:parselabel(@inkscape:label)/widget";
   103     const "desc", "func:parselabel(@inkscape:label)/widget";
   103     const "page", ".";
   104     const "page", ".";
   104     const "p", "$geometry[@Id = $page/@id]";
   105     const "p", "$geometry[@Id = $page/@id]";
   105 
   106 
   106     const "page_all_elements", "func:all_related_elements($page)";
   107     const "page_all_elements", "func:all_related_elements($page)";
   107 
   108 
   108     const "all_page_widgets","$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id]";
   109     const "all_page_widgets","$hmi_elements[@id = $page_all_elements/@id and @id != $page/@id][not(func:parselabels(ancestor::svg:*)/widget/@type = 'ForEach')]";
   109 
   110 
   110     const "page_relative_widgets",
   111     const "page_relative_widgets",
   111         "$all_page_widgets[func:is_descendant_path(func:parselabel(@inkscape:label)/widget/path/@value, $desc/path/@value)]";
   112         "$all_page_widgets[func:is_descendant_path(func:parselabel(@inkscape:label)/widget/path/@value, $desc/path/@value)]";
   112 
   113 
   113     // Take closest ancestor in detachable_elements
   114     // Take closest ancestor in detachable_elements