Initial
This commit is contained in:
173
guitar/RangeDlg.cpp
Normal file
173
guitar/RangeDlg.cpp
Normal file
@@ -0,0 +1,173 @@
|
||||
#include <guitar/RangeDlg.hpp>
|
||||
#include <guitar/RangeEditDlg.hpp>
|
||||
#include <guitar/guitar.hpp>
|
||||
#include <guitar/TabEntry.hpp>
|
||||
#include <guitar/MessageBox.hpp>
|
||||
#include <common/puredwrd.hpp>
|
||||
#include <common/crsctrl.hpp>
|
||||
|
||||
RangeDialog::RangeDialog(void)
|
||||
{
|
||||
mInitHandler.setCallback(this,&RangeDialog::initHandler);
|
||||
mCreateHandler.setCallback(this,&RangeDialog::createHandler);
|
||||
mCloseHandler.setCallback(this,&RangeDialog::closeHandler);
|
||||
mDestroyHandler.setCallback(this,&RangeDialog::destroyHandler);
|
||||
mCommandHandler.setCallback(this,&RangeDialog::commandHandler);
|
||||
insertHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
insertHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
insertHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
insertHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
insertHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
RangeDialog::RangeDialog(const RangeDialog &someRangeDialog)
|
||||
{ // private implementation
|
||||
*this=someRangeDialog;
|
||||
}
|
||||
|
||||
RangeDialog::~RangeDialog()
|
||||
{
|
||||
removeHandler(VectorHandler::InitDialogHandler,&mInitHandler);
|
||||
removeHandler(VectorHandler::CreateHandler,&mCreateHandler);
|
||||
removeHandler(VectorHandler::CloseHandler,&mCloseHandler);
|
||||
removeHandler(VectorHandler::CommandHandler,&mCommandHandler);
|
||||
removeHandler(VectorHandler::DestroyHandler,&mDestroyHandler);
|
||||
}
|
||||
|
||||
RangeDialog &RangeDialog::operator=(const RangeDialog &someRangeDialog)
|
||||
{ // private implementation
|
||||
return *this;
|
||||
}
|
||||
|
||||
bool RangeDialog::perform(GUIWindow &parentWindow,const TabRanges &ranges,int maxRange,bool isSelect)
|
||||
{
|
||||
Rect clientRect;
|
||||
parentWindow.clientRect(clientRect);
|
||||
mDisplayPoint.x((clientRect.right()-clientRect.left())/2);
|
||||
mDisplayPoint.y((clientRect.bottom()-clientRect.top())/2);
|
||||
mTabRanges=ranges;
|
||||
mMaxRange=maxRange;
|
||||
mIsSelection=isSelect;
|
||||
return ::DialogBoxParam(processInstance(),(LPSTR)"RANGEDIALOG",(HWND)parentWindow,DWindow::DlgProc,(LPARAM)(DWindow*)this);
|
||||
}
|
||||
|
||||
CallbackData::ReturnType RangeDialog::initHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
Block<PureDWORD> stops;
|
||||
mDisplayPoint.x(mDisplayPoint.x()-(width()/2));
|
||||
mDisplayPoint.y(mDisplayPoint.y()-(height()/2));
|
||||
move(mDisplayPoint);
|
||||
mRangeList=::new OwnerDrawListAltColor(*this,getItem(RANGE_LIST),RANGE_LIST);
|
||||
mRangeList.disposition(PointerDisposition::Delete);
|
||||
stops.insert(&PureDWORD(35));
|
||||
stops.insert(&PureDWORD(55));
|
||||
mRangeList->setTabStops(stops);
|
||||
setRangeList();
|
||||
if(mIsSelection)
|
||||
{
|
||||
enable(RANGE_INSERT,false);
|
||||
enable(RANGE_DELETE,false);
|
||||
setCaption("Range Select");
|
||||
}
|
||||
return (CallbackData::ReturnType)false;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType RangeDialog::createHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType RangeDialog::closeHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType RangeDialog::destroyHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
CallbackData::ReturnType RangeDialog::commandHandler(CallbackData &someCallbackData)
|
||||
{
|
||||
switch(someCallbackData.wmCommandID())
|
||||
{
|
||||
case IDCANCEL :
|
||||
endDialog(false);
|
||||
break;
|
||||
case IDOK :
|
||||
if(mIsSelection)handleRangeSelection();
|
||||
endDialog(true);
|
||||
break;
|
||||
case RANGE_INSERT :
|
||||
handleRangeInsert();
|
||||
break;
|
||||
case RANGE_DELETE :
|
||||
handleRangeDelete();
|
||||
break;
|
||||
}
|
||||
if(LBN_DBLCLK==someCallbackData.wmCommandCommand())
|
||||
{
|
||||
if(mIsSelection)
|
||||
{
|
||||
handleRangeSelection();
|
||||
endDialog(true);
|
||||
}
|
||||
else handleRangeEditSelection();
|
||||
}
|
||||
return (CallbackData::ReturnType)FALSE;
|
||||
}
|
||||
|
||||
void RangeDialog::setRangeList(void)
|
||||
{
|
||||
for(int index=0;index<mTabRanges.size();index++)
|
||||
{
|
||||
String strItem;
|
||||
Range &range=mTabRanges[index];
|
||||
mRangeList->addString(range.toTabbedString());
|
||||
}
|
||||
mRangeList->setCurrent(0);
|
||||
return;
|
||||
}
|
||||
|
||||
void RangeDialog::handleRangeSelection(void)
|
||||
{
|
||||
mSelection=mRangeList->getCurrent();
|
||||
}
|
||||
|
||||
void RangeDialog::handleRangeEditSelection(void)
|
||||
{
|
||||
RangeEditDialog rangeEditDialog;
|
||||
int currSel;
|
||||
|
||||
currSel=mRangeList->getCurrent();
|
||||
if(!rangeEditDialog.perform(*this,mTabRanges[currSel],mMaxRange))return;
|
||||
Range range=rangeEditDialog.getRange();
|
||||
mTabRanges.remove(currSel);
|
||||
mTabRanges.insert(&range);
|
||||
mRangeList->deleteString(currSel);
|
||||
mRangeList->insertString(range.toTabbedString());
|
||||
}
|
||||
|
||||
void RangeDialog::handleRangeInsert(void)
|
||||
{
|
||||
RangeEditDialog rangeEditDialog;
|
||||
Range range;
|
||||
|
||||
if(!rangeEditDialog.perform(*this,range,mMaxRange))return;
|
||||
range=rangeEditDialog.getRange();
|
||||
mTabRanges.insert(&range);
|
||||
mRangeList->insertString(range.toTabbedString());
|
||||
}
|
||||
|
||||
void RangeDialog::handleRangeDelete(void)
|
||||
{
|
||||
int currSel;
|
||||
|
||||
if(-1==(currSel=mRangeList->getCurrent()))return;
|
||||
if(IDCANCEL==MessageBox::messageBox(*this,"Confirm Delete","Delete Range Item"))return;
|
||||
mRangeList->deleteString(currSel);
|
||||
mTabRanges.remove(currSel);
|
||||
currSel--;
|
||||
if(currSel<0)mRangeList->setCurrent(0);
|
||||
else mRangeList->setCurrent(currSel);
|
||||
}
|
||||
Reference in New Issue
Block a user