Merge with develop

This commit is contained in:
kervala 2017-01-02 09:58:41 +01:00
parent 28561a7e94
commit db2581a789
26 changed files with 406 additions and 385 deletions

View file

@ -748,6 +748,17 @@ CRGBA CRGBA::stringToRGBA( const char *ptr )
return CRGBA( r,g,b,a ); return CRGBA( r,g,b,a );
} }
// we need at least 3 hexadecimal values to consider string is valid
if (sscanf(ptr, "#%02x%02x%02x%02x", &r, &g, &b, &a) >= 3)
{
clamp(r, 0, 255);
clamp(g, 0, 255);
clamp(b, 0, 255);
clamp(a, 0, 255);
return CRGBA(r, g, b, a);
}
} }
return NLMISC::CRGBA::White; return NLMISC::CRGBA::White;

View file

@ -452,7 +452,7 @@ void SelectionTerritoire::OnSaveAs()
CFileDialog sFile(false, _T("bank"), DefautPath+MainFileName, 0, szFilter, this); CFileDialog sFile(false, _T("bank"), DefautPath+MainFileName, 0, szFilter, this);
if (sFile.DoModal()==IDOK) if (sFile.DoModal()==IDOK)
{ {
Save (sFile.GetPathName(), tileBank); Save (tStrToUtf8(sFile.GetPathName()).c_str(), tileBank);
MainFileOk = 1; MainFileOk = 1;
CButton *button = (CButton*)GetDlgItem(IDC_ADD_TERRITOIRE); CButton *button = (CButton*)GetDlgItem(IDC_ADD_TERRITOIRE);
button->EnableWindow(true); button->EnableWindow(true);

View file

@ -240,7 +240,7 @@ int TileList::setTile128 (int tile, const std::string& name, NL3D::CTile::TBitma
uint Height; uint Height;
if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height)) if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height))
{ {
return (int)(MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), "Can't load bitmap.", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), _T("Can't load bitmap."), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
else else
{ {
@ -259,7 +259,7 @@ int TileList::setTile128 (int tile, const std::string& name, NL3D::CTile::TBitma
char sTmp[512]; char sTmp[512];
static const char* comp[]={"Red", "Green", "Blue", "Alpha", ""}; static const char* comp[]={"Red", "Green", "Blue", "Alpha", ""};
sprintf (sTmp, "%s\nPixel: %d (%s)", CTileSet::getErrorMessage (error), pixel, comp[composante]); sprintf (sTmp, "%s\nPixel: %d (%s)", CTileSet::getErrorMessage (error), pixel, comp[composante]);
return (int)(MessageBox (NULL, (std::string(sTmp)+"\nContinue ?").c_str(), "Can't add tile", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, (std::string(sTmp)+"\nContinue ?").c_str(), _T("Can't add tile"), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
else else
{ {
@ -288,7 +288,7 @@ int TileList::setTile128 (int tile, const std::string& name, NL3D::CTile::TBitma
// Error: bitmap not in the absolute path.. // Error: bitmap not in the absolute path..
char msg[512]; char msg[512];
sprintf (msg, "The bitmap %s is not in the absolute path %s.", name.c_str(), tileBank2.getAbsPath ().c_str()); sprintf (msg, "The bitmap %s is not in the absolute path %s.", name.c_str(), tileBank2.getAbsPath ().c_str());
return (int)(MessageBox (NULL, (std::string (msg)+"\nContinue ?").c_str(), "Load error", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, (std::string (msg)+"\nContinue ?").c_str(), _T("Load error"), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
return 1; return 1;
@ -305,7 +305,7 @@ int TileList::setTile256 (int tile, const std::string& name, NL3D::CTile::TBitma
uint Height; uint Height;
if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height)) if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height))
{ {
return (int)(MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), "Can't load bitmap.", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), _T("Can't load bitmap."), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
else else
{ {
@ -325,7 +325,7 @@ int TileList::setTile256 (int tile, const std::string& name, NL3D::CTile::TBitma
char sTmp[512]; char sTmp[512];
static const char* comp[]={"Red", "Green", "Blue", "Alpha", ""}; static const char* comp[]={"Red", "Green", "Blue", "Alpha", ""};
sprintf (sTmp, "%s\nPixel: %d (%s)", CTileSet::getErrorMessage (error), pixel, comp[composante]); sprintf (sTmp, "%s\nPixel: %d (%s)", CTileSet::getErrorMessage (error), pixel, comp[composante]);
return (int)(MessageBox (NULL, (std::string(sTmp)+"\nContinue ?").c_str(), "Can't add tile", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, (std::string(sTmp)+"\nContinue ?").c_str(), _T("Can't add tile"), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
else else
{ {
@ -351,7 +351,7 @@ int TileList::setTile256 (int tile, const std::string& name, NL3D::CTile::TBitma
// Error: bitmap not in the absolute path.. // Error: bitmap not in the absolute path..
char msg[512]; char msg[512];
sprintf (msg, "The bitmap %s is not in the absolute path %s.", name.c_str(), tileBank2.getAbsPath ().c_str()); sprintf (msg, "The bitmap %s is not in the absolute path %s.", name.c_str(), tileBank2.getAbsPath ().c_str());
return (int)(MessageBox (NULL, (std::string (msg)+"\nContinue ?").c_str(), "Load error", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, (std::string (msg)+"\nContinue ?").c_str(), _T("Load error"), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
return 1; return 1;
@ -371,7 +371,7 @@ int TileList::setTileTransition (int tile, const std::string& name, NL3D::CTile:
uint Height; uint Height;
if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height)) if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height))
{ {
return (int)(MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), "Can't load bitmap.", MB_YESNO|MB_ICONEXCLAMATION)==IDYES); return (int)(MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), _T("Can't load bitmap."), MB_YESNO|MB_ICONEXCLAMATION)==IDYES);
} }
else else
{ {
@ -390,7 +390,7 @@ int TileList::setTileTransition (int tile, const std::string& name, NL3D::CTile:
char sTmp[512]; char sTmp[512];
static const char* comp[]={"Red", "Green", "Blue", "Alpha", ""}; static const char* comp[]={"Red", "Green", "Blue", "Alpha", ""};
sprintf (sTmp, "%s\nPixel: %d (%s)", CTileSet::getErrorMessage (error), pixel, comp[composante]); sprintf (sTmp, "%s\nPixel: %d (%s)", CTileSet::getErrorMessage (error), pixel, comp[composante]);
return MessageBox (NULL, (std::string(sTmp)+"\nContinue ?").c_str(), "Can't add tile", MB_YESNO|MB_ICONEXCLAMATION)==IDYES; return MessageBox (NULL, (std::string(sTmp)+"\nContinue ?").c_str(), _T("Can't add tile"), MB_YESNO|MB_ICONEXCLAMATION)==IDYES;
} }
else else
{ {
@ -483,7 +483,7 @@ int TileList::setTileTransitionAlpha (int tile, const std::string& name, int rot
uint Height; uint Height;
if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height)) if (!loadPic(tileBank2.getAbsPath ()+troncated, tampon, Width, Height))
{ {
return MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), "Can't load bitmap.", MB_YESNO|MB_ICONEXCLAMATION)==IDYES; return MessageBox (NULL, ((tileBank2.getAbsPath ()+troncated)+"\nContinue ?").c_str(), _T("Can't load bitmap."), MB_YESNO|MB_ICONEXCLAMATION)==IDYES;
} }
else else
{ {
@ -521,7 +521,7 @@ int TileList::setTileTransitionAlpha (int tile, const std::string& name, int rot
else else
sprintf (sMsg, "%s\nIncompatible filled tile", CTileSet::getErrorMessage (error)); sprintf (sMsg, "%s\nIncompatible filled tile", CTileSet::getErrorMessage (error));
return MessageBox (NULL, (std::string(sMsg)+"\nContinue ?").c_str(), "Can't add tile", MB_YESNO|MB_ICONEXCLAMATION)==IDYES; return MessageBox (NULL, (std::string(sMsg)+"\nContinue ?").c_str(), _T("Can't add tile"), MB_YESNO|MB_ICONEXCLAMATION)==IDYES;
} }
else else
{ {
@ -674,7 +674,7 @@ bool TileInfo::Load (int index, std::vector<NLMISC::CBGRA>* Alpha)
if (!_LoadBitmap(tileBank2.getAbsPath() + getRelativeFileName (CTile::diffuse, index), &BmpInfo, Bits, Alpha, 0)) if (!_LoadBitmap(tileBank2.getAbsPath() + getRelativeFileName (CTile::diffuse, index), &BmpInfo, Bits, Alpha, 0))
{ {
bRes=false; bRes=false;
MessageBox (NULL, (tileBank2.getAbsPath() + getRelativeFileName (CTile::diffuse, index)).c_str(), "Can't load file", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(tileBank2.getAbsPath() + getRelativeFileName (CTile::diffuse, index)), _T("Can't load file"), MB_OK|MB_ICONEXCLAMATION);
} }
else else
loaded=1; loaded=1;
@ -684,7 +684,7 @@ bool TileInfo::Load (int index, std::vector<NLMISC::CBGRA>* Alpha)
if (!_LoadBitmap(tileBank2.getAbsPath() + getRelativeFileName (CTile::additive, index), &nightBmpInfo, nightBits, Alpha, 0)) if (!_LoadBitmap(tileBank2.getAbsPath() + getRelativeFileName (CTile::additive, index), &nightBmpInfo, nightBits, Alpha, 0))
{ {
bRes=false; bRes=false;
MessageBox (NULL, (tileBank2.getAbsPath() + getRelativeFileName (CTile::additive, index)).c_str(), "Can't load file", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(tileBank2.getAbsPath() + getRelativeFileName (CTile::additive, index)), _T("Can't load file"), MB_OK|MB_ICONEXCLAMATION);
} }
else else
nightLoaded=1; nightLoaded=1;
@ -695,7 +695,7 @@ bool TileInfo::Load (int index, std::vector<NLMISC::CBGRA>* Alpha)
tileBank2.getTile (index)->getRotAlpha ())) tileBank2.getTile (index)->getRotAlpha ()))
{ {
bRes=false; bRes=false;
MessageBox (NULL, (tileBank2.getAbsPath() + getRelativeFileName (CTile::alpha, index)).c_str(), "Can't load file", MB_OK|MB_ICONEXCLAMATION); MessageBox (NULL, utf8ToTStr(tileBank2.getAbsPath() + getRelativeFileName (CTile::alpha, index)), _T("Can't load file"), MB_OK|MB_ICONEXCLAMATION);
} }
else else
alphaLoaded=1; alphaLoaded=1;

View file

@ -80,7 +80,7 @@ const CString & CConditionNode::getNodeAsString() const
m_sNodeString = m_sConditionName; m_sNodeString = m_sConditionName;
else // comparison else // comparison
{ {
m_sNodeString.Format("%s %s %g",LPCTSTR(m_sVariableName),LPCTSTR(m_sOperator), m_dComparand ); m_sNodeString.Format(_T("%s %s %g"),LPCTSTR(m_sVariableName),LPCTSTR(m_sOperator), m_dComparand );
} }
return m_sNodeString; return m_sNodeString;
@ -260,8 +260,8 @@ void cConditionNodeToCLogicConditionNode(CConditionNode * conditionNode, CLogicC
{ {
logicConditionNode->LogicBlock.Type = CLogicConditionLogicBlock::COMPARISON; logicConditionNode->LogicBlock.Type = CLogicConditionLogicBlock::COMPARISON;
logicConditionNode->LogicBlock.ComparisonBlock.VariableName = string( (LPCSTR)conditionNode->m_sVariableName ); logicConditionNode->LogicBlock.ComparisonBlock.VariableName = tStrToUtf8(conditionNode->m_sVariableName);
logicConditionNode->LogicBlock.ComparisonBlock.Operator = string( (LPCSTR)conditionNode->m_sOperator ); logicConditionNode->LogicBlock.ComparisonBlock.Operator = tStrToUtf8(conditionNode->m_sOperator);
logicConditionNode->LogicBlock.ComparisonBlock.Comparand = (sint64)conditionNode->m_dComparand; logicConditionNode->LogicBlock.ComparisonBlock.Comparand = (sint64)conditionNode->m_dComparand;
} }
break; break;
@ -270,7 +270,7 @@ void cConditionNodeToCLogicConditionNode(CConditionNode * conditionNode, CLogicC
{ {
logicConditionNode->LogicBlock.Type = CLogicConditionLogicBlock::SUB_CONDITION; logicConditionNode->LogicBlock.Type = CLogicConditionLogicBlock::SUB_CONDITION;
logicConditionNode->LogicBlock.SubCondition = string( (LPCSTR)conditionNode->m_sConditionName ); logicConditionNode->LogicBlock.SubCondition = tStrToUtf8(conditionNode->m_sConditionName);
} }
break; break;
} }
@ -298,7 +298,7 @@ void cConditionNodeToCLogicConditionNode(CConditionNode * conditionNode, CLogicC
void cConditionToCLogicCondition( CCondition& condition, CLogicCondition& logicCondition ) void cConditionToCLogicCondition( CCondition& condition, CLogicCondition& logicCondition )
{ {
// condition name // condition name
logicCondition.setName( string( (LPCSTR)condition.m_sName ) ); logicCondition.setName(tStrToUtf8(condition.m_sName));
// nodes // nodes
POSITION pos; POSITION pos;

View file

@ -296,7 +296,7 @@ void CConditionPage::OnButtonAddCondition()
if (m_sConditionName.IsEmpty()) if (m_sConditionName.IsEmpty())
{ {
AfxMessageBox("Condition Name cannot be empty, please choose a name"); AfxMessageBox(_T("Condition Name cannot be empty, please choose a name"));
return; return;
} }
@ -326,7 +326,7 @@ void CConditionPage::OnButtonAddNode()
// check that data are valid // check that data are valid
if ( checkNodeValidity() == FALSE) if ( checkNodeValidity() == FALSE)
{ {
AfxMessageBox("Invalid node datas - cannot add node"); AfxMessageBox(_T("Invalid node datas - cannot add node"));
return; return;
} }
@ -426,7 +426,7 @@ void CConditionPage::OnButtonCondApply()
if (m_sConditionName.IsEmpty()) if (m_sConditionName.IsEmpty())
{ {
AfxMessageBox("Condition Name cannot be empty, please choose a name"); AfxMessageBox(_T("Condition Name cannot be empty, please choose a name"));
return; return;
} }
@ -442,7 +442,7 @@ void CConditionPage::OnButtonCondApply()
} }
else else
{ {
AfxMessageBox( "No condition selected ! Choose a condition first" ); AfxMessageBox(_T("No condition selected ! Choose a condition first"));
} }
} }
@ -466,7 +466,7 @@ void CConditionPage::OnButtonDeleteCondition()
} }
else else
{ {
AfxMessageBox( "No condition selected ! Choose a condition first" ); AfxMessageBox(_T("No condition selected ! Choose a condition first"));
} }
} }
@ -477,7 +477,7 @@ void CConditionPage::OnButtonNodeApply()
// check that data are valid // check that data are valid
if ( checkNodeValidity() == FALSE) if ( checkNodeValidity() == FALSE)
{ {
AfxMessageBox("Invalid node datas - cancel node modification"); AfxMessageBox(_T("Invalid node datas - cancel node modification"));
return; return;
} }
@ -517,7 +517,7 @@ void CConditionPage::OnButtonNodeApply()
} }
else else
{ {
AfxMessageBox( "No condition node selected ! Choose a node first" ); AfxMessageBox(_T("No condition node selected ! Choose a node first"));
} }
} }
@ -553,6 +553,6 @@ void CConditionPage::OnButtonDeleteNode()
} }
else else
{ {
AfxMessageBox( "No condition node selected ! Choose a node first" ); AfxMessageBox(_T("No condition node selected ! Choose a node first"));
} }
} }

View file

@ -246,7 +246,7 @@ void CConditionsView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
TPositionList heap; TPositionList heap;
HTREEITEM hItem = m_tree.InsertItem( "Conditions",0,0); HTREEITEM hItem = m_tree.InsertItem(_T("Conditions"), 0, 0);
// get the states map // get the states map
CCondition *pCondition; CCondition *pCondition;
@ -645,7 +645,7 @@ void CConditionsView::OnMoveAsChild()
} }
else else
{ {
AfxMessageBox("Error : root condition not found"); AfxMessageBox(_T("Error : root condition not found"));
delete pDragNode; delete pDragNode;
} }
} }
@ -722,7 +722,7 @@ void CConditionsView::OnCopyAsChild()
} }
else else
{ {
AfxMessageBox("Error : root condition not found"); AfxMessageBox(_T("Error : root condition not found"));
delete pNewNode; delete pNewNode;
} }
} }

View file

@ -45,7 +45,7 @@ CCounter::~CCounter()
void cCounterToCLogicCounter( CCounter& counter, CLogicCounter& logicCounter ) void cCounterToCLogicCounter( CCounter& counter, CLogicCounter& logicCounter )
{ {
// counter name // counter name
logicCounter.setName( string((LPCSTR)counter.m_sName) ); logicCounter.setName(tStrToUtf8(counter.m_sName));
// running mode // running mode
if( counter.m_sMode == "Shuttle" ) if( counter.m_sMode == "Shuttle" )

View file

@ -194,7 +194,7 @@ void CCounterPage::OnButtonCounterRemove()
} }
else else
{ {
AfxMessageBox( "No counter selected ! Choose a counter first"); AfxMessageBox(_T("No counter selected ! Choose a counter first"));
} }
} }
@ -237,7 +237,7 @@ void CCounterPage::OnButtonCounterApply()
} }
else else
{ {
AfxMessageBox( "No counter selected ! Choose a counter first"); AfxMessageBox(_T("No counter selected ! Choose a counter first"));
} }
} }

View file

@ -76,7 +76,7 @@ void CEditorFormView::OnInitialUpdate()
CRect rectPlaceholder; CRect rectPlaceholder;
GetWindowRect(rectPlaceholder); GetWindowRect(rectPlaceholder);
m_pPropertySheet = new CEditorPropertySheet("",this); m_pPropertySheet = new CEditorPropertySheet(_T(""),this);
if (!m_pPropertySheet->Create(this,WS_CHILD | WS_VISIBLE, 0) ) if (!m_pPropertySheet->Create(this,WS_CHILD | WS_VISIBLE, 0) )
{ {

View file

@ -114,7 +114,7 @@ void CMainFrame::OnClose()
// load // load
// //
//----------------------------------------------- //-----------------------------------------------
void CMainFrame::load( const char * fileName ) void CMainFrame::load( const TCHAR * fileName )
{ {
// child frame // child frame
CChildFrame *pChild = (CChildFrame *) GetActiveFrame(); CChildFrame *pChild = (CChildFrame *) GetActiveFrame();

View file

@ -36,7 +36,7 @@ public:
/** /**
* load a logic state machine * load a logic state machine
*/ */
void load( const char * fileName ); void load( const TCHAR *fileName );
#ifdef _DEBUG #ifdef _DEBUG
virtual void AssertValid() const; virtual void AssertValid() const;

View file

@ -70,7 +70,7 @@ bool operator==( const CEvent &ev1, const CEvent &ev2)
void cEventToCLogicEvent( CEvent& event, CLogicEvent& logicEvent ) void cEventToCLogicEvent( CEvent& event, CLogicEvent& logicEvent )
{ {
/// condition name /// condition name
logicEvent.ConditionName = string( (LPCSTR)event.m_sConditionName ); logicEvent.ConditionName = tStrToUtf8(event.m_sConditionName);
/// event action /// event action
logicEvent.EventAction.IsStateChange = !event.m_bActionIsMessage; logicEvent.EventAction.IsStateChange = !event.m_bActionIsMessage;
@ -78,18 +78,18 @@ void cEventToCLogicEvent( CEvent& event, CLogicEvent& logicEvent )
if( logicEvent.EventAction.IsStateChange ) if( logicEvent.EventAction.IsStateChange )
{ {
/// state name for state change /// state name for state change
logicEvent.EventAction.StateChange = string( (LPCSTR)event.m_sStateChange ); logicEvent.EventAction.StateChange = tStrToUtf8(event.m_sStateChange);
} }
else else
{ {
/// message destination /// message destination
logicEvent.EventAction.EventMessage.Destination = string( (LPCSTR)event.m_sMessageDestination ); logicEvent.EventAction.EventMessage.Destination = tStrToUtf8(event.m_sMessageDestination);
/// message id /// message id
logicEvent.EventAction.EventMessage.MessageId = "LOGIC"; //string( (LPCSTR)event.m_sMessageID ); //TEMP!!! logicEvent.EventAction.EventMessage.MessageId = "LOGIC"; //string( (LPCSTR)event.m_sMessageID ); //TEMP!!!
/// message arguments /// message arguments
logicEvent.EventAction.EventMessage.Arguments = string( (LPCSTR)event.m_sArguments ); logicEvent.EventAction.EventMessage.Arguments = tStrToUtf8(event.m_sArguments);
} }
} // cEventToCLogicEvent // } // cEventToCLogicEvent //
@ -176,7 +176,7 @@ BOOL CState::removeEvent( CEvent *event)
void cStateToCLogicState( CState& state, CLogicState& logicState ) void cStateToCLogicState( CState& state, CLogicState& logicState )
{ {
/// state name /// state name
logicState.setName( string( (LPCSTR)state.m_sName ) ); logicState.setName(tStrToUtf8(state.m_sName));
POSITION pos; POSITION pos;
for( pos = state.m_evEvents.GetHeadPosition(); pos != NULL; ) for( pos = state.m_evEvents.GetHeadPosition(); pos != NULL; )

View file

@ -251,7 +251,7 @@ void CStatePage::OnButtonAddState()
if (m_sStateName.IsEmpty()) if (m_sStateName.IsEmpty())
{ {
AfxMessageBox("State name cannot be empty, please enter a valid name"); AfxMessageBox(_T("State name cannot be empty, please enter a valid name"));
return; return;
} }
@ -366,7 +366,7 @@ void CStatePage::OnButtonStateRemove()
// get selected state // get selected state
if (m_pSelectedState != NULL) if (m_pSelectedState != NULL)
{ {
if (AfxMessageBox("Your are about to permanently delete this state.\nDoing so will invalidate all references to this state.\nDo you want to continue anyway ?" ,MB_OKCANCEL|MB_DEFBUTTON2) == IDOK) if (AfxMessageBox(_T("Your are about to permanently delete this state.\nDoing so will invalidate all references to this state.\nDo you want to continue anyway ?") ,MB_OKCANCEL|MB_DEFBUTTON2) == IDOK)
{ {
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CChildFrame *pChild = (CChildFrame *) pFrame->GetActiveFrame(); CChildFrame *pChild = (CChildFrame *) pFrame->GetActiveFrame();
@ -384,7 +384,7 @@ void CStatePage::OnButtonStateRemove()
} }
else else
{ {
AfxMessageBox( "No state selected ! Choose a state first" ); AfxMessageBox(_T("No state selected ! Choose a state first"));
} }
} }
@ -399,11 +399,11 @@ void CStatePage::OnButtonStateApply()
{ {
if (m_sStateName.IsEmpty()) if (m_sStateName.IsEmpty())
{ {
AfxMessageBox("State name cannot be empty, please enter a valid name"); AfxMessageBox(_T("State name cannot be empty, please enter a valid name"));
return; return;
} }
if (AfxMessageBox("Your are about to change this state name.\nDoing so will change all occurence of the old name to the new one.\nDo you want to continue anyway ?" ,MB_OKCANCEL|MB_DEFBUTTON2) == IDOK) if (AfxMessageBox(_T("Your are about to change this state name.\nDoing so will change all occurence of the old name to the new one.\nDo you want to continue anyway ?") ,MB_OKCANCEL|MB_DEFBUTTON2) == IDOK)
{ {
CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd; CMainFrame *pFrame = (CMainFrame*)AfxGetApp()->m_pMainWnd;
CChildFrame *pChild = (CChildFrame *) pFrame->GetActiveFrame(); CChildFrame *pChild = (CChildFrame *) pFrame->GetActiveFrame();
@ -418,14 +418,14 @@ void CStatePage::OnButtonStateApply()
} }
else else
{ {
AfxMessageBox( "No state selected ! Choose a state first" ); AfxMessageBox(_T("No state selected ! Choose a state first"));
} }
} }
void CStatePage::OnButtonEventApply() void CStatePage::OnButtonEventApply()
{ {
// TODO: Add your control notification handler code here // TODO: Add your control notification handler code here
AfxMessageBox( "Features not implemented" ); AfxMessageBox(_T("Features not implemented"));
} }
void CStatePage::OnButtonEventRemove() void CStatePage::OnButtonEventRemove()
@ -447,6 +447,6 @@ void CStatePage::OnButtonEventRemove()
} }
else else
{ {
AfxMessageBox( "No event selected ! Choose a event first" ); AfxMessageBox(_T("No event selected ! Choose a event first"));
} }
} }

View file

@ -131,7 +131,7 @@ void CStatesView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
m_tree.DeleteAllItems(); m_tree.DeleteAllItems();
m_mapItemToEvent.RemoveAll(); m_mapItemToEvent.RemoveAll();
m_tree.InsertItem( "States"); m_tree.InsertItem(_T("States"));
// get the states map // get the states map
CState *pState; CState *pState;

View file

@ -145,7 +145,7 @@ void CVariablePage::OnButtonVarDelete()
} }
else else
{ {
AfxMessageBox( "No variable selected ! Choose a variable first" ); AfxMessageBox(_T("No variable selected ! Choose a variable first"));
} }
} }
@ -178,7 +178,7 @@ void CVariablePage::OnButtonVarApply()
} }
else else
{ {
AfxMessageBox( "No variable selected ! Choose a variable first" ); AfxMessageBox(_T("No variable selected ! Choose a variable first"));
} }
} }

View file

@ -321,7 +321,7 @@ void CLogicEditor::go()
// loadFile // loadFile
// //
//--------------------------------------------- //---------------------------------------------
void CLogicEditor::loadFile( const char * fileName ) void CLogicEditor::loadFile( const TCHAR * fileName )
{ {
AFX_MANAGE_STATE(AfxGetStaticModuleState()); AFX_MANAGE_STATE(AfxGetStaticModuleState());
@ -337,7 +337,7 @@ void CLogicEditor::loadFile( const char * fileName )
// create a default file // create a default file
// //
//--------------------------------------------- //---------------------------------------------
void CLogicEditor::createDefaultFile( const char * fileName ) void CLogicEditor::createDefaultFile( const TCHAR * fileName )
{ {
// create an empty doc // create an empty doc
CLogic_editorDoc * pDoc = CLogic_editorDoc::getNewDoc(); CLogic_editorDoc * pDoc = CLogic_editorDoc::getNewDoc();
@ -402,7 +402,7 @@ ILogicEditor * ILogicEditor::getInterface( int version )
// Check version number // Check version number
if( version != LOGIC_EDITOR_VERSION ) if( version != LOGIC_EDITOR_VERSION )
{ {
MessageBox( NULL, "Bad version of logic_editor.dll.", "Logic Editor", MB_ICONEXCLAMATION|MB_OK); MessageBox( NULL, _T("Bad version of logic_editor.dll."), _T("Logic Editor"), MB_ICONEXCLAMATION|MB_OK);
return NULL; return NULL;
} }
else else

View file

@ -88,12 +88,12 @@ public:
/** /**
* load file * load file
*/ */
virtual void loadFile( const char * fileName ); virtual void loadFile( const TCHAR * fileName );
/** /**
* create a default file * create a default file
*/ */
virtual void createDefaultFile( const char * filename = "logic.logic "); virtual void createDefaultFile( const TCHAR * filename = _T("logic.logic "));
/** /**

View file

@ -54,10 +54,10 @@ public:
virtual void*getMainFrame ()=0; virtual void*getMainFrame ()=0;
// load a logic file // load a logic file
virtual void loadFile( const char * fileName ) = 0; virtual void loadFile( const TCHAR * fileName ) = 0;
// create a default file // create a default file
virtual void createDefaultFile( const char * filename = "logic.logic ") = 0; virtual void createDefaultFile( const TCHAR * filename = _T("logic.logic ")) = 0;
// Get instance // Get instance
static LOGIC_EDITOR_EXPORT ILogicEditor * getInterface( int version = LOGIC_EDITOR_VERSION ); static LOGIC_EDITOR_EXPORT ILogicEditor * getInterface( int version = LOGIC_EDITOR_VERSION );

View file

@ -92,14 +92,14 @@ BOOL CBranch_patcherDlg::OnInitDialog()
SetIcon(m_hIcon, TRUE); // Set big icon SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon SetIcon(m_hIcon, FALSE); // Set small icon
// Extra initialization here // Extra initialization here
RECT cltRect; RECT cltRect;
GetClientRect( &cltRect ), GetClientRect(&cltRect),
m_Display = new CRichEditCtrl(); m_Display = new CRichEditCtrl();
m_Display->Create( WS_CHILD|WS_VISIBLE|WS_BORDER|WS_HSCROLL|WS_VSCROLL|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_MULTILINE, m_Display->Create(WS_CHILD | WS_VISIBLE | WS_BORDER | WS_HSCROLL | WS_VSCROLL | ES_AUTOHSCROLL | ES_AUTOVSCROLL | ES_MULTILINE,
CRect( 20, 180, cltRect.right-20, cltRect.bottom-20 ), this, 1 ); CRect(20, 180, cltRect.right - 20, cltRect.bottom - 20), this, 1);
// Initialize directories // Initialize directories
loadConfiguration(); loadConfiguration();
@ -109,8 +109,8 @@ BOOL CBranch_patcherDlg::OnInitDialog()
EnteringTokens = false; EnteringTokens = false;
m_SrcDirLabel = "Source Dir"; m_SrcDirLabel = "Source Dir";
m_TargetDirLabel = "Target Dir"; m_TargetDirLabel = "Target Dir";
UpdateData( false ); UpdateData(false);
((CButton*)GetDlgItem( IDC_DoPatch ))->EnableWindow( FALSE ); ((CButton*)GetDlgItem(IDC_DoPatch))->EnableWindow(FALSE);
return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control
} }
@ -119,13 +119,13 @@ BOOL CBranch_patcherDlg::OnInitDialog()
// to draw the icon. For MFC applications using the document/view model, // to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework. // this is automatically done for you by the framework.
void CBranch_patcherDlg::OnPaint() void CBranch_patcherDlg::OnPaint()
{ {
if (IsIconic()) if (IsIconic())
{ {
CPaintDC dc(this); // device context for painting CPaintDC dc(this); // device context for painting
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0); SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);
// Center icon in client rectangle // Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON); int cxIcon = GetSystemMetrics(SM_CXICON);
@ -146,38 +146,38 @@ void CBranch_patcherDlg::OnPaint()
HCURSOR CBranch_patcherDlg::OnQueryDragIcon() HCURSOR CBranch_patcherDlg::OnQueryDragIcon()
{ {
return (HCURSOR) m_hIcon; return (HCURSOR)m_hIcon;
} }
void CBranch_patcherDlg::setSrcDirectory( const CString& s ) void CBranch_patcherDlg::setSrcDirectory(const CString& s)
{ {
m_SrcDir = s; m_SrcDir = s;
UpdateData( false ); UpdateData(false);
} }
void CBranch_patcherDlg::setDestDirectory( const CString& s ) void CBranch_patcherDlg::setDestDirectory(const CString& s)
{ {
m_DestDir = s; m_DestDir = s;
UpdateData( false ); UpdateData(false);
} }
void CBranch_patcherDlg::OnButtonSetSrcDir() void CBranch_patcherDlg::OnButtonSetSrcDir()
{ {
DirDialog.m_strTitle = "Please choose the SOURCE directory"; DirDialog.m_strTitle = "Please choose the SOURCE directory";
if ( DirDialog.DoBrowse() == TRUE ) if (DirDialog.DoBrowse() == TRUE)
{ {
setSrcDirectory( DirDialog.m_strPath ); setSrcDirectory(DirDialog.m_strPath);
guessDestDirectory(); guessDestDirectory();
} }
} }
void CBranch_patcherDlg::OnButtonSetDestDir() void CBranch_patcherDlg::OnButtonSetDestDir()
{ {
DirDialog.m_strTitle = "Please choose the TARGET directory"; DirDialog.m_strTitle = "Please choose the TARGET directory";
if ( DirDialog.DoBrowse() == TRUE ) if (DirDialog.DoBrowse() == TRUE)
{ {
setDestDirectory( DirDialog.m_strPath ); setDestDirectory(DirDialog.m_strPath);
} }
} }
@ -198,80 +198,86 @@ CDirDialog::~CDirDialog()
} }
int CDirDialog::DoBrowse () int CDirDialog::DoBrowse()
{///////////////////////////////////////// {/////////////////////////////////////////
LPMALLOC pMalloc; LPMALLOC pMalloc;
if (SHGetMalloc (&pMalloc)!= NOERROR) if (SHGetMalloc(&pMalloc) != NOERROR)
{ {
return 0; return 0;
} }
BROWSEINFO bInfo; BROWSEINFO bInfo;
LPITEMIDLIST pidl; LPITEMIDLIST pidl;
ZeroMemory ( (PVOID) &bInfo,sizeof (BROWSEINFO)); ZeroMemory((PVOID)&bInfo, sizeof(BROWSEINFO));
if (!m_strInitDir.IsEmpty ()) if (!m_strInitDir.IsEmpty())
{ {
OLECHAR olePath[MAX_PATH]; OLECHAR olePath[MAX_PATH];
ULONG chEaten; ULONG chEaten;
ULONG dwAttributes; ULONG dwAttributes;
HRESULT hr; HRESULT hr;
LPSHELLFOLDER pDesktopFolder; LPSHELLFOLDER pDesktopFolder;
// // Get a pointer to the Desktop's IShellFolder interface. // // // Get a pointer to the Desktop's IShellFolder interface. //
if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder))) if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
{ {
#ifndef _UNICODE
//
// IShellFolder::ParseDisplayName requires the file name be in Unicode.
//
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, m_strInitDir.GetBuffer(MAX_PATH), -1, olePath, MAX_PATH);
// m_strInitDir.ReleaseBuffer(-1);
// IShellFolder::ParseDisplayName requires the file name be in Unicode. #else
// wcscpy(olePath, (LPCTSTR)m_strInitDir);
MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, m_strInitDir.GetBuffer (MAX_PATH), -1, #endif
olePath, MAX_PATH); //
// Convert the path to an ITEMIDLIST.
//
hr = pDesktopFolder->ParseDisplayName(NULL,
NULL,
olePath,
&chEaten,
&pidl,
&dwAttributes);
m_strInitDir.ReleaseBuffer (-1); if (FAILED(hr))
// {
// Convert the path to an ITEMIDLIST. pMalloc->Free(pidl);
// pMalloc->Release();
hr = pDesktopFolder->ParseDisplayName(NULL, return 0;
NULL, }
olePath,
&chEaten,
&pidl,
&dwAttributes);
if (FAILED(hr))
{
pMalloc ->Free (pidl);
pMalloc ->Release ();
return 0;
}
bInfo.pidlRoot = pidl;
}
}
bInfo.hwndOwner = NULL;
bInfo.pszDisplayName = m_strPath.GetBuffer (MAX_PATH);
bInfo.lpszTitle = (m_strTitle.IsEmpty()) ? "Open":m_strTitle;
bInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
bInfo.pidlRoot = pidl;
if ((pidl = ::SHBrowseForFolder (&bInfo)) == NULL) }
{ }
return 0;
}
m_strPath.ReleaseBuffer ();
m_iImageIndex = bInfo.iImage;
if (::SHGetPathFromIDList(pidl,m_strPath.GetBuffer (MAX_PATH)) == FALSE) bInfo.hwndOwner = NULL;
{ bInfo.pszDisplayName = m_strPath.GetBuffer(MAX_PATH);
pMalloc ->Free (pidl); bInfo.lpszTitle = (m_strTitle.IsEmpty()) ? "Open" : m_strTitle;
pMalloc ->Release (); bInfo.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
return 0;
}
m_strPath.ReleaseBuffer (); if ((pidl = ::SHBrowseForFolder(&bInfo)) == NULL)
{
return 0;
}
pMalloc ->Free (pidl); m_strPath.ReleaseBuffer();
pMalloc ->Release (); m_iImageIndex = bInfo.iImage;
return 1;
if (::SHGetPathFromIDList(pidl, m_strPath.GetBuffer(MAX_PATH)) == FALSE)
{
pMalloc->Free(pidl);
pMalloc->Release();
return 0;
}
m_strPath.ReleaseBuffer();
pMalloc->Free(pidl);
pMalloc->Release();
return 1;
} }
@ -280,87 +286,87 @@ int CDirDialog::DoBrowse ()
*/ */
BOOL SendTextToClipboard(CString source) BOOL SendTextToClipboard(CString source)
{ {
// Return value is TRUE if the text was sent // Return value is TRUE if the text was sent
// Return value is FALSE if something went wrong // Return value is FALSE if something went wrong
if(OpenClipboard(NULL)) if (OpenClipboard(NULL))
{ {
HGLOBAL clipbuffer; HGLOBAL clipbuffer;
char* buffer; char* buffer;
EmptyClipboard(); // Empty whatever's already there EmptyClipboard(); // Empty whatever's already there
clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength()+1); clipbuffer = GlobalAlloc(GMEM_DDESHARE, source.GetLength() + 1);
buffer = (char*)GlobalLock(clipbuffer); buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, LPCSTR(source)); strcpy(buffer, LPCSTR(source));
GlobalUnlock(clipbuffer); GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT, clipbuffer); // Send the data SetClipboardData(CF_TEXT, clipbuffer); // Send the data
CloseClipboard(); // VERY IMPORTANT CloseClipboard(); // VERY IMPORTANT
return TRUE; return TRUE;
} }
return FALSE; return FALSE;
} }
void CBranch_patcherDlg::displayMessage( const CString& msg, bool insertAtTop ) void CBranch_patcherDlg::displayMessage(const CString& msg, bool insertAtTop)
{ {
if ( insertAtTop ) if (insertAtTop)
m_Display->SetSel( 0, 0 ); m_Display->SetSel(0, 0);
else else
m_Display->SetSel( 0, -1 ); m_Display->SetSel(0, -1);
m_Display->ReplaceSel( msg ); m_Display->ReplaceSel(msg);
SaveDiff = false; SaveDiff = false;
} }
void CBranch_patcherDlg::OnButtonPatch() void CBranch_patcherDlg::OnButtonPatch()
{ {
UpdateData( true ); UpdateData(true);
CString diffCmdLine; CString diffCmdLine;
diffCmdLine.Format( "cvs.exe diff -c > %s 2> %s", TEMP_DIFF_FILE, DIFF_ERRORS ); // needs a valid cvs login before! and cvs.exe in the path diffCmdLine.Format(_T("cvs.exe diff -c > %s 2> %s"), TEMP_DIFF_FILE, DIFF_ERRORS); // needs a valid cvs login before! and cvs.exe in the path
CString text; CString text;
text.Format( "Get diff from directory %s?\n\nCommand (choose No to copy it into the clipboard):\n%s", m_SrcDir, diffCmdLine ); text.Format(_T("Get diff from directory %s?\n\nCommand (choose No to copy it into the clipboard):\n%s"), m_SrcDir, diffCmdLine);
int result; int result;
if ( (result = ::MessageBox( m_hWnd, text, "Confirmation", MB_YESNOCANCEL | MB_ICONQUESTION )) == IDYES ) if ((result = ::MessageBox(m_hWnd, text, "Confirmation", MB_YESNOCANCEL | MB_ICONQUESTION)) == IDYES)
{ {
if ( _chdir( m_SrcDir ) == 0 ) if (_chdir(m_SrcDir) == 0)
{ {
system( diffCmdLine ); system(diffCmdLine);
displayFile( TEMP_DIFF_FILE ); displayFile(TEMP_DIFF_FILE);
SaveDiff = true; SaveDiff = true;
colorizeDiff(); colorizeDiff();
m_Display->LineScroll( 0 ); m_Display->LineScroll(0);
((CButton*)GetDlgItem( IDC_DoPatch ))->EnableWindow( TRUE ); ((CButton*)GetDlgItem(IDC_DoPatch))->EnableWindow(TRUE);
if ( (m_Display->GetLineCount() == 0) || if ((m_Display->GetLineCount() == 0) ||
(m_Display->GetLineCount() == 1 && m_Display->LineLength(0)<2) ) (m_Display->GetLineCount() == 1 && m_Display->LineLength(0) < 2))
{ {
displayFile( DIFF_ERRORS ); displayFile(DIFF_ERRORS);
displayMessage( "Diff is empty.\r\nIf this is not the expected result:\r\n- check if the source directory is part of a CVS tree\r\n- check if cvs.exe is in your PATH\r\n- check if you are logged to the cvs server with 'cvs login' (set your home cvs directory in the HOME environment variable if needed)\r\n- check if C:\\ has enough free space and access rights to write a file.\n\nHere is the log:\n\n", true ); displayMessage("Diff is empty.\r\nIf this is not the expected result:\r\n- check if the source directory is part of a CVS tree\r\n- check if cvs.exe is in your PATH\r\n- check if you are logged to the cvs server with 'cvs login' (set your home cvs directory in the HOME environment variable if needed)\r\n- check if C:\\ has enough free space and access rights to write a file.\n\nHere is the log:\n\n", true);
} }
else else
{ {
m_Filename = TEMP_DIFF_FILE + ":"; m_Filename = TEMP_DIFF_FILE + ":";
UpdateData( false ); UpdateData(false);
} }
} }
else else
{ {
displayMessage( "Source directory not found" ); displayMessage("Source directory not found");
} }
} }
else if ( result == IDNO ) else if (result == IDNO)
{ {
SendTextToClipboard( diffCmdLine ); SendTextToClipboard(diffCmdLine);
} }
} }
static unsigned long CALLBACK MyStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) static unsigned long CALLBACK MyStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{ {
CFile* pFile = (CFile*) dwCookie; CFile* pFile = (CFile*)dwCookie;
*pcb = pFile->Read(pbBuff, cb); *pcb = pFile->Read(pbBuff, cb);
return 0; return 0;
} }
@ -368,144 +374,144 @@ static unsigned long CALLBACK MyStreamInCallback(DWORD_PTR dwCookie, LPBYTE pbBu
static unsigned long CALLBACK MyStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb) static unsigned long CALLBACK MyStreamOutCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, LONG *pcb)
{ {
CFile* pFile = (CFile*) dwCookie; CFile* pFile = (CFile*)dwCookie;
pFile->Write(pbBuff, cb); pFile->Write(pbBuff, cb);
*pcb = cb; *pcb = cb;
return 0; return 0;
} }
void CBranch_patcherDlg::displayFile( const CString& filename ) void CBranch_patcherDlg::displayFile(const CString& filename)
{ {
CFile cFile( filename, CFile::modeRead ); CFile cFile(filename, CFile::modeRead);
EDITSTREAM es; EDITSTREAM es;
es.dwCookie = (DWORD_PTR) &cFile; es.dwCookie = (DWORD_PTR)&cFile;
es.pfnCallback = MyStreamInCallback; es.pfnCallback = MyStreamInCallback;
m_Display->StreamIn( SF_TEXT, es ); m_Display->StreamIn(SF_TEXT, es);
} }
void CBranch_patcherDlg::saveFile( const CString& filename ) void CBranch_patcherDlg::saveFile(const CString& filename)
{ {
CFile cFile( filename, CFile::modeCreate | CFile::modeWrite ); CFile cFile(filename, CFile::modeCreate | CFile::modeWrite);
EDITSTREAM es; EDITSTREAM es;
es.dwCookie = (DWORD_PTR) &cFile; es.dwCookie = (DWORD_PTR)&cFile;
es.pfnCallback = MyStreamOutCallback; es.pfnCallback = MyStreamOutCallback;
m_Display->StreamOut( SF_TEXT, es ); m_Display->StreamOut(SF_TEXT, es);
} }
void CBranch_patcherDlg::colorizeDiff() void CBranch_patcherDlg::colorizeDiff()
{ {
CHARFORMAT blue; CHARFORMAT blue;
ZeroMemory( &blue, sizeof(blue) ); ZeroMemory(&blue, sizeof(blue));
blue.cbSize = sizeof(blue); blue.cbSize = sizeof(blue);
blue.dwMask = CFM_COLOR; blue.dwMask = CFM_COLOR;
blue.crTextColor = RGB(0,0,0xFF); blue.crTextColor = RGB(0, 0, 0xFF);
CHARFORMAT red; CHARFORMAT red;
ZeroMemory( &red, sizeof(red) ); ZeroMemory(&red, sizeof(red));
red.cbSize = sizeof(red); red.cbSize = sizeof(red);
red.dwMask = CFM_COLOR; red.dwMask = CFM_COLOR;
red.crTextColor = RGB(0xFF,0,0); red.crTextColor = RGB(0xFF, 0, 0);
CHARFORMAT green; CHARFORMAT green;
ZeroMemory( &green, sizeof(green) ); ZeroMemory(&green, sizeof(green));
green.cbSize = sizeof(green); green.cbSize = sizeof(green);
green.dwMask = CFM_COLOR; green.dwMask = CFM_COLOR;
green.crTextColor = RGB(0,0x7F,0); green.crTextColor = RGB(0, 0x7F, 0);
for ( int i=0; i!=m_Display->GetLineCount(); ++i ) for (int i = 0; i != m_Display->GetLineCount(); ++i)
{ {
int c = m_Display->LineIndex( i ); int c = m_Display->LineIndex(i);
int l = m_Display->LineLength( c ); int l = m_Display->LineLength(c);
m_Display->SetSel( c, c+l ); m_Display->SetSel(c, c + l);
CString s = m_Display->GetSelText(); CString s = m_Display->GetSelText();
if ( ! s.IsEmpty() ) if (!s.IsEmpty())
{ {
if ( s.Left(2) == "+ " ) if (s.Left(2) == "+ ")
{ {
m_Display->SetSelectionCharFormat( blue ); m_Display->SetSelectionCharFormat(blue);
} }
else if ( s.Left(2) == "- " ) else if (s.Left(2) == "- ")
{ {
m_Display->SetSelectionCharFormat( red ); m_Display->SetSelectionCharFormat(red);
} }
else if ( s.Left(2) == "! " ) else if (s.Left(2) == "! ")
{ {
m_Display->SetSelectionCharFormat( green ); m_Display->SetSelectionCharFormat(green);
} }
} }
} }
} }
void CBranch_patcherDlg::OnDoPatch() void CBranch_patcherDlg::OnDoPatch()
{ {
UpdateData( true ); UpdateData(true);
if ( SaveDiff ) if (SaveDiff)
{ {
// Save the diff from the richedit // Save the diff from the richedit
saveFile( TEMP_DIFF_FILE ); saveFile(TEMP_DIFF_FILE);
} }
// Apply the patch // Apply the patch
CString patchCmdLine, concatOutput, delPatchErrors; CString patchCmdLine, concatOutput, delPatchErrors;
patchCmdLine.Format( "%spatch.exe -c -p%u --verbose < %s > %s 2> %s", PatchExeDir, CvsDiffDirLevel, TEMP_DIFF_FILE, PATCH_RESULT, PATCH_ERRORS ); // needs patch.exe in the path patchCmdLine.Format(_T("%spatch.exe -c -p%u --verbose < %s > %s 2> %s"), PatchExeDir, CvsDiffDirLevel, TEMP_DIFF_FILE, PATCH_RESULT, PATCH_ERRORS); // needs patch.exe in the path
concatOutput.Format( "copy %s+%s %s", PATCH_RESULT, PATCH_ERRORS, PATCH_RESULT ); concatOutput.Format(_T("copy %s+%s %s"), PATCH_RESULT, PATCH_ERRORS, PATCH_RESULT);
delPatchErrors.Format( "del %s", PATCH_ERRORS ); delPatchErrors.Format(_T("del %s"), PATCH_ERRORS);
CString text; CString text;
text.Format( "Patch diff to directory %s?\n\nCommand (choose No to copy it into the clipboard):\n%s", m_DestDir, patchCmdLine ); text.Format(_T("Patch diff to directory %s?\n\nCommand (choose No to copy it into the clipboard):\n%s"), (LPCTSTR)m_DestDir, (LPCTSTR)patchCmdLine);
int result; int result;
if ( (result = ::MessageBox( m_hWnd, text, "Confirmation", MB_YESNOCANCEL | MB_ICONQUESTION )) == IDYES ) if ((result = ::MessageBox(m_hWnd, text, _T("Confirmation"), MB_YESNOCANCEL | MB_ICONQUESTION)) == IDYES)
{ {
if ( _chdir( m_DestDir ) == 0 ) if (_chdir(m_DestDir) == 0)
{ {
system( patchCmdLine ); system(patchCmdLine);
system( concatOutput ); system(concatOutput);
system( delPatchErrors ); system(delPatchErrors);
displayFile( PATCH_RESULT ); displayFile(PATCH_RESULT);
SaveDiff = false; SaveDiff = false;
m_Display->LineScroll( 0 ); m_Display->LineScroll(0);
if ( (m_Display->GetLineCount() == 0) || if ((m_Display->GetLineCount() == 0) ||
(m_Display->GetLineCount() == 1 && m_Display->LineLength(0)<2) ) (m_Display->GetLineCount() == 1 && m_Display->LineLength(0) < 2))
{ {
CString s; CString s;
s.Format( "Nothing was patched.\r\nIf this is not the expected result:\r\n- check if the good patch.exe is in %s\r\n- check if %s exists (generated by previous diff)\r\n- check if C:\\ has enough free space and access rights to write a file.", TEMP_DIFF_FILE ); s.Format(_T("Nothing was patched.\r\nIf this is not the expected result:\r\n- check if the good patch.exe is in %s\r\n- check if %s exists (generated by previous diff)\r\n- check if C:\\ has enough free space and access rights to write a file."), TEMP_DIFF_FILE);
displayMessage( s ); displayMessage(s);
} }
else else
{ {
m_Filename = PATCH_RESULT + ":"; m_Filename = PATCH_RESULT + ":";
UpdateData( false ); UpdateData(false);
} }
} }
else else
{ {
displayMessage( "Target directory not found" ); displayMessage("Target directory not found");
} }
} }
else if ( result == IDNO ) else if (result == IDNO)
{ {
SendTextToClipboard( patchCmdLine ); SendTextToClipboard(patchCmdLine);
} }
} }
void CBranch_patcherDlg::OnSize(UINT nType, int cx, int cy) void CBranch_patcherDlg::OnSize(UINT nType, int cx, int cy)
{ {
CDialog::OnSize(nType, cx, cy); CDialog::OnSize(nType, cx, cy);
if ( m_Display ) if (m_Display)
{ {
RECT cltRect; RECT cltRect;
GetClientRect( &cltRect ); GetClientRect(&cltRect);
CRect dispRect; CRect dispRect;
m_Display->MoveWindow( 20, 180, cltRect.right-40, cltRect.bottom-200, true ); m_Display->MoveWindow(20, 180, cltRect.right - 40, cltRect.bottom - 200, true);
} }
} }
void CBranch_patcherDlg::OnClose() void CBranch_patcherDlg::OnClose()
{ {
saveConfiguration(); saveConfiguration();
@ -516,10 +522,10 @@ void CBranch_patcherDlg::OnClose()
void CBranch_patcherDlg::processCommandLine() void CBranch_patcherDlg::processCommandLine()
{ {
CString cmdLine = theApp.m_lpCmdLine; CString cmdLine = theApp.m_lpCmdLine;
if ( ! cmdLine.IsEmpty() ) if (!cmdLine.IsEmpty())
{ {
setSrcDirectory( cmdLine ); setSrcDirectory(cmdLine);
guessDestDirectory(); guessDestDirectory();
} }
} }
@ -527,18 +533,18 @@ void CBranch_patcherDlg::processCommandLine()
void CBranch_patcherDlg::guessDestDirectory() void CBranch_patcherDlg::guessDestDirectory()
{ {
if ( hasTokens() ) if (hasTokens())
{ {
CString dir = m_SrcDir; CString dir = m_SrcDir;
if ( dir.Find( "\\"+Token1+"\\", 0 ) != -1 ) if (dir.Find("\\" + Token1 + "\\", 0) != -1)
{ {
dir.Replace( "\\"+Token1+"\\", "\\"+Token2+"\\" ); dir.Replace("\\" + Token1 + "\\", "\\" + Token2 + "\\");
setDestDirectory( dir ); setDestDirectory(dir);
} }
else if ( dir.Find( "\\"+Token2+"\\", 0 ) != -1 ) else if (dir.Find("\\" + Token2 + "\\", 0) != -1)
{ {
dir.Replace( "\\"+Token2+"\\", "\\"+Token1+"\\" ); dir.Replace("\\" + Token2 + "\\", "\\" + Token1 + "\\");
setDestDirectory( dir ); setDestDirectory(dir);
} }
} }
} }
@ -548,51 +554,51 @@ void CBranch_patcherDlg::extractDirTokens()
{ {
int beginOfToken1, beginOfToken2, endOfToken1, endOfToken2; int beginOfToken1, beginOfToken2, endOfToken1, endOfToken2;
CString text; CString text;
UpdateData( true ); UpdateData(true);
// Search backward from the end until a different substring is found // Search backward from the end until a different substring is found
int c1 = m_SrcDir.GetLength()-1; int c1 = m_SrcDir.GetLength() - 1;
int c2 = m_DestDir.GetLength()-1; int c2 = m_DestDir.GetLength() - 1;
while ( (c1 >= 0) && (c2 >= 0) && (m_SrcDir[c1] == m_DestDir[c2]) ) while ((c1 >= 0) && (c2 >= 0) && (m_SrcDir[c1] == m_DestDir[c2]))
{ {
--c1; --c1;
--c2; --c2;
} }
// Test if both strings are identical // Test if both strings are identical
if ( (c1 < 0) || (c2 < 0) ) if ((c1 < 0) || (c2 < 0))
{ {
Token1 = m_SrcDir; Token1 = m_SrcDir;
Token2 = m_DestDir; Token2 = m_DestDir;
return; return;
} }
endOfToken1 = c1+1; endOfToken1 = c1 + 1;
endOfToken2 = c2+1; endOfToken2 = c2 + 1;
// Search forward from the beginning until a different substring is found // Search forward from the beginning until a different substring is found
c1 = 0; c1 = 0;
c2 = 0; c2 = 0;
while ( (c1 < m_SrcDir.GetLength()) && (c2 < m_DestDir.GetLength()) && (m_SrcDir[c1] == m_DestDir[c2]) ) while ((c1 < m_SrcDir.GetLength()) && (c2 < m_DestDir.GetLength()) && (m_SrcDir[c1] == m_DestDir[c2]))
{ {
++c1; ++c1;
++c2; ++c2;
} }
if ( (c1 == m_SrcDir.GetLength()) || (c2 == m_DestDir.GetLength()) ) if ((c1 == m_SrcDir.GetLength()) || (c2 == m_DestDir.GetLength()))
{ {
return; // both strings are identical (should not occur again) return; // both strings are identical (should not occur again)
} }
// If one of the token is empty, expand both downto the closest backslash // If one of the token is empty, expand both downto the closest backslash
if ( (c1 == endOfToken1) || (c2 == endOfToken2) ) if ((c1 == endOfToken1) || (c2 == endOfToken2))
{ {
--c1; --c1;
while ( (c1 >= 0) && (m_SrcDir[c1] != '\\') ) while ((c1 >= 0) && (m_SrcDir[c1] != '\\'))
{ {
--c1; --c1;
} }
++c1; ++c1;
--c2; --c2;
while ( (c2 >= 0) && (m_DestDir[c2] != '\\') ) while ((c2 >= 0) && (m_DestDir[c2] != '\\'))
{ {
--c2; --c2;
} }
@ -601,67 +607,67 @@ void CBranch_patcherDlg::extractDirTokens()
beginOfToken1 = c1; beginOfToken1 = c1;
beginOfToken2 = c2; beginOfToken2 = c2;
Token1 = m_SrcDir.Mid( beginOfToken1, endOfToken1-beginOfToken1 ); Token1 = m_SrcDir.Mid(beginOfToken1, endOfToken1 - beginOfToken1);
Token2 = m_DestDir.Mid( beginOfToken2, endOfToken2-beginOfToken2 ); Token2 = m_DestDir.Mid(beginOfToken2, endOfToken2 - beginOfToken2);
//endExtract: //endExtract:
/*if ( hasTokens() ) /*if ( hasTokens() )
{ {
text.Format( "The two branch tokens '%s' and '%s' are now stored", Token1, Token2 ); text.Format( "The two branch tokens '%s' and '%s' are now stored", Token1, Token2 );
::MessageBox( m_hWnd, text, "Tokens found", MB_OK | MB_ICONINFORMATION ); ::MessageBox( m_hWnd, text, "Tokens found", MB_OK | MB_ICONINFORMATION );
return; return;
}*/ }*/
//notfound: //notfound:
//::MessageBox( m_hWnd, "Tokens not found in the directories", "Extracting tokens", MB_OK | MB_ICONEXCLAMATION ); //::MessageBox( m_hWnd, "Tokens not found in the directories", "Extracting tokens", MB_OK | MB_ICONEXCLAMATION );
} }
void CBranch_patcherDlg::loadConfiguration() void CBranch_patcherDlg::loadConfiguration()
{ {
// Read the dest directory from the registry // Read the dest directory from the registry
free( (void*)theApp.m_pszRegistryKey ); free((void*)theApp.m_pszRegistryKey);
theApp.m_pszRegistryKey = _tcsdup( _T("Nevrax") ); theApp.m_pszRegistryKey = _tcsdup(_T("Nevrax"));
CString savedSrcDir, savedTargetDir, token1, token2; CString savedSrcDir, savedTargetDir, token1, token2;
if ( m_SrcDir.IsEmpty() ) if (m_SrcDir.IsEmpty())
{ {
savedSrcDir = theApp.GetProfileString( _T(""), _T("SourceDir") ); savedSrcDir = theApp.GetProfileString(_T(""), _T("SourceDir"));
if ( ! savedSrcDir.IsEmpty() ) if (!savedSrcDir.IsEmpty())
{ {
setSrcDirectory( savedSrcDir ); setSrcDirectory(savedSrcDir);
} }
} }
savedTargetDir = theApp.GetProfileString( _T(""), _T("TargetDir") ); savedTargetDir = theApp.GetProfileString(_T(""), _T("TargetDir"));
if ( ! savedTargetDir.IsEmpty() ) if (!savedTargetDir.IsEmpty())
{ {
setDestDirectory( savedTargetDir ); setDestDirectory(savedTargetDir);
} }
Token1 = theApp.GetProfileString( _T(""), _T("Token1") ); Token1 = theApp.GetProfileString(_T(""), _T("Token1"));
Token2 = theApp.GetProfileString( _T(""), _T("Token2") ); Token2 = theApp.GetProfileString(_T(""), _T("Token2"));
PatchExeDir = theApp.GetProfileString( _T(""), _T("PatchExeDir") ); PatchExeDir = theApp.GetProfileString(_T(""), _T("PatchExeDir"));
CvsDiffDirLevel = theApp.GetProfileInt( _T(""), _T("CvsDiffDirLevel"), 1 ); // 0 for old version of CVS, 1 for new version of CVS CvsDiffDirLevel = theApp.GetProfileInt(_T(""), _T("CvsDiffDirLevel"), 1); // 0 for old version of CVS, 1 for new version of CVS
} }
void CBranch_patcherDlg::saveConfiguration() void CBranch_patcherDlg::saveConfiguration()
{ {
UpdateData( true ); UpdateData(true);
if ( ! EnteringTokens ) if (!EnteringTokens)
{ {
theApp.WriteProfileString( _T(""), _T("SourceDir"), m_SrcDir ); theApp.WriteProfileString(_T(""), _T("SourceDir"), m_SrcDir);
theApp.WriteProfileString( _T(""), _T("TargetDir"), m_DestDir ); theApp.WriteProfileString(_T(""), _T("TargetDir"), m_DestDir);
} }
theApp.WriteProfileString( _T(""), _T("Token1"), Token1 ); theApp.WriteProfileString(_T(""), _T("Token1"), Token1);
theApp.WriteProfileString( _T(""), _T("Token2"), Token2 ); theApp.WriteProfileString(_T(""), _T("Token2"), Token2);
} }
void CBranch_patcherDlg::OnButtonExtractTokens() void CBranch_patcherDlg::OnButtonExtractTokens()
{ {
if ( ! EnteringTokens ) if (!EnteringTokens)
{ {
EnteringTokens = true; EnteringTokens = true;
extractDirTokens(); extractDirTokens();
SrcDirBackup = m_SrcDir; SrcDirBackup = m_SrcDir;
TargetDirBackup = m_DestDir; TargetDirBackup = m_DestDir;
m_SrcDir = Token1; m_SrcDir = Token1;
@ -669,18 +675,18 @@ void CBranch_patcherDlg::OnButtonExtractTokens()
m_SrcDirLabel = "Enter Token 1"; m_SrcDirLabel = "Enter Token 1";
m_TargetDirLabel = "Enter Token 2"; m_TargetDirLabel = "Enter Token 2";
m_Filename = "The tokens above were extracted from the directories."; m_Filename = "The tokens above were extracted from the directories.";
((CButton*)GetDlgItem( IDC_ButtonExtractTokens ))->SetWindowText( _T("Store Tokens") ); ((CButton*)GetDlgItem(IDC_ButtonExtractTokens))->SetWindowText(_T("Store Tokens"));
GetDlgItem( IDC_TopText )->ShowWindow( SW_HIDE ); GetDlgItem(IDC_TopText)->ShowWindow(SW_HIDE);
GetDlgItem( IDC_ButtonClearTokens )->EnableWindow( FALSE ); GetDlgItem(IDC_ButtonClearTokens)->EnableWindow(FALSE);
GetDlgItem( IDC_ButtonPatch )->ShowWindow( SW_HIDE ); GetDlgItem(IDC_ButtonPatch)->ShowWindow(SW_HIDE);
GetDlgItem( IDC_ButtonPatch )->EnableWindow( FALSE ); GetDlgItem(IDC_ButtonPatch)->EnableWindow(FALSE);
GetDlgItem( IDC_DoPatch )->ShowWindow( SW_HIDE ); GetDlgItem(IDC_DoPatch)->ShowWindow(SW_HIDE);
GetDlgItem( IDC_Group )->ShowWindow( SW_HIDE ); GetDlgItem(IDC_Group)->ShowWindow(SW_HIDE);
UpdateData( false ); UpdateData(false);
} }
else else
{ {
UpdateData( true ); UpdateData(true);
EnteringTokens = false; EnteringTokens = false;
Token1 = m_SrcDir; Token1 = m_SrcDir;
Token2 = m_DestDir; Token2 = m_DestDir;
@ -689,19 +695,19 @@ void CBranch_patcherDlg::OnButtonExtractTokens()
m_SrcDir = SrcDirBackup; m_SrcDir = SrcDirBackup;
m_DestDir = TargetDirBackup; m_DestDir = TargetDirBackup;
m_Filename.Empty(); m_Filename.Empty();
((CButton*)GetDlgItem( IDC_ButtonExtractTokens ))->SetWindowText( _T("Enter Tokens") ); ((CButton*)GetDlgItem(IDC_ButtonExtractTokens))->SetWindowText(_T("Enter Tokens"));
GetDlgItem( IDC_TopText )->ShowWindow( SW_SHOW ); GetDlgItem(IDC_TopText)->ShowWindow(SW_SHOW);
GetDlgItem( IDC_ButtonClearTokens )->EnableWindow( TRUE ); GetDlgItem(IDC_ButtonClearTokens)->EnableWindow(TRUE);
GetDlgItem( IDC_ButtonPatch )->ShowWindow( SW_SHOW ); GetDlgItem(IDC_ButtonPatch)->ShowWindow(SW_SHOW);
GetDlgItem( IDC_ButtonPatch )->EnableWindow( TRUE ); GetDlgItem(IDC_ButtonPatch)->EnableWindow(TRUE);
GetDlgItem( IDC_DoPatch )->ShowWindow( SW_SHOW ); GetDlgItem(IDC_DoPatch)->ShowWindow(SW_SHOW);
GetDlgItem( IDC_Group )->ShowWindow( SW_SHOW ); GetDlgItem(IDC_Group)->ShowWindow(SW_SHOW);
displayTokens(); displayTokens();
} }
} }
void CBranch_patcherDlg::OnButtonClearTokens() void CBranch_patcherDlg::OnButtonClearTokens()
{ {
Token1.Empty(); Token1.Empty();
Token2.Empty(); Token2.Empty();
@ -711,14 +717,14 @@ void CBranch_patcherDlg::OnButtonClearTokens()
bool CBranch_patcherDlg::hasTokens() const bool CBranch_patcherDlg::hasTokens() const
{ {
return ! (Token1.IsEmpty() || Token2.IsEmpty()); return !(Token1.IsEmpty() || Token2.IsEmpty());
} }
void CBranch_patcherDlg::displayTokens() void CBranch_patcherDlg::displayTokens()
{ {
((CButton*)GetDlgItem( IDC_ButtonClearTokens ))->EnableWindow( hasTokens()?TRUE:FALSE ); ((CButton*)GetDlgItem(IDC_ButtonClearTokens))->EnableWindow(hasTokens() ? TRUE : FALSE);
if ( hasTokens() ) if (hasTokens())
{ {
m_Tokens = "Tokens: '" + Token1 + "' and '" + Token2 + "'"; m_Tokens = "Tokens: '" + Token1 + "' and '" + Token2 + "'";
} }
@ -726,5 +732,5 @@ void CBranch_patcherDlg::displayTokens()
{ {
m_Tokens = "No token"; m_Tokens = "No token";
} }
UpdateData( false ); UpdateData(false);
} }

View file

@ -280,7 +280,7 @@ void CData_mirrorDlg::updateList ()
{ {
// Add the items // Add the items
const CEntryFile &entry = *ite; const CEntryFile &entry = *ite;
uint nItem = List.InsertItem (0, entry.Strings[CEntryFile::Path].c_str (), entry.Image); uint nItem = List.InsertItem (0, utf8ToTStr(entry.Strings[CEntryFile::Path]), entry.Image);
List.SetItemData (nItem, DWORD(new std::list<CEntryFile>::iterator (ite))); List.SetItemData (nItem, DWORD(new std::list<CEntryFile>::iterator (ite)));
// Sub string // Sub string
@ -289,25 +289,25 @@ void CData_mirrorDlg::updateList ()
// Add the sizes // Add the sizes
if (ModifiedFilter != Removed) if (ModifiedFilter != Removed)
{ {
List.SetItemText (nItem, subString++, entry.Strings[CEntryFile::NewSize].c_str ()); List.SetItemText (nItem, subString++, utf8ToTStr(entry.Strings[CEntryFile::NewSize]));
} }
if (ModifiedFilter != Added) if (ModifiedFilter != Added)
{ {
List.SetItemText (nItem, subString++, entry.Strings[CEntryFile::OldSize].c_str ()); List.SetItemText (nItem, subString++, utf8ToTStr(entry.Strings[CEntryFile::OldSize]));
} }
// Add the dates // Add the dates
if (ModifiedFilter != Removed) if (ModifiedFilter != Removed)
{ {
List.SetItemText (nItem, subString++, entry.Strings[CEntryFile::NewDate].c_str ()); List.SetItemText (nItem, subString++, utf8ToTStr(entry.Strings[CEntryFile::NewDate]));
} }
if (ModifiedFilter != Added) if (ModifiedFilter != Added)
{ {
List.SetItemText (nItem, subString++, entry.Strings[CEntryFile::OldDate].c_str ()); List.SetItemText (nItem, subString++, utf8ToTStr(entry.Strings[CEntryFile::OldDate]));
} }
// Add the type // Add the type
List.SetItemText (nItem, subString++, entry.Strings[CEntryFile::Type].c_str ()); List.SetItemText (nItem, subString++, utf8ToTStr(entry.Strings[CEntryFile::Type]));
// Next item // Next item
ite++; ite++;
@ -382,7 +382,7 @@ void CData_mirrorDlg::OnIgnore()
CString itemText = List.GetItemText (i, 0); CString itemText = List.GetItemText (i, 0);
// Add to ignore list // Add to ignore list
IgnoreFiles.insert ((const char*)itemText); IgnoreFiles.insert (tStrToUtf8(itemText));
// Remove from the file list // Remove from the file list
std::list<CEntryFile>::iterator *ite = (std::list<CEntryFile>::iterator *)List.GetItemData (i); std::list<CEntryFile>::iterator *ite = (std::list<CEntryFile>::iterator *)List.GetItemData (i);
@ -408,9 +408,9 @@ void createDirectory (const string &dir)
NLMISC::CFile::createDirectory (dir); NLMISC::CFile::createDirectory (dir);
} }
bool setFileTime (const char *filename, const FILETIME &result) bool setFileTime(const std::string &filename, const FILETIME &result)
{ {
HANDLE handle = CreateFile (filename, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE handle = CreateFile (utf8ToTStr(filename), GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle) if (handle)
{ {
SetFileTime (handle, NULL, NULL, &result); SetFileTime (handle, NULL, NULL, &result);
@ -460,7 +460,7 @@ void CData_mirrorDlg::OnOK()
createDirectory (directory.c_str ()); createDirectory (directory.c_str ());
if (!CopyFile (source.c_str (), dest.c_str (), FALSE)) if (!CopyFile (source.c_str (), dest.c_str (), FALSE))
{ {
MessageBox (("Can't copy file "+source+" in file "+dest).c_str (), "NeL Data Mirror", MessageBox (("Can't copy file "+source+" in file "+dest).c_str (), _T("NeL Data Mirror"),
MB_OK|MB_ICONEXCLAMATION); MB_OK|MB_ICONEXCLAMATION);
success = false; success = false;
} }
@ -499,7 +499,7 @@ void CData_mirrorDlg::OnOK()
createDirectory (directory.c_str ()); createDirectory (directory.c_str ());
if (!CopyFile (source.c_str (), dest.c_str (), FALSE)) if (!CopyFile (source.c_str (), dest.c_str (), FALSE))
{ {
MessageBox (("Can't copy file "+source+" in file "+dest).c_str (), "NeL Data Mirror", MessageBox (("Can't copy file "+source+" in file "+dest).c_str (), _T("NeL Data Mirror"),
MB_OK|MB_ICONEXCLAMATION); MB_OK|MB_ICONEXCLAMATION);
success = false; success = false;
} }
@ -534,7 +534,7 @@ void CData_mirrorDlg::OnOK()
if (!DeleteFile (dest.c_str ())) if (!DeleteFile (dest.c_str ()))
{ {
MessageBox (("Can't delete the file "+dest).c_str (), "NeL Data Mirror", MessageBox (("Can't delete the file "+dest).c_str (), _T("NeL Data Mirror"),
MB_OK|MB_ICONEXCLAMATION); MB_OK|MB_ICONEXCLAMATION);
success = false; success = false;
} }
@ -594,9 +594,9 @@ void CData_mirrorDlg::OnSize(UINT nType, int cx, int cy)
resize (); resize ();
} }
bool getFileTime (const char *filename, FILETIME &result) bool getFileTime (const std::string &filename, FILETIME &result)
{ {
HANDLE handle = CreateFile (filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); HANDLE handle = CreateFile (utf8ToTStr(filename), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (handle) if (handle)
{ {
FILETIME res0; FILETIME res0;
@ -637,8 +637,8 @@ void CData_mirrorDlg::buildSourceFiles ()
{ {
FILETIME time0; FILETIME time0;
FILETIME time1; FILETIME time1;
getFileTime (mirrorFile.c_str (), time0); getFileTime (mirrorFile, time0);
getFileTime (mainFile.c_str (), time1); getFileTime (mainFile, time1);
sint64 deltaInt = (((uint64)time1.dwHighDateTime)<<32|((uint64)time1.dwLowDateTime)) - (((uint64)time0.dwHighDateTime)<<32|((uint64)time0.dwLowDateTime)); sint64 deltaInt = (((uint64)time1.dwHighDateTime)<<32|((uint64)time1.dwLowDateTime)) - (((uint64)time0.dwHighDateTime)<<32|((uint64)time0.dwLowDateTime));
double deltaInSec = (double)deltaInt; double deltaInSec = (double)deltaInt;
deltaInSec /= 10000000.0; deltaInSec /= 10000000.0;
@ -688,8 +688,8 @@ void CData_mirrorDlg::buildSourceFiles ()
{ {
// Update time stamp // Update time stamp
FILETIME fileTime; FILETIME fileTime;
getFileTime (mainFile.c_str (), fileTime); getFileTime (mainFile, fileTime);
setFileTime (mirrorFile.c_str(), fileTime); setFileTime (mirrorFile, fileTime);
} }
} }
else else
@ -699,8 +699,8 @@ void CData_mirrorDlg::buildSourceFiles ()
else else
{ {
FILETIME time; FILETIME time;
getFileTime (mainFile.c_str (), time); getFileTime (mainFile, time);
addEntry (Added, str.c_str (), time, time); addEntry (Added, str, time, time);
} }
} }
} }
@ -777,7 +777,7 @@ void CData_mirrorDlg::addEntry (uint where, const char *filename, FILETIME &newD
file.Strings[CEntryFile::Path] = filename; file.Strings[CEntryFile::Path] = filename;
file.NewDateST = newDate; file.NewDateST = newDate;
file.OldDateST = oldDate; file.OldDateST = oldDate;
const char *aFilename; std::string aFilename;
string mirrorFile = MirrorDirectory+filename; string mirrorFile = MirrorDirectory+filename;
string mainFile = MainDirectory+filename; string mainFile = MainDirectory+filename;
@ -790,7 +790,7 @@ void CData_mirrorDlg::addEntry (uint where, const char *filename, FILETIME &newD
// Date // Date
timeToString (file.Strings[CEntryFile::OldDate], oldDate); timeToString (file.Strings[CEntryFile::OldDate], oldDate);
aFilename = mirrorFile.c_str (); aFilename = mirrorFile;
} }
if (where != Removed) if (where != Removed)
@ -801,7 +801,7 @@ void CData_mirrorDlg::addEntry (uint where, const char *filename, FILETIME &newD
// Date // Date
timeToString (file.Strings[CEntryFile::NewDate], newDate); timeToString (file.Strings[CEntryFile::NewDate], newDate);
aFilename = mainFile.c_str (); aFilename = mainFile;
} }
// Get the extension // Get the extension
@ -811,19 +811,19 @@ void CData_mirrorDlg::addEntry (uint where, const char *filename, FILETIME &newD
{ {
// Get the image // Get the image
SHFILEINFO sfi; SHFILEINFO sfi;
char winName[512]; TCHAR winName[512];
strcpy (winName, aFilename); _tcscpy (winName, utf8ToTStr(aFilename));
char *ptr = winName; TCHAR *ptr = winName;
while (*ptr) while (*ptr)
{ {
if (*ptr=='/') if (*ptr==_T('/'))
*ptr = '\\'; *ptr = _T('\\');
ptr++; ptr++;
} }
SHGetFileInfo (winName, 0, &sfi, sizeof (SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_LINKOVERLAY | SHGFI_TYPENAME ); SHGetFileInfo (winName, 0, &sfi, sizeof (SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON | SHGFI_LINKOVERLAY | SHGFI_TYPENAME );
CExtension extension; CExtension extension;
extension.Description = sfi.szTypeName; extension.Description = tStrToUtf8(sfi.szTypeName);
extension.Icon = sfi.iIcon; extension.Icon = sfi.iIcon;
ite = MapExtensions.insert (std::map<string, CExtension>::value_type (ext, extension)).first; ite = MapExtensions.insert (std::map<string, CExtension>::value_type (ext, extension)).first;
} }
@ -883,7 +883,7 @@ void CData_mirrorDlg::OnUpdate()
CString itemText = List.GetItemText (i, 0); CString itemText = List.GetItemText (i, 0);
// Add to ignore good list // Add to ignore good list
entriesToUpdate.push_back ((const char*)itemText); entriesToUpdate.push_back (tStrToUtf8(itemText));
// Remove from the file list // Remove from the file list
std::list<CEntryFile>::iterator *ite = (std::list<CEntryFile>::iterator *)List.GetItemData (i); std::list<CEntryFile>::iterator *ite = (std::list<CEntryFile>::iterator *)List.GetItemData (i);

View file

@ -71,7 +71,7 @@ BOOL CFilterDialog::OnInitDialog()
if ( Trace ) if ( Trace )
{ {
GetDlgItem( IDC_PosFilterCap )->SetWindowText( "Service code" ); GetDlgItem( IDC_PosFilterCap )->SetWindowText(_T("Service code"));
GetDlgItem( IDC_NegFilterCap )->ShowWindow( SW_HIDE ); GetDlgItem( IDC_NegFilterCap )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_SepCap )->ShowWindow( SW_HIDE ); GetDlgItem( IDC_SepCap )->ShowWindow( SW_HIDE );
GetDlgItem( IDC_NegFilter )->ShowWindow( SW_HIDE ); GetDlgItem( IDC_NegFilter )->ShowWindow( SW_HIDE );
@ -79,11 +79,11 @@ BOOL CFilterDialog::OnInitDialog()
} }
else else
{ {
GetDlgItem( IDC_PosFilterCap )->SetWindowText( "Positive filters (all lines must contain one of these substrings)" ); GetDlgItem( IDC_PosFilterCap )->SetWindowText(_T("Positive filters (all lines must contain one of these substrings)"));
GetDlgItem( IDC_NegFilterCap )->ShowWindow( SW_SHOW ); GetDlgItem( IDC_NegFilterCap )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_SepCap )->ShowWindow( SW_SHOW ); GetDlgItem( IDC_SepCap )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_NegFilter )->ShowWindow( SW_SHOW ); GetDlgItem( IDC_NegFilter )->ShowWindow( SW_SHOW );
GetDlgItem( IDC_Sep )->SetWindowText( ";" ); GetDlgItem( IDC_Sep )->SetWindowText(_T(";"));
GetDlgItem( IDC_Sep )->ShowWindow( SW_SHOW ); GetDlgItem( IDC_Sep )->ShowWindow( SW_SHOW );
} }
@ -98,12 +98,12 @@ std::vector<CString> buildVectorFromString( const CString& str, const CString& s
{ {
std::vector<CString> vec; std::vector<CString> vec;
CString str2 = str; CString str2 = str;
char *token; TCHAR *token;
token = strtok( str2.GetBuffer( str2.GetLength() ), sep ); token = _tcstok( str2.GetBuffer( str2.GetLength() ), sep );
while ( token != NULL ) while ( token != NULL )
{ {
vec.push_back( CString(token) ); vec.push_back( CString(token) );
token = strtok( NULL, sep ); token = _tcstok( NULL, sep );
} }
str2.ReleaseBuffer(); str2.ReleaseBuffer();
return vec; return vec;

View file

@ -147,8 +147,8 @@ void CPlugInSelector::OnSelchangeList1()
AfxMessageBox( _T("Can't find function getInfoString in dll") ); AfxMessageBox( _T("Can't find function getInfoString in dll") );
return; return;
} }
GetDlgItem( IDC_GROUP_INFO )->SetWindowText( getFilename( string(dllName)).c_str() ); GetDlgItem( IDC_GROUP_INFO )->SetWindowText( utf8ToTStr(getFilename(tStrToUtf8(dllName))) );
GetDlgItem( IDC_PLUGIN_INFO )->SetWindowText( infoFunc().c_str() ); GetDlgItem( IDC_PLUGIN_INFO )->SetWindowText(utf8ToTStr(infoFunc()) );
// Prepare analyse func // Prepare analyse func
AnalyseFunc = (TAnalyseFunc)GetProcAddress( LibInst, "doAnalyse" ); AnalyseFunc = (TAnalyseFunc)GetProcAddress( LibInst, "doAnalyse" );

View file

@ -37,6 +37,9 @@
#include <afxcmn.h> // MFC support for Windows Common Controls #include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT #endif // _AFX_NO_AFXCMN_SUPPORT
#include <nel/misc/ucstring.h>
#include <nel/misc/common.h>
#include <nel/misc/file.h>
//{{AFX_INSERT_LOCATION}} //{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.

View file

@ -301,14 +301,14 @@ void CViewDialog::reload()
{ {
SessionDatePassed = false; SessionDatePassed = false;
CWaitCursor wc; CWaitCursor wc;
if ( LogSessionStartDate.IsEmpty() || (LogSessionStartDate == "Beginning") ) if ( LogSessionStartDate.IsEmpty() || (LogSessionStartDate == _T("Beginning")) )
{ {
SessionDatePassed = true; SessionDatePassed = true;
} }
((CButton*)GetDlgItem( IDC_BUTTON1 ))->ShowWindow( SW_SHOW ); ((CButton*)GetDlgItem( IDC_BUTTON1 ))->ShowWindow( SW_SHOW );
((CButton*)GetDlgItem( IDC_BUTTON2 ))->ShowWindow( SW_SHOW ); ((CButton*)GetDlgItem( IDC_BUTTON2 ))->ShowWindow( SW_SHOW );
m_Caption.Format( "%s (%u file%s) %u+ %u- (%s)", Seriesname, Filenames.size(), Filenames.size()>1?"s":"", PosFilter.size(), NegFilter.size(), LogSessionStartDate.IsEmpty()?"all":CString("session ")+LogSessionStartDate ); m_Caption.Format( _T("%s (%u file%s) %u+ %u- (%s)"), Seriesname, Filenames.size(), Filenames.size()>1?"s":"", PosFilter.size(), NegFilter.size(), LogSessionStartDate.IsEmpty()?"all":CString("session ")+LogSessionStartDate );
UpdateData( false ); UpdateData( false );
clear(); clear();
setRedraw( false ); setRedraw( false );
@ -356,17 +356,21 @@ void CViewDialog::getBookmarksAbsoluteLines( vector<int>& bookmarksAbsoluteLine
for ( unsigned int i=0; i!=Filenames.size(); ++i ) for ( unsigned int i=0; i!=Filenames.size(); ++i )
{ {
CString& filename = Filenames[i]; CString& filename = Filenames[i];
ifstream ifs( filename );
if ( ! ifs.fail() ) NLMISC::CIFile ifs;
if (ifs.open(tStrToUtf8(filename)))
{ {
char line [1024]; char line [1024];
while ( ! ifs.eof() )
while (!ifs.eof())
{ {
ifs.getline( line, 1024 ); ifs.getline(line, 1024);
if ( SessionDatePassed ) if ( SessionDatePassed )
{ {
// Stop if the session is finished // Stop if the session is finished
if ( (! LogSessionStartDate.IsEmpty()) && (strstr( line, LogDateString )) ) if ( (! LogSessionStartDate.IsEmpty()) && (strstr( line, tStrToUtf8(LogDateString).c_str())) )
{ {
return; return;
} }
@ -390,7 +394,7 @@ void CViewDialog::getBookmarksAbsoluteLines( vector<int>& bookmarksAbsoluteLine
else else
{ {
// Look for the session beginning // Look for the session beginning
if ( strstr( line, LogSessionStartDate ) != NULL ) if ( strstr( line, tStrToUtf8(LogSessionStartDate).c_str()) != NULL )
{ {
SessionDatePassed = true; SessionDatePassed = true;
} }
@ -457,15 +461,12 @@ std::string CViewDialog::corruptedLinesString( const std::vector<unsigned int>&
string res; string res;
if ( ! corruptedLines.empty() ) if ( ! corruptedLines.empty() )
{ {
CString s; res = NLMISC::toString(" -> %u corrupted lines:", (uint)corruptedLines.size());
s.Format( "%u", corruptedLines.size() );
res = " -> " + string(s) + " corrupted lines:";
vector<unsigned int>::const_iterator ivc; vector<unsigned int>::const_iterator ivc;
for ( ivc=corruptedLines.begin(); ivc!=corruptedLines.end(); ++ivc ) for ( ivc=corruptedLines.begin(); ivc!=corruptedLines.end(); ++ivc )
{ {
s.Format( "%u", *ivc ); res += NLMISC::toString("\r\n line %u : %s...", *ivc, tStrToUtf8(Buffer[*ivc].Left(20)).c_str());
res += "\r\n line " + string(s) + " : " + string(Buffer[*ivc].Left(20)) + "...";
} }
HasCorruptedLines = true; HasCorruptedLines = true;
} }

View file

@ -620,7 +620,7 @@ void CLog_analyserDlg::getLogSeries( const CString& filenameStr, std::vector<CSt
{ {
if ( isLogSeriesEnabled() ) if ( isLogSeriesEnabled() )
{ {
string filename = filenameStr; string filename = tStrToUtf8(filenameStr);
unsigned int dotpos = filename.find_last_of ('.'); unsigned int dotpos = filename.find_last_of ('.');
if ( dotpos != string::npos ) if ( dotpos != string::npos )
{ {
@ -1012,13 +1012,13 @@ void CLog_analyserDlg::OnAnalyse()
{ {
if ( Views.empty() ) if ( Views.empty() )
{ {
AfxMessageBox( "This plug-in needs to be applied on the first open view" ); AfxMessageBox(_T("This plug-in needs to be applied on the first open view"));
return; return;
} }
if ( ! PlugInSelectorDialog.AnalyseFunc ) if ( ! PlugInSelectorDialog.AnalyseFunc )
{ {
AfxMessageBox( "Could not load function doAnalyse in dll" ); AfxMessageBox(_T("Could not load function doAnalyse in dll"));
return; return;
} }
@ -1028,7 +1028,7 @@ void CLog_analyserDlg::OnAnalyse()
if ( ! logstr.empty() ) if ( ! logstr.empty() )
{ {
vector<CString> pl; vector<CString> pl;
pl.push_back( "Analyse log" ); pl.push_back(_T("Analyse log"));
onAddCommon( pl ); onAddCommon( pl );
Views.back()->addText( logstr.c_str() ); Views.back()->addText( logstr.c_str() );
Views.back()->commitAddedLines(); Views.back()->commitAddedLines();
@ -1041,7 +1041,7 @@ void CLog_analyserDlg::OnAnalyse()
if ( nEndChar != (int)resstr.size() ) if ( nEndChar != (int)resstr.size() )
{ {
CString s; CString s;
s.Format( "Error: plug-in returned %u characters, only %d displayed", resstr.size(), nEndChar+1 ); s.Format(_T("Error: plug-in returned %u characters, only %d displayed"), (uint)resstr.size(), nEndChar+1 );
AfxMessageBox( s ); AfxMessageBox( s );
} }
} }

View file

@ -87,12 +87,12 @@ BOOL CWords_dicDlg::OnInitDialog()
SplashScreen->Create( IDD_SplashScreen, NULL ); SplashScreen->Create( IDD_SplashScreen, NULL );
SplashScreen->ShowWindow( SW_SHOW ); SplashScreen->ShowWindow( SW_SHOW );
SplashScreen->SetWindowPos( &wndTop, 400, 300, 0,0, SWP_NOSIZE ); SplashScreen->SetWindowPos( &wndTop, 400, 300, 0,0, SWP_NOSIZE );
SplashScreen->GetDlgItem( IDC_SplashText )->SetWindowText( "Please wait while loading dictionary..." ); SplashScreen->GetDlgItem( IDC_SplashText )->SetWindowText( _T("Please wait while loading dictionary...") );
if ( ! Dico.init() ) if ( ! Dico.init() )
AfxMessageBox( "Can't init dictionary, see reason in log.log" ); AfxMessageBox( _T("Can't init dictionary, see reason in log.log") );
SplashScreen->DestroyWindow(); SplashScreen->DestroyWindow();
delete SplashScreen; delete SplashScreen;
GetDlgItem( IDC_Status )->SetWindowText( "Tip: ^ and $ can be used to represent the start and the end of string" ); GetDlgItem( IDC_Status )->SetWindowText( _T("Tip: ^ and $ can be used to represent the start and the end of string") );
return TRUE; // return TRUE unless you set the focus to a control return TRUE; // return TRUE unless you set the focus to a control
} }
@ -157,13 +157,13 @@ void CWords_dicDlg::lookUp( const CString& inputStr )
{ {
// Look up // Look up
CVectorSString resultVec; CVectorSString resultVec;
Dico.lookup( CSString(inputStr), resultVec ); Dico.lookup( tStrToUtf8(inputStr), resultVec );
// Display results // Display results
clear(); clear();
if ( resultVec.empty() ) if ( resultVec.empty() )
{ {
m_Results.AddString( "<no result>" ); m_Results.AddString(_T("<no result>"));
return; return;
} }
else else
@ -176,14 +176,14 @@ void CWords_dicDlg::lookUp( const CString& inputStr )
const CSString& res = (*ivs); const CSString& res = (*ivs);
if ( showAll || (res.find( "lvl" ) == string::npos) ) if ( showAll || (res.find( "lvl" ) == string::npos) )
{ {
m_Results.AddString( res.c_str() ); m_Results.AddString( utf8ToTStr(res) );
} }
else else
lvlRemoved = true; lvlRemoved = true;
} }
m_Results.SetRedraw( true ); m_Results.SetRedraw( true );
CString s; CString s;
s.Format( "%u results found for \"%s\".%s", resultVec.size(), inputStr, lvlRemoved?" Results containing \"lvl\" not shown":"" ); s.Format(_T("%u results found for \"%s\".%s"), resultVec.size(), inputStr, lvlRemoved? _T(" Results containing \"lvl\" not shown"): _T("") );
GetDlgItem( IDC_Status )->SetWindowText( s ); GetDlgItem( IDC_Status )->SetWindowText( s );
} }
} }
@ -204,7 +204,7 @@ void CWords_dicDlg::OnBtnFind()
*/ */
void CWords_dicDlg::clear() void CWords_dicDlg::clear()
{ {
GetDlgItem( IDC_Status )->SetWindowText( "" ); GetDlgItem( IDC_Status )->SetWindowText(_T(""));
m_Results.ResetContent(); m_Results.ResetContent();
} }
@ -213,7 +213,7 @@ void CWords_dicDlg::clear()
*/ */
void CWords_dicDlg::OnBtnClear() void CWords_dicDlg::OnBtnClear()
{ {
m_LookUp.SetWindowText( "" ); m_LookUp.SetWindowText(_T(""));
clear(); clear();
} }
@ -234,7 +234,7 @@ void CWords_dicDlg::OnFileList()
const vector<string>& fileList = Dico.getFileList(); const vector<string>& fileList = Dico.getFileList();
for ( vector<string>::const_iterator ifl=fileList.begin(); ifl!=fileList.end(); ++ifl ) for ( vector<string>::const_iterator ifl=fileList.begin(); ifl!=fileList.end(); ++ifl )
{ {
m_Results.AddString( (*ifl).c_str() ); m_Results.AddString( utf8ToTStr(*ifl) );
} }
} }
@ -253,7 +253,7 @@ void CWords_dicDlg::OnSelchangeResultList()
// Get selection // Get selection
CString resStr; CString resStr;
m_Results.GetText( m_Results.GetCurSel(), resStr ); m_Results.GetText( m_Results.GetCurSel(), resStr );
CSString key = Dico.getWordsKey( CSString(resStr) ); CSString key = Dico.getWordsKey( tStrToUtf8(resStr) );
// Copy the selection into the clipboard // Copy the selection into the clipboard
if ( OpenClipboard() ) if ( OpenClipboard() )
@ -271,13 +271,13 @@ void CWords_dicDlg::OnSelchangeResultList()
if ( mem ) if ( mem )
{ {
CString s; CString s;
s.Format( "\"%s\" copied into the clipboard", key.c_str() ); s.Format(_T("\"%s\" copied into the clipboard"), utf8ToTStr(key) );
GetDlgItem( IDC_Status )->SetWindowText( s ); GetDlgItem( IDC_Status )->SetWindowText( s );
} }
} }
else else
{ {
GetDlgItem( IDC_Status )->SetWindowText( "Cannot access the clipboard" ); GetDlgItem( IDC_Status )->SetWindowText(_T("Cannot access the clipboard"));
} }
} }