110 lines
3.4 KiB
C++
110 lines
3.4 KiB
C++
#include <cashflow/calcdlg.hpp>
|
|
#include <cashflow/cashdefs.hpp>
|
|
#include <cashflow/cashflow.hpp>
|
|
#include <cashflow/ppydlg.hpp>
|
|
#include <cashflow/graphwnd.hpp>
|
|
#include <fpsheet/fpsheet.hpp>
|
|
#include <common/stdio.hpp>
|
|
#include <common/crsctrl.hpp>
|
|
|
|
CallbackData::ReturnType CalcDlg::initHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
mlpGraphWindow=new GraphWindow(*this,Rect(3,254,558,146));
|
|
mlpCalcThread=new CalcThread();
|
|
mlpCalcSheet=new FPSheet(*this,360,(Factor-IssBal)+1,Rect(xPos,yPos,cxPos,cyPos),mFont);
|
|
mlpCalcSheet->show();
|
|
setColumnTitles();
|
|
setColumnTypes();
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType CalcDlg::destroyHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
if(mlpCalcThread){delete mlpCalcThread;mlpCalcThread=0;}
|
|
if(mlpCalcSheet){delete mlpCalcSheet;mlpCalcSheet=0;}
|
|
if(mlpGraphWindow){delete mlpGraphWindow;mlpGraphWindow=0;}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType CalcDlg::closeHandler(CallbackData &/*someCallbackData*/)
|
|
{
|
|
endDialog(TRUE);
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
CallbackData::ReturnType CalcDlg::commandHandler(CallbackData &someCallbackData)
|
|
{
|
|
switch(someCallbackData.wmCommandID())
|
|
{
|
|
case IDCANCEL :
|
|
endDialog(FALSE);
|
|
break;
|
|
case IDOK :
|
|
generateFlows();
|
|
break;
|
|
case CALC_PREPAYMENTS :
|
|
if(sendMessage(CALC_PREPAYMENTS,BM_GETCHECK,0,0L))
|
|
{
|
|
handlePrepayments();
|
|
sendMessage(CALC_PREPAYMENTS,BM_SETCHECK,0,0L);
|
|
}
|
|
break;
|
|
case CALC_TERM :
|
|
break;
|
|
case CALC_COUPON :
|
|
break;
|
|
case CALC_PRINCIPAL :
|
|
break;
|
|
case CALC_CALCULATE :
|
|
generateFlows();
|
|
break;
|
|
}
|
|
return (CallbackData::ReturnType)FALSE;
|
|
}
|
|
|
|
void CalcDlg::setColumnTitles(void)
|
|
{
|
|
mlpCalcSheet->setColumnTitle(IssBal,String("IssBal"));
|
|
mlpCalcSheet->setColumnTitle(SMM,String("SMM"));
|
|
mlpCalcSheet->setColumnTitle(MtgPay,String("MtgPay"));
|
|
mlpCalcSheet->setColumnTitle(NetIntPay,String("NetIntPay"));
|
|
mlpCalcSheet->setColumnTitle(GrossInt,String("GrossInt"));
|
|
mlpCalcSheet->setColumnTitle(SchPrn,String("SchPrn"));
|
|
mlpCalcSheet->setColumnTitle(Prepay,String("Prepay"));
|
|
mlpCalcSheet->setColumnTitle(TotPrin,String("TotPrin"));
|
|
mlpCalcSheet->setColumnTitle(Cashflow,String("Cashflow"));
|
|
mlpCalcSheet->setColumnTitle(Factor,String("Factor"));
|
|
mlpCalcSheet->setColumnWidth(IssBal,9);
|
|
mlpCalcSheet->setColumnWidth(GrossInt,9);
|
|
mlpCalcSheet->setColumnWidth(Factor,9);
|
|
}
|
|
|
|
void CalcDlg::setColumnTypes(void)
|
|
{
|
|
Block<ColumnType> columnTypes;
|
|
|
|
columnTypes.insert(&ColumnType(IssBal,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(SMM,ColumnType::Float,"#.########"));
|
|
columnTypes.insert(&ColumnType(MtgPay,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(NetIntPay,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(GrossInt,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(SchPrn,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(Prepay,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(TotPrin,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(Cashflow,ColumnType::Money,"#########.##"));
|
|
columnTypes.insert(&ColumnType(Factor,ColumnType::Float,"#.#########"));
|
|
mlpCalcSheet->setColumnType(columnTypes);
|
|
}
|
|
|
|
void CalcDlg::handlePrepayments(void)
|
|
{
|
|
PPYDlg ppyDlg;
|
|
if(ppyDlg.createDialog(*this,mPrePay))generateFlows();
|
|
}
|
|
|
|
void CalcDlg::generateFlows(void)
|
|
{
|
|
mlpCalcThread->startCalc(*this);
|
|
}
|
|
|