Ignore:
Timestamp:
May 19, 2008, 6:22:42 PM (16 years ago)
Author:
dai_9181
Message:

Projectクラスをリファクタリング中。

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ab5.0/abdev/abdev/src/ProjectManager/ProjectManager.cpp

    r620 r621  
    55void OpenWorkfile( const std::string &path );
    66
    7 void Project::Open( char *path )
     7void Project::Load( char *path )
    88{
    99    extern HANDLE hHeap;
     
    268268    this->modify=0;
    269269    this->ModifyOfMaterial=0;
     270    this->ModifuOfResource=0;
     271}
     272
     273void SetStatusText(char *MenuText);
     274void Project::Save()
     275{
     276    extern MDIINFO MdiInfo[MAX_WNDNUM];
     277    int i,i2,i3,WndNum;
     278    char temporary[MAX_PATH],buffer[32767];
     279    HWND hChild;
     280
     281    SetStatusText( "プロジェクトを保存中..." );
     282
     283    //プロジェクトファイルのバージョンを設定
     284    this->dwVersion=PROJECT_VERSION;
     285
     286    hChild=GetWindow(hClient,GW_CHILD);
     287    while(hChild){
     288        WndNum=GetWndNum(hChild);
     289        if(IS_DOCUMENT_TEXT(MdiInfo[WndNum].DocType)){
     290            if( MdiInfo[WndNum].pMdiTextEdit->IsModified() ){
     291                for(i=0;i<this->pobj_DBFileInfo->iNum;i++){
     292                    this->pobj_DBFileInfo->ppobj_FileInfo[i]->GetFullPath(temporary);
     293                    if(lstrcmpi(MdiInfo[WndNum].path,temporary)==0){
     294                        SaveDocument(hChild,NULL);
     295                        break;
     296                    }
     297                }
     298            }
     299        }
     300        if(MdiInfo[WndNum].DocType==WNDTYPE_ICONEDIT){
     301            if(MdiInfo[WndNum].MdiIconEditInfo->bModify){
     302                for(i=0;i<this->res.NumberOfIconRes;i++){
     303                    lstrcpy(temporary,this->res.pIconResInfo[i].path);
     304                    lstrcpy( temporary, this->GetWorkDir().GetFullPath( temporary ).c_str() );
     305                    if(lstrcmpi(MdiInfo[WndNum].path,temporary)==0){
     306                        SaveDocument(hChild,NULL);
     307                        break;
     308                    }
     309                }
     310            }
     311        }
     312        hChild=GetNextWindow(hChild,GW_HWNDNEXT);
     313    }
     314
     315
     316    //////////////////////////////////////
     317    //プロジェクトファイル(*.pj)を作成
     318    lstrcpy(buffer,"\' ActiveBasic Project file.\r\n\r\n");
     319    i2=lstrlen(buffer);
     320    sprintf(buffer+i2,"#VERSION=%d\r\n\r\n",this->dwVersion);
     321    i2+=lstrlen(buffer+i2);
     322    sprintf(buffer+i2,"#MODULETYPE=%d\r\n\r\n",(int)this->GetModuleType());
     323    i2+=lstrlen(buffer+i2);
     324    sprintf(buffer+i2,"#NAME=%s\r\n\r\n",this->GetName().c_str());
     325    i2+=lstrlen(buffer+i2);
     326    extern HWND hSelectCompilerCombo;
     327    if(SendMessage(hSelectCompilerCombo,CB_GETCURSEL,0,0)==0){
     328        sprintf(buffer+i2,"#PLATFORM=32\r\n\r\n",this->GetName().c_str());
     329        i2+=lstrlen(buffer+i2);
     330    }
     331    else{
     332        sprintf(buffer+i2,"#PLATFORM=64\r\n\r\n",this->GetName().c_str());
     333        i2+=lstrlen(buffer+i2);
     334    }
     335    sprintf(buffer+i2,"#USEWINDOW=%d\r\n\r\n",this->windowInfos.size());
     336    i2+=lstrlen(buffer+i2);
     337    sprintf(buffer+i2,"#OPTION=&H%08x\r\n\r\n",this->dwOption);
     338    i2+=lstrlen(buffer+i2);
     339    sprintf(buffer+i2,"#OUTPUT_RELEASE=%s\r\n\r\n",this->lpszOutput_Release);
     340    i2+=lstrlen(buffer+i2);
     341    sprintf(buffer+i2,"#OUTPUT_DEBUG=%s\r\n\r\n",this->lpszOutput_Debug);
     342    i2+=lstrlen(buffer+i2);
     343    sprintf(buffer+i2,"#MANIFEST=%s\r\n\r\n",this->szManifestPath);
     344    i2+=lstrlen(buffer+i2);
     345    sprintf(buffer+i2,"#DEBUG_CMD_LINE=%s\r\n\r\n",this->szCmdLine);
     346    i2+=lstrlen(buffer+i2);
     347    sprintf(buffer+i2,"#DEBUG_EXE_PATH=%s\r\n\r\n",this->szExePath);
     348    i2+=lstrlen(buffer+i2);
     349    if(this->ResourceFileName[0]){
     350        sprintf(buffer+i2,"#RESOURCE=%s\r\n\r\n",this->ResourceFileName);
     351        i2+=lstrlen(buffer+i2);
     352    }
     353    else{
     354        lstrcpy(buffer+i2,"#RESOURCE=0\r\n\r\n");
     355        i2+=lstrlen(buffer+i2);
     356    }
     357    sprintf(buffer+i2,"#SOURCE\r\n");
     358    i2+=lstrlen(buffer+i2);
     359    for(i=0;i<this->pobj_DBFileInfo->iNum;i++){
     360        sprintf(buffer+i2,"%s\r\n",this->pobj_DBFileInfo->ppobj_FileInfo[i]->m_path);
     361        i2+=lstrlen(buffer+i2);
     362    }
     363
     364    //保存
     365    sprintf(temporary,"%s%s.pj",this->GetWorkDir().GetPath().c_str(),this->GetName().c_str());
     366    WriteBuffer(temporary,buffer,i2);
     367
     368
     369    //////////////////////////////////
     370    // リソースファイル(*.rc、resource.ab)を作成
     371    if(this->ResourceFileName[0]){
     372        i2=0;
     373        i3=101;
     374        for(i=0;i<this->res.NumberOfCursorRes;i++,i3++){
     375            sprintf(buffer+i2,"Const %s=%d\r\n",
     376                this->res.pCursorResInfo[i].IdName,
     377                i3);
     378            i2+=lstrlen(buffer+i2);
     379        }
     380        for(i=0;i<this->res.NumberOfBitmapRes;i++,i3++){
     381            sprintf(buffer+i2,"Const %s=%d\r\n",
     382                this->res.pBitmapResInfo[i].IdName,
     383                i3);
     384            i2+=lstrlen(buffer+i2);
     385        }
     386        for(i=0;i<this->res.NumberOfIconRes;i++,i3++){
     387            sprintf(buffer+i2,"Const %s=%d\r\n",
     388                this->res.pIconResInfo[i].IdName,
     389                i3);
     390            i2+=lstrlen(buffer+i2);
     391        }
     392
     393        //保存(resource.ab)
     394        lstrcpy(temporary,"resource.ab");
     395        lstrcpy( temporary, this->GetWorkDir().GetFullPath( temporary ).c_str() );
     396        WriteBuffer(temporary,buffer,i2);
     397
     398        i2=0;
     399        for(i=0;i<this->res.NumberOfCursorRes;i++){
     400            sprintf(buffer+i2,"%s CURSOR \"%s\"\r\n",
     401                this->res.pCursorResInfo[i].IdName,
     402                this->res.pCursorResInfo[i].path);
     403            i2+=lstrlen(buffer+i2);
     404        }
     405        for(i=0;i<this->res.NumberOfBitmapRes;i++){
     406            sprintf(buffer+i2,"%s BITMAP \"%s\"\r\n",
     407                this->res.pBitmapResInfo[i].IdName,
     408                this->res.pBitmapResInfo[i].path);
     409            i2+=lstrlen(buffer+i2);
     410        }
     411        for(i=0;i<this->res.NumberOfIconRes;i++){
     412            sprintf(buffer+i2,"%s ICON \"%s\"\r\n",
     413                this->res.pIconResInfo[i].IdName,
     414                this->res.pIconResInfo[i].path);
     415            i2+=lstrlen(buffer+i2);
     416        }
     417
     418        //マニフェスト
     419        if(this->dwOption&PJ_OP_RC_MANIFEST){
     420            sprintf(buffer+i2,"CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST \"%s\"\r\n",
     421                this->szManifestPath);
     422            i2+=lstrlen(buffer+i2);
     423        }
     424
     425        //保存
     426        lstrcpy(temporary,this->ResourceFileName);
     427        lstrcpy( temporary, this->GetWorkDir().GetFullPath( temporary ).c_str() );
     428        WriteBuffer(temporary,buffer,i2);
     429    }
     430
     431
     432    ///////////////////////////////////////
     433    //インデックスファイル(*.idx)を作成
     434    buffer[0]=0;
     435    lstrcpy(buffer,"' インデックス プログラム\r\n");
     436    i2=lstrlen(buffer);
     437    if(this->dwOption&PJ_OP_SOURCE_MASK){
     438        if(this->dwOption&PJ_OP_STRICT){
     439            /* #strictディレクティブは今は使われていない
     440            lstrcpy(buffer+i2,"\r\n");
     441            i2+=lstrlen(buffer+i2);
     442            lstrcpy(buffer+i2,"#strict");
     443            i2+=lstrlen(buffer+i2);
     444            lstrcpy(buffer+i2,"\r\n");
     445            i2+=lstrlen(buffer+i2);
     446            */
     447        }
     448        lstrcpy(buffer+i2,"\r\n");
     449        i2+=lstrlen(buffer+i2);
     450        lstrcpy(buffer+i2,"'Win32APIの定義ファイル\r\n");
     451        i2+=lstrlen(buffer+i2);
     452        if(this->dwOption&PJ_OP_MMSYSTEM){
     453            lstrcpy(buffer+i2,"#include <api_mmsys.sbp>\r\n");
     454            i2+=lstrlen(buffer+i2);
     455        }
     456        if(this->dwOption&PJ_OP_COMMCTRL){
     457            lstrcpy(buffer+i2,"#include <api_commctrl.sbp>\r\n");
     458            i2+=lstrlen(buffer+i2);
     459        }
     460        if(this->dwOption&PJ_OP_RICHEDIT){
     461            lstrcpy(buffer+i2,"#include <api_richedit.sbp>\r\n");
     462            i2+=lstrlen(buffer+i2);
     463        }
     464        if(this->dwOption&PJ_OP_WINSOCK){
     465            lstrcpy(buffer+i2,"#include <api_winsock2.sbp>\r\n");
     466            i2+=lstrlen(buffer+i2);
     467        }
     468    }
     469    if( !this->windowInfos.empty() )
     470    {
     471        lstrcpy(buffer+i2,"\r\n");
     472        i2+=lstrlen(buffer+i2);
     473        lstrcpy(buffer+i2,"'RADツールが生成するウィンドウ制御プログラム\r\n");
     474        i2+=lstrlen(buffer+i2);
     475        sprintf(buffer+i2,"#include \"Callback.wbp\"\r\n");
     476        i2+=lstrlen(buffer+i2);
     477    }
     478    if(this->pobj_DBFileInfo->iNum>1){
     479        lstrcpy(buffer+i2,"\r\n");
     480        i2+=lstrlen(buffer+i2);
     481        lstrcpy(buffer+i2,"'プロジェクト内のプログラム ファイル\r\n");
     482        i2+=lstrlen(buffer+i2);
     483        for(i=1;i<this->pobj_DBFileInfo->iNum;i++){
     484            //メインファイルは含まない
     485            sprintf(buffer+i2,"#include \"%s\"\r\n",this->pobj_DBFileInfo->ppobj_FileInfo[i]->m_path);
     486            i2+=lstrlen(buffer+i2);
     487            lstrcpy(buffer+i2,"_ClearNamespaceImported\r\n");
     488            i2+=lstrlen(buffer+i2);
     489        }
     490    }
     491    if( !this->windowInfos.empty() )
     492    {
     493        lstrcpy(buffer+i2,"\r\n");
     494        i2+=lstrlen(buffer+i2);
     495        lstrcpy(buffer+i2,"'RADツールが生成するウィンドウ生成プログラム\r\n");
     496        i2+=lstrlen(buffer+i2);
     497        sprintf(buffer+i2,"#include \"MakeWindow.wbp\"\r\n");
     498        i2+=lstrlen(buffer+i2);
     499    }
     500    if(this->ResourceFileName[0]){
     501        //リソースファイルが含まれる場合
     502        lstrcpy(buffer+i2,"\r\n");
     503        i2+=lstrlen(buffer+i2);
     504        lstrcpy(buffer+i2,"'リソースファイル\r\n");
     505        i2+=lstrlen(buffer+i2);
     506        lstrcpy(buffer+i2,"#include \"resource.ab\"\r\n");
     507        i2+=lstrlen(buffer+i2);
     508        sprintf(buffer+i2,"#resource \"%s.rc\"\r\n",this->GetName().c_str());
     509        i2+=lstrlen(buffer+i2);
     510    }
     511
     512    //保存
     513    sprintf(temporary,"%s%s.idx",this->GetWorkDir().GetPath().c_str(),this->GetName().c_str());
     514    WriteBuffer(temporary,buffer,i2);
     515
     516
     517    if( !this->windowInfos.empty() )
     518    {
     519        /////////////////////////////////////////////////////
     520        //ウィンドウ関連ファイル(*.wnd)を作成、保存
     521        if(this->ModifyOfMaterial){
     522            sprintf(temporary,"%s%s.wnd",this->GetWorkDir().GetPath().c_str(),this->GetName().c_str());
     523            SaveWindowFile( temporary, this->windowInfos );
     524        }
     525
     526        //.wbpファイルを生成
     527        SaveWindowProgram();
     528    }
     529
     530
     531    MakeWorkFile();
     532
     533    SetStatusText("");
     534
     535    this->modify=0;
    270536    this->ModifuOfResource=0;
    271537}
Note: See TracChangeset for help on using the changeset viewer.