|
From: <got...@us...> - 2008-12-20 21:09:23
|
Revision: 135
http://scstudio.svn.sourceforge.net/scstudio/?rev=135&view=rev
Author: gotthardp
Date: 2008-12-20 21:09:16 +0000 (Sat, 20 Dec 2008)
Log Message:
-----------
Fixed the connection problem; dynamic connections are no longer repositioned when an instance is resized.
Modified Paths:
--------------
trunk/src/view/visio/addon/addon.cpp
trunk/src/view/visio/addon/addon.h
Modified: trunk/src/view/visio/addon/addon.cpp
===================================================================
--- trunk/src/view/visio/addon/addon.cpp 2008-12-17 11:21:46 UTC (rev 134)
+++ trunk/src/view/visio/addon/addon.cpp 2008-12-20 21:09:16 UTC (rev 135)
@@ -322,25 +322,9 @@
break;
case visEvtConnectionsAdded:
- {
TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsAdded");
-/*
- Visio::IVConnectsPtr vsoConnects = pSubjectObj;
- int k = vsoConnects->Count;
- for(int i = 1; i <= vsoConnects->Count; i++)
- {
- Visio::IVConnectPtr vsoConnect = vsoConnects->Item[i];
- if(vsoConnect == NULL || vsoConnect->ToCell->Error != 0)
- continue;
-
- _bstr_t text = vsoConnect->ToCell->LocalName;
- _bstr_t form = vsoConnect->ToCell->Formula;
- double val = vsoConnect->ToCell->ResultIU;
- vsoConnect->ToCell->Formula = text;
- }
-*/
+ HandleConnectionsAdded(pSubjectObj);
break;
- }
case visEvtConnectionsDeleted:
TRACE("CStudioAddon::HandleVisioEvent() visEvtConnectionsDeleted");
@@ -360,6 +344,30 @@
}
}
+void CStudioAddon::HandleConnectionsAdded(Visio::IVConnectsPtr vsoConnects)
+{
+ // dynamic connectors are positioned on Width*X
+ // connectors must not move when an instance is begin enlarged
+
+ // walk through added connectors and modify the positioning formula
+ for(int i = 1; i <= vsoConnects->Count; i++)
+ {
+ Visio::IVConnectPtr vsoConnect = vsoConnects->Item[i]; // added connector
+ if(vsoConnect == NULL)
+ continue;
+
+ // due to a bug in Visio 2003 the vsoConnect->ToCell->Formula is invalid
+ // workaround: we process all connectors on a given instance;
+ // the connector just being added is clearly one of them
+ Visio::IVConnectsPtr fromConnects = vsoConnect->ToCell->Shape->FromConnects;
+ for(int j = 1; j <= fromConnects->Count; j++)
+ {
+ Visio::IVConnectPtr fromConnect = fromConnects->Item[j];
+ fromConnect->ToCell->Formula = fromConnect->ToCell->ResultStr[visNoCast];
+ }
+ }
+}
+
void CStudioAddon::RegisterPersistentEvents(Visio::IVDocumentPtr vsoDocument)
{
Visio::IVEventPtr vsoDocumentCreateEvent = NULL;
Modified: trunk/src/view/visio/addon/addon.h
===================================================================
--- trunk/src/view/visio/addon/addon.h 2008-12-17 11:21:46 UTC (rev 134)
+++ trunk/src/view/visio/addon/addon.h 2008-12-20 21:09:16 UTC (rev 135)
@@ -46,6 +46,8 @@
VARIANT vMoreInfo, // [in] other info
VARIANT *pvResult); // [retval][out] return a value to Visio for query events
+ void HandleConnectionsAdded(Visio::IVConnectsPtr vsoConnects);
+
void RegisterPersistentEvents(Visio::IVDocumentPtr vsoDocument);
CDocumentMonitor *GetDocumentMonitor(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
void StopDocumentMonitor(Visio::IVApplicationPtr vsoApp, Visio::IVDocumentPtr vsoDocument);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|