168 lines
5.1 KiB
C++
168 lines
5.1 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#include <vcl.h>
|
|
#pragma hdrstop
|
|
|
|
#include "GlobalUnit.h"
|
|
#include "SaveLocalStyleFormUnit.h"
|
|
#include "MessageFormUnit.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma link "GeneralDialogPanel"
|
|
#pragma link "LineEdit"
|
|
#pragma link "TextButton"
|
|
#pragma resource "*.dfm"
|
|
TSaveLocalStyleForm *SaveLocalStyleForm;
|
|
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TSaveLocalStyleForm::TSaveLocalStyleForm(TComponent* Owner, TStyleItem* pStyItem)
|
|
: TForm(Owner)
|
|
{
|
|
m_pStyItem = pStyItem;
|
|
if( pStyItem->pStyle && pStyItem->pStyle->idLoc!=0 && pStyItem->pStyle->idLoc!=(UINT)-1 ){
|
|
m_editName->Text = UTF8ToMBCS(pStyItem->pStyle->pLocal->strStyleName).c_str();
|
|
}
|
|
else{
|
|
m_editName->Text = m_editName->Text.sprintf( L"×Ô¶¨Òå·ç¸ñ%d", f_CM_GetNextLocalID() );
|
|
}
|
|
|
|
SetTransparent( this );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveLocalStyleForm::FormShow(TObject *Sender)
|
|
{
|
|
m_editName->SetFocus();
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveLocalStyleForm::OkClick(TObject *Sender)
|
|
{
|
|
if( m_editName->Text.Length()==0 ){
|
|
m_editName->SetFocus();
|
|
}
|
|
else{
|
|
ModalResult = mrOk;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveLocalStyleForm::Save(TPROSTYLE * pStyle)
|
|
{
|
|
for( int i=0; i<m_pStyItem->aItems->Count; i++ ){
|
|
TSegmentItem* pSeg = (TSegmentItem*)m_pStyItem->aItems->Items[i];
|
|
int segType = pSeg->iSegType,
|
|
segNo = pSeg->iSegNo;
|
|
|
|
if( segType==SEGTYPE_VAR )
|
|
pStyle->pLocal->nSegNum[segType]++;
|
|
else if( segType==SEGTYPE_FILL )
|
|
pStyle->pLocal->nSegNum[segType]++;
|
|
else{
|
|
int nMaj = pStyle->pLocal->nSegNum[segType] & 0x0F,
|
|
nMin = pStyle->pLocal->nSegNum[segType] >> 4;
|
|
|
|
if( segNo<4 )
|
|
nMaj++;
|
|
else
|
|
nMin++;
|
|
|
|
pStyle->pLocal->nSegNum[segType] = ( nMin<<4 ) + nMaj;
|
|
pStyle->pLocal->aIEBars[segType-2][segNo] = pSeg->nBars;
|
|
}
|
|
|
|
pStyle->pLocal->nSegVol[segType][segNo] = pSeg->volume;
|
|
|
|
for( int j=0; j<pSeg->aItems->Count; j++ ){
|
|
TTrack* pTrk = ((TTrackItem*)pSeg->aItems->Items[j])->pTrack;
|
|
pStyle->pLocal->trkRef[segType][segNo][j].idLoc = pTrk->iStyleLoc;// >pStyle->idLoc;
|
|
pStyle->pLocal->trkRef[segType][segNo][j].idStyle = pTrk->iStyleId;// >pStyle->idStyle;
|
|
pStyle->pLocal->trkRef[segType][segNo][j].segNo = pTrk->iSegNo;
|
|
pStyle->pLocal->trkRef[segType][segNo][j].chan = pTrk->iChanNo;
|
|
pStyle->pLocal->trkRef[segType][segNo][j].prog = pTrk->iProg;// >progCurr;
|
|
pStyle->pLocal->trkRef[segType][segNo][j].vol = pTrk->nVol;// >volCurr;
|
|
}
|
|
}
|
|
|
|
f_CM_SaveLocalStyle( pStyle );
|
|
|
|
if( m_pStyItem->pStyle!=pStyle )
|
|
m_pStyItem->pStyle = pStyle;
|
|
|
|
for( int i=0; i<m_pStyItem->aItems->Count; i++ ){
|
|
TSegmentItem* pSeg = (TSegmentItem*)m_pStyItem->aItems->Items[i];
|
|
for( int j=0; j<pSeg->aItems->Count; j++ ){
|
|
TTrackItem* pTrk = (TTrackItem*)pSeg->aItems->Items[j];
|
|
if( pTrk->pStyle->idLoc==(UINT)-1 && pTrk->pStyle->idStyle==0 ){
|
|
pTrk->pStyle = pStyle;
|
|
pTrk->pTrack->iStyleLoc = pStyle->idLoc;
|
|
pTrk->pTrack->iStyleId = pStyle->idStyle;
|
|
}
|
|
}
|
|
}
|
|
|
|
if( g_pUseStyle ){
|
|
if( !g_pUseStyle->pStyle || g_pUseStyle->pStyle->idLoc==(UINT)-1
|
|
&& g_pUseStyle->pStyle->idStyle==0 ){
|
|
g_pUseStyle->pStyle = pStyle;
|
|
}
|
|
|
|
for( int i=0; i<g_pUseStyle->aItems->Count; i++ ){
|
|
TSegmentItem* pSeg = (TSegmentItem*)g_pUseStyle->aItems->Items[i];
|
|
for( int j=0; j<pSeg->aItems->Count; j++ ){
|
|
TTrackItem* pTrk = (TTrackItem*)pSeg->aItems->Items[j];
|
|
if( pTrk->pStyle->idLoc==(UINT)-1 && pTrk->pStyle->idStyle==0 ){
|
|
pTrk->pStyle = pStyle;
|
|
g_lstOpusStages[i]->aTracks[j]->iStyleLoc = pStyle->idLoc;
|
|
g_lstOpusStages[i]->aTracks[j]->iStyleId = pStyle->idStyle;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
f_CM_DeleteTempStyle( 0 );
|
|
DeleteStyleInfo( -1, 0 );
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveLocalStyleForm::NameChange(TObject *Sender)
|
|
{
|
|
TLineEdit* pEdit = ((TLineEdit*)Sender);
|
|
|
|
AnsiString strName = pEdit->Text.Trim();
|
|
string strTmp = GBToUTF8(strName.c_str());
|
|
|
|
if( strTmp.length()>pEdit->MaxLength ){
|
|
pEdit->OnChange = NULL;
|
|
pEdit->Text = pEdit->Text.SubString( 0, pEdit->Text.Length()-1 );
|
|
pEdit->SelStart = pEdit->Text.Length();
|
|
pEdit->OnChange = NameChange;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveLocalStyleForm::FormKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
|
|
{
|
|
switch( Key ){
|
|
case VK_RETURN:
|
|
if(m_btnOk->Enabled)
|
|
OkClick(NULL);
|
|
break;
|
|
|
|
case VK_ESCAPE:
|
|
ModalResult = mrCancel;
|
|
break;
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TSaveLocalStyleForm::FormCreate(TObject *Sender)
|
|
{
|
|
m_panelBk->Font->Size = g_szFont9;
|
|
m_btnCancel->FontSize = g_szFont9;
|
|
m_btnOk->FontSize = g_szFont9;
|
|
m_editName->SetTextFont(g_strTxtFontName, g_szFont9);
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|