Mercurial > hg > ltpda
diff m-toolbox/m/gui/gltpda/g_copyfcnCallback.m @ 0:f0afece42f48
Import.
author | Daniele Nicolodi <nicolodi@science.unitn.it> |
---|---|
date | Wed, 23 Nov 2011 19:22:13 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/m-toolbox/m/gui/gltpda/g_copyfcnCallback.m Wed Nov 23 19:22:13 2011 +0100 @@ -0,0 +1,46 @@ +function blk = g_copyfcnCallback(oldSelection,newSelection) + + try %#ok<ALIGN> % the try syntax is due to eventual multiple (or no) outports of the parent block + +% if numel(newSelection)>1 +% for ii=1:numel(newSelection), blockPosition(ii,1:4) = get_param(newSelection(ii),'Position'); end +% if ii>1, delete_block(getfullname(newSelection(ii))); end +% meanPosition = [mean(blockPosition(:,1)) , mean(blockPosition(:,2)) , blockPosition(1,3) , blockPosition(1,4)]; +% set_param(newSelection(1),'Position',meanPosition); +% newSelection(2:end)=[]; +% end + + if numel(newSelection)>1 + for ii=2:numel(newSelection) + delete_block(getfullname(newSelection(ii))) + end + newSelection(2:end)=[]; + end + + functionName = get_param(find_system(newSelection(1),'LookUnderMasks','all','BlockType','M-S-Function'),'Tag'); + if isempty(functionName), functionName = 'hollow'; end + + % To replace the copied block with the hollow one: + load_system('ltpda_library'); + blk = replace_block(gcs,'Name',get(newSelection,'Name'),'ltpda_library/Commonly Used Blocks/hollow','noprompt'); + blk = get_param(blk{1},'Handle'); + set(blk,'LinkStatus','inactive','MaskDisplay','disp(''hollow'')') + set(utils.prog.find_in_models(blk,'LookUnderMasks','all','BlockType','M-S-Function','FunctionName','ltpdasim'),'Tag','','Name','hollow'); + set(blk,'Selected','on') + set(blk,'UserData',[functionName,'-',num2str(oldSelection(1),20)]) + + % To add the line properly connecting the old block to the new one: + if numel(oldSelection)>1 + set(blk,'UserData','none - 1') + g_numberDataInput('',1,numel(oldSelection)) + for ii=1:numel(oldSelection) + add_line(gcs,[get(oldSelection(ii),'Name'),'/1'],[get(blk,'Name'),'/',num2str(ii)],'autorouting','on') + end + + else + add_line(gcs,[get(oldSelection,'Name'),'/1'],[get(blk,'Name'),'/1'],'autorouting','on') + end + + catch, end; + +end \ No newline at end of file