Changeset 655 in dev for trunk/ab5.0/abdev/abdev/ClassTree.cpp
- Timestamp:
- Jun 18, 2008, 11:03:59 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ab5.0/abdev/abdev/ClassTree.cpp
r629 r655 20 20 return lpdata%MAX_HASH; 21 21 } 22 void CClassTreeView::AddValidItem(HTREEITEM hItem, int iFileNum){22 void CClassTreeView::AddValidItem(HTREEITEM hItem,HTREEITEM hFileTreeItem){ 23 23 //ハッシュ値を取得 24 24 int key; … … 42 42 43 43 pth->hItem=hItem; 44 pth-> iFileNum=iFileNum;44 pth->hFileTreeItem = hFileTreeItem; 45 45 pth->pNextData=0; 46 46 } … … 85 85 86 86 void CClassTreeView::DeleteTreeHash(TREEHASH *pth){ 87 if(pth->hItem && ( iNowFile==-1 || iNowFile==pth->iFileNum)){87 if(pth->hItem && (hNowFileTreeItem==(HTREEITEM)-1 || hNowFileTreeItem==pth->hFileTreeItem)){ 88 88 if(pth->pNextData){ 89 89 DeleteTreeHash(pth->pNextData); … … 96 96 97 97 98 HTREEITEM CClassTreeView::insert(HTREEITEM hParentItem,int flag,char *lpszName, int iFileNum){98 HTREEITEM CClassTreeView::insert(HTREEITEM hParentItem,int flag,char *lpszName,HTREEITEM hFileTreeItem){ 99 99 char temporary[255]; 100 100 … … 110 110 if(lstrcmp(lpszName,tvItem.pszText)==0){ 111 111 //既に挿入済みの場合 112 AddValidItem(hNextItem, iFileNum);112 AddValidItem(hNextItem,hFileTreeItem); 113 113 return hNextItem; 114 114 } … … 158 158 159 159 hNextItem=TreeView_InsertItem(hTreeWnd,&tv); 160 AddValidItem(hNextItem, iFileNum);160 AddValidItem(hNextItem,hFileTreeItem); 161 161 return hNextItem; 162 162 } … … 170 170 while(bSearchingClasses) Sleep(10); 171 171 172 iNowFile=-1;172 this->hNowFileTreeItem = (HTREEITEM)-1; 173 173 174 174 int i; … … 186 186 } 187 187 } 188 void CClassTreeView::init(HWND hwnd, int iFileNum){188 void CClassTreeView::init(HWND hwnd,HTREEITEM hFileTreeItem){ 189 189 hTreeWnd=hwnd; 190 190 191 iNowFile=iFileNum;191 this->hNowFileTreeItem = hFileTreeItem; 192 192 193 193 int i; … … 203 203 TVI_ROOT, 204 204 CTV_ROOT, 205 temporary, -1);205 temporary,(HTREEITEM)-1); 206 206 } 207 207 void CClassTreeView::InsertGlobalProcedureFolder(void){ … … 209 209 hRootFolder, 210 210 CTV_FOLDER, 211 "グローバル関数", -1);212 } 213 214 HTREEITEM CClassTreeView::InsertGlobalProcedure(int flag,char *lpszName, int iFileNum){211 "グローバル関数",(HTREEITEM)-1); 212 } 213 214 HTREEITEM CClassTreeView::InsertGlobalProcedure(int flag,char *lpszName,HTREEITEM hFileTreeItem){ 215 215 return pobj_ClassTreeView->insert( 216 216 hGlobalProcedureFolder, 217 217 CTV_GLOBAL_PROC, 218 218 lpszName, 219 iFileNum);220 } 221 222 HTREEITEM CClassTreeView::insert_code_item(HTREEITEM hParentItem,int flag,char *lpszName, int iFileNum,char *pBuf,int p){219 hFileTreeItem); 220 } 221 222 HTREEITEM CClassTreeView::insert_code_item(HTREEITEM hParentItem,int flag,char *lpszName,HTREEITEM hFileTreeItem,char *pBuf,int p){ 223 223 int i4; 224 224 i4=NumberOfProcedures; … … 226 226 pProcInfo[i4].name=(char *)HeapAlloc(hHeap,0,lstrlen(lpszName)+1); 227 227 lstrcpy(pProcInfo[i4].name,lpszName); 228 pProcInfo[i4]. FileNum=iFileNum;228 pProcInfo[i4].hFileTreeItem = hFileTreeItem; 229 229 230 230 //コード位置 … … 237 237 flag, 238 238 lpszName, 239 iFileNum);239 hFileTreeItem); 240 240 241 241 pProcInfo[i4].hTreeItem=hTempItem; … … 246 246 } 247 247 248 void CClassTreeView::InsertClassFolder(char *lpszName, int iFileNum,char *pBuf,int p){249 hNowClassFolder=insert_code_item(hRootFolder,CTV_CLASS,lpszName, iFileNum,pBuf,p);250 } 251 void CClassTreeView::InsertClassMember(int flag,char *lpszName, int iFileNum,char *pBuf,int p){252 insert_code_item(hNowClassFolder,flag,lpszName, iFileNum,pBuf,p);248 void CClassTreeView::InsertClassFolder(char *lpszName,HTREEITEM hFileTreeItem,char *pBuf,int p){ 249 hNowClassFolder=insert_code_item(hRootFolder,CTV_CLASS,lpszName,hFileTreeItem,pBuf,p); 250 } 251 void CClassTreeView::InsertClassMember(int flag,char *lpszName,HTREEITEM hFileTreeItem,char *pBuf,int p){ 252 insert_code_item(hNowClassFolder,flag,lpszName,hFileTreeItem,pBuf,p); 253 253 } 254 254 … … 258 258 259 259 260 void AnalysisClass(char *pBuf,int *p, int iFileNum){260 void AnalysisClass(char *pBuf,int *p,HTREEITEM hFileTreeItem){ 261 261 int i2; 262 262 i2=*p; … … 272 272 pobj_ClassTreeView->InsertClassFolder( 273 273 pobj_ClassInfo->ClassName, 274 iFileNum,274 hFileTreeItem, 275 275 pBuf, 276 276 i2); … … 307 307 } 308 308 } 309 pobj_ClassTreeView->InsertClassMember(flag,pobj_ClassInfo->pMemberInfo[i].pName, iFileNum,pBuf,pobj_ClassInfo->pMemberInfo[i].code_pos);309 pobj_ClassTreeView->InsertClassMember(flag,pobj_ClassInfo->pMemberInfo[i].pName,hFileTreeItem,pBuf,pobj_ClassInfo->pMemberInfo[i].code_pos); 310 310 } 311 311 … … 316 316 317 317 318 void SetClassTreeFromOneFile_Buf( char *pBuf, int iFileNum ){318 void SetClassTreeFromOneFile_Buf( char *pBuf, HTREEITEM hFileTreeItem ){ 319 319 int i2,i3,i4; 320 320 char temporary[GENERAL_SIZE]; … … 345 345 // クラスの解析 346 346 ///////////////////////////// 347 AnalysisClass(pBuf,&i4, iFileNum);347 AnalysisClass(pBuf,&i4,hFileTreeItem); 348 348 349 349 i2=i4-1; … … 384 384 pobj_ClassTreeView->pProcInfo[i4].name=(char *)HeapAlloc(hHeap,0,lstrlen(temporary)+1); 385 385 lstrcpy(pobj_ClassTreeView->pProcInfo[i4].name,temporary); 386 pobj_ClassTreeView->pProcInfo[i4]. FileNum=iFileNum;386 pobj_ClassTreeView->pProcInfo[i4].hFileTreeItem = hFileTreeItem; 387 387 388 388 //定義行の選択範囲 … … 433 433 CTV_GLOBAL_PROC, 434 434 pobj_ClassTreeView->pProcInfo[i4].name, 435 iFileNum);435 hFileTreeItem); 436 436 pobj_ClassTreeView->pProcInfo[i4].hTreeItem=hTempItem; 437 437 … … 443 443 } 444 444 } 445 void SetClassTreeFromOneFile( char *lpszFilePath,int iFileNum){445 void SetClassTreeFromOneFile( const ActiveBasic::PM::FM::File &file){ 446 446 int WndNum; 447 447 HWND hChild=GetWindow(hClient,GW_CHILD); … … 451 451 { 452 452 if(IS_DOCUMENT_TEXT(MdiInfo[WndNum]->DocType)){ 453 if(lstrcmpi(MdiInfo[WndNum]->path.c_str(), lpszFilePath)==0) break;453 if(lstrcmpi(MdiInfo[WndNum]->path.c_str(),file.GetFullPath().c_str())==0) break; 454 454 } 455 455 hChild=GetNextWindow(hChild,GW_HWNDNEXT); … … 464 464 else{ 465 465 //開かれていない場合 466 pBuf=ReadBuffer( lpszFilePath);466 pBuf=ReadBuffer(file.GetFullPath()); 467 467 if(!pBuf) pBuf=(char *)HeapAlloc(hHeap,HEAP_ZERO_MEMORY,1); 468 468 } 469 469 470 SetClassTreeFromOneFile_Buf( pBuf, iFileNum);470 SetClassTreeFromOneFile_Buf( pBuf, file.GetTreeItemHandle() ); 471 471 472 472 if(!hChild) HeapDefaultFree(pBuf); 473 473 } 474 475 void SetProcedureTreeData(void *temp_iFileNum){ 476 int i; 477 char temporary[MAX_PATH]; 474 void SetClassTreeFromAllFile( ActiveBasic::PM::FM::Folder &folder ) 475 { 476 BOOST_FOREACH( ActiveBasic::PM::FM::Folder &childFolder, folder.folders ) 477 { 478 SetClassTreeFromAllFile( childFolder ); 479 } 480 481 BOOST_FOREACH( ActiveBasic::PM::FM::File &file, folder.files ) 482 { 483 SetClassTreeFromOneFile( file ); 484 } 485 } 486 487 void SetProcedureTreeData(void *temp_hFileTreeItem) 488 { 478 489 BOOL bExpand; 479 490 TVITEM tvItem; 480 491 SCROLLINFO si; 481 492 482 int iFileNum; 483 iFileNum=(int)temp_iFileNum; 493 HTREEITEM hFileTreeItem = (HTREEITEM)temp_hFileTreeItem; 484 494 485 495 if(bSearchingClasses){ … … 504 514 505 515 //プロシージャ情報のメモリを解放 506 for(i =0;i<pobj_ClassTreeView->NumberOfProcedures;i++){507 if( iFileNum==-1 || iFileNum==pobj_ClassTreeView->pProcInfo[i].FileNum){516 for(int i=0;i<pobj_ClassTreeView->NumberOfProcedures;i++){ 517 if(hFileTreeItem==(HTREEITEM)-1 || hFileTreeItem==pobj_ClassTreeView->pProcInfo[i].hFileTreeItem){ 508 518 HeapDefaultFree(pobj_ClassTreeView->pProcInfo[i].name); 509 519 } … … 539 549 540 550 541 pobj_ClassTreeView->init(hProcedureTreeView, iFileNum);551 pobj_ClassTreeView->init(hProcedureTreeView,hFileTreeItem); 542 552 543 553 //ルートフォルダ … … 553 563 if( projectInfo.IsOpened() ){ 554 564 // プロジェクトが開かれているとき 555 if(iFileNum==-1){ 565 if(hFileTreeItem==(HTREEITEM)-1){ 566 boost::mutex::scoped_lock lock( projectInfo.fileSystem.mutex ); 567 556 568 //プロジェクトのすべてのファイルを解析 557 for(i=0;i<projectInfo.pobj_DBFileInfo->iNum;i++){ 558 projectInfo.pobj_DBFileInfo->ppobj_FileInfo[i]->GetFullPath(temporary); 559 560 SetClassTreeFromOneFile(temporary,i); 561 } 569 SetClassTreeFromAllFile( projectInfo.fileSystem.root ); 562 570 563 571 //不要になったアイテムを除去 … … 569 577 ///////////////////////////////// 570 578 571 projectInfo.pobj_DBFileInfo->ppobj_FileInfo[iFileNum]->GetFullPath(temporary); 572 573 SetClassTreeFromOneFile(temporary,iFileNum); 579 SetClassTreeFromOneFile( projectInfo.fileSystem.root.FindFile( hFileTreeItem ) ); 574 580 } 575 581 } … … 580 586 int WndNum=GetWndNum(hChild); 581 587 char *pBuf=MdiInfo[WndNum]->pMdiTextEdit->buffer; 582 SetClassTreeFromOneFile_Buf( pBuf, -1 );588 SetClassTreeFromOneFile_Buf( pBuf, (HTREEITEM)-1 ); 583 589 584 590 } … … 601 607 if(bRetrySearchingClasses){ 602 608 bRetrySearchingClasses=0; 603 ResetClassTree( iFileNum);609 ResetClassTree(hFileTreeItem); 604 610 } 605 611 … … 617 623 _endthread(); 618 624 } 619 void ResetClassTree( int iFileNum){620 _beginthread(SetProcedureTreeData,0,(void *) iFileNum);621 } 625 void ResetClassTree(HTREEITEM hFileTreeItem){ 626 _beginthread(SetProcedureTreeData,0,(void *)hFileTreeItem); 627 }
Note:
See TracChangeset
for help on using the changeset viewer.