sysmodelgen/src/SysModelGen.pm
branchHighFidelityModel
changeset 165 ba562c1e2717
parent 152 5acf50bbb618
child 276 d9662ec4599f
equal deleted inserted replaced
164:8309dda95234 165:ba562c1e2717
   145 	'iShow'			=> {  'type' =>  'attr[=val]',  'ordered' => 1,'param' => "show-attr=s",
   145 	'iShow'			=> {  'type' =>  'attr[=val]',  'ordered' => 1,'param' => "show-attr=s",
   146 		'class' =>'Model Control', 'desc' => 'A mechanism of filtering which allows filtering based on component attribute values. If a value is set for that attribute, the component will be shown. Use in conjunction with -hide-attr for fine contol of what is shown. "class" and "filter" attribtues are handled specially -- see the documentation for details'},
   146 		'class' =>'Model Control', 'desc' => 'A mechanism of filtering which allows filtering based on component attribute values. If a value is set for that attribute, the component will be shown. Use in conjunction with -hide-attr for fine contol of what is shown. "class" and "filter" attribtues are handled specially -- see the documentation for details'},
   147 	'iHide'			=> { 'type' =>  'attr[=val]', 'ordered' => 1,'param' => "hide-attr=s",
   147 	'iHide'			=> { 'type' =>  'attr[=val]', 'ordered' => 1,'param' => "hide-attr=s",
   148 		 'class' =>'Model Control', 'desc' => 'A mechanism of filtering which allows filtering based on component attribute values. If a value is set for that attribute, the component will not be shown on the model. Use in conjunction with -show-attr for fine contol of what is shown. "class" and "filter" attribtues are handled specially -- see the documentation for details'},
   148 		 'class' =>'Model Control', 'desc' => 'A mechanism of filtering which allows filtering based on component attribute values. If a value is set for that attribute, the component will not be shown on the model. Use in conjunction with -show-attr for fine contol of what is shown. "class" and "filter" attribtues are handled specially -- see the documentation for details'},
   149 	'iIgnore'				=> { 'type' => 'item', 'multi' => 1, 'param' => "ignore=s", 'xpath' => '/model/ignore',
   149 	'iIgnore'				=> { 'type' => 'item', 'multi' => 1, 'param' => "ignore=s", 'xpath' => '/model/ignore',
   150 		 'class' =>'Model Control', 'desc' => 'A model entity to not draw, in the  form "[item-type]:[item-name]". Any number of these can be used. Defaults to "layer:Tools and Utils and SDKENG" ,"layer:MISC", "block:Techview"'},
   150 		 'class' =>'Model Control', 'desc' => 'The ID of a model entity to not draw. Any number of these can be used'},
       
   151 	'iIgnoreMeta'				=> { 'type' => 'item', 'multi' => 1, 'param' => "ignore-meta=s", 'xpath' => '/model/ignore',
       
   152 		 'class' =>'Model Control', 'desc' => 'The "rel" meta value to ignore. Takes the form of [relvalue] or [relvalue]:[type]. Any number of these can be used'},
   151 
   153 
   152 	'iNavCtrl'				=>{'param' => "navctrl=s" , 'type'=>'boolean' , 'xpath' => '/model/layout/@navctrl',
   154 	'iNavCtrl'				=>{'param' => "navctrl=s" , 'type'=>'boolean' , 'xpath' => '/model/layout/@navctrl',
   153 		'class' =>'Model Control', 'desc' => 'If set, a navigation control widget will appear in the upper left corner of the model. The control might not work on some SVG viewers.'},
   155 		'class' =>'Model Control', 'desc' => 'If set, a navigation control widget will appear in the upper left corner of the model. The control might not work on some SVG viewers.'},
   154 	'iDetail'				=>{'param' => "detail=s", 'type' =>  'item-type' ,  'xpath' => '/model/layout/@detail',
   156 	'iDetail'				=>{'param' => "detail=s", 'type' =>  'item-type' ,  'xpath' => '/model/layout/@detail',
   155 		'class' =>'Model Control', 'desc' => 'The type of the smallest System Model entity to draw. One of "layer", "package", "collection" or "component".  Defaults to "component"'},
   157 		'class' =>'Model Control', 'desc' => 'The type of the smallest System Model entity to draw. One of "layer", "package", "collection" or "component".  Defaults to "component"'},
   186 	'iTitleScale'			=> { 'param' => "title-scale=s", 'type' =>  'scale',  'xpath' => '/model/layout/legend/@title-scale',
   188 	'iTitleScale'			=> { 'param' => "title-scale=s", 'type' =>  'scale',  'xpath' => '/model/layout/legend/@title-scale',
   187 		 'class' => 'Model Control', 'desc' =>'Specifies the scale factor for the size of the title font (the text in the lower right). Use this instead of CSS to control the size, since the model generator needs to explicitly know how much space to allocate for the title.'},
   189 		 'class' => 'Model Control', 'desc' =>'Specifies the scale factor for the size of the title font (the text in the lower right). Use this instead of CSS to control the size, since the model generator needs to explicitly know how much space to allocate for the title.'},
   188 	'iXsltParam'			=>{  'multi' => 2, 'param' => "xslt-param=s",
   190 	'iXsltParam'			=>{  'multi' => 2, 'param' => "xslt-param=s",
   189 		 'class' =>'Build Control', 'desc' => 'Advanced: Parameters to feed directly to the XSLT transforms'},
   191 		 'class' =>'Build Control', 'desc' => 'Advanced: Parameters to feed directly to the XSLT transforms'},
   190 	'iLegendNote'			=>{  'multi' => 1, 'param' => "note=s", 'xpath' => '/model/layout/legend/note',
   192 	'iLegendNote'			=>{  'multi' => 1, 'param' => "note=s", 'xpath' => '/model/layout/legend/note',
   191 		 'class' => 'Labels', 'desc' => 'Free text to appear inside the legend box, on the rightmost side. If multiple ones are provided, they will appear as separate boxes from left to right. Newlines and other special characters can be entity-encoded (e.g. 
)'}
   193 		 'class' => 'Labels', 'desc' => 'Free text to appear inside the legend box, on the rightmost side. If multiple ones are provided, they will appear as separate boxes from left to right. Newlines and other special characters can be entity-encoded (e.g. 
). When using entities in an INI file, you *must* quote the value, otherwise the # will be treated as a comment delimiter.',}
   192 				);
   194 				);
   193 
   195 
   194 	$self->{iArgs} = \%Args;
   196 	$self->{iArgs} = \%Args;
   195 
   197 
   196     
   198     
   666 							}
   668 							}
   667 						}
   669 						}
   668 					} elsif(!$cur->{'multi'}){
   670 					} elsif(!$cur->{'multi'}){
   669 						$info{$match}.="\t<info xmlns='' type='$t'  href='",$self->{$param},"'/>\n";
   671 						$info{$match}.="\t<info xmlns='' type='$t'  href='",$self->{$param},"'/>\n";
   670 					}
   672 					}
   671 				} elsif($param eq 'iIgnore' or $param eq 'iLinkExpr' or $param eq 'iSysDefFile') {
   673 				} elsif($param eq 'iIgnore' or $param eq 'iIgnoreMeta' or $param eq 'iLinkExpr' or $param eq 'iSysDefFile') {
   672 					print XSLT "<template match='",$cur->{'xpath'},"'/>\n"	# ignore any already present if set
   674 					print XSLT "<template match='",$cur->{'xpath'},"'/>\n"	# ignore any already present if set
   673 				}		
   675 				}		
   674 			} elsif($param eq 'iModel') {
   676 			} elsif($param eq 'iModel') {
   675 			} else {
   677 			} else {
   676 				print STDERR "$param   ",$self->{$param},"\n";  # should not get here
   678 				print STDERR "$param   ",$self->{$param},"\n";  # should not get here
   715 		"<template name=\"filter\">\n";
   717 		"<template name=\"filter\">\n";
   716 	foreach my $ig (@{$self->{'iIgnore'}}) {
   718 	foreach my $ig (@{$self->{'iIgnore'}}) {
   717 		print XSLT "\t<ignore xmlns='' ";
   719 		print XSLT "\t<ignore xmlns='' ";
   718 		if($ig=~/^(.*):(.*)$/) {print XSLT "type='$1' name='$2'/>\n"}
   720 		if($ig=~/^(.*):(.*)$/) {print XSLT "type='$1' name='$2'/>\n"}
   719 		else {print XSLT "ref='$ig'/>\n"}
   721 		else {print XSLT "ref='$ig'/>\n"}
       
   722 	}
       
   723 	foreach my $ig (@{$self->{'iIgnoreMeta'}}) {
       
   724 		print XSLT "\t<ignore xmlns='' ";
       
   725 		if($ig=~/^(.*):(.*)$/) {print XSLT "meta-type='$2' meta='$1'/>\n"}
       
   726 		else {print XSLT "meta='$ig'/>\n"}
   720 	}
   727 	}
   721 	print XSLT join("\n\t",@{$self->{'iFiltering'}}),
   728 	print XSLT join("\n\t",@{$self->{'iFiltering'}}),
   722 		"</template>\n";
   729 		"</template>\n";
   723 
   730 
   724 	print XSLT '<template match="layout/legend" mode="content">',"\n";
   731 	print XSLT '<template match="layout/legend" mode="content">',"\n";