|
From: <mbe...@us...> - 2010-07-06 19:26:29
|
Revision: 827
http://scstudio.svn.sourceforge.net/scstudio/?rev=827&view=rev
Author: mbezdeka
Date: 2010-07-06 19:26:23 +0000 (Tue, 06 Jul 2010)
Log Message:
-----------
Message numbering - bugs fixed
Modified Paths:
--------------
trunk/doc/help/frontend/message-numbering.html
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/document.cpp
trunk/src/view/visio/addon/document.h
trunk/src/view/visio/addon/document_check.cpp
trunk/src/view/visio/addon/enumerateUtils.cpp
trunk/src/view/visio/addon/enumerateUtils.h
Modified: trunk/doc/help/frontend/message-numbering.html
===================================================================
--- trunk/doc/help/frontend/message-numbering.html 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/doc/help/frontend/message-numbering.html 2010-07-06 19:26:23 UTC (rev 827)
@@ -19,8 +19,8 @@
<p>You can choose:<br/>
- specific numbering type (numbers, letters, capital letters, romans)<br/>
-- starting index (1-9999)<br/>
-- and additional string following the index such as ".", "-", … (max 4 chars)<br/>
+- starting index (1-9999 for number, letters and capital letters and 1-3999 for romans)<br/>
+- and additional string following the index such as ".", "-", … (max 4 chars). A space between the index and the message label is added automatically.<br/>
</p>
<p>
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/src/view/visio/addon/addon.cpp 2010-07-06 19:26:23 UTC (rev 827)
@@ -54,7 +54,7 @@
const unsigned short visEvtConnectionsDeleted = Visio::visEvtDel | Visio::visEvtConnect;
CStudioAddon::CStudioAddon(LPCTSTR pName, UINT uIDLocalName)
- : VAddon(VAO_AOATTS_ISACTION | VAO_AOATTS_HASABOUT, VAO_ENABLEALWAYS, 0, 0, pName, uIDLocalName)
+: VAddon(VAO_AOATTS_ISACTION | VAO_AOATTS_HASABOUT, VAO_ENABLEALWAYS, 0, 0, pName, uIDLocalName)
{
m_pIAddonSink = NULL;
m_keyButtonState = 0;
@@ -206,30 +206,30 @@
switch(args.OptionId())
{
- case OPT_VISIO:
- iVisio = _tstol(args.OptionArg());
- break;
- case OPT_EVENT:
- iEvent = _tstol(args.OptionArg());
- break;
- case OPT_EVENTID:
- // FIXME: what is this parameter for?
- break;
- case OPT_DOC:
- iDocumentIndex = _tstol(args.OptionArg());
- break;
- case OPT_PAGE:
- iPageIndex = _tstol(args.OptionArg());
- break;
- case OPT_SHAPE:
- sShape = args.OptionArg();
- break;
- case OPT_SHAPEU:
- sShapeU = args.OptionArg();
- break;
- default:
- TRACE("CStudioAddon::Run() unexpected argument id=" << args.OptionId());
- break;
+ case OPT_VISIO:
+ iVisio = _tstol(args.OptionArg());
+ break;
+ case OPT_EVENT:
+ iEvent = _tstol(args.OptionArg());
+ break;
+ case OPT_EVENTID:
+ // FIXME: what is this parameter for?
+ break;
+ case OPT_DOC:
+ iDocumentIndex = _tstol(args.OptionArg());
+ break;
+ case OPT_PAGE:
+ iPageIndex = _tstol(args.OptionArg());
+ break;
+ case OPT_SHAPE:
+ sShape = args.OptionArg();
+ break;
+ case OPT_SHAPEU:
+ sShapeU = args.OptionArg();
+ break;
+ default:
+ TRACE("CStudioAddon::Run() unexpected argument id=" << args.OptionId());
+ break;
}
}
free(cmdline);
@@ -260,84 +260,84 @@
// execute the relevant event handler
switch(iEvent)
{
- case 1: // DocumentCreate
- case 2: // DocumentOpen
- return VAORC_SUCCESS;
+ case 1: // DocumentCreate
+ case 2: // DocumentOpen
+ return VAORC_SUCCESS;
// 1xx events
// note: to keep stencil compatibility, the 1xx events must not be renumbered
- case 100:
- TRACE("CStudioAddon::Run() stencil event 'OnDrop'");
- return pDocumentMonitor->OnDropShape(iDocumentIndex, iPageIndex, sShapeU);
- case 101:
- TRACE("CStudioAddon::Run() reference action 'Open Reference'");
- return pDocumentMonitor->OnOpenReference(iDocumentIndex, iPageIndex, sShapeU);
- case CDocumentMonitor::MENU_ADD_INSTANCES: // 102
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Add Instances'");
- return DoInstancesField(pDocumentMonitor, vsoApp);
- case CDocumentMonitor::MENU_MESSAGE_SEQUENCE: // 103
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Message Sequence'");
- return pDocumentMonitor->OnMenuMessageSequence(vsoApp);
- case CDocumentMonitor::MENU_SELECT_NUMBERED_GROUP: //104
- TRACE("CStudioAddon::Run() menu item 'context menu - select numbering group'");
- return pDocumentMonitor->OnMenuSelectNumberedGroup(vsoApp);
+ case 100:
+ TRACE("CStudioAddon::Run() stencil event 'OnDrop'");
+ return pDocumentMonitor->OnDropShape(iDocumentIndex, iPageIndex, sShapeU);
+ case 101:
+ TRACE("CStudioAddon::Run() reference action 'Open Reference'");
+ return pDocumentMonitor->OnOpenReference(iDocumentIndex, iPageIndex, sShapeU);
+ case CDocumentMonitor::MENU_ADD_INSTANCES: // 102
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Add Instances'");
+ return DoInstancesField(pDocumentMonitor, vsoApp);
+ case CDocumentMonitor::MENU_MESSAGE_SEQUENCE: // 103
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Message Sequence'");
+ return pDocumentMonitor->OnMenuMessageSequence(vsoApp);
+ case CDocumentMonitor::MENU_SELECT_NUMBERED_GROUP: //104
+ TRACE("CStudioAddon::Run() menu item 'context menu - select numbering group'");
+ return pDocumentMonitor->OnMenuSelectNumberedGroup(vsoApp);
// 2xx events
- case CDocumentMonitor::MENU_WINDOWS_REPORTER:
- TRACE("CStudioAddon::Run() menu item 'Check--Windows--Verification Report'");
- return pDocumentMonitor->OnMenuWindowsReporter(vsoApp);
- case CDocumentMonitor::MENU_IMPORT:
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Import'");
- return pDocumentMonitor->OnMenuImport(vsoApp);
- case CDocumentMonitor::MENU_EXPORT:
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Export'");
- return pDocumentMonitor->OnMenuExport(vsoApp);
- case CDocumentMonitor::MENU_REPAINT:
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Repaint'");
- return pDocumentMonitor->OnMenuRepaint(vsoApp);
- case CDocumentMonitor::MENU_FIND_FLOW:
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Find Flow'");
- return pDocumentMonitor->OnMenuFindFlow(vsoApp);
- case CDocumentMonitor::MENU_SIMULATION_START:
- TRACE("CStudioAddon::Run() menu item 'Check--Start Simulation'");
- return pDocumentMonitor->OnMenuSimulationStart(vsoApp);
- case CDocumentMonitor::MENU_SIMULATION_STOP:
- TRACE("CStudioAddon::Run() menu item 'Check--Stop Simulation'");
- return pDocumentMonitor->OnMenuSimulationStop(vsoApp);
- case CDocumentMonitor::MENU_SIMULATOR_OPTIONS:
- TRACE("CStudioAddon::Run() menu item 'Check--Simulator Options'");
- return DisplaySimulatorOptions();
- case CDocumentMonitor::MENU_VERIFY:
- TRACE("CStudioAddon::Run() menu item 'Check--Verify'");
- return pDocumentMonitor->OnMenuVerify(vsoApp);
- case CDocumentMonitor::MENU_CHECK_OPTIONS:
- TRACE("CStudioAddon::Run() menu item 'Check--Options'");
- return DisplayCheckOptions();
- case CDocumentMonitor::MENU_SELECT_ALL_INSTANCES:
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Select--All Instances'");
- return pDocumentMonitor->OnMenuSelectAllInstances(vsoApp, SELECTION_REPLACE);
- case CDocumentMonitor::MENU_SELECT_ALL_MESSAGES:
- TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Select--All Messages'");
- return pDocumentMonitor->OnMenuSelectAllMessages(vsoApp, SELECTION_REPLACE);
- case CDocumentMonitor::MENU_SELECT_ADD_ALL_INSTANCES:
- TRACE("CStudioAddon::Run() add all instances to the current selection");
- return pDocumentMonitor->OnMenuSelectAllInstances(vsoApp, SELECTION_ADD);
- case CDocumentMonitor::MENU_SELECT_ADD_ALL_MESSAGES:
- TRACE("CStudioAddon::Run() add all messages to the current selection");
- return pDocumentMonitor->OnMenuSelectAllMessages(vsoApp, SELECTION_ADD);
- case CDocumentMonitor::MENU_ENABLE_MESSAGE_ENUMERATION:
- TRACE("CStudioAddon::Run() enable message enumeration");
- return pDocumentMonitor->OnMenuEnableMessageEnumeration(vsoApp);
- case CDocumentMonitor::MENU_DISABLE_MESSAGE_ENUMERATION:
- TRACE("CStudioAddon::Run() disable message enumeration");
- return pDocumentMonitor->OnMenuDisableMessageEnumeration(vsoApp);
- case CDocumentMonitor::MENU_GLOBAL_SETTINGS:
- TRACE("CStudioAddon::Run() global settings");
- return pDocumentMonitor->OnMenuGlobalSettings(vsoApp);
+ case CDocumentMonitor::MENU_WINDOWS_REPORTER:
+ TRACE("CStudioAddon::Run() menu item 'Check--Windows--Verification Report'");
+ return pDocumentMonitor->OnMenuWindowsReporter(vsoApp);
+ case CDocumentMonitor::MENU_IMPORT:
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Import'");
+ return pDocumentMonitor->OnMenuImport(vsoApp);
+ case CDocumentMonitor::MENU_EXPORT:
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Export'");
+ return pDocumentMonitor->OnMenuExport(vsoApp);
+ case CDocumentMonitor::MENU_REPAINT:
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Repaint'");
+ return pDocumentMonitor->OnMenuRepaint(vsoApp);
+ case CDocumentMonitor::MENU_FIND_FLOW:
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Find Flow'");
+ return pDocumentMonitor->OnMenuFindFlow(vsoApp);
+ case CDocumentMonitor::MENU_SIMULATION_START:
+ TRACE("CStudioAddon::Run() menu item 'Check--Start Simulation'");
+ return pDocumentMonitor->OnMenuSimulationStart(vsoApp);
+ case CDocumentMonitor::MENU_SIMULATION_STOP:
+ TRACE("CStudioAddon::Run() menu item 'Check--Stop Simulation'");
+ return pDocumentMonitor->OnMenuSimulationStop(vsoApp);
+ case CDocumentMonitor::MENU_SIMULATOR_OPTIONS:
+ TRACE("CStudioAddon::Run() menu item 'Check--Simulator Options'");
+ return DisplaySimulatorOptions();
+ case CDocumentMonitor::MENU_VERIFY:
+ TRACE("CStudioAddon::Run() menu item 'Check--Verify'");
+ return pDocumentMonitor->OnMenuVerify(vsoApp);
+ case CDocumentMonitor::MENU_CHECK_OPTIONS:
+ TRACE("CStudioAddon::Run() menu item 'Check--Options'");
+ return DisplayCheckOptions();
+ case CDocumentMonitor::MENU_SELECT_ALL_INSTANCES:
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Select--All Instances'");
+ return pDocumentMonitor->OnMenuSelectAllInstances(vsoApp, SELECTION_REPLACE);
+ case CDocumentMonitor::MENU_SELECT_ALL_MESSAGES:
+ TRACE("CStudioAddon::Run() menu item 'Check--Drawing--Select--All Messages'");
+ return pDocumentMonitor->OnMenuSelectAllMessages(vsoApp, SELECTION_REPLACE);
+ case CDocumentMonitor::MENU_SELECT_ADD_ALL_INSTANCES:
+ TRACE("CStudioAddon::Run() add all instances to the current selection");
+ return pDocumentMonitor->OnMenuSelectAllInstances(vsoApp, SELECTION_ADD);
+ case CDocumentMonitor::MENU_SELECT_ADD_ALL_MESSAGES:
+ TRACE("CStudioAddon::Run() add all messages to the current selection");
+ return pDocumentMonitor->OnMenuSelectAllMessages(vsoApp, SELECTION_ADD);
+ case CDocumentMonitor::MENU_ENABLE_MESSAGE_ENUMERATION:
+ TRACE("CStudioAddon::Run() enable message enumeration");
+ return pDocumentMonitor->OnMenuEnableMessageEnumeration(vsoApp);
+ case CDocumentMonitor::MENU_DISABLE_MESSAGE_ENUMERATION:
+ TRACE("CStudioAddon::Run() disable message enumeration");
+ return pDocumentMonitor->OnMenuDisableMessageEnumeration(vsoApp);
+ case CDocumentMonitor::MENU_GLOBAL_SETTINGS:
+ TRACE("CStudioAddon::Run() global settings");
+ return pDocumentMonitor->OnMenuGlobalSettings(vsoApp);
- default:
- TRACE("CStudioAddon::Run() unexpected event id=" << iEvent);
- return VAORC_FAILURE;
+ default:
+ TRACE("CStudioAddon::Run() unexpected event id=" << iEvent);
+ return VAORC_FAILURE;
}
}
}
@@ -416,16 +416,16 @@
CPageUtils::ConvertUnits(vsoApp, dlg.m_instance_width, visPageUnits, visMillimeters),
CPageUtils::ConvertUnits(vsoApp, dlg.m_start_pos_x, visPageUnits, visMillimeters),
CPageUtils::ConvertUnits(vsoApp,
- (CPageUtils::GetPageHeight(vsoApp->ActivePage) - dlg.m_start_pos_y), // the drawing y-coordinates are upside down
- visPageUnits, visMillimeters),
+ (CPageUtils::GetPageHeight(vsoApp->ActivePage) - dlg.m_start_pos_y), // the drawing y-coordinates are upside down
+ visPageUnits, visMillimeters),
dlg.m_use_const_spacing,
CPageUtils::ConvertUnits(vsoApp, (dlg.m_use_const_spacing ? dlg.m_spacing : dlg.m_total_width), visPageUnits, visMillimeters)
);
}
HRESULT CStudioAddon::HandleVisioEvent(
- IUnknown *ipSink, short nEventCode, IDispatch *pSourceObj, long nEventID,
- long nEventSeqNum, IDispatch *pSubjectObj, VARIANT vMoreInfo, VARIANT *pvResult)
+ IUnknown *ipSink, short nEventCode, IDispatch *pSourceObj, long nEventID,
+ long nEventSeqNum, IDispatch *pSubjectObj, VARIANT vMoreInfo, VARIANT *pvResult)
{
try
{
@@ -438,78 +438,78 @@
unsigned short event = nEventCode;
switch (event)
{
- case visEvtBeforeDocumentClose:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtBeforeDocumentClose");
- break;
- case visEvtPageAdded:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtPageAdded");
- break;
+ case visEvtBeforeDocumentClose:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtBeforeDocumentClose");
+ break;
+ case visEvtPageAdded:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtPageAdded");
+ break;
- case visEvtCellChanged:
- HandleCellChanged(pSubjectObj);
- break;
+ case visEvtCellChanged:
+ HandleCellChanged(pSubjectObj);
+ break;
- case visEvtConnectionsAdded:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsAdded");
- HandleConnectionsAdded(pSubjectObj);
- break;
- case visEvtConnectionsDeleted:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsDeleted");
- break;
+ case visEvtConnectionsAdded:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsAdded");
+ HandleConnectionsAdded(pSubjectObj);
+ break;
+ case visEvtConnectionsDeleted:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsDeleted");
+ break;
- case visEvtApp|visEvtMarker:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtMarker");
- HandleMarker(pSubjectObj);
- break;
-
- case Visio::visEvtCodeKeyDown:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeKeyDown");
- HandleKeyDown(pSubjectObj, pSourceObj);
- break;
+ case visEvtApp|visEvtMarker:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtMarker");
+ HandleMarker(pSubjectObj);
+ break;
- case Visio::visEvtCodeKeyUp:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeKeyUp");
- HandleKeyUp(pSubjectObj, pSourceObj);
- break;
+ case Visio::visEvtCodeKeyDown:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeKeyDown");
+ HandleKeyDown(pSubjectObj, pSourceObj);
+ break;
- case Visio::visEvtCodeMouseMove:
- //TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeMouseMove");
- HandleMouseMove(pSubjectObj, pSourceObj);
- break;
+ case Visio::visEvtCodeKeyUp:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeKeyUp");
+ HandleKeyUp(pSubjectObj, pSourceObj);
+ break;
- case Visio::visEvtCodeWinSelChange:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeWinSelChange");
- HandleWinSelChange(pSourceObj);
- break;
+ case Visio::visEvtCodeMouseMove:
+ //TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeMouseMove");
+ HandleMouseMove(pSubjectObj, pSourceObj);
+ break;
- case Visio::visEvtCodeShapeBeforeTextEdit:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeShapeBeforeTextEdit");
- HandleBeforeTextEdit(pSubjectObj, pSourceObj);
- break;
+ case Visio::visEvtCodeWinSelChange:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeWinSelChange");
+ HandleWinSelChange(pSourceObj);
+ break;
- case Visio::visEvtCodeShapeExitTextEdit:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeShapeExitTextEdit");
- HandleAfterTextEdit(pSubjectObj, pSourceObj);
- break;
+ case Visio::visEvtCodeShapeBeforeTextEdit:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeShapeBeforeTextEdit");
+ HandleBeforeTextEdit(pSubjectObj, pSourceObj);
+ break;
- case Visio::visEvtDel+Visio::visEvtShape:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeShapeDelete");
- HandleBeforeShapeDeleted(pSubjectObj, pSourceObj);
- break;
+ case Visio::visEvtCodeShapeExitTextEdit:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeShapeExitTextEdit");
+ HandleAfterTextEdit(pSubjectObj, pSourceObj);
+ break;
- case visEvtApp+visEvtNonePending:
- TRACE("CStudioAddon::HandleVisioEvent() visEvtNonePending");
- HandleNonePending(pSourceObj);
- break;
+ case Visio::visEvtDel+Visio::visEvtShape:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtCodeShapeDelete");
+ HandleBeforeShapeDeleted(pSubjectObj, pSourceObj);
+ break;
- case visEvtMod+visEvtText:
- HandleTextChanged(pSubjectObj,pSourceObj);
- break;
+ case visEvtApp+visEvtNonePending:
+ TRACE("CStudioAddon::HandleVisioEvent() visEvtNonePending");
+ HandleNonePending(pSourceObj);
+ break;
- default:
- TRACE("CStudioAddon::HandleVisioEvent() unexpected event id="
- << std::ios::hex << event);
- break;
+ case visEvtMod+visEvtText:
+ HandleTextChanged(pSubjectObj,pSourceObj);
+ break;
+
+ default:
+ TRACE("CStudioAddon::HandleVisioEvent() unexpected event id="
+ << std::ios::hex << event);
+ break;
}
return NOERROR;
@@ -545,18 +545,18 @@
if(get_shape_type(fromConnect->FromSheet) == ST_BMSC_COREGION)
fromConnect->FromSheet->CellsSRC[visSectionObject][visRowXFormOut][visXFormHeight]->ResultIU = value*2;
}
- }
+ }
}
//Message enumeration
if((_tcsicmp(vsoCell->Name,_T("PinX")) == 0 || _tcsicmp(vsoCell->Name,_T("PinY")) == 0) &&
- (GetDocumentMonitor(vsoCell->Application,vsoCell->Application->ActiveDocument)->isMessageShape(vsoCell->Shape)) &&
- (_tcsicmp(vsoCell->Shape->Data1,_T("1")) == 0))
- {
- //add to set
- m_enumerationGroups.insert(vsoCell->Shape->Data3);
- m_bCellChanged = true;
- }
+ (GetDocumentMonitor(vsoCell->Application,vsoCell->Application->ActiveDocument)->isMessageShape(vsoCell->Shape)) &&
+ (_tcsicmp(vsoCell->Shape->Data1,_T("1")) == 0))
+ {
+ //add to set
+ m_enumerationGroups.insert(vsoCell->Shape->Data3);
+ m_bCellChanged = true;
+ }
}
void CStudioAddon::HandleConnectionsAdded(Visio::IVConnectsPtr vsoConnects)
@@ -652,47 +652,63 @@
void CStudioAddon::HandleNonePending(Visio::IVApplicationPtr vsoApp)
{
- if(m_bShapeDeleted || m_bCellChanged)
- {
- Visio::IVShapesPtr shapesPtr = vsoApp->ActivePage->Shapes;
+ if(m_bShapeDeleted || m_bCellChanged)
+ {
+ Visio::IVShapesPtr shapesPtr = vsoApp->ActivePage->Shapes;
+ CDocumentMonitor* docMon = GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument);
- for(std::set<_bstr_t>::iterator it = m_enumerationGroups.begin(); it != m_enumerationGroups.end(); it++)
- GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->drawNumbers(shapesPtr,*it);
+ for(std::set<_bstr_t>::iterator it = m_enumerationGroups.begin(); it != m_enumerationGroups.end(); it++)
+ docMon->drawNumbers(shapesPtr,*it);
- m_enumerationGroups.clear();
+ m_enumerationGroups.clear();
- m_bShapeDeleted = m_bCellChanged = false;
- }
+ //Check whether there are still some numbered messages, otherwise erase enum info
+ bool bNumberedMsg = false;
+ for(int i=1; i<=vsoApp->ActivePage->Shapes->Count; i++)
+ {
+ Visio::IVShapePtr shape = vsoApp->ActivePage->Shapes->Item[i];
+ if(docMon->isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0)
+ {
+ bNumberedMsg = true;
+ break;
+ }
+ }
+ if(!bNumberedMsg)
+ CEnumerateUtils::eraseEnumInfo(vsoApp);
+
+ //Set variables to false to prevent this function from loop
+ m_bShapeDeleted = m_bCellChanged = false;
+ }
}
void CStudioAddon::HandleBeforeTextEdit(Visio::IVShapePtr shapePtr, Visio::IVApplicationPtr vsoApp)
{
- if(GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->isMessageShape(shapePtr) && _tcsicmp(shapePtr->Data1,_T("1")) == 0)
- {
- GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->ToogleNumeration(false);
- shapePtr->Text = shapePtr->Data2;
- m_bMessageTextEdited = true;
- }
+ if(GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->isMessageShape(shapePtr) && _tcsicmp(shapePtr->Data1,_T("1")) == 0)
+ {
+ GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->ToogleNumeration(false);
+ shapePtr->Text = shapePtr->Data2;
+ m_bMessageTextEdited = true;
+ }
}
void CStudioAddon::HandleAfterTextEdit(Visio::IVShapePtr shapePtr, Visio::IVApplicationPtr vsoApp)
{
- if(m_bMessageTextEdited)
- {
- shapePtr->Data2 = shapePtr->Text;
- GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->drawNumbers(vsoApp->ActivePage->Shapes, shapePtr->Data3);
- m_bMessageTextEdited = false;
- }
- GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->ToogleNumeration(true);
+ if(m_bMessageTextEdited)
+ {
+ shapePtr->Data2 = shapePtr->Text;
+ GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->drawNumbers(vsoApp->ActivePage->Shapes, shapePtr->Data3);
+ m_bMessageTextEdited = false;
+ }
+ GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->ToogleNumeration(true);
}
void CStudioAddon::HandleBeforeShapeDeleted(Visio::IVShapePtr shapePtr, Visio::IVApplicationPtr vsoApp)
{
- if(GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->isMessageShape(shapePtr) && _tcsicmp(shapePtr->Data1,_T("1")) == 0)
- {
- m_enumerationGroups.insert(shapePtr->Data3);
- m_bShapeDeleted = true;
- }
+ if(GetDocumentMonitor(vsoApp,vsoApp->ActiveDocument)->isMessageShape(shapePtr) && _tcsicmp(shapePtr->Data1,_T("1")) == 0)
+ {
+ m_enumerationGroups.insert(shapePtr->Data3);
+ m_bShapeDeleted = true;
+ }
}
void CStudioAddon::HandleTextChanged(Visio::IVShapePtr shapePtr,Visio::IVDocumentPtr vsoDocument)
@@ -770,11 +786,11 @@
vsoApp->EventList->AddAdvise(Visio::visEvtCodeKeyDown, varSink, _T(""), _T("KeyDown"));
vsoApp->EventList->AddAdvise(Visio::visEvtCodeKeyUp, varSink, _T(""), _T("KeyUp"));
vsoApp->EventList->AddAdvise(Visio::visEvtCodeMouseMove, varSink, _T(""), _T("MouseMove"));
- // Message enumeration events
- vsoApp->EventList->AddAdvise(Visio::visEvtCodeShapeBeforeTextEdit, varSink, _T(""), _T("BeforeTextEdit"));
- vsoApp->EventList->AddAdvise(Visio::visEvtCodeShapeExitTextEdit, varSink, _T(""), _T("AfterTextEdit"));
- vsoApp->EventList->AddAdvise(visEvtApp+visEvtNonePending, varSink, _T(""), _T("NonePending"));
- vsoApp->EventList->AddAdvise(visEvtDel+visEvtShape, varSink, _T(""), _T("ShapeDeleted"));
+ // Message enumeration events
+ vsoApp->EventList->AddAdvise(Visio::visEvtCodeShapeBeforeTextEdit, varSink, _T(""), _T("BeforeTextEdit"));
+ vsoApp->EventList->AddAdvise(Visio::visEvtCodeShapeExitTextEdit, varSink, _T(""), _T("AfterTextEdit"));
+ vsoApp->EventList->AddAdvise(visEvtApp+visEvtNonePending, varSink, _T(""), _T("NonePending"));
+ vsoApp->EventList->AddAdvise(visEvtDel+visEvtShape, varSink, _T(""), _T("ShapeDeleted"));
vsoApp->EventList->AddAdvise(visEvtCodeWinSelChange, varSink, _T(""), _T("SelectionChanges"));
@@ -791,7 +807,7 @@
vsoEvent = vsoDocumentEventList->AddAdvise(visEvtPageAdded, varSink, _T(""), _T(""));
pDocumentMonitor->m_vsoPageAddedEvent = vsoEvent;
- vsoDocumentEventList->AddAdvise(visEvtMod+visEvtText, varSink, _T(""), _T("TextChanged"));
+ vsoDocumentEventList->AddAdvise(visEvtMod+visEvtText, varSink, _T(""), _T("TextChanged"));
vsoDocumentEventList->AddAdvise(visEvtCellChanged, varSink, _T(""), _T("CellChanged"));
vsoDocumentEventList->AddAdvise(visEvtConnectionsAdded, varSink, _T(""), _T("ConnectionsAdded"));
vsoDocumentEventList->AddAdvise(visEvtConnectionsDeleted, varSink, _T(""), _T("ConnectionsDeleted"));
Modified: trunk/src/view/visio/addon/document.cpp
===================================================================
--- trunk/src/view/visio/addon/document.cpp 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/src/view/visio/addon/document.cpp 2010-07-06 19:26:23 UTC (rev 827)
@@ -666,7 +666,6 @@
m_disableMessageEnumerationToolbarItem->Enabled = enabled;
itemMessageEnumerating->Enabled = enabled;
- //TODO: add hot keys!
accelItemMessageEnumeration->Control = enabled;
accelItemMessageEnumerationDisable->Control = enabled;
@@ -1387,94 +1386,107 @@
VAORC CDocumentMonitor::OnMenuEnableMessageEnumeration(Visio::IVApplicationPtr vsoApp)
{
- static int startingIndex = 1;
- static int numberingType = 0;
- static BSTR add = _T(".");
+ //Static variables so dialog can use them to get previous choice
+ static int startingIndex = 1;
+ static int numberingType = 0;
+ static BSTR add = _T(".");
- CEnumerationDlg options(startingIndex,numberingType, add);
- if(options.DoModal() != IDOK)
- return VAORC_FAILURE;
-
- int ID = CEnumerateUtils::getGroupCount(vsoApp);
-
- _bstr_t groupID = stringize() << _T("Enum") << ++ID;
+ //Check if there are any messages on the page to be numbered
+ Visio::IVShapesPtr shapes = vsoApp->ActivePage->PageSheet->Shapes;
+ bool bMsgExists = false;
+ for(int i=1; i<=shapes->Count; i++)
+ {
+ Visio::IVShapePtr shape = shapes->Item[i];
+ if(isMessageShape(shape))
+ {
+ bMsgExists = true;
+ break;
+ }
+ }
+ if(!bMsgExists)
+ {
+ MessageBox(GetActiveWindow(),_T("There are no messages in the current drawing!"),
+ _T("Error"), MB_ICONWARNING | MB_OK);
+ return VAORC_FAILURE;
+ }
- startingIndex = options.getStartingIndex();
- numberingType = options.getNumberingType();
- add = options.getAddition();
+ CEnumerationDlg options(startingIndex,numberingType, add);
+ if(options.DoModal() != IDOK)
+ return VAORC_FAILURE;
- CEnumerateUtils::saveGroupSettings(vsoApp,groupID,startingIndex,numberingType,add);
-
- if (vsoApp->ActiveWindow->Selection->Count)
- {
- enumerate(vsoApp, groupID, true,true);
- }
- else
- enumerate(vsoApp, groupID, true,false);
+ int ID = CEnumerateUtils::getGroupCount(vsoApp);
- CEnumerateUtils::setGroupCount(vsoApp,ID);
+ _bstr_t groupID = stringize() << _T("Enum") << ++ID;
- return VAORC_SUCCESS;
+ startingIndex = options.getStartingIndex();
+ numberingType = options.getNumberingType();
+ add = options.getAddition();
+
+ CEnumerateUtils::saveGroupSettings(vsoApp,groupID,startingIndex,numberingType,add);
+
+ if (vsoApp->ActiveWindow->Selection->Count)
+ enumerate(vsoApp, groupID, true,true);
+ else
+ enumerate(vsoApp, groupID, true,false);
+
+ CEnumerateUtils::setGroupCount(vsoApp,ID);
+
+ return VAORC_SUCCESS;
}
VAORC CDocumentMonitor::OnMenuDisableMessageEnumeration(Visio::IVApplicationPtr vsoApp)
{
- Visio::IVSelectionPtr selection = vsoApp->ActiveWindow->Selection;
- Visio::IVShapePtr page = vsoApp->ActivePage->PageSheet;
- std::set<_bstr_t> groups;
+ Visio::IVSelectionPtr selection = vsoApp->ActiveWindow->Selection;
+ Visio::IVShapePtr page = vsoApp->ActivePage->PageSheet;
+ std::set<_bstr_t> groups;
- long undo_id = vsoApp->BeginUndoScope("DeleteNumbering");
+ long undo_id = vsoApp->BeginUndoScope("DeleteNumbering");
- int ID = CEnumerateUtils::getGroupCount(vsoApp);
+ //int ID = CEnumerateUtils::getGroupCount(vsoApp);
- //get all numbered messages on the page
- int numberedMessages = 0;
- for(int i=1; i<=page->Shapes->Count; i++)
- {
- Visio::IVShapePtr shape = page->Shapes->Item[i];
- if(isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0)
- numberedMessages++;
- }
+ //get all NUMBERED messages on the page
+ int numberedMessages = 0;
+ for(int i=1; i<=page->Shapes->Count; i++)
+ {
+ Visio::IVShapePtr shape = page->Shapes->Item[i];
+ if(isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0)
+ numberedMessages++;
+ }
- //get all SELECTED numbered messages on the page
- int selectedMessages = 0;
- for(int i=1; i<=selection->Count; i++)
- {
- Visio::IVShapePtr shape = selection->Item[i];
- if(isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0)
- selectedMessages++;
- }
+ int messagesOnSelection = 0; //number of messages in current selection
+ int selectedNumberedMessages = 0; //number of numbered messages in current selection
+ for(int i=1; i<=selection->Count; i++)
+ {
+ Visio::IVShapePtr shape = selection->Item[i];
+ if(isMessageShape(shape))
+ {
+ messagesOnSelection++;
+ if(_tcsicmp(shape->Data1,_T("1")) == 0)
+ selectedNumberedMessages++;
+ }
+ }
- if (selection->Count && (selectedMessages != numberedMessages) && (selectedMessages > 0))
- {
- //get which groups are selected
- for(int i=1; i<= selection->Count; i++)
- if(_tcsicmp(selection->Item[i]->Data1,_T("1")) == 0)
- groups.insert(selection->Item[i]->Data3);
-
- //remove specific messages from groups
- for(std::set<_bstr_t>::iterator it = groups.begin(); it != groups.end(); it++)
- enumerate(vsoApp, *it, false,true);
- }
- else
- {
- enumerate(vsoApp,_T(""), false,false);
- //erase all enum row information
- for(int i=1; i<=ID; i++)
- {
- _bstr_t userGroupID = stringize() << _T("User.Enum") << i;
- if(page->GetCellExists(userGroupID,0) != -1)
- continue;
- page->DeleteRow(visSectionUser,page->GetCells(userGroupID)->Row);
- }
- //erase AutoNumbering information if exists
- CEnumerateUtils::eraseAutoEnumGroup(vsoApp);
- //restore IDs
- CEnumerateUtils::setGroupCount(vsoApp,0);
- }
+ //if this is true, we disable numbering only on selected messages
+ if (selection->Count && (selectedNumberedMessages != numberedMessages) && messagesOnSelection)
+ {
+ //get which groups are selected
+ for(int i=1; i<= selection->Count; i++)
+ if(_tcsicmp(selection->Item[i]->Data1,_T("1")) == 0)
+ groups.insert(selection->Item[i]->Data3);
- vsoApp->EndUndoScope(undo_id,true);
+ //remove specific messages from groups
+ for(std::set<_bstr_t>::iterator it = groups.begin(); it != groups.end(); it++)
+ enumerate(vsoApp, *it, false,true);
+ }
+ else
+ {
+ enumerate(vsoApp,_T(""), false,false);
+ //erase all enum row information
+ CEnumerateUtils::eraseEnumInfo(vsoApp);
+ }
- return VAORC_SUCCESS;
+ vsoApp->EndUndoScope(undo_id,true);
+
+ return VAORC_SUCCESS;
}
void CDocumentMonitor::autoEnumerate(Visio::IVShapePtr msgShape)
@@ -1488,15 +1500,15 @@
if(!GetRegistry<bool>(regFolder, NULL, _T("AutoEnum"), 0))
return;
- Visio::IVShapePtr pageSheet = msgShape->Application->ActivePage->PageSheet;
- Visio::IVShapePtr closestMsg;
+ Visio::IVShapePtr pageSheet = msgShape->Application->ActivePage->PageSheet;
+ Visio::IVShapePtr closestMsg;
int bAutoEnumType = GetRegistry<bool>(regFolder, NULL, _T("AutoEnumType"), 0);
closestMsg = CEnumerateUtils::getClosestMessage(msgShape->Application,msgShape,bAutoEnumType ? true : false);
//enumerate according to closest message
if(closestMsg && _tcsicmp(closestMsg->Data3,_T("")) != 0)
{
- enumerate(msgShape->Application,closestMsg->Data3,true,true);
+ enumerate(msgShape->Application,closestMsg->Data3,true,true);
}
//or use numbering style
else if(GetRegistry<bool>(regFolder, NULL, _T("AutoEnumStyleEnabled"), 0) && bAutoEnumType)
@@ -1505,14 +1517,14 @@
if(autoEnumGroupID == -1)
{
int ID = CEnumerateUtils::getGroupCount(m_vsoApp);
- _bstr_t groupID = stringize() << _T("Enum") << ++ID;
+ _bstr_t groupID = stringize() << _T("Enum") << ++ID;
//addition string
HKEY hKey;
if(RegCreateKey(HKEY_CURRENT_USER, regFolder,&hKey) != ERROR_SUCCESS)
{
MessageBox(GetActiveWindow(), _T("Failed load key for addition string!"), _T("Error"), MB_OK);
- return;
+ return;
}
DWORD dwType = 0;
@@ -1521,38 +1533,22 @@
if(!RegQueryValueEx(hKey,_T("AutoEnumStyleAddition"),0,&dwType, (LPBYTE)buffer, &dwSize) == ERROR_SUCCESS)
{
RegCloseKey(hKey);
- return;
+ return;
}
RegCloseKey(hKey);
-
+
//save group setting into page sheet
CEnumerateUtils::saveGroupSettings(m_vsoApp, groupID,
GetRegistry<int>(regFolder, NULL, _T("AutoEnumStyleIndex"), 1),
GetRegistry<int>(regFolder, NULL, _T("AutoEnumStyleNumType"), 0),
buffer);
-
+
enumerate(m_vsoApp, groupID, true,true);
CEnumerateUtils::setGroupCount(m_vsoApp,ID);
pageSheet->AddNamedRow(visSectionUser,_T("AutoEnumGroupID"),visTagDefault);
pageSheet->Cells["User.AutoEnumGroupID"]->FormulaU = stringize() << ID;
}
- else
- {
- _bstr_t groupID = stringize() << _T("Enum") << autoEnumGroupID;
- enumerate(m_vsoApp, groupID, true,true);
- }
-
- //MessageBox(GetActiveWindow(),temp.c_str(),NULL,MB_OK);
- //if group for auto numbering doesn't exists yet, create a new one
- /*int ID = GetRegistry<int>(regFolder, NULL, _T("AutoEnumGroupID"), -1)
- if(ID == -1)
- {
- ID = CEnumerateUtils::getGroupCount(m_vsoApp);
- SetRegistry<int>
-
- }
- MessageBox(GetActiveWindow(),_T("The group doesn't exists yet!"),NULL, MB_OK);*/
}
}
@@ -1567,159 +1563,115 @@
}
//Re-number groups
for(std::set<_bstr_t>::iterator it = groups.begin(); it != groups.end(); it++)
- drawNumbers(m_vsoApp->ActivePage->Shapes,*it);
+ drawNumbers(m_vsoApp->ActivePage->Shapes,*it);
}
VAORC CDocumentMonitor::OnMenuSelectNumberedGroup(Visio::IVApplicationPtr vsoApp)
{
- CEnumerateUtils::selectGroup(vsoApp,vsoApp->ActiveWindow->Selection->Item[1]->Data3);
+ CEnumerateUtils::selectGroup(vsoApp,vsoApp->ActiveWindow->Selection->Item[1]->Data3);
- return VAORC_SUCCESS;
+ return VAORC_SUCCESS;
}
-bool CDocumentMonitor::temporaryDisableEnumeration(Visio::IVApplicationPtr vsoApp)
+void CDocumentMonitor::enumerate(Visio::IVApplicationPtr vsoApp, _bstr_t groupID, bool enable, bool onlySelected)
{
- //Visio::IVShapesPtr shapesPtr = vsoApp->ActivePage->Shapes;
- //bool isNumbered = false;
+ Visio::IVShapesPtr shapesOnPage = vsoApp->ActivePage->Shapes;
+ Visio::IVSelectionPtr selection = vsoApp->ActiveWindow->Selection;
+ std::set<_bstr_t> formerGroups;
- //for(int i=1; i<=shapesPtr->Count; i++)
- //{
- // Visio::IVShapePtr shape = shapesPtr->Item[i];
- // if(isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0)
- // {
- // vsoApp->EventsEnabled = false;
- // shape->Text = shape->Data2;
- // vsoApp->EventsEnabled = true;
- // isNumbered = true;
- // }
- //}
+ if(onlySelected)
+ {
+ onlySelected = false;
+ for(int i=1; i<=selection->Count; i++)
+ if(isMessageShape(selection->Item[i]))
+ {
+ onlySelected = true; break;
+ }
+ }
- //if(!isNumbered)
- // return false;
+ int maxCount = (onlySelected ? (selection->Count) : (shapesOnPage->Count));
+ for(int i=1; i<=maxCount; i++)
+ {
+ Visio::IVShapePtr shape;
- //Visio::IVShapePtr page = vsoApp->ActivePage->PageSheet;
- //if(page->GetCellExists(_T("User.enumNewMsg"),0))
- // if(page->GetCells(_T("User.enumNewMsg"))-> ResultInt[visNone][visTruncate] != 1)
- // {
- // page->GetCells(_T("User.enumNewMsg"))->Formula = _T("1");
- // return true;
- // }
+ if(onlySelected)
+ shape = selection->Item[i];
+ else
+ shape = shapesOnPage->Item[i];
- return false;
-}
+ if(isMessageShape(shape))
+ {
+ if(enable)
+ CEnumerateUtils::enableEnumeration(shape,groupID,formerGroups);
+ else
+ CEnumerateUtils::disableEnumeration(shape);
-void CDocumentMonitor::restoreDisabledEnumeration(Visio::IVApplicationPtr vsoApp, bool UndoEnumNewMsg)
-{
- //Visio::IVShapesPtr shapesPtr = vsoApp->ActivePage->Shapes;
- //Visio::IVShapePtr page = vsoApp->ActivePage->PageSheet;
+ }
+ }
- //if(UndoEnumNewMsg)
- // if(page->GetCellExists(_T("User.enumNewMsg"),0))
- // if(page->GetCells(_T("User.enumNewMsg"))-> ResultInt[visNone][visTruncate] == 1)
- // page->GetCells(_T("User.enumNewMsg"))->Formula = _T("0");
+ if(enable || onlySelected)
+ drawNumbers(shapesOnPage, groupID);
- //drawNumbers(shapesPtr);
+ if(formerGroups.size())
+ for(std::set<_bstr_t>::iterator it = formerGroups.begin(); it != formerGroups.end(); it++)
+ drawNumbers(shapesOnPage,*it);
}
-void CDocumentMonitor::enumerate(Visio::IVApplicationPtr vsoApp, _bstr_t groupID, bool enable, bool onlySelected)
-{
- Visio::IVShapesPtr shapesOnPage = vsoApp->ActivePage->Shapes;
- Visio::IVSelectionPtr selection = vsoApp->ActiveWindow->Selection;
- std::set<_bstr_t> formerGroups;
-
- if(onlySelected)
- {
- onlySelected = false;
- for(int i=1; i<=selection->Count; i++)
- if(isMessageShape(selection->Item[i]))
- {
- onlySelected = true; break;
- }
- }
-
- int maxCount = (onlySelected ? (selection->Count) : (shapesOnPage->Count));
- for(int i=1; i<=maxCount; i++)
- {
- Visio::IVShapePtr shape;
-
- if(onlySelected)
- shape = selection->Item[i];
- else
- shape = shapesOnPage->Item[i];
-
- if(isMessageShape(shape))
- {
- if(enable)
- CEnumerateUtils::enableEnumeration(shape,groupID,formerGroups);
- else
- CEnumerateUtils::disableEnumeration(shape);
-
- }
- }
-
- if(enable || onlySelected)
- drawNumbers(shapesOnPage, groupID);
-
- if(formerGroups.size())
- for(std::set<_bstr_t>::iterator it = formerGroups.begin(); it != formerGroups.end(); it++)
- drawNumbers(shapesOnPage,*it);
-}
-
void CDocumentMonitor::drawNumbers(Visio::IVShapesPtr shapesOnPage, _bstr_t groupID)
{
- std::vector<Visio::IVShapePtr> messageShapes;
- Visio::IVShapePtr page = shapesOnPage->Application->ActivePage->PageSheet;
+ std::vector<Visio::IVShapePtr> messageShapes;
+ Visio::IVShapePtr page = shapesOnPage->Application->ActivePage->PageSheet;
- //Default values
- int index = 1;
- int enumerationType = 0;
- std::wstring addition = _T("");
- CEnumerateUtils::loadGroupSettings(shapesOnPage->Application,groupID,index,enumerationType,addition);
+ //Default values
+ int index = 1;
+ int enumerationType = 0;
+ std::wstring addition = _T("");
+ CEnumerateUtils::loadGroupSettings(shapesOnPage->Application,groupID,index,enumerationType,addition);
- //for all message shapes check whether they are checked as numbered (Data1 == 1)
- for(int i=1; i<=shapesOnPage->Count; i++)
- {
- Visio::IVShapePtr shape = shapesOnPage->Item[i];
- //It must be message shape, marked as numbered and in the right group
- if(isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0 && _tcsicmp(shape->Data3,groupID) == 0)
- messageShapes.push_back(shape); //Then put into vector
- }
+ //for all message shapes check whether they are checked as numbered (Data1 == 1)
+ for(int i=1; i<=shapesOnPage->Count; i++)
+ {
+ Visio::IVShapePtr shape = shapesOnPage->Item[i];
+ //It must be message shape, marked as numbered and in the right group
+ if(isMessageShape(shape) && _tcsicmp(shape->Data1,_T("1")) == 0 && _tcsicmp(shape->Data3,groupID) == 0)
+ messageShapes.push_back(shape); //Then put into vector
+ }
- //heap sort (std::sort failed on bigger numbers, deletes pointers..)
- std::make_heap(messageShapes.begin(), messageShapes.end(),&CEnumerateUtils::messageCompare);
- std::sort_heap(messageShapes.begin(),messageShapes.end(),&CEnumerateUtils::messageCompare);
+ //heap sort (std::sort failed on bigger numbers, deletes pointers..)
+ std::make_heap(messageShapes.begin(), messageShapes.end(),&CEnumerateUtils::messageCompare);
+ std::sort_heap(messageShapes.begin(),messageShapes.end(),&CEnumerateUtils::messageCompare);
- std::wstring textIndex;
- for(std::vector<Visio::IVShapePtr>::iterator it = messageShapes.begin(); it != messageShapes.end(); ++it)
- {
- switch(enumerationType)
- {
- case 0: textIndex = stringize() << index; break; //numbers
- case 1: textIndex = (index <= 4000) ? CEnumerateUtils::int2Romans(index) : _T("?"); break; //romans
- case 2: textIndex = CEnumerateUtils::int2Char(index,false); break; //small letters
- case 3: textIndex = CEnumerateUtils::int2Char(index,true); break; //capital letters
- }
- (*it)->Text = stringize() << textIndex << addition << (*it)->Data2;
- index++;
- }
+ std::wstring textIndex;
+ for(std::vector<Visio::IVShapePtr>::iterator it = messageShapes.begin(); it != messageShapes.end(); ++it)
+ {
+ switch(enumerationType)
+ {
+ case 0: textIndex = stringize() << index; break; //numbers
+ case 1: textIndex = (index <= 4000) ? CEnumerateUtils::int2Romans(index) : _T("?"); break; //romans
+ case 2: textIndex = CEnumerateUtils::int2Char(index,false); break; //small letters
+ case 3: textIndex = CEnumerateUtils::int2Char(index,true); break; //capital letters
+ }
+ (*it)->Text = stringize() << textIndex << addition << (*it)->Data2;
+ index++;
+ }
}
bool CDocumentMonitor::isMessageShape(Visio::IVShapePtr shape)
{
- switch(get_shape_type(shape))
- {
- case ST_BMSC_MESSAGE:
- case ST_BMSC_MESSAGE_FOUND:
- case ST_BMSC_MESSAGE_LOST:
- return true;
- }
- return false;
+ switch(get_shape_type(shape))
+ {
+ case ST_BMSC_MESSAGE:
+ case ST_BMSC_MESSAGE_FOUND:
+ case ST_BMSC_MESSAGE_LOST:
+ return true;
+ }
+ return false;
}
VAORC CDocumentMonitor::OnMenuGlobalSettings(Visio::IVApplicationPtr vsoApp)
{
- CGlobalSettingsDlg sheet(_T("Settings"));
- sheet.DoModal();
+ CGlobalSettingsDlg sheet(_T("Settings"));
+ sheet.DoModal();
//Message Numbering processing
const TCHAR* regFolder = _T("Software\\Sequence Chart Studio\\MessageNumbering");
@@ -1728,8 +1680,8 @@
CEnumerateUtils::eraseAutoEnumGroup(vsoApp);
SetRegistry<bool>(HKEY_CURRENT_USER, regFolder, _T("AutoEnumStyleIndexChanged"), false);
}
-
- return VAORC_SUCCESS;
+
+ return VAORC_SUCCESS;
}
void CDocumentMonitor::ShowReportView()
Modified: trunk/src/view/visio/addon/document.h
===================================================================
--- trunk/src/view/visio/addon/document.h 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/src/view/visio/addon/document.h 2010-07-06 19:26:23 UTC (rev 827)
@@ -326,8 +326,6 @@
private:
void autoEnumerate(Visio::IVShapePtr msgShape);
void enumerate(Visio::IVApplicationPtr vsoApp, _bstr_t groupID, bool enable, bool onlySelected);
- bool temporaryDisableEnumeration(Visio::IVApplicationPtr vsoApp);
- void restoreDisabledEnumeration(Visio::IVApplicationPtr vsoApp, bool UndoEnumNewMsg);
Visio::IVMenuItemsPtr visMenuItems;
Visio::IVMenuItemPtr itemMessageEnumerating;
Modified: trunk/src/view/visio/addon/document_check.cpp
===================================================================
--- trunk/src/view/visio/addon/document_check.cpp 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/src/view/visio/addon/document_check.cpp 2010-07-06 19:26:23 UTC (rev 827)
@@ -96,7 +96,6 @@
VAORC CDocumentMonitor::OnMenuVerify(Visio::IVApplicationPtr vsoApp)
{
- bool enumMsg = temporaryDisableEnumeration(vsoApp);
// clear the verification report
m_reportView->Reset();
@@ -145,8 +144,6 @@
stringize() << "No verification algorithms applicable. No properties verified.");
}
- restoreDisabledEnumeration(vsoApp,enumMsg);
-
return VAORC_SUCCESS;
}
Modified: trunk/src/view/visio/addon/enumerateUtils.cpp
===================================================================
--- trunk/src/view/visio/addon/enumerateUtils.cpp 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/src/view/visio/addon/enumerateUtils.cpp 2010-07-06 19:26:23 UTC (rev 827)
@@ -320,6 +320,23 @@
return VAORC_SUCCESS;
}
+void CEnumerateUtils::eraseEnumInfo(Visio::IVApplicationPtr vsoApp)
+{
+ Visio::IVShapePtr page = vsoApp->ActivePage->PageSheet;
+
+ for(int i=1; i<=getGroupCount(vsoApp); i++)
+ {
+ _bstr_t userGroupID = stringize() << _T("User.Enum") << i;
+ if(page->GetCellExists(userGroupID,0) != -1)
+ continue;
+ page->DeleteRow(visSectionUser,page->GetCells(userGroupID)->Row);
+ }
+ //erase AutoNumbering information if exists
+ eraseAutoEnumGroup(page->Application);
+ //restore IDs
+ setGroupCount(page->Application,0);
+}
+
void CEnumerateUtils::fillComboWithTypes(WTL::CComboBox& combo)
{
combo.InsertString(0,_T("1, 2, 3,..."));
Modified: trunk/src/view/visio/addon/enumerateUtils.h
===================================================================
--- trunk/src/view/visio/addon/enumerateUtils.h 2010-07-05 22:56:28 UTC (rev 826)
+++ trunk/src/view/visio/addon/enumerateUtils.h 2010-07-06 19:26:23 UTC (rev 827)
@@ -24,18 +24,18 @@
class CEnumerateUtils
{
public:
- /**
+ /*
* Add comment
*/
static std::wstring int2Romans(int index);
- /**
+ /*
* Convers integer to char: a-z,aa-az,ba-bz,...,aaa-aaz,..etc.
* @param index integer to convert to char
- * @param capitals if true, creates capitals Chars as: A-Z, AA-AZ
+ * @param capitals if true, creates capitals Chars as: A-Z, AA-AZ
* @return string representing index
*/
static std::wstring int2Char(int index, bool capitals);
- /**
+ /*
* Compare function for drawNumbers, decides order of message shape according to their position
* @param p1 pointer to first message shape to compare
* @param p2 pointer to second message shape to compare
@@ -60,6 +60,8 @@
static int getAutoEnumGroup(Visio::IVApplicationPtr vsoApp);
static void eraseAutoEnumGroup(Visio::IVApplicationPtr vsoApp);
+
+ static void eraseEnumInfo(Visio::IVApplicationPtr vsoApp);
};
// $Id$
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|