2014-10-31 3 views
2

다음 방법은 패키지를 삭제합니다. 문제는 프로젝트 브라우저가 결코 새로 고쳐지지 않는다는 것입니다. Repository.RefreshModelView (0)를 호출하면 업데이트가 강제 실행되지만 모델이 다시 열리고 스크립트 실행이 중지됩니다.패키지 삭제 스크립트로 프로젝트 브라우저가 업데이트되지 않습니다.

function clearPackage(pkg) { 
    var parent as EA.Package; 
    parent = Repository.GetPackageByID(pkg.ParentID); 

    var pkgList as EA.Collection; 
    pkgList = parent.Packages; 

    for (var i = 0; i < pkgList.Count; i++) { 
     var p as EA.Package; 
     p = pkgList.GetAt(i); 

     if (p.PackageGUID == pkg.PackageGUID) { 
      pkgList.Delete(i); 
      pkgList.Refresh(); 
      parent.Update(); // have tried with and without 
      return; 
     } 
    } 
} 

의 검사 pkgList.Count pkgList.Refresh 전후의 크기 변화를 보여주는가 후 : 여기

는 방법이다. 다시 한번 말하지만 문제는 프로젝트 브라우저에만 국한된 것으로 보입니다.

프로젝트 브라우저를 새로 고치는 방법에 대한 아이디어가 있으십니까?

십자가는 Sparx Forums에 게시했습니다.

답변

3

패키지를 삭제하려면 패키지 자체를 삭제하면됩니다. 펄 죄송하지만

my $p = $rep->GetTreeSelectedObject(); 
my $par = $rep->GetPackageByID ($p->ParentID); 
my $idx = 0; 
for my $sp (in $par->Packages) { 
    if ($sp->PackageID == $p->PackageID) { 
     $par->Packages->DeleteAt ($idx, 1); 
     last; 
    } 
    $idx++; 
} 
$rep->RefreshModelView ($par->PackageID); 
+0

고맙습니다 만, 패키지의 루트 패키지에 매달려있는 경우 전체 모델을 다시로드합니다. (부모를 새로 고치는 것만 제외하면) 코드의 차이는 실제로 볼 수 없습니다. 또한, DeleteAt는 차이를 보이지 않습니다 - 두 번째 매개 변수 (새로 고침)는 구현되지 않은 것으로 문서화됩니다. – Chris

+0

두 번째 매개 변수는 필수 항목이며 사용되지 않습니다 - EA입니다. 실제로는 삭제와 동일합니다. -/ 새로 고침 (0)에서 스크립트 실행 중지와 관련하여 버그 보고서를 보내야합니다. 좋아 보이지 않는다. 필자가 테스트 스크립트를 독립 실행 형으로 실행 한 이후 처음에는 그 사실을 알지 못했습니다. –

+0

P. 새로 고침 문제를 극복하기 위해 전체 스크립트의 끝 부분에 플래그를 붙여서 연기하십시오 (또는 Geert가 제안하는 것을 수행하십시오). 청소 된 하위 패키지 목록을 반복해야하는 경우 객체를 다시 한 번로드하면됩니다 (GetPackageByID 또는 -GUID 사용). 어떤 경우에도 새로 고침을 사용하지 않습니다. 이것은 가장 불필요한 방법입니다. –

3

는 부모 패키지가 아닌 전체 모델의 내용 만 새로 고쳐집니다

Repository.RefreshModelView(parent.PackageID); 

을 시도 :-) 내 당나귀 이잖아.

+0

제안 해 주셔서 감사합니다. 그러나 그것은 저의 경우 다소 의문의 여지가 있습니다. 루트 모델에 종속 된 패키지를 삭제하고 parent.PackageID는 0입니다. 이 경우에는 @Chris를 – Chris

+0

으로 만들면 전체 모델을 다시로드 할 수있는 다른 옵션이 없습니다. 실행 파일이나 추가 기능을 사용하여 작업을 수행하는 것을 고려해 볼 수 있습니다. 모델을 다시로드 할 때 스크립트 중지 문제를 피할 수 있습니다. –

+0

좋은 제안입니다. 지금은 EA가 "기본 모델이 변경됨"이라는 경고와 계속되는 경고를 다루고 있습니다. – Chris

관련 문제