/*
* $Id$
*
* (C) 2003-2005 Gabest
*
* This file is part of vsconv.
*
* Vsconv is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Vsconv is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
#include "stdafx.h"
#include "vsconv.h"
#include "vsconvDlg.h"
#include "../../subtitles/VobSubFile.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CvsconvApp
BEGIN_MESSAGE_MAP(CvsconvApp, CWinApp)
ON_COMMAND(ID_HELP, CWinApp::OnHelp)
END_MESSAGE_MAP()
// CvsconvApp construction
CvsconvApp::CvsconvApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
}
// The one and only CvsconvApp object
CvsconvApp theApp;
// CvsconvApp initialization
BOOL CvsconvApp::InitInstance()
{
// InitCommonControls() is required on Windows XP if an application
// manifest specifies use of ComCtl32.dll version 6 or later to enable
// visual styles. Otherwise, any window creation will fail.
InitCommonControls();
CWinApp::InitInstance();
AfxEnableControlContainer();
// TODO
// if(__argc > 1)
{
CString in, out;
CVobSubFile::SubFormat sf = CVobSubFile::None;
int iLang = -1;
bool fIgnoreForcedOnly = false;
bool fForcedOnly = false;
try
{
for(int i = 1; i < __argc; i++)
{
if(__targv[i][0] == '-' || __targv[i][0] == '/')
{
CString sw(&__targv[i][1]);
if(sw == _T("f"))
{
if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
{
CString fmt = CString(__targv[i]).MakeLower();
if(fmt == _T("winsubmux"))
sf = CVobSubFile::WinSubMux;
else if(fmt == _T("scenarist"))
sf = CVobSubFile::Scenarist;
else if(fmt == _T("maestro"))
sf = CVobSubFile::Maestro;
else
throw _T("Unrecognized conversion format");
}
else
throw _T("No conversion format given");
}
else if(sw == _T("i"))
{
if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
in = __targv[i];
else
throw _T("Missing input file");
}
else if(sw == _T("o"))
{
if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
out = __targv[i];
else
throw _T("Missing output file");
}
else if(sw == _T("id"))
{
if(++i < __argc && __targv[i][0] != '-' && __targv[i][0] != '/')
iLang = _tcstol(__targv[i], NULL, 10);
else
throw _T("Missing stream id");
}
else if(sw == _T("ignoreforcedonly"))
{
fIgnoreForcedOnly = true;
}
else if(sw == _T("forcedonly"))
{
fForcedOnly = true;
}
}
}
if(!in.IsEmpty() && !out.IsEmpty() && sf != CVobSubFile::None)
{
CVobSubFile vsf(NULL);
if(!vsf.Open(in))
throw _T("Can't open input");
if(iLang >= 0 && iLang < 32)
vsf.m_iLang = iLang;
if(fForcedOnly)
vsf.m_fOnlyShowForcedSubs = true;
if(fIgnoreForcedOnly)
vsf.m_fOnlyShowForcedSubs = false;
if(!vsf.Save(out, sf))
throw _T("Can't save output");
return FALSE;
}
}
catch(LPCTSTR msg)
{
AfxMessageBox(CString(_T("Error: ")) + msg);
}
AfxMessageBox(
_T("Usage: vsconv.exe \n\n")
_T("-f \"format\" (winsubmux, scenarist, maestro)\n")
_T("-i \"input\"\n")
_T("-o \"output\"\n")
_T("-id 0-31 (optional)\n")
_T("-ignoreforcedonly (optional)\n")
_T("-forcedonly (optional)\n")
);
return FALSE;
}
// TODO
return FALSE;
CvsconvDlg dlg;
m_pMainWnd = &dlg;
INT_PTR nResponse = dlg.DoModal();
if (nResponse == IDOK)
{
// TODO: Place code here to handle when the dialog is
// dismissed with OK
}
else if (nResponse == IDCANCEL)
{
// TODO: Place code here to handle when the dialog is
// dismissed with Cancel
}
// Since the dialog has been closed, return FALSE so that we exit the
// application, rather than start the application's message pump.
return FALSE;
}