| Quintiq file version 2.0 | 
| #parent: #root | 
| Method CleanUp ( | 
|   String selectedkb | 
| ) id:Method_FormKBManagement_CleanUp | 
| { | 
|   #keys: '[11660.0.301399095]' | 
|   Body: | 
|   [* | 
|     //clean up | 
|     dlg := construct( DialogNumberOfKBToKeep ); | 
|     dlg.LabelSelectedKB().Text( selectedkb ); | 
|      | 
|     retvalue := dlg.DoModal(  this ); | 
|      | 
|     if ( retvalue > 0 and not isnull( MacroPlan ) ) | 
|     { | 
|       nr :=  ApplicationLibMacroPlanner.FormatStringToReal( dlg.EditorNr().Text() ); | 
|       strings := StringListKnowledgeBase.GetSelectedLine().Tokenize( ':'); | 
|      | 
|       if ( strings.Size() = 4 and nr >= 0 ) | 
|       { | 
|         name := strings.Element( 1 ); | 
|         editor := CKBEditor::Create(); | 
|      | 
|         kb := select( MacroPlan.MDSMacroPlan(), MDSKBs, kb, kb.Name().ToUpper() = ScenarioManager.CompanyKBName().ToUpper() ); | 
|         kbfullid := KBFullID::Create( kb.Domain(), kb.Name(), kb.Branch(), kb.Version(), kb.ChangeNr() ); | 
|      | 
|         infos := editor.GetKBStructure( kbfullid.KBID() ); | 
|         highestid := max( infos, Elements.KBFullID, i, i.Branch() = name and i.ChangeNr().IsFinite() and i.ChangeNr() > 0, i.ChangeNr() ); | 
|      | 
|         if ( highestid.IsFinite() and highestid > 0 ) | 
|         { | 
|           toberemoved := highestid - nr; | 
|           tobedeletedset := selectset ( infos, Elements.KBFullID, i, i.Branch() = name and i.ChangeNr() <= toberemoved, true ) | 
|           traverse ( tobedeletedset, Elements, el ) | 
|           { | 
|             editor.DeleteKBChange( el ); | 
|           } | 
|         } | 
|       } | 
|     } | 
|   *] | 
| } |